Full Code of Studio3T/robomongo for AI

master 4ad11c6686fb cached
1999 files
32.9 MB
5.8M tokens
10306 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (23,104K chars total). Download the full file to get everything.
Repository: Studio3T/robomongo
Branch: master
Commit: 4ad11c6686fb
Files: 1999
Total size: 32.9 MB

Directory structure:
gitextract_2e5kkx9s/

├── .gitattributes
├── .gitignore
├── .travis.yml
├── CHANGELOG
├── CMakeLists.txt
├── COPYRIGHT
├── DESCRIPTION
├── LICENSE
├── README.md
├── bin/
│   ├── README.md
│   ├── build
│   ├── build-and-run-tests
│   ├── build-and-run-tests.bat
│   ├── build.bat
│   ├── clang-checks.txt
│   ├── clang-tidy.xml
│   ├── clean
│   ├── clean.bat
│   ├── common/
│   │   ├── setup
│   │   └── setup.bat
│   ├── configure
│   ├── configure.bat
│   ├── enable-visual-studio-clang-tidy.py
│   ├── install
│   ├── install-debug-dlls.bat
│   ├── install.bat
│   ├── pack
│   ├── pack.bat
│   ├── rebuild.bat
│   ├── run
│   ├── run-clang-tidy
│   ├── run-clang-tidy.py
│   ├── run-cppcheck.bat
│   ├── run-scan-build
│   ├── run-tests
│   ├── run-tests.bat
│   ├── run-vs-code-analysis.bat
│   ├── set-mongo-warning-level-3.py
│   └── tag
├── cmake/
│   ├── FindMongoDB.cmake
│   ├── FindOpenSSL.cmake
│   ├── FindThreading.cmake
│   ├── RobomongoCMakeDefaults.cmake
│   ├── RobomongoCommon.cmake
│   ├── RobomongoConfigurationSummary.cmake
│   ├── RobomongoDefaults.cmake
│   ├── RobomongoInstall.cmake
│   ├── RobomongoInstallQt.cmake
│   ├── RobomongoPackage.cmake
│   ├── RobomongoPrintUtils.cmake
│   ├── RobomongoTargetArch.cmake
│   ├── RobomongoTrashSymbols.cmake
│   ├── mongodb/
│   │   ├── README.md
│   │   ├── linux-debug.objects
│   │   ├── linux-release.objects
│   │   ├── macosx-debug.objects
│   │   ├── macosx-release.objects
│   │   ├── windows-debug.objects
│   │   └── windows-release.objects
│   └── readme.md
├── docs/
│   ├── BuildRobo3TOnMacAndLinux.md
│   ├── BuildRobo3TOnWindows.md
│   ├── BuildRobo3TShell.md
│   ├── BuildingMongoDB.md
│   ├── BuildingRobomongo.md
│   ├── BuildingRobomongoOnWindows.md
│   └── Debug.md
├── install/
│   ├── linux/
│   │   └── robomongo.sh
│   ├── macosx/
│   │   ├── DMG_DS_Store
│   │   ├── Info.plist.in
│   │   ├── README.md
│   │   ├── qt.conf
│   │   └── robomongo.icns
│   ├── qt.conf.in
│   └── windows/
│       ├── README.md
│       └── winres.rc.in
├── shortcuts.txt
├── src/
│   ├── robomongo/
│   │   ├── .clang-format
│   │   ├── CMakeLists.txt
│   │   ├── app/
│   │   │   ├── main.cpp
│   │   │   ├── main_mongo.cpp
│   │   │   └── main_test.cpp
│   │   ├── core/
│   │   │   ├── AppRegistry.cpp
│   │   │   ├── AppRegistry.h
│   │   │   ├── Core.h
│   │   │   ├── Enums.cpp
│   │   │   ├── Enums.h
│   │   │   ├── Event.cpp
│   │   │   ├── Event.h
│   │   │   ├── EventBus.cpp
│   │   │   ├── EventBus.h
│   │   │   ├── EventBusDispatcher.cpp
│   │   │   ├── EventBusDispatcher.h
│   │   │   ├── EventBusSubscriber.cpp
│   │   │   ├── EventBusSubscriber.h
│   │   │   ├── EventError.cpp
│   │   │   ├── EventError.h
│   │   │   ├── EventWrapper.cpp
│   │   │   ├── EventWrapper.h
│   │   │   ├── HexUtils.cpp
│   │   │   ├── HexUtils.h
│   │   │   ├── HexUtils_test.cpp
│   │   │   ├── KeyboardManager.cpp
│   │   │   ├── KeyboardManager.h
│   │   │   ├── domain/
│   │   │   │   ├── App.cpp
│   │   │   │   ├── App.h
│   │   │   │   ├── CursorPosition.cpp
│   │   │   │   ├── CursorPosition.h
│   │   │   │   ├── MongoAggregateInfo.h
│   │   │   │   ├── MongoCollection.cpp
│   │   │   │   ├── MongoCollection.h
│   │   │   │   ├── MongoCollectionInfo.cpp
│   │   │   │   ├── MongoCollectionInfo.h
│   │   │   │   ├── MongoDatabase.cpp
│   │   │   │   ├── MongoDatabase.h
│   │   │   │   ├── MongoDocument.cpp
│   │   │   │   ├── MongoDocument.h
│   │   │   │   ├── MongoFunction.cpp
│   │   │   │   ├── MongoFunction.h
│   │   │   │   ├── MongoNamespace.cpp
│   │   │   │   ├── MongoNamespace.h
│   │   │   │   ├── MongoQueryInfo.cpp
│   │   │   │   ├── MongoQueryInfo.h
│   │   │   │   ├── MongoServer.cpp
│   │   │   │   ├── MongoServer.h
│   │   │   │   ├── MongoShell.cpp
│   │   │   │   ├── MongoShell.h
│   │   │   │   ├── MongoShellResult.h
│   │   │   │   ├── MongoUser.cpp
│   │   │   │   ├── MongoUser.h
│   │   │   │   ├── MongoUtils.cpp
│   │   │   │   ├── MongoUtils.h
│   │   │   │   ├── Notifier.cpp
│   │   │   │   ├── Notifier.h
│   │   │   │   ├── ScriptInfo.cpp
│   │   │   │   └── ScriptInfo.h
│   │   │   ├── engine/
│   │   │   │   ├── ScriptEngine.cpp
│   │   │   │   └── ScriptEngine.h
│   │   │   ├── events/
│   │   │   │   ├── MongoEvents.cpp
│   │   │   │   ├── MongoEvents.h
│   │   │   │   ├── MongoEventsInfo.cpp
│   │   │   │   └── MongoEventsInfo.h
│   │   │   ├── mongodb/
│   │   │   │   ├── MongoClient.cpp
│   │   │   │   ├── MongoClient.h
│   │   │   │   ├── MongoWorker.cpp
│   │   │   │   ├── MongoWorker.h
│   │   │   │   ├── ReplicaSet.cpp
│   │   │   │   ├── ReplicaSet.h
│   │   │   │   ├── SshTunnelWorker.cpp
│   │   │   │   └── SshTunnelWorker.h
│   │   │   ├── settings/
│   │   │   │   ├── ConnectionSettings.cpp
│   │   │   │   ├── ConnectionSettings.h
│   │   │   │   ├── CredentialSettings.cpp
│   │   │   │   ├── CredentialSettings.h
│   │   │   │   ├── ReplicaSetSettings.cpp
│   │   │   │   ├── ReplicaSetSettings.h
│   │   │   │   ├── SettingsManager.cpp
│   │   │   │   ├── SettingsManager.h
│   │   │   │   ├── SshSettings.cpp
│   │   │   │   ├── SshSettings.h
│   │   │   │   ├── SslSettings.cpp
│   │   │   │   └── SslSettings.h
│   │   │   └── utils/
│   │   │       ├── BsonUtils.cpp
│   │   │       ├── BsonUtils.h
│   │   │       ├── Logger.cpp
│   │   │       ├── Logger.h
│   │   │       ├── QtUtils.cpp
│   │   │       ├── QtUtils.h
│   │   │       ├── SingletonPattern.hpp
│   │   │       ├── StdUtils.cpp
│   │   │       └── StdUtils.h
│   │   ├── gui/
│   │   │   ├── AppStyle.cpp
│   │   │   ├── AppStyle.h
│   │   │   ├── GuiRegistry.cpp
│   │   │   ├── GuiRegistry.h
│   │   │   ├── MainWindow.cpp
│   │   │   ├── MainWindow.h
│   │   │   ├── dialogs/
│   │   │   │   ├── AboutDialog.cpp
│   │   │   │   ├── AboutDialog.h
│   │   │   │   ├── ChangeShellTimeoutDialog.cpp
│   │   │   │   ├── ChangeShellTimeoutDialog.h
│   │   │   │   ├── ConnectionAdvancedTab.cpp
│   │   │   │   ├── ConnectionAdvancedTab.h
│   │   │   │   ├── ConnectionAuthTab.cpp
│   │   │   │   ├── ConnectionAuthTab.h
│   │   │   │   ├── ConnectionBasicTab.cpp
│   │   │   │   ├── ConnectionBasicTab.h
│   │   │   │   ├── ConnectionDiagnosticDialog.cpp
│   │   │   │   ├── ConnectionDiagnosticDialog.h
│   │   │   │   ├── ConnectionDialog.cpp
│   │   │   │   ├── ConnectionDialog.h
│   │   │   │   ├── ConnectionsDialog.cpp
│   │   │   │   ├── ConnectionsDialog.h
│   │   │   │   ├── CopyCollectionDialog.cpp
│   │   │   │   ├── CopyCollectionDialog.h
│   │   │   │   ├── CreateCollectionDialog.cpp
│   │   │   │   ├── CreateCollectionDialog.h
│   │   │   │   ├── CreateDatabaseDialog.cpp
│   │   │   │   ├── CreateDatabaseDialog.h
│   │   │   │   ├── CreateUserDialog.cpp
│   │   │   │   ├── CreateUserDialog.h
│   │   │   │   ├── DocumentTextEditor.cpp
│   │   │   │   ├── DocumentTextEditor.h
│   │   │   │   ├── EulaDialog.cpp
│   │   │   │   ├── EulaDialog.h
│   │   │   │   ├── ExportDialog.cpp
│   │   │   │   ├── ExportDialog.h
│   │   │   │   ├── FunctionTextEditor.cpp
│   │   │   │   ├── FunctionTextEditor.h
│   │   │   │   ├── PreferencesDialog.cpp
│   │   │   │   ├── PreferencesDialog.h
│   │   │   │   ├── SSHTunnelTab.cpp
│   │   │   │   ├── SSHTunnelTab.h
│   │   │   │   ├── SSLTab.cpp
│   │   │   │   └── SSLTab.h
│   │   │   ├── editors/
│   │   │   │   ├── FindFrame.cpp
│   │   │   │   ├── FindFrame.h
│   │   │   │   ├── JSLexer.cpp
│   │   │   │   ├── JSLexer.h
│   │   │   │   ├── PlainJavaScriptEditor.cpp
│   │   │   │   └── PlainJavaScriptEditor.h
│   │   │   ├── resources/
│   │   │   │   ├── gui.qrc
│   │   │   │   ├── icons/
│   │   │   │   │   ├── new_app_icon/
│   │   │   │   │   │   └── Robomongo App Icon.idraw
│   │   │   │   │   └── psd/
│   │   │   │   │       └── BsonNull_16x16.psd
│   │   │   │   └── scripts/
│   │   │   │       ├── esprima.js
│   │   │   │       └── uuidhelpers.js
│   │   │   ├── utils/
│   │   │   │   ├── ComboBoxUtils.cpp
│   │   │   │   ├── ComboBoxUtils.h
│   │   │   │   ├── DialogUtils.cpp
│   │   │   │   ├── DialogUtils.h
│   │   │   │   └── GuiConstants.h
│   │   │   └── widgets/
│   │   │       ├── LogWidget.cpp
│   │   │       ├── LogWidget.h
│   │   │       ├── explorer/
│   │   │       │   ├── AddEditIndexDialog.cpp
│   │   │       │   ├── AddEditIndexDialog.h
│   │   │       │   ├── ExplorerCollectionIndexItem.cpp
│   │   │       │   ├── ExplorerCollectionIndexItem.h
│   │   │       │   ├── ExplorerCollectionIndexesDir.cpp
│   │   │       │   ├── ExplorerCollectionIndexesDir.h
│   │   │       │   ├── ExplorerCollectionTreeItem.cpp
│   │   │       │   ├── ExplorerCollectionTreeItem.h
│   │   │       │   ├── ExplorerDatabaseCategoryTreeItem.cpp
│   │   │       │   ├── ExplorerDatabaseCategoryTreeItem.h
│   │   │       │   ├── ExplorerDatabaseTreeItem.cpp
│   │   │       │   ├── ExplorerDatabaseTreeItem.h
│   │   │       │   ├── ExplorerFunctionTreeItem.cpp
│   │   │       │   ├── ExplorerFunctionTreeItem.h
│   │   │       │   ├── ExplorerReplicaSetFolderItem.cpp
│   │   │       │   ├── ExplorerReplicaSetFolderItem.h
│   │   │       │   ├── ExplorerReplicaSetTreeItem.cpp
│   │   │       │   ├── ExplorerReplicaSetTreeItem.h
│   │   │       │   ├── ExplorerServerTreeItem.cpp
│   │   │       │   ├── ExplorerServerTreeItem.h
│   │   │       │   ├── ExplorerTreeItem.cpp
│   │   │       │   ├── ExplorerTreeItem.h
│   │   │       │   ├── ExplorerTreeWidget.cpp
│   │   │       │   ├── ExplorerTreeWidget.h
│   │   │       │   ├── ExplorerUserTreeItem.cpp
│   │   │       │   ├── ExplorerUserTreeItem.h
│   │   │       │   ├── ExplorerWidget.cpp
│   │   │       │   └── ExplorerWidget.h
│   │   │       └── workarea/
│   │   │           ├── BsonTableModel.cpp
│   │   │           ├── BsonTableModel.h
│   │   │           ├── BsonTableView.cpp
│   │   │           ├── BsonTableView.h
│   │   │           ├── BsonTreeItem.cpp
│   │   │           ├── BsonTreeItem.h
│   │   │           ├── BsonTreeModel.cpp
│   │   │           ├── BsonTreeModel.h
│   │   │           ├── BsonTreeView.cpp
│   │   │           ├── BsonTreeView.h
│   │   │           ├── CollectionStatsTreeItem.cpp
│   │   │           ├── CollectionStatsTreeItem.h
│   │   │           ├── CollectionStatsTreeWidget.cpp
│   │   │           ├── CollectionStatsTreeWidget.h
│   │   │           ├── IndicatorLabel.cpp
│   │   │           ├── IndicatorLabel.h
│   │   │           ├── JsonPrepareThread.cpp
│   │   │           ├── JsonPrepareThread.h
│   │   │           ├── OutputItemContentWidget.cpp
│   │   │           ├── OutputItemContentWidget.h
│   │   │           ├── OutputItemHeaderWidget.cpp
│   │   │           ├── OutputItemHeaderWidget.h
│   │   │           ├── OutputWidget.cpp
│   │   │           ├── OutputWidget.h
│   │   │           ├── PagingWidget.cpp
│   │   │           ├── PagingWidget.h
│   │   │           ├── ProgressBarPopup.cpp
│   │   │           ├── ProgressBarPopup.h
│   │   │           ├── QueryWidget.cpp
│   │   │           ├── QueryWidget.h
│   │   │           ├── ScriptWidget.cpp
│   │   │           ├── ScriptWidget.h
│   │   │           ├── WelcomeTab.cpp
│   │   │           ├── WelcomeTab.h
│   │   │           ├── WorkAreaTabBar.cpp
│   │   │           ├── WorkAreaTabBar.h
│   │   │           ├── WorkAreaTabWidget.cpp
│   │   │           └── WorkAreaTabWidget.h
│   │   ├── resources/
│   │   │   ├── gnu_gpl3_license.html
│   │   │   └── robo.qrc
│   │   ├── shell/
│   │   │   ├── bson/
│   │   │   │   ├── json.cpp
│   │   │   │   └── json.h
│   │   │   ├── db/
│   │   │   │   ├── ptimeutil.cpp
│   │   │   │   └── ptimeutil.h
│   │   │   └── shell/
│   │   │       └── dbshell.cpp
│   │   ├── ssh/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── README.md
│   │   │   ├── array.c
│   │   │   ├── libssh2_config.h.in
│   │   │   ├── log.c
│   │   │   ├── private.h
│   │   │   ├── server.c
│   │   │   ├── ssh.c
│   │   │   ├── ssh.h
│   │   │   ├── temp/
│   │   │   │   ├── direct_tcpip.c
│   │   │   │   ├── internal.h
│   │   │   │   ├── temp_ssh.c
│   │   │   │   ├── temp_ssh.h
│   │   │   │   └── temp_ssh_log.c
│   │   │   ├── test.c
│   │   │   ├── unix.h
│   │   │   ├── valgrind/
│   │   │   │   └── macosx-clang.supp
│   │   │   ├── win.c
│   │   │   └── win.h
│   │   └── utils/
│   │       ├── RoboCrypt.cpp
│   │       ├── RoboCrypt.h
│   │       ├── RoboCrypt_test.cpp
│   │       ├── SimpleCrypt.cpp
│   │       ├── SimpleCrypt.h
│   │       ├── StringOperations.cpp
│   │       ├── StringOperations.h
│   │       ├── StringOperations_test.cpp
│   │       ├── common.cpp
│   │       ├── common.h
│   │       └── qzip/
│   │           ├── qconfig_p.h
│   │           ├── qglobal_p.h
│   │           ├── qtcore-config_p.h
│   │           ├── qtgui-config_p.h
│   │           ├── qtguiglobal_p.h
│   │           └── qzipreader_p.h
│   ├── robomongo-unit-tests/
│   │   ├── CMakeLists.txt
│   │   └── README.md
│   └── third-party/
│       ├── README.md
│       ├── esprima-2.7.3/
│       │   └── README.md
│       ├── googletest-1.8.1/
│       │   ├── .gitignore
│       │   ├── .travis.yml
│       │   ├── BUILD.bazel
│       │   ├── CMakeLists.txt
│       │   ├── CONTRIBUTING.md
│       │   ├── LICENSE
│       │   ├── Makefile.am
│       │   ├── README.md
│       │   ├── WORKSPACE
│       │   ├── appveyor.yml
│       │   ├── ci/
│       │   │   ├── build-linux-autotools.sh
│       │   │   ├── build-linux-bazel.sh
│       │   │   ├── env-linux.sh
│       │   │   ├── env-osx.sh
│       │   │   ├── get-nprocessors.sh
│       │   │   ├── install-linux.sh
│       │   │   ├── install-osx.sh
│       │   │   ├── log-config.sh
│       │   │   └── travis.sh
│       │   ├── configure.ac
│       │   ├── googlemock/
│       │   │   ├── CHANGES
│       │   │   ├── CMakeLists.txt
│       │   │   ├── CONTRIBUTORS
│       │   │   ├── LICENSE
│       │   │   ├── Makefile.am
│       │   │   ├── README.md
│       │   │   ├── cmake/
│       │   │   │   ├── gmock.pc.in
│       │   │   │   └── gmock_main.pc.in
│       │   │   ├── configure.ac
│       │   │   ├── docs/
│       │   │   │   ├── CheatSheet.md
│       │   │   │   ├── CookBook.md
│       │   │   │   ├── DesignDoc.md
│       │   │   │   ├── Documentation.md
│       │   │   │   ├── ForDummies.md
│       │   │   │   ├── FrequentlyAskedQuestions.md
│       │   │   │   └── KnownIssues.md
│       │   │   ├── include/
│       │   │   │   └── gmock/
│       │   │   │       ├── gmock-actions.h
│       │   │   │       ├── gmock-cardinalities.h
│       │   │   │       ├── gmock-generated-actions.h
│       │   │   │       ├── gmock-generated-actions.h.pump
│       │   │   │       ├── gmock-generated-function-mockers.h
│       │   │   │       ├── gmock-generated-function-mockers.h.pump
│       │   │   │       ├── gmock-generated-matchers.h
│       │   │   │       ├── gmock-generated-matchers.h.pump
│       │   │   │       ├── gmock-generated-nice-strict.h
│       │   │   │       ├── gmock-generated-nice-strict.h.pump
│       │   │   │       ├── gmock-matchers.h
│       │   │   │       ├── gmock-more-actions.h
│       │   │   │       ├── gmock-more-matchers.h
│       │   │   │       ├── gmock-spec-builders.h
│       │   │   │       ├── gmock.h
│       │   │   │       └── internal/
│       │   │   │           ├── custom/
│       │   │   │           │   ├── README.md
│       │   │   │           │   ├── gmock-generated-actions.h
│       │   │   │           │   ├── gmock-generated-actions.h.pump
│       │   │   │           │   ├── gmock-matchers.h
│       │   │   │           │   └── gmock-port.h
│       │   │   │           ├── gmock-generated-internal-utils.h
│       │   │   │           ├── gmock-generated-internal-utils.h.pump
│       │   │   │           ├── gmock-internal-utils.h
│       │   │   │           └── gmock-port.h
│       │   │   ├── msvc/
│       │   │   │   ├── 2005/
│       │   │   │   │   ├── gmock.sln
│       │   │   │   │   ├── gmock.vcproj
│       │   │   │   │   ├── gmock_config.vsprops
│       │   │   │   │   ├── gmock_main.vcproj
│       │   │   │   │   └── gmock_test.vcproj
│       │   │   │   ├── 2010/
│       │   │   │   │   ├── gmock.sln
│       │   │   │   │   ├── gmock.vcxproj
│       │   │   │   │   ├── gmock_config.props
│       │   │   │   │   ├── gmock_main.vcxproj
│       │   │   │   │   └── gmock_test.vcxproj
│       │   │   │   └── 2015/
│       │   │   │       ├── gmock.sln
│       │   │   │       ├── gmock.vcxproj
│       │   │   │       ├── gmock_config.props
│       │   │   │       ├── gmock_main.vcxproj
│       │   │   │       └── gmock_test.vcxproj
│       │   │   ├── scripts/
│       │   │   │   ├── fuse_gmock_files.py
│       │   │   │   ├── generator/
│       │   │   │   │   ├── LICENSE
│       │   │   │   │   ├── README
│       │   │   │   │   ├── README.cppclean
│       │   │   │   │   ├── cpp/
│       │   │   │   │   │   ├── __init__.py
│       │   │   │   │   │   ├── ast.py
│       │   │   │   │   │   ├── gmock_class.py
│       │   │   │   │   │   ├── gmock_class_test.py
│       │   │   │   │   │   ├── keywords.py
│       │   │   │   │   │   ├── tokenize.py
│       │   │   │   │   │   └── utils.py
│       │   │   │   │   └── gmock_gen.py
│       │   │   │   ├── gmock-config.in
│       │   │   │   ├── gmock_doctor.py
│       │   │   │   ├── upload.py
│       │   │   │   └── upload_gmock.py
│       │   │   ├── src/
│       │   │   │   ├── gmock-all.cc
│       │   │   │   ├── gmock-cardinalities.cc
│       │   │   │   ├── gmock-internal-utils.cc
│       │   │   │   ├── gmock-matchers.cc
│       │   │   │   ├── gmock-spec-builders.cc
│       │   │   │   ├── gmock.cc
│       │   │   │   └── gmock_main.cc
│       │   │   └── test/
│       │   │       ├── BUILD.bazel
│       │   │       ├── gmock-actions_test.cc
│       │   │       ├── gmock-cardinalities_test.cc
│       │   │       ├── gmock-generated-actions_test.cc
│       │   │       ├── gmock-generated-function-mockers_test.cc
│       │   │       ├── gmock-generated-internal-utils_test.cc
│       │   │       ├── gmock-generated-matchers_test.cc
│       │   │       ├── gmock-internal-utils_test.cc
│       │   │       ├── gmock-matchers_test.cc
│       │   │       ├── gmock-more-actions_test.cc
│       │   │       ├── gmock-nice-strict_test.cc
│       │   │       ├── gmock-port_test.cc
│       │   │       ├── gmock-spec-builders_test.cc
│       │   │       ├── gmock_all_test.cc
│       │   │       ├── gmock_ex_test.cc
│       │   │       ├── gmock_leak_test.py
│       │   │       ├── gmock_leak_test_.cc
│       │   │       ├── gmock_link2_test.cc
│       │   │       ├── gmock_link_test.cc
│       │   │       ├── gmock_link_test.h
│       │   │       ├── gmock_output_test.py
│       │   │       ├── gmock_output_test_.cc
│       │   │       ├── gmock_output_test_golden.txt
│       │   │       ├── gmock_stress_test.cc
│       │   │       ├── gmock_test.cc
│       │   │       └── gmock_test_utils.py
│       │   └── googletest/
│       │       ├── CHANGES
│       │       ├── CMakeLists.txt
│       │       ├── CONTRIBUTORS
│       │       ├── LICENSE
│       │       ├── Makefile.am
│       │       ├── README.md
│       │       ├── cmake/
│       │       │   ├── Config.cmake.in
│       │       │   ├── gtest.pc.in
│       │       │   ├── gtest_main.pc.in
│       │       │   └── internal_utils.cmake
│       │       ├── codegear/
│       │       │   ├── gtest.cbproj
│       │       │   ├── gtest.groupproj
│       │       │   ├── gtest_all.cc
│       │       │   ├── gtest_link.cc
│       │       │   ├── gtest_main.cbproj
│       │       │   └── gtest_unittest.cbproj
│       │       ├── configure.ac
│       │       ├── docs/
│       │       │   ├── Pkgconfig.md
│       │       │   ├── PumpManual.md
│       │       │   ├── XcodeGuide.md
│       │       │   ├── advanced.md
│       │       │   ├── faq.md
│       │       │   ├── primer.md
│       │       │   └── samples.md
│       │       ├── include/
│       │       │   └── gtest/
│       │       │       ├── gtest-death-test.h
│       │       │       ├── gtest-message.h
│       │       │       ├── gtest-param-test.h
│       │       │       ├── gtest-param-test.h.pump
│       │       │       ├── gtest-printers.h
│       │       │       ├── gtest-spi.h
│       │       │       ├── gtest-test-part.h
│       │       │       ├── gtest-typed-test.h
│       │       │       ├── gtest.h
│       │       │       ├── gtest_pred_impl.h
│       │       │       ├── gtest_prod.h
│       │       │       └── internal/
│       │       │           ├── custom/
│       │       │           │   ├── README.md
│       │       │           │   ├── gtest-port.h
│       │       │           │   ├── gtest-printers.h
│       │       │           │   └── gtest.h
│       │       │           ├── gtest-death-test-internal.h
│       │       │           ├── gtest-filepath.h
│       │       │           ├── gtest-internal.h
│       │       │           ├── gtest-linked_ptr.h
│       │       │           ├── gtest-param-util-generated.h
│       │       │           ├── gtest-param-util-generated.h.pump
│       │       │           ├── gtest-param-util.h
│       │       │           ├── gtest-port-arch.h
│       │       │           ├── gtest-port.h
│       │       │           ├── gtest-string.h
│       │       │           ├── gtest-tuple.h
│       │       │           ├── gtest-tuple.h.pump
│       │       │           ├── gtest-type-util.h
│       │       │           └── gtest-type-util.h.pump
│       │       ├── m4/
│       │       │   ├── acx_pthread.m4
│       │       │   └── gtest.m4
│       │       ├── msvc/
│       │       │   └── 2010/
│       │       │       ├── gtest-md.sln
│       │       │       ├── gtest-md.vcxproj
│       │       │       ├── gtest-md.vcxproj.filters
│       │       │       ├── gtest.sln
│       │       │       ├── gtest.vcxproj
│       │       │       ├── gtest.vcxproj.filters
│       │       │       ├── gtest_main-md.vcxproj
│       │       │       ├── gtest_main-md.vcxproj.filters
│       │       │       ├── gtest_main.vcxproj
│       │       │       ├── gtest_main.vcxproj.filters
│       │       │       ├── gtest_prod_test-md.vcxproj
│       │       │       ├── gtest_prod_test-md.vcxproj.filters
│       │       │       ├── gtest_prod_test.vcxproj
│       │       │       ├── gtest_prod_test.vcxproj.filters
│       │       │       ├── gtest_unittest-md.vcxproj
│       │       │       ├── gtest_unittest-md.vcxproj.filters
│       │       │       ├── gtest_unittest.vcxproj
│       │       │       └── gtest_unittest.vcxproj.filters
│       │       ├── samples/
│       │       │   ├── prime_tables.h
│       │       │   ├── sample1.cc
│       │       │   ├── sample1.h
│       │       │   ├── sample10_unittest.cc
│       │       │   ├── sample1_unittest.cc
│       │       │   ├── sample2.cc
│       │       │   ├── sample2.h
│       │       │   ├── sample2_unittest.cc
│       │       │   ├── sample3-inl.h
│       │       │   ├── sample3_unittest.cc
│       │       │   ├── sample4.cc
│       │       │   ├── sample4.h
│       │       │   ├── sample4_unittest.cc
│       │       │   ├── sample5_unittest.cc
│       │       │   ├── sample6_unittest.cc
│       │       │   ├── sample7_unittest.cc
│       │       │   ├── sample8_unittest.cc
│       │       │   └── sample9_unittest.cc
│       │       ├── scripts/
│       │       │   ├── common.py
│       │       │   ├── fuse_gtest_files.py
│       │       │   ├── gen_gtest_pred_impl.py
│       │       │   ├── gtest-config.in
│       │       │   ├── pump.py
│       │       │   ├── release_docs.py
│       │       │   ├── upload.py
│       │       │   └── upload_gtest.py
│       │       ├── src/
│       │       │   ├── gtest-all.cc
│       │       │   ├── gtest-death-test.cc
│       │       │   ├── gtest-filepath.cc
│       │       │   ├── gtest-internal-inl.h
│       │       │   ├── gtest-port.cc
│       │       │   ├── gtest-printers.cc
│       │       │   ├── gtest-test-part.cc
│       │       │   ├── gtest-typed-test.cc
│       │       │   ├── gtest.cc
│       │       │   └── gtest_main.cc
│       │       ├── test/
│       │       │   ├── BUILD.bazel
│       │       │   ├── googletest-break-on-failure-unittest.py
│       │       │   ├── googletest-break-on-failure-unittest_.cc
│       │       │   ├── googletest-catch-exceptions-test.py
│       │       │   ├── googletest-catch-exceptions-test_.cc
│       │       │   ├── googletest-color-test.py
│       │       │   ├── googletest-color-test_.cc
│       │       │   ├── googletest-death-test-test.cc
│       │       │   ├── googletest-death-test_ex_test.cc
│       │       │   ├── googletest-env-var-test.py
│       │       │   ├── googletest-env-var-test_.cc
│       │       │   ├── googletest-filepath-test.cc
│       │       │   ├── googletest-filter-unittest.py
│       │       │   ├── googletest-filter-unittest_.cc
│       │       │   ├── googletest-json-outfiles-test.py
│       │       │   ├── googletest-json-output-unittest.py
│       │       │   ├── googletest-linked-ptr-test.cc
│       │       │   ├── googletest-list-tests-unittest.py
│       │       │   ├── googletest-list-tests-unittest_.cc
│       │       │   ├── googletest-listener-test.cc
│       │       │   ├── googletest-message-test.cc
│       │       │   ├── googletest-options-test.cc
│       │       │   ├── googletest-output-test-golden-lin.txt
│       │       │   ├── googletest-output-test.py
│       │       │   ├── googletest-output-test_.cc
│       │       │   ├── googletest-param-test-invalid-name1-test.py
│       │       │   ├── googletest-param-test-invalid-name1-test_.cc
│       │       │   ├── googletest-param-test-invalid-name2-test.py
│       │       │   ├── googletest-param-test-invalid-name2-test_.cc
│       │       │   ├── googletest-param-test-test.cc
│       │       │   ├── googletest-param-test-test.h
│       │       │   ├── googletest-param-test2-test.cc
│       │       │   ├── googletest-port-test.cc
│       │       │   ├── googletest-printers-test.cc
│       │       │   ├── googletest-shuffle-test.py
│       │       │   ├── googletest-shuffle-test_.cc
│       │       │   ├── googletest-test-part-test.cc
│       │       │   ├── googletest-test2_test.cc
│       │       │   ├── googletest-throw-on-failure-test.py
│       │       │   ├── googletest-throw-on-failure-test_.cc
│       │       │   ├── googletest-tuple-test.cc
│       │       │   ├── googletest-uninitialized-test.py
│       │       │   ├── googletest-uninitialized-test_.cc
│       │       │   ├── gtest-typed-test2_test.cc
│       │       │   ├── gtest-typed-test_test.cc
│       │       │   ├── gtest-typed-test_test.h
│       │       │   ├── gtest-unittest-api_test.cc
│       │       │   ├── gtest_all_test.cc
│       │       │   ├── gtest_assert_by_exception_test.cc
│       │       │   ├── gtest_environment_test.cc
│       │       │   ├── gtest_help_test.py
│       │       │   ├── gtest_help_test_.cc
│       │       │   ├── gtest_json_test_utils.py
│       │       │   ├── gtest_list_output_unittest.py
│       │       │   ├── gtest_list_output_unittest_.cc
│       │       │   ├── gtest_main_unittest.cc
│       │       │   ├── gtest_no_test_unittest.cc
│       │       │   ├── gtest_pred_impl_unittest.cc
│       │       │   ├── gtest_premature_exit_test.cc
│       │       │   ├── gtest_prod_test.cc
│       │       │   ├── gtest_repeat_test.cc
│       │       │   ├── gtest_sole_header_test.cc
│       │       │   ├── gtest_stress_test.cc
│       │       │   ├── gtest_test_macro_stack_footprint_test.cc
│       │       │   ├── gtest_test_utils.py
│       │       │   ├── gtest_testbridge_test.py
│       │       │   ├── gtest_testbridge_test_.cc
│       │       │   ├── gtest_throw_on_failure_ex_test.cc
│       │       │   ├── gtest_unittest.cc
│       │       │   ├── gtest_xml_outfile1_test_.cc
│       │       │   ├── gtest_xml_outfile2_test_.cc
│       │       │   ├── gtest_xml_outfiles_test.py
│       │       │   ├── gtest_xml_output_unittest.py
│       │       │   ├── gtest_xml_output_unittest_.cc
│       │       │   ├── gtest_xml_test_utils.py
│       │       │   ├── production.cc
│       │       │   └── production.h
│       │       └── xcode/
│       │           ├── Config/
│       │           │   ├── DebugProject.xcconfig
│       │           │   ├── FrameworkTarget.xcconfig
│       │           │   ├── General.xcconfig
│       │           │   ├── ReleaseProject.xcconfig
│       │           │   ├── StaticLibraryTarget.xcconfig
│       │           │   └── TestTarget.xcconfig
│       │           ├── Resources/
│       │           │   └── Info.plist
│       │           ├── Samples/
│       │           │   └── FrameworkSample/
│       │           │       ├── Info.plist
│       │           │       ├── WidgetFramework.xcodeproj/
│       │           │       │   └── project.pbxproj
│       │           │       ├── runtests.sh
│       │           │       ├── widget.cc
│       │           │       ├── widget.h
│       │           │       └── widget_test.cc
│       │           ├── Scripts/
│       │           │   ├── runtests.sh
│       │           │   └── versiongenerate.py
│       │           └── gtest.xcodeproj/
│       │               └── project.pbxproj
│       ├── libssh2-1.7.0/
│       │   ├── CMakeLists.txt
│       │   ├── README.md
│       │   └── sources/
│       │       ├── .gitattribute
│       │       ├── .gitignore
│       │       ├── .travis.yml
│       │       ├── CMakeLists.txt
│       │       ├── COPYING
│       │       ├── Makefile.OpenSSL.inc
│       │       ├── Makefile.WinCNG.inc
│       │       ├── Makefile.am
│       │       ├── Makefile.inc
│       │       ├── Makefile.libgcrypt.inc
│       │       ├── Makefile.os400qc3.inc
│       │       ├── NEWS
│       │       ├── NMakefile
│       │       ├── README
│       │       ├── RELEASE-NOTES
│       │       ├── acinclude.m4
│       │       ├── appveyor.yml
│       │       ├── buildconf
│       │       ├── cmake/
│       │       │   ├── CheckFunctionExistsMayNeedLibrary.cmake
│       │       │   ├── CheckNonblockingSocketSupport.cmake
│       │       │   ├── CopyRuntimeDependencies.cmake
│       │       │   ├── FindLibgcrypt.cmake
│       │       │   ├── SocketLibraries.cmake
│       │       │   ├── Toolchain-Linux-32.cmake
│       │       │   └── max_warnings.cmake
│       │       ├── config.rpath
│       │       ├── configure.ac
│       │       ├── docs/
│       │       │   ├── .gitignore
│       │       │   ├── AUTHORS
│       │       │   ├── BINDINGS
│       │       │   ├── CMakeLists.txt
│       │       │   ├── HACKING
│       │       │   ├── HACKING.CRYPTO
│       │       │   ├── INSTALL_AUTOTOOLS
│       │       │   ├── INSTALL_CMAKE
│       │       │   ├── Makefile.am
│       │       │   ├── TODO
│       │       │   ├── libssh2_agent_connect.3
│       │       │   ├── libssh2_agent_disconnect.3
│       │       │   ├── libssh2_agent_free.3
│       │       │   ├── libssh2_agent_get_identity.3
│       │       │   ├── libssh2_agent_init.3
│       │       │   ├── libssh2_agent_list_identities.3
│       │       │   ├── libssh2_agent_userauth.3
│       │       │   ├── libssh2_banner_set.3
│       │       │   ├── libssh2_base64_decode.3
│       │       │   ├── libssh2_channel_close.3
│       │       │   ├── libssh2_channel_direct_tcpip.3
│       │       │   ├── libssh2_channel_direct_tcpip_ex.3
│       │       │   ├── libssh2_channel_eof.3
│       │       │   ├── libssh2_channel_exec.3
│       │       │   ├── libssh2_channel_flush.3
│       │       │   ├── libssh2_channel_flush_ex.3
│       │       │   ├── libssh2_channel_flush_stderr.3
│       │       │   ├── libssh2_channel_forward_accept.3
│       │       │   ├── libssh2_channel_forward_cancel.3
│       │       │   ├── libssh2_channel_forward_listen.3
│       │       │   ├── libssh2_channel_forward_listen_ex.3
│       │       │   ├── libssh2_channel_free.3
│       │       │   ├── libssh2_channel_get_exit_signal.3
│       │       │   ├── libssh2_channel_get_exit_status.3
│       │       │   ├── libssh2_channel_handle_extended_data.3
│       │       │   ├── libssh2_channel_handle_extended_data2.3
│       │       │   ├── libssh2_channel_ignore_extended_data.3
│       │       │   ├── libssh2_channel_open_ex.3
│       │       │   ├── libssh2_channel_open_session.3
│       │       │   ├── libssh2_channel_process_startup.3
│       │       │   ├── libssh2_channel_read.3
│       │       │   ├── libssh2_channel_read_ex.3
│       │       │   ├── libssh2_channel_read_stderr.3
│       │       │   ├── libssh2_channel_receive_window_adjust.3
│       │       │   ├── libssh2_channel_receive_window_adjust2.3
│       │       │   ├── libssh2_channel_request_pty.3
│       │       │   ├── libssh2_channel_request_pty_ex.3
│       │       │   ├── libssh2_channel_request_pty_size.3
│       │       │   ├── libssh2_channel_request_pty_size_ex.3
│       │       │   ├── libssh2_channel_send_eof.3
│       │       │   ├── libssh2_channel_set_blocking.3
│       │       │   ├── libssh2_channel_setenv.3
│       │       │   ├── libssh2_channel_setenv_ex.3
│       │       │   ├── libssh2_channel_shell.3
│       │       │   ├── libssh2_channel_subsystem.3
│       │       │   ├── libssh2_channel_wait_closed.3
│       │       │   ├── libssh2_channel_wait_eof.3
│       │       │   ├── libssh2_channel_window_read.3
│       │       │   ├── libssh2_channel_window_read_ex.3
│       │       │   ├── libssh2_channel_window_write.3
│       │       │   ├── libssh2_channel_window_write_ex.3
│       │       │   ├── libssh2_channel_write.3
│       │       │   ├── libssh2_channel_write_ex.3
│       │       │   ├── libssh2_channel_write_stderr.3
│       │       │   ├── libssh2_channel_x11_req.3
│       │       │   ├── libssh2_channel_x11_req_ex.3
│       │       │   ├── libssh2_exit.3
│       │       │   ├── libssh2_free.3
│       │       │   ├── libssh2_hostkey_hash.3
│       │       │   ├── libssh2_init.3
│       │       │   ├── libssh2_keepalive_config.3
│       │       │   ├── libssh2_keepalive_send.3
│       │       │   ├── libssh2_knownhost_add.3
│       │       │   ├── libssh2_knownhost_addc.3
│       │       │   ├── libssh2_knownhost_check.3
│       │       │   ├── libssh2_knownhost_checkp.3
│       │       │   ├── libssh2_knownhost_del.3
│       │       │   ├── libssh2_knownhost_free.3
│       │       │   ├── libssh2_knownhost_get.3
│       │       │   ├── libssh2_knownhost_init.3
│       │       │   ├── libssh2_knownhost_readfile.3
│       │       │   ├── libssh2_knownhost_readline.3
│       │       │   ├── libssh2_knownhost_writefile.3
│       │       │   ├── libssh2_knownhost_writeline.3
│       │       │   ├── libssh2_poll.3
│       │       │   ├── libssh2_poll_channel_read.3
│       │       │   ├── libssh2_publickey_add.3
│       │       │   ├── libssh2_publickey_add_ex.3
│       │       │   ├── libssh2_publickey_init.3
│       │       │   ├── libssh2_publickey_list_fetch.3
│       │       │   ├── libssh2_publickey_list_free.3
│       │       │   ├── libssh2_publickey_remove.3
│       │       │   ├── libssh2_publickey_remove_ex.3
│       │       │   ├── libssh2_publickey_shutdown.3
│       │       │   ├── libssh2_scp_recv.3
│       │       │   ├── libssh2_scp_recv2.3
│       │       │   ├── libssh2_scp_send.3
│       │       │   ├── libssh2_scp_send64.3
│       │       │   ├── libssh2_scp_send_ex.3
│       │       │   ├── libssh2_session_abstract.3
│       │       │   ├── libssh2_session_banner_get.3
│       │       │   ├── libssh2_session_banner_set.3
│       │       │   ├── libssh2_session_block_directions.3
│       │       │   ├── libssh2_session_callback_set.3
│       │       │   ├── libssh2_session_disconnect.3
│       │       │   ├── libssh2_session_disconnect_ex.3
│       │       │   ├── libssh2_session_flag.3
│       │       │   ├── libssh2_session_free.3
│       │       │   ├── libssh2_session_get_blocking.3
│       │       │   ├── libssh2_session_get_timeout.3
│       │       │   ├── libssh2_session_handshake.3
│       │       │   ├── libssh2_session_hostkey.3
│       │       │   ├── libssh2_session_init.3
│       │       │   ├── libssh2_session_init_ex.3
│       │       │   ├── libssh2_session_last_errno.3
│       │       │   ├── libssh2_session_last_error.3
│       │       │   ├── libssh2_session_method_pref.3
│       │       │   ├── libssh2_session_methods.3
│       │       │   ├── libssh2_session_set_blocking.3
│       │       │   ├── libssh2_session_set_last_error.3
│       │       │   ├── libssh2_session_set_timeout.3
│       │       │   ├── libssh2_session_startup.3
│       │       │   ├── libssh2_session_supported_algs.3
│       │       │   ├── libssh2_sftp_close.3
│       │       │   ├── libssh2_sftp_close_handle.3
│       │       │   ├── libssh2_sftp_closedir.3
│       │       │   ├── libssh2_sftp_fsetstat.3
│       │       │   ├── libssh2_sftp_fstat.3
│       │       │   ├── libssh2_sftp_fstat_ex.3
│       │       │   ├── libssh2_sftp_fstatvfs.3
│       │       │   ├── libssh2_sftp_fsync.3
│       │       │   ├── libssh2_sftp_get_channel.3
│       │       │   ├── libssh2_sftp_init.3
│       │       │   ├── libssh2_sftp_last_error.3
│       │       │   ├── libssh2_sftp_lstat.3
│       │       │   ├── libssh2_sftp_mkdir.3
│       │       │   ├── libssh2_sftp_mkdir_ex.3
│       │       │   ├── libssh2_sftp_open.3
│       │       │   ├── libssh2_sftp_open_ex.3
│       │       │   ├── libssh2_sftp_opendir.3
│       │       │   ├── libssh2_sftp_read.3
│       │       │   ├── libssh2_sftp_readdir.3
│       │       │   ├── libssh2_sftp_readdir_ex.3
│       │       │   ├── libssh2_sftp_readlink.3
│       │       │   ├── libssh2_sftp_realpath.3
│       │       │   ├── libssh2_sftp_rename.3
│       │       │   ├── libssh2_sftp_rename_ex.3
│       │       │   ├── libssh2_sftp_rewind.3
│       │       │   ├── libssh2_sftp_rmdir.3
│       │       │   ├── libssh2_sftp_rmdir_ex.3
│       │       │   ├── libssh2_sftp_seek.3
│       │       │   ├── libssh2_sftp_seek64.3
│       │       │   ├── libssh2_sftp_setstat.3
│       │       │   ├── libssh2_sftp_shutdown.3
│       │       │   ├── libssh2_sftp_stat.3
│       │       │   ├── libssh2_sftp_stat_ex.3
│       │       │   ├── libssh2_sftp_statvfs.3
│       │       │   ├── libssh2_sftp_symlink.3
│       │       │   ├── libssh2_sftp_symlink_ex.3
│       │       │   ├── libssh2_sftp_tell.3
│       │       │   ├── libssh2_sftp_tell64.3
│       │       │   ├── libssh2_sftp_unlink.3
│       │       │   ├── libssh2_sftp_unlink_ex.3
│       │       │   ├── libssh2_sftp_write.3
│       │       │   ├── libssh2_trace.3
│       │       │   ├── libssh2_trace_sethandler.3
│       │       │   ├── libssh2_userauth_authenticated.3
│       │       │   ├── libssh2_userauth_hostbased_fromfile.3
│       │       │   ├── libssh2_userauth_hostbased_fromfile_ex.3
│       │       │   ├── libssh2_userauth_keyboard_interactive.3
│       │       │   ├── libssh2_userauth_keyboard_interactive_ex.3
│       │       │   ├── libssh2_userauth_list.3
│       │       │   ├── libssh2_userauth_password.3
│       │       │   ├── libssh2_userauth_password_ex.3
│       │       │   ├── libssh2_userauth_publickey.3
│       │       │   ├── libssh2_userauth_publickey_fromfile.3
│       │       │   ├── libssh2_userauth_publickey_fromfile_ex.3
│       │       │   ├── libssh2_userauth_publickey_frommemory.3
│       │       │   ├── libssh2_version.3
│       │       │   └── template.3
│       │       ├── example/
│       │       │   ├── .gitignore
│       │       │   ├── CMakeLists.txt
│       │       │   ├── Makefile.am
│       │       │   ├── direct_tcpip.c
│       │       │   ├── libssh2_config_cmake.h.in
│       │       │   ├── scp.c
│       │       │   ├── scp_nonblock.c
│       │       │   ├── scp_write.c
│       │       │   ├── scp_write_nonblock.c
│       │       │   ├── sftp.c
│       │       │   ├── sftp_RW_nonblock.c
│       │       │   ├── sftp_append.c
│       │       │   ├── sftp_mkdir.c
│       │       │   ├── sftp_mkdir_nonblock.c
│       │       │   ├── sftp_nonblock.c
│       │       │   ├── sftp_write.c
│       │       │   ├── sftp_write_nonblock.c
│       │       │   ├── sftp_write_sliding.c
│       │       │   ├── sftpdir.c
│       │       │   ├── sftpdir_nonblock.c
│       │       │   ├── ssh2.c
│       │       │   ├── ssh2_agent.c
│       │       │   ├── ssh2_echo.c
│       │       │   ├── ssh2_exec.c
│       │       │   ├── subsystem_netconf.c
│       │       │   ├── tcpip-forward.c
│       │       │   └── x11.c
│       │       ├── get_ver.awk
│       │       ├── git2news.pl
│       │       ├── include/
│       │       │   ├── libssh2.h
│       │       │   ├── libssh2_publickey.h
│       │       │   └── libssh2_sftp.h
│       │       ├── libssh2-style.el
│       │       ├── libssh2.pc.in
│       │       ├── m4/
│       │       │   ├── .gitignore
│       │       │   ├── autobuild.m4
│       │       │   ├── lib-ld.m4
│       │       │   ├── lib-link.m4
│       │       │   └── lib-prefix.m4
│       │       ├── maketgz
│       │       ├── nw/
│       │       │   ├── GNUmakefile
│       │       │   ├── keepscreen.c
│       │       │   ├── nwlib.c
│       │       │   └── test/
│       │       │       └── GNUmakefile
│       │       ├── os400/
│       │       │   ├── README400
│       │       │   ├── ccsid.c
│       │       │   ├── include/
│       │       │   │   ├── alloca.h
│       │       │   │   ├── stdio.h
│       │       │   │   └── sys/
│       │       │   │       └── socket.h
│       │       │   ├── initscript.sh
│       │       │   ├── libssh2_ccsid.h
│       │       │   ├── libssh2_config.h
│       │       │   ├── libssh2rpg/
│       │       │   │   ├── libssh2.rpgle.in
│       │       │   │   ├── libssh2_ccsid.rpgle.in
│       │       │   │   ├── libssh2_publickey.rpgle
│       │       │   │   └── libssh2_sftp.rpgle
│       │       │   ├── macros.h
│       │       │   ├── make-include.sh
│       │       │   ├── make-rpg.sh
│       │       │   ├── make-src.sh
│       │       │   ├── make.sh
│       │       │   └── os400sys.c
│       │       ├── src/
│       │       │   ├── .gitignore
│       │       │   ├── CMakeLists.txt
│       │       │   ├── Makefile.am
│       │       │   ├── NMakefile
│       │       │   ├── agent.c
│       │       │   ├── channel.c
│       │       │   ├── channel.h
│       │       │   ├── comp.c
│       │       │   ├── comp.h
│       │       │   ├── crypt.c
│       │       │   ├── crypto.h
│       │       │   ├── global.c
│       │       │   ├── hostkey.c
│       │       │   ├── keepalive.c
│       │       │   ├── kex.c
│       │       │   ├── knownhost.c
│       │       │   ├── libgcrypt.c
│       │       │   ├── libgcrypt.h
│       │       │   ├── libssh2.pc.in
│       │       │   ├── libssh2_config_cmake.h.in
│       │       │   ├── libssh2_priv.h
│       │       │   ├── mac.c
│       │       │   ├── mac.h
│       │       │   ├── misc.c
│       │       │   ├── misc.h
│       │       │   ├── openssl.c
│       │       │   ├── openssl.h
│       │       │   ├── os400qc3.c
│       │       │   ├── os400qc3.h
│       │       │   ├── packet.c
│       │       │   ├── packet.h
│       │       │   ├── pem.c
│       │       │   ├── publickey.c
│       │       │   ├── scp.c
│       │       │   ├── session.c
│       │       │   ├── session.h
│       │       │   ├── sftp.c
│       │       │   ├── sftp.h
│       │       │   ├── transport.c
│       │       │   ├── transport.h
│       │       │   ├── userauth.c
│       │       │   ├── userauth.h
│       │       │   ├── version.c
│       │       │   ├── wincng.c
│       │       │   └── wincng.h
│       │       ├── tests/
│       │       │   ├── .gitignore
│       │       │   ├── CMakeLists.txt
│       │       │   ├── Makefile.am
│       │       │   ├── etc/
│       │       │   │   ├── host
│       │       │   │   ├── host.pub
│       │       │   │   ├── sshd_config
│       │       │   │   ├── user
│       │       │   │   └── user.pub
│       │       │   ├── libssh2_config_cmake.h.in
│       │       │   ├── mansyntax.sh
│       │       │   ├── simple.c
│       │       │   ├── ssh2.c
│       │       │   ├── ssh2.sh
│       │       │   ├── sshd_fixture.sh.in
│       │       │   └── sshdwrap
│       │       ├── vms/
│       │       │   ├── libssh2_config.h
│       │       │   ├── libssh2_make_example.dcl
│       │       │   ├── libssh2_make_help.dcl
│       │       │   ├── libssh2_make_kit.dcl
│       │       │   ├── libssh2_make_lib.dcl
│       │       │   ├── man2help.c
│       │       │   └── readme.vms
│       │       └── win32/
│       │           ├── .gitignore
│       │           ├── GNUmakefile
│       │           ├── Makefile.Watcom
│       │           ├── config.mk
│       │           ├── libssh2.dsw
│       │           ├── libssh2.rc
│       │           ├── libssh2_config.h
│       │           ├── msvcproj.foot
│       │           ├── msvcproj.head
│       │           ├── rules.mk
│       │           ├── test/
│       │           │   └── GNUmakefile
│       │           └── tests.dsp
│       ├── libssh2-1.9.0/
│       │   ├── CMakeLists.txt
│       │   ├── README.md
│       │   └── sources/
│       │       ├── .editorconfig
│       │       ├── .gitattribute
│       │       ├── .github/
│       │       │   ├── ISSUE_TEMPLATE/
│       │       │   │   └── bug_report.md
│       │       │   └── stale.yml
│       │       ├── .gitignore
│       │       ├── .travis.yml
│       │       ├── CMakeLists.txt
│       │       ├── COPYING
│       │       ├── Makefile.OpenSSL.inc
│       │       ├── Makefile.WinCNG.inc
│       │       ├── Makefile.am
│       │       ├── Makefile.inc
│       │       ├── Makefile.libgcrypt.inc
│       │       ├── Makefile.mbedTLS.inc
│       │       ├── Makefile.os400qc3.inc
│       │       ├── NEWS
│       │       ├── NMakefile
│       │       ├── README
│       │       ├── README.md
│       │       ├── RELEASE-NOTES
│       │       ├── acinclude.m4
│       │       ├── appveyor.yml
│       │       ├── buildconf
│       │       ├── cmake/
│       │       │   ├── CheckFunctionExistsMayNeedLibrary.cmake
│       │       │   ├── CheckNonblockingSocketSupport.cmake
│       │       │   ├── CopyRuntimeDependencies.cmake
│       │       │   ├── FindLibgcrypt.cmake
│       │       │   ├── FindmbedTLS.cmake
│       │       │   ├── SocketLibraries.cmake
│       │       │   ├── Toolchain-Linux-32.cmake
│       │       │   └── max_warnings.cmake
│       │       ├── config.rpath
│       │       ├── configure.ac
│       │       ├── docs/
│       │       │   ├── .gitignore
│       │       │   ├── AUTHORS
│       │       │   ├── BINDINGS
│       │       │   ├── CMakeLists.txt
│       │       │   ├── HACKING
│       │       │   ├── HACKING.CRYPTO
│       │       │   ├── INSTALL_AUTOTOOLS
│       │       │   ├── INSTALL_CMAKE
│       │       │   ├── Makefile.am
│       │       │   ├── SECURITY.md
│       │       │   ├── TODO
│       │       │   ├── libssh2_agent_connect.3
│       │       │   ├── libssh2_agent_disconnect.3
│       │       │   ├── libssh2_agent_free.3
│       │       │   ├── libssh2_agent_get_identity.3
│       │       │   ├── libssh2_agent_get_identity_path.3
│       │       │   ├── libssh2_agent_init.3
│       │       │   ├── libssh2_agent_list_identities.3
│       │       │   ├── libssh2_agent_set_identity_path.3
│       │       │   ├── libssh2_agent_userauth.3
│       │       │   ├── libssh2_banner_set.3
│       │       │   ├── libssh2_base64_decode.3
│       │       │   ├── libssh2_channel_close.3
│       │       │   ├── libssh2_channel_direct_tcpip.3
│       │       │   ├── libssh2_channel_direct_tcpip_ex.3
│       │       │   ├── libssh2_channel_eof.3
│       │       │   ├── libssh2_channel_exec.3
│       │       │   ├── libssh2_channel_flush.3
│       │       │   ├── libssh2_channel_flush_ex.3
│       │       │   ├── libssh2_channel_flush_stderr.3
│       │       │   ├── libssh2_channel_forward_accept.3
│       │       │   ├── libssh2_channel_forward_cancel.3
│       │       │   ├── libssh2_channel_forward_listen.3
│       │       │   ├── libssh2_channel_forward_listen_ex.3
│       │       │   ├── libssh2_channel_free.3
│       │       │   ├── libssh2_channel_get_exit_signal.3
│       │       │   ├── libssh2_channel_get_exit_status.3
│       │       │   ├── libssh2_channel_handle_extended_data.3
│       │       │   ├── libssh2_channel_handle_extended_data2.3
│       │       │   ├── libssh2_channel_ignore_extended_data.3
│       │       │   ├── libssh2_channel_open_ex.3
│       │       │   ├── libssh2_channel_open_session.3
│       │       │   ├── libssh2_channel_process_startup.3
│       │       │   ├── libssh2_channel_read.3
│       │       │   ├── libssh2_channel_read_ex.3
│       │       │   ├── libssh2_channel_read_stderr.3
│       │       │   ├── libssh2_channel_receive_window_adjust.3
│       │       │   ├── libssh2_channel_receive_window_adjust2.3
│       │       │   ├── libssh2_channel_request_pty.3
│       │       │   ├── libssh2_channel_request_pty_ex.3
│       │       │   ├── libssh2_channel_request_pty_size.3
│       │       │   ├── libssh2_channel_request_pty_size_ex.3
│       │       │   ├── libssh2_channel_send_eof.3
│       │       │   ├── libssh2_channel_set_blocking.3
│       │       │   ├── libssh2_channel_setenv.3
│       │       │   ├── libssh2_channel_setenv_ex.3
│       │       │   ├── libssh2_channel_shell.3
│       │       │   ├── libssh2_channel_subsystem.3
│       │       │   ├── libssh2_channel_wait_closed.3
│       │       │   ├── libssh2_channel_wait_eof.3
│       │       │   ├── libssh2_channel_window_read.3
│       │       │   ├── libssh2_channel_window_read_ex.3
│       │       │   ├── libssh2_channel_window_write.3
│       │       │   ├── libssh2_channel_window_write_ex.3
│       │       │   ├── libssh2_channel_write.3
│       │       │   ├── libssh2_channel_write_ex.3
│       │       │   ├── libssh2_channel_write_stderr.3
│       │       │   ├── libssh2_channel_x11_req.3
│       │       │   ├── libssh2_channel_x11_req_ex.3
│       │       │   ├── libssh2_exit.3
│       │       │   ├── libssh2_free.3
│       │       │   ├── libssh2_hostkey_hash.3
│       │       │   ├── libssh2_init.3
│       │       │   ├── libssh2_keepalive_config.3
│       │       │   ├── libssh2_keepalive_send.3
│       │       │   ├── libssh2_knownhost_add.3
│       │       │   ├── libssh2_knownhost_addc.3
│       │       │   ├── libssh2_knownhost_check.3
│       │       │   ├── libssh2_knownhost_checkp.3
│       │       │   ├── libssh2_knownhost_del.3
│       │       │   ├── libssh2_knownhost_free.3
│       │       │   ├── libssh2_knownhost_get.3
│       │       │   ├── libssh2_knownhost_init.3
│       │       │   ├── libssh2_knownhost_readfile.3
│       │       │   ├── libssh2_knownhost_readline.3
│       │       │   ├── libssh2_knownhost_writefile.3
│       │       │   ├── libssh2_knownhost_writeline.3
│       │       │   ├── libssh2_poll.3
│       │       │   ├── libssh2_poll_channel_read.3
│       │       │   ├── libssh2_publickey_add.3
│       │       │   ├── libssh2_publickey_add_ex.3
│       │       │   ├── libssh2_publickey_init.3
│       │       │   ├── libssh2_publickey_list_fetch.3
│       │       │   ├── libssh2_publickey_list_free.3
│       │       │   ├── libssh2_publickey_remove.3
│       │       │   ├── libssh2_publickey_remove_ex.3
│       │       │   ├── libssh2_publickey_shutdown.3
│       │       │   ├── libssh2_scp_recv.3
│       │       │   ├── libssh2_scp_recv2.3
│       │       │   ├── libssh2_scp_send.3
│       │       │   ├── libssh2_scp_send64.3
│       │       │   ├── libssh2_scp_send_ex.3
│       │       │   ├── libssh2_session_abstract.3
│       │       │   ├── libssh2_session_banner_get.3
│       │       │   ├── libssh2_session_banner_set.3
│       │       │   ├── libssh2_session_block_directions.3
│       │       │   ├── libssh2_session_callback_set.3
│       │       │   ├── libssh2_session_disconnect.3
│       │       │   ├── libssh2_session_disconnect_ex.3
│       │       │   ├── libssh2_session_flag.3
│       │       │   ├── libssh2_session_free.3
│       │       │   ├── libssh2_session_get_blocking.3
│       │       │   ├── libssh2_session_get_timeout.3
│       │       │   ├── libssh2_session_handshake.3
│       │       │   ├── libssh2_session_hostkey.3
│       │       │   ├── libssh2_session_init.3
│       │       │   ├── libssh2_session_init_ex.3
│       │       │   ├── libssh2_session_last_errno.3
│       │       │   ├── libssh2_session_last_error.3
│       │       │   ├── libssh2_session_method_pref.3
│       │       │   ├── libssh2_session_methods.3
│       │       │   ├── libssh2_session_set_blocking.3
│       │       │   ├── libssh2_session_set_last_error.3
│       │       │   ├── libssh2_session_set_timeout.3
│       │       │   ├── libssh2_session_startup.3
│       │       │   ├── libssh2_session_supported_algs.3
│       │       │   ├── libssh2_sftp_close.3
│       │       │   ├── libssh2_sftp_close_handle.3
│       │       │   ├── libssh2_sftp_closedir.3
│       │       │   ├── libssh2_sftp_fsetstat.3
│       │       │   ├── libssh2_sftp_fstat.3
│       │       │   ├── libssh2_sftp_fstat_ex.3
│       │       │   ├── libssh2_sftp_fstatvfs.3
│       │       │   ├── libssh2_sftp_fsync.3
│       │       │   ├── libssh2_sftp_get_channel.3
│       │       │   ├── libssh2_sftp_init.3
│       │       │   ├── libssh2_sftp_last_error.3
│       │       │   ├── libssh2_sftp_lstat.3
│       │       │   ├── libssh2_sftp_mkdir.3
│       │       │   ├── libssh2_sftp_mkdir_ex.3
│       │       │   ├── libssh2_sftp_open.3
│       │       │   ├── libssh2_sftp_open_ex.3
│       │       │   ├── libssh2_sftp_opendir.3
│       │       │   ├── libssh2_sftp_read.3
│       │       │   ├── libssh2_sftp_readdir.3
│       │       │   ├── libssh2_sftp_readdir_ex.3
│       │       │   ├── libssh2_sftp_readlink.3
│       │       │   ├── libssh2_sftp_realpath.3
│       │       │   ├── libssh2_sftp_rename.3
│       │       │   ├── libssh2_sftp_rename_ex.3
│       │       │   ├── libssh2_sftp_rewind.3
│       │       │   ├── libssh2_sftp_rmdir.3
│       │       │   ├── libssh2_sftp_rmdir_ex.3
│       │       │   ├── libssh2_sftp_seek.3
│       │       │   ├── libssh2_sftp_seek64.3
│       │       │   ├── libssh2_sftp_setstat.3
│       │       │   ├── libssh2_sftp_shutdown.3
│       │       │   ├── libssh2_sftp_stat.3
│       │       │   ├── libssh2_sftp_stat_ex.3
│       │       │   ├── libssh2_sftp_statvfs.3
│       │       │   ├── libssh2_sftp_symlink.3
│       │       │   ├── libssh2_sftp_symlink_ex.3
│       │       │   ├── libssh2_sftp_tell.3
│       │       │   ├── libssh2_sftp_tell64.3
│       │       │   ├── libssh2_sftp_unlink.3
│       │       │   ├── libssh2_sftp_unlink_ex.3
│       │       │   ├── libssh2_sftp_write.3
│       │       │   ├── libssh2_trace.3
│       │       │   ├── libssh2_trace_sethandler.3
│       │       │   ├── libssh2_userauth_authenticated.3
│       │       │   ├── libssh2_userauth_hostbased_fromfile.3
│       │       │   ├── libssh2_userauth_hostbased_fromfile_ex.3
│       │       │   ├── libssh2_userauth_keyboard_interactive.3
│       │       │   ├── libssh2_userauth_keyboard_interactive_ex.3
│       │       │   ├── libssh2_userauth_list.3
│       │       │   ├── libssh2_userauth_password.3
│       │       │   ├── libssh2_userauth_password_ex.3
│       │       │   ├── libssh2_userauth_publickey.3
│       │       │   ├── libssh2_userauth_publickey_fromfile.3
│       │       │   ├── libssh2_userauth_publickey_fromfile_ex.3
│       │       │   ├── libssh2_userauth_publickey_frommemory.3
│       │       │   ├── libssh2_version.3
│       │       │   └── template.3
│       │       ├── example/
│       │       │   ├── .gitignore
│       │       │   ├── CMakeLists.txt
│       │       │   ├── Makefile.am
│       │       │   ├── direct_tcpip.c
│       │       │   ├── libssh2_config_cmake.h.in
│       │       │   ├── scp.c
│       │       │   ├── scp_nonblock.c
│       │       │   ├── scp_write.c
│       │       │   ├── scp_write_nonblock.c
│       │       │   ├── sftp.c
│       │       │   ├── sftp_RW_nonblock.c
│       │       │   ├── sftp_append.c
│       │       │   ├── sftp_mkdir.c
│       │       │   ├── sftp_mkdir_nonblock.c
│       │       │   ├── sftp_nonblock.c
│       │       │   ├── sftp_write.c
│       │       │   ├── sftp_write_nonblock.c
│       │       │   ├── sftp_write_sliding.c
│       │       │   ├── sftpdir.c
│       │       │   ├── sftpdir_nonblock.c
│       │       │   ├── ssh2.c
│       │       │   ├── ssh2_agent.c
│       │       │   ├── ssh2_echo.c
│       │       │   ├── ssh2_exec.c
│       │       │   ├── subsystem_netconf.c
│       │       │   ├── tcpip-forward.c
│       │       │   └── x11.c
│       │       ├── get_ver.awk
│       │       ├── git2news.pl
│       │       ├── include/
│       │       │   ├── libssh2.h
│       │       │   ├── libssh2_publickey.h
│       │       │   └── libssh2_sftp.h
│       │       ├── libssh2-style.el
│       │       ├── libssh2.pc.in
│       │       ├── m4/
│       │       │   ├── .gitignore
│       │       │   ├── autobuild.m4
│       │       │   ├── lib-ld.m4
│       │       │   ├── lib-link.m4
│       │       │   └── lib-prefix.m4
│       │       ├── maketgz
│       │       ├── nw/
│       │       │   ├── GNUmakefile
│       │       │   ├── keepscreen.c
│       │       │   ├── nwlib.c
│       │       │   └── test/
│       │       │       └── GNUmakefile
│       │       ├── os400/
│       │       │   ├── README400
│       │       │   ├── ccsid.c
│       │       │   ├── include/
│       │       │   │   ├── alloca.h
│       │       │   │   ├── stdio.h
│       │       │   │   └── sys/
│       │       │   │       └── socket.h
│       │       │   ├── initscript.sh
│       │       │   ├── libssh2_ccsid.h
│       │       │   ├── libssh2_config.h
│       │       │   ├── libssh2rpg/
│       │       │   │   ├── libssh2.rpgle.in
│       │       │   │   ├── libssh2_ccsid.rpgle.in
│       │       │   │   ├── libssh2_publickey.rpgle
│       │       │   │   └── libssh2_sftp.rpgle
│       │       │   ├── macros.h
│       │       │   ├── make-include.sh
│       │       │   ├── make-rpg.sh
│       │       │   ├── make-src.sh
│       │       │   ├── make.sh
│       │       │   └── os400sys.c
│       │       ├── src/
│       │       │   ├── .gitignore
│       │       │   ├── CMakeLists.txt
│       │       │   ├── Makefile.am
│       │       │   ├── NMakefile
│       │       │   ├── agent.c
│       │       │   ├── bcrypt_pbkdf.c
│       │       │   ├── blf.h
│       │       │   ├── blowfish.c
│       │       │   ├── channel.c
│       │       │   ├── channel.h
│       │       │   ├── checksrc.pl
│       │       │   ├── comp.c
│       │       │   ├── comp.h
│       │       │   ├── crypt.c
│       │       │   ├── crypto.h
│       │       │   ├── global.c
│       │       │   ├── hostkey.c
│       │       │   ├── keepalive.c
│       │       │   ├── kex.c
│       │       │   ├── knownhost.c
│       │       │   ├── libgcrypt.c
│       │       │   ├── libgcrypt.h
│       │       │   ├── libssh2.pc.in
│       │       │   ├── libssh2_config_cmake.h.in
│       │       │   ├── libssh2_priv.h
│       │       │   ├── mac.c
│       │       │   ├── mac.h
│       │       │   ├── mbedtls.c
│       │       │   ├── mbedtls.h
│       │       │   ├── misc.c
│       │       │   ├── misc.h
│       │       │   ├── openssl.c
│       │       │   ├── openssl.h
│       │       │   ├── os400qc3.c
│       │       │   ├── os400qc3.h
│       │       │   ├── packet.c
│       │       │   ├── packet.h
│       │       │   ├── pem.c
│       │       │   ├── publickey.c
│       │       │   ├── scp.c
│       │       │   ├── session.c
│       │       │   ├── session.h
│       │       │   ├── sftp.c
│       │       │   ├── sftp.h
│       │       │   ├── transport.c
│       │       │   ├── transport.h
│       │       │   ├── userauth.c
│       │       │   ├── userauth.h
│       │       │   ├── version.c
│       │       │   ├── wincng.c
│       │       │   └── wincng.h
│       │       ├── tests/
│       │       │   ├── .gitignore
│       │       │   ├── CMakeLists.txt
│       │       │   ├── Makefile.am
│       │       │   ├── etc/
│       │       │   │   ├── host
│       │       │   │   ├── host.pub
│       │       │   │   ├── sshd_config
│       │       │   │   ├── user
│       │       │   │   └── user.pub
│       │       │   ├── key_dsa
│       │       │   ├── key_dsa.pub
│       │       │   ├── key_dsa_wrong
│       │       │   ├── key_dsa_wrong.pub
│       │       │   ├── key_ed25519
│       │       │   ├── key_ed25519.pub
│       │       │   ├── key_ed25519_encrypted
│       │       │   ├── key_ed25519_encrypted.pub
│       │       │   ├── key_rsa
│       │       │   ├── key_rsa.pub
│       │       │   ├── key_rsa_encrypted
│       │       │   ├── key_rsa_encrypted.pub
│       │       │   ├── key_rsa_openssh
│       │       │   ├── key_rsa_openssh.pub
│       │       │   ├── libssh2_config_cmake.h.in
│       │       │   ├── mansyntax.sh
│       │       │   ├── openssh_fixture.c
│       │       │   ├── openssh_fixture.h
│       │       │   ├── openssh_server/
│       │       │   │   ├── Dockerfile
│       │       │   │   ├── authorized_keys
│       │       │   │   ├── ssh_host_ecdsa_key
│       │       │   │   ├── ssh_host_ed25519_key
│       │       │   │   └── ssh_host_rsa_key
│       │       │   ├── runner.c
│       │       │   ├── session_fixture.c
│       │       │   ├── session_fixture.h
│       │       │   ├── simple.c
│       │       │   ├── ssh2.c
│       │       │   ├── ssh2.sh
│       │       │   ├── sshd_fixture.sh.in
│       │       │   ├── sshdwrap
│       │       │   ├── test_hostkey.c
│       │       │   ├── test_hostkey_hash.c
│       │       │   ├── test_keyboard_interactive_auth_fails_with_wrong_response.c
│       │       │   ├── test_keyboard_interactive_auth_succeeds_with_correct_response.c
│       │       │   ├── test_password_auth_fails_with_wrong_password.c
│       │       │   ├── test_password_auth_fails_with_wrong_username.c
│       │       │   ├── test_password_auth_succeeds_with_correct_credentials.c
│       │       │   ├── test_public_key_auth_fails_with_wrong_key.c
│       │       │   ├── test_public_key_auth_succeeds_with_correct_dsa_key.c
│       │       │   ├── test_public_key_auth_succeeds_with_correct_ed25519_key.c
│       │       │   ├── test_public_key_auth_succeeds_with_correct_ed25519_key_from_mem.c
│       │       │   ├── test_public_key_auth_succeeds_with_correct_encrypted_ed25519_key.c
│       │       │   ├── test_public_key_auth_succeeds_with_correct_encrypted_rsa_key.c
│       │       │   ├── test_public_key_auth_succeeds_with_correct_rsa_key.c
│       │       │   └── test_public_key_auth_succeeds_with_correct_rsa_openssh_key.c
│       │       ├── vms/
│       │       │   ├── libssh2_config.h
│       │       │   ├── libssh2_make_example.dcl
│       │       │   ├── libssh2_make_help.dcl
│       │       │   ├── libssh2_make_kit.dcl
│       │       │   ├── libssh2_make_lib.dcl
│       │       │   ├── man2help.c
│       │       │   └── readme.vms
│       │       └── win32/
│       │           ├── .gitignore
│       │           ├── GNUmakefile
│       │           ├── Makefile.Watcom
│       │           ├── config.mk
│       │           ├── libssh2.dsw
│       │           ├── libssh2.rc
│       │           ├── libssh2_config.h
│       │           ├── msvcproj.foot
│       │           ├── msvcproj.head
│       │           ├── rules.mk
│       │           ├── test/
│       │           │   └── GNUmakefile
│       │           └── tests.dsp
│       ├── qjson-0.8.1/
│       │   ├── CMakeLists.txt
│       │   ├── README.md
│       │   └── sources/
│       │       ├── .gitignore
│       │       ├── CMakeLists.txt
│       │       ├── ChangeLog
│       │       ├── QJSONConfig.cmake.in
│       │       ├── QJSONConfigVersion.cmake.in
│       │       ├── QJson.pc.in
│       │       ├── README.license
│       │       ├── README.md
│       │       ├── cmake_uninstall.cmake.in
│       │       ├── doc/
│       │       │   ├── Doxyfile
│       │       │   ├── footer.html
│       │       │   ├── header.html
│       │       │   └── qjson.dox
│       │       ├── include/
│       │       │   └── QJson/
│       │       │       ├── Parser
│       │       │       ├── QObjectHelper
│       │       │       └── Serializer
│       │       ├── src/
│       │       │   ├── .gitignore
│       │       │   ├── CMakeLists.txt
│       │       │   ├── FlexLexer.h
│       │       │   ├── json_parser.cc
│       │       │   ├── json_parser.hh
│       │       │   ├── json_parser.yy
│       │       │   ├── json_scanner.cc
│       │       │   ├── json_scanner.cpp
│       │       │   ├── json_scanner.h
│       │       │   ├── json_scanner.yy
│       │       │   ├── location.hh
│       │       │   ├── parser.cpp
│       │       │   ├── parser.h
│       │       │   ├── parser_p.h
│       │       │   ├── parserrunnable.cpp
│       │       │   ├── parserrunnable.h
│       │       │   ├── position.hh
│       │       │   ├── qjson_debug.h
│       │       │   ├── qjson_export.h
│       │       │   ├── qobjecthelper.cpp
│       │       │   ├── qobjecthelper.h
│       │       │   ├── serializer.cpp
│       │       │   ├── serializer.h
│       │       │   ├── serializerrunnable.cpp
│       │       │   ├── serializerrunnable.h
│       │       │   └── stack.hh
│       │       └── tests/
│       │           ├── .gitignore
│       │           ├── CMakeLists.txt
│       │           ├── benchmarks/
│       │           │   ├── CMakeLists.txt
│       │           │   ├── parsingbenchmark.cpp
│       │           │   └── qlocalevsstrtod_l.cpp
│       │           └── scanner/
│       │               ├── CMakeLists.txt
│       │               └── testscanner.cpp
│       └── qscintilla-2.8.4/
│           ├── CMakeLists.txt
│           ├── QScintilla-2.9.3-xcode8.patch
│           ├── README.md
│           └── sources/
│               ├── GPL_EXCEPTION.TXT
│               ├── GPL_EXCEPTION_ADDENDUM.TXT
│               ├── LICENSE.GPL2
│               ├── LICENSE.GPL3
│               ├── NEWS
│               ├── OPENSOURCE-NOTICE.TXT
│               ├── Python/
│               │   ├── configure-old.py
│               │   ├── configure.py
│               │   └── sip/
│               │       ├── qsciabstractapis.sip
│               │       ├── qsciapis.sip
│               │       ├── qscicommand.sip
│               │       ├── qscicommandset.sip
│               │       ├── qscidocument.sip
│               │       ├── qscilexer.sip
│               │       ├── qscilexeravs.sip
│               │       ├── qscilexerbash.sip
│               │       ├── qscilexerbatch.sip
│               │       ├── qscilexercmake.sip
│               │       ├── qscilexercoffeescript.sip
│               │       ├── qscilexercpp.sip
│               │       ├── qscilexercsharp.sip
│               │       ├── qscilexercss.sip
│               │       ├── qscilexercustom.sip
│               │       ├── qscilexerd.sip
│               │       ├── qscilexerdiff.sip
│               │       ├── qscilexerfortran.sip
│               │       ├── qscilexerfortran77.sip
│               │       ├── qscilexerhtml.sip
│               │       ├── qscilexeridl.sip
│               │       ├── qscilexerjava.sip
│               │       ├── qscilexerjavascript.sip
│               │       ├── qscilexerlua.sip
│               │       ├── qscilexermakefile.sip
│               │       ├── qscilexermatlab.sip
│               │       ├── qscilexeroctave.sip
│               │       ├── qscilexerpascal.sip
│               │       ├── qscilexerperl.sip
│               │       ├── qscilexerpo.sip
│               │       ├── qscilexerpostscript.sip
│               │       ├── qscilexerpov.sip
│               │       ├── qscilexerproperties.sip
│               │       ├── qscilexerpython.sip
│               │       ├── qscilexerruby.sip
│               │       ├── qscilexerspice.sip
│               │       ├── qscilexersql.sip
│               │       ├── qscilexertcl.sip
│               │       ├── qscilexertex.sip
│               │       ├── qscilexerverilog.sip
│               │       ├── qscilexervhdl.sip
│               │       ├── qscilexerxml.sip
│               │       ├── qscilexeryaml.sip
│               │       ├── qscimacro.sip
│               │       ├── qscimod3.sip
│               │       ├── qscimod4.sip
│               │       ├── qscimod5.sip
│               │       ├── qscimodcommon.sip
│               │       ├── qsciprinter.sip
│               │       ├── qsciscintilla.sip
│               │       ├── qsciscintillabase3.sip
│               │       ├── qsciscintillabase4.sip
│               │       ├── qscistyle.sip
│               │       └── qscistyledtext.sip
│               ├── Qt3/
│               │   ├── InputMethod.cpp
│               │   ├── ListBoxQt.cpp
│               │   ├── ListBoxQt.h
│               │   ├── MacPasteboardMime.cpp
│               │   ├── PlatQt.cpp
│               │   ├── Qsci/
│               │   │   ├── qsciabstractapis.h
│               │   │   ├── qsciapis.h
│               │   │   ├── qscicommand.h
│               │   │   ├── qscicommandset.h
│               │   │   ├── qscidocument.h
│               │   │   ├── qsciglobal.h
│               │   │   ├── qscilexer.h
│               │   │   ├── qscilexeravs.h
│               │   │   ├── qscilexerbash.h
│               │   │   ├── qscilexerbatch.h
│               │   │   ├── qscilexercmake.h
│               │   │   ├── qscilexercoffeescript.h
│               │   │   ├── qscilexercpp.h
│               │   │   ├── qscilexercsharp.h
│               │   │   ├── qscilexercss.h
│               │   │   ├── qscilexercustom.h
│               │   │   ├── qscilexerd.h
│               │   │   ├── qscilexerdiff.h
│               │   │   ├── qscilexerfortran.h
│               │   │   ├── qscilexerfortran77.h
│               │   │   ├── qscilexerhtml.h
│               │   │   ├── qscilexeridl.h
│               │   │   ├── qscilexerjava.h
│               │   │   ├── qscilexerjavascript.h
│               │   │   ├── qscilexerlua.h
│               │   │   ├── qscilexermakefile.h
│               │   │   ├── qscilexermatlab.h
│               │   │   ├── qscilexeroctave.h
│               │   │   ├── qscilexerpascal.h
│               │   │   ├── qscilexerperl.h
│               │   │   ├── qscilexerpo.h
│               │   │   ├── qscilexerpostscript.h
│               │   │   ├── qscilexerpov.h
│               │   │   ├── qscilexerproperties.h
│               │   │   ├── qscilexerpython.h
│               │   │   ├── qscilexerruby.h
│               │   │   ├── qscilexerspice.h
│               │   │   ├── qscilexersql.h
│               │   │   ├── qscilexertcl.h
│               │   │   ├── qscilexertex.h
│               │   │   ├── qscilexerverilog.h
│               │   │   ├── qscilexervhdl.h
│               │   │   ├── qscilexerxml.h
│               │   │   ├── qscilexeryaml.h
│               │   │   ├── qscimacro.h
│               │   │   ├── qsciprinter.h
│               │   │   ├── qsciscintilla.h
│               │   │   ├── qsciscintillabase.h
│               │   │   ├── qscistyle.h
│               │   │   └── qscistyledtext.h
│               │   ├── SciClasses.cpp
│               │   ├── SciClasses.h
│               │   ├── SciNamespace.h
│               │   ├── ScintillaQt.cpp
│               │   ├── ScintillaQt.h
│               │   ├── qsciabstractapis.cpp
│               │   ├── qsciapis.cpp
│               │   ├── qscicommand.cpp
│               │   ├── qscicommandset.cpp
│               │   ├── qscidocument.cpp
│               │   ├── qscilexer.cpp
│               │   ├── qscilexeravs.cpp
│               │   ├── qscilexerbash.cpp
│               │   ├── qscilexerbatch.cpp
│               │   ├── qscilexercmake.cpp
│               │   ├── qscilexercoffeescript.cpp
│               │   ├── qscilexercpp.cpp
│               │   ├── qscilexercsharp.cpp
│               │   ├── qscilexercss.cpp
│               │   ├── qscilexercustom.cpp
│               │   ├── qscilexerd.cpp
│               │   ├── qscilexerdiff.cpp
│               │   ├── qscilexerfortran.cpp
│               │   ├── qscilexerfortran77.cpp
│               │   ├── qscilexerhtml.cpp
│               │   ├── qscilexeridl.cpp
│               │   ├── qscilexerjava.cpp
│               │   ├── qscilexerjavascript.cpp
│               │   ├── qscilexerlua.cpp
│               │   ├── qscilexermakefile.cpp
│               │   ├── qscilexermatlab.cpp
│               │   ├── qscilexeroctave.cpp
│               │   ├── qscilexerpascal.cpp
│               │   ├── qscilexerperl.cpp
│               │   ├── qscilexerpo.cpp
│               │   ├── qscilexerpostscript.cpp
│               │   ├── qscilexerpov.cpp
│               │   ├── qscilexerproperties.cpp
│               │   ├── qscilexerpython.cpp
│               │   ├── qscilexerruby.cpp
│               │   ├── qscilexerspice.cpp
│               │   ├── qscilexersql.cpp
│               │   ├── qscilexertcl.cpp
│               │   ├── qscilexertex.cpp
│               │   ├── qscilexerverilog.cpp
│               │   ├── qscilexervhdl.cpp
│               │   ├── qscilexerxml.cpp
│               │   ├── qscilexeryaml.cpp
│               │   ├── qscimacro.cpp
│               │   ├── qscintilla.pro
│               │   ├── qscintilla_cs.qm
│               │   ├── qscintilla_cs.ts
│               │   ├── qscintilla_de.qm
│               │   ├── qscintilla_de.ts
│               │   ├── qscintilla_es.qm
│               │   ├── qscintilla_es.ts
│               │   ├── qscintilla_fr.qm
│               │   ├── qscintilla_fr.ts
│               │   ├── qscintilla_pt_br.qm
│               │   ├── qscintilla_pt_br.ts
│               │   ├── qsciprinter.cpp
│               │   ├── qsciscintilla.cpp
│               │   ├── qsciscintillabase.cpp
│               │   ├── qscistyle.cpp
│               │   └── qscistyledtext.cpp
│               ├── Qt4Qt5/
│               │   ├── InputMethod.cpp
│               │   ├── ListBoxQt.cpp
│               │   ├── ListBoxQt.h
│               │   ├── MacPasteboardMime.cpp
│               │   ├── PlatQt.cpp
│               │   ├── Qsci/
│               │   │   ├── qsciabstractapis.h
│               │   │   ├── qsciapis.h
│               │   │   ├── qscicommand.h
│               │   │   ├── qscicommandset.h
│               │   │   ├── qscidocument.h
│               │   │   ├── qsciglobal.h
│               │   │   ├── qscilexer.h
│               │   │   ├── qscilexeravs.h
│               │   │   ├── qscilexerbash.h
│               │   │   ├── qscilexerbatch.h
│               │   │   ├── qscilexercmake.h
│               │   │   ├── qscilexercoffeescript.h
│               │   │   ├── qscilexercpp.h
│               │   │   ├── qscilexercsharp.h
│               │   │   ├── qscilexercss.h
│               │   │   ├── qscilexercustom.h
│               │   │   ├── qscilexerd.h
│               │   │   ├── qscilexerdiff.h
│               │   │   ├── qscilexerfortran.h
│               │   │   ├── qscilexerfortran77.h
│               │   │   ├── qscilexerhtml.h
│               │   │   ├── qscilexeridl.h
│               │   │   ├── qscilexerjava.h
│               │   │   ├── qscilexerjavascript.h
│               │   │   ├── qscilexerlua.h
│               │   │   ├── qscilexermakefile.h
│               │   │   ├── qscilexermatlab.h
│               │   │   ├── qscilexeroctave.h
│               │   │   ├── qscilexerpascal.h
│               │   │   ├── qscilexerperl.h
│               │   │   ├── qscilexerpo.h
│               │   │   ├── qscilexerpostscript.h
│               │   │   ├── qscilexerpov.h
│               │   │   ├── qscilexerproperties.h
│               │   │   ├── qscilexerpython.h
│               │   │   ├── qscilexerruby.h
│               │   │   ├── qscilexerspice.h
│               │   │   ├── qscilexersql.h
│               │   │   ├── qscilexertcl.h
│               │   │   ├── qscilexertex.h
│               │   │   ├── qscilexerverilog.h
│               │   │   ├── qscilexervhdl.h
│               │   │   ├── qscilexerxml.h
│               │   │   ├── qscilexeryaml.h
│               │   │   ├── qscimacro.h
│               │   │   ├── qsciprinter.h
│               │   │   ├── qsciscintilla.h
│               │   │   ├── qsciscintillabase.h
│               │   │   ├── qscistyle.h
│               │   │   └── qscistyledtext.h
│               │   ├── SciClasses.cpp
│               │   ├── SciClasses.h
│               │   ├── SciNamespace.h
│               │   ├── ScintillaQt.cpp
│               │   ├── ScintillaQt.h
│               │   ├── features/
│               │   │   └── qscintilla2.prf
│               │   ├── qsciabstractapis.cpp
│               │   ├── qsciapis.cpp
│               │   ├── qscicommand.cpp
│               │   ├── qscicommandset.cpp
│               │   ├── qscidocument.cpp
│               │   ├── qscilexer.cpp
│               │   ├── qscilexeravs.cpp
│               │   ├── qscilexerbash.cpp
│               │   ├── qscilexerbatch.cpp
│               │   ├── qscilexercmake.cpp
│               │   ├── qscilexercoffeescript.cpp
│               │   ├── qscilexercpp.cpp
│               │   ├── qscilexercsharp.cpp
│               │   ├── qscilexercss.cpp
│               │   ├── qscilexercustom.cpp
│               │   ├── qscilexerd.cpp
│               │   ├── qscilexerdiff.cpp
│               │   ├── qscilexerfortran.cpp
│               │   ├── qscilexerfortran77.cpp
│               │   ├── qscilexerhtml.cpp
│               │   ├── qscilexeridl.cpp
│               │   ├── qscilexerjava.cpp
│               │   ├── qscilexerjavascript.cpp
│               │   ├── qscilexerlua.cpp
│               │   ├── qscilexermakefile.cpp
│               │   ├── qscilexermatlab.cpp
│               │   ├── qscilexeroctave.cpp
│               │   ├── qscilexerpascal.cpp
│               │   ├── qscilexerperl.cpp
│               │   ├── qscilexerpo.cpp
│               │   ├── qscilexerpostscript.cpp
│               │   ├── qscilexerpov.cpp
│               │   ├── qscilexerproperties.cpp
│               │   ├── qscilexerpython.cpp
│               │   ├── qscilexerruby.cpp
│               │   ├── qscilexerspice.cpp
│               │   ├── qscilexersql.cpp
│               │   ├── qscilexertcl.cpp
│               │   ├── qscilexertex.cpp
│               │   ├── qscilexerverilog.cpp
│               │   ├── qscilexervhdl.cpp
│               │   ├── qscilexerxml.cpp
│               │   ├── qscilexeryaml.cpp
│               │   ├── qscimacro.cpp
│               │   ├── qscintilla.pro
│               │   ├── qscintilla_cs.qm
│               │   ├── qscintilla_cs.ts
│               │   ├── qscintilla_de.qm
│               │   ├── qscintilla_de.ts
│               │   ├── qscintilla_es.qm
│               │   ├── qscintilla_es.ts
│               │   ├── qscintilla_fr.qm
│               │   ├── qscintilla_fr.ts
│               │   ├── qscintilla_pt_br.qm
│               │   ├── qscintilla_pt_br.ts
│               │   ├── qsciprinter.cpp
│               │   ├── qsciscintilla.cpp
│               │   ├── qsciscintillabase.cpp
│               │   ├── qscistyle.cpp
│               │   └── qscistyledtext.cpp
│               ├── README
│               ├── designer-Qt3/
│               │   ├── designer.pro
│               │   └── qscintillaplugin.cpp
│               ├── designer-Qt4Qt5/
│               │   ├── designer.pro
│               │   ├── qscintillaplugin.cpp
│               │   └── qscintillaplugin.h
│               ├── example-Qt3/
│               │   ├── application.cpp
│               │   ├── application.h
│               │   ├── application.pro
│               │   ├── fileopen.xpm
│               │   ├── fileprint.xpm
│               │   ├── filesave.xpm
│               │   └── main.cpp
│               ├── example-Qt4Qt5/
│               │   ├── application.pro
│               │   ├── application.qrc
│               │   ├── main.cpp
│               │   ├── mainwindow.cpp
│               │   └── mainwindow.h
│               ├── include/
│               │   ├── ILexer.h
│               │   ├── License.txt
│               │   ├── Platform.h
│               │   ├── SciLexer.h
│               │   ├── Scintilla.h
│               │   ├── Scintilla.iface
│               │   └── ScintillaWidget.h
│               ├── lexers/
│               │   ├── LexA68k.cpp
│               │   ├── LexAPDL.cpp
│               │   ├── LexASY.cpp
│               │   ├── LexAU3.cpp
│               │   ├── LexAVE.cpp
│               │   ├── LexAVS.cpp
│               │   ├── LexAbaqus.cpp
│               │   ├── LexAda.cpp
│               │   ├── LexAsm.cpp
│               │   ├── LexAsn1.cpp
│               │   ├── LexBaan.cpp
│               │   ├── LexBash.cpp
│               │   ├── LexBasic.cpp
│               │   ├── LexBullant.cpp
│               │   ├── LexCLW.cpp
│               │   ├── LexCOBOL.cpp
│               │   ├── LexCPP.cpp
│               │   ├── LexCSS.cpp
│               │   ├── LexCaml.cpp
│               │   ├── LexCmake.cpp
│               │   ├── LexCoffeeScript.cpp
│               │   ├── LexConf.cpp
│               │   ├── LexCrontab.cpp
│               │   ├── LexCsound.cpp
│               │   ├── LexD.cpp
│               │   ├── LexECL.cpp
│               │   ├── LexEScript.cpp
│               │   ├── LexEiffel.cpp
│               │   ├── LexErlang.cpp
│               │   ├── LexFlagship.cpp
│               │   ├── LexForth.cpp
│               │   ├── LexFortran.cpp
│               │   ├── LexGAP.cpp
│               │   ├── LexGui4Cli.cpp
│               │   ├── LexHTML.cpp
│               │   ├── LexHaskell.cpp
│               │   ├── LexInno.cpp
│               │   ├── LexKVIrc.cpp
│               │   ├── LexKix.cpp
│               │   ├── LexLaTeX.cpp
│               │   ├── LexLisp.cpp
│               │   ├── LexLout.cpp
│               │   ├── LexLua.cpp
│               │   ├── LexMMIXAL.cpp
│               │   ├── LexMPT.cpp
│               │   ├── LexMSSQL.cpp
│               │   ├── LexMagik.cpp
│               │   ├── LexMarkdown.cpp
│               │   ├── LexMatlab.cpp
│               │   ├── LexMetapost.cpp
│               │   ├── LexModula.cpp
│               │   ├── LexMySQL.cpp
│               │   ├── LexNimrod.cpp
│               │   ├── LexNsis.cpp
│               │   ├── LexOScript.cpp
│               │   ├── LexOpal.cpp
│               │   ├── LexOthers.cpp
│               │   ├── LexPB.cpp
│               │   ├── LexPLM.cpp
│               │   ├── LexPO.cpp
│               │   ├── LexPOV.cpp
│               │   ├── LexPS.cpp
│               │   ├── LexPascal.cpp
│               │   ├── LexPerl.cpp
│               │   ├── LexPowerPro.cpp
│               │   ├── LexPowerShell.cpp
│               │   ├── LexProgress.cpp
│               │   ├── LexPython.cpp
│               │   ├── LexR.cpp
│               │   ├── LexRebol.cpp
│               │   ├── LexRuby.cpp
│               │   ├── LexRust.cpp
│               │   ├── LexSML.cpp
│               │   ├── LexSQL.cpp
│               │   ├── LexSTTXT.cpp
│               │   ├── LexScriptol.cpp
│               │   ├── LexSmalltalk.cpp
│               │   ├── LexSorcus.cpp
│               │   ├── LexSpecman.cpp
│               │   ├── LexSpice.cpp
│               │   ├── LexTACL.cpp
│               │   ├── LexTADS3.cpp
│               │   ├── LexTAL.cpp
│               │   ├── LexTCL.cpp
│               │   ├── LexTCMD.cpp
│               │   ├── LexTeX.cpp
│               │   ├── LexTxt2tags.cpp
│               │   ├── LexVB.cpp
│               │   ├── LexVHDL.cpp
│               │   ├── LexVerilog.cpp
│               │   ├── LexVisualProlog.cpp
│               │   ├── LexYAML.cpp
│               │   └── License.txt
│               ├── lexlib/
│               │   ├── Accessor.cpp
│               │   ├── Accessor.h
│               │   ├── CharacterCategory.cpp
│               │   ├── CharacterCategory.h
│               │   ├── CharacterSet.cpp
│               │   ├── CharacterSet.h
│               │   ├── LexAccessor.h
│               │   ├── LexerBase.cpp
│               │   ├── LexerBase.h
│               │   ├── LexerModule.cpp
│               │   ├── LexerModule.h
│               │   ├── LexerNoExceptions.cpp
│               │   ├── LexerNoExceptions.h
│               │   ├── LexerSimple.cpp
│               │   ├── LexerSimple.h
│               │   ├── License.txt
│               │   ├── OptionSet.h
│               │   ├── PropSetSimple.cpp
│               │   ├── PropSetSimple.h
│               │   ├── SparseState.h
│               │   ├── StyleContext.cpp
│               │   ├── StyleContext.h
│               │   ├── SubStyles.h
│               │   ├── WordList.cpp
│               │   └── WordList.h
│               ├── qsci/
│               │   └── api/
│               │       └── python/
│               │           ├── Python-2.4.api
│               │           ├── Python-2.5.api
│               │           ├── Python-2.6.api
│               │           ├── Python-2.7.api
│               │           ├── Python-3.1.api
│               │           ├── Python-3.2.api
│               │           ├── Python-3.3.api
│               │           └── Python-3.4.api
│               └── src/
│                   ├── AutoComplete.cpp
│                   ├── AutoComplete.h
│                   ├── CallTip.cpp
│                   ├── CallTip.h
│                   ├── CaseConvert.cpp
│                   ├── CaseConvert.h
│                   ├── CaseFolder.cpp
│                   ├── CaseFolder.h
│                   ├── Catalogue.cpp
│                   ├── Catalogue.h
│                   ├── CellBuffer.cpp
│                   ├── CellBuffer.h
│                   ├── CharClassify.cpp
│                   ├── CharClassify.h
│                   ├── ContractionState.cpp
│                   ├── ContractionState.h
│                   ├── Decoration.cpp
│                   ├── Decoration.h
│                   ├── Document.cpp
│                   ├── Document.h
│                   ├── Editor.cpp
│                   ├── Editor.h
│                   ├── ExternalLexer.cpp
│                   ├── ExternalLexer.h
│                   ├── FontQuality.h
│                   ├── Indicator.cpp
│                   ├── Indicator.h
│                   ├── KeyMap.cpp
│                   ├── KeyMap.h
│                   ├── License.txt
│                   ├── LineMarker.cpp
│                   ├── LineMarker.h
│                   ├── Partitioning.h
│                   ├── PerLine.cpp
│                   ├── PerLine.h
│                   ├── PositionCache.cpp
│                   ├── PositionCache.h
│                   ├── RESearch.cpp
│                   ├── RESearch.h
│                   ├── RunStyles.cpp
│                   ├── RunStyles.h
│                   ├── SciTE.properties
│                   ├── ScintillaBase.cpp
│                   ├── ScintillaBase.h
│                   ├── Selection.cpp
│                   ├── Selection.h
│                   ├── SplitVector.h
│                   ├── Style.cpp
│                   ├── Style.h
│                   ├── UniConversion.cpp
│                   ├── UniConversion.h
│                   ├── UnicodeFromUTF8.h
│                   ├── ViewStyle.cpp
│                   ├── ViewStyle.h
│                   ├── XPM.cpp
│                   └── XPM.h
└── static_analysis/
    ├── clang-tidy_debug_Aug2020.txt
    ├── clang-tidy_debug_Aug2020_robo.txt
    ├── cppcheck_output_Apr2019.txt
    ├── scan-build_debug_Aug2020.txt
    ├── scan-build_debug_Aug2020_robo.txt
    ├── vs_run-code-analysis_all_rules_rls.txt
    ├── vs_run-code-analysis_nat-rec_dbg.txt
    ├── vs_run-code-analysis_nat-rec_rls-reduced.txt
    ├── vs_run-code-analysis_nat-rec_rls.txt
    └── vs_run-code-analysis_no-rule_rls.txt

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
*  text=auto

# Explicitly declaring text files we want to always be normalized and converted 
# to native line endings on checkout.

*.cs     text 
*.java   text 
*.html   text 
*.css    text
*.js     text
*.sql    text
*.cpp    text
*.h      text
*.rm     text
*.pro    text
*.pri    text
*.txt    text 
*.md     text

# Declare files that will always have CRLF line endings (Windows) on checkout.

*.bat    text eol=crlf

# Declare files that will always have LF line endings (Unix) on checkout.

*.sh     text eol=lf

#
# Binary files
# 

*.png   binary
*.so    binary
*.jpg   binary
*.gif   binary
*.dll   binary
*.exe   binary
*.doc   binary
*.docx  binary
*.lib   binary

================================================
FILE: .gitignore
================================================
# Robomongo-specific

CMakeLists.txt.user*

.sconsign.dblite
.sconf_temp
.scons

*.kate-swp
*.swp

target/
target-debug/
target-release/
libs/

/build
/build2

/src/robomongo/robomongo.pro.user.1.3

.idea/

# Created by http://www.gitignore.io

### C++ ###
# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Compiled Dynamic libraries
*.so
*.so.*
*.dylib
*.dll

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app

### Linux ###
*~

# KDE directory preferences
.directory


### OSX ###
.DS_Store
.AppleDouble
.LSOverride

### Qt ###
# C++ objects and libs

*.slo
*.lo
*.o
*.a
*.la
*.lai
*.so
*.dll
*.dylib

# Qt-es

/.qmake.cache
/.qmake.stash
*.pro.user
*.pro.user.*
*.moc

# QtCreator

*.autosave
*.creator.user


### Windows ###
# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/
.vscode/settings.json
.vs/


================================================
FILE: .travis.yml
================================================
os:
  - linux
  # - osx
  # - windows

dist: xenial
sudo: require
language: cpp

script:
  - bash bin/clean
  - bash bin/configure 
  # - bash bin/build
  # - bash bin/run-unit-tests 

# end of file


================================================
FILE: CHANGELOG
================================================

Download latest version: 
https://robomongo.org/download

Robo 3T 1.4.4 (Aug/2021)
  New Features:
  - Support for Standard Connection String Format (Mongo URI)
  Fixes:
  - Fix Welcome Tab not loading the new content issue by disable/bypass HTTP cache

Robo 3T 1.4.3 (Jan/2021)
  New Features:
  - macOS Big Sur support 
  - New Welcome Tab - embeds Chromium using QtWebEngine (Windows, macOS only)
  - Database explorer section has smaller default width (#1556)
  - Remember size of database explorer section
  - Import keys from old version: autoExpand, lineNumbers, debugMode and shellTimeoutSec

  Fixes:
  - Disable unsupported SSH tab for replica set connections (#1285 #1340)
  - Fix crash when new shell tab executed in server unreachable case
  - Fix crash when paging used in tabbed result window (#1661)
  - Fix broken F2, F3, F4 shortcuts for tabbed result view
  - One time re-order limit per new connections window to prevent data loss (macOS, #1790)
  - Fix previously broken IPv6 support from command line: robo3t --ipv6

Robo 3T 1.4.2 (Oct/2020)
  Fixes:
  - Fix broken paging in DocumentDB (#1694)

Robo 3T 1.4.1 (Sep/2020)
  Fixes:
  - Force light mode on macOS (#1761, #1768, #1771)  
  - Fix broken macOS native theme/look (#1766)
  - Fix broken Windows native theme/look  

Robo 3T 1.4.0 (Aug/2020)
blog.robomongo.org/robo-3t-1-4/

  New Features:
  - Mongo shell 4.2 upgrade
  - Support for Ubuntu 20.04 and macOS 10.15 (Catalina)  
  - SSH: ECDSA and Ed25519 keys support on Windows & macOS (#1719, #1530, #1590)
  - Manually specify visible databases (#1696, #1368, #389)

  Improvements:
  - Qt Upgrade (v5.12.8 - Apr/2020, Windows & macOS only)
  - OpenSSL upgrade (v1.1.1f - Mar/2020, Windows & macOS only)
  - libssh2 upgrade (v1.9.0 - Jun/2019, Windows & macOS only)

  Fixes:
  - Authentication database option isn't used properly (#1696)
  - Add/Edit index ops fixed (re-written) (#1692) 
  - Crash when expanding admin users (#1728) 
  - Unable to run query after shell timeout reached (#1529)

Robo 3T 1.3.1 (Apr, 2019)
http://blog.robomongo.org/robo-3t-1-3

  New Features:
  - Biggest change in this version is Mongo Shell version upgrade from 3.4 to 4.0.5.
  - Support for importing from DNS SRV based MongoDB connection strings
  - Query results windows now supports tabbed output #1591 #1403
  - Adding support for SCRAM-SHA-256 auth mechanism #1569
  - Support for Ubuntu 18.04 and Mac 10.14.
  - Support for creating version 4 UUID #1554

  Improvements:
    - Encrypted passwords are used in config. file instead of clear text passwords 
    - Showing much better error reason string from Mongo drivers for connection failures

  Fixes:
    - Broken create/edit/view user features fixed and updated #638 #1041
    - Attempt to fix #1547: Crash when right click on existing results plus a new long running query
    - Fix for application crash when adding index with invalid JSON
    - 'Repair Database' in Robo3T needs a confirm dialog box #1568
    - Robo 3T the input space causes connection failure #1551
    - Crash when loading results + right click #1547
    - Attempt to fix major connection problems seen with the second edit/add/remove document operation after MongoDB 4.0 upgrade #1603
    - Attempt to fix #1581: For CRUD ops showing progress bar and disabling context menu while waiting for edit op to finish
    - Fixing UI issue where Functions folder freezing with "Functions..." when fails to refresh
    - Fix for #1529: Pagination does not work when the aggregation queries have dotted fields

Robo 3T 1.3.0 Beta (16 Feb, 2019)
Details: https://github.com/Studio3T/robomongo/releases/tag/v1.3.0-beta

Robo 3T 1.2.1 (19 Feb, 2018)   
http://blog.robomongo.org/robo-3t-1-2
    
  Fixes:
    - Aggregate query results are not pagaeble 
    - Big double numbers are showing incorrectly #1447
    - Editing a document from a projection causes data loss (override) (#881)
    - Error: Resources temporarily unavailable. Error when starting up SSH session: -8 #1426
    - robo3t 1.1 failed to start on Ubuntu 17.04 #1385
    - Robo 3T is not opening on MacOS High Sierra (#1412)
    - Cannot load list of indexes #1454
    - Robo 3T is not buildable on latest MacOS High Sierra
	
  Improvements 
    - Qt version upgraded from Qt 5.7.0 to Qt 5.9.3
    - Auto switch to HTTP from HTTPS if the program crashes due to HTTPS related operations 
    - Improvements for Robo 3T is crashing constantly on High Sierra #1412
    - PR: Improved query time formatting (#1358) #1455
            
Robo 3T 1.2.0 Beta (18 Dec, 2017)   
https://github.com/Studio3T/robomongo/releases/tag/v1.2.0-beta
    
  Improvements & Fixes:
    - Qt version upgraded from Qt 5.7.0 to Qt 5.9.3
    - Fix for "Cannot load list of indexes #1454"
    - Improvements for Robo 3T is crashing constantly on High Sierra #1412
    - PR: Improved query time formatting (#1358) #1455
    - Fix for "Robo 3T is not buildable on latest MacOS vesion High Sierra"
    - Fix attempt for "Error: Resources temporarily unavailable. Error when starting up SSH session: -8 #1426"
    - Fix for "robo3t 1.1 failed to start on Ubuntu 17.04 #1385"      
      
Robo 3T 1.1 (13 June, 2017)
http://blog.robomongo.org/robomongo-1-1/

  New Features:
    - MongoDB 3.4 support
    - New NumberDecimal (Decimal128) data type support
    - ECMAScript 2015 aka ES6 Support (Modernized JavaScript Implementation)
    - Re-naming from Robomongo to Robo 3T

  Improvements & Fixes:
    - Stability Improvements: Fix included to prevent a crash on MACOS Sierra
    - Shell timeout is configurable on UI now 'Options->Change Shell Timeout'
    - Fix for Robomongo Shell Timeout Issue (silently, prematurely finishing long lasting scripts) 
    - Security Improvements: OpenSSL version upgrade to openssl-1.0.1u (22-Sep-2016)
    - Tool chain upgrades: Modern C++14 features are enabled and usable for developers
              
Robomongo 1.1 Beta (12 May, 2017)   
https://github.com/Studio3T/robomongo/releases/tag/v1.1.0-beta
    
  New Features:
    - MongoDB 3.4 Support 
    - New NumberDecimal (Decimal128) data type support
    - ECMAScript 2015 (Modernized JavaScript Implementation aka ES6) Support  
      
  Improvements:
    - Security Improvements: OpenSSL version upgrade to openssl-1.0.1u (22-Sep-2016)
    - Tool Chain Improvements: Modern C++14 features are enabled 

Robomongo 1.0 (21 Apr, 2017)
http://blog.robomongo.org/robomongo-1-0
    
  New Features:
    - Update Notifications Bar
    - Welcome Tab
    - Welcome Wizard

  Improvements:
    - Replica set name configurable on UI
    - Configuration file system location change
    - "About Robomongo" dialog changes
  
  Fixes:
    - Fix to avoid the same set name problem (https://github.com/Studio3T/robomongo/issues/1302)
    - Timestamp value is represented incorrectly (https://github.com/Studio3T/robomongo/issues/1159)
    - Local Timezone shows wrong date (https://github.com/Studio3T/robomongo/issues/501)
    - Time zone shown as "000:00" when UTC +00:00 is used as local timezone(https://github.com/Studio3T/robomongo/issues/1309)
  
Robomongo 1.0-RC1 (1 Feb, 2017)
http://blog.robomongo.org/robomongo-1-rc1/
    
  New Features:
    - Replica set support.
    - New 'Attributes' column in connections list window showing connection properties such as 'Replica Set', 'SSL' and 'SSH'.  
    - New operation logging for almost all operations.

  Improvements:
    - Improved error handling (no double error windows) for all fail and success conditions for the following operations:
      . Create, Drop Database
      . Create, Edit User
      . Create, Drop, Duplicate, Rename Collection
      . Insert Document
      . Remove document, Delete document, Remove all documents (triggered both from explorer and from result widget)
      . Refresh Users
      . Refresh Functions
      . Refresh Collections
      . Connection establish & refresh server fail and success cases.
    - Windows size is saved and restored for Edit, View and Insert Document dialogs.
    - Connections are automatically imported from the latest Robomongo version.
    - Better error reporting/handling and logging have been added for the operations below:
      . Create, Drop Function
      . Drop User
    - More informative and adjusted log level prefix strings haven added for log window. (Error, Warn, Info etc..).
    - After a new connection is created, now the focus goes to the newly created connection (end of list) instead of the 
      beginning of connections list. And when Robomongo is opened, the focus goes to the end of the connection list instead 
      of beginning. 
    - Error messages added and error handling for 'remove document', 'remove all documents' operations triggered explorer 
      and single or multi 'delete document' from results window have been re-implemented and improved.
    - Relevant errors are shown for the following cases now:        
      . Drop attempt of non-existing collection.
      . Duplicating a collection with a collection name which already exists finishes silently.
  
  Fixes:
    - Fix for the problem where the connections list comes empty if the Robomongo config file or it's directory do not exist.
    - Fix for the problem where 'in-progress bar' widget was not centered on main window for "Update Documents/Remove Documents" 
      operations. https://github.com/paralect/robomongo/issues/1256
    - Fix for two problems where the operations 'insert or update documents' in one tab was causing auto reloading of other 
      unrelated tabs and also multiple error windows to popup. https://github.com/paralect/robomongo/issues/1236
    - Fix for the problem where the operations 'remove document', 'remove all documents' triggered explorer and single or 
      multi 'delete document' from results window were causing auto reloading of other unrelated tabs.
        
      
Robomongo 0.9:
  Major Features: 
    - Support for MongoDB 3.x and WiredTiger engine. Robomongo now embeds MongoDB 3.2 shell. 
      (Ability to use the latest shell functionality)
    - SSH tunnel support for connections
    - SSL support 
    - MongoDB Atlas (Cloud MongoDB) support
    - Both MONGODB-CR and SCRAM-SHA-1 authentication mechanisms are supported. 
    - Allow direct connections to Replica Set members and support IPv6 protocol. 
    - Loading of huge list of collections is now faster.
    - Create Collection dialog is now expandable to support all advanced options.
      (Supporting all major mongoDB versions 3.2, 3.0, 2.6 and all storage engine types (WiredTiger 
      and MMAPV1) is added.) 
    - Windows High DPI support.
    - Full size editor with dockable output window.
    
  Fixed:
    - Incorrect representation of floating-point numbers (fixed since RC3). This bug was a reason of a big number of issues:
      #910, #748, #697, #699, #760, #815, #870, #892, 
      #894, #905, #945, #974, #978, #990, #831, #842
    - SSH connection failure to servers on Ubuntu and OS X with the following error:
      "Resource temporarily unavailable. Error when starting up SSH session: -8"  (#1090)     
      
  What's new in 0.9.0 Final (30 Sep, 2016)
  http://blog.robomongo.org/robomongo-0-9-0-final/
  
    New Features:
      - Full size editor with dockable output window.
      - New JSON object context menu items: "Copy Name" and "Copy Path" are added.
      - New database context menu items: "Current Operations" and "Kill Operation" are added.
      - Minimize to Tray Icon for Windows.
        
    Other Changes
      - Cloud platforms Compose, mLab and Amazon EC2 were tested and added as supported platforms.
      - Maximize/Restore result button behavior and icon have been improved.
      - For better code quality and code reviews, Robomongo Code Quality and Robomongo Code Review pages have been created.
        https://github.com/paralect/robomongo/wiki/Robomongo-Code-Review
        https://github.com/paralect/robomongo/wiki/Robomongo-Code-Quality
 
  What's new in RC10 (Aug 8, 2016)
  http://blog.robomongo.org/robomongo-rc10/
  
    New Features:
      - SSL connections with advanced options are now supported.
      - MongoDB Atlas (Cloud MongoDB) is supported.
      - Cross Platform High DPI enhancements. 
    
    Enhancements:
      - For better security, OpenSSL has been upgraded to OpenSSL 1.0.1p.
      - Qt has been updated from Qt 5.5 to latest Qt 5.7. With this update there are many 
        enhancements including cross platform High DPI support.

  What's new in RC9 (May 30, 2016)
  http://blog.robomongo.org/robomongo-rc9/
  
    New Features:
      - Create Collection dialog with advanced options.
      - New feature has been added to save/restore window sizes. (#1102)
      - Connection settings from previous versions of Robomongo are 
        now automatically imported starting from Robomongo 0.9.0 RC9. (#1086)
      - Support for querying documents by UUIDs is added, both in legacy and new encoding. (#432)
       
    Fixed:
      - SSH connection failure to servers on Ubuntu and OS X with the following error:
        "Resource temporarily unavailable. Error when starting up SSH session: -8"  (#1090)
      - Correct handling of create/drop of databases and collections. (#1083)
    
  What's new in RC8 (April 14, 2016)
  http://blog.robomongo.org/robomongo-rc8/
     
  What's new in RC7 (March 4, 2016)
  http://blog.robomongo.org/robomongo-rc7

  What's new in RC6 (February 13, 2016)
  http://blog.robomongo.org/ipv6-protocol

  What's new in RC5 (February 8, 2016)
  http://blog.robomongo.org/campaign-is-over-robomongo-is-not/

  What's new in RC4 (February 1, 2016)
  http://blog.robomongo.org/robomongo-rc4

  What's new in RC3 (January 29, 2016)
  http://blog.robomongo.org/robomongo-0-9-0-rc3-released

  What's new in RC2 (January 26, 2016)
  http://blog.robomongo.org/robomongo-rc2-for-windows-mac-os-x-and-linux
  
  What's new in RC1 (January 17, 2016)
  http://blog.robomongo.org/robomongo-rc1-with-full-support-for-mongodb-3


0.8.5 / March 10, 2015

  Release 0.8.5 is now deprecated because of a critical bug, that is
  described here: http://blog.robomongo.org/robomongo-0-9-0-rc3-released

  We recommend to use Robomongo 0.9.0 or newer.

  * [Stephen Steneker]
    - OS X build fixes for XCode 5 / libc++ (#524)
    - OS X specific keyboard shortcut tips (#505)
    - View documents fail if collection name is "group" (#414)
    - Problem with slash in collection names (#404)
    - Add shortcut to open JS file (#408)
    - Fullscreen mode not working on OS X (#519)
    - Usability request - add initial curly braces to command bar (#506)
    - TTL index should allow expiry of 0 seconds (#500)
    - Add line numbers to JSON editing windows on OS X (#449)
    - Add user preference to have line numbers displayed by default (#564)
    - Space after document causes validation error (#544)
    - Expand current server as soon as you connect to it (#405)
    - Switching tabs using standard keys on OS X (#87)
    - Cannot make the Edit Document Window smaller (#548)
    - Consistent numbering for tree/table/text view items (#421)
    - Reload Query with keyboard shortcut doesn't work (#551)
    - Rename "Reload" to "Re-execute query" (#447)
    - Add "Copy Timestamp from ObjectId" to context menu for ObjectId fields (#559)
    - Bug: Type of Double changed to Int32 on save document (#622)
    - "Duplicate Query In New Tab": add to Window menu with keyboard shortcut (#631)
    - No errors logged if settings directory cannot be created or settings file cannot be written to (#636)
    - Show execution time for operations that don't return results (#455)
    - Disable broken "Copy Collection to Database" misfeature (#398)
  * [Vladimir Belozyorov]
    - View mode reset to default after no results (#509)
    - Comment / uncomment selected code in the shell (#467)
    - Passphrase and password should be hidden in authentication tab (#433)
    - Cursor initialization - place between curly brackets for default find({}) query (#592)
    - Include full date/time for log entries (#596)
    - Option to disable selected code autoexecution when opening a new tab (#514)
    - Tooltip fixes to match current keyboard shortcuts (#598)
    - Expand/collapse multiple selections (#591)
    - Changes in toolbars visibility are saved in config file (#457)
    - Include connection name under shell tabs (#47)
  * [Sergey Gavruk]
    - SettingsManager typo (#558)
    - Ability to disable autocompletion (#512)
  * [Kanstantsin Kamkou]
    - Increase display width for limit & offset input fields (#458)
  * [volans-]
    - CreateUserDialog.cpp: fixed typo in warning message
  * [Andres Kievsky]
    - Added new app icon in a variety of png and iDraw formats (#693)
  * [Michael Steinacher]
    - Retina text display support (#724)

0.8.4 / November 27, 2013

  Read about updates in this version here:
  http://robomongo.org/whats-new-in/robomongo-0.8.4.html

  RC1:
  
  * SSH support (#117)
  * SSL support (first steps) (#100)
  * Create or edit index problem (#341)
  * Regexp error (with non-latin symbols) (#351)
  * Support for latin characters in edit document console (#347)
  * Robomongo fails to execute shell "comments" if the comment contains a non-latin character! (#334)
  * Crash when add ISODate field (#350)
  * Crash at executing several disconnections in a row (#290)  
  * Deleting multiple documents prompts for each document (#386)
  * Connection context menu appears independently of position of Robomongo instance.
  * Crash at pressing "Ctrl+T" without any connection.  
  
  RC2:
  
  * SSH now works on Mac OS X Mavericks (#401)
  * Fixed crash when parsing date (#356)
  
  Final:
  
  * Selected view mode of result panels now preserved between executions. Implemented by Vladimir Belozyorov (github.com/VBelozyorov) (#402)


0.8.3 / October 1, 2013

  Read about updates in this version here:
  http://robomongo.org/whats-new-in/robomongo-0.8.3.html
  
  * Enable query logging (#108)
  * Inserting multiple documents from UI (#173)
  * Removing multiple documents from UI (#174)
  * Retain current view mode when running search (#93, #79)
  * Left panel collections/functions/users navigation doesn't work when authenticating against the DB (#282)
  * A way to disable Alt + number shortcut (#192)
  * Support mongodb 2.4.x style users (#139)
  * Add "Copy JSON" menu item to context menu (#298)
  * JSON list validation (#246)
  * Crash creating new Database (#291)
  * Incorrect handling of TTL Indexes (#313)
  * Add the document _id in the tree view (#142)
  * BSON Undefined type doesn't rendered to string correctly (#306)
  * Entering incorrect symbols as database name isn't handled properly (#262)
  * Ability to select UI theme
  * We now show number of fields (inside objects) and number of items (inside arrays) in Tree View.
  * Support for Mac OS X 10.6 (#287)
  * Support for Mac OS X 10.9 (#254)

  
0.8.2 / September 13, 2013

  Read about updates in this version here:
  http://robomongo.org/whats-new-in/robomongo-0.8.2.html  


0.8.1 / September 6, 2013

  Read about updates in this version here:
  http://robomongo.org/whats-new-in/robomongo-0.8.1.html

  * Table Mode (in this version, only for the first-level fields in documents) (#72)
  * Paging Widget tweaks (#247, #203, #244, #243)
  * ~/.robomongorc.js file is loaded automatically when new shell is opened 
    (c:\Users\Name\.robomongorc.js for Windows)
  * "Load .mongorc.js" menu item in "Options" top-level now allow to enable/disable loading
    of ~/.mongorc.js file. By default it will not load this file.
  * Batch Size now configurable (in this version only manually via ~/.config/robomongo.json)
  * JSON parser doesn't correctly parse numbers when locale isn't en_EN (#246, #253)
  * "Display Dates In" options doesn't saved/loaded correctly (#261)
  * [Linux] Support for CentOS
  * [Linux] Linux packages now takes 2x less space (10mb instead of 20mb)
  * [Windows] Desktop icon isn't created despite corresponding checkbox was checked at installation. (#260)
  * [Windows] Invalid symbols in installer for Windows if display language of system isn't English (#259)
  
  
0.8.0 / August 23, 2013

  Read about updates in this version here:
  http://robomongo.org/whats-new-in/robomongo-0.8.0.html

  * Ability to save and load files for currently opened shell (#96)
  * MongoDB Index management (#74)
  * Expand all children recursively  (#106)
  * Ability to toggle line numbers (press F11) for any editor in Robomongo  (#112)
  * View Mode settings is persisted now (thanks, Luke Thompson!) (#114)
  * Search capability for any editor in Robomongo - press (Ctrl + F) (#32)
  * Timezone support: UTC or Local (#224)
  * Auto-complete on "Tab" (#95)
  * Fixed incorrect handling of Dates (#111)
  * Fixed incorrect handling of collections with leading underscore (_) symbol (#109)
  * Fixed incorrect rendering of float numbers (#115)
  * Fixed incorrect handling of Int64 numbers (#157)
  * Fixed incorrect parsing of DBRef sub-objects (#113)
  * New build system, based on CMake. Greatly simplified build and package process.
  * Qt updated to 5.1 version.
  * QScintilla updated to 2.7.2 version.


0.7.1 / April 13, 2013

  * Fixed crash when right-clicking on non-primitive elements in Tree View (#85)
  * Alt + Cmd + Arrow for switching tabs on Mac (#82)
  * Several minor bugs fixed (including #82)


0.7.0 / April 4, 2013

  * Support for UUIDs (read more: http://robomongo.org/articles/uuids.html)


0.6.9 / April 3, 2013

  * Password is hidden by default (#65)
  * Fixed incorrect rendering of large values for the db.stats() results (#70)
  * Collection names with invalid (for JS var name) characters now rendered correctly (#71)


0.6.8 / April 1, 2013

  * Support for '~/.mongorc.js'
  * Various Mac OS X UI fixes
  * Fixed crash when pressing Ctrl + W (#60)
  * "Copy Value" context menu item for documents in Tree View


0.6.7 / March 26, 2013

  * Fixed creation of new tabs based on the current one. Before this fix initial 
    database for new tab wasn't identical to the "parent". (#56)
  * Support for collections that starts from digits (#54)
  * [Sergey Gavruk] Duplicate Collection feature (Collection -> Duplicate Collection
  * Collection -> Reindex  will not run immediately, as before
  * Fixed incorrect disposing of tabs resources (connections etc.) (#42)
  * [Stephen Steneker] Fixed KeepAlive invalid commands, when not authorised (#41) 
  * [Sergey Gavruk] Various Mac OS X UI fixes.


0.6.6 / March 23, 2013

  * Fixed possible crash when viewing results in text mode (#34)
  * Fixed possible crash when testing connection (Diagnostic window)
  * Memory leak in explorer's database tree fixed.


0.6.5 / March 17, 2013

  * Fixed "Dropped connection" issue (#28).
  * Windows Installer now be used to destribute Robomongo.


0.6.4 / March 10, 2013

  * Support for JS functions. Create/Edit/Remove/View.
  * Loading indicators (three dots for now) for Server, Collections, Functions and Users.
  * Count indicators for Server (number of databases), Collections, Functions and Users.
  * No need to type "functionName.toString()". You can output source of function 
    by simply typing its name (like in the shell).
  * Support for RegEx, Code and CodeWScope bson elements. But you still cannot edit 
    documents which contains Code or CodeWScope bson elements.
  * About dialog added.  


0.6.3 / March 5, 2013

  * Script execution can be stopped (this works only for JS code in SpiderMonkey VM) (#23)
  * Toolbar buttons shown only if needed (#21, #20)
  * MongoDB Connections window opens when application starts.
  * Some changes in menu items locations (#25, #26)
  * View Mode buttons moved to Options menu.
  * Full Screen and Logs functionality hidden right now (postponed for versions after Robomongo 1.0)
  

0.6.2 / March 4, 2013

  * "Users" folder now shows list of users.
  * User can be added (Database -> Add User)
  * User can be edited (User -> Edit User)
  * User can be removed (User -> Remove Users)
  * Users can be refreshed (Users (folder) -> Refresh Users)
  * List of users can be viewed in the shell (Users (folder) -> View Users)


0.6.1 / March 2, 2013

  * Minor script editor and viewer tweaks
  

0.6.0 / Feb 28, 2013

  * Database can be created from UI (Server -> Create Database)
  * Database can be dropped from UI (Database -> Drop Database)
  * Collection can be created from UI (Database -> Create Collection)
  * Collection can be dropped from UI (Collection -> Drop Collection)
  * Collection can be renamed from UI (Collection -> Rename Collection)
  * All documents can be removed from UI (Collection -> Remove All Documents)
  * Minor tweaks in naming of context menu items.


0.5.7 / Feb 27, 2013

  * Support for Custom View Modes. First custom view implemented for "db.printCollectionStats()" query. You 
    still can view multiple output results, even if one of them presented in custom mode.
  * "Show Log" context menu item for servers in Explorer.


0.5.6 / Feb 26, 2013

  * Support for one-line MongoDB commands ("show dbs", "show collection", "use somedb" etc.). This commands can
    be repearted (this will result in multiple output results) or they can be used together with ordinary JavaScript.
    The only rule: this command should be the only text on the line, starting from the very beginning of the line. 
  * Refresh of databases and collections via "Refresh" context menu item.
  * This version of Robomongo is the first version compiled in release mode. It works much more faster and uses lower 
    amount of memory.
    

0.5.5 / Feb 22, 2013

  * New document can be added in a more user friendly way. There are two ways to do it:
    1) Right-click on collection in Explorer and select "Insert Document"
    2) Right-click at any place of Tree View and select "Insert Document"
  * Better formatting of JSON with correct indention.
  * Support for ISODate(...) factory function in JSON parser and builder. Date in JSON mode now always 
    displayed as ISODate(...), like in the shell. Document Editor accepts dates in two forms:
    as "new Date(<millisecs>)" and "ISODate(<iso_8601_date_string>)" (this behaviour identical to MongoDB shell behaviour)
  * Document editor implemented. Right-click on document in Tree View and select "Edit".
  * Document viwer implemented. Right-click on document in Tree View and select "View".
  * You can delete selected document in Tree View. (Right-click and select "Delete")
  * Validation of JSON in Document Editor/Viewer with error report, highlighting of errors and 
    cursor positioning just where error is.
  * Fixed problem with "signed" dates (dates before Unix Epoch) (#5)
  * Fixed problem with UTF-8 (#17)
  * Fixed problem with loading indicator in Explorer (#18)


0.5.2 / Jan 26, 2013
  
  In this version autocompletion in Robomongo becomes mostly usable.

  * AutoCompletion box now placed just near text you typed (in correct line and column)
  * AutoCompletion now works in the middle of the text (not only at the end of line, as before)
  * Ctrl + Space will trigger autocompletion for symbols under cursor. 
  * If you select function in autocompletion box, their open parenthesis will overwrite existing in the text, if such available.


0.5.1 / Jan 24, 2013

  * Several autocompletion tweaks.


0.5.0 / Jan 24, 2013

  * AutoCompletion. First version.
  * Progress indicator for shells.
  * Shell result panels now have equal size, if this is possible.
  * Code cleanuped a bit.


0.4.6 / Jan 11, 2013

  * Tooltip for collections with count and size.


0.4.5 / Jan 8, 2013

  * WARNING: configuration file schema changed. Some properties will be 
    empty in Connection Settings Dialog. Please fill them again.

  * Connection test (diagnostic) implemented.
  * Indicators in the shell: current server, database and collection (if available)
    This indicators are "real" - they respect your actual query.
  * Execution time measurement. Displayed for each individual output result.
  * Paging for each output result with respect to filtering, ordering, fields, 
    limit, skip etc. of actual text query (pilot version).
  * Connection cloning support in Connections Dialog.  
  * Databases and collections now displayed in sorted order.
  * Batch size extended to 50 documents.
  * New shape of Shells.  
  * New shape of Connection Settings Dialog
  * New shape of Connections Dialog.  


0.4.0 / Dec 26, 2012

  * No more "type 'it' for more results" when we have more than 20 objects in collection.
  * Two global modes added - text and tree modes. Switch between them using F3 and F4.
  * Two local modes added - text and tree modes. Switch between them using small 
    icons on Output panels for each resultset.
  * Improved performance of json creation (from list of documents). 
  * Tooltips for tool buttons added.
  * Maximization of output panel implemented (via small icon at the top right of output panel) 
    Click second time to restore back.
  * Fix for not working Ctrl-O key shortcut (that opens Connections menu).
  

0.3.5 / Dec 25, 2012

  * Context menu for server, database and collection.
  * Tab management (Ctrl+Tab, Ctrl+Shift+Tab, Ctrl+T, Ctrl+F4)
  * Context menu for tab
  * Submenu for Connect button with connections.
  * Hotkeys for first 9 connections (Alt+1, ..., Alt+9)
  * Connections reordering via drag'n'drop in Connections dialog.
  * Correct focus placement when opening new connection and switching tabs.
  * Bonus: F12 - opens connections menu from any place.
  * Memory leaks fix.


================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.8.0)
project(Robomongo)

# Where to look first for CMake modules, before "${CMAKE_ROOT}/Modules" is checked
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")

# Project version
set(PROJECT_VERSION_MAJOR "1")
set(PROJECT_VERSION_MINOR "4")
set(PROJECT_VERSION_PATCH "4")
set(PROJECT_VERSION_BUILD "")
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${PROJECT_VERSION_BUILD}")

# Enable C++17 features 
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Modules
include(RobomongoPrintUtils)
include(RobomongoCMakeDefaults)
include(RobomongoDefaults)
include(RobomongoCommon)
include(RobomongoTrashSymbols)
include(RobomongoTargetArch)
include(RobomongoInstallQt)
include(RobomongoPackage)

# Search for dependencies
find_package(Threading REQUIRED)    # Wrapper arround CMake "Threads" module
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5PrintSupport REQUIRED)
find_package(Qt5Network REQUIRED)
find_package(Qt5Xml REQUIRED)
if(NOT SYSTEM_LINUX)
    find_package(Qt5WebEngineWidgets REQUIRED)
endif()
find_package(MongoDB REQUIRED)
find_package(OpenSSL REQUIRED)

if (SYSTEM_MACOSX)
    set(CMAKE_OSX_DEPLOYMENT_TARGET 10.14)
    find_package(Qt5MacExtras REQUIRED)
endif()

# Projects
set(LIBSSH2_VERSION 1.9.0)
if(SYSTEM_LINUX)
    set(LIBSSH2_VERSION 1.7.0)
endif()
set(LIBSSH2_DIR src/third-party/libssh2-${LIBSSH2_VERSION})
set(QJSON_VERSION 0.8.1)
set(QJSON_DIR src/third-party/qjson-${QJSON_VERSION})
set(QSCINTILLA_VERSION 2.8.4)
set(QSCINTILLA_DIR src/third-party/qscintilla-${QSCINTILLA_VERSION})
set(ESPRIMA_VERSION 2.7.3)
set(ESPRIMA_DIR src/third-party/esprima-${ESPRIMA_VERSION})
# todo: Use equivalent vars from googletest cmake files. Currently they are somehow not working.
set(GOOGLE_TEST_VERSION 1.8.1)
set(GOOGLE_TEST_DIR src/third-party/googletest-${GOOGLE_TEST_VERSION})
add_subdirectory(${LIBSSH2_DIR})
add_subdirectory(src/robomongo/ssh)
add_subdirectory(${QJSON_DIR})
add_subdirectory(${QSCINTILLA_DIR})
add_subdirectory(${GOOGLE_TEST_DIR})
add_subdirectory(src/robomongo)
add_subdirectory(src/robomongo-unit-tests)

# Show configuration summary
include(RobomongoConfigurationSummary)


================================================
FILE: COPYRIGHT
================================================
Robo 3T, shell-centric cross-platform MongoDB management tool.

Copyright 2014-2017 3T Software Labs Ltd.

The Robo 3T is released under the terms of the GNU General Public
License, version 3.

The Robo 3T Project includes files written by third parties
and used with permission or subject to their respective license
agreements.



================================================
FILE: DESCRIPTION
================================================
Robo 3T is a shell-centric cross-platform open source MongoDB management
tool (i.e. Admin GUI). Robomongo embeds the same JavaScript engine that
powers MongoDB's mongo shell.


================================================
FILE: LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    <program>  Copyright (C) <year>  <name of author>
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.


================================================
FILE: README.md
================================================
## Important

If you are using Studio 3T, please file any feedback on the [Studio 3T Feedback](https://studio3t.com/feedback/) page. If you are using Studio 3T Free, there is the [3T Community](https://community.studio3t.com/) for discussions with a [dedicated Free section](https://community.studio3t.com/c/studio-3t-free/13). Studio 3T does not monitor this repository for Studio 3T issues.

# End of Robo 3T Development

Robo 3T is no longer being developed by Studio 3T. Studio 3T recommends users looking for a MongoDB GUI client try [Studio 3T Free](https://studio3t.com/free), a free-forever edition of the Studio 3T tools.

Read more about the changes on the [Robo 3T Blog](https://blog.robomongo.org/studio3t-free/).

The last release of Robo 3T is version 1.4.4, downloadable from the following links: 

* [Robo 3T Windows .zip](https://download.studio3t.com/robomongo/windows/robo3t-1.4.4-windows-x86_64-e6ac9ec5.zip)

* [Robo 3T Windows .exe](https://download.studio3t.com/robomongo/windows/robo3t-1.4.4-windows-x86_64-e6ac9ec5.exe)

* [Robo 3T Mac](https://download.studio3t.com/robomongo/mac/robo3t-1.4.4-darwin-x86_64-e6ac9ec.dmg)

* [Robo 3T Linux](https://download.studio3t.com/robomongo/linux/robo3t-1.4.4-linux-x86_64-e6ac9ec.tar.gz)

And the source code from [Robo 3T repository](https://github.com/Studio3T/robomongo/latest).

Studio 3T would like to thank the Robo 3T community who used and supported the application, since it was acquired in 2017. This repository, the website and blog will be left online and available to maintain a record of what was one of the most influential MongoDB clients of its time.


About Robo 3T
===============

[Robo 3T](http://www.robomongo.org) (formerly Robomongo *) is a shell-centric cross-platform MongoDB management tool. Unlike most other MongoDB admin UI tools, Robo 3T embeds the actual `mongo` shell in a tabbed interface with access to a shell command line as well as GUI interaction.

The latest stable release **Robo 3T 1.4** embeds **MongoDB 4.2** shell.   

Blog:     http://blog.robomongo.org/robo-3t-1-4/  
Download: https://robomongo.org/download  
All Releases: https://github.com/Studio3T/robomongo/releases  
Watch: [Robo 3T Youtube channel](https://www.youtube.com/channel/UCM_7WAseRWeeiBikExppstA)  
Follow: https://twitter.com/Robomongo

**Embedded MongoDB shell history:**  
Robo 3T 1.4 -> MongoDB 4.2     
Robo 3T 1.3 -> MongoDB 4.0     
Robo 3T 1.1 -> MongoDB 3.4    
Robo 3T 0.9 -> MongoDB 3.2  
Robo 3T 0.8.x -> MongoDB 2.4.0  

\* [Robomongo has been acquired by 3T](https://studio3t.com/press/3t-software-labs-acquires-robomongo-the-most-widely-used-mongodb-tool/)

What's new in latest Robo 3T 1.4?
====================================

New Features:   
  - Mongo shell 4.2 upgrade  
  - Support for Ubuntu 20.04, macOS Big Sur and  macOS 10.15 (Catalina)   
  - SSH: ECDSA and Ed25519 keys support on Windows & macOS (issues #1719, #1530, #1590)  
  - Manually specify visible databases (issues #1696, #1368, #389)  
  - New Welcome Tab - embeds Chromium using QtWebEngine (Windows, macOS only)  
  - Import keys from old version: autoExpand, lineNumbers, debugMode and shellTimeoutSec  
   
Improvements:  
  - Qt Upgrade (v5.12.8 - Apr/2020, Windows & macOS only)  
  - OpenSSL upgrade (v1.1.1f - Mar/2020, Windows & macOS only)  
  - libssh2 upgrade (v1.9.0 - Jun/2019, Windows & macOS only)  
  - Database explorer section has smaller default width (#1556)
  - Remember database explorer section size   

Fixes:  
  - Fix previously broken IPv6 support from command line: robo3t --ipv6
  - Fix crash when paging used in tabbed result window (#1661)
  - Fix broken paging in DocumentDB (#1694)
  - Authentication database option isn't used properly (#1696)  
  - Add/Edit index ops fixed (re-written) (#1692)   
  - Crash when expanding admin users (#1728)   
  - Unable to run query after shell timeout reached (#1529)  
  - Fix broken F2, F3, F4 shortcuts for tabbed result view
  - One time re-order limit per new connections window to prevent data loss (macOS, #1790)  
  - Fix crash when new shell tab executed in server unreachable case  

Supported Platforms
===============

Note: This sections is for Robo 3T and it directly depends on what MongoDB suppports  
(See: https://docs.mongodb.com/manual/administration/production-notes/#prod-notes-supported-platforms)

| MongoDB Versions      | MongoDB Cloud Platforms |
| :-------------------- | :--------------------   | 
| 4.2                   | Mongo Atlas             |
| 4.0                   |
| 3.6                   |

| Windows                |   Mac                            | Linux                       |        
|:---------------------- | :--------------------------------| :---------------------------|
| Windows 64-bit 10      |  Mac OS X 11    (Big Sur)     	  | Linux Ubuntu 20.04 64-bit  |
  Windows 64-bit 8.1     |  Mac OS X 10.15 (Catalina)           | Linux Ubuntu 18.04 64-bit  |
| Windows 64-bit 7       |  Mac OS X 10.14 (Mojave)      |   |


Contribute!
===========

### Code Contributions

See all docs here: https://github.com/Studio3T/robomongo/wiki  

**Some important docs:**  
- [Build Diagram](https://github.com/Studio3T/robomongo/wiki/Robo-3T-Schematics:-Build,-Class-and-UI-Diagrams#1-build-diagram)
- [Static Code Analysis](https://github.com/Studio3T/robomongo/wiki/Static-Code-Analysis)
- [Robo 3T Feature Specisification](https://github.com/Studio3T/robomongo/wiki/Feature-Spec)
- [Debugging](https://github.com/Studio3T/robomongo/blob/master/docs/Debug.md)
- [Schematics](https://github.com/Studio3T/robomongo/tree/master/schematics)

Code contributions are always welcome! Just try to follow our pre-commit checks and coding style: 
- [Robo 3T Code Quality](https://github.com/paralect/robomongo/wiki/Robomongo-Code-Quality)
- [Robo 3T C++11/14 Transition Guide](https://github.com/Studio3T/robomongo/wiki/Robomongo-Cplusplus-11,-14-Transition-Guide)
- [Robo 3T Coding Style](https://github.com/paralect/robomongo/wiki/Robomongo-Coding-Style)

If you plan to contribute, please create a Github issue (or comment on the relevant existing issue) so we can help coordinate with upcoming release plans.

Pull requests (PRs) should generally be for discrete issues (i.e. one issue per PR please) and be clean to merge against the current master branch. It would also be helpful if you can confirm what testing has been done (specific O/S targets and MongoDB versions if applicable).

A usual naming approach for feature branches is `issue-###`. Include the issue number in your commit message / pull request description to link the PR to the original issue.

For example:
```#248: updated QScintilla to 2.4.8 for retina display support".```

### Testing

- [Unit-Tests](https://github.com/Studio3T/robomongo/wiki/Unit-Tests)  
- [Manual Tests](wiki/Tests)
- See all docs here: https://github.com/Studio3T/robomongo/wiki  

### Suggest Features

New feature suggestions or UI improvements are always welcome.
[Create a new feature request on github](https://github.com/paralect/robomongo/issues/new)

This project is powered by open source volunteers, so we have a limited amount of development resource to address all requests. We will certainly make best efforts to progress (particularly for those with strong community upvotes).


Download
========

You can download tested installer packages for macOS, Windows, and Linux from our site: [www.robomongo.org](http://www.robomongo.org).

Support
=======

Robo 3T is an open source project driven by volunteers. We'll try to get to your questions as soon as we can, but please be patient :).

You can:

 - [Create a new issue in the Github issue queue](https://github.com/paralect/robomongo/issues)

 - [Join developer discussion on Gitter](https://gitter.im/paralect/robomongo)


License
=======

Copyright 2014-2021 [3T Software Labs Ltd](https://studio3t.com/). All rights reserved.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 3 as 
published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.


================================================
FILE: bin/README.md
================================================
Bash fronted for CMake
======================

If you want to use this scripts, you need to set single environment variable:

E.g.:

    export ROBOMONGO_CMAKE_PREFIX_PATH="/path/to/qt-5/5.5/gcc_64;/path/to/robomongo-shell"

Build Robomongo:

    $ bin/configure
    $ bin/build
    
Install Robomongo:

    $ bin/install
    
Run Robomongo:

    $ bin/run    
    
Pack Robomongo:

    $ bin/pack

More: 
- [Build Robo 3T - Mac OS X and Linux](https://github.com/paralect/robomongo/blob/master/docs/BuildRobo3TOnMacAndLinux.md) 
- [Build Robo 3T - Windows](https://github.com/paralect/robomongo/blob/master/docs/BuildRobo3TOnWindows.md)
- [Unit Tests](wiki/Unit-Tests)
- [Static Code Analysis](wiki/Static-Code-Analysis)


================================================
FILE: bin/build
================================================
#!/usr/bin/env bash

BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"       # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR)                                   # Get root directory of project
source $BIN_DIR/common/setup $1 # $1: release or debug

cd $BUILD_DIR
cmake --build . "${@:2}" -- -j8

================================================
FILE: bin/build-and-run-tests
================================================
#!/usr/bin/env bash

BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"       # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR)                                   # Get root directory of project

source $BIN_DIR/build || exit $?
source $BIN_DIR/run-tests $1

================================================
FILE: bin/build-and-run-tests.bat
================================================
@echo off
setlocal enableextensions enabledelayedexpansion

rem Path to bin and project folder
set BIN_DIR_WITH_BACKSLASH=%~dp0%
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
set PROJECT_DIR=%BIN_DIR%\..

rem Run build
call "%BIN_DIR%\build.bat" %*
if %ERRORLEVEL% neq 0 (exit /b 1)

rem Run tests
call "%BIN_DIR%\run-tests.bat" %*
if %ERRORLEVEL% neq 0 (exit /b 1)

================================================
FILE: bin/build.bat
================================================
@echo off
setlocal enableextensions enabledelayedexpansion

rem Path to bin and project folder
set BIN_DIR_WITH_BACKSLASH=%~dp0%
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
set PROJECT_DIR=%BIN_DIR%\..

rem Run common setup code
call "%BIN_DIR%\common\setup.bat" %*
if %ERRORLEVEL% neq 0 (exit /b 1)

rem Run build
cd "%BUILD_DIR%"
cmake --build . --config %BUILD_TYPE%

rem Install debug *.dll files
if "%BUILD_TYPE%" == "Debug" (
  call "%BIN_DIR%\install-debug-dlls.bat" %*
)

================================================
FILE: bin/clang-checks.txt
================================================
bugprone-*
cert-*
clang-analyzer-*
cppcoreguidelines-*
concurrency-*
hicpp-*
llvm-*
misc-*
performance-*
readability-*

================================================
FILE: bin/clang-tidy.xml
================================================
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <EnableClangTidyCodeAnalysis>true</EnableClangTidyCodeAnalysis>
    <ClangTidyChecks></ClangTidyChecks>
  </PropertyGroup>


================================================
FILE: bin/clean
================================================
#!/usr/bin/env bash

BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"       # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR)                                   # Get root directory of project
source $BIN_DIR/common/setup $1

cd $VARIANT_DIR && rm -rf $BUILD_DIR_NAME


================================================
FILE: bin/clean.bat
================================================
@echo off
setlocal enableextensions enabledelayedexpansion

rem Path to bin and project folder
set BIN_DIR_WITH_BACKSLASH=%~dp0%
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
set PROJECT_DIR=%BIN_DIR%\..

rem Run common setup code
call "%BIN_DIR%\common\setup.bat" %*
if %ERRORLEVEL% neq 0 (exit /b 1)

rem Clear build directory
cd "%VARIANT_DIR%"
rmdir /s /q "%BUILD_DIR_NAME%"


================================================
FILE: bin/common/setup
================================================
#!/usr/bin/env bash

if [ "$1" == "debug" ]; then
  BUILD_TYPE=Debug
else
  BUILD_TYPE=Release

  # Prepend "release" in front of $@
  set -- release "$@"
fi

# Build dir name is a lowercase of BUILD_TYPE
# i.e. debug
BUILD_DIR_NAME="$(echo $BUILD_TYPE | tr '[A-Z]' '[a-z]')"

# i.e. /path/to/robomongo/build
VARIANT_DIR=$PROJECT_DIR/build

# i.e. /path/to/robomongo/build/debug
BUILD_DIR=$VARIANT_DIR/$BUILD_DIR_NAME

# i.e. /path/to/robomongo/build/debug/install
INSTALL_PREFIX=$BUILD_DIR/install

# i.e. /path/to/robomongo/build/debug/package
PACK_PREFIX=$BUILD_DIR/package

PREFIX_PATH=$ROBOMONGO_CMAKE_PREFIX_PATH

mkdir -p $BUILD_DIR

================================================
FILE: bin/common/setup.bat
================================================
rem Check that ROBOMONGO_CMAKE_PREFIX_PATH is set
if not defined ROBOMONGO_CMAKE_PREFIX_PATH (
  echo Set environment variable ROBOMONGO_CMAKE_PREFIX_PATH in order to use this script
  echo.
  echo For example, execute the following command:
  echo    setx ROBOMONGO_CMAKE_PREFIX_PATH "c:\Qt-5\5.5\msvc2013_64;c:\robomongo-shell"
  echo.
  echo You also need to reopen your Windows Command Prompt.
  exit /b 1
)

rem Check for debug build type
if %1. == debug. (
  set BUILD_TYPE=Debug
) else (
    rem If build type wasn't specified - Release mode assumed
    if %1. ==. (
      set BUILD_TYPE=Release
    ) else (
        echo Invalid build type "%1". Supported build types: debug or release.
        exit /b 1
    )
)

rem Build dir name (i.e. Release)
set BUILD_DIR_NAME=%BUILD_TYPE%

rem i.e. /path/to/robomongo/build
set VARIANT_DIR=%PROJECT_DIR%\build

rem i.e. /path/to/robomongo/build/debug
set BUILD_DIR=%VARIANT_DIR%\%BUILD_DIR_NAME%

rem i.e. /path/to/robomongo/build/debug/install
set INSTALL_PREFIX=%BUILD_DIR%\install

rem i.e. /path/to/robomongo/build/debug/package
set PACK_PREFIX=%BUILD_DIR%/package

rem Get value from environment variable
set PREFIX_PATH=%ROBOMONGO_CMAKE_PREFIX_PATH%

rem Create BUILD_DIR if it is not exists already
if not exist "%BUILD_DIR%" (
  md "%BUILD_DIR%"
)




================================================
FILE: bin/configure
================================================
#!/usr/bin/env bash

BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"       # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR)                                   # Get root directory of project
source $BIN_DIR/common/setup $1 # $1: release or debug

cd $BUILD_DIR
# $BUILD_TYPE: Release or Debug
cmake -D "CMAKE_PREFIX_PATH=$PREFIX_PATH" -D "CMAKE_BUILD_TYPE=$BUILD_TYPE" -D "CMAKE_INSTALL_PREFIX=$INSTALL_PREFIX" "${@:2}" $PROJECT_DIR

================================================
FILE: bin/configure.bat
================================================
@echo off 
setlocal enableextensions enabledelayedexpansion

rem Path to bin and project folder
set BIN_DIR_WITH_BACKSLASH=%~dp0%
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
set PROJECT_DIR=%BIN_DIR%\..

rem Run common setup code
call "%BIN_DIR%\common\setup.bat" %*
if %ERRORLEVEL% neq 0 (exit /b 1)

rem Run CMake configuration step
rem BUILD_TYPE: Release or Debug
cd "%BUILD_DIR%"
cmake -G "Visual Studio 15 2017 Win64" -D "CMAKE_PREFIX_PATH=%PREFIX_PATH%" -D "CMAKE_BUILD_TYPE=%BUILD_TYPE%" -D "CMAKE_INSTALL_PREFIX=%INSTALL_PREFIX%" %PROJECT_DIR%

@REM echo ___________________________________________________________________
@REM rem Enable Clang Tidy for Visual Studio 2019 IDE ...
@REM set ROBO_PROJ_FILE=%BUILD_DIR%/src/robomongo/robomongo.vcxproj
@REM python %BIN_DIR%\enable-visual-studio-clang-tidy.py %ROBO_PROJ_FILE% %BIN_DIR%

================================================
FILE: bin/enable-visual-studio-clang-tidy.py
================================================
import sys
from lxml import etree

print('\nEnabling Clang Tidy for Visual Studio 2019')

robo_proj_xml = sys.argv[1]
clang_tidy_xml = sys.argv[2] + '/clang-tidy.xml'
clang_checks_txt = sys.argv[2] + '/clang-checks.txt'
print(sys.argv[0] + ":\nProcessing: " + sys.argv[1])

## Read clang checks
clang_checks = None
with open(clang_checks_txt, "r") as file:
    clang_checks = file.read().replace('\n', ',')

## 
tree = etree.parse(robo_proj_xml)
ns = {'ns':'http://schemas.microsoft.com/developer/msbuild/2003'}
if(tree.find('//ns:EnableClangTidyCodeAnalysis', namespaces=ns) is not None):    
    tree.find('//ns:ClangTidyChecks', namespaces=ns).text = clang_checks
    tree.write(robo_proj_xml)    
    print('Finished')
    sys.exit()

## Append clang_tidy_xml  -  Todo: refactor using etree
with open(robo_proj_xml, "r") as in_file:
    buf = in_file.readlines()

with open(clang_tidy_xml, "r") as in_file:
    clang_tidy_xml_buf = in_file.read()

appended = False
with open(robo_proj_xml, "w") as out_file:
    for line in buf:
        if "</ItemGroup>" in line and appended == False:
            line = line + clang_tidy_xml_buf
            appended = True
        out_file.write(line)

## Add clang checks           
tree = etree.parse(robo_proj_xml)
tree.find('//ns:ClangTidyChecks', namespaces=ns).text = clang_checks
tree.write(robo_proj_xml)
print('Finished')

================================================
FILE: bin/install
================================================
#!/usr/bin/env bash

BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"       # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR)                                   # Get root directory of project
source $BIN_DIR/common/setup $1

cd $BUILD_DIR
cmake --build . --target install/strip "${@:2}"


================================================
FILE: bin/install-debug-dlls.bat
================================================
@echo off
setlocal enableextensions enabledelayedexpansion

rem // This script installs debug *.dll files
rem -------------------------------------------

set INSTALL_DIR=%BUILD_DIR%\src\robomongo\Debug\
if not exist %INSTALL_DIR%*.dll (
  echo ----------------------------------------
  echo Installing debug *.dll files ...  
  echo INSTALL_DIR: %INSTALL_DIR%
  echo ----------------------------------------  
)

rem // Find OpenSSL and Qt paths
for %%i in (%ROBOMONGO_CMAKE_PREFIX_PATH%) do (
  set xx=%%i
  if not "!xx!"=="!xx:ssl=!" ( set OPENSSL_DIR=!xx! )
  if not "!xx!"=="!xx:qt=!" ( set Qt_DIR=!xx! )
)
set OPENSSL_DIR=%OPENSSL_DIR: =%
set Qt_DIR=%Qt_DIR: =%

rem // Copy dll files
for /d %%a in (
  "%VS140COMNTOOLS%\..\..\VC\redist\debug_nonredist\x64\Microsoft.VC140.DebugCRT\msvcp140d.dll"
  "%VS140COMNTOOLS%\..\..\VC\redist\debug_nonredist\x64\Microsoft.VC140.DebugCRT\vcruntime140d.dll"
  "%OPENSSL_DIR%\libssl-1_1-x64.dll"
  "%OPENSSL_DIR%\libcrypto-1_1-x64.dll"
  "%Qt_DIR%\bin\Qt5Cored.dll"
  "%Qt_DIR%\bin\Qt5Guid.dll"
  "%Qt_DIR%\bin\Qt5Networkd.dll"
  "%Qt_DIR%\bin\Qt5Widgetsd.dll"
  "%Qt_DIR%\bin\Qt5Positioningd.dll"
  "%Qt_DIR%\bin\Qt5Qmld.dll"
  "%Qt_DIR%\bin\Qt5Quickd.dll"
  "%Qt_DIR%\bin\Qt5QuickWidgetsd.dll"
  "%Qt_DIR%\bin\Qt5WebChanneld.dll"
  "%Qt_DIR%\bin\Qt5WebEngineCored.dll"
  "%Qt_DIR%\bin\Qt5WebEngineWidgetsd.dll"
  "%Qt_DIR%\bin\Qt5PrintSupportd.dll"  
) do (
  if not exist !INSTALL_DIR!%%~NXa (
    xcopy %%a !INSTALL_DIR! /d /y
  )
)

if not exist %INSTALL_DIR%\imageformats\qgifd.dll (
  xcopy /s "%Qt_DIR%\plugins\imageformats" %INSTALL_DIR%\imageformats\ /d /y
)

if not exist %INSTALL_DIR%\platforms\qminimald.dll (
  xcopy /s "%Qt_DIR%\plugins\platforms" %INSTALL_DIR%\platforms\ /d /y
)

================================================
FILE: bin/install.bat
================================================
@echo off
setlocal enableextensions enabledelayedexpansion

rem Path to bin and project folder
set BIN_DIR_WITH_BACKSLASH=%~dp0%
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
set PROJECT_DIR=%BIN_DIR%\..

rem Run common setup code
call "%BIN_DIR%\common\setup.bat" %*
if %ERRORLEVEL% neq 0 (exit /b 1)

rem Run install
cd "%BUILD_DIR%"
cmake --build . --config %BUILD_TYPE% --target install


================================================
FILE: bin/pack
================================================
#!/usr/bin/env bash

BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"       # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR)                                   # Get root directory of project
source $BIN_DIR/common/setup $1

cd $BUILD_DIR
cmake --build . --target package "${@:2}"


================================================
FILE: bin/pack.bat
================================================
@echo off
setlocal enableextensions enabledelayedexpansion

rem Path to bin and project folder
set BIN_DIR_WITH_BACKSLASH=%~dp0%
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
set PROJECT_DIR=%BIN_DIR%\..

rem Run common setup code
call "%BIN_DIR%\common\setup.bat" %*
if %ERRORLEVEL% neq 0 (exit /b 1)

rem Run install
cd "%BUILD_DIR%"
cmake --build . --config %BUILD_TYPE% --target package


================================================
FILE: bin/rebuild.bat
================================================
@echo off
setlocal enableextensions enabledelayedexpansion

call "clean.bat" %*
call "configure.bat" %*
call "build.bat" %*

================================================
FILE: bin/run
================================================
#!/usr/bin/env bash

BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"       # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR)                                   # Get root directory of project
source $BIN_DIR/common/setup $1

echo "Note: ./install must be executed before this script."
if [ "$(uname -s)" == "Darwin" ]; then
    echo "Starting $BUILD_DIR/install/Robo 3T.app/Contents/MacOS/Robo 3T"
    "$BUILD_DIR/install/Robo 3T.app/Contents/MacOS/Robo 3T"
else
    echo "Starting $BUILD_DIR/install/bin/robo3t"
    "$BUILD_DIR/install/bin/robo3t"    
fi

================================================
FILE: bin/run-clang-tidy
================================================
#!/usr/bin/env bash

### Common Setup
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"       # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR)                                   # Get root directory of project
source $BIN_DIR/common/setup $1 # $1: release or debug

### Setup
CLANG_TIDY_BUILD_DIR=$PROJECT_DIR/build/clang-tidy-$BUILD_TYPE
rm -rf $CLANG_TIDY_BUILD_DIR
mkdir -p $CLANG_TIDY_BUILD_DIR && cd $CLANG_TIDY_BUILD_DIR

### Configure cmake
# Info: $BUILD_TYPE == Release or Debug
cmake -D "CMAKE_EXPORT_COMPILE_COMMANDS=ON" -D "CMAKE_PREFIX_PATH=$PREFIX_PATH" -D "CMAKE_BUILD_TYPE=$BUILD_TYPE" -D "CMAKE_INSTALL_PREFIX=$INSTALL_PREFIX" "${@:2}" $PROJECT_DIR
echo -e "\n------------------------------------------------"
echo "clang-tidy configured. Mode: $BUILD_TYPE"
echo -e "------------------------------------------------\n"

### Run clang-tidy
FILE_OR_PATH=/opt/robo/src/robomongo/   # or MainWindow.cpp
CHECKS=clang-analyzer-*,readability-implicit-bool-conversion
# All Checks: https://clang.llvm.org/extra/clang-tidy/checks/list.html

# e.g. $BIN_DIR/run-clang-tidy.py -checks=clang-analyzer-*,readability-implicit-bool-conversion /opt/robo/src/robomongo/
$BIN_DIR/run-clang-tidy.py -checks=$CHECKS $FILE_OR_PATH

echo -e "\n------------------------------------------------"
echo "clang-tidy finished"
echo "Mode                : $BUILD_TYPE"
echo "CLANG_TIDY_BUILD_DIR: $CLANG_TIDY_BUILD_DIR"
echo "Command executed    : $BIN_DIR/run-clang-tidy.py -checks=$CHECKS $FILE_OR_PATH"
echo -e "------------------------------------------------\n"

================================================
FILE: bin/run-clang-tidy.py
================================================
#!/usr/bin/env python
#
#===- run-clang-tidy.py - Parallel clang-tidy runner ---------*- python -*--===#
#
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
#===------------------------------------------------------------------------===#
# FIXME: Integrate with clang-tidy-diff.py

"""
Parallel clang-tidy runner
==========================

Runs clang-tidy over all files in a compilation database. Requires clang-tidy
and clang-apply-replacements in $PATH.

Example invocations.
- Run clang-tidy on all files in the current working directory with a default
  set of checks and show warnings in the cpp files and all project headers.
    run-clang-tidy.py $PWD

- Fix all header guards.
    run-clang-tidy.py -fix -checks=-*,llvm-header-guard

- Fix all header guards included from clang-tidy and header guards
  for clang-tidy headers.
    run-clang-tidy.py -fix -checks=-*,llvm-header-guard extra/clang-tidy \
                      -header-filter=extra/clang-tidy

Compilation database setup:
http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html
"""

from __future__ import print_function

import argparse
import glob
import json
import multiprocessing
import os
import re
import shutil
import subprocess
import sys
import tempfile
import threading
import traceback

try:
  import yaml
except ImportError:
  yaml = None

is_py2 = sys.version[0] == '2'

if is_py2:
    import Queue as queue
else:
    import queue as queue

def find_compilation_database(path):
  """Adjusts the directory until a compilation database is found."""
  result = './'
  while not os.path.isfile(os.path.join(result, path)):
    if os.path.realpath(result) == '/':
      print('Error: could not find compilation database.')
      sys.exit(1)
    result += '../'
  return os.path.realpath(result)


def make_absolute(f, directory):
  if os.path.isabs(f):
    return f
  return os.path.normpath(os.path.join(directory, f))


def get_tidy_invocation(f, clang_tidy_binary, checks, tmpdir, build_path,
                        header_filter, extra_arg, extra_arg_before, quiet,
                        config):
  """Gets a command line for clang-tidy."""
  start = [clang_tidy_binary]
  if header_filter is not None:
    start.append('-header-filter=' + header_filter)
  if checks:
    start.append('-checks=' + checks)
  if tmpdir is not None:
    start.append('-export-fixes')
    # Get a temporary file. We immediately close the handle so clang-tidy can
    # overwrite it.
    (handle, name) = tempfile.mkstemp(suffix='.yaml', dir=tmpdir)
    os.close(handle)
    start.append(name)
  for arg in extra_arg:
      start.append('-extra-arg=%s' % arg)
  for arg in extra_arg_before:
      start.append('-extra-arg-before=%s' % arg)
  start.append('-p=' + build_path)
  if quiet:
      start.append('-quiet')
  if config:
      start.append('-config=' + config)
  start.append(f)
  return start


def merge_replacement_files(tmpdir, mergefile):
  """Merge all replacement files in a directory into a single file"""
  # The fixes suggested by clang-tidy >= 4.0.0 are given under
  # the top level key 'Diagnostics' in the output yaml files
  mergekey="Diagnostics"
  merged=[]
  for replacefile in glob.iglob(os.path.join(tmpdir, '*.yaml')):
    content = yaml.safe_load(open(replacefile, 'r'))
    if not content:
      continue # Skip empty files.
    merged.extend(content.get(mergekey, []))

  if merged:
    # MainSourceFile: The key is required by the definition inside
    # include/clang/Tooling/ReplacementsYaml.h, but the value
    # is actually never used inside clang-apply-replacements,
    # so we set it to '' here.
    output = { 'MainSourceFile': '', mergekey: merged }
    with open(mergefile, 'w') as out:
      yaml.safe_dump(output, out)
  else:
    # Empty the file:
    open(mergefile, 'w').close()


def check_clang_apply_replacements_binary(args):
  """Checks if invoking supplied clang-apply-replacements binary works."""
  try:
    subprocess.check_call([args.clang_apply_replacements_binary, '--version'])
  except:
    print('Unable to run clang-apply-replacements. Is clang-apply-replacements '
          'binary correctly specified?', file=sys.stderr)
    traceback.print_exc()
    sys.exit(1)


def apply_fixes(args, tmpdir):
  """Calls clang-apply-fixes on a given directory."""
  invocation = [args.clang_apply_replacements_binary]
  if args.format:
    invocation.append('-format')
  if args.style:
    invocation.append('-style=' + args.style)
  invocation.append(tmpdir)
  subprocess.call(invocation)


def run_tidy(args, tmpdir, build_path, queue, lock, failed_files):
  """Takes filenames out of queue and runs clang-tidy on them."""
  while True:
    name = queue.get()
    invocation = get_tidy_invocation(name, args.clang_tidy_binary, args.checks,
                                     tmpdir, build_path, args.header_filter,
                                     args.extra_arg, args.extra_arg_before,
                                     args.quiet, args.config)

    proc = subprocess.Popen(invocation, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    output, err = proc.communicate()
    if proc.returncode != 0:
      failed_files.append(name)
    with lock:
      sys.stdout.write(' '.join(invocation) + '\n' + output.decode('utf-8'))
      if len(err) > 0:
        sys.stdout.flush()
        sys.stderr.write(err.decode('utf-8'))
    queue.task_done()


def main():
  parser = argparse.ArgumentParser(description='Runs clang-tidy over all files '
                                   'in a compilation database. Requires '
                                   'clang-tidy and clang-apply-replacements in '
                                   '$PATH.')
  parser.add_argument('-clang-tidy-binary', metavar='PATH',
                      default='clang-tidy',
                      help='path to clang-tidy binary')
  parser.add_argument('-clang-apply-replacements-binary', metavar='PATH',
                      default='clang-apply-replacements',
                      help='path to clang-apply-replacements binary')
  parser.add_argument('-checks', default=None,
                      help='checks filter, when not specified, use clang-tidy '
                      'default')
  parser.add_argument('-config', default=None,
                      help='Specifies a configuration in YAML/JSON format: '
                      '  -config="{Checks: \'*\', '
                      '                       CheckOptions: [{key: x, '
                      '                                       value: y}]}" '
                      'When the value is empty, clang-tidy will '
                      'attempt to find a file named .clang-tidy for '
                      'each source file in its parent directories.')
  parser.add_argument('-header-filter', default=None,
                      help='regular expression matching the names of the '
                      'headers to output diagnostics from. Diagnostics from '
                      'the main file of each translation unit are always '
                      'displayed.')
  if yaml:
    parser.add_argument('-export-fixes', metavar='filename', dest='export_fixes',
                        help='Create a yaml file to store suggested fixes in, '
                        'which can be applied with clang-apply-replacements.')
  parser.add_argument('-j', type=int, default=0,
                      help='number of tidy instances to be run in parallel.')
  parser.add_argument('files', nargs='*', default=['.*'],
                      help='files to be processed (regex on path)')
  parser.add_argument('-fix', action='store_true', help='apply fix-its')
  parser.add_argument('-format', action='store_true', help='Reformat code '
                      'after applying fixes')
  parser.add_argument('-style', default='file', help='The style of reformat '
                      'code after applying fixes')
  parser.add_argument('-p', dest='build_path',
                      help='Path used to read a compile command database.')
  parser.add_argument('-extra-arg', dest='extra_arg',
                      action='append', default=[],
                      help='Additional argument to append to the compiler '
                      'command line.')
  parser.add_argument('-extra-arg-before', dest='extra_arg_before',
                      action='append', default=[],
                      help='Additional argument to prepend to the compiler '
                      'command line.')
  parser.add_argument('-quiet', action='store_true',
                      help='Run clang-tidy in quiet mode')
  args = parser.parse_args()

  db_path = 'compile_commands.json'

  if args.build_path is not None:
    build_path = args.build_path
  else:
    # Find our database
    build_path = find_compilation_database(db_path)

  try:
    invocation = [args.clang_tidy_binary, '-list-checks']
    invocation.append('-p=' + build_path)
    if args.checks:
      invocation.append('-checks=' + args.checks)
    invocation.append('-')
    if args.quiet:
      # Even with -quiet we still want to check if we can call clang-tidy.
      with open(os.devnull, 'w') as dev_null:
        subprocess.check_call(invocation, stdout=dev_null)
    else:
      subprocess.check_call(invocation)
  except:
    print("Unable to run clang-tidy.", file=sys.stderr)
    sys.exit(1)

  # Load the database and extract all files.
  database = json.load(open(os.path.join(build_path, db_path)))
  files = [make_absolute(entry['file'], entry['directory'])
           for entry in database]

  max_task = args.j
  if max_task == 0:
    max_task = multiprocessing.cpu_count()

  tmpdir = None
  if args.fix or (yaml and args.export_fixes):
    check_clang_apply_replacements_binary(args)
    tmpdir = tempfile.mkdtemp()

  # Build up a big regexy filter from all command line arguments.
  file_name_re = re.compile('|'.join(args.files))

  return_code = 0
  try:
    # Spin up a bunch of tidy-launching threads.
    task_queue = queue.Queue(max_task)
    # List of files with a non-zero return code.
    failed_files = []
    lock = threading.Lock()
    for _ in range(max_task):
      t = threading.Thread(target=run_tidy,
                           args=(args, tmpdir, build_path, task_queue, lock, failed_files))
      t.daemon = True
      t.start()

    # Fill the queue with files.
    for name in files:
      if file_name_re.search(name):
        task_queue.put(name)

    # Wait for all threads to be done.
    task_queue.join()
    if len(failed_files):
      return_code = 1

  except KeyboardInterrupt:
    # This is a sad hack. Unfortunately subprocess goes
    # bonkers with ctrl-c and we start forking merrily.
    print('\nCtrl-C detected, goodbye.')
    if tmpdir:
      shutil.rmtree(tmpdir)
    os.kill(0, 9)

  if yaml and args.export_fixes:
    print('Writing fixes to ' + args.export_fixes + ' ...')
    try:
      merge_replacement_files(tmpdir, args.export_fixes)
    except:
      print('Error exporting fixes.\n', file=sys.stderr)
      traceback.print_exc()
      return_code=1

  if args.fix:
    print('Applying fixes ...')
    try:
      apply_fixes(args, tmpdir)
    except:
      print('Error applying fixes.\n', file=sys.stderr)
      traceback.print_exc()
      return_code=1

  if tmpdir:
    shutil.rmtree(tmpdir)
  sys.exit(return_code)

if __name__ == '__main__':
  main()


================================================
FILE: bin/run-cppcheck.bat
================================================
@echo off
setlocal enableextensions enabledelayedexpansion

set CPP_VER=c++17

set FILE_OR_DIR=..\src\robomongo\
set PARAM_1=%1
if not "%PARAM_1%" == "" (
  set FILE_OR_DIR=%PARAM_1%
)

rem Run analysis
echo.
echo ---------------------- Running cppcheck ----------------------
echo.
call cppcheck %FILE_OR_DIR% --enable=all --std=%CPP_VER%
echo.
echo ---------------------- End of cppcheck ----------------------
echo.
echo ---------------------- Info ----------------------
call cppcheck --version
echo Command called: cppcheck %FILE_OR_DIR% --enable=all --std=%CPP_VER%

================================================
FILE: bin/run-scan-build
================================================
#!/usr/bin/env bash

BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"       # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR)                                   # Get root directory of project
source $BIN_DIR/common/setup $1 # $1: release or debug

mkdir -p ../scan-build && cd ../scan-build
# $BUILD_TYPE: Release or Debug
# Hint: Use "--use-analyzer /usr/local/opt/llvm/bin/clang++" after "-v"
scan-build -v cmake -D "CMAKE_PREFIX_PATH=$PREFIX_PATH" -D "CMAKE_BUILD_TYPE=$BUILD_TYPE" -D "CMAKE_INSTALL_PREFIX=$INSTALL_PREFIX" "${@:2}" $PROJECT_DIR
echo -e "\n------------------------------------------------"
echo "Configured with scan-build in $BUILD_TYPE mode"
echo -e "------------------------------------------------\n"
scan-build cmake --build . "${@:2}" -- -j8
echo -e "\n------------------------------------------------"
echo "Built with scan-build in $BUILD_TYPE mode"
echo -e "------------------------------------------------\n"

================================================
FILE: bin/run-tests
================================================
#!/usr/bin/env bash

BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"       # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR)                                   # Get root directory of project
source $BIN_DIR/common/setup $1

echo 
echo "*******************  Running unit tests in $BUILD_TYPE mode *******************"
echo 

if [ "$(uname -s)" == "Darwin" ]; then
    EXE="$BUILD_DIR/src/robomongo-unit-tests/robo_unit_tests"
    echo "Running file: $EXE"
    "$EXE"
else # Linux
    echo "Error: Currently unit testing is disabled for Linux due to MongoDB linking problem"
    exit 0
    EXE="$BUILD_DIR/src/robomongo-unit-tests/robo_unit_tests"
    echo "Running file: $EXE"
    "$EXE"
fi 

================================================
FILE: bin/run-tests.bat
================================================
@echo off
setlocal enableextensions enabledelayedexpansion

rem Path to bin and project folder
set BIN_DIR_WITH_BACKSLASH=%~dp0%
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
set PROJECT_DIR=%BIN_DIR%\..

rem Run common setup code
call "%BIN_DIR%\common\setup.bat" %*
if %ERRORLEVEL% neq 0 (exit /b 1)

rem Run tests
echo.
echo *******************  Running unit tests ******************* 
echo Mode: %BUILD_TYPE%
set TEST_EXE_DIR=%PROJECT_DIR%\\build\%BUILD_TYPE%\src\robomongo-unit-tests\%BUILD_TYPE%
echo Run : %TEST_EXE_DIR%\robo_unit_tests.exe
echo.
call "%TEST_EXE_DIR%\robo_unit_tests.exe" %*

================================================
FILE: bin/run-vs-code-analysis.bat
================================================
@echo off
setlocal enableextensions enabledelayedexpansion

rem Path to bin and project folder
set BIN_DIR_WITH_BACKSLASH=%~dp0%
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
set PROJECT_DIR=%BIN_DIR%\..

rem Run common setup code
call "%BIN_DIR%\common\setup.bat" %*
if %ERRORLEVEL% neq 0 (exit /b 1)

rem Run Visual Studio with RunCodeAnalysis
cd "%BUILD_DIR%"
set RULE_SET="/p:CodeAnalysisRuleSet=NativeRecommendedRules.ruleset"
set OUT_FILE=vs-code-analysis-%BUILD_TYPE%.txt

echo ------------- Running Visual Studio with RunCodeAnalysis -------------
echo Result will be written into file "%OUT_FILE%" in the end.
echo ...
cmake --build . --config %BUILD_TYPE% -- "/p:RunCodeAnalysis=true" %RULE_SET% > %BIN_DIR%\%OUT_FILE%
  rem Rules: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\Rule Sets
  rem        https://docs.microsoft.com/en-us/visualstudio/code-quality/rule-set-reference?view=vs-2019

echo ------------- End of RunCodeAnalysis -------------
echo.
echo ------------- Info -------------
echo Mode    : %BUILD_TYPE%
echo RULE_SET: %RULE_SET% (see the script comments for more info)

================================================
FILE: bin/set-mongo-warning-level-3.py
================================================
import os
from os.path import join

### 
def force_warning_level_3(file):
    with open(file, "r") as in_file:
        buf = in_file.readlines()

    push = '#pragma warning(push, 3)\n'
    pop  = '#pragma warning(pop)\n'

    last_line_has_mongo = False
    with open(file, "w") as out_file:
        for line in buf:            
            if line.startswith(('#include <mongo', '#include "mongo')):
                if last_line_has_mongo: 
                    pass # line = line + pop
                else:
                    line = push + line

                last_line_has_mongo = True
            else:
                if last_line_has_mongo: 
                    line = pop + line

                last_line_has_mongo = False          

            out_file.write(line)


### main
root_dir = 'E:\\robo\\src\\robomongo\\'
# root_dir = 'E:\\robo\\src\\robomongo\\shell\\bson\\'    # for testing
print('Processing all source files in root & sub directories...')
print('Root Dir:', root_dir)
print('---------------------------------------------------------')
for path, subdirs, files in os.walk(root_dir):
    for name in files:
        if name.endswith(('.h', '.cpp')):
            file = os.path.join(path, name)
            print(file)
            force_warning_level_3(file)

================================================
FILE: bin/tag
================================================
#!/usr/bin/env bash

BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"       # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR)                                   # Get root directory of project

VERSION="$(echo $1 | tr '[A-Z]' '[a-z]')"
if [ -z "$VERSION" ]; then
    echo "Usage: tag <name>"
    echo "Example: tag 0.9.0-rc9"
    exit
fi

if [ "$(git rev-parse --abbrev-ref HEAD)" != "master" ]; then
    echo "Error: You are not on master branch"
    exit
fi

cd $PROJECT_DIR
git tag -a "v${VERSION}" -m "${VERSION}"
git push --tags


================================================
FILE: cmake/FindMongoDB.cmake
================================================
#
# Find the MongoDB libraries
#
# This module defines the following variables:
#      MongoDB_FOUND
#      MongoDB_LIBS
#      MongoDB_INCLUDE_DIRS
#      MongoDB_DEFINITIONS
#
# Imported target "mongodb" is created
#
# We assume, that at least "mongo" target was build by the following command:
#    $ scons mongo
#
#

# Try to find MongoDB directory (uses CMAKE_PREFIX_PATH locations)
find_path(
    MongoDB_DIR src/mongo/config.h.in
    DOC "Path to MongoDB (github.com/robomongo-shell) root directory"
)

# Find relative path to build directory
if(BUILD_RELEASE OR BUILD_RELWITHDEBINFO OR BUILD_MINSIZEREL)
    set(MongoDB_RELATIVE_BUILD_DIR build/opt)
    set(MongoDB_OBJECT_LIST_BUILD_TYPE_PART release)
elseif(BUILD_DEBUG)
    set(MongoDB_RELATIVE_BUILD_DIR build/debug)
    set(MongoDB_OBJECT_LIST_BUILD_TYPE_PART debug)
endif()

# Set absolute path to build directory
set(MongoDB_BUILD_DIR ${MongoDB_DIR}/${MongoDB_RELATIVE_BUILD_DIR})

# Set commong compiler definitons
set(MongoDB_DEFINITIONS
    PCRE_STATIC
    BOOST_THREAD_VERSION=4
    BOOST_THREAD_DONT_PROVIDE_VARIADIC_THREAD
    BOOST_THREAD_NO_DEPRECATED
    BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS
    BOOST_THREAD_HAS_BUG
    MONGO_CONFIG_HAVE_HEADER_UNISTD_H
    # Suppress "warning C4996: std::allocator..." from third_party\abseil-cpp-master
	_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING 
    # Suppress "warning C4996: std::iterator..." from third_party\mozjs-60
    _SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING
)

# Set common compiler include directories
set(MOZJS_VER mozjs-60)
set(MongoDB_INCLUDE_DIRS
    ${MongoDB_DIR}/src    
    ${MongoDB_DIR}/src/third_party/abseil-cpp-master/abseil-cpp
    ${MongoDB_DIR}/src/third_party/boost-1.70.0    
    ${MongoDB_DIR}/src/third_party/fmt/dist/include
    ${MongoDB_DIR}/src/third_party/${MOZJS_VER}/include
    ${MongoDB_DIR}/src/third_party/${MOZJS_VER}/mongo_sources
    ${MongoDB_DIR}/src/third_party/pcre-8.42
    ${MongoDB_DIR}/src/third_party/SafeInt
    ${MongoDB_BUILD_DIR}
)

if(SYSTEM_LINUX)
    set(MongoDB_OBJECT_LIST_PLATFORM_PART linux)
    list(APPEND MongoDB_INCLUDE_DIRS
        ${MongoDB_DIR}/src/third_party/${MOZJS_VER}/platform/x86_64/linux/include)
elseif(SYSTEM_WINDOWS)
    set(MongoDB_OBJECT_LIST_PLATFORM_PART windows)
    list(APPEND MongoDB_INCLUDE_DIRS
        ${MongoDB_DIR}/src/third_party/${MOZJS_VER}/platform/x86_64/windows/include)
elseif(SYSTEM_MACOSX)
    set(MongoDB_OBJECT_LIST_PLATFORM_PART macosx)
    list(APPEND MongoDB_INCLUDE_DIRS
        ${MongoDB_DIR}/src/third_party/${MOZJS_VER}/platform/x86_64/macOS/include)
elseif(SYSTEM_FREEBSD)
    set(MongoDB_OBJECT_LIST_PLATFORM_PART freebsd)
    list(APPEND MongoDB_INCLUDE_DIRS
        ${MongoDB_DIR}/src/third_party/${MOZJS_VER}/platform/x86_64/freebsd/include)
elseif(SYSTEM_OPENBSD)
    set(MongoDB_OBJECT_LIST_PLATFORM_PART openbsd)
    list(APPEND MongoDB_INCLUDE_DIRS
        ${MongoDB_DIR}/src/third_party/${MOZJS_VER}/platform/x86_64/openbsd/include)
endif()

# Read list of object files
# See "mongodb/README.md" file (relative to the current folder) for more information.
file(READ
    ${CMAKE_CURRENT_LIST_DIR}/mongodb/${MongoDB_OBJECT_LIST_PLATFORM_PART}-${MongoDB_OBJECT_LIST_BUILD_TYPE_PART}.objects
    MongoDB_RELATIVE_LIBS)

string(STRIP "${MongoDB_RELATIVE_LIBS}" MongoDB_RELATIVE_LIBS)

# Convert string to list
string(REPLACE " " ";" MongoDB_RELATIVE_LIBS ${MongoDB_RELATIVE_LIBS})

# todo: Find a better solution
# Robo 1.4: Added as workaround fix for build error: 
# fatal error LNK1170: line in command file contains 131071 or more characters
# Happens when the path of robo-shell is a long string (e.g. "E:/user/code/robomongo-shell")
set(MongoDB_OBJECTS_DIR_ENV $ENV{MongoDB_OBJECTS})
if(MongoDB_OBJECTS_DIR_ENV)
  set(MongoDB_OBJECTS_DIR ${MongoDB_OBJECTS_DIR_ENV})
else()
  set(MongoDB_OBJECTS_DIR ${MongoDB_DIR})
endif()

# Convert to absolute path
foreach(lib ${MongoDB_RELATIVE_LIBS})
  list(APPEND MongoDB_LIBS ${MongoDB_OBJECTS_DIR}/${lib})
endforeach()

if(SYSTEM_WINDOWS)
  list(APPEND MongoDB_LIBS Crypt32.lib Secur32.lib Dnsapi.lib winhttp.lib) 
elseif(SYSTEM_MACOSX)
  list(APPEND MongoDB_LIBS -lcurl) 
elseif(SYSTEM_LINUX)  
  list(APPEND MongoDB_LIBS -lresolv -lcurl) 
endif()

# Get MongoDB repository recent tag
execute_process(
    COMMAND git describe --abbrev=0 --tags
    WORKING_DIRECTORY ${MongoDB_DIR}
    OUTPUT_VARIABLE MongoDB_RECENT_TAG
    OUTPUT_STRIP_TRAILING_WHITESPACE
)

# Handle the QUIETLY and REQUIRED arguments and set ALSA_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(MongoDB
    FOUND_VAR MongoDB_FOUND     # When using CMake 3.0 MONGODB_FOUND variable will be created.
                                # Make it explicit that variable name is MongoDB_FOUND.
    REQUIRED_VARS MongoDB_DIR MongoDB_BUILD_DIR
    VERSION_VAR MongoDB_RECENT_TAG
    FAIL_MESSAGE "Could not find Robomongo Shell (MongoDB fork). Make sure that CMAKE_PREFIX_PATH points to Robomongo Shell project root.\n")

if(MongoDB_FOUND)
    set(MongoDB_VERSION ${MongoDB_RECENT_TAG})

    # Original MongoDB link command has the following in the end: m rt dl
    set(MongoDB_LIBS
        ${LINK_WHOLE_ARCHIVE_START}   # Linux: -Wl,--whole-archive
        ${LINK_LIBGROUP_START}        # Linux: -Wl,--start-group
        ${MongoDB_LIBS}
        ${LINK_LIBGROUP_END}          # Linux: -Wl,--end-group
        ${LINK_WHOLE_ARCHIVE_END}     # Linux: -Wl,--no-whole-archive
        ${CMAKE_DL_LIBS}              # Linux: dl
    )

    # Add imported target
    add_library(mongodb INTERFACE IMPORTED)

    # Specify INTERFACE properties for this target
    set_target_properties(mongodb PROPERTIES
        INTERFACE_LINK_LIBRARIES      "${MongoDB_LIBS}"
        INTERFACE_COMPILE_DEFINITIONS "${MongoDB_DEFINITIONS}"
        INTERFACE_INCLUDE_DIRECTORIES "${MongoDB_INCLUDE_DIRS}"
    )

endif()

# Cleanup
unset(MongoDB_OBJECT_LIST_BUILD_TYPE_PART)
unset(MongoDB_OBJECT_LIST_PLATFORM_PART)
unset(MongoDB_RELATIVE_BUILD_DIR)
unset(MongoDB_RELATIVE_LIBS)
unset(MongoDB_RECENT_TAG)


================================================
FILE: cmake/FindOpenSSL.cmake
================================================
##################################################
# Find and Add OpenSSL shared (dynamic) library 
# 
# - This module defines the following variables:
#   OpenSSL_DIR
#   OPENSSL_VERSION
#
# - Imported shared(dynamic) libraries "ssl" and "crypto" are created.
#
# - It is assumed that OpenSSL has been built and path to OpenSSL build directory is 
#   added into system(environment) variable ROBOMONGO_CMAKE_PREFIX_PATH.
#
##################################################

# Try to find OpenSSL directory (uses CMAKE_PREFIX_PATH locations)
#-------------------------------------------
find_path(
    OpenSSL_DIR include/openssl/ssl.h
    DOC "Path to OpenSSL (github.com/openssl/openssl) root directory"
)

# Find OpenSSL version
#-------------------------------------------
set (OPENSSL_INCLUDE_DIR "${OpenSSL_DIR}/include")

function(from_hex HEX DEC)
  string(TOUPPER "${HEX}" HEX)
  set(_res 0)
  string(LENGTH "${HEX}" _strlen)

  while (_strlen GREATER 0)
    math(EXPR _res "${_res} * 16")
    string(SUBSTRING "${HEX}" 0 1 NIBBLE)
    string(SUBSTRING "${HEX}" 1 -1 HEX)
    if (NIBBLE STREQUAL "A")
      math(EXPR _res "${_res} + 10")
    elseif (NIBBLE STREQUAL "B")
      math(EXPR _res "${_res} + 11")
    elseif (NIBBLE STREQUAL "C")
      math(EXPR _res "${_res} + 12")
    elseif (NIBBLE STREQUAL "D")
      math(EXPR _res "${_res} + 13")
    elseif (NIBBLE STREQUAL "E")
      math(EXPR _res "${_res} + 14")
    elseif (NIBBLE STREQUAL "F")
      math(EXPR _res "${_res} + 15")
    else()
      math(EXPR _res "${_res} + ${NIBBLE}")
    endif()

    string(LENGTH "${HEX}" _strlen)
  endwhile()

  set(${DEC} ${_res} PARENT_SCOPE)
endfunction()

if (OPENSSL_INCLUDE_DIR)
  if(OPENSSL_INCLUDE_DIR AND EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h")
    file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" openssl_version_str
         REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])+.*")

    # The version number is encoded as 0xMNNFFPPS: major minor fix patch status
    # The status gives if this is a developer or prerelease and is ignored here.
    # Major, minor, and fix directly translate into the version numbers shown in
    # the string. The patch field translates to the single character suffix that
    # indicates the bug fix state, which 00 -> nothing, 01 -> a, 02 -> b and so
    # on.

    string(REGEX REPLACE "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F]).*$"
           "\\1;\\2;\\3;\\4;\\5" OPENSSL_VERSION_LIST "${openssl_version_str}")
    list(GET OPENSSL_VERSION_LIST 0 OPENSSL_VERSION_MAJOR)
    list(GET OPENSSL_VERSION_LIST 1 OPENSSL_VERSION_MINOR)
    from_hex("${OPENSSL_VERSION_MINOR}" OPENSSL_VERSION_MINOR)
    list(GET OPENSSL_VERSION_LIST 2 OPENSSL_VERSION_FIX)
    from_hex("${OPENSSL_VERSION_FIX}" OPENSSL_VERSION_FIX)
    list(GET OPENSSL_VERSION_LIST 3 OPENSSL_VERSION_PATCH)

    if (NOT OPENSSL_VERSION_PATCH STREQUAL "00")
      from_hex("${OPENSSL_VERSION_PATCH}" _tmp)
      # 96 is the ASCII code of 'a' minus 1
      math(EXPR OPENSSL_VERSION_PATCH_ASCII "${_tmp} + 96")
      unset(_tmp)
      # Once anyone knows how OpenSSL would call the patch versions beyond 'z'
      # this should be updated to handle that, too. This has not happened yet
      # so it is simply ignored here for now.
      string(ASCII "${OPENSSL_VERSION_PATCH_ASCII}" OPENSSL_VERSION_PATCH_STRING)
    endif ()

    set(OPENSSL_VERSION "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_FIX}${OPENSSL_VERSION_PATCH_STRING}")
  endif ()
endif ()


# Add imported ssl and crypto libraries
#-------------------------------------------
    
# Add imported target ssl (ssleay32)
add_library(ssl SHARED IMPORTED)

# Add imported target for crypto (libeay32)
add_library(crypto SHARED IMPORTED)
    
# todo: refactor
if(SYSTEM_WINDOWS)
    set_target_properties(ssl PROPERTIES
        INTERFACE_INCLUDE_DIRECTORIES   "${OpenSSL_DIR}/include"
        IMPORTED_IMPLIB                 "${OpenSSL_DIR}/libssl.lib"
    )
    set_target_properties(crypto PROPERTIES
        INTERFACE_INCLUDE_DIRECTORIES   "${OpenSSL_DIR}/include"
        IMPORTED_IMPLIB                 "${OpenSSL_DIR}/libcrypto.lib"
    )
else()
  if(SYSTEM_MACOSX)
    SET(EXT "dylib")
  elseif(SYSTEM_LINUX)
    SET(EXT "so")
  endif()
  set_target_properties(ssl PROPERTIES
      INTERFACE_INCLUDE_DIRECTORIES   "${OpenSSL_DIR}/include"
      IMPORTED_LOCATION               "${OpenSSL_DIR}/libssl.${EXT}"
  )
  set_target_properties(crypto PROPERTIES
      INTERFACE_INCLUDE_DIRECTORIES   "${OpenSSL_DIR}/include"
      IMPORTED_LOCATION               "${OpenSSL_DIR}/libcrypto.${EXT}"
  )  
endif()

# End of file

================================================
FILE: cmake/FindThreading.cmake
================================================
# This wrapper is created in order to support CMake 3.0
# Only starting from CMake 3.1 "Threads" module exports
# "Threads::Threads" target.

find_package(Threads REQUIRED)

# Support for CMake 3.0
# Export "Threads::Threads" imported target if it wasn't exported.
# This lines are taken from the "FindThreads.cmake" of CMake 3.1:
# https://github.com/Kitware/CMake/blob/v3.1.0/Modules/FindThreads.cmake
if(THREADS_FOUND AND NOT TARGET Threads::Threads)
    add_library(Threads::Threads INTERFACE IMPORTED)

    if(THREADS_HAVE_PTHREAD_ARG)
        set_property(TARGET Threads::Threads PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread")
    endif()

    if(CMAKE_THREAD_LIBS_INIT)
        set_property(TARGET Threads::Threads PROPERTY INTERFACE_LINK_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
    endif()
endif()


================================================
FILE: cmake/RobomongoCMakeDefaults.cmake
================================================
# Put the include dirs which are in the source or build tree
# before all other include dirs, so the headers in the sources
# are prefered over the already installed ones
# Since cmake 2.4.1
set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)

# Use colored output
# Since cmake 2.4.0
set(CMAKE_COLOR_MAKEFILE ON)

# MongoDB compiled with this option
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

# This variable is used by CMake "FindThreads" module
# From documentation to FindThreads module:
#   > Please note that the compiler flag can only be
#   > used with the imported target. Use of both the imported
#   > target as well as this switch is highly recommended for new code.
set(THREADS_PREFER_PTHREAD_FLAG ON)

# Set the default build type to release with debug info
if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE RelWithDebInfo
        CACHE STRING "Choose the type of build, options are: Debug, Release, RelWithDebInfo, MinSizeRel and None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used)"
        FORCE)
endif()

# Do not use Qt moc, uic and rcc by default
# Since CMake 2.8.6
set(CMAKE_AUTOMOC OFF)
set(CMAKE_AUTORCC OFF)
set(CMAKE_AUTOUIC OFF)


================================================
FILE: cmake/RobomongoCommon.cmake
================================================

set(ROBOMONGO_DISPLAY_NAME "Robo 3T")
set(ROBOMONGO_DISPLAY_FULL_NAME "Robo 3T ${PROJECT_VERSION}")


================================================
FILE: cmake/RobomongoConfigurationSummary.cmake
================================================
# Set MONGO_BUILD_FOLDER
set(MONGO_BUILD_FOLDER "build/opt")  # Release
if(CMAKE_BUILD_TYPE STREQUAL "Debug") 
    set(MONGO_BUILD_FOLDER "build/debug") 
endif()

# Show configuration summary and build tip
message("")
message(" _______________[ Robo 3T configuration summary ]________________")
message("| ")
message("|-- Dependencies:")
message("| ")
message("|   Qt5 Core:           ${Qt5Core_VERSION}    ${Qt5Core_DIR}")
message("|   Qt5 Gui:            ${Qt5Gui_VERSION}    ${Qt5Gui_DIR}")
message("|   Qt5 Widgets:        ${Qt5Widgets_VERSION}    ${Qt5Widgets_DIR}")
message("|   Qt5 PrintSupport:   ${Qt5Widgets_VERSION}    ${Qt5PrintSupport_DIR}")
message("|   Qt5 Network:        ${Qt5Network_VERSION}    ${Qt5Network_DIR}")
message("|   Qt5 Xml:            ${Qt5Xml_VERSION}    ${Qt5Xml_DIR}")
if(NOT SYSTEM_LINUX)
    message("|   Qt5 WebEng*Widgets: ${Qt5WebEngineWidgets_VERSION}    ${Qt5WebEngineWidgets_DIR}")
endif()
message("|   MongoDB:            ${MongoDB_VERSION}    ${MongoDB_DIR}")
message("|   MongoDB Objects:    ${MongoDB_VERSION}    ${MongoDB_OBJECTS_DIR}/${MONGO_BUILD_FOLDER}")
message("|   OpenSSL:            ${OPENSSL_VERSION}    ${OpenSSL_DIR}")
message("|   libssh2:            ${LIBSSH2_VERSION}     ${LIBSSH2_DIR}")
message("|   QJson:              ${QJSON_VERSION}     ${QJSON_DIR}")
message("|   QScintilla:         ${QSCINTILLA_VERSION}     ${QSCINTILLA_DIR}")
message("|   Google Test:        ${GOOGLE_TEST_VERSION}     ${GOOGLE_TEST_DIR}")
message("|   ESPRIMA:            ${ESPRIMA_VERSION}     ${ESPRIMA_DIR}")
message("|")
message("|-- Summary:")
message("|")
message("|   Version:            ${PROJECT_VERSION}")
message("|   System:             ${CMAKE_SYSTEM_NAME}")
if (SYSTEM_MACOSX)
    message("|   Target SDK:         ${CMAKE_OSX_DEPLOYMENT_TARGET}")
endif()
message("|   Build type:         ${CMAKE_BUILD_TYPE}")
message("|   Commit:             ${BUILD_NUMBER}")
message("|   Install path:       ${CMAKE_INSTALL_PREFIX}")
message("|")
message("|-- Build, Run and Install:")
message("| ")
message("|     $ bin/build")
message("|     $ bin/run")
message("|     $ bin/install")
message("|")
message("|-- Run Unit Tests:")
message("| ")
message("|     $ bin/build-and-run-tests")
message("|     $ bin/run-tests")
message("|")
message("|-- Run Static Code Analysis:")
message("|")
if (SYSTEM_WINDOWS)
    message("|     $ bin/run-cppcheck <FILE_PATH OR DIR> (Default: /src/robomongo/)")
    message("|     $ bin/run-vs-code-analysis")
else()
    message("|     $ bin/run-clang-tidy")
    message("|     $ bin/run-scan-build")
endif()
message("|__________________________________________________________________")
message("")

================================================
FILE: cmake/RobomongoDefaults.cmake
================================================
# This files defines:
#
# 1) Platform checks
#
#    SYSTEM_MACOSX
#    SYSTEM_WINDOWS
#    SYSTEM_LINUX
#    SYSTEM_FREEBSD
#    SYSTEM_OPENBSD
#    SYSTEM_NETBSD
#
# 2) Build types checks
#
#    BUILD_DEBUG
#    BUILD_RELEASE
#    BUILD_RELWITHDEBINFO
#    BUILD_MINSIZEREL
#
# 3) Link "lib groups" and "whole-archive" options
#
#    LINK_LIBGROUP_START
#    LINK_LIBGROUP_END
#    LINK_WHOLE_ARCHIVE_START
#    LINK_WHOLE_ARCHIVE_END

# Platform checks
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
    set(SYSTEM_MACOSX TRUE)
elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
    set(SYSTEM_WINDOWS TRUE)
elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
    set(SYSTEM_LINUX TRUE)
elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
    set(SYSTEM_FREEBSD TRUE)
    set(SYSTEM_BSD TRUE)
elseif(CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
    set(SYSTEM_OPENBSD TRUE)
    set(SYSTEM_BSD TRUE)
elseif(CMAKE_SYSTEM_NAME MATCHES "NetBSD")
    set(SYSTEM_NETBSD TRUE)
    set(SYSTEM_BSD TRUE)
endif()

# Build types
if("${CMAKE_BUILD_TYPE}" MATCHES "Debug")
    set(BUILD_DEBUG TRUE)
elseif("${CMAKE_BUILD_TYPE}" MATCHES "Release")
    set(BUILD_RELEASE TRUE)
elseif("${CMAKE_BUILD_TYPE}" MATCHES "RelWithDebInfo")
    set(BUILD_RELWITHDEBINFO TRUE)
elseif("${CMAKE_BUILD_TYPE}" MATCHES "MinSizeRel")
    set(BUILD_MINSIZEREL TRUE)
endif()

# Compiler checks
# We check Clang using MATCH instead of strict equality, because as of CMake 3.0.0 the
# CMAKE_<LANG>_COMPILER_ID value for Apple-provided Clang is AppleClang. To test
# for both the Apple-provided Clang and the regular Clang we use MATCH.
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
    set(COMPILER_CLANG TRUE)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "^GNU$")
    set(COMPILER_GCC TRUE)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "^MSVC$")
    set(COMPILER_MSVC TRUE)
endif()

# Link "groups" and "whole-archive" options
if(SYSTEM_LINUX OR SYSTEM_FREEBSD OR SYSTEM_OPENBSD)
    set(LINK_LIBGROUP_START        -Wl,--start-group)
    set(LINK_LIBGROUP_END          -Wl,--end-group)
    set(LINK_WHOLE_ARCHIVE_START   -Wl,--whole-archive)
    set(LINK_WHOLE_ARCHIVE_END     -Wl,--no-whole-archive)
elseif(SYSTEM_MACOSX)
    set(LINK_LIBGROUP_START        "")
    set(LINK_LIBGROUP_END          "")
    set(LINK_WHOLE_ARCHIVE_START   -Wl,-all_load)
    set(LINK_WHOLE_ARCHIVE_END     -Wl,-noall_load)
endif()


================================================
FILE: cmake/RobomongoInstall.cmake
================================================
# Note for maintainers
# --------------------
#
# Do not use absolute paths in DESTINATION arguments for install() command.
# Because the same install code will be executed again by CPack. And CPack will
# change internally CMAKE_INSTALL_PREFIX to point to some temporary folder
# for package content.
#
#


# Temporary change
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install"
    CACHE STRING "Install path prefix, prepended onto install directories"
    FORCE)

if(SYSTEM_LINUX)
    set(bin_dir             bin)
    set(lib_dir             lib)
    set(resources_dir       share)
    set(license_dir         .)

    set(qt_plugins_dir      ${lib_dir})
    set(qt_conf_dir         ${bin_dir})
    set(qt_conf_plugins     "../lib")
elseif(SYSTEM_MACOSX)
    set(bundle_name         "Robo 3T.app")
    set(contents_path       ${bundle_name}/Contents)

    set(bin_dir             ${contents_path}/MacOS)
    set(styles_dir          ${contents_path}/MacOS/styles)
    set(lib_dir             ${contents_path}/Frameworks)
    set(resources_dir       ${contents_path}/Resources)
    set(license_dir         ${resources_dir})

    set(qt_plugins_dir      ${contents_path}/PlugIns/Qt)
    set(qt_conf_dir         ${resources_dir})
    set(qt_conf_plugins     "PlugIns/Qt")
elseif(SYSTEM_WINDOWS)
    set(bin_dir             .)
    set(styles_dir          ${bin_dir}/styles)
    set(lib_dir             .)
    set(resources_dir       ./resources)
    set(license_dir         .)

    set(qt_plugins_dir      ${lib_dir})
    set(qt_conf_dir         ${bin_dir})
    set(qt_conf_plugins     .)
endif()

# Generate qt.conf file
configure_file(
    "${CMAKE_SOURCE_DIR}/install/qt.conf.in"
    "${CMAKE_BINARY_DIR}/qt.conf")

# Install qt.conf file
install(
    FILES       "${CMAKE_BINARY_DIR}/qt.conf"
    DESTINATION "${qt_conf_dir}")

# Install OpenSSL dynamic lib files
if(SYSTEM_WINDOWS)
    install(
        FILES 
        "${OpenSSL_DIR}/libssl-1_1-x64.dll"
        "${OpenSSL_DIR}/libcrypto-1_1-x64.dll"
        DESTINATION ${bin_dir})
elseif(SYSTEM_MACOSX)
    install(
        FILES 
        "${OpenSSL_DIR}/libssl.1.1.dylib"
        "${OpenSSL_DIR}/libcrypto.1.1.dylib"
        DESTINATION ${lib_dir}/lib)
elseif(SYSTEM_LINUX)
    install(
        FILES 
        "${OpenSSL_DIR}/libssl.so"
        "${OpenSSL_DIR}/libssl.so.1.0.0"        
        "${OpenSSL_DIR}/libcrypto.so"        
        "${OpenSSL_DIR}/libcrypto.so.1.0.0"
        DESTINATION ${lib_dir})         
endif()

# Install binary
install(
    TARGETS robomongo
    RUNTIME DESTINATION ${bin_dir}
    BUNDLE DESTINATION .)

# Install license, copyright and changelogs files
install(
    FILES
        ${CMAKE_SOURCE_DIR}/LICENSE
        ${CMAKE_SOURCE_DIR}/COPYRIGHT
        ${CMAKE_SOURCE_DIR}/CHANGELOG
        ${CMAKE_SOURCE_DIR}/DESCRIPTION
    DESTINATION ${license_dir})

# Install common dependencies
SET(QT_LIBS Core Gui Widgets PrintSupport Network Xml)
if(NOT SYSTEM_LINUX)
    SET(QT_LIBS ${QT_LIBS} WebEngineWidgets WebEngineCore Quick 
                           QuickWidgets WebChannel Qml Positioning)
endif()
install_qt_lib(${QT_LIBS})
install_qt_plugins(QGifPlugin QICOPlugin)
install_icu_libs()
set(QT_STYLES_DIR ${Qt5Core_DIR}/../../../plugins/styles/)
set(QT_BIN_DIR ${Qt5Core_DIR}/../../../bin/)
set(QT_RESOURCES_DIR ${Qt5Core_DIR}/../../../resources/)

if(SYSTEM_LINUX)
    install_qt_lib(XcbQpa DBus)
    install_qt_plugins(
        QXcbIntegrationPlugin)
        
    install(
        FILES
            "/usr/lib/x86_64-linux-gnu/libstdc++.so.6"
            "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28"              
        DESTINATION ${lib_dir})
elseif(SYSTEM_MACOSX)
    install_qt_lib(MacExtras DBus)
    install_qt_plugins(
        QCocoaIntegrationPlugin
        QMinimalIntegrationPlugin
        QOffscreenIntegrationPlugin)

    # Install icon
    install(
        FILES       "${CMAKE_SOURCE_DIR}/install/macosx/robomongo.icns"
        DESTINATION "${resources_dir}")

    # Install styles    
    install(FILES "${QT_STYLES_DIR}/libqmacstyle.dylib" DESTINATION ${styles_dir})
elseif(SYSTEM_WINDOWS)
    install_qt_plugins(
        QWindowsIntegrationPlugin
        QMinimalIntegrationPlugin
        QOffscreenIntegrationPlugin)

    # Qt WebEngine dependencies
    install(DIRECTORY ${QT_RESOURCES_DIR} DESTINATION ${resources_dir})
    install(FILES 
                "${QT_BIN_DIR}/libEGL.dll"
                "${QT_BIN_DIR}/libGLESv2.dll" 
                "${QT_BIN_DIR}/opengl32sw.dll" 
                "${QT_BIN_DIR}/QtWebEngineProcess.exe" 
            DESTINATION ${bin_dir})

    # Install Styles
    install(FILES "${QT_STYLES_DIR}/qwindowsvistastyle.dll" DESTINATION ${styles_dir})

    # Install runtime libraries:
    # msvcp120.dll
    # msvcr120.dll
    set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION .)
    include(InstallRequiredSystemLibraries)
endif()


================================================
FILE: cmake/RobomongoInstallQt.cmake
================================================
function(install_qt_lib)
    foreach(module ${ARGV})
        set(target_name Qt5::${module})
        set(module_name Qt5${module})

        # Get full path to some known Qt library (i.e. /path/to/lib/libQt5Widgets.so.5.5.1)
        get_target_property(target_path Qt5::Core LOCATION)

        # Get folder path of library (i.e. /path/to/lib)
        get_filename_component(qt_lib_dir ${target_path} DIRECTORY)

        if (SYSTEM_LINUX)
            # Not very good solution, but we simply take all files with *Qt5<module>* in names (including symlinks)
            file(GLOB module_libs ${qt_lib_dir}/${CMAKE_SHARED_LIBRARY_PREFIX}${module_name}*)

            # Install to "lib" folder
            install(FILES ${module_libs}
                DESTINATION ${lib_dir})
        endif()

        if(SYSTEM_MACOSX)
            set(module_name Qt${module})

            # On Mac OS we are still located in .framework folder,
            # and we need to go one level up
            get_filename_component(qt_lib_dir ${qt_lib_dir} DIRECTORY)

            install(
                DIRECTORY ${qt_lib_dir}/${module_name}.framework
                DESTINATION ${lib_dir}
                USE_SOURCE_PERMISSIONS
                PATTERN "*_debug" EXCLUDE      # Exclude debug libraries
                PATTERN "Headers" EXCLUDE)     # Exclude Headers folders
        endif()

        if (SYSTEM_WINDOWS)
            # Install single DLL to lib directory
            install(FILES ${qt_lib_dir}/${module_name}${CMAKE_SHARED_LIBRARY_SUFFIX}
                    DESTINATION ${lib_dir})
        endif()

    endforeach()
endfunction()

function(install_icu_libs)
    # We are trying to get 'lib' folder of Qt installation.
    # For this we take some known target (Qt5::Core in this case)
    # and taking path to this library.

    # Get full path to known library (i.e. /path/to/lib/libQt5Core.so.5.5.1)
    get_target_property(target_path Qt5::Core LOCATION)

    # Get absolute path to 'lib' folder (which is a parent folder of 'known' library)
    get_filename_component(qt_lib_dir ${target_path} DIRECTORY)

    # Not very good solution, but we simply take all files with *icu* in names (including symlinks)
    file(GLOB icu_libs ${qt_lib_dir}/${CMAKE_SHARED_LIBRARY_PREFIX}icu*)

    # Install to "lib" folder
    install(FILES ${icu_libs}
        DESTINATION ${lib_dir})
endfunction()

# Installs Qt5 plugins. Uses value of global variable "qt_plugins_dir" as
# absolute path to where install plugins.
#
# You can find list of plugin names by examing this variable: Qt5<Module>_PLUGINS
# For example, Qt5Gui_PLUGINS.
#
# Debug plugins, running application in this way:
# QT_DEBUG_PLUGINS=1 ./yourapp
#
# Some examples of plugin names:
# QGifPlugin, QGtk2ThemePlugin, QIbusPlatformInputContextPlugin
#
# Sample:
#    install_qt_plugins(QGifPlugin QGtk2ThemePlugin QIbusPlatformInputContextPlugin)
#
function(install_qt_plugins)
    foreach(name ${ARGV})
        set(target_name Qt5::${name})

        # We are trying to get 'plugins' folder of Qt installation.

        # Get full path to plugin library (i.e. /path/to/plugins/imageformats/libqgif.so)
        get_target_property(target_path ${target_name} LOCATION)

        # Get absolute path to parent folder (i.e. /path/to/plugins/imageformats for Qt5::QGifPlugin)
        get_filename_component(plugin_dir ${target_path} DIRECTORY)

        # Get plugin parent directory (i.e. "imageformats" for Qt5::QGifPlugin)
        get_filename_component(plugin_dir_name ${plugin_dir} NAME)

        # Get plugin file name (i.e. "libqgif.so" for Qt5::QGifPlugin)
        get_filename_component(plugin_file_name ${target_path} NAME)

        # Get absolute path to plugins folder (i.e. /path/to/plugins)
        get_filename_component(plugins_dir ${plugin_dir} DIRECTORY)

        # Install to "lib" folder
        install(
            FILES ${target_path}
            DESTINATION ${qt_plugins_dir}/${plugin_dir_name})
    endforeach()
endfunction()



================================================
FILE: cmake/RobomongoPackage.cmake
================================================
# Notes for maintainers.
#
# 1. Make sure that we use only lowercase letters in file name of outputed
#    package for all platforms and package types.
#

# Get last commit hash
execute_process(
    COMMAND git rev-parse --short HEAD
    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
    OUTPUT_VARIABLE git_hash
    OUTPUT_STRIP_TRAILING_WHITESPACE)

# Timestamp (not used for now)
string(TIMESTAMP timestamp "%Y-%m-%d")

# Package name (as it should appear in UI)
set(CPACK_PACKAGE_NAME robo3t)

# Version of the package
set(CPACK_PACKAGE_VERSION_MAJOR     ${PROJECT_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR     ${PROJECT_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH     ${PROJECT_VERSION_PATCH})
set(CPACK_PACKAGE_VERSION           ${PROJECT_VERSION})

# Where to put generated package
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR}/package)

# Disables the component-based install process for installers
# that support it (NSIS, for instance)
set(CPACK_MONOLITHIC_INSTALL ON)

# Strip debug information on platforms that support it
set(CPACK_STRIP_FILES ON)

# Additional information
set(CPACK_PACKAGE_VENDOR "3T Software Labs Ltd")
set(CPACK_PACKAGE_CONTACT robo3t@3t.io)
set(CPACK_PACKAGE_DESCRIPTION "Shell-centric cross-platform MongoDB management tool.")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Robo 3T is a shell-centric cross-platform MongoDB management tool.")

# Use lowercase for system name and package file name
string(TOLOWER ${CMAKE_SYSTEM_NAME} system_name)
string(TOLOWER ${CPACK_PACKAGE_NAME} package_file_name)
string(TOLOWER ${CPACK_PACKAGE_VERSION} package_file_version)

# We use function from TargetArch.cmake module
# Returns string with target architecture value
# Output for common architectures is: i386 or x86_64
target_architecture(target_arch)

# Package file name
set(CPACK_PACKAGE_FILE_NAME ${package_file_name}-${package_file_version}-${system_name}-${target_arch}-${git_hash})

if(SYSTEM_LINUX)
    set(CPACK_GENERATOR TGZ)


elseif(SYSTEM_MACOSX)
    set(CPACK_GENERATOR DragNDrop)
    set(CPACK_DMG_DS_STORE ${CMAKE_SOURCE_DIR}/install/macosx/DMG_DS_Store)

elseif(SYSTEM_WINDOWS)
    set(files_dir "${CMAKE_SOURCE_DIR}/install/windows")
    set(exe_name "robo3t.exe")

    set(CPACK_GENERATOR NSIS ZIP)
    set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/DESCRIPTION")

    # License file will be shown in the installation wizard
    set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")

    # Default installation directory (not full path), just the path after
    # default "c:\Program Files"
    set(CPACK_PACKAGE_INSTALL_DIRECTORY "${ROBOMONGO_DISPLAY_FULL_NAME}")

    # A path to the executable inside installed package that contains icon
    # This icon is used in Windows "Add or remove programs" control panel
    set(CPACK_NSIS_INSTALLED_ICON_NAME "\\\\${exe_name}")

    # Create shortcuts on desktop and start-up menu
    set(CPACK_NSIS_CREATE_ICONS_EXTRA "
        CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${ROBOMONGO_DISPLAY_FULL_NAME}.lnk' '$INSTDIR\\\\${exe_name}'
        CreateShortCut '$DESKTOP\\\\${ROBOMONGO_DISPLAY_FULL_NAME}.lnk' '$INSTDIR\\\\${exe_name}'
    ")

    # Cleanup during uninstallation. This cleanup is required because shortcuts
    # will not be deleted automatically.
    # Without line '!insertmacro...' shortcut in start menu will not be removed
    # (i.e. it doesn't work when we referece '$STARTMENU_FOLDER' that is used
    # when creating shortcuts). This solution was found somewhere in internet.
    set(CPACK_NSIS_DELETE_ICONS_EXTRA "
        !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
        Delete '$DESKTOP\\\\${ROBOMONGO_DISPLAY_FULL_NAME}.lnk'
        Delete '$SMPROGRAMS\\\\$MUI_TEMP\\\\${ROBOMONGO_DISPLAY_FULL_NAME}.lnk'
    ")

    # The title displayed at the top of the installer
    set(CPACK_NSIS_PACKAGE_NAME "${ROBOMONGO_DISPLAY_FULL_NAME}")

    # Installer images (for sidebar and topbar)
    set(CPACK_PACKAGE_ICON "${files_dir}\\\\nsis-topbar.bmp")
    set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "!define MUI_WELCOMEFINISHPAGE_BITMAP \\\"${files_dir}\\\\nsis-sidebar.bmp\\\"")

    # URL to a web site providing more information about application
    # This url was noticed at least in "Add or remove programs" control
    # panel.
    set(CPACK_NSIS_URL_INFO_ABOUT "www.robomongo.org")

    # Specify an executable to add an option to run on the finish
    # page of the NSIS installer. Without "..\\\\" it dowsn't work for NSIS 2.5
    set(CPACK_NSIS_MUI_FINISHPAGE_RUN "..\\\\${exe_name}")

    # Trying to set for installer and uninstaller, but this is
    # doesn't work and default icons are still used...
    set(CPACK_NSIS_MUI_ICON "${files_dir}\\\\robomongo.ico")
    set(CPACK_NSIS_MUI_UNIICON "${files_dir}\\\\robomongo.ico")
endif()

include(CPack)


================================================
FILE: cmake/RobomongoPrintUtils.cmake
================================================
###
# Prints CMake variables.
#
# Print all variables in the current scope:
#
# print_vars()
# print_vars("")           # the same result, as previous line
#
# Print all variables with names, matching regex, case insensitive:
#
# print_vars("SOMEVAR")
# print_vars("someVar")    # the same result, as previous line
# print_vars("^CMAKE")       # print all variables, that starts from "CMAKE"
# print_vars("VAR$")       # ends by "VAR"
# print_vars("^VAR$")      # exact match
#
function(print_vars)
    if(ARGV0)
        set(regex ${ARGV0})
    endif()
    get_cmake_property(names VARIABLES)
    foreach(name ${names})
        # Make lowercase variants for case-insensitive comparing
        string(TOLOWER "${name}" lc_name)
        string(TOLOWER "${regex}" lc_regex)

        if(lc_name MATCHES "${lc_regex}")
            message("${name}=${${name}}")
        endif()
    endforeach()
endfunction()


###
# Print content of variable.
#
# print_var(PROJECT_NAME)
# print_var("PROJECT_NAME")   # the same result as previous line
#
function(print_var name)

    # Show nice output for not defined or empty variables
    if(NOT DEFINED ${name})
        set(value " is not defined.")
    elseif("${${name}}" STREQUAL "")
        set(value " is defined but empty.")
    else()
        set(value "=${${name}}")
    endif()

    message("${name}${value}")
endfunction()

###
# Prints included directories
#
function(print_include_dirs)
    get_property(dirs DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
    foreach(dir ${dirs})
        message("${dir}")
    endforeach()
endfunction()

###
# Prints link directories
#
function(print_link_dirs)
    get_property(dirs DIRECTORY PROPERTY LINK_DIRECTORIES)
    foreach(dir ${dirs})
        message("${dir}")
    endforeach()
endfunction()

###
# Prints compile definitions
#
function(print_compile_definitions)
    get_property(defs DIRECTORY PROPERTY COMPILE_DEFINITIONS)
    foreach(def ${defs})
        message("${def}")
    endforeach()
endfunction()


###
# Prints target include directories
#
function(print_target_include_dirs target)
    get_property(dirs TARGET ${target} PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
    foreach(dir ${dirs})
        message("${dir}")
    endforeach()
endfunction()

###
# Prints target compile definitions
#
function(print_target_compile_definitions target)
    get_property(defs TARGET ${target} PROPERTY INTERFACE_COMPILE_DEFINITIONS)
    foreach(def ${defs})
        message("${def}")
    endforeach()
endfunction()

###
# Prints target link libraries
#
function(print_target_link_libraries target)
    get_property(defs TARGET ${target} PROPERTY INTERFACE_LINK_LIBRARIES)
    foreach(def ${defs})
        message("${def}")
    endforeach()
endfunction()

###
# Prints Qt5 module plugins
#
function(print_qt_module_plugins module)
    foreach(plugin ${Qt5${module}_PLUGINS})
        get_target_property(loc ${plugin} LOCATION)
        message("Plugin ${plugin} is at location ${loc}")
    endforeach()
endfunction()


================================================
FILE: cmake/RobomongoTargetArch.cmake
================================================
# Copyright (c) 2012 Petroules Corporation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
# following conditions are met:
#
# Redistributions of source code must retain the above copyright notice, this list of conditions and the following
# disclaimer.
#
# Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.

# Based on the Qt 5 processor detection code, so should be very accurate
# https://qt.gitorious.org/qt/qtbase/blobs/master/src/corelib/global/qprocessordetection.h
# Currently handles arm (v5, v6, v7), x86 (32/64), ia64, and ppc (32/64)

# Regarding POWER/PowerPC, just as is noted in the Qt source,
# "There are many more known variants/revisions that we do not handle/detect."

set(archdetect_c_code "
#if defined(__arm__) || defined(__TARGET_ARCH_ARM)
    #if defined(__ARM_ARCH_7__) \\
        || defined(__ARM_ARCH_7A__) \\
        || defined(__ARM_ARCH_7R__) \\
        || defined(__ARM_ARCH_7M__) \\
        || (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 7)
        #error cmake_ARCH armv7
    #elif defined(__ARM_ARCH_6__) \\
        || defined(__ARM_ARCH_6J__) \\
        || defined(__ARM_ARCH_6T2__) \\
        || defined(__ARM_ARCH_6Z__) \\
        || defined(__ARM_ARCH_6K__) \\
        || defined(__ARM_ARCH_6ZK__) \\
        || defined(__ARM_ARCH_6M__) \\
        || (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 6)
        #error cmake_ARCH armv6
    #elif defined(__ARM_ARCH_5TEJ__) \\
        || (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 5)
        #error cmake_ARCH armv5
    #else
        #error cmake_ARCH arm
    #endif
#elif defined(__i386) || defined(__i386__) || defined(_M_IX86)
    #error cmake_ARCH i386
#elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64)
    #error cmake_ARCH x86_64
#elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
    #error cmake_ARCH ia64
#elif defined(__ppc__) || defined(__ppc) || defined(__powerpc__) \\
      || defined(_ARCH_COM) || defined(_ARCH_PWR) || defined(_ARCH_PPC)  \\
      || defined(_M_MPPC) || defined(_M_PPC)
    #if defined(__ppc64__) || defined(__powerpc64__) || defined(__64BIT__)
        #error cmake_ARCH ppc64
    #else
        #error cmake_ARCH ppc
    #endif
#endif

#error cmake_ARCH unknown
")

# Set ppc_support to TRUE before including this file or ppc and ppc64
# will be treated as invalid architectures since they are no longer supported by Apple

function(target_architecture output_var)
    if(APPLE AND CMAKE_OSX_ARCHITECTURES)
        # On OS X we use CMAKE_OSX_ARCHITECTURES *if* it was set
        # First let's normalize the order of the values

        # Note that it's not possible to compile PowerPC applications if you are using
        # the OS X SDK version 10.6 or later - you'll need 10.4/10.5 for that, so we
        # disable it by default
        # See this page for more information:
        # http://stackoverflow.com/questions/5333490/how-can-we-restore-ppc-ppc64-as-well-as-full-10-4-10-5-sdk-support-to-xcode-4

        # Architecture defaults to i386 or ppc on OS X 10.5 and earlier, depending on the CPU type detected at runtime.
        # On OS X 10.6+ the default is x86_64 if the CPU supports it, i386 otherwise.

        foreach(osx_arch ${CMAKE_OSX_ARCHITECTURES})
            if("${osx_arch}" STREQUAL "ppc" AND ppc_support)
                set(osx_arch_ppc TRUE)
            elseif("${osx_arch}" STREQUAL "i386")
                set(osx_arch_i386 TRUE)
            elseif("${osx_arch}" STREQUAL "x86_64")
                set(osx_arch_x86_64 TRUE)
            elseif("${osx_arch}" STREQUAL "ppc64" AND ppc_support)
                set(osx_arch_ppc64 TRUE)
            else()
                message(FATAL_ERROR "Invalid OS X arch name: ${osx_arch}")
            endif()
        endforeach()

        # Now add all the architectures in our normalized order
        if(osx_arch_ppc)
            list(APPEND ARCH ppc)
        endif()

        if(osx_arch_i386)
            list(APPEND ARCH i386)
        endif()

        if(osx_arch_x86_64)
            list(APPEND ARCH x86_64)
        endif()

        if(osx_arch_ppc64)
            list(APPEND ARCH ppc64)
        endif()
    else()
        file(WRITE "${CMAKE_BINARY_DIR}/arch.c" "${archdetect_c_code}")

        enable_language(C)

        # Detect the architecture in a rather creative way...
        # This compiles a small C program which is a series of ifdefs that selects a
        # particular #error preprocessor directive whose message string contains the
        # target architecture. The program will always fail to compile (both because
        # file is not a valid C program, and obviously because of the presence of the
        # #error preprocessor directives... but by exploiting the preprocessor in this
        # way, we can detect the correct target architecture even when cross-compiling,
        # since the program itself never needs to be run (only the compiler/preprocessor)
        try_run(
            run_result_unused
            compile_result_unused
            "${CMAKE_BINARY_DIR}"
            "${CMAKE_BINARY_DIR}/arch.c"
            COMPILE_OUTPUT_VARIABLE ARCH
            CMAKE_FLAGS CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
        )

        # Parse the architecture name from the compiler output
        string(REGEX MATCH "cmake_ARCH ([a-zA-Z0-9_]+)" ARCH "${ARCH}")

        # Get rid of the value marker leaving just the architecture name
        string(REPLACE "cmake_ARCH " "" ARCH "${ARCH}")

        # If we are compiling with an unknown architecture this variable should
        # already be set to "unknown" but in the case that it's empty (i.e. due
        # to a typo in the code), then set it to unknown
        if (NOT ARCH)
            set(ARCH unknown)
        endif()
    endif()

    set(${output_var} "${ARCH}" PARENT_SCOPE)
endfunction()

================================================
FILE: cmake/RobomongoTrashSymbols.cmake
================================================
if(SYSTEM_LINUX OR SYSTEM_MACOSX)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
elseif(SYSTEM_WINDOWS)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_UNICODE -DUNICODE -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS -DBOOST_ALL_NO_LIB")

    # Do not show some warnings. We turned off the same warnings as MongoDB do
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4355 /wd4800 /wd4267 /wd4244 /wd4290 /wd4068 /wd4351")

    # The /MP option can reduce the total time to compile the source files. This option
    # causes the compiler to create one or more copies of itself, each in a separate process.
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
    set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} /MP")

    set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} psapi.lib bcrypt.lib Iphlpapi.lib dbghelp.lib ws2_32.lib winmm.lib version.lib")
endif()

set(PROJECT_NAME "Robo 3T")
set(PROJECT_NAME_TITLE ${PROJECT_NAME})
set(PROJECT_DOMAIN "www.robomongo.org")
set(PROJECT_COMPANYNAME "3T Software Labs Ltd")
set(PROJECT_COPYRIGHT "Copyright (C) 2014-2017 ${PROJECT_COMPANYNAME} All Rights Reserved.")
set(PROJECT_COMPANYNAME_DOMAIN "https://studio3t.com/")
set(PROJECT_GITHUB_FORK "www.github.com/Studio3T/robomongo")
set(PROJECT_GITHUB_ISSUES "www.github.com/Studio3T/robomongo/issues")

string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWERCASE)


================================================
FILE: cmake/mongodb/README.md
================================================

See these docs for the latest info about this topic:
-------------
- [Build Robo 3T - Mac OS X and Linux](https://github.com/paralect/robomongo/blob/master/docs/BuildRobo3TOnMacAndLinux.md) 
- [Build Robo 3T - Windows](https://github.com/paralect/robomongo/blob/master/docs/BuildRobo3TOnWindows.md)

------------------------------------  

What is this? 
-------------

Files in this folder are read by FindMongoDB.cmake script.

We link with MongoDB shell using objects instead of static libs, because:

> We require the use of the 'object' mode for release builds because it is the only linking
> model that works across all of our platforms. We would like to ensure that all of our
> released artifacts are built with the same known-good-everywhere model.

This is a quote from root SConstruct file in MongoDB repository. 

It is possible to build MongoDB shell in the following way:

    $ scons mongo --link-model=static
    
Than we will have produced static libs that we can link with. But in release mode MongoDB 
SConstruct file do not support static link mode by default. This command will *not* work:

    $ scons mongo --release --link-model=static
    
We decided to use object link mode even for debug builds, in order to use single mode across 
all platforms and configurations. 

How did you receive content for this files?
-------------------------------------------

First we build MongoDB shell with the following command:

    $ scons mongo -j8 --release
    
Than we remove compiled `mongo` and run the same command again to see only final link command:

    $ rm build/opt/mongo/mongo
    $ scons mongo -j8 --release > release-link-command.txt
    
And finally we manually copy/paste list of objects to `<platform>-release.objects` file. Make sure 
that they are single-line files. 

Almost the same steps we are doing for debug builds:

    $ scons mongo -j8 --dbg
    $ rm build/debug/mongo/mongo
    $ scons mongo -j8 --dbg > debug-link-command.txt
    
And list of objects is copied to `<platform>-debug.objects` file.

We found, that on Linux (Ubuntu 14.10), list of debug objects differ from list of release objects only 
by two files. File `debugallocation.o` is linked in debug mode, but not in release. 
File `debugallocation.o` is linked in release mode, but not in debug. Both are located 
in `third_party/gperftools-2.2/src` folder. In any way, we keep separate lists of object files 
for both configurations. Still we need to test that objects are the same even across different 
versions of Linux.



================================================
FILE: cmake/mongodb/linux-debug.objects
================================================
build/debug/third_party/icu4c-57.1/source/i18n/nfrs.o build/debug/mongo/db/index/expression_keys_private.o build/debug/third_party/gperftools-2.7/dist/src/emergency_malloc_for_stacktrace.o build/debug/third_party/icu4c-57.1/source/i18n/pluralaffix.o build/debug/third_party/icu4c-57.1/source/i18n/translit.o build/debug/mongo/shell/bench.o build/debug/third_party/boost-1.70.0/libs/program_options/src/winmain.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_finnish.o build/debug/mongo/util/net/hostandport.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_lround.o build/debug/mongo/db/pipeline/aggregation_request.o build/debug/mongo/s/request_types/create_collection_gen.o build/debug/third_party/s2/s2regioncoverer.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_log2.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/strtod32.o build/debug/mongo/util/net/ssl_parameters_gen.o build/debug/third_party/icu4c-57.1/source/common/ucnv_bld.o build/debug/mongo/db/matcher/extensions_callback_noop.o build/debug/third_party/icu4c-57.1/source/i18n/coleitr.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid128_next.o build/debug/third_party/yaml-cpp-0.6.2/src/contrib/graphbuilderadapter.o build/debug/mongo/client/dbclient_cursor.o build/debug/mongo/s/request_types/add_shard_to_zone_request_type.o build/debug/third_party/mozjs-60/extract/mozglue/misc/Printf.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid128_to_int8.o build/debug/third_party/icu4c-57.1/source/i18n/vtzone.o build/debug/mongo/transport/message_compressor_manager.o build/debug/mongo/s/request_types/add_shard_request_type.o build/debug/third_party/icu4c-57.1/source/i18n/tztrans.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_logb.o build/debug/mongo/crypto/symmetric_key.o build/debug/mongo/crypto/symmetric_crypto_openssl.o build/debug/mongo/crypto/symmetric_crypto.o build/debug/third_party/zstandard-1.3.7/zstd/lib/compress/zstd_lazy.o build/debug/mongo/util/errno_util.o build/debug/mongo/scripting/mozjs/mongohelpers_js.o build/debug/third_party/icu4c-57.1/source/i18n/tzfmt.o build/debug/mongo/db/matcher/expression_with_placeholder.o build/debug/third_party/zstandard-1.3.7/zstd/lib/common/zstd_common.o build/debug/mongo/db/fts/fts_matcher.o build/debug/third_party/boost-1.70.0/libs/program_options/src/utf8_codecvt_facet.o build/debug/third_party/boost-1.70.0/libs/program_options/src/parsers.o build/debug/third_party/boost-1.70.0/libs/program_options/src/options_description.o build/debug/third_party/boost-1.70.0/libs/program_options/src/split.o build/debug/third_party/boost-1.70.0/libs/program_options/src/variables_map.o build/debug/third_party/boost-1.70.0/libs/program_options/src/cmdline.o build/debug/third_party/boost-1.70.0/libs/program_options/src/config_file.o build/debug/third_party/boost-1.70.0/libs/program_options/src/value_semantic.o build/debug/third_party/boost-1.70.0/libs/program_options/src/convert.o build/debug/third_party/boost-1.70.0/libs/program_options/src/positional_options.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src27.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/e_acos.o build/debug/third_party/icu4c-57.1/source/common/ucnv.o build/debug/mongo/s/request_types/balance_chunk_request_type.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_asin.o build/debug/third_party/mozjs-60/extract/js/src/jit/x86-shared/Disassembler-x86-shared.o build/debug/mongo/base/global_initializer_registerer.o build/debug/third_party/gperftools-2.7/dist/src/thread_cache.o build/debug/third_party/icu4c-57.1/source/i18n/uregion.o build/debug/third_party/yaml-cpp-0.6.2/src/node.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid64_to_int32.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/wcstod32.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid128_rem.o build/debug/mongo/s/catalog/type_locks.o build/debug/mongo/executor/network_interface_tl.o build/debug/mongo/util/net/private/socket_poll.o build/debug/mongo/util/net/sock.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/float128/dpml_ux_trig.o build/debug/third_party/icu4c-57.1/source/common/unistr_case.o build/debug/mongo/s/catalog/type_config_version.o build/debug/mongo/db/auth/address_restriction.o build/debug/mongo/db/auth/address_restriction_gen.o build/debug/third_party/s2/s2loop.o build/debug/mongo/scripting/mozjs/db.o build/debug/mongo/db/commands/test_commands_enabled.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid128_to_uint32.o build/debug/mongo/db/query/collation/collation_index_key.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/e_exp.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src29.o build/debug/mongo/rpc/metadata/impersonated_user_metadata_gen.o build/debug/third_party/icu4c-57.1/source/common/uarrsort.o build/debug/mongo/util/net/http_client_curl.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid64_quantexpd.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_compare.o build/debug/third_party/yaml-cpp-0.6.2/src/exceptions.o build/debug/mongo/db/commands/test_commands_enabled_gen.o build/debug/third_party/icu4c-57.1/source/i18n/utf16collationiterator.o build/debug/mongo/db/repl/repl_settings_gen.o build/debug/third_party/icu4c-57.1/source/i18n/rbt_pars.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid64_fma.o build/debug/mongo/client/replica_set_change_notifier.o build/debug/mongo/db/server_options_helpers_gen.o build/debug/third_party/icu4c-57.1/source/common/servls.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid64_atanh.o build/debug/mongo/transport/message_compressor_registry.o build/debug/mongo/transport/message_compressor_metrics.o build/debug/mongo/transport/message_compressor_snappy.o build/debug/mongo/transport/message_compressor_zstd.o build/debug/mongo/transport/message_compressor_zlib.o build/debug/third_party/icu4c-57.1/source/i18n/fphdlimp.o build/debug/third_party/pcre-8.42/pcre_scanner.o build/debug/mongo/scripting/mozjs/maxkey.o build/debug/mongo/bson/bson_comparator_interface_base.o build/debug/mongo/db/catalog/index_catalog.o build/debug/third_party/icu4c-57.1/source/i18n/rbtz.o build/debug/third_party/pcre-8.42/pcre_globals.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid128_exp2.o build/debug/mongo/util/concurrency/thread_name.o build/debug/third_party/yaml-cpp-0.6.2/src/emitter.o build/debug/third_party/icu4c-57.1/source/common/dtintrv.o build/debug/mongo/util/periodic_runner.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_lgamma.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src16.o build/debug/mongo/db/repl_set_member_in_standalone_mode.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_atanh.o build/debug/mongo/db/query/datetime/date_time_support.o build/debug/mongo/scripting/mozjs/session.o build/debug/mongo/rpc/object_check.o build/debug/third_party/icu4c-57.1/source/common/ustr_cnv.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid64_asin.o build/debug/mongo/util/fail_point.o build/debug/mongo/db/query/hint_gen.o build/debug/mongo/scripting/mozjs/proxyscope.o build/debug/mongo/platform/decimal128.o build/debug/mongo/s/request_types/get_database_version_gen.o build/debug/mongo/platform/posix_fadvise.o build/debug/third_party/icu4c-57.1/source/i18n/sortkey.o build/debug/mongo/scripting/mozjs/status.o build/debug/third_party/icu4c-57.1/source/i18n/csrsbcs.o build/debug/mongo/shell/shell_options_gen.o build/debug/mongo/rpc/metadata/repl_set_metadata.o build/debug/third_party/yaml-cpp-0.6.2/src/convert.o build/debug/mongo/db/fts/unicode/codepoints_delimiter_list.o build/debug/mongo/db/pipeline/exchange_spec_gen.o build/debug/third_party/zlib-1.2.11/inftrees.o build/debug/mongo/db/dbmessage.o build/debug/third_party/fmt/dist/src/posix.o build/debug/third_party/fmt/dist/src/format.o build/debug/mongo/s/request_types/clone_collection_options_from_primary_shard_gen.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_hungarian.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_porter.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_dutch.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_russian.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_romanian.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_danish.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_portuguese.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_french.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_italian.o build/debug/third_party/libstemmer_c/runtime/api.o build/debug/third_party/libstemmer_c/libstemmer/libstemmer_utf8.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_swedish.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_german.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_spanish.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_norwegian.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_turkish.o build/debug/third_party/libstemmer_c/src_c/stem_UTF_8_english.o build/debug/mongo/db/matcher/schema/expression_internal_schema_str_length.o build/debug/third_party/icu4c-57.1/source/i18n/msgfmt.o build/debug/third_party/abseil-cpp-master/abseil-cpp/absl/hash/internal/city.o build/debug/mongo/util/net/hostandport_gen.o build/debug/mongo/transport/transport_layer.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/e_log10.o build/debug/third_party/s2/s1angle.o build/debug/mongo/util/debugger.o build/debug/mongo/db/repl/bson_extract_optime.o build/debug/third_party/icu4c-57.1/source/i18n/collationfastlatin.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_to_uint64.o build/debug/third_party/icu4c-57.1/source/common/ucharstriebuilder.o build/debug/third_party/icu4c-57.1/source/i18n/search.o build/debug/mongo/util/background.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_fdimd.o build/debug/mongo/s/catalog/mongo_version_range.o build/debug/third_party/icu4c-57.1/source/i18n/regextxt.o build/debug/mongo/util/secure_compare_memory.o build/debug/mongo/logger/component_message_log_domain.o build/debug/third_party/icu4c-57.1/source/i18n/affixpatternparser.o build/debug/third_party/icu4c-57.1/source/i18n/collationdatawriter.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid64_fdimd.o build/debug/mongo/db/commands/server_status.o build/debug/mongo/scripting/mozjs/engine.o build/debug/third_party/icu4c-57.1/source/common/usetiter.o build/debug/third_party/icu4c-57.1/source/common/locdispnames.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_from_int.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid64_cbrt.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src0.o build/debug/mongo/util/options_parser/value.o build/debug/third_party/icu4c-57.1/source/i18n/rulebasedcollator.o build/debug/mongo/db/index/sort_key_generator.o build/debug/third_party/icu4c-57.1/source/common/uniset.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_tan.o build/debug/mongo/db/fts/fts_unicode_tokenizer.o build/debug/third_party/icu4c-57.1/source/i18n/region.o build/debug/third_party/icu4c-57.1/source/i18n/tridpars.o build/debug/third_party/icu4c-57.1/source/i18n/tmunit.o build/debug/third_party/icu4c-57.1/source/common/servslkf.o build/debug/third_party/pcre-8.42/pcre_get.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_string.o build/debug/third_party/asio-master/asio/src/asio.o build/debug/mongo/s/request_types/remove_shard_from_zone_request_type.o build/debug/third_party/timelib-2018.01/parse_iso_intervals.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid64_to_bid128.o build/debug/third_party/mozjs-60/extract/js/src/vm/JSAtom.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid128_frexp.o build/debug/third_party/icu4c-57.1/source/i18n/collationbuilder.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src40.o build/debug/mongo/base/data_type_terminated.o build/debug/third_party/icu4c-57.1/source/i18n/repattrn.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src45.o build/debug/mongo/util/platform_init.o build/debug/mongo/db/auth/authorization_session.o build/debug/mongo/db/auth/role_name.o build/debug/mongo/db/auth/auth_decorations.o build/debug/mongo/db/auth/authorization_manager.o build/debug/mongo/db/auth/user_name.o build/debug/mongo/db/keys_collection_document.o build/debug/third_party/icu4c-57.1/source/i18n/uspoof.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid64_scalb.o build/debug/mongo/db/commands/server_status_internal.o build/debug/mongo/db/logical_clock_gen.o build/debug/mongo/db/logical_clock.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_rem.o build/debug/mongo/util/net/socket_exception.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_log1p.o build/debug/third_party/icu4c-57.1/source/common/normalizer2.o build/debug/mongo/util/net/hostname_canonicalization.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid128_expm1.o build/debug/third_party/icu4c-57.1/source/i18n/coll.o build/debug/mongo/db/baton.o build/debug/mongo/db/operation_context.o build/debug/mongo/db/unclean_shutdown.o build/debug/mongo/db/server_recovery.o build/debug/mongo/db/service_context.o build/debug/mongo/db/default_baton.o build/debug/mongo/db/client.o build/debug/mongo/db/operation_context_group.o build/debug/mongo/db/query/getmore_request.o build/debug/third_party/icu4c-57.1/source/common/pluralmap.o build/debug/mongo/db/matcher/expression_array.o build/debug/third_party/icu4c-57.1/source/i18n/collationdata.o build/debug/third_party/shim_timelib.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src20.o build/debug/third_party/icu4c-57.1/source/common/uhash.o build/debug/third_party/icu4c-57.1/source/common/cmemory.o build/debug/mongo/db/keypattern.o build/debug/third_party/icu4c-57.1/source/i18n/digitgrouping.o build/debug/third_party/icu4c-57.1/source/i18n/tmutfmt.o build/debug/third_party/icu4c-57.1/source/i18n/tznames.o build/debug/mongo/s/request_types/move_primary_gen.o build/debug/mongo/util/fail_point_server_parameter_gen.o build/debug/mongo/s/request_types/set_shard_version_request.o build/debug/third_party/icu4c-57.1/source/i18n/collationfcd.o build/debug/third_party/mozjs-60/extract/mozglue/misc/Mutex_posix.o build/debug/third_party/icu4c-57.1/source/common/bytestream.o build/debug/third_party/icu4c-57.1/source/i18n/csdetect.o build/debug/mongo/scripting/mozjs/object.o build/debug/mongo/db/matcher/matcher.o build/debug/third_party/pcre-8.42/pcre_version.o build/debug/mongo/db/fts/unicode/string.o build/debug/mongo/db/ops/write_ops_parsers.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid128_to_int32.o build/debug/third_party/zstandard-1.3.7/zstd/lib/common/xxhash.o build/debug/third_party/icu4c-57.1/source/common/unistr_cnv.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src9.o build/debug/mongo/db/repl/replication_consistency_markers.o build/debug/mongo/db/repl/replication_process.o build/debug/mongo/db/auth/impersonation_session.o build/debug/third_party/icu4c-57.1/source/i18n/fmtable.o build/debug/mongo/db/matcher/matcher_type_set.o build/debug/mongo/scripting/mozjs/idwrapper.o build/debug/mongo/util/background_thread_clock_source.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/float128/dpml_ux_ops_64.o build/debug/third_party/icu4c-57.1/source/common/unifilt.o build/debug/mongo/base/data_range_cursor.o build/debug/mongo/s/request_types/create_database_gen.o build/debug/mongo/scripting/mozjs/mongohelpers.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/e_log2.o build/debug/mongo/db/repl/is_master_response.o build/debug/third_party/yaml-cpp-0.6.2/src/contrib/graphbuilder.o build/debug/mongo/util/concurrency/ticketholder.o build/debug/third_party/icu4c-57.1/source/i18n/utrans.o build/debug/third_party/boost-1.70.0/libs/filesystem/src/utf8_codecvt_facet.o build/debug/third_party/icu4c-57.1/source/common/ulistformatter.o build/debug/mongo/util/net/socket_utils.o build/debug/mongo/db/command_generic_argument.o build/debug/mongo/db/logical_session_id_helpers.o build/debug/mongo/scripting/deadline_monitor.o build/debug/mongo/s/request_types/split_chunk_request_type.o build/debug/third_party/icu4c-57.1/source/i18n/regexst.o build/debug/third_party/s2/s2pointregion.o build/debug/mongo/util/md5.o build/debug/third_party/icu4c-57.1/source/common/bytestrie.o build/debug/mongo/transport/service_executor_synchronous.o build/debug/mongo/s/request_types/merge_chunk_request_type.o build/debug/mongo/rpc/metadata/tracking_metadata.o build/debug/third_party/icu4c-57.1/source/i18n/gregocal.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid128_string.o build/debug/third_party/icu4c-57.1/source/i18n/tolowtrn.o build/debug/third_party/pcre-8.42/pcre_refcount.o build/debug/third_party/yaml-cpp-0.6.2/src/binary.o build/debug/third_party/zstandard-1.3.7/zstd/lib/compress/zstd_double_fast.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_nexttowardd.o build/debug/mongo/util/exit.o build/debug/third_party/yaml-cpp-0.6.2/src/tag.o build/debug/third_party/yaml-cpp-0.6.2/src/directives.o build/debug/third_party/yaml-cpp-0.6.2/src/simplekey.o build/debug/third_party/yaml-cpp-0.6.2/src/scantag.o build/debug/third_party/yaml-cpp-0.6.2/src/singledocparser.o build/debug/third_party/yaml-cpp-0.6.2/src/nodeevents.o build/debug/third_party/yaml-cpp-0.6.2/src/memory.o build/debug/third_party/yaml-cpp-0.6.2/src/ostream_wrapper.o build/debug/third_party/yaml-cpp-0.6.2/src/emitfromevents.o build/debug/third_party/yaml-cpp-0.6.2/src/regex_yaml.o build/debug/third_party/yaml-cpp-0.6.2/src/scanscalar.o build/debug/third_party/yaml-cpp-0.6.2/src/stream.o build/debug/third_party/yaml-cpp-0.6.2/src/emitterutils.o build/debug/third_party/yaml-cpp-0.6.2/src/exp.o build/debug/third_party/yaml-cpp-0.6.2/src/nodebuilder.o build/debug/third_party/yaml-cpp-0.6.2/src/scantoken.o build/debug/third_party/yaml-cpp-0.6.2/src/null.o build/debug/third_party/yaml-cpp-0.6.2/src/parser.o build/debug/third_party/yaml-cpp-0.6.2/src/parse.o build/debug/third_party/yaml-cpp-0.6.2/src/scanner.o build/debug/third_party/yaml-cpp-0.6.2/src/emitterstate.o build/debug/third_party/yaml-cpp-0.6.2/src/emit.o build/debug/third_party/yaml-cpp-0.6.2/src/node_data.o build/debug/mongo/db/query/killcursors_request.o build/debug/mongo/db/pipeline/field_path.o build/debug/third_party/icu4c-57.1/source/i18n/zrule.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid128_quantize.o build/debug/mongo/platform/shared_library_posix.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_nearbyint.o build/debug/third_party/icu4c-57.1/source/i18n/digitinterval.o build/debug/mongo/db/storage/duplicate_key_error_info.o build/debug/third_party/icu4c-57.1/source/common/ucharstrieiterator.o build/debug/third_party/pcre-8.42/pcre_stringpiece.o build/debug/third_party/icu4c-57.1/source/i18n/csr2022.o build/debug/mongo/db/auth/action_set.o build/debug/third_party/mozjs-60/extract/mozglue/misc/ConditionVariable_posix.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid128_nearbyintd.o build/debug/mongo/db/catalog/index_key_validate.o build/debug/third_party/gperftools-2.7/dist/src/internal_logging.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_sin.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid64_acos.o build/debug/mongo/bson/timestamp.o build/debug/mongo/db/global_settings.o build/debug/third_party/icu4c-57.1/source/i18n/sharedbreakiterator.o build/debug/third_party/icu4c-57.1/source/common/ures_cnv.o build/debug/third_party/s2/util/math/mathutil.o build/debug/mongo/util/time_support.o build/debug/third_party/wiredtiger/src/checksum/x86/crc32-x86-alt.o build/debug/third_party/s2/strings/strutil.o build/debug/third_party/icu4c-57.1/source/i18n/measure.o build/debug/mongo/s/request_types/update_zone_key_range_request_type.o build/debug/mongo/db/pipeline/expression_context.o build/debug/mongo/db/repl/rollback_gen.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid64_lrintd.o build/debug/third_party/mozjs-60/extract/js/src/frontend/Parser.o build/debug/mongo/util/net/ssl_options_client.o build/debug/third_party/gperftools-2.7/dist/src/debugallocation.o build/debug/mongo/rpc/metadata/egress_metadata_hook_list.o build/debug/mongo/rpc/metadata/config_server_metadata.o build/debug/mongo/rpc/metadata.o build/debug/mongo/rpc/metadata/logical_time_metadata.o build/debug/mongo/rpc/metadata/oplog_query_metadata.o build/debug/mongo/rpc/metadata/sharding_metadata.o build/debug/third_party/icu4c-57.1/source/i18n/digitformatter.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src22.o build/debug/third_party/icu4c-57.1/source/i18n/decimalformatpattern.o build/debug/mongo/db/namespace_string.o build/debug/mongo/executor/connection_pool_tl.o build/debug/mongo/db/keys_collection_client_sharded.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid64_tan.o build/debug/mongo/db/query/explain_options.o build/debug/third_party/icu4c-57.1/source/i18n/ucol_sit.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src37.o build/debug/mongo/shell/shell_options_init.o build/debug/mongo/db/index_names.o build/debug/mongo/db/bson/dotted_path_support.o build/debug/third_party/icu4c-57.1/source/common/ucase.o build/debug/mongo/db/matcher/expression_parser.o build/debug/third_party/kms-message/src/sort.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/float128/dpml_ux_lgamma.o build/debug/mongo/db/repl/repl_set_heartbeat_response.o build/debug/third_party/icu4c-57.1/source/common/ucnv_u16.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_truncf.o build/debug/mongo/db/fts/stop_words.o build/debug/mongo/s/catalog/type_chunk.o build/debug/third_party/gperftools-2.7/dist/src/base/elf_mem_image.o build/debug/third_party/zlib-1.2.11/deflate.o build/debug/third_party/zstandard-1.3.7/zstd/lib/compress/zstdmt_compress.o build/debug/third_party/zstandard-1.3.7/zstd/lib/common/pool.o build/debug/third_party/zstandard-1.3.7/zstd/lib/compress/zstd_opt.o build/debug/third_party/zstandard-1.3.7/zstd/lib/deprecated/zbuff_compress.o build/debug/third_party/zstandard-1.3.7/zstd/lib/decompress/huf_decompress.o build/debug/third_party/zstandard-1.3.7/zstd/lib/common/entropy_common.o build/debug/third_party/zstandard-1.3.7/zstd/lib/compress/zstd_ldm.o build/debug/third_party/zstandard-1.3.7/zstd/lib/compress/fse_compress.o build/debug/third_party/zstandard-1.3.7/zstd/lib/compress/huf_compress.o build/debug/third_party/zstandard-1.3.7/zstd/lib/dictBuilder/divsufsort.o build/debug/third_party/zstandard-1.3.7/zstd/lib/dictBuilder/zdict.o build/debug/third_party/zstandard-1.3.7/zstd/lib/compress/hist.o build/debug/third_party/zstandard-1.3.7/zstd/lib/common/threading.o build/debug/third_party/zstandard-1.3.7/zstd/lib/dictBuilder/fastcover.o build/debug/third_party/zstandard-1.3.7/zstd/lib/deprecated/zbuff_common.o build/debug/third_party/zstandard-1.3.7/zstd/lib/decompress/zstd_decompress.o build/debug/third_party/zstandard-1.3.7/zstd/lib/common/error_private.o build/debug/third_party/zstandard-1.3.7/zstd/lib/deprecated/zbuff_decompress.o build/debug/third_party/zstandard-1.3.7/zstd/lib/compress/zstd_fast.o build/debug/third_party/zstandard-1.3.7/zstd/lib/common/fse_decompress.o build/debug/third_party/zstandard-1.3.7/zstd/lib/dictBuilder/cover.o build/debug/third_party/zstandard-1.3.7/zstd/lib/compress/zstd_compress.o build/debug/third_party/icu4c-57.1/source/i18n/plurfmt.o build/debug/mongo/s/request_types/flush_database_cache_updates_gen.o build/debug/mongo/db/catalog/collection.o build/debug/mongo/db/repl/optime.o build/debug/mongo/base/init.o build/debug/third_party/gperftools-2.7/dist/src/base/logging.o build/debug/third_party/icu4c-57.1/source/common/uiter.o build/debug/third_party/icu4c-57.1/source/common/ustrtrns.o build/debug/mongo/util/winutil.o build/debug/third_party/shim_asio.o build/debug/third_party/icu4c-57.1/source/common/ubidi_props.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid128_to_uint64.o build/debug/third_party/icu4c-57.1/source/i18n/anytrans.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src28.o build/debug/mongo/shell/mongo.o build/debug/mongo/s/request_types/flush_routing_table_cache_updates_gen.o build/debug/mongo/s/catalog/type_mongos.o build/debug/mongo/s/catalog/type_collection.o build/debug/mongo/s/catalog/type_chunk_base_gen.o build/debug/mongo/s/shard_id.o build/debug/mongo/s/request_types/wait_for_fail_point_gen.o build/debug/mongo/s/catalog/type_shard_database.o build/debug/mongo/s/request_types/clear_jumbo_flag_gen.o build/debug/mongo/s/database_version_gen.o build/debug/mongo/s/catalog/type_shard_collection.o build/debug/mongo/s/catalog/type_lockpings.o build/debug/mongo/s/catalog/type_tags.o build/debug/mongo/s/request_types/shard_collection_gen.o build/debug/mongo/s/request_types/clone_catalog_data_gen.o build/debug/mongo/s/cannot_implicitly_create_collection_info.o build/debug/mongo/s/would_change_owning_shard_exception.o build/debug/mongo/s/request_types/migration_secondary_throttle_options.o build/debug/mongo/s/chunk_version_gen.o build/debug/mongo/s/request_types/commit_chunk_migration_request_type.o build/debug/mongo/s/catalog/type_changelog.o build/debug/mongo/s/catalog/type_database.o build/debug/mongo/s/chunk_version.o build/debug/mongo/s/catalog/type_shard.o build/debug/mongo/s/stale_exception.o build/debug/mongo/s/database_version_helpers.o build/debug/mongo/s/request_types/move_chunk_request.o build/debug/mongo/db/query/tailable_mode_gen.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_exp10.o build/debug/mongo/util/assert_util.o build/debug/mongo/shell/linenoise.o build/debug/mongo/shell/shell_utils_extended.o build/debug/mongo/shell/shell_options.o build/debug/mongo/shell/shell_utils.o build/debug/mongo/shell/shell_utils_launcher.o build/debug/mongo/shell/mk_wcwidth.o build/debug/mongo/shell/mongo-server.o build/debug/mongo/client/authenticate.o build/debug/mongo/util/signal_handlers.o build/debug/mongo/platform/strcasestr.o build/debug/mongo/util/password_digest.o build/debug/mongo/scripting/mozjs/cursor.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/e_hypot.o build/debug/third_party/icu4c-57.1/source/common/unistr_titlecase_brkiter.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid64_minmax.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid128_fdimd.o build/debug/mongo/db/logical_session_id_gen.o build/debug/mongo/db/write_concern_options.o build/debug/third_party/icu4c-57.1/source/common/ustrcase.o build/debug/mongo/db/catalog/collection_catalog.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid64_llrintd.o build/debug/third_party/icu4c-57.1/source/i18n/uspoof_build.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_next.o build/debug/mongo/base/parse_number.o build/debug/mongo/util/boost_assert_shim.o build/debug/third_party/s2/s2r2rect.o build/debug/mongo/util/clock_source.o build/debug/mongo/util/fast_clock_source_factory.o build/debug/mongo/db/pipeline/document_source_merge_spec.o build/debug/third_party/icu4c-57.1/source/i18n/csrucode.o build/debug/mongo/db/pipeline/dependencies.o build/debug/third_party/icu4c-57.1/source/common/uniset_props.o build/debug/third_party/icu4c-57.1/source/common/ucnv_lmb.o build/debug/mongo/db/fts/fts_spec_legacy.o build/debug/third_party/icu4c-57.1/source/common/ucnvdisp.o build/debug/mongo/platform/strnlen.o build/debug/mongo/db/logical_session_id.o build/debug/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.o build/debug/mongo/db/repl/storage_interface.o build/debug/third_party/shim_yaml.o build/debug/mongo/scripting/mozjs/valuereader.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_sub.o build/debug/mongo/db/matcher/matchable.o build/debug/third_party/icu4c-57.1/source/common/rbbitblb.o build/debug/third_party/snappy-1.1.7/snappy.o build/debug/third_party/snappy-1.1.7/snappy-sinksource.o build/debug/third_party/snappy-1.1.7/snappy-c.o build/debug/third_party/icu4c-57.1/source/i18n/funcrepl.o build/debug/third_party/icu4c-57.1/source/i18n/collationfastlatinbuilder.o build/debug/mongo/bson/simple_bsonelement_comparator.o build/debug/third_party/s2/s1interval.o build/debug/third_party/kms-message/src/kms_crypto_openssl.o build/debug/third_party/icu4c-57.1/source/common/uresbund.o build/debug/mongo/db/storage/storage_parameters_gen.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src1.o build/debug/mongo/util/fail_point_registry.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_flag_operations.o build/debug/third_party/icu4c-57.1/source/i18n/hebrwcal.o build/debug/mongo/util/icu.o build/debug/third_party/s2/base/stringprintf.o build/debug/mongo/client/global_conn_pool_gen.o build/debug/mongo/util/file.o build/debug/mongo/crypto/aead_encryption.o build/debug/third_party/icu4c-57.1/source/common/ucnvhz.o build/debug/mongo/scripting/deadline_monitor_gen.o build/debug/third_party/icu4c-57.1/source/i18n/brktrans.o build/debug/mongo/db/pipeline/document_path_support.o build/debug/third_party/icu4c-57.1/source/common/rbbinode.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/strtod128.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src10.o build/debug/third_party/pcre-8.42/pcre_xclass.o build/debug/third_party/s2/strings/stringprintf.o build/debug/mongo/db/fts/fts_query_noop.o build/debug/third_party/s2/s2cellid.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src44.o build/debug/third_party/icu4c-57.1/source/common/dictionarydata.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid128_round_integral.o build/debug/mongo/scripting/mozjs/jsthread.o build/debug/mongo/transport/service_executor_adaptive.o build/debug/mongo/db/multi_key_path_tracker.o build/debug/third_party/icu4c-57.1/source/common/uenum.o build/debug/third_party/icu4c-57.1/source/common/parsepos.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_ceil.o build/debug/third_party/mozjs-60/extract/js/src/perf/pm_stub.o build/debug/third_party/mozjs-60/extract/js/src/vm/Interpreter.o build/debug/third_party/icu4c-57.1/source/i18n/cecal.o build/debug/mongo/scripting/mozjs/bson.o build/debug/third_party/gperftools-2.7/dist/src/malloc_extension.o build/debug/third_party/icu4c-57.1/source/common/ucnv_err.o build/debug/third_party/icu4c-57.1/source/i18n/valueformatter.o build/debug/third_party/icu4c-57.1/source/i18n/curramt.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid64_atan.o build/debug/third_party/gperftools-2.7/dist/src/base/spinlock.o build/debug/third_party/icu4c-57.1/source/common/cwchar.o build/debug/third_party/shim_snappy.o build/debug/mongo/db/fts/fts_spec.o build/debug/mongo/util/startup_test.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/float128/dpml_ux_mod.o build/debug/mongo/util/net/sockaddr.o build/debug/mongo/db/concurrency/lock_manager.o build/debug/mongo/scripting/mozjs/base.o build/debug/mongo/util/system_clock_source.o build/debug/third_party/icu4c-57.1/source/i18n/ucln_in.o build/debug/mongo/db/stats/counters.o build/debug/mongo/db/wire_version.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid128_to_uint8.o build/debug/third_party/s2/util/coding/coder.o build/debug/mongo/db/repl/read_concern_args.o build/debug/mongo/db/pipeline/variables.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_log.o build/debug/third_party/gperftools-2.7/dist/src/memfs_malloc.o build/debug/third_party/icu4c-57.1/source/common/unistr.o build/debug/third_party/icu4c-57.1/source/i18n/measfmt.o build/debug/mongo/db/fts/fts_basic_tokenizer.o build/debug/third_party/icu4c-57.1/source/i18n/csmatch.o build/debug/mongo/util/intrusive_counter.o build/debug/third_party/icu4c-57.1/source/i18n/ucal.o build/debug/mongo/db/pipeline/parsed_aggregation_projection_node.o build/debug/mongo/rpc/legacy_request.o build/debug/mongo/util/concurrency/idle_thread_block.o build/debug/third_party/gperftools-2.7/dist/src/stack_trace_table.o build/debug/third_party/shim_zlib.o build/debug/third_party/shim_icu.o build/debug/mongo/scripting/engine.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/e_log.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src15.o build/debug/third_party/mozjs-60/extract/js/src/builtin/RegExp.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src4.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src23.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_atan.o build/debug/third_party/mozjs-60/extract/js/src/jsarray.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/e_sinh.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src6.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/e_atanh.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_floorf.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src12.o build/debug/third_party/mozjs-60/extract/mfbt/lz4.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_fabs.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/k_exp.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_floor.o build/debug/third_party/mozjs-60/extract/js/src/util/DoubleToString.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_ceilf.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src2.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src39.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_trunc.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/e_sqrt.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src7.o build/debug/third_party/mozjs-60/extract/js/src/mfbt/Unified_cpp_mfbt0.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src43.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/e_pow.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src31.o build/debug/third_party/mozjs-60/mongo_sources/freeOpToJSContext.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src13.o build/debug/third_party/mozjs-60/mongo_sources/mongoErrorReportToString.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src19.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src18.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_asinh.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src30.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src14.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src34.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src42.o build/debug/third_party/mozjs-60/extract/js/src/gc/StoreBuffer.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src26.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src8.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src25.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_tanh.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_rint.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/e_atan2.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src36.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src17.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src33.o build/debug/third_party/mozjs-60/extract/mozglue/misc/TimeStamp.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src5.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src3.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src24.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src35.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src21.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_copysign.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/e_acosh.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src11.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_rintf.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src38.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_expm1.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_cbrt.o build/debug/third_party/mozjs-60/extract/js/src/jsmath.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_scalbn.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src32.o build/debug/third_party/mozjs-60/platform/x86_64/linux/build/Unified_cpp_js_src41.o build/debug/third_party/mozjs-60/extract/mfbt/Compression.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/s_log1p.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/e_asin.o build/debug/third_party/mozjs-60/extract/modules/fdlibm/e_cosh.o build/debug/third_party/mozjs-60/extract/mfbt/double-conversion/double-conversion/strtod.o build/debug/third_party/mozjs-60/extract/mozglue/misc/TimeStamp_posix.o build/debug/third_party/mozjs-60/extract/mozglue/misc/StackWalk.o build/debug/third_party/shim_intel_decimal128.o build/debug/third_party/s2/base/strtoint.o build/debug/third_party/s2/s2latlngrect.o build/debug/third_party/icu4c-57.1/source/i18n/rbt_data.o build/debug/mongo/crypto/sha256_block.o build/debug/third_party/icu4c-57.1/source/i18n/indiancal.o build/debug/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid32_expm1.o build/debug/mongo/client/native_sasl_client_session.o build/debug/mongo/db/field_ref_set.o build/debug/third_party/icu4c-57.1/source/i18n/decfmtst.o build/debug/mongo/db/matcher/expression_algo.o build/debug/third_party/kms-message/src/kms_response.o build/debug/third_party/kms-message/src/hexlify.o build/debug/third_party/kms-message/src/kms_request_opt.o build/debug/third_party/kms-message/src/kms_b64.o build/debug/third_party/kms-message/src/kms_message.o build/debug/third_party/kms-message/src/kms_encrypt_request.o build/debug/third_party/kms-message/src/kms_kv_list.o build/debug/third_party/kms-message/src/kms_request.o build/debug/third_party/kms-message/src/kms_response_parser.o build/debug/third_party/kms-message/src/kms_decrypt_request.o build/debug/third_party/kms-message/src/kms_request_str.
Download .txt
gitextract_2e5kkx9s/

├── .gitattributes
├── .gitignore
├── .travis.yml
├── CHANGELOG
├── CMakeLists.txt
├── COPYRIGHT
├── DESCRIPTION
├── LICENSE
├── README.md
├── bin/
│   ├── README.md
│   ├── build
│   ├── build-and-run-tests
│   ├── build-and-run-tests.bat
│   ├── build.bat
│   ├── clang-checks.txt
│   ├── clang-tidy.xml
│   ├── clean
│   ├── clean.bat
│   ├── common/
│   │   ├── setup
│   │   └── setup.bat
│   ├── configure
│   ├── configure.bat
│   ├── enable-visual-studio-clang-tidy.py
│   ├── install
│   ├── install-debug-dlls.bat
│   ├── install.bat
│   ├── pack
│   ├── pack.bat
│   ├── rebuild.bat
│   ├── run
│   ├── run-clang-tidy
│   ├── run-clang-tidy.py
│   ├── run-cppcheck.bat
│   ├── run-scan-build
│   ├── run-tests
│   ├── run-tests.bat
│   ├── run-vs-code-analysis.bat
│   ├── set-mongo-warning-level-3.py
│   └── tag
├── cmake/
│   ├── FindMongoDB.cmake
│   ├── FindOpenSSL.cmake
│   ├── FindThreading.cmake
│   ├── RobomongoCMakeDefaults.cmake
│   ├── RobomongoCommon.cmake
│   ├── RobomongoConfigurationSummary.cmake
│   ├── RobomongoDefaults.cmake
│   ├── RobomongoInstall.cmake
│   ├── RobomongoInstallQt.cmake
│   ├── RobomongoPackage.cmake
│   ├── RobomongoPrintUtils.cmake
│   ├── RobomongoTargetArch.cmake
│   ├── RobomongoTrashSymbols.cmake
│   ├── mongodb/
│   │   ├── README.md
│   │   ├── linux-debug.objects
│   │   ├── linux-release.objects
│   │   ├── macosx-debug.objects
│   │   ├── macosx-release.objects
│   │   ├── windows-debug.objects
│   │   └── windows-release.objects
│   └── readme.md
├── docs/
│   ├── BuildRobo3TOnMacAndLinux.md
│   ├── BuildRobo3TOnWindows.md
│   ├── BuildRobo3TShell.md
│   ├── BuildingMongoDB.md
│   ├── BuildingRobomongo.md
│   ├── BuildingRobomongoOnWindows.md
│   └── Debug.md
├── install/
│   ├── linux/
│   │   └── robomongo.sh
│   ├── macosx/
│   │   ├── DMG_DS_Store
│   │   ├── Info.plist.in
│   │   ├── README.md
│   │   ├── qt.conf
│   │   └── robomongo.icns
│   ├── qt.conf.in
│   └── windows/
│       ├── README.md
│       └── winres.rc.in
├── shortcuts.txt
├── src/
│   ├── robomongo/
│   │   ├── .clang-format
│   │   ├── CMakeLists.txt
│   │   ├── app/
│   │   │   ├── main.cpp
│   │   │   ├── main_mongo.cpp
│   │   │   └── main_test.cpp
│   │   ├── core/
│   │   │   ├── AppRegistry.cpp
│   │   │   ├── AppRegistry.h
│   │   │   ├── Core.h
│   │   │   ├── Enums.cpp
│   │   │   ├── Enums.h
│   │   │   ├── Event.cpp
│   │   │   ├── Event.h
│   │   │   ├── EventBus.cpp
│   │   │   ├── EventBus.h
│   │   │   ├── EventBusDispatcher.cpp
│   │   │   ├── EventBusDispatcher.h
│   │   │   ├── EventBusSubscriber.cpp
│   │   │   ├── EventBusSubscriber.h
│   │   │   ├── EventError.cpp
│   │   │   ├── EventError.h
│   │   │   ├── EventWrapper.cpp
│   │   │   ├── EventWrapper.h
│   │   │   ├── HexUtils.cpp
│   │   │   ├── HexUtils.h
│   │   │   ├── HexUtils_test.cpp
│   │   │   ├── KeyboardManager.cpp
│   │   │   ├── KeyboardManager.h
│   │   │   ├── domain/
│   │   │   │   ├── App.cpp
│   │   │   │   ├── App.h
│   │   │   │   ├── CursorPosition.cpp
│   │   │   │   ├── CursorPosition.h
│   │   │   │   ├── MongoAggregateInfo.h
│   │   │   │   ├── MongoCollection.cpp
│   │   │   │   ├── MongoCollection.h
│   │   │   │   ├── MongoCollectionInfo.cpp
│   │   │   │   ├── MongoCollectionInfo.h
│   │   │   │   ├── MongoDatabase.cpp
│   │   │   │   ├── MongoDatabase.h
│   │   │   │   ├── MongoDocument.cpp
│   │   │   │   ├── MongoDocument.h
│   │   │   │   ├── MongoFunction.cpp
│   │   │   │   ├── MongoFunction.h
│   │   │   │   ├── MongoNamespace.cpp
│   │   │   │   ├── MongoNamespace.h
│   │   │   │   ├── MongoQueryInfo.cpp
│   │   │   │   ├── MongoQueryInfo.h
│   │   │   │   ├── MongoServer.cpp
│   │   │   │   ├── MongoServer.h
│   │   │   │   ├── MongoShell.cpp
│   │   │   │   ├── MongoShell.h
│   │   │   │   ├── MongoShellResult.h
│   │   │   │   ├── MongoUser.cpp
│   │   │   │   ├── MongoUser.h
│   │   │   │   ├── MongoUtils.cpp
│   │   │   │   ├── MongoUtils.h
│   │   │   │   ├── Notifier.cpp
│   │   │   │   ├── Notifier.h
│   │   │   │   ├── ScriptInfo.cpp
│   │   │   │   └── ScriptInfo.h
│   │   │   ├── engine/
│   │   │   │   ├── ScriptEngine.cpp
│   │   │   │   └── ScriptEngine.h
│   │   │   ├── events/
│   │   │   │   ├── MongoEvents.cpp
│   │   │   │   ├── MongoEvents.h
│   │   │   │   ├── MongoEventsInfo.cpp
│   │   │   │   └── MongoEventsInfo.h
│   │   │   ├── mongodb/
│   │   │   │   ├── MongoClient.cpp
│   │   │   │   ├── MongoClient.h
│   │   │   │   ├── MongoWorker.cpp
│   │   │   │   ├── MongoWorker.h
│   │   │   │   ├── ReplicaSet.cpp
│   │   │   │   ├── ReplicaSet.h
│   │   │   │   ├── SshTunnelWorker.cpp
│   │   │   │   └── SshTunnelWorker.h
│   │   │   ├── settings/
│   │   │   │   ├── ConnectionSettings.cpp
│   │   │   │   ├── ConnectionSettings.h
│   │   │   │   ├── CredentialSettings.cpp
│   │   │   │   ├── CredentialSettings.h
│   │   │   │   ├── ReplicaSetSettings.cpp
│   │   │   │   ├── ReplicaSetSettings.h
│   │   │   │   ├── SettingsManager.cpp
│   │   │   │   ├── SettingsManager.h
│   │   │   │   ├── SshSettings.cpp
│   │   │   │   ├── SshSettings.h
│   │   │   │   ├── SslSettings.cpp
│   │   │   │   └── SslSettings.h
│   │   │   └── utils/
│   │   │       ├── BsonUtils.cpp
│   │   │       ├── BsonUtils.h
│   │   │       ├── Logger.cpp
│   │   │       ├── Logger.h
│   │   │       ├── QtUtils.cpp
│   │   │       ├── QtUtils.h
│   │   │       ├── SingletonPattern.hpp
│   │   │       ├── StdUtils.cpp
│   │   │       └── StdUtils.h
│   │   ├── gui/
│   │   │   ├── AppStyle.cpp
│   │   │   ├── AppStyle.h
│   │   │   ├── GuiRegistry.cpp
│   │   │   ├── GuiRegistry.h
│   │   │   ├── MainWindow.cpp
│   │   │   ├── MainWindow.h
│   │   │   ├── dialogs/
│   │   │   │   ├── AboutDialog.cpp
│   │   │   │   ├── AboutDialog.h
│   │   │   │   ├── ChangeShellTimeoutDialog.cpp
│   │   │   │   ├── ChangeShellTimeoutDialog.h
│   │   │   │   ├── ConnectionAdvancedTab.cpp
│   │   │   │   ├── ConnectionAdvancedTab.h
│   │   │   │   ├── ConnectionAuthTab.cpp
│   │   │   │   ├── ConnectionAuthTab.h
│   │   │   │   ├── ConnectionBasicTab.cpp
│   │   │   │   ├── ConnectionBasicTab.h
│   │   │   │   ├── ConnectionDiagnosticDialog.cpp
│   │   │   │   ├── ConnectionDiagnosticDialog.h
│   │   │   │   ├── ConnectionDialog.cpp
│   │   │   │   ├── ConnectionDialog.h
│   │   │   │   ├── ConnectionsDialog.cpp
│   │   │   │   ├── ConnectionsDialog.h
│   │   │   │   ├── CopyCollectionDialog.cpp
│   │   │   │   ├── CopyCollectionDialog.h
│   │   │   │   ├── CreateCollectionDialog.cpp
│   │   │   │   ├── CreateCollectionDialog.h
│   │   │   │   ├── CreateDatabaseDialog.cpp
│   │   │   │   ├── CreateDatabaseDialog.h
│   │   │   │   ├── CreateUserDialog.cpp
│   │   │   │   ├── CreateUserDialog.h
│   │   │   │   ├── DocumentTextEditor.cpp
│   │   │   │   ├── DocumentTextEditor.h
│   │   │   │   ├── EulaDialog.cpp
│   │   │   │   ├── EulaDialog.h
│   │   │   │   ├── ExportDialog.cpp
│   │   │   │   ├── ExportDialog.h
│   │   │   │   ├── FunctionTextEditor.cpp
│   │   │   │   ├── FunctionTextEditor.h
│   │   │   │   ├── PreferencesDialog.cpp
│   │   │   │   ├── PreferencesDialog.h
│   │   │   │   ├── SSHTunnelTab.cpp
│   │   │   │   ├── SSHTunnelTab.h
│   │   │   │   ├── SSLTab.cpp
│   │   │   │   └── SSLTab.h
│   │   │   ├── editors/
│   │   │   │   ├── FindFrame.cpp
│   │   │   │   ├── FindFrame.h
│   │   │   │   ├── JSLexer.cpp
│   │   │   │   ├── JSLexer.h
│   │   │   │   ├── PlainJavaScriptEditor.cpp
│   │   │   │   └── PlainJavaScriptEditor.h
│   │   │   ├── resources/
│   │   │   │   ├── gui.qrc
│   │   │   │   ├── icons/
│   │   │   │   │   ├── new_app_icon/
│   │   │   │   │   │   └── Robomongo App Icon.idraw
│   │   │   │   │   └── psd/
│   │   │   │   │       └── BsonNull_16x16.psd
│   │   │   │   └── scripts/
│   │   │   │       ├── esprima.js
│   │   │   │       └── uuidhelpers.js
│   │   │   ├── utils/
│   │   │   │   ├── ComboBoxUtils.cpp
│   │   │   │   ├── ComboBoxUtils.h
│   │   │   │   ├── DialogUtils.cpp
│   │   │   │   ├── DialogUtils.h
│   │   │   │   └── GuiConstants.h
│   │   │   └── widgets/
│   │   │       ├── LogWidget.cpp
│   │   │       ├── LogWidget.h
│   │   │       ├── explorer/
│   │   │       │   ├── AddEditIndexDialog.cpp
│   │   │       │   ├── AddEditIndexDialog.h
│   │   │       │   ├── ExplorerCollectionIndexItem.cpp
│   │   │       │   ├── ExplorerCollectionIndexItem.h
│   │   │       │   ├── ExplorerCollectionIndexesDir.cpp
│   │   │       │   ├── ExplorerCollectionIndexesDir.h
│   │   │       │   ├── ExplorerCollectionTreeItem.cpp
│   │   │       │   ├── ExplorerCollectionTreeItem.h
│   │   │       │   ├── ExplorerDatabaseCategoryTreeItem.cpp
│   │   │       │   ├── ExplorerDatabaseCategoryTreeItem.h
│   │   │       │   ├── ExplorerDatabaseTreeItem.cpp
│   │   │       │   ├── ExplorerDatabaseTreeItem.h
│   │   │       │   ├── ExplorerFunctionTreeItem.cpp
│   │   │       │   ├── ExplorerFunctionTreeItem.h
│   │   │       │   ├── ExplorerReplicaSetFolderItem.cpp
│   │   │       │   ├── ExplorerReplicaSetFolderItem.h
│   │   │       │   ├── ExplorerReplicaSetTreeItem.cpp
│   │   │       │   ├── ExplorerReplicaSetTreeItem.h
│   │   │       │   ├── ExplorerServerTreeItem.cpp
│   │   │       │   ├── ExplorerServerTreeItem.h
│   │   │       │   ├── ExplorerTreeItem.cpp
│   │   │       │   ├── ExplorerTreeItem.h
│   │   │       │   ├── ExplorerTreeWidget.cpp
│   │   │       │   ├── ExplorerTreeWidget.h
│   │   │       │   ├── ExplorerUserTreeItem.cpp
│   │   │       │   ├── ExplorerUserTreeItem.h
│   │   │       │   ├── ExplorerWidget.cpp
│   │   │       │   └── ExplorerWidget.h
│   │   │       └── workarea/
│   │   │           ├── BsonTableModel.cpp
│   │   │           ├── BsonTableModel.h
│   │   │           ├── BsonTableView.cpp
│   │   │           ├── BsonTableView.h
│   │   │           ├── BsonTreeItem.cpp
│   │   │           ├── BsonTreeItem.h
│   │   │           ├── BsonTreeModel.cpp
│   │   │           ├── BsonTreeModel.h
│   │   │           ├── BsonTreeView.cpp
│   │   │           ├── BsonTreeView.h
│   │   │           ├── CollectionStatsTreeItem.cpp
│   │   │           ├── CollectionStatsTreeItem.h
│   │   │           ├── CollectionStatsTreeWidget.cpp
│   │   │           ├── CollectionStatsTreeWidget.h
│   │   │           ├── IndicatorLabel.cpp
│   │   │           ├── IndicatorLabel.h
│   │   │           ├── JsonPrepareThread.cpp
│   │   │           ├── JsonPrepareThread.h
│   │   │           ├── OutputItemContentWidget.cpp
│   │   │           ├── OutputItemContentWidget.h
│   │   │           ├── OutputItemHeaderWidget.cpp
│   │   │           ├── OutputItemHeaderWidget.h
│   │   │           ├── OutputWidget.cpp
│   │   │           ├── OutputWidget.h
│   │   │           ├── PagingWidget.cpp
│   │   │           ├── PagingWidget.h
│   │   │           ├── ProgressBarPopup.cpp
│   │   │           ├── ProgressBarPopup.h
│   │   │           ├── QueryWidget.cpp
│   │   │           ├── QueryWidget.h
│   │   │           ├── ScriptWidget.cpp
│   │   │           ├── ScriptWidget.h
│   │   │           ├── WelcomeTab.cpp
│   │   │           ├── WelcomeTab.h
│   │   │           ├── WorkAreaTabBar.cpp
│   │   │           ├── WorkAreaTabBar.h
│   │   │           ├── WorkAreaTabWidget.cpp
│   │   │           └── WorkAreaTabWidget.h
│   │   ├── resources/
│   │   │   ├── gnu_gpl3_license.html
│   │   │   └── robo.qrc
│   │   ├── shell/
│   │   │   ├── bson/
│   │   │   │   ├── json.cpp
│   │   │   │   └── json.h
│   │   │   ├── db/
│   │   │   │   ├── ptimeutil.cpp
│   │   │   │   └── ptimeutil.h
│   │   │   └── shell/
│   │   │       └── dbshell.cpp
│   │   ├── ssh/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── README.md
│   │   │   ├── array.c
│   │   │   ├── libssh2_config.h.in
│   │   │   ├── log.c
│   │   │   ├── private.h
│   │   │   ├── server.c
│   │   │   ├── ssh.c
│   │   │   ├── ssh.h
│   │   │   ├── temp/
│   │   │   │   ├── direct_tcpip.c
│   │   │   │   ├── internal.h
│   │   │   │   ├── temp_ssh.c
│   │   │   │   ├── temp_ssh.h
│   │   │   │   └── temp_ssh_log.c
│   │   │   ├── test.c
│   │   │   ├── unix.h
│   │   │   ├── valgrind/
│   │   │   │   └── macosx-clang.supp
│   │   │   ├── win.c
│   │   │   └── win.h
│   │   └── utils/
│   │       ├── RoboCrypt.cpp
│   │       ├── RoboCrypt.h
│   │       ├── RoboCrypt_test.cpp
│   │       ├── SimpleCrypt.cpp
│   │       ├── SimpleCrypt.h
│   │       ├── StringOperations.cpp
│   │       ├── StringOperations.h
│   │       ├── StringOperations_test.cpp
│   │       ├── common.cpp
│   │       ├── common.h
│   │       └── qzip/
│   │           ├── qconfig_p.h
│   │           ├── qglobal_p.h
│   │           ├── qtcore-config_p.h
│   │           ├── qtgui-config_p.h
│   │           ├── qtguiglobal_p.h
│   │           └── qzipreader_p.h
│   ├── robomongo-unit-tests/
│   │   ├── CMakeLists.txt
│   │   └── README.md
│   └── third-party/
│       ├── README.md
│       ├── esprima-2.7.3/
│       │   └── README.md
│       ├── googletest-1.8.1/
│       │   ├── .gitignore
│       │   ├── .travis.yml
│       │   ├── BUILD.bazel
│       │   ├── CMakeLists.txt
│       │   ├── CONTRIBUTING.md
│       │   ├── LICENSE
│       │   ├── Makefile.am
│       │   ├── README.md
│       │   ├── WORKSPACE
│       │   ├── appveyor.yml
│       │   ├── ci/
│       │   │   ├── build-linux-autotools.sh
│       │   │   ├── build-linux-bazel.sh
│       │   │   ├── env-linux.sh
│       │   │   ├── env-osx.sh
│       │   │   ├── get-nprocessors.sh
│       │   │   ├── install-linux.sh
│       │   │   ├── install-osx.sh
│       │   │   ├── log-config.sh
│       │   │   └── travis.sh
│       │   ├── configure.ac
│       │   ├── googlemock/
│       │   │   ├── CHANGES
│       │   │   ├── CMakeLists.txt
│       │   │   ├── CONTRIBUTORS
│       │   │   ├── LICENSE
│       │   │   ├── Makefile.am
│       │   │   ├── README.md
│       │   │   ├── cmake/
│       │   │   │   ├── gmock.pc.in
│       │   │   │   └── gmock_main.pc.in
│       │   │   ├── configure.ac
│       │   │   ├── docs/
│       │   │   │   ├── CheatSheet.md
│       │   │   │   ├── CookBook.md
│       │   │   │   ├── DesignDoc.md
│       │   │   │   ├── Documentation.md
│       │   │   │   ├── ForDummies.md
│       │   │   │   ├── FrequentlyAskedQuestions.md
│       │   │   │   └── KnownIssues.md
│       │   │   ├── include/
│       │   │   │   └── gmock/
│       │   │   │       ├── gmock-actions.h
│       │   │   │       ├── gmock-cardinalities.h
│       │   │   │       ├── gmock-generated-actions.h
│       │   │   │       ├── gmock-generated-actions.h.pump
│       │   │   │       ├── gmock-generated-function-mockers.h
│       │   │   │       ├── gmock-generated-function-mockers.h.pump
│       │   │   │       ├── gmock-generated-matchers.h
│       │   │   │       ├── gmock-generated-matchers.h.pump
│       │   │   │       ├── gmock-generated-nice-strict.h
│       │   │   │       ├── gmock-generated-nice-strict.h.pump
│       │   │   │       ├── gmock-matchers.h
│       │   │   │       ├── gmock-more-actions.h
│       │   │   │       ├── gmock-more-matchers.h
│       │   │   │       ├── gmock-spec-builders.h
│       │   │   │       ├── gmock.h
│       │   │   │       └── internal/
│       │   │   │           ├── custom/
│       │   │   │           │   ├── README.md
│       │   │   │           │   ├── gmock-generated-actions.h
│       │   │   │           │   ├── gmock-generated-actions.h.pump
│       │   │   │           │   ├── gmock-matchers.h
│       │   │   │           │   └── gmock-port.h
│       │   │   │           ├── gmock-generated-internal-utils.h
│       │   │   │           ├── gmock-generated-internal-utils.h.pump
│       │   │   │           ├── gmock-internal-utils.h
│       │   │   │           └── gmock-port.h
│       │   │   ├── msvc/
│       │   │   │   ├── 2005/
│       │   │   │   │   ├── gmock.sln
│       │   │   │   │   ├── gmock.vcproj
│       │   │   │   │   ├── gmock_config.vsprops
│       │   │   │   │   ├── gmock_main.vcproj
│       │   │   │   │   └── gmock_test.vcproj
│       │   │   │   ├── 2010/
│       │   │   │   │   ├── gmock.sln
│       │   │   │   │   ├── gmock.vcxproj
│       │   │   │   │   ├── gmock_config.props
│       │   │   │   │   ├── gmock_main.vcxproj
│       │   │   │   │   └── gmock_test.vcxproj
│       │   │   │   └── 2015/
│       │   │   │       ├── gmock.sln
│       │   │   │       ├── gmock.vcxproj
│       │   │   │       ├── gmock_config.props
│       │   │   │       ├── gmock_main.vcxproj
│       │   │   │       └── gmock_test.vcxproj
│       │   │   ├── scripts/
│       │   │   │   ├── fuse_gmock_files.py
│       │   │   │   ├── generator/
│       │   │   │   │   ├── LICENSE
│       │   │   │   │   ├── README
│       │   │   │   │   ├── README.cppclean
│       │   │   │   │   ├── cpp/
│       │   │   │   │   │   ├── __init__.py
│       │   │   │   │   │   ├── ast.py
│       │   │   │   │   │   ├── gmock_class.py
│       │   │   │   │   │   ├── gmock_class_test.py
│       │   │   │   │   │   ├── keywords.py
│       │   │   │   │   │   ├── tokenize.py
│       │   │   │   │   │   └── utils.py
│       │   │   │   │   └── gmock_gen.py
│       │   │   │   ├── gmock-config.in
│       │   │   │   ├── gmock_doctor.py
│       │   │   │   ├── upload.py
│       │   │   │   └── upload_gmock.py
│       │   │   ├── src/
│       │   │   │   ├── gmock-all.cc
│       │   │   │   ├── gmock-cardinalities.cc
│       │   │   │   ├── gmock-internal-utils.cc
│       │   │   │   ├── gmock-matchers.cc
│       │   │   │   ├── gmock-spec-builders.cc
│       │   │   │   ├── gmock.cc
│       │   │   │   └── gmock_main.cc
│       │   │   └── test/
│       │   │       ├── BUILD.bazel
│       │   │       ├── gmock-actions_test.cc
│       │   │       ├── gmock-cardinalities_test.cc
│       │   │       ├── gmock-generated-actions_test.cc
│       │   │       ├── gmock-generated-function-mockers_test.cc
│       │   │       ├── gmock-generated-internal-utils_test.cc
│       │   │       ├── gmock-generated-matchers_test.cc
│       │   │       ├── gmock-internal-utils_test.cc
│       │   │       ├── gmock-matchers_test.cc
│       │   │       ├── gmock-more-actions_test.cc
│       │   │       ├── gmock-nice-strict_test.cc
│       │   │       ├── gmock-port_test.cc
│       │   │       ├── gmock-spec-builders_test.cc
│       │   │       ├── gmock_all_test.cc
│       │   │       ├── gmock_ex_test.cc
│       │   │       ├── gmock_leak_test.py
│       │   │       ├── gmock_leak_test_.cc
│       │   │       ├── gmock_link2_test.cc
│       │   │       ├── gmock_link_test.cc
│       │   │       ├── gmock_link_test.h
│       │   │       ├── gmock_output_test.py
│       │   │       ├── gmock_output_test_.cc
│       │   │       ├── gmock_output_test_golden.txt
│       │   │       ├── gmock_stress_test.cc
│       │   │       ├── gmock_test.cc
│       │   │       └── gmock_test_utils.py
│       │   └── googletest/
│       │       ├── CHANGES
│       │       ├── CMakeLists.txt
│       │       ├── CONTRIBUTORS
│       │       ├── LICENSE
│       │       ├── Makefile.am
│       │       ├── README.md
│       │       ├── cmake/
│       │       │   ├── Config.cmake.in
│       │       │   ├── gtest.pc.in
│       │       │   ├── gtest_main.pc.in
│       │       │   └── internal_utils.cmake
│       │       ├── codegear/
│       │       │   ├── gtest.cbproj
│       │       │   ├── gtest.groupproj
│       │       │   ├── gtest_all.cc
│       │       │   ├── gtest_link.cc
│       │       │   ├── gtest_main.cbproj
│       │       │   └── gtest_unittest.cbproj
│       │       ├── configure.ac
│       │       ├── docs/
│       │       │   ├── Pkgconfig.md
│       │       │   ├── PumpManual.md
│       │       │   ├── XcodeGuide.md
│       │       │   ├── advanced.md
│       │       │   ├── faq.md
│       │       │   ├── primer.md
│       │       │   └── samples.md
│       │       ├── include/
│       │       │   └── gtest/
│       │       │       ├── gtest-death-test.h
│       │       │       ├── gtest-message.h
│       │       │       ├── gtest-param-test.h
│       │       │       ├── gtest-param-test.h.pump
│       │       │       ├── gtest-printers.h
│       │       │       ├── gtest-spi.h
│       │       │       ├── gtest-test-part.h
│       │       │       ├── gtest-typed-test.h
│       │       │       ├── gtest.h
│       │       │       ├── gtest_pred_impl.h
│       │       │       ├── gtest_prod.h
│       │       │       └── internal/
│       │       │           ├── custom/
│       │       │           │   ├── README.md
│       │       │           │   ├── gtest-port.h
│       │       │           │   ├── gtest-printers.h
│       │       │           │   └── gtest.h
│       │       │           ├── gtest-death-test-internal.h
│       │       │           ├── gtest-filepath.h
│       │       │           ├── gtest-internal.h
│       │       │           ├── gtest-linked_ptr.h
│       │       │           ├── gtest-param-util-generated.h
│       │       │           ├── gtest-param-util-generated.h.pump
│       │       │           ├── gtest-param-util.h
│       │       │           ├── gtest-port-arch.h
│       │       │           ├── gtest-port.h
│       │       │           ├── gtest-string.h
│       │       │           ├── gtest-tuple.h
│       │       │           ├── gtest-tuple.h.pump
│       │       │           ├── gtest-type-util.h
│       │       │           └── gtest-type-util.h.pump
│       │       ├── m4/
│       │       │   ├── acx_pthread.m4
│       │       │   └── gtest.m4
│       │       ├── msvc/
│       │       │   └── 2010/
│       │       │       ├── gtest-md.sln
│       │       │       ├── gtest-md.vcxproj
│       │       │       ├── gtest-md.vcxproj.filters
│       │       │       ├── gtest.sln
│       │       │       ├── gtest.vcxproj
│       │       │       ├── gtest.vcxproj.filters
│       │       │       ├── gtest_main-md.vcxproj
│       │       │       ├── gtest_main-md.vcxproj.filters
│       │       │       ├── gtest_main.vcxproj
│       │       │       ├── gtest_main.vcxproj.filters
│       │       │       ├── gtest_prod_test-md.vcxproj
│       │       │       ├── gtest_prod_test-md.vcxproj.filters
│       │       │       ├── gtest_prod_test.vcxproj
│       │       │       ├── gtest_prod_test.vcxproj.filters
│       │       │       ├── gtest_unittest-md.vcxproj
│       │       │       ├── gtest_unittest-md.vcxproj.filters
│       │       │       ├── gtest_unittest.vcxproj
│       │       │       └── gtest_unittest.vcxproj.filters
│       │       ├── samples/
│       │       │   ├── prime_tables.h
│       │       │   ├── sample1.cc
│       │       │   ├── sample1.h
│       │       │   ├── sample10_unittest.cc
│       │       │   ├── sample1_unittest.cc
│       │       │   ├── sample2.cc
│       │       │   ├── sample2.h
│       │       │   ├── sample2_unittest.cc
│       │       │   ├── sample3-inl.h
│       │       │   ├── sample3_unittest.cc
│       │       │   ├── sample4.cc
│       │       │   ├── sample4.h
│       │       │   ├── sample4_unittest.cc
│       │       │   ├── sample5_unittest.cc
│       │       │   ├── sample6_unittest.cc
│       │       │   ├── sample7_unittest.cc
│       │       │   ├── sample8_unittest.cc
│       │       │   └── sample9_unittest.cc
│       │       ├── scripts/
│       │       │   ├── common.py
│       │       │   ├── fuse_gtest_files.py
│       │       │   ├── gen_gtest_pred_impl.py
│       │       │   ├── gtest-config.in
│       │       │   ├── pump.py
│       │       │   ├── release_docs.py
│       │       │   ├── upload.py
│       │       │   └── upload_gtest.py
│       │       ├── src/
│       │       │   ├── gtest-all.cc
│       │       │   ├── gtest-death-test.cc
│       │       │   ├── gtest-filepath.cc
│       │       │   ├── gtest-internal-inl.h
│       │       │   ├── gtest-port.cc
│       │       │   ├── gtest-printers.cc
│       │       │   ├── gtest-test-part.cc
│       │       │   ├── gtest-typed-test.cc
│       │       │   ├── gtest.cc
│       │       │   └── gtest_main.cc
│       │       ├── test/
│       │       │   ├── BUILD.bazel
│       │       │   ├── googletest-break-on-failure-unittest.py
│       │       │   ├── googletest-break-on-failure-unittest_.cc
│       │       │   ├── googletest-catch-exceptions-test.py
│       │       │   ├── googletest-catch-exceptions-test_.cc
│       │       │   ├── googletest-color-test.py
│       │       │   ├── googletest-color-test_.cc
│       │       │   ├── googletest-death-test-test.cc
│       │       │   ├── googletest-death-test_ex_test.cc
│       │       │   ├── googletest-env-var-test.py
│       │       │   ├── googletest-env-var-test_.cc
│       │       │   ├── googletest-filepath-test.cc
│       │       │   ├── googletest-filter-unittest.py
│       │       │   ├── googletest-filter-unittest_.cc
│       │       │   ├── googletest-json-outfiles-test.py
│       │       │   ├── googletest-json-output-unittest.py
│       │       │   ├── googletest-linked-ptr-test.cc
│       │       │   ├── googletest-list-tests-unittest.py
│       │       │   ├── googletest-list-tests-unittest_.cc
│       │       │   ├── googletest-listener-test.cc
│       │       │   ├── googletest-message-test.cc
│       │       │   ├── googletest-options-test.cc
│       │       │   ├── googletest-output-test-golden-lin.txt
│       │       │   ├── googletest-output-test.py
│       │       │   ├── googletest-output-test_.cc
│       │       │   ├── googletest-param-test-invalid-name1-test.py
│       │       │   ├── googletest-param-test-invalid-name1-test_.cc
│       │       │   ├── googletest-param-test-invalid-name2-test.py
│       │       │   ├── googletest-param-test-invalid-name2-test_.cc
│       │       │   ├── googletest-param-test-test.cc
│       │       │   ├── googletest-param-test-test.h
│       │       │   ├── googletest-param-test2-test.cc
│       │       │   ├── googletest-port-test.cc
│       │       │   ├── googletest-printers-test.cc
│       │       │   ├── googletest-shuffle-test.py
│       │       │   ├── googletest-shuffle-test_.cc
│       │       │   ├── googletest-test-part-test.cc
│       │       │   ├── googletest-test2_test.cc
│       │       │   ├── googletest-throw-on-failure-test.py
│       │       │   ├── googletest-throw-on-failure-test_.cc
│       │       │   ├── googletest-tuple-test.cc
│       │       │   ├── googletest-uninitialized-test.py
│       │       │   ├── googletest-uninitialized-test_.cc
│       │       │   ├── gtest-typed-test2_test.cc
│       │       │   ├── gtest-typed-test_test.cc
│       │       │   ├── gtest-typed-test_test.h
│       │       │   ├── gtest-unittest-api_test.cc
│       │       │   ├── gtest_all_test.cc
│       │       │   ├── gtest_assert_by_exception_test.cc
│       │       │   ├── gtest_environment_test.cc
│       │       │   ├── gtest_help_test.py
│       │       │   ├── gtest_help_test_.cc
│       │       │   ├── gtest_json_test_utils.py
│       │       │   ├── gtest_list_output_unittest.py
│       │       │   ├── gtest_list_output_unittest_.cc
│       │       │   ├── gtest_main_unittest.cc
│       │       │   ├── gtest_no_test_unittest.cc
│       │       │   ├── gtest_pred_impl_unittest.cc
│       │       │   ├── gtest_premature_exit_test.cc
│       │       │   ├── gtest_prod_test.cc
│       │       │   ├── gtest_repeat_test.cc
│       │       │   ├── gtest_sole_header_test.cc
│       │       │   ├── gtest_stress_test.cc
│       │       │   ├── gtest_test_macro_stack_footprint_test.cc
│       │       │   ├── gtest_test_utils.py
│       │       │   ├── gtest_testbridge_test.py
│       │       │   ├── gtest_testbridge_test_.cc
│       │       │   ├── gtest_throw_on_failure_ex_test.cc
│       │       │   ├── gtest_unittest.cc
│       │       │   ├── gtest_xml_outfile1_test_.cc
│       │       │   ├── gtest_xml_outfile2_test_.cc
│       │       │   ├── gtest_xml_outfiles_test.py
│       │       │   ├── gtest_xml_output_unittest.py
│       │       │   ├── gtest_xml_output_unittest_.cc
│       │       │   ├── gtest_xml_test_utils.py
│       │       │   ├── production.cc
│       │       │   └── production.h
│       │       └── xcode/
│       │           ├── Config/
│       │           │   ├── DebugProject.xcconfig
│       │           │   ├── FrameworkTarget.xcconfig
│       │           │   ├── General.xcconfig
│       │           │   ├── ReleaseProject.xcconfig
│       │           │   ├── StaticLibraryTarget.xcconfig
│       │           │   └── TestTarget.xcconfig
│       │           ├── Resources/
│       │           │   └── Info.plist
│       │           ├── Samples/
│       │           │   └── FrameworkSample/
│       │           │       ├── Info.plist
│       │           │       ├── WidgetFramework.xcodeproj/
│       │           │       │   └── project.pbxproj
│       │           │       ├── runtests.sh
│       │           │       ├── widget.cc
│       │           │       ├── widget.h
│       │           │       └── widget_test.cc
│       │           ├── Scripts/
│       │           │   ├── runtests.sh
│       │           │   └── versiongenerate.py
│       │           └── gtest.xcodeproj/
│       │               └── project.pbxproj
│       ├── libssh2-1.7.0/
│       │   ├── CMakeLists.txt
│       │   ├── README.md
│       │   └── sources/
│       │       ├── .gitattribute
│       │       ├── .gitignore
│       │       ├── .travis.yml
│       │       ├── CMakeLists.txt
│       │       ├── COPYING
│       │       ├── Makefile.OpenSSL.inc
│       │       ├── Makefile.WinCNG.inc
│       │       ├── Makefile.am
│       │       ├── Makefile.inc
│       │       ├── Makefile.libgcrypt.inc
│       │       ├── Makefile.os400qc3.inc
│       │       ├── NEWS
│       │       ├── NMakefile
│       │       ├── README
│       │       ├── RELEASE-NOTES
│       │       ├── acinclude.m4
│       │       ├── appveyor.yml
│       │       ├── buildconf
│       │       ├── cmake/
│       │       │   ├── CheckFunctionExistsMayNeedLibrary.cmake
│       │       │   ├── CheckNonblockingSocketSupport.cmake
│       │       │   ├── CopyRuntimeDependencies.cmake
│       │       │   ├── FindLibgcrypt.cmake
│       │       │   ├── SocketLibraries.cmake
│       │       │   ├── Toolchain-Linux-32.cmake
│       │       │   └── max_warnings.cmake
│       │       ├── config.rpath
│       │       ├── configure.ac
│       │       ├── docs/
│       │       │   ├── .gitignore
│       │       │   ├── AUTHORS
│       │       │   ├── BINDINGS
│       │       │   ├── CMakeLists.txt
│       │       │   ├── HACKING
│       │       │   ├── HACKING.CRYPTO
│       │       │   ├── INSTALL_AUTOTOOLS
│       │       │   ├── INSTALL_CMAKE
│       │       │   ├── Makefile.am
│       │       │   ├── TODO
│       │       │   ├── libssh2_agent_connect.3
│       │       │   ├── libssh2_agent_disconnect.3
│       │       │   ├── libssh2_agent_free.3
│       │       │   ├── libssh2_agent_get_identity.3
│       │       │   ├── libssh2_agent_init.3
│       │       │   ├── libssh2_agent_list_identities.3
│       │       │   ├── libssh2_agent_userauth.3
│       │       │   ├── libssh2_banner_set.3
│       │       │   ├── libssh2_base64_decode.3
│       │       │   ├── libssh2_channel_close.3
│       │       │   ├── libssh2_channel_direct_tcpip.3
│       │       │   ├── libssh2_channel_direct_tcpip_ex.3
│       │       │   ├── libssh2_channel_eof.3
│       │       │   ├── libssh2_channel_exec.3
│       │       │   ├── libssh2_channel_flush.3
│       │       │   ├── libssh2_channel_flush_ex.3
│       │       │   ├── libssh2_channel_flush_stderr.3
│       │       │   ├── libssh2_channel_forward_accept.3
│       │       │   ├── libssh2_channel_forward_cancel.3
│       │       │   ├── libssh2_channel_forward_listen.3
│       │       │   ├── libssh2_channel_forward_listen_ex.3
│       │       │   ├── libssh2_channel_free.3
│       │       │   ├── libssh2_channel_get_exit_signal.3
│       │       │   ├── libssh2_channel_get_exit_status.3
│       │       │   ├── libssh2_channel_handle_extended_data.3
│       │       │   ├── libssh2_channel_handle_extended_data2.3
│       │       │   ├── libssh2_channel_ignore_extended_data.3
│       │       │   ├── libssh2_channel_open_ex.3
│       │       │   ├── libssh2_channel_open_session.3
│       │       │   ├── libssh2_channel_process_startup.3
│       │       │   ├── libssh2_channel_read.3
│       │       │   ├── libssh2_channel_read_ex.3
│       │       │   ├── libssh2_channel_read_stderr.3
│       │       │   ├── libssh2_channel_receive_window_adjust.3
│       │       │   ├── libssh2_channel_receive_window_adjust2.3
│       │       │   ├── libssh2_channel_request_pty.3
│       │       │   ├── libssh2_channel_request_pty_ex.3
│       │       │   ├── libssh2_channel_request_pty_size.3
│       │       │   ├── libssh2_channel_request_pty_size_ex.3
│       │       │   ├── libssh2_channel_send_eof.3
│       │       │   ├── libssh2_channel_set_blocking.3
│       │       │   ├── libssh2_channel_setenv.3
│       │       │   ├── libssh2_channel_setenv_ex.3
│       │       │   ├── libssh2_channel_shell.3
│       │       │   ├── libssh2_channel_subsystem.3
│       │       │   ├── libssh2_channel_wait_closed.3
│       │       │   ├── libssh2_channel_wait_eof.3
│       │       │   ├── libssh2_channel_window_read.3
│       │       │   ├── libssh2_channel_window_read_ex.3
│       │       │   ├── libssh2_channel_window_write.3
│       │       │   ├── libssh2_channel_window_write_ex.3
│       │       │   ├── libssh2_channel_write.3
│       │       │   ├── libssh2_channel_write_ex.3
│       │       │   ├── libssh2_channel_write_stderr.3
│       │       │   ├── libssh2_channel_x11_req.3
│       │       │   ├── libssh2_channel_x11_req_ex.3
│       │       │   ├── libssh2_exit.3
│       │       │   ├── libssh2_free.3
│       │       │   ├── libssh2_hostkey_hash.3
│       │       │   ├── libssh2_init.3
│       │       │   ├── libssh2_keepalive_config.3
│       │       │   ├── libssh2_keepalive_send.3
│       │       │   ├── libssh2_knownhost_add.3
│       │       │   ├── libssh2_knownhost_addc.3
│       │       │   ├── libssh2_knownhost_check.3
│       │       │   ├── libssh2_knownhost_checkp.3
│       │       │   ├── libssh2_knownhost_del.3
│       │       │   ├── libssh2_knownhost_free.3
│       │       │   ├── libssh2_knownhost_get.3
│       │       │   ├── libssh2_knownhost_init.3
│       │       │   ├── libssh2_knownhost_readfile.3
│       │       │   ├── libssh2_knownhost_readline.3
│       │       │   ├── libssh2_knownhost_writefile.3
│       │       │   ├── libssh2_knownhost_writeline.3
│       │       │   ├── libssh2_poll.3
│       │       │   ├── libssh2_poll_channel_read.3
│       │       │   ├── libssh2_publickey_add.3
│       │       │   ├── libssh2_publickey_add_ex.3
│       │       │   ├── libssh2_publickey_init.3
│       │       │   ├── libssh2_publickey_list_fetch.3
│       │       │   ├── libssh2_publickey_list_free.3
│       │       │   ├── libssh2_publickey_remove.3
│       │       │   ├── libssh2_publickey_remove_ex.3
│       │       │   ├── libssh2_publickey_shutdown.3
│       │       │   ├── libssh2_scp_recv.3
│       │       │   ├── libssh2_scp_recv2.3
│       │       │   ├── libssh2_scp_send.3
│       │       │   ├── libssh2_scp_send64.3
│       │       │   ├── libssh2_scp_send_ex.3
│       │       │   ├── libssh2_session_abstract.3
│       │       │   ├── libssh2_session_banner_get.3
│       │       │   ├── libssh2_session_banner_set.3
│       │       │   ├── libssh2_session_block_directions.3
│       │       │   ├── libssh2_session_callback_set.3
│       │       │   ├── libssh2_session_disconnect.3
│       │       │   ├── libssh2_session_disconnect_ex.3
│       │       │   ├── libssh2_session_flag.3
│       │       │   ├── libssh2_session_free.3
│       │       │   ├── libssh2_session_get_blocking.3
│       │       │   ├── libssh2_session_get_timeout.3
│       │       │   ├── libssh2_session_handshake.3
│       │       │   ├── libssh2_session_hostkey.3
│       │       │   ├── libssh2_session_init.3
│       │       │   ├── libssh2_session_init_ex.3
│       │       │   ├── libssh2_session_last_errno.3
│       │       │   ├── libssh2_session_last_error.3
│       │       │   ├── libssh2_session_method_pref.3
│       │       │   ├── libssh2_session_methods.3
│       │       │   ├── libssh2_session_set_blocking.3
│       │       │   ├── libssh2_session_set_last_error.3
│       │       │   ├── libssh2_session_set_timeout.3
│       │       │   ├── libssh2_session_startup.3
│       │       │   ├── libssh2_session_supported_algs.3
│       │       │   ├── libssh2_sftp_close.3
│       │       │   ├── libssh2_sftp_close_handle.3
│       │       │   ├── libssh2_sftp_closedir.3
│       │       │   ├── libssh2_sftp_fsetstat.3
│       │       │   ├── libssh2_sftp_fstat.3
│       │       │   ├── libssh2_sftp_fstat_ex.3
│       │       │   ├── libssh2_sftp_fstatvfs.3
│       │       │   ├── libssh2_sftp_fsync.3
│       │       │   ├── libssh2_sftp_get_channel.3
│       │       │   ├── libssh2_sftp_init.3
│       │       │   ├── libssh2_sftp_last_error.3
│       │       │   ├── libssh2_sftp_lstat.3
│       │       │   ├── libssh2_sftp_mkdir.3
│       │       │   ├── libssh2_sftp_mkdir_ex.3
│       │       │   ├── libssh2_sftp_open.3
│       │       │   ├── libssh2_sftp_open_ex.3
│       │       │   ├── libssh2_sftp_opendir.3
│       │       │   ├── libssh2_sftp_read.3
│       │       │   ├── libssh2_sftp_readdir.3
│       │       │   ├── libssh2_sftp_readdir_ex.3
│       │       │   ├── libssh2_sftp_readlink.3
│       │       │   ├── libssh2_sftp_realpath.3
│       │       │   ├── libssh2_sftp_rename.3
│       │       │   ├── libssh2_sftp_rename_ex.3
│       │       │   ├── libssh2_sftp_rewind.3
│       │       │   ├── libssh2_sftp_rmdir.3
│       │       │   ├── libssh2_sftp_rmdir_ex.3
│       │       │   ├── libssh2_sftp_seek.3
│       │       │   ├── libssh2_sftp_seek64.3
│       │       │   ├── libssh2_sftp_setstat.3
│       │       │   ├── libssh2_sftp_shutdown.3
│       │       │   ├── libssh2_sftp_stat.3
│       │       │   ├── libssh2_sftp_stat_ex.3
│       │       │   ├── libssh2_sftp_statvfs.3
│       │       │   ├── libssh2_sftp_symlink.3
│       │       │   ├── libssh2_sftp_symlink_ex.3
│       │       │   ├── libssh2_sftp_tell.3
│       │       │   ├── libssh2_sftp_tell64.3
│       │       │   ├── libssh2_sftp_unlink.3
│       │       │   ├── libssh2_sftp_unlink_ex.3
│       │       │   ├── libssh2_sftp_write.3
│       │       │   ├── libssh2_trace.3
│       │       │   ├── libssh2_trace_sethandler.3
│       │       │   ├── libssh2_userauth_authenticated.3
│       │       │   ├── libssh2_userauth_hostbased_fromfile.3
│       │       │   ├── libssh2_userauth_hostbased_fromfile_ex.3
│       │       │   ├── libssh2_userauth_keyboard_interactive.3
│       │       │   ├── libssh2_userauth_keyboard_interactive_ex.3
│       │       │   ├── libssh2_userauth_list.3
│       │       │   ├── libssh2_userauth_password.3
│       │       │   ├── libssh2_userauth_password_ex.3
│       │       │   ├── libssh2_userauth_publickey.3
│       │       │   ├── libssh2_userauth_publickey_fromfile.3
│       │       │   ├── libssh2_userauth_publickey_fromfile_ex.3
│       │       │   ├── libssh2_userauth_publickey_frommemory.3
│       │       │   ├── libssh2_version.3
│       │       │   └── template.3
│       │       ├── example/
│       │       │   ├── .gitignore
│       │       │   ├── CMakeLists.txt
│       │       │   ├── Makefile.am
│       │       │   ├── direct_tcpip.c
│       │       │   ├── libssh2_config_cmake.h.in
│       │       │   ├── scp.c
│       │       │   ├── scp_nonblock.c
│       │       │   ├── scp_write.c
│       │       │   ├── scp_write_nonblock.c
│       │       │   ├── sftp.c
│       │       │   ├── sftp_RW_nonblock.c
│       │       │   ├── sftp_append.c
│       │       │   ├── sftp_mkdir.c
│       │       │   ├── sftp_mkdir_nonblock.c
│       │       │   ├── sftp_nonblock.c
│       │       │   ├── sftp_write.c
│       │       │   ├── sftp_write_nonblock.c
│       │       │   ├── sftp_write_sliding.c
│       │       │   ├── sftpdir.c
│       │       │   ├── sftpdir_nonblock.c
│       │       │   ├── ssh2.c
│       │       │   ├── ssh2_agent.c
│       │       │   ├── ssh2_echo.c
│       │       │   ├── ssh2_exec.c
│       │       │   ├── subsystem_netconf.c
│       │       │   ├── tcpip-forward.c
│       │       │   └── x11.c
│       │       ├── get_ver.awk
│       │       ├── git2news.pl
│       │       ├── include/
│       │       │   ├── libssh2.h
│       │       │   ├── libssh2_publickey.h
│       │       │   └── libssh2_sftp.h
│       │       ├── libssh2-style.el
│       │       ├── libssh2.pc.in
│       │       ├── m4/
│       │       │   ├── .gitignore
│       │       │   ├── autobuild.m4
│       │       │   ├── lib-ld.m4
│       │       │   ├── lib-link.m4
│       │       │   └── lib-prefix.m4
│       │       ├── maketgz
│       │       ├── nw/
│       │       │   ├── GNUmakefile
│       │       │   ├── keepscreen.c
│       │       │   ├── nwlib.c
│       │       │   └── test/
│       │       │       └── GNUmakefile
│       │       ├── os400/
│       │       │   ├── README400
│       │       │   ├── ccsid.c
│       │       │   ├── include/
│       │       │   │   ├── alloca.h
│       │       │   │   ├── stdio.h
│       │       │   │   └── sys/
│       │       │   │       └── socket.h
│       │       │   ├── initscript.sh
│       │       │   ├── libssh2_ccsid.h
│       │       │   ├── libssh2_config.h
│       │       │   ├── libssh2rpg/
│       │       │   │   ├── libssh2.rpgle.in
│       │       │   │   ├── libssh2_ccsid.rpgle.in
│       │       │   │   ├── libssh2_publickey.rpgle
│       │       │   │   └── libssh2_sftp.rpgle
│       │       │   ├── macros.h
│       │       │   ├── make-include.sh
│       │       │   ├── make-rpg.sh
│       │       │   ├── make-src.sh
│       │       │   ├── make.sh
│       │       │   └── os400sys.c
│       │       ├── src/
│       │       │   ├── .gitignore
│       │       │   ├── CMakeLists.txt
│       │       │   ├── Makefile.am
│       │       │   ├── NMakefile
│       │       │   ├── agent.c
│       │       │   ├── channel.c
│       │       │   ├── channel.h
│       │       │   ├── comp.c
│       │       │   ├── comp.h
│       │       │   ├── crypt.c
│       │       │   ├── crypto.h
│       │       │   ├── global.c
│       │       │   ├── hostkey.c
│       │       │   ├── keepalive.c
│       │       │   ├── kex.c
│       │       │   ├── knownhost.c
│       │       │   ├── libgcrypt.c
│       │       │   ├── libgcrypt.h
│       │       │   ├── libssh2.pc.in
│       │       │   ├── libssh2_config_cmake.h.in
│       │       │   ├── libssh2_priv.h
│       │       │   ├── mac.c
│       │       │   ├── mac.h
│       │       │   ├── misc.c
│       │       │   ├── misc.h
│       │       │   ├── openssl.c
│       │       │   ├── openssl.h
│       │       │   ├── os400qc3.c
│       │       │   ├── os400qc3.h
│       │       │   ├── packet.c
│       │       │   ├── packet.h
│       │       │   ├── pem.c
│       │       │   ├── publickey.c
│       │       │   ├── scp.c
│       │       │   ├── session.c
│       │       │   ├── session.h
│       │       │   ├── sftp.c
│       │       │   ├── sftp.h
│       │       │   ├── transport.c
│       │       │   ├── transport.h
│       │       │   ├── userauth.c
│       │       │   ├── userauth.h
│       │       │   ├── version.c
│       │       │   ├── wincng.c
│       │       │   └── wincng.h
│       │       ├── tests/
│       │       │   ├── .gitignore
│       │       │   ├── CMakeLists.txt
│       │       │   ├── Makefile.am
│       │       │   ├── etc/
│       │       │   │   ├── host
│       │       │   │   ├── host.pub
│       │       │   │   ├── sshd_config
│       │       │   │   ├── user
│       │       │   │   └── user.pub
│       │       │   ├── libssh2_config_cmake.h.in
│       │       │   ├── mansyntax.sh
│       │       │   ├── simple.c
│       │       │   ├── ssh2.c
│       │       │   ├── ssh2.sh
│       │       │   ├── sshd_fixture.sh.in
│       │       │   └── sshdwrap
│       │       ├── vms/
│       │       │   ├── libssh2_config.h
│       │       │   ├── libssh2_make_example.dcl
│       │       │   ├── libssh2_make_help.dcl
│       │       │   ├── libssh2_make_kit.dcl
│       │       │   ├── libssh2_make_lib.dcl
│       │       │   ├── man2help.c
│       │       │   └── readme.vms
│       │       └── win32/
│       │           ├── .gitignore
│       │           ├── GNUmakefile
│       │           ├── Makefile.Watcom
│       │           ├── config.mk
│       │           ├── libssh2.dsw
│       │           ├── libssh2.rc
│       │           ├── libssh2_config.h
│       │           ├── msvcproj.foot
│       │           ├── msvcproj.head
│       │           ├── rules.mk
│       │           ├── test/
│       │           │   └── GNUmakefile
│       │           └── tests.dsp
│       ├── libssh2-1.9.0/
│       │   ├── CMakeLists.txt
│       │   ├── README.md
│       │   └── sources/
│       │       ├── .editorconfig
│       │       ├── .gitattribute
│       │       ├── .github/
│       │       │   ├── ISSUE_TEMPLATE/
│       │       │   │   └── bug_report.md
│       │       │   └── stale.yml
│       │       ├── .gitignore
│       │       ├── .travis.yml
│       │       ├── CMakeLists.txt
│       │       ├── COPYING
│       │       ├── Makefile.OpenSSL.inc
│       │       ├── Makefile.WinCNG.inc
│       │       ├── Makefile.am
│       │       ├── Makefile.inc
│       │       ├── Makefile.libgcrypt.inc
│       │       ├── Makefile.mbedTLS.inc
│       │       ├── Makefile.os400qc3.inc
│       │       ├── NEWS
│       │       ├── NMakefile
│       │       ├── README
│       │       ├── README.md
│       │       ├── RELEASE-NOTES
│       │       ├── acinclude.m4
│       │       ├── appveyor.yml
│       │       ├── buildconf
│       │       ├── cmake/
│       │       │   ├── CheckFunctionExistsMayNeedLibrary.cmake
│       │       │   ├── CheckNonblockingSocketSupport.cmake
│       │       │   ├── CopyRuntimeDependencies.cmake
│       │       │   ├── FindLibgcrypt.cmake
│       │       │   ├── FindmbedTLS.cmake
│       │       │   ├── SocketLibraries.cmake
│       │       │   ├── Toolchain-Linux-32.cmake
│       │       │   └── max_warnings.cmake
│       │       ├── config.rpath
│       │       ├── configure.ac
│       │       ├── docs/
│       │       │   ├── .gitignore
│       │       │   ├── AUTHORS
│       │       │   ├── BINDINGS
│       │       │   ├── CMakeLists.txt
│       │       │   ├── HACKING
│       │       │   ├── HACKING.CRYPTO
│       │       │   ├── INSTALL_AUTOTOOLS
│       │       │   ├── INSTALL_CMAKE
│       │       │   ├── Makefile.am
│       │       │   ├── SECURITY.md
│       │       │   ├── TODO
│       │       │   ├── libssh2_agent_connect.3
│       │       │   ├── libssh2_agent_disconnect.3
│       │       │   ├── libssh2_agent_free.3
│       │       │   ├── libssh2_agent_get_identity.3
│       │       │   ├── libssh2_agent_get_identity_path.3
│       │       │   ├── libssh2_agent_init.3
│       │       │   ├── libssh2_agent_list_identities.3
│       │       │   ├── libssh2_agent_set_identity_path.3
│       │       │   ├── libssh2_agent_userauth.3
│       │       │   ├── libssh2_banner_set.3
│       │       │   ├── libssh2_base64_decode.3
│       │       │   ├── libssh2_channel_close.3
│       │       │   ├── libssh2_channel_direct_tcpip.3
│       │       │   ├── libssh2_channel_direct_tcpip_ex.3
│       │       │   ├── libssh2_channel_eof.3
│       │       │   ├── libssh2_channel_exec.3
│       │       │   ├── libssh2_channel_flush.3
│       │       │   ├── libssh2_channel_flush_ex.3
│       │       │   ├── libssh2_channel_flush_stderr.3
│       │       │   ├── libssh2_channel_forward_accept.3
│       │       │   ├── libssh2_channel_forward_cancel.3
│       │       │   ├── libssh2_channel_forward_listen.3
│       │       │   ├── libssh2_channel_forward_listen_ex.3
│       │       │   ├── libssh2_channel_free.3
│       │       │   ├── libssh2_channel_get_exit_signal.3
│       │       │   ├── libssh2_channel_get_exit_status.3
│       │       │   ├── libssh2_channel_handle_extended_data.3
│       │       │   ├── libssh2_channel_handle_extended_data2.3
│       │       │   ├── libssh2_channel_ignore_extended_data.3
│       │       │   ├── libssh2_channel_open_ex.3
│       │       │   ├── libssh2_channel_open_session.3
│       │       │   ├── libssh2_channel_process_startup.3
│       │       │   ├── libssh2_channel_read.3
│       │       │   ├── libssh2_channel_read_ex.3
│       │       │   ├── libssh2_channel_read_stderr.3
│       │       │   ├── libssh2_channel_receive_window_adjust.3
│       │       │   ├── libssh2_channel_receive_window_adjust2.3
│       │       │   ├── libssh2_channel_request_pty.3
│       │       │   ├── libssh2_channel_request_pty_ex.3
│       │       │   ├── libssh2_channel_request_pty_size.3
│       │       │   ├── libssh2_channel_request_pty_size_ex.3
│       │       │   ├── libssh2_channel_send_eof.3
│       │       │   ├── libssh2_channel_set_blocking.3
│       │       │   ├── libssh2_channel_setenv.3
│       │       │   ├── libssh2_channel_setenv_ex.3
│       │       │   ├── libssh2_channel_shell.3
│       │       │   ├── libssh2_channel_subsystem.3
│       │       │   ├── libssh2_channel_wait_closed.3
│       │       │   ├── libssh2_channel_wait_eof.3
│       │       │   ├── libssh2_channel_window_read.3
│       │       │   ├── libssh2_channel_window_read_ex.3
│       │       │   ├── libssh2_channel_window_write.3
│       │       │   ├── libssh2_channel_window_write_ex.3
│       │       │   ├── libssh2_channel_write.3
│       │       │   ├── libssh2_channel_write_ex.3
│       │       │   ├── libssh2_channel_write_stderr.3
│       │       │   ├── libssh2_channel_x11_req.3
│       │       │   ├── libssh2_channel_x11_req_ex.3
│       │       │   ├── libssh2_exit.3
│       │       │   ├── libssh2_free.3
│       │       │   ├── libssh2_hostkey_hash.3
│       │       │   ├── libssh2_init.3
│       │       │   ├── libssh2_keepalive_config.3
│       │       │   ├── libssh2_keepalive_send.3
│       │       │   ├── libssh2_knownhost_add.3
│       │       │   ├── libssh2_knownhost_addc.3
│       │       │   ├── libssh2_knownhost_check.3
│       │       │   ├── libssh2_knownhost_checkp.3
│       │       │   ├── libssh2_knownhost_del.3
│       │       │   ├── libssh2_knownhost_free.3
│       │       │   ├── libssh2_knownhost_get.3
│       │       │   ├── libssh2_knownhost_init.3
│       │       │   ├── libssh2_knownhost_readfile.3
│       │       │   ├── libssh2_knownhost_readline.3
│       │       │   ├── libssh2_knownhost_writefile.3
│       │       │   ├── libssh2_knownhost_writeline.3
│       │       │   ├── libssh2_poll.3
│       │       │   ├── libssh2_poll_channel_read.3
│       │       │   ├── libssh2_publickey_add.3
│       │       │   ├── libssh2_publickey_add_ex.3
│       │       │   ├── libssh2_publickey_init.3
│       │       │   ├── libssh2_publickey_list_fetch.3
│       │       │   ├── libssh2_publickey_list_free.3
│       │       │   ├── libssh2_publickey_remove.3
│       │       │   ├── libssh2_publickey_remove_ex.3
│       │       │   ├── libssh2_publickey_shutdown.3
│       │       │   ├── libssh2_scp_recv.3
│       │       │   ├── libssh2_scp_recv2.3
│       │       │   ├── libssh2_scp_send.3
│       │       │   ├── libssh2_scp_send64.3
│       │       │   ├── libssh2_scp_send_ex.3
│       │       │   ├── libssh2_session_abstract.3
│       │       │   ├── libssh2_session_banner_get.3
│       │       │   ├── libssh2_session_banner_set.3
│       │       │   ├── libssh2_session_block_directions.3
│       │       │   ├── libssh2_session_callback_set.3
│       │       │   ├── libssh2_session_disconnect.3
│       │       │   ├── libssh2_session_disconnect_ex.3
│       │       │   ├── libssh2_session_flag.3
│       │       │   ├── libssh2_session_free.3
│       │       │   ├── libssh2_session_get_blocking.3
│       │       │   ├── libssh2_session_get_timeout.3
│       │       │   ├── libssh2_session_handshake.3
│       │       │   ├── libssh2_session_hostkey.3
│       │       │   ├── libssh2_session_init.3
│       │       │   ├── libssh2_session_init_ex.3
│       │       │   ├── libssh2_session_last_errno.3
│       │       │   ├── libssh2_session_last_error.3
│       │       │   ├── libssh2_session_method_pref.3
│       │       │   ├── libssh2_session_methods.3
│       │       │   ├── libssh2_session_set_blocking.3
│       │       │   ├── libssh2_session_set_last_error.3
│       │       │   ├── libssh2_session_set_timeout.3
│       │       │   ├── libssh2_session_startup.3
│       │       │   ├── libssh2_session_supported_algs.3
│       │       │   ├── libssh2_sftp_close.3
│       │       │   ├── libssh2_sftp_close_handle.3
│       │       │   ├── libssh2_sftp_closedir.3
│       │       │   ├── libssh2_sftp_fsetstat.3
│       │       │   ├── libssh2_sftp_fstat.3
│       │       │   ├── libssh2_sftp_fstat_ex.3
│       │       │   ├── libssh2_sftp_fstatvfs.3
│       │       │   ├── libssh2_sftp_fsync.3
│       │       │   ├── libssh2_sftp_get_channel.3
│       │       │   ├── libssh2_sftp_init.3
│       │       │   ├── libssh2_sftp_last_error.3
│       │       │   ├── libssh2_sftp_lstat.3
│       │       │   ├── libssh2_sftp_mkdir.3
│       │       │   ├── libssh2_sftp_mkdir_ex.3
│       │       │   ├── libssh2_sftp_open.3
│       │       │   ├── libssh2_sftp_open_ex.3
│       │       │   ├── libssh2_sftp_opendir.3
│       │       │   ├── libssh2_sftp_read.3
│       │       │   ├── libssh2_sftp_readdir.3
│       │       │   ├── libssh2_sftp_readdir_ex.3
│       │       │   ├── libssh2_sftp_readlink.3
│       │       │   ├── libssh2_sftp_realpath.3
│       │       │   ├── libssh2_sftp_rename.3
│       │       │   ├── libssh2_sftp_rename_ex.3
│       │       │   ├── libssh2_sftp_rewind.3
│       │       │   ├── libssh2_sftp_rmdir.3
│       │       │   ├── libssh2_sftp_rmdir_ex.3
│       │       │   ├── libssh2_sftp_seek.3
│       │       │   ├── libssh2_sftp_seek64.3
│       │       │   ├── libssh2_sftp_setstat.3
│       │       │   ├── libssh2_sftp_shutdown.3
│       │       │   ├── libssh2_sftp_stat.3
│       │       │   ├── libssh2_sftp_stat_ex.3
│       │       │   ├── libssh2_sftp_statvfs.3
│       │       │   ├── libssh2_sftp_symlink.3
│       │       │   ├── libssh2_sftp_symlink_ex.3
│       │       │   ├── libssh2_sftp_tell.3
│       │       │   ├── libssh2_sftp_tell64.3
│       │       │   ├── libssh2_sftp_unlink.3
│       │       │   ├── libssh2_sftp_unlink_ex.3
│       │       │   ├── libssh2_sftp_write.3
│       │       │   ├── libssh2_trace.3
│       │       │   ├── libssh2_trace_sethandler.3
│       │       │   ├── libssh2_userauth_authenticated.3
│       │       │   ├── libssh2_userauth_hostbased_fromfile.3
│       │       │   ├── libssh2_userauth_hostbased_fromfile_ex.3
│       │       │   ├── libssh2_userauth_keyboard_interactive.3
│       │       │   ├── libssh2_userauth_keyboard_interactive_ex.3
│       │       │   ├── libssh2_userauth_list.3
│       │       │   ├── libssh2_userauth_password.3
│       │       │   ├── libssh2_userauth_password_ex.3
│       │       │   ├── libssh2_userauth_publickey.3
│       │       │   ├── libssh2_userauth_publickey_fromfile.3
│       │       │   ├── libssh2_userauth_publickey_fromfile_ex.3
│       │       │   ├── libssh2_userauth_publickey_frommemory.3
│       │       │   ├── libssh2_version.3
│       │       │   └── template.3
│       │       ├── example/
│       │       │   ├── .gitignore
│       │       │   ├── CMakeLists.txt
│       │       │   ├── Makefile.am
│       │       │   ├── direct_tcpip.c
│       │       │   ├── libssh2_config_cmake.h.in
│       │       │   ├── scp.c
│       │       │   ├── scp_nonblock.c
│       │       │   ├── scp_write.c
│       │       │   ├── scp_write_nonblock.c
│       │       │   ├── sftp.c
│       │       │   ├── sftp_RW_nonblock.c
│       │       │   ├── sftp_append.c
│       │       │   ├── sftp_mkdir.c
│       │       │   ├── sftp_mkdir_nonblock.c
│       │       │   ├── sftp_nonblock.c
│       │       │   ├── sftp_write.c
│       │       │   ├── sftp_write_nonblock.c
│       │       │   ├── sftp_write_sliding.c
│       │       │   ├── sftpdir.c
│       │       │   ├── sftpdir_nonblock.c
│       │       │   ├── ssh2.c
│       │       │   ├── ssh2_agent.c
│       │       │   ├── ssh2_echo.c
│       │       │   ├── ssh2_exec.c
│       │       │   ├── subsystem_netconf.c
│       │       │   ├── tcpip-forward.c
│       │       │   └── x11.c
│       │       ├── get_ver.awk
│       │       ├── git2news.pl
│       │       ├── include/
│       │       │   ├── libssh2.h
│       │       │   ├── libssh2_publickey.h
│       │       │   └── libssh2_sftp.h
│       │       ├── libssh2-style.el
│       │       ├── libssh2.pc.in
│       │       ├── m4/
│       │       │   ├── .gitignore
│       │       │   ├── autobuild.m4
│       │       │   ├── lib-ld.m4
│       │       │   ├── lib-link.m4
│       │       │   └── lib-prefix.m4
│       │       ├── maketgz
│       │       ├── nw/
│       │       │   ├── GNUmakefile
│       │       │   ├── keepscreen.c
│       │       │   ├── nwlib.c
│       │       │   └── test/
│       │       │       └── GNUmakefile
│       │       ├── os400/
│       │       │   ├── README400
│       │       │   ├── ccsid.c
│       │       │   ├── include/
│       │       │   │   ├── alloca.h
│       │       │   │   ├── stdio.h
│       │       │   │   └── sys/
│       │       │   │       └── socket.h
│       │       │   ├── initscript.sh
│       │       │   ├── libssh2_ccsid.h
│       │       │   ├── libssh2_config.h
│       │       │   ├── libssh2rpg/
│       │       │   │   ├── libssh2.rpgle.in
│       │       │   │   ├── libssh2_ccsid.rpgle.in
│       │       │   │   ├── libssh2_publickey.rpgle
│       │       │   │   └── libssh2_sftp.rpgle
│       │       │   ├── macros.h
│       │       │   ├── make-include.sh
│       │       │   ├── make-rpg.sh
│       │       │   ├── make-src.sh
│       │       │   ├── make.sh
│       │       │   └── os400sys.c
│       │       ├── src/
│       │       │   ├── .gitignore
│       │       │   ├── CMakeLists.txt
│       │       │   ├── Makefile.am
│       │       │   ├── NMakefile
│       │       │   ├── agent.c
│       │       │   ├── bcrypt_pbkdf.c
│       │       │   ├── blf.h
│       │       │   ├── blowfish.c
│       │       │   ├── channel.c
│       │       │   ├── channel.h
│       │       │   ├── checksrc.pl
│       │       │   ├── comp.c
│       │       │   ├── comp.h
│       │       │   ├── crypt.c
│       │       │   ├── crypto.h
│       │       │   ├── global.c
│       │       │   ├── hostkey.c
│       │       │   ├── keepalive.c
│       │       │   ├── kex.c
│       │       │   ├── knownhost.c
│       │       │   ├── libgcrypt.c
│       │       │   ├── libgcrypt.h
│       │       │   ├── libssh2.pc.in
│       │       │   ├── libssh2_config_cmake.h.in
│       │       │   ├── libssh2_priv.h
│       │       │   ├── mac.c
│       │       │   ├── mac.h
│       │       │   ├── mbedtls.c
│       │       │   ├── mbedtls.h
│       │       │   ├── misc.c
│       │       │   ├── misc.h
│       │       │   ├── openssl.c
│       │       │   ├── openssl.h
│       │       │   ├── os400qc3.c
│       │       │   ├── os400qc3.h
│       │       │   ├── packet.c
│       │       │   ├── packet.h
│       │       │   ├── pem.c
│       │       │   ├── publickey.c
│       │       │   ├── scp.c
│       │       │   ├── session.c
│       │       │   ├── session.h
│       │       │   ├── sftp.c
│       │       │   ├── sftp.h
│       │       │   ├── transport.c
│       │       │   ├── transport.h
│       │       │   ├── userauth.c
│       │       │   ├── userauth.h
│       │       │   ├── version.c
│       │       │   ├── wincng.c
│       │       │   └── wincng.h
│       │       ├── tests/
│       │       │   ├── .gitignore
│       │       │   ├── CMakeLists.txt
│       │       │   ├── Makefile.am
│       │       │   ├── etc/
│       │       │   │   ├── host
│       │       │   │   ├── host.pub
│       │       │   │   ├── sshd_config
│       │       │   │   ├── user
│       │       │   │   └── user.pub
│       │       │   ├── key_dsa
│       │       │   ├── key_dsa.pub
│       │       │   ├── key_dsa_wrong
│       │       │   ├── key_dsa_wrong.pub
│       │       │   ├── key_ed25519
│       │       │   ├── key_ed25519.pub
│       │       │   ├── key_ed25519_encrypted
│       │       │   ├── key_ed25519_encrypted.pub
│       │       │   ├── key_rsa
│       │       │   ├── key_rsa.pub
│       │       │   ├── key_rsa_encrypted
│       │       │   ├── key_rsa_encrypted.pub
│       │       │   ├── key_rsa_openssh
│       │       │   ├── key_rsa_openssh.pub
│       │       │   ├── libssh2_config_cmake.h.in
│       │       │   ├── mansyntax.sh
│       │       │   ├── openssh_fixture.c
│       │       │   ├── openssh_fixture.h
│       │       │   ├── openssh_server/
│       │       │   │   ├── Dockerfile
│       │       │   │   ├── authorized_keys
│       │       │   │   ├── ssh_host_ecdsa_key
│       │       │   │   ├── ssh_host_ed25519_key
│       │       │   │   └── ssh_host_rsa_key
│       │       │   ├── runner.c
│       │       │   ├── session_fixture.c
│       │       │   ├── session_fixture.h
│       │       │   ├── simple.c
│       │       │   ├── ssh2.c
│       │       │   ├── ssh2.sh
│       │       │   ├── sshd_fixture.sh.in
│       │       │   ├── sshdwrap
│       │       │   ├── test_hostkey.c
│       │       │   ├── test_hostkey_hash.c
│       │       │   ├── test_keyboard_interactive_auth_fails_with_wrong_response.c
│       │       │   ├── test_keyboard_interactive_auth_succeeds_with_correct_response.c
│       │       │   ├── test_password_auth_fails_with_wrong_password.c
│       │       │   ├── test_password_auth_fails_with_wrong_username.c
│       │       │   ├── test_password_auth_succeeds_with_correct_credentials.c
│       │       │   ├── test_public_key_auth_fails_with_wrong_key.c
│       │       │   ├── test_public_key_auth_succeeds_with_correct_dsa_key.c
│       │       │   ├── test_public_key_auth_succeeds_with_correct_ed25519_key.c
│       │       │   ├── test_public_key_auth_succeeds_with_correct_ed25519_key_from_mem.c
│       │       │   ├── test_public_key_auth_succeeds_with_correct_encrypted_ed25519_key.c
│       │       │   ├── test_public_key_auth_succeeds_with_correct_encrypted_rsa_key.c
│       │       │   ├── test_public_key_auth_succeeds_with_correct_rsa_key.c
│       │       │   └── test_public_key_auth_succeeds_with_correct_rsa_openssh_key.c
│       │       ├── vms/
│       │       │   ├── libssh2_config.h
│       │       │   ├── libssh2_make_example.dcl
│       │       │   ├── libssh2_make_help.dcl
│       │       │   ├── libssh2_make_kit.dcl
│       │       │   ├── libssh2_make_lib.dcl
│       │       │   ├── man2help.c
│       │       │   └── readme.vms
│       │       └── win32/
│       │           ├── .gitignore
│       │           ├── GNUmakefile
│       │           ├── Makefile.Watcom
│       │           ├── config.mk
│       │           ├── libssh2.dsw
│       │           ├── libssh2.rc
│       │           ├── libssh2_config.h
│       │           ├── msvcproj.foot
│       │           ├── msvcproj.head
│       │           ├── rules.mk
│       │           ├── test/
│       │           │   └── GNUmakefile
│       │           └── tests.dsp
│       ├── qjson-0.8.1/
│       │   ├── CMakeLists.txt
│       │   ├── README.md
│       │   └── sources/
│       │       ├── .gitignore
│       │       ├── CMakeLists.txt
│       │       ├── ChangeLog
│       │       ├── QJSONConfig.cmake.in
│       │       ├── QJSONConfigVersion.cmake.in
│       │       ├── QJson.pc.in
│       │       ├── README.license
│       │       ├── README.md
│       │       ├── cmake_uninstall.cmake.in
│       │       ├── doc/
│       │       │   ├── Doxyfile
│       │       │   ├── footer.html
│       │       │   ├── header.html
│       │       │   └── qjson.dox
│       │       ├── include/
│       │       │   └── QJson/
│       │       │       ├── Parser
│       │       │       ├── QObjectHelper
│       │       │       └── Serializer
│       │       ├── src/
│       │       │   ├── .gitignore
│       │       │   ├── CMakeLists.txt
│       │       │   ├── FlexLexer.h
│       │       │   ├── json_parser.cc
│       │       │   ├── json_parser.hh
│       │       │   ├── json_parser.yy
│       │       │   ├── json_scanner.cc
│       │       │   ├── json_scanner.cpp
│       │       │   ├── json_scanner.h
│       │       │   ├── json_scanner.yy
│       │       │   ├── location.hh
│       │       │   ├── parser.cpp
│       │       │   ├── parser.h
│       │       │   ├── parser_p.h
│       │       │   ├── parserrunnable.cpp
│       │       │   ├── parserrunnable.h
│       │       │   ├── position.hh
│       │       │   ├── qjson_debug.h
│       │       │   ├── qjson_export.h
│       │       │   ├── qobjecthelper.cpp
│       │       │   ├── qobjecthelper.h
│       │       │   ├── serializer.cpp
│       │       │   ├── serializer.h
│       │       │   ├── serializerrunnable.cpp
│       │       │   ├── serializerrunnable.h
│       │       │   └── stack.hh
│       │       └── tests/
│       │           ├── .gitignore
│       │           ├── CMakeLists.txt
│       │           ├── benchmarks/
│       │           │   ├── CMakeLists.txt
│       │           │   ├── parsingbenchmark.cpp
│       │           │   └── qlocalevsstrtod_l.cpp
│       │           └── scanner/
│       │               ├── CMakeLists.txt
│       │               └── testscanner.cpp
│       └── qscintilla-2.8.4/
│           ├── CMakeLists.txt
│           ├── QScintilla-2.9.3-xcode8.patch
│           ├── README.md
│           └── sources/
│               ├── GPL_EXCEPTION.TXT
│               ├── GPL_EXCEPTION_ADDENDUM.TXT
│               ├── LICENSE.GPL2
│               ├── LICENSE.GPL3
│               ├── NEWS
│               ├── OPENSOURCE-NOTICE.TXT
│               ├── Python/
│               │   ├── configure-old.py
│               │   ├── configure.py
│               │   └── sip/
│               │       ├── qsciabstractapis.sip
│               │       ├── qsciapis.sip
│               │       ├── qscicommand.sip
│               │       ├── qscicommandset.sip
│               │       ├── qscidocument.sip
│               │       ├── qscilexer.sip
│               │       ├── qscilexeravs.sip
│               │       ├── qscilexerbash.sip
│               │       ├── qscilexerbatch.sip
│               │       ├── qscilexercmake.sip
│               │       ├── qscilexercoffeescript.sip
│               │       ├── qscilexercpp.sip
│               │       ├── qscilexercsharp.sip
│               │       ├── qscilexercss.sip
│               │       ├── qscilexercustom.sip
│               │       ├── qscilexerd.sip
│               │       ├── qscilexerdiff.sip
│               │       ├── qscilexerfortran.sip
│               │       ├── qscilexerfortran77.sip
│               │       ├── qscilexerhtml.sip
│               │       ├── qscilexeridl.sip
│               │       ├── qscilexerjava.sip
│               │       ├── qscilexerjavascript.sip
│               │       ├── qscilexerlua.sip
│               │       ├── qscilexermakefile.sip
│               │       ├── qscilexermatlab.sip
│               │       ├── qscilexeroctave.sip
│               │       ├── qscilexerpascal.sip
│               │       ├── qscilexerperl.sip
│               │       ├── qscilexerpo.sip
│               │       ├── qscilexerpostscript.sip
│               │       ├── qscilexerpov.sip
│               │       ├── qscilexerproperties.sip
│               │       ├── qscilexerpython.sip
│               │       ├── qscilexerruby.sip
│               │       ├── qscilexerspice.sip
│               │       ├── qscilexersql.sip
│               │       ├── qscilexertcl.sip
│               │       ├── qscilexertex.sip
│               │       ├── qscilexerverilog.sip
│               │       ├── qscilexervhdl.sip
│               │       ├── qscilexerxml.sip
│               │       ├── qscilexeryaml.sip
│               │       ├── qscimacro.sip
│               │       ├── qscimod3.sip
│               │       ├── qscimod4.sip
│               │       ├── qscimod5.sip
│               │       ├── qscimodcommon.sip
│               │       ├── qsciprinter.sip
│               │       ├── qsciscintilla.sip
│               │       ├── qsciscintillabase3.sip
│               │       ├── qsciscintillabase4.sip
│               │       ├── qscistyle.sip
│               │       └── qscistyledtext.sip
│               ├── Qt3/
│               │   ├── InputMethod.cpp
│               │   ├── ListBoxQt.cpp
│               │   ├── ListBoxQt.h
│               │   ├── MacPasteboardMime.cpp
│               │   ├── PlatQt.cpp
│               │   ├── Qsci/
│               │   │   ├── qsciabstractapis.h
│               │   │   ├── qsciapis.h
│               │   │   ├── qscicommand.h
│               │   │   ├── qscicommandset.h
│               │   │   ├── qscidocument.h
│               │   │   ├── qsciglobal.h
│               │   │   ├── qscilexer.h
│               │   │   ├── qscilexeravs.h
│               │   │   ├── qscilexerbash.h
│               │   │   ├── qscilexerbatch.h
│               │   │   ├── qscilexercmake.h
│               │   │   ├── qscilexercoffeescript.h
│               │   │   ├── qscilexercpp.h
│               │   │   ├── qscilexercsharp.h
│               │   │   ├── qscilexercss.h
│               │   │   ├── qscilexercustom.h
│               │   │   ├── qscilexerd.h
│               │   │   ├── qscilexerdiff.h
│               │   │   ├── qscilexerfortran.h
│               │   │   ├── qscilexerfortran77.h
│               │   │   ├── qscilexerhtml.h
│               │   │   ├── qscilexeridl.h
│               │   │   ├── qscilexerjava.h
│               │   │   ├── qscilexerjavascript.h
│               │   │   ├── qscilexerlua.h
│               │   │   ├── qscilexermakefile.h
│               │   │   ├── qscilexermatlab.h
│               │   │   ├── qscilexeroctave.h
│               │   │   ├── qscilexerpascal.h
│               │   │   ├── qscilexerperl.h
│               │   │   ├── qscilexerpo.h
│               │   │   ├── qscilexerpostscript.h
│               │   │   ├── qscilexerpov.h
│               │   │   ├── qscilexerproperties.h
│               │   │   ├── qscilexerpython.h
│               │   │   ├── qscilexerruby.h
│               │   │   ├── qscilexerspice.h
│               │   │   ├── qscilexersql.h
│               │   │   ├── qscilexertcl.h
│               │   │   ├── qscilexertex.h
│               │   │   ├── qscilexerverilog.h
│               │   │   ├── qscilexervhdl.h
│               │   │   ├── qscilexerxml.h
│               │   │   ├── qscilexeryaml.h
│               │   │   ├── qscimacro.h
│               │   │   ├── qsciprinter.h
│               │   │   ├── qsciscintilla.h
│               │   │   ├── qsciscintillabase.h
│               │   │   ├── qscistyle.h
│               │   │   └── qscistyledtext.h
│               │   ├── SciClasses.cpp
│               │   ├── SciClasses.h
│               │   ├── SciNamespace.h
│               │   ├── ScintillaQt.cpp
│               │   ├── ScintillaQt.h
│               │   ├── qsciabstractapis.cpp
│               │   ├── qsciapis.cpp
│               │   ├── qscicommand.cpp
│               │   ├── qscicommandset.cpp
│               │   ├── qscidocument.cpp
│               │   ├── qscilexer.cpp
│               │   ├── qscilexeravs.cpp
│               │   ├── qscilexerbash.cpp
│               │   ├── qscilexerbatch.cpp
│               │   ├── qscilexercmake.cpp
│               │   ├── qscilexercoffeescript.cpp
│               │   ├── qscilexercpp.cpp
│               │   ├── qscilexercsharp.cpp
│               │   ├── qscilexercss.cpp
│               │   ├── qscilexercustom.cpp
│               │   ├── qscilexerd.cpp
│               │   ├── qscilexerdiff.cpp
│               │   ├── qscilexerfortran.cpp
│               │   ├── qscilexerfortran77.cpp
│               │   ├── qscilexerhtml.cpp
│               │   ├── qscilexeridl.cpp
│               │   ├── qscilexerjava.cpp
│               │   ├── qscilexerjavascript.cpp
│               │   ├── qscilexerlua.cpp
│               │   ├── qscilexermakefile.cpp
│               │   ├── qscilexermatlab.cpp
│               │   ├── qscilexeroctave.cpp
│               │   ├── qscilexerpascal.cpp
│               │   ├── qscilexerperl.cpp
│               │   ├── qscilexerpo.cpp
│               │   ├── qscilexerpostscript.cpp
│               │   ├── qscilexerpov.cpp
│               │   ├── qscilexerproperties.cpp
│               │   ├── qscilexerpython.cpp
│               │   ├── qscilexerruby.cpp
│               │   ├── qscilexerspice.cpp
│               │   ├── qscilexersql.cpp
│               │   ├── qscilexertcl.cpp
│               │   ├── qscilexertex.cpp
│               │   ├── qscilexerverilog.cpp
│               │   ├── qscilexervhdl.cpp
│               │   ├── qscilexerxml.cpp
│               │   ├── qscilexeryaml.cpp
│               │   ├── qscimacro.cpp
│               │   ├── qscintilla.pro
│               │   ├── qscintilla_cs.qm
│               │   ├── qscintilla_cs.ts
│               │   ├── qscintilla_de.qm
│               │   ├── qscintilla_de.ts
│               │   ├── qscintilla_es.qm
│               │   ├── qscintilla_es.ts
│               │   ├── qscintilla_fr.qm
│               │   ├── qscintilla_fr.ts
│               │   ├── qscintilla_pt_br.qm
│               │   ├── qscintilla_pt_br.ts
│               │   ├── qsciprinter.cpp
│               │   ├── qsciscintilla.cpp
│               │   ├── qsciscintillabase.cpp
│               │   ├── qscistyle.cpp
│               │   └── qscistyledtext.cpp
│               ├── Qt4Qt5/
│               │   ├── InputMethod.cpp
│               │   ├── ListBoxQt.cpp
│               │   ├── ListBoxQt.h
│               │   ├── MacPasteboardMime.cpp
│               │   ├── PlatQt.cpp
│               │   ├── Qsci/
│               │   │   ├── qsciabstractapis.h
│               │   │   ├── qsciapis.h
│               │   │   ├── qscicommand.h
│               │   │   ├── qscicommandset.h
│               │   │   ├── qscidocument.h
│               │   │   ├── qsciglobal.h
│               │   │   ├── qscilexer.h
│               │   │   ├── qscilexeravs.h
│               │   │   ├── qscilexerbash.h
│               │   │   ├── qscilexerbatch.h
│               │   │   ├── qscilexercmake.h
│               │   │   ├── qscilexercoffeescript.h
│               │   │   ├── qscilexercpp.h
│               │   │   ├── qscilexercsharp.h
│               │   │   ├── qscilexercss.h
│               │   │   ├── qscilexercustom.h
│               │   │   ├── qscilexerd.h
│               │   │   ├── qscilexerdiff.h
│               │   │   ├── qscilexerfortran.h
│               │   │   ├── qscilexerfortran77.h
│               │   │   ├── qscilexerhtml.h
│               │   │   ├── qscilexeridl.h
│               │   │   ├── qscilexerjava.h
│               │   │   ├── qscilexerjavascript.h
│               │   │   ├── qscilexerlua.h
│               │   │   ├── qscilexermakefile.h
│               │   │   ├── qscilexermatlab.h
│               │   │   ├── qscilexeroctave.h
│               │   │   ├── qscilexerpascal.h
│               │   │   ├── qscilexerperl.h
│               │   │   ├── qscilexerpo.h
│               │   │   ├── qscilexerpostscript.h
│               │   │   ├── qscilexerpov.h
│               │   │   ├── qscilexerproperties.h
│               │   │   ├── qscilexerpython.h
│               │   │   ├── qscilexerruby.h
│               │   │   ├── qscilexerspice.h
│               │   │   ├── qscilexersql.h
│               │   │   ├── qscilexertcl.h
│               │   │   ├── qscilexertex.h
│               │   │   ├── qscilexerverilog.h
│               │   │   ├── qscilexervhdl.h
│               │   │   ├── qscilexerxml.h
│               │   │   ├── qscilexeryaml.h
│               │   │   ├── qscimacro.h
│               │   │   ├── qsciprinter.h
│               │   │   ├── qsciscintilla.h
│               │   │   ├── qsciscintillabase.h
│               │   │   ├── qscistyle.h
│               │   │   └── qscistyledtext.h
│               │   ├── SciClasses.cpp
│               │   ├── SciClasses.h
│               │   ├── SciNamespace.h
│               │   ├── ScintillaQt.cpp
│               │   ├── ScintillaQt.h
│               │   ├── features/
│               │   │   └── qscintilla2.prf
│               │   ├── qsciabstractapis.cpp
│               │   ├── qsciapis.cpp
│               │   ├── qscicommand.cpp
│               │   ├── qscicommandset.cpp
│               │   ├── qscidocument.cpp
│               │   ├── qscilexer.cpp
│               │   ├── qscilexeravs.cpp
│               │   ├── qscilexerbash.cpp
│               │   ├── qscilexerbatch.cpp
│               │   ├── qscilexercmake.cpp
│               │   ├── qscilexercoffeescript.cpp
│               │   ├── qscilexercpp.cpp
│               │   ├── qscilexercsharp.cpp
│               │   ├── qscilexercss.cpp
│               │   ├── qscilexercustom.cpp
│               │   ├── qscilexerd.cpp
│               │   ├── qscilexerdiff.cpp
│               │   ├── qscilexerfortran.cpp
│               │   ├── qscilexerfortran77.cpp
│               │   ├── qscilexerhtml.cpp
│               │   ├── qscilexeridl.cpp
│               │   ├── qscilexerjava.cpp
│               │   ├── qscilexerjavascript.cpp
│               │   ├── qscilexerlua.cpp
│               │   ├── qscilexermakefile.cpp
│               │   ├── qscilexermatlab.cpp
│               │   ├── qscilexeroctave.cpp
│               │   ├── qscilexerpascal.cpp
│               │   ├── qscilexerperl.cpp
│               │   ├── qscilexerpo.cpp
│               │   ├── qscilexerpostscript.cpp
│               │   ├── qscilexerpov.cpp
│               │   ├── qscilexerproperties.cpp
│               │   ├── qscilexerpython.cpp
│               │   ├── qscilexerruby.cpp
│               │   ├── qscilexerspice.cpp
│               │   ├── qscilexersql.cpp
│               │   ├── qscilexertcl.cpp
│               │   ├── qscilexertex.cpp
│               │   ├── qscilexerverilog.cpp
│               │   ├── qscilexervhdl.cpp
│               │   ├── qscilexerxml.cpp
│               │   ├── qscilexeryaml.cpp
│               │   ├── qscimacro.cpp
│               │   ├── qscintilla.pro
│               │   ├── qscintilla_cs.qm
│               │   ├── qscintilla_cs.ts
│               │   ├── qscintilla_de.qm
│               │   ├── qscintilla_de.ts
│               │   ├── qscintilla_es.qm
│               │   ├── qscintilla_es.ts
│               │   ├── qscintilla_fr.qm
│               │   ├── qscintilla_fr.ts
│               │   ├── qscintilla_pt_br.qm
│               │   ├── qscintilla_pt_br.ts
│               │   ├── qsciprinter.cpp
│               │   ├── qsciscintilla.cpp
│               │   ├── qsciscintillabase.cpp
│               │   ├── qscistyle.cpp
│               │   └── qscistyledtext.cpp
│               ├── README
│               ├── designer-Qt3/
│               │   ├── designer.pro
│               │   └── qscintillaplugin.cpp
│               ├── designer-Qt4Qt5/
│               │   ├── designer.pro
│               │   ├── qscintillaplugin.cpp
│               │   └── qscintillaplugin.h
│               ├── example-Qt3/
│               │   ├── application.cpp
│               │   ├── application.h
│               │   ├── application.pro
│               │   ├── fileopen.xpm
│               │   ├── fileprint.xpm
│               │   ├── filesave.xpm
│               │   └── main.cpp
│               ├── example-Qt4Qt5/
│               │   ├── application.pro
│               │   ├── application.qrc
│               │   ├── main.cpp
│               │   ├── mainwindow.cpp
│               │   └── mainwindow.h
│               ├── include/
│               │   ├── ILexer.h
│               │   ├── License.txt
│               │   ├── Platform.h
│               │   ├── SciLexer.h
│               │   ├── Scintilla.h
│               │   ├── Scintilla.iface
│               │   └── ScintillaWidget.h
│               ├── lexers/
│               │   ├── LexA68k.cpp
│               │   ├── LexAPDL.cpp
│               │   ├── LexASY.cpp
│               │   ├── LexAU3.cpp
│               │   ├── LexAVE.cpp
│               │   ├── LexAVS.cpp
│               │   ├── LexAbaqus.cpp
│               │   ├── LexAda.cpp
│               │   ├── LexAsm.cpp
│               │   ├── LexAsn1.cpp
│               │   ├── LexBaan.cpp
│               │   ├── LexBash.cpp
│               │   ├── LexBasic.cpp
│               │   ├── LexBullant.cpp
│               │   ├── LexCLW.cpp
│               │   ├── LexCOBOL.cpp
│               │   ├── LexCPP.cpp
│               │   ├── LexCSS.cpp
│               │   ├── LexCaml.cpp
│               │   ├── LexCmake.cpp
│               │   ├── LexCoffeeScript.cpp
│               │   ├── LexConf.cpp
│               │   ├── LexCrontab.cpp
│               │   ├── LexCsound.cpp
│               │   ├── LexD.cpp
│               │   ├── LexECL.cpp
│               │   ├── LexEScript.cpp
│               │   ├── LexEiffel.cpp
│               │   ├── LexErlang.cpp
│               │   ├── LexFlagship.cpp
│               │   ├── LexForth.cpp
│               │   ├── LexFortran.cpp
│               │   ├── LexGAP.cpp
│               │   ├── LexGui4Cli.cpp
│               │   ├── LexHTML.cpp
│               │   ├── LexHaskell.cpp
│               │   ├── LexInno.cpp
│               │   ├── LexKVIrc.cpp
│               │   ├── LexKix.cpp
│               │   ├── LexLaTeX.cpp
│               │   ├── LexLisp.cpp
│               │   ├── LexLout.cpp
│               │   ├── LexLua.cpp
│               │   ├── LexMMIXAL.cpp
│               │   ├── LexMPT.cpp
│               │   ├── LexMSSQL.cpp
│               │   ├── LexMagik.cpp
│               │   ├── LexMarkdown.cpp
│               │   ├── LexMatlab.cpp
│               │   ├── LexMetapost.cpp
│               │   ├── LexModula.cpp
│               │   ├── LexMySQL.cpp
│               │   ├── LexNimrod.cpp
│               │   ├── LexNsis.cpp
│               │   ├── LexOScript.cpp
│               │   ├── LexOpal.cpp
│               │   ├── LexOthers.cpp
│               │   ├── LexPB.cpp
│               │   ├── LexPLM.cpp
│               │   ├── LexPO.cpp
│               │   ├── LexPOV.cpp
│               │   ├── LexPS.cpp
│               │   ├── LexPascal.cpp
│               │   ├── LexPerl.cpp
│               │   ├── LexPowerPro.cpp
│               │   ├── LexPowerShell.cpp
│               │   ├── LexProgress.cpp
│               │   ├── LexPython.cpp
│               │   ├── LexR.cpp
│               │   ├── LexRebol.cpp
│               │   ├── LexRuby.cpp
│               │   ├── LexRust.cpp
│               │   ├── LexSML.cpp
│               │   ├── LexSQL.cpp
│               │   ├── LexSTTXT.cpp
│               │   ├── LexScriptol.cpp
│               │   ├── LexSmalltalk.cpp
│               │   ├── LexSorcus.cpp
│               │   ├── LexSpecman.cpp
│               │   ├── LexSpice.cpp
│               │   ├── LexTACL.cpp
│               │   ├── LexTADS3.cpp
│               │   ├── LexTAL.cpp
│               │   ├── LexTCL.cpp
│               │   ├── LexTCMD.cpp
│               │   ├── LexTeX.cpp
│               │   ├── LexTxt2tags.cpp
│               │   ├── LexVB.cpp
│               │   ├── LexVHDL.cpp
│               │   ├── LexVerilog.cpp
│               │   ├── LexVisualProlog.cpp
│               │   ├── LexYAML.cpp
│               │   └── License.txt
│               ├── lexlib/
│               │   ├── Accessor.cpp
│               │   ├── Accessor.h
│               │   ├── CharacterCategory.cpp
│               │   ├── CharacterCategory.h
│               │   ├── CharacterSet.cpp
│               │   ├── CharacterSet.h
│               │   ├── LexAccessor.h
│               │   ├── LexerBase.cpp
│               │   ├── LexerBase.h
│               │   ├── LexerModule.cpp
│               │   ├── LexerModule.h
│               │   ├── LexerNoExceptions.cpp
│               │   ├── LexerNoExceptions.h
│               │   ├── LexerSimple.cpp
│               │   ├── LexerSimple.h
│               │   ├── License.txt
│               │   ├── OptionSet.h
│               │   ├── PropSetSimple.cpp
│               │   ├── PropSetSimple.h
│               │   ├── SparseState.h
│               │   ├── StyleContext.cpp
│               │   ├── StyleContext.h
│               │   ├── SubStyles.h
│               │   ├── WordList.cpp
│               │   └── WordList.h
│               ├── qsci/
│               │   └── api/
│               │       └── python/
│               │           ├── Python-2.4.api
│               │           ├── Python-2.5.api
│               │           ├── Python-2.6.api
│               │           ├── Python-2.7.api
│               │           ├── Python-3.1.api
│               │           ├── Python-3.2.api
│               │           ├── Python-3.3.api
│               │           └── Python-3.4.api
│               └── src/
│                   ├── AutoComplete.cpp
│                   ├── AutoComplete.h
│                   ├── CallTip.cpp
│                   ├── CallTip.h
│                   ├── CaseConvert.cpp
│                   ├── CaseConvert.h
│                   ├── CaseFolder.cpp
│                   ├── CaseFolder.h
│                   ├── Catalogue.cpp
│                   ├── Catalogue.h
│                   ├── CellBuffer.cpp
│                   ├── CellBuffer.h
│                   ├── CharClassify.cpp
│                   ├── CharClassify.h
│                   ├── ContractionState.cpp
│                   ├── ContractionState.h
│                   ├── Decoration.cpp
│                   ├── Decoration.h
│                   ├── Document.cpp
│                   ├── Document.h
│                   ├── Editor.cpp
│                   ├── Editor.h
│                   ├── ExternalLexer.cpp
│                   ├── ExternalLexer.h
│                   ├── FontQuality.h
│                   ├── Indicator.cpp
│                   ├── Indicator.h
│                   ├── KeyMap.cpp
│                   ├── KeyMap.h
│                   ├── License.txt
│                   ├── LineMarker.cpp
│                   ├── LineMarker.h
│                   ├── Partitioning.h
│                   ├── PerLine.cpp
│                   ├── PerLine.h
│                   ├── PositionCache.cpp
│                   ├── PositionCache.h
│                   ├── RESearch.cpp
│                   ├── RESearch.h
│                   ├── RunStyles.cpp
│                   ├── RunStyles.h
│                   ├── SciTE.properties
│                   ├── ScintillaBase.cpp
│                   ├── ScintillaBase.h
│                   ├── Selection.cpp
│                   ├── Selection.h
│                   ├── SplitVector.h
│                   ├── Style.cpp
│                   ├── Style.h
│                   ├── UniConversion.cpp
│                   ├── UniConversion.h
│                   ├── UnicodeFromUTF8.h
│                   ├── ViewStyle.cpp
│                   ├── ViewStyle.h
│                   ├── XPM.cpp
│                   └── XPM.h
└── static_analysis/
    ├── clang-tidy_debug_Aug2020.txt
    ├── clang-tidy_debug_Aug2020_robo.txt
    ├── cppcheck_output_Apr2019.txt
    ├── scan-build_debug_Aug2020.txt
    ├── scan-build_debug_Aug2020_robo.txt
    ├── vs_run-code-analysis_all_rules_rls.txt
    ├── vs_run-code-analysis_nat-rec_dbg.txt
    ├── vs_run-code-analysis_nat-rec_rls-reduced.txt
    ├── vs_run-code-analysis_nat-rec_rls.txt
    └── vs_run-code-analysis_no-rule_rls.txt
Download .txt
Showing preview only (971K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (10306 symbols across 903 files)

FILE: bin/run-clang-tidy.py
  function find_compilation_database (line 63) | def find_compilation_database(path):
  function make_absolute (line 74) | def make_absolute(f, directory):
  function get_tidy_invocation (line 80) | def get_tidy_invocation(f, clang_tidy_binary, checks, tmpdir, build_path,
  function merge_replacement_files (line 109) | def merge_replacement_files(tmpdir, mergefile):
  function check_clang_apply_replacements_binary (line 134) | def check_clang_apply_replacements_binary(args):
  function apply_fixes (line 145) | def apply_fixes(args, tmpdir):
  function run_tidy (line 156) | def run_tidy(args, tmpdir, build_path, queue, lock, failed_files):
  function main (line 177) | def main():

FILE: bin/set-mongo-warning-level-3.py
  function force_warning_level_3 (line 5) | def force_warning_level_3(file):

FILE: src/robomongo/app/main.cpp
  function main (line 26) | int main(int argc, char *argv[], char** envp)

FILE: src/robomongo/app/main_mongo.cpp
  function main (line 11) | int main(int argc, char *argv[])

FILE: src/robomongo/app/main_test.cpp
  type mongo (line 10) | namespace mongo {
    function logProcessDetailsForLogRotate (line 12) | void logProcessDetailsForLogRotate() {}
    function exitCleanly (line 13) | void exitCleanly(ExitCode code) {}
  function testHostAndPort (line 16) | void testHostAndPort() {
  function precisionAssert (line 32) | void precisionAssert(const std::string &text, double d) {
  function testPrecision (line 43) | void testPrecision() {
  function main (line 71) | int main(int argc, char *argv[], char** envp)

FILE: src/robomongo/core/AppRegistry.cpp
  type Robomongo (line 7) | namespace Robomongo

FILE: src/robomongo/core/AppRegistry.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/core/Core.h
  function namespace (line 6) | namespace mongo
  function namespace (line 14) | namespace Robomongo

FILE: src/robomongo/core/Enums.cpp
  function type (line 11) | inline type findTypeInArray(const char *(&arr)[size], const char *text)
  type Robomongo (line 24) | namespace Robomongo
    function UUIDEncoding (line 31) | UUIDEncoding convertStringToUUIDEncoding(const char *text)
    function SupportedTimes (line 41) | SupportedTimes convertStringToTimes(const char *text)
    function ViewMode (line 51) | ViewMode convertStringToViewMode(const char *text)

FILE: src/robomongo/core/Enums.h
  function namespace (line 3) | namespace Robomongo

FILE: src/robomongo/core/Event.h
  function namespace (line 10) | namespace Robomongo

FILE: src/robomongo/core/EventBus.cpp
  type RemoveIfReciver (line 16) | struct RemoveIfReciver
    method RemoveIfReciver (line 18) | RemoveIfReciver(QObject *receiver) : _receiver(receiver) {}
  type FindIfReciver (line 31) | struct FindIfReciver
    method FindIfReciver (line 33) | FindIfReciver(QThread *thread) : _thread(thread) {}
  type Robomongo (line 44) | namespace Robomongo
    function EventBusDispatcher (line 132) | EventBusDispatcher *EventBus::dispatcher(QThread *thread)

FILE: src/robomongo/core/EventBus.h
  function namespace (line 8) | namespace Robomongo

FILE: src/robomongo/core/EventBusDispatcher.cpp
  type Robomongo (line 4) | namespace Robomongo

FILE: src/robomongo/core/EventBusDispatcher.h
  function namespace (line 4) | namespace Robomongo

FILE: src/robomongo/core/EventBusSubscriber.cpp
  type Robomongo (line 4) | namespace Robomongo

FILE: src/robomongo/core/EventBusSubscriber.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/core/EventError.cpp
  type Robomongo (line 5) | namespace Robomongo

FILE: src/robomongo/core/EventError.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/core/EventWrapper.cpp
  type Robomongo (line 2) | namespace Robomongo
    function Event (line 10) | Event *EventWrapper::event() const

FILE: src/robomongo/core/EventWrapper.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/core/HexUtils.cpp
  type Robomongo (line 7) | namespace Robomongo
    type HexUtils (line 9) | namespace HexUtils
      function isHexString (line 11) | bool isHexString(const std::string &str)
      function toStdHexLower (line 22) | std::string toStdHexLower(const char *raw, int len)
      function hexToUuid (line 48) | std::string hexToUuid(const std::string &hex, UUIDEncoding encoding)
      function hexToUuid (line 59) | std::string hexToUuid(const std::string &hex)
      function hexToCSharpUuid (line 65) | std::string hexToCSharpUuid(const std::string &hex)
      function hexToJavaUuid (line 76) | std::string hexToJavaUuid(const std::string &hex)
      function hexToPythonUuid (line 87) | std::string hexToPythonUuid(const std::string &hex)
      function uuidToHex (line 92) | std::string uuidToHex(const std::string &uuid, Robomongo::UUIDEncodi...
      function uuidToHex (line 103) | std::string uuidToHex(const std::string &uuid)
      function csharpUuidToHex (line 116) | std::string csharpUuidToHex(const std::string &uuid)
      function javaUuidToHex (line 134) | std::string javaUuidToHex(const std::string &uuid)
      function pythonUuidToHex (line 152) | std::string pythonUuidToHex(const std::string &uuid)
      function formatUuid (line 157) | std::string formatUuid(const mongo::BSONElement &element, Robomongo:...

FILE: src/robomongo/core/HexUtils.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/core/HexUtils_test.cpp
  function TEST (line 15) | TEST(hex_utils_tests, test_1)

FILE: src/robomongo/core/KeyboardManager.cpp
  type Robomongo (line 3) | namespace Robomongo

FILE: src/robomongo/core/KeyboardManager.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/core/domain/App.cpp
  type Robomongo (line 20) | namespace Robomongo
    type detail (line 22) | namespace detail
      function QString (line 24) | QString buildCollectionQuery(const std::string &collectionName, cons...

FILE: src/robomongo/core/domain/App.h
  function namespace (line 8) | namespace Robomongo

FILE: src/robomongo/core/domain/CursorPosition.cpp
  type Robomongo (line 3) | namespace Robomongo

FILE: src/robomongo/core/domain/CursorPosition.h
  function namespace (line 3) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoAggregateInfo.h
  function namespace (line 3) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoCollection.cpp
  type Robomongo (line 4) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoCollection.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoCollectionInfo.cpp
  type Robomongo (line 5) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoCollectionInfo.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoDatabase.cpp
  type Robomongo (line 11) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoDatabase.h
  function namespace (line 9) | namespace Robomongo
  function class (line 142) | class MongoDatabaseFunctionsLoadedEvent : public Event
  function MongoDatabase (line 155) | MongoDatabase *database() const { return _database; }
  function class (line 162) | class MongoDatabaseUsersLoadingEvent : public Event
  function class (line 168) | class MongoDatabaseFunctionsLoadingEvent : public Event
  function class (line 174) | class MongoDatabaseCollectionsLoadingEvent : public Event

FILE: src/robomongo/core/domain/MongoDocument.cpp
  type Robomongo (line 8) | namespace Robomongo
    function MongoDocumentPtr (line 29) | MongoDocumentPtr MongoDocument::fromBsonObj(const mongo::BSONObj &bson...

FILE: src/robomongo/core/domain/MongoDocument.h
  function namespace (line 8) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoFunction.cpp
  type Robomongo (line 5) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoFunction.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoNamespace.cpp
  type Robomongo (line 5) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoNamespace.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoQueryInfo.cpp
  type Robomongo (line 5) | namespace Robomongo
    type detail (line 7) | namespace detail
      function prepareServerAddress (line 9) | std::string prepareServerAddress(const std::string &address)

FILE: src/robomongo/core/domain/MongoQueryInfo.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoServer.cpp
  type Robomongo (line 22) | namespace Robomongo {
    function ConnectionSettings (line 42) | ConnectionSettings *MongoServer::connectionRecord() const {
    function QStringList (line 85) | QStringList MongoServer::getDatabasesNames() const
    function MongoDatabase (line 104) | MongoDatabase *MongoServer::findDatabaseByName(const std::string &dbNa...

FILE: src/robomongo/core/domain/MongoServer.h
  function namespace (line 7) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoShell.cpp
  type Robomongo (line 13) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoShell.h
  function namespace (line 7) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoShellResult.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoUser.h
  function namespace (line 7) | namespace Robomongo

FILE: src/robomongo/core/domain/MongoUtils.cpp
  type Robomongo (line 6) | namespace Robomongo
    type MongoUtils (line 8) | namespace MongoUtils
      function QString (line 10) | QString buildNiceSizeString(double sizeBytes)
      function buildPasswordHash (line 21) | std::string buildPasswordHash(const std::string &username, const std...

FILE: src/robomongo/core/domain/MongoUtils.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/core/domain/Notifier.cpp
  type Robomongo (line 28) | namespace Robomongo
    type detail (line 30) | namespace detail
      function isSimpleType (line 32) | bool isSimpleType(Robomongo::BsonTreeItem const *item)
      function isObjectIdType (line 38) | bool isObjectIdType(Robomongo::BsonTreeItem *item)
      function isMultiSelection (line 43) | bool isMultiSelection(const QModelIndexList &indexes)
      function isDocumentType (line 48) | bool isDocumentType(BsonTreeItem const *item)
      function isArrayChild (line 53) | bool isArrayChild(BsonTreeItem const *item)
      function isDocumentRoot (line 58) | bool isDocumentRoot(BsonTreeItem const *item)
      function QModelIndexList (line 69) | QModelIndexList uniqueRows(QModelIndexList indexes, bool returnSuper...
    function MainWindow (line 313) | MainWindow* Notifier::mainWindow() const

FILE: src/robomongo/core/domain/Notifier.h
  function QT_END_NAMESPACE (line 10) | QT_END_NAMESPACE

FILE: src/robomongo/core/domain/ScriptInfo.cpp
  function loadFromFileText (line 12) | bool loadFromFileText(const QString &filePath, QString &text)
  function saveToFileText (line 33) | bool saveToFileText(QString filePath, const QString &text)
  type Robomongo (line 63) | namespace Robomongo

FILE: src/robomongo/core/domain/ScriptInfo.h
  function namespace (line 7) | namespace Robomongo

FILE: src/robomongo/core/engine/ScriptEngine.cpp
  function split (line 39) | std::vector<std::string> split(const std::string &s, char seperator)
  type mongo (line 53) | namespace mongo {
    function logProcessDetailsForLogRotate (line 55) | void logProcessDetailsForLogRotate() {}
  type Robomongo (line 58) | namespace Robomongo
    function MongoShellExecResult (line 170) | MongoShellExecResult ScriptEngine::exec(const std::string &originalScr...
    function QStringList (line 301) | QStringList ScriptEngine::complete(const std::string &prefix, const Au...
    function MongoShellResult (line 334) | MongoShellResult ScriptEngine::prepareResult(const std::string &type, ...
    function MongoShellExecResult (line 412) | MongoShellExecResult ScriptEngine::prepareExecResult(const std::vector...

FILE: src/robomongo/core/engine/ScriptEngine.h
  function namespace (line 11) | namespace Robomongo

FILE: src/robomongo/core/events/MongoEvents.cpp
  type Robomongo (line 4) | namespace Robomongo

FILE: src/robomongo/core/events/MongoEvents.h
  function namespace (line 19) | namespace Robomongo
  function Event (line 256) | struct AddEditIndexResponse : public Event
  function class (line 273) | class DropCollectionIndexRequest : public Event
  function class (line 289) | class DropCollectionIndexResponse: public Event
  function class (line 314) | class LoadUsersRequest : public Event
  function class (line 329) | class LoadUsersResponse : public Event
  function class (line 356) | class LoadFunctionsRequest : public Event
  function class (line 371) | class LoadFunctionsResponse : public Event
  function class (line 397) | class InsertDocumentRequest : public Event
  function class (line 418) | class InsertDocumentResponse : public Event
  function RemoveDocumentCount (line 434) | enum class RemoveDocumentCount { ONE, MULTI, ALL };
  function Event (line 462) | struct RemoveDocumentResponse : public Event
  function class (line 480) | class CreateDatabaseRequest : public Event
  function Event (line 495) | struct CreateDatabaseResponse : public Event
  function Event (line 513) | struct DropDatabaseRequest : public Event
  function Event (line 523) | struct DropDatabaseResponse : public Event
  function class (line 541) | class CreateCollectionRequest : public Event
  function Event (line 569) | struct CreateCollectionResponse : public Event
  function class (line 588) | class DropCollectionRequest : public Event
  function Event (line 603) | struct DropCollectionResponse : public Event
  function class (line 621) | class RenameCollectionRequest : public Event
  function Event (line 639) | struct RenameCollectionResponse : public Event
  function class (line 658) | class DuplicateCollectionRequest : public Event
  function Event (line 676) | struct DuplicateCollectionResponse : public Event
  function class (line 696) | class CopyCollectionToDiffServerRequest : public Event
  function class (line 717) | class CopyCollectionToDiffServerResponse : public Event
  function class (line 733) | class CreateUserRequest : public Event
  function Event (line 751) | struct CreateUserResponse : public Event
  function class (line 769) | class DropUserRequest : public Event
  function Event (line 785) | struct DropUserResponse : public Event
  function class (line 803) | class CreateFunctionRequest : public Event
  function Event (line 832) | struct CreateFunctionResponse : public Event
  function Event (line 873) | struct DropFunctionResponse : public Event
  function class (line 890) | class ExecuteQueryRequest : public Event
  function class (line 908) | class ExecuteQueryResponse : public Event
  function class (line 926) | class AutocompleteRequest : public Event
  function class (line 939) | class AutocompleteResponse : public Event
  function class (line 960) | class ExecuteScriptRequest : public Event
  function class (line 981) | class ExecuteScriptResponse : public Event
  function class (line 999) | class ConnectingEvent : public Event
  function class (line 1007) | class OpeningShellEvent : public Event
  function class (line 1018) | class ConnectionFailedEvent : public Event
  function class (line 1102) | class ScriptExecutedEvent : public Event
  function class (line 1124) | class ScriptExecutingEvent : public Event
  function class (line 1133) | class OperationFailedEvent : public Event
  function class (line 1147) | class QueryWidgetUpdatedEvent : public Event
  function class (line 1166) | class EstablishSshConnectionRequest : public Event
  function class (line 1183) | class EstablishSshConnectionResponse : public Event
  function class (line 1213) | class ListenSshConnectionRequest : public Event
  function class (line 1226) | class ListenSshConnectionResponse : public Event
  function class (line 1247) | class LogEvent : public Event

FILE: src/robomongo/core/events/MongoEventsInfo.cpp
  type Robomongo (line 3) | namespace Robomongo

FILE: src/robomongo/core/events/MongoEventsInfo.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/core/mongodb/MongoClient.cpp
  function makeIndexInfoFromBsonObj (line 11) | Robomongo::IndexInfo makeIndexInfoFromBsonObj(
  type Robomongo (line 37) | namespace Robomongo
    function MongoCollectionInfo (line 580) | MongoCollectionInfo MongoClient::runCollStatsCommand(const std::string...

FILE: src/robomongo/core/mongodb/MongoClient.h
  function namespace (line 12) | namespace Robomongo

FILE: src/robomongo/core/mongodb/MongoWorker.cpp
  type Robomongo (line 31) | namespace Robomongo
    function MongoClient (line 980) | MongoClient *MongoWorker::getClient()
    function ReplicaSet (line 1034) | ReplicaSet MongoWorker::getReplicaSetInfo() const

FILE: src/robomongo/core/mongodb/MongoWorker.h
  function QT_END_NAMESPACE (line 14) | QT_END_NAMESPACE

FILE: src/robomongo/core/mongodb/ReplicaSet.cpp
  type Robomongo (line 4) | namespace Robomongo

FILE: src/robomongo/core/mongodb/ReplicaSet.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/core/mongodb/SshTunnelWorker.cpp
  type Robomongo (line 16) | namespace Robomongo

FILE: src/robomongo/core/mongodb/SshTunnelWorker.h
  type rbm_ssh_session (line 13) | struct rbm_ssh_session
  function namespace (line 15) | namespace Robomongo

FILE: src/robomongo/core/settings/ConnectionSettings.cpp
  type Robomongo (line 24) | namespace Robomongo
    function ConnectionSettings (line 126) | ConnectionSettings *ConnectionSettings::clone() const
    function QVariant (line 164) | QVariant ConnectionSettings::toVariant() const
    function CredentialSettings (line 192) | CredentialSettings *ConnectionSettings::findCredential(const std::stri...
    function CredentialSettings (line 229) | CredentialSettings *ConnectionSettings::primaryCredential() const

FILE: src/robomongo/core/settings/ConnectionSettings.h
  function namespace (line 11) | namespace Robomongo

FILE: src/robomongo/core/settings/CredentialSettings.cpp
  type Robomongo (line 6) | namespace Robomongo
    function CredentialSettings (line 37) | CredentialSettings *CredentialSettings::clone() const
    function QVariant (line 43) | QVariant CredentialSettings::toVariant() const

FILE: src/robomongo/core/settings/CredentialSettings.h
  function namespace (line 7) | namespace Robomongo

FILE: src/robomongo/core/settings/ReplicaSetSettings.cpp
  type Robomongo (line 5) | namespace Robomongo
    function ReplicaSetSettings (line 21) | ReplicaSetSettings *ReplicaSetSettings::clone() const
    function QVariant (line 27) | QVariant ReplicaSetSettings::toVariant() const

FILE: src/robomongo/core/settings/ReplicaSetSettings.h
  function namespace (line 10) | namespace Robomongo

FILE: src/robomongo/core/settings/SettingsManager.cpp
  type Robomongo (line 26) | namespace Robomongo
    function QVariant (line 187) | QVariant SettingsManager::cacheData(QString const& key) const
    function QVariantMap (line 326) | QVariantMap SettingsManager::convertToMap() const
    function QString (line 399) | QString SettingsManager::getOrCreateAnonymousID(QVariantMap const& map...
    function ConnectionSettings (line 489) | ConnectionSettings* SettingsManager::getConnectionSettingsByUuid(QStri...
    function ConnectionSettings (line 500) | ConnectionSettings* SettingsManager::getConnectionSettingsByUuid(std::...
    function QString (line 697) | QString extractAnonymousIDFromZip(QString const& zipFile, QString cons...
    function QString (line 718) | QString extractAnonymousID(QString const& configFilePath)

FILE: src/robomongo/core/settings/SettingsManager.h
  function namespace (line 13) | namespace Robomongo

FILE: src/robomongo/core/settings/SshSettings.cpp
  type Robomongo (line 6) | namespace Robomongo
    function SshSettings (line 17) | SshSettings *SshSettings::clone() const {
    function QVariant (line 22) | QVariant SshSettings::toVariant() const {

FILE: src/robomongo/core/settings/SshSettings.h
  function namespace (line 7) | namespace Robomongo

FILE: src/robomongo/core/settings/SslSettings.cpp
  type Robomongo (line 6) | namespace Robomongo
    function SslSettings (line 14) | SslSettings *SslSettings::clone() const
    function QVariant (line 20) | QVariant SslSettings::toVariant() const

FILE: src/robomongo/core/settings/SslSettings.h
  function namespace (line 7) | namespace Robomongo

FILE: src/robomongo/core/utils/BsonUtils.cpp
  type Robomongo (line 16) | namespace Robomongo
    type BsonUtils (line 18) | namespace BsonUtils
      type detail (line 20) | namespace detail
      function jsonString (line 65) | std::string jsonString(const BSONObj &obj, JsonStringFormat format, ...
      function jsonString (line 117) | std::string jsonString(const BSONElement &elem, JsonStringFormat for...
      function isArray (line 361) | bool isArray(const mongo::BSONElement &elem)
      function isArray (line 366) | bool isArray(mongo::BSONType type)
      function isDocument (line 371) | bool isDocument(const mongo::BSONElement &elem)
      function isDocument (line 376) | bool isDocument(mongo::BSONType type)
      function isSimpleType (line 387) | bool isSimpleType(const mongo::BSONType type)
      function isUuidType (line 404) | bool isUuidType(const mongo::BSONType type, mongo::BinDataType binDa...
      function isSimpleType (line 412) | bool isSimpleType(const mongo::BSONElement &elem)
      function isUuidType (line 417) | bool isUuidType(const mongo::BSONElement &elem)
      function buildJsonString (line 564) | void buildJsonString(const mongo::BSONObj &obj, std::string &con, UU...
      function buildJsonString (line 581) | void buildJsonString(const mongo::BSONElement &elem, std::string &co...
      function indexOf (line 741) | mongo::BSONElement indexOf(const mongo::BSONObj &doc, int index)
      function elementsCount (line 754) | int elementsCount(const mongo::BSONObj &doc)
      function reformatDoubleString (line 765) | std::string reformatDoubleString(QString str, double elemDouble)

FILE: src/robomongo/core/utils/BsonUtils.h
  function namespace (line 10) | namespace Robomongo

FILE: src/robomongo/core/utils/Logger.cpp
  type Robomongo (line 12) | namespace Robomongo
    function sendLog (line 53) | void sendLog(
    function debugLog (line 63) | void debugLog(std::string_view msg) {

FILE: src/robomongo/core/utils/Logger.h
  function namespace (line 12) | namespace Robomongo

FILE: src/robomongo/core/utils/QtUtils.cpp
  type Robomongo (line 6) | namespace Robomongo
    type QtUtils (line 8) | namespace QtUtils
      function QString (line 11) | QString toQString<std::string>(const std::string &value)
      function QString (line 18) | QString toQString<std::wstring>(const std::wstring &value)
      function toStdString (line 23) | std::string toStdString(const QString &value)
      function toStdStringSafe (line 29) | std::string toStdStringSafe(const QString &value)
      function cleanUpThread (line 39) | void cleanUpThread(QThread *const thread)
      function clearChildItems (line 47) | void clearChildItems(QTreeWidgetItem *const root)

FILE: src/robomongo/core/utils/QtUtils.h
  function namespace (line 17) | namespace Robomongo

FILE: src/robomongo/core/utils/SingletonPattern.hpp
  type Patterns (line 2) | namespace Patterns
    class Singleton (line 5) | class Singleton
      method Singleton (line 16) | Singleton()
    function T (line 23) | T*  Singleton<T>::instance()
    class LazySingleton (line 36) | class LazySingleton
      method LazySingleton (line 42) | LazySingleton()
    function T (line 51) | T &LazySingleton<T>::instance()

FILE: src/robomongo/core/utils/StdUtils.cpp
  type Robomongo (line 3) | namespace Robomongo
    type stdutils (line 5) | namespace stdutils

FILE: src/robomongo/core/utils/StdUtils.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/gui/AppStyle.cpp
  type Robomongo (line 9) | namespace Robomongo
    type AppStyleUtils (line 13) | namespace AppStyleUtils
      function applyStyle (line 15) | void applyStyle(const QString &styleName)
      function QStringList (line 25) | QStringList getSupportedStyles()
      function initStyle (line 31) | void initStyle()
    function QRect (line 54) | QRect AppStyle::subElementRect(SubElement element, const QStyleOption ...

FILE: src/robomongo/gui/AppStyle.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/gui/GuiRegistry.cpp
  type Robomongo (line 9) | namespace Robomongo
    function QIcon (line 35) | const QIcon &GuiRegistry::serverIcon() const
    function QIcon (line 41) | const QIcon &GuiRegistry::serverImportedIcon() const
    function QIcon (line 47) | const QIcon &GuiRegistry::serverPrimaryIcon() const
    function QIcon (line 53) | const QIcon &GuiRegistry::serverSecondaryIcon() const
    function QIcon (line 59) | const QIcon &GuiRegistry::replicaSetIcon() const
    function QIcon (line 65) | const QIcon &GuiRegistry::replicaSetOfflineIcon() const
    function QIcon (line 71) | const QIcon &GuiRegistry::openIcon() const
    function QIcon (line 78) | const QIcon &GuiRegistry::saveIcon() const
    function QIcon (line 85) | const QIcon &GuiRegistry::databaseIcon() const
    function QIcon (line 91) | const QIcon &GuiRegistry::collectionIcon() const
    function QIcon (line 97) | const QIcon &GuiRegistry::indexIcon() const
    function QIcon (line 103) | const QIcon &GuiRegistry::userIcon() const
    function QIcon (line 109) | const QIcon &GuiRegistry::functionIcon() const
    function QIcon (line 115) | const QIcon &GuiRegistry::maximizeIcon() const
    function QIcon (line 121) | const QIcon &GuiRegistry::minimizeIcon() const
    function QIcon (line 127) | const QIcon &GuiRegistry::undockIcon() const
    function QIcon (line 133) | const QIcon &GuiRegistry::dockIcon() const
    function QIcon (line 139) | const QIcon &GuiRegistry::textIcon() const
    function QIcon (line 145) | const QIcon &GuiRegistry::textHighlightedIcon() const
    function QIcon (line 151) | const QIcon &GuiRegistry::treeIcon() const
    function QIcon (line 157) | const QIcon &GuiRegistry::treeHighlightedIcon() const
    function QIcon (line 163) | const QIcon &GuiRegistry::tableIcon() const
    function QIcon (line 169) | const QIcon &GuiRegistry::tableHighlightedIcon() const
    function QIcon (line 175) | const QIcon &GuiRegistry::customIcon() const
    function QIcon (line 181) | const QIcon &GuiRegistry::customHighlightedIcon() const
    function QIcon (line 187) | const QIcon &GuiRegistry::rotateIcon() const
    function QIcon (line 193) | const QIcon &GuiRegistry::visualIcon() const
    function QIcon (line 199) | const QIcon &GuiRegistry::circleIcon() const
    function QIcon (line 205) | const QIcon &GuiRegistry::bsonArrayIcon() const
    function QIcon (line 212) | const QIcon &GuiRegistry::bsonObjectIcon() const
    function QIcon (line 218) | const QIcon &GuiRegistry::bsonStringIcon() const
    function QIcon (line 224) | const QIcon &GuiRegistry::folderIcon() const
    function QIcon (line 230) | const QIcon &GuiRegistry::bsonIntegerIcon() const
    function QIcon (line 236) | const QIcon &GuiRegistry::bsonDoubleIcon() const
    function QIcon (line 242) | const QIcon &GuiRegistry::bsonNumberDecimalIcon() const
    function QIcon (line 248) | const QIcon &GuiRegistry::bsonDateTimeIcon() const
    function QIcon (line 254) | const QIcon &GuiRegistry::bsonBinaryIcon() const
    function QIcon (line 260) | const QIcon &GuiRegistry::bsonNullIcon() const
    function QIcon (line 266) | const QIcon &GuiRegistry::bsonBooleanIcon() const
    function QIcon (line 272) | const QIcon &GuiRegistry::noMarkIcon() const
    function QIcon (line 278) | const QIcon &GuiRegistry::yesMarkIcon() const
    function QIcon (line 284) | const QIcon &GuiRegistry::skipMarkIcon() const
    function QIcon (line 290) | const QIcon &GuiRegistry::questionMarkIcon() const
    function QIcon (line 296) | const QIcon &GuiRegistry::timeIcon() const
    function QIcon (line 302) | const QIcon &GuiRegistry::keyIcon() const
    function QIcon (line 308) | const QIcon &GuiRegistry::showIcon() const
    function QIcon (line 314) | const QIcon &GuiRegistry::hideIcon() const
    function QIcon (line 320) | const QIcon &GuiRegistry::plusIcon() const
    function QIcon (line 326) | const QIcon &GuiRegistry::minusIcon() const
    function QBrush (line 332) | const QBrush &GuiRegistry::typeBrush() const
    function QIcon (line 338) | const QIcon &GuiRegistry::leftIcon() const
    function QIcon (line 344) | const QIcon &GuiRegistry::rightIcon() const
    function QIcon (line 351) | const QIcon &GuiRegistry::mongodbIcon() const
    function QIcon (line 357) | const QIcon &GuiRegistry::mongodbIconForMAC() const
    function QIcon (line 363) | const QIcon &GuiRegistry::connectIcon() const
    function QIcon (line 369) | const QIcon &GuiRegistry::executeIcon() const
    function QIcon (line 375) | const QIcon &GuiRegistry::stopIcon() const
    function QIcon (line 381) | const QIcon &GuiRegistry::exportIcon() const
    function QIcon (line 387) | const QIcon &GuiRegistry::importIcon() const
    function QIcon (line 393) | const QIcon &GuiRegistry::deleteIcon() const
    function QIcon (line 399) | const QIcon &GuiRegistry::deleteIconRed() const
    function QIcon (line 405) | const QIcon &GuiRegistry::deleteIconMouseHovered() const
    function QIcon (line 411) | const QIcon &GuiRegistry::mainWindowIcon() const
    function QIcon (line 417) | const QIcon& GuiRegistry::welcomeTabIcon() const
    function QFont (line 423) | const QFont &GuiRegistry::font() const

FILE: src/robomongo/gui/GuiRegistry.h
  function namespace (line 7) | namespace Robomongo

FILE: src/robomongo/gui/MainWindow.cpp
  function setToolBarIconSize (line 55) | void setToolBarIconSize(QToolBar *toolBar)
  function saveViewMode (line 65) | void saveViewMode(Robomongo::ViewMode mode)
  function saveAutoExpand (line 71) | void saveAutoExpand(bool isExpand)
  function saveAutoExec (line 77) | void saveAutoExec(bool isAutoExec)
  function saveMinimizeToTraySettings (line 83) | void saveMinimizeToTraySettings(bool isMinimizingToTray)
  function saveLineNumbers (line 89) | void saveLineNumbers(bool showLineNumbers)
  type Robomongo (line 100) | namespace Robomongo
    class ConnectionMenu (line 103) | class ConnectionMenu : public QMenu
      method ConnectionMenu (line 106) | ConnectionMenu(QWidget *parent) : QMenu(parent) {}
      method keyPressEvent (line 108) | virtual void keyPressEvent(QKeyEvent *event) override
    function WelcomeTab (line 832) | WelcomeTab* MainWindow::getWelcomeTab()

FILE: src/robomongo/gui/MainWindow.h
  function QT_END_NAMESPACE (line 15) | QT_END_NAMESPACE

FILE: src/robomongo/gui/dialogs/AboutDialog.cpp
  type Robomongo (line 56) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/AboutDialog.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/ChangeShellTimeoutDialog.cpp
  type Robomongo (line 19) | namespace Robomongo
    function changeShellTimeoutDialog (line 21) | void changeShellTimeoutDialog()

FILE: src/robomongo/gui/dialogs/ChangeShellTimeoutDialog.h
  function namespace (line 3) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/ConnectionAdvancedTab.cpp
  type Robomongo (line 26) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/ConnectionAdvancedTab.h
  function QT_END_NAMESPACE (line 9) | QT_END_NAMESPACE

FILE: src/robomongo/gui/dialogs/ConnectionAuthTab.cpp
  type Robomongo (line 15) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/ConnectionAuthTab.h
  function QT_END_NAMESPACE (line 13) | QT_END_NAMESPACE

FILE: src/robomongo/gui/dialogs/ConnectionBasicTab.cpp
  type Robomongo (line 27) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/ConnectionBasicTab.h
  function QT_END_NAMESPACE (line 13) | QT_END_NAMESPACE

FILE: src/robomongo/gui/dialogs/ConnectionDiagnosticDialog.cpp
  type Robomongo (line 23) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/ConnectionDiagnosticDialog.h
  function namespace (line 9) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/ConnectionDialog.cpp
  type Robomongo (line 21) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/ConnectionDialog.h
  function namespace (line 8) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/ConnectionsDialog.cpp
  type Robomongo (line 31) | namespace Robomongo
    class ConnectionListWidgetItem (line 39) | class ConnectionListWidgetItem : public QTreeWidgetItem
      method ConnectionListWidgetItem (line 45) | ConnectionListWidgetItem(ConnectionSettings *connection) { setConnec...
      method ConnectionSettings (line 50) | ConnectionSettings *connection() { return _connection; }
      method setConnection (line 55) | void setConnection(ConnectionSettings *connection)

FILE: src/robomongo/gui/dialogs/ConnectionsDialog.h
  function namespace (line 8) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/CopyCollectionDialog.cpp
  type Robomongo (line 19) | namespace Robomongo
    function MongoDatabase (line 116) | MongoDatabase *CopyCollection::selectedDatabase()

FILE: src/robomongo/gui/dialogs/CopyCollectionDialog.h
  function QT_END_NAMESPACE (line 8) | QT_END_NAMESPACE

FILE: src/robomongo/gui/dialogs/CreateCollectionDialog.cpp
  type Robomongo (line 27) | namespace Robomongo
    function QString (line 130) | QString CreateCollectionDialog::getCollectionName() const
    function Indicator (line 267) | Indicator *CreateCollectionDialog::createDatabaseIndicator(const QStri...
    function Indicator (line 272) | Indicator *CreateCollectionDialog::createCollectionIndicator(const QSt...
    function QWidget (line 277) | QWidget* CreateCollectionDialog::createOptionsTab()
    function QWidget (line 318) | QWidget* CreateCollectionDialog::createStorageEngineTab()
    function QWidget (line 340) | QWidget* CreateCollectionDialog::createValidatorTab()
    function QWidget (line 384) | QWidget* CreateCollectionDialog::createIndexOptionDefaultsTab()
    function QString (line 577) | QString CreateCollectionDialog::jsonText(JSONFrame* frame) const

FILE: src/robomongo/gui/dialogs/CreateCollectionDialog.h
  function namespace (line 16) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/CreateDatabaseDialog.cpp
  type Robomongo (line 14) | namespace Robomongo
    function QString (line 71) | QString CreateDatabaseDialog::databaseName() const
    function Indicator (line 100) | Indicator *CreateDatabaseDialog::createDatabaseIndicator(const QString...
    function Indicator (line 105) | Indicator *CreateDatabaseDialog::createCollectionIndicator(const QStri...

FILE: src/robomongo/gui/dialogs/CreateDatabaseDialog.h
  function QT_END_NAMESPACE (line 8) | QT_END_NAMESPACE

FILE: src/robomongo/gui/dialogs/CreateUserDialog.cpp
  type Robomongo (line 18) | namespace Robomongo
    function containsWord (line 34) | bool containsWord(const std::string& sentence, const std::string& word)

FILE: src/robomongo/gui/dialogs/CreateUserDialog.h
  function namespace (line 14) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/DocumentTextEditor.cpp
  type Robomongo (line 24) | namespace Robomongo
    function QString (line 103) | QString DocumentTextEditor::jsonText() const

FILE: src/robomongo/gui/dialogs/DocumentTextEditor.h
  function namespace (line 7) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/EulaDialog.cpp
  type Robomongo (line 28) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/EulaDialog.h
  function QT_END_NAMESPACE (line 13) | QT_END_NAMESPACE

FILE: src/robomongo/gui/dialogs/ExportDialog.cpp
  type Robomongo (line 42) | namespace Robomongo
    type MongoExportArgs (line 56) | struct MongoExportArgs
      method QString (line 58) | static QString db(const QString& dbName) { return ("--db" + dbName); }
      method QString (line 59) | static QString collection(const QString& collection) { return ("--co...
      method QString (line 62) | static QString out(const QString& absFilePath) { return ("--out " + ...
    function Indicator (line 459) | Indicator *ExportDialog::createDatabaseIndicator(const QString &database)
    function Indicator (line 464) | Indicator *ExportDialog::createCollectionIndicator(const QString &coll...

FILE: src/robomongo/gui/dialogs/ExportDialog.h
  function QT_END_NAMESPACE (line 17) | QT_END_NAMESPACE

FILE: src/robomongo/gui/dialogs/FunctionTextEditor.cpp
  type Robomongo (line 20) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/FunctionTextEditor.h
  function namespace (line 11) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/PreferencesDialog.cpp
  type Robomongo (line 18) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/PreferencesDialog.h
  function QT_END_NAMESPACE (line 7) | QT_END_NAMESPACE

FILE: src/robomongo/gui/dialogs/SSHTunnelTab.cpp
  function isFileExists (line 26) | bool isFileExists(const QString &path) {
  type Robomongo (line 32) | namespace Robomongo

FILE: src/robomongo/gui/dialogs/SSHTunnelTab.h
  function QT_END_NAMESPACE (line 14) | QT_END_NAMESPACE

FILE: src/robomongo/gui/dialogs/SSLTab.cpp
  function fileExists (line 29) | bool fileExists(const QString &path)
  type Robomongo (line 46) | namespace Robomongo
    function QString (line 407) | QString SSLTab::openFileBrowseDialog(const QString& initialPath)

FILE: src/robomongo/gui/dialogs/SSLTab.h
  function QT_END_NAMESPACE (line 14) | QT_END_NAMESPACE

FILE: src/robomongo/gui/editors/FindFrame.cpp
  type Robomongo (line 18) | namespace Robomongo

FILE: src/robomongo/gui/editors/FindFrame.h
  function namespace (line 14) | namespace Robomongo

FILE: src/robomongo/gui/editors/JSLexer.cpp
  type Robomongo (line 5) | namespace Robomongo
    function QColor (line 11) | QColor JSLexer::defaultPaper(int style) const
    function QColor (line 17) | QColor JSLexer::defaultColor(int style) const

FILE: src/robomongo/gui/editors/JSLexer.h
  function namespace (line 7) | namespace Robomongo

FILE: src/robomongo/gui/editors/PlainJavaScriptEditor.cpp
  function getNumberOfDigits (line 17) | int getNumberOfDigits(int x)
  type Robomongo (line 48) | namespace Robomongo

FILE: src/robomongo/gui/editors/PlainJavaScriptEditor.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/gui/resources/scripts/esprima.js
  function assert (line 249) | function assert(condition, message) {
  function isDecimalDigit (line 256) | function isDecimalDigit(ch) {
  function isHexDigit (line 260) | function isHexDigit(ch) {
  function isOctalDigit (line 264) | function isOctalDigit(ch) {
  function octalToDecimal (line 268) | function octalToDecimal(ch) {
  function isWhiteSpace (line 293) | function isWhiteSpace(ch) {
  function isLineTerminator (line 300) | function isLineTerminator(ch) {
  function fromCodePoint (line 306) | function fromCodePoint(cp) {
  function isIdentifierStart (line 312) | function isIdentifierStart(ch) {
  function isIdentifierPart (line 320) | function isIdentifierPart(ch) {
  function isFutureReservedWord (line 331) | function isFutureReservedWord(id) {
  function isStrictModeReservedWord (line 343) | function isStrictModeReservedWord(id) {
  function isRestrictedWord (line 360) | function isRestrictedWord(id) {
  function isKeyword (line 366) | function isKeyword(id) {
  function addComment (line 396) | function addComment(type, value, start, end, loc) {
  function skipSingleLineComment (line 427) | function skipSingleLineComment(offset) {
  function skipMultiLineComment (line 470) | function skipMultiLineComment() {
  function skipComment (line 526) | function skipComment() {
  function scanHexEscape (line 584) | function scanHexEscape(prefix) {
  function scanUnicodeCodePointEscape (line 599) | function scanUnicodeCodePointEscape() {
  function codePointAt (line 625) | function codePointAt(i) {
  function getComplexIdentifier (line 640) | function getComplexIdentifier() {
  function getIdentifier (line 699) | function getIdentifier() {
  function scanIdentifier (line 724) | function scanIdentifier() {
  function scanPunctuator (line 759) | function scanPunctuator() {
  function scanHexLiteral (line 859) | function scanHexLiteral(start) {
  function scanBinaryLiteral (line 887) | function scanBinaryLiteral(start) {
  function scanOctalLiteral (line 923) | function scanOctalLiteral(prefix, start) {
  function isImplicitOctalLiteral (line 962) | function isImplicitOctalLiteral() {
  function scanNumericLiteral (line 980) | function scanNumericLiteral() {
  function scanStringLiteral (line 1063) | function scanStringLiteral() {
  function scanTemplate (line 1163) | function scanTemplate() {
  function testRegExp (line 1287) | function testRegExp(pattern, flags) {
  function scanRegExpBody (line 1340) | function scanRegExpBody() {
  function scanRegExpFlags (line 1387) | function scanRegExpFlags() {
  function scanRegExp (line 1432) | function scanRegExp() {
  function collectRegex (line 1471) | function collectRegex() {
  function isIdentifierName (line 1515) | function isIdentifierName(token) {
  function advanceSlash (line 1525) | function advanceSlash() {
  function advance (line 1564) | function advance() {
  function collectToken (line 1632) | function collectToken() {
  function lex (line 1682) | function lex() {
  function peek (line 1703) | function peek() {
  function Position (line 1720) | function Position() {
  function SourceLocation (line 1725) | function SourceLocation() {
  function WrappingSourceLocation (line 1730) | function WrappingSourceLocation(startToken) {
  function Node (line 1738) | function Node() {
  function WrappingNode (line 1747) | function WrappingNode(startToken) {
  function recordError (line 2398) | function recordError(error) {
  function constructError (line 2413) | function constructError(msg, column) {
  function createError (line 2428) | function createError(line, pos, description) {
  function throwError (line 2442) | function throwError(messageFormat) {
  function tolerateError (line 2456) | function tolerateError(messageFormat) {
  function unexpectedTokenError (line 2478) | function unexpectedTokenError(token, message) {
  function throwUnexpectedToken (line 2511) | function throwUnexpectedToken(token, message) {
  function tolerateUnexpectedToken (line 2515) | function tolerateUnexpectedToken(token, message) {
  function expect (line 2527) | function expect(value) {
  function expectCommaSeparator (line 2540) | function expectCommaSeparator() {
  function expectKeyword (line 2561) | function expectKeyword(keyword) {
  function match (line 2570) | function match(value) {
  function matchKeyword (line 2576) | function matchKeyword(keyword) {
  function matchContextualKeyword (line 2583) | function matchContextualKeyword(keyword) {
  function matchAssign (line 2589) | function matchAssign() {
  function consumeSemicolon (line 2610) | function consumeSemicolon() {
  function isolateCoverGrammar (line 2662) | function isolateCoverGrammar(parser) {
  function inheritCoverGrammar (line 2680) | function inheritCoverGrammar(parser) {
  function parseArrayPattern (line 2697) | function parseArrayPattern(params, kind) {
  function parsePropertyPattern (line 2728) | function parsePropertyPattern(params, kind) {
  function parseObjectPattern (line 2753) | function parseObjectPattern(params, kind) {
  function parsePattern (line 2770) | function parsePattern(params, kind) {
  function parsePatternWithDefault (line 2785) | function parsePatternWithDefault(params, kind) {
  function parseArrayInitializer (line 2801) | function parseArrayInitializer() {
  function parsePropertyFunction (line 2836) | function parsePropertyFunction(node, paramInfo, isGenerator) {
  function parsePropertyMethodFunction (line 2855) | function parsePropertyMethodFunction() {
  function parseObjectPropertyKey (line 2870) | function parseObjectPropertyKey() {
  function lookaheadPropertyName (line 2901) | function lookaheadPropertyName() {
  function tryParseMethodDefinition (line 2922) | function tryParseMethodDefinition(token, key, computed, node) {
  function parseObjectProperty (line 3003) | function parseObjectProperty(hasProto) {
  function parseObjectInitializer (line 3051) | function parseObjectInitializer() {
  function reinterpretExpressionAsPattern (line 3069) | function reinterpretExpressionAsPattern(expr) {
  function parseTemplateElement (line 3107) | function parseTemplateElement(option) {
  function parseTemplateLiteral (line 3120) | function parseTemplateLiteral() {
  function parseGroupExpression (line 3138) | function parseGroupExpression() {
  function parsePrimaryExpression (line 3241) | function parsePrimaryExpression() {
  function parseArguments (line 3322) | function parseArguments() {
  function parseNonComputedProperty (line 3349) | function parseNonComputedProperty() {
  function parseNonComputedMember (line 3361) | function parseNonComputedMember() {
  function parseComputedMember (line 3367) | function parseComputedMember() {
  function parseNewExpression (line 3381) | function parseNewExpression() {
  function parseLeftHandSideExpressionAllowCall (line 3407) | function parseLeftHandSideExpressionAllowCall() {
  function parseLeftHandSideExpression (line 3454) | function parseLeftHandSideExpression() {
  function parsePostfixExpression (line 3494) | function parsePostfixExpression() {
  function parseUnaryExpression (line 3522) | function parseUnaryExpression() {
  function binaryPrecedence (line 3563) | function binaryPrecedence(token, allowIn) {
  function parseBinaryExpression (line 3642) | function parseBinaryExpression() {
  function parseConditionalExpression (line 3698) | function parseConditionalExpression() {
  function parseConciseBody (line 3722) | function parseConciseBody() {
  function checkPatternParam (line 3729) | function checkPatternParam(options, param) {
  function reinterpretAsCoverFormalsList (line 3758) | function reinterpretAsCoverFormalsList(expr) {
  function parseArrowFunctionExpression (line 3832) | function parseArrowFunctionExpression(options, node) {
  function parseYieldExpression (line 3861) | function parseYieldExpression() {
  function parseAssignmentExpression (line 3890) | function parseAssignmentExpression() {
  function parseExpression (line 3946) | function parseExpression() {
  function parseStatementListItem (line 3970) | function parseStatementListItem() {
  function parseStatementList (line 3999) | function parseStatementList() {
  function parseBlock (line 4011) | function parseBlock() {
  function parseVariableIdentifier (line 4025) | function parseVariableIdentifier(kind) {
  function parseVariableDeclaration (line 4051) | function parseVariableDeclaration(options) {
  function parseVariableDeclarationList (line 4071) | function parseVariableDeclarationList(options) {
  function parseVariableStatement (line 4085) | function parseVariableStatement(node) {
  function parseLexicalBinding (line 4099) | function parseLexicalBinding(kind, options) {
  function parseBindingList (line 4122) | function parseBindingList(kind, options) {
  function tokenizerState (line 4134) | function tokenizerState() {
  function resetTokenizerState (line 4151) | function resetTokenizerState(ts) {
  function isLexicalDeclaration (line 4168) | function isLexicalDeclaration() {
  function parseLexicalDeclaration (line 4182) | function parseLexicalDeclaration(options) {
  function parseRestElement (line 4195) | function parseRestElement(params) {
  function parseEmptyStatement (line 4221) | function parseEmptyStatement(node) {
  function parseExpressionStatement (line 4228) | function parseExpressionStatement(node) {
  function parseIfStatement (line 4236) | function parseIfStatement(node) {
  function parseDoWhileStatement (line 4261) | function parseDoWhileStatement(node) {
  function parseWhileStatement (line 4288) | function parseWhileStatement(node) {
  function parseForStatement (line 4309) | function parseForStatement(node) {
  function parseContinueStatement (line 4451) | function parseContinueStatement(node) {
  function parseBreakStatement (line 4495) | function parseBreakStatement(node) {
  function parseReturnStatement (line 4535) | function parseReturnStatement(node) {
  function parseWithStatement (line 4571) | function parseWithStatement(node) {
  function parseSwitchCase (line 4593) | function parseSwitchCase() {
  function parseSwitchStatement (line 4616) | function parseSwitchStatement(node) {
  function parseThrowStatement (line 4663) | function parseThrowStatement(node) {
  function parseCatchClause (line 4681) | function parseCatchClause() {
  function parseTryStatement (line 4710) | function parseTryStatement(node) {
  function parseDebuggerStatement (line 4735) | function parseDebuggerStatement(node) {
  function parseStatement (line 4745) | function parseStatement() {
  function parseFunctionSourceElements (line 4830) | function parseFunctionSourceElements() {
  function validateParam (line 4889) | function validateParam(options, param, name) {
  function parseParam (line 4915) | function parseParam(options) {
  function parseParams (line 4944) | function parseParams(firstRestricted) {
  function parseFunctionDeclaration (line 4981) | function parseFunctionDeclaration(node, identifierIsOptional) {
  function parseFunctionExpression (line 5038) | function parseFunctionExpression() {
  function parseClassBody (line 5096) | function parseClassBody() {
  function parseClassDeclaration (line 5162) | function parseClassDeclaration(identifierIsOptional) {
  function parseClassExpression (line 5182) | function parseClassExpression() {
  function parseModuleSpecifier (line 5204) | function parseModuleSpecifier() {
  function parseExportSpecifier (line 5215) | function parseExportSpecifier() {
  function parseExportNamedDeclaration (line 5232) | function parseExportNamedDeclaration(node) {
  function parseExportDefaultDeclaration (line 5287) | function parseExportDefaultDeclaration(node) {
  function parseExportAllDeclaration (line 5326) | function parseExportAllDeclaration(node) {
  function parseExportDeclaration (line 5343) | function parseExportDeclaration() {
  function parseImportSpecifier (line 5362) | function parseImportSpecifier() {
  function parseNamedImports (line 5375) | function parseNamedImports() {
  function parseImportDefaultSpecifier (line 5392) | function parseImportDefaultSpecifier() {
  function parseImportNamespaceSpecifier (line 5401) | function parseImportNamespaceSpecifier() {
  function parseImportDeclaration (line 5415) | function parseImportDeclaration() {
  function parseScriptBody (line 5468) | function parseScriptBody() {
  function parseProgram (line 5507) | function parseProgram() {
  function filterTokenLocation (line 5517) | function filterTokenLocation() {
  function tokenize (line 5544) | function tokenize(code, options, delegate) {
  function parse (line 5633) | function parse(code, options) {

FILE: src/robomongo/gui/resources/scripts/uuidhelpers.js
  function HexToBase64 (line 10) | function HexToBase64(hex) {
  function Base64ToHex (line 28) | function Base64ToHex(base64) {
  function LUUID (line 55) | function LUUID(uuid) {
  function JUUID (line 61) | function JUUID(uuid) {
  function NUUID (line 72) | function NUUID(uuid) {
  function PYUUID (line 83) | function PYUUID(uuid) {

FILE: src/robomongo/gui/utils/ComboBoxUtils.cpp
  type Robomongo (line 3) | namespace Robomongo
    type utils (line 5) | namespace utils
      function setCurrentText (line 11) | void setCurrentText(QComboBox *comboBox, const QString &text)

FILE: src/robomongo/gui/utils/ComboBoxUtils.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/gui/utils/DialogUtils.cpp
  type Robomongo (line 3) | namespace Robomongo
    type utils (line 5) | namespace utils
      function questionDialog (line 13) | int questionDialog(QWidget *parent, const QString &actionText, const...
      function questionDialog (line 18) | int questionDialog(QWidget *parent, const QString &actionText, const...

FILE: src/robomongo/gui/utils/DialogUtils.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/gui/utils/GuiConstants.h
  function namespace (line 3) | namespace Robomongo

FILE: src/robomongo/gui/widgets/LogWidget.cpp
  type Robomongo (line 11) | namespace Robomongo

FILE: src/robomongo/gui/widgets/LogWidget.h
  function QT_END_NAMESPACE (line 9) | QT_END_NAMESPACE

FILE: src/robomongo/gui/widgets/explorer/AddEditIndexDialog.cpp
  function isValidJson (line 28) | bool isValidJson(const QString &text)
  function QLabel (line 42) | QLabel *createHelpLabel(const QString &text, int marginLeft = 0, int mar...
  type Robomongo (line 73) | namespace Robomongo
    function QWidget (line 116) | QWidget* AddEditIndexDialog::createBasicTab()
    function QWidget (line 161) | QWidget* AddEditIndexDialog::createAdvancedTab()
    function QWidget (line 217) | QWidget* AddEditIndexDialog::createTextSearchTab()
    function IndexInfo (line 254) | IndexInfo AddEditIndexDialog::info() const

FILE: src/robomongo/gui/widgets/explorer/AddEditIndexDialog.h
  function namespace (line 10) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerCollectionIndexItem.cpp
  type Robomongo (line 16) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerCollectionIndexItem.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerCollectionIndexesDir.cpp
  type Robomongo (line 14) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerCollectionIndexesDir.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerCollectionTreeItem.cpp
  type Robomongo (line 36) | namespace Robomongo
    function QString (line 215) | QString ExplorerCollectionTreeItem::buildToolTip(MongoCollection *coll...

FILE: src/robomongo/gui/widgets/explorer/ExplorerCollectionTreeItem.h
  function namespace (line 10) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerDatabaseCategoryTreeItem.cpp
  type Robomongo (line 20) | namespace Robomongo
    function openDatabaseShell (line 23) | void openDatabaseShell(MongoDatabase *database, const QString &script,
    function ExplorerDatabaseTreeItem (line 107) | ExplorerDatabaseTreeItem *ExplorerDatabaseCategoryTreeItem::databaseIt...

FILE: src/robomongo/gui/widgets/explorer/ExplorerDatabaseCategoryTreeItem.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerDatabaseTreeItem.cpp
  function openCurrentDatabaseShell (line 27) | void openCurrentDatabaseShell(Robomongo::MongoDatabase *database, const ...
  type Robomongo (line 35) | namespace Robomongo
    type detail (line 37) | namespace detail
      function QString (line 39) | QString buildName(const QString& text, int count)

FILE: src/robomongo/gui/widgets/explorer/ExplorerDatabaseTreeItem.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerFunctionTreeItem.cpp
  type Robomongo (line 15) | namespace Robomongo
    function QString (line 39) | QString ExplorerFunctionTreeItem::buildToolTip(const MongoFunction &fu...

FILE: src/robomongo/gui/widgets/explorer/ExplorerFunctionTreeItem.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerReplicaSetFolderItem.cpp
  function openCurrentServerShell (line 18) | void openCurrentServerShell(Robomongo::MongoServer *const server, const ...
  function openCurrentServerShell (line 25) | void openCurrentServerShell(Robomongo::MongoServer* server, Robomongo::C...
  type Robomongo (line 32) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerReplicaSetFolderItem.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerReplicaSetTreeItem.cpp
  function openCurrentServerShell (line 23) | void openCurrentServerShell(Robomongo::MongoServer* server, Robomongo::C...
  type Robomongo (line 31) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerReplicaSetTreeItem.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerServerTreeItem.cpp
  function openCurrentServerShell (line 25) | void openCurrentServerShell(Robomongo::MongoServer *const server, const ...
  type Robomongo (line 33) | namespace Robomongo
    function QString (line 238) | QString ExplorerServerTreeItem::buildServerName(int *count /* = NULL *...

FILE: src/robomongo/gui/widgets/explorer/ExplorerServerTreeItem.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerTreeItem.cpp
  type Robomongo (line 7) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerTreeItem.h
  function QT_END_NAMESPACE (line 6) | QT_END_NAMESPACE

FILE: src/robomongo/gui/widgets/explorer/ExplorerTreeWidget.cpp
  type Robomongo (line 9) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerTreeWidget.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerUserTreeItem.cpp
  type Robomongo (line 17) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerUserTreeItem.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/gui/widgets/explorer/ExplorerWidget.cpp
  type Robomongo (line 22) | namespace Robomongo
    function QTreeWidgetItem (line 52) | QTreeWidgetItem* ExplorerWidget::getSelectedTreeItem() const
    function QSize (line 83) | QSize ExplorerWidget::sizeHint() const

FILE: src/robomongo/gui/widgets/explorer/ExplorerWidget.h
  function namespace (line 12) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/BsonTableModel.cpp
  type Robomongo (line 10) | namespace Robomongo
    function QModelIndex (line 24) | QModelIndex BsonTableModelProxy::parent( const QModelIndex& index ) const
    function QModelIndex (line 35) | QModelIndex BsonTableModelProxy::mapFromSource( const QModelIndex & so...
    function QModelIndex (line 49) | QModelIndex BsonTableModelProxy::sibling(int row, int column, const QM...
    function QModelIndex (line 54) | QModelIndex BsonTableModelProxy::index( int row, int col, const QModel...
    function QModelIndex (line 65) | QModelIndex BsonTableModelProxy::mapToSource( const QModelIndex &proxy...
    function QVariant (line 106) | QVariant BsonTableModelProxy::data(const QModelIndex &index, int role)...
    function QVariant (line 138) | QVariant BsonTableModelProxy::headerData(int section, Qt::Orientation ...
    function QString (line 150) | QString BsonTableModelProxy::column(int col) const

FILE: src/robomongo/gui/widgets/workarea/BsonTableModel.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/BsonTableView.cpp
  type Robomongo (line 12) | namespace Robomongo
    function QModelIndex (line 40) | QModelIndex BsonTableView::selectedIndex() const
    function QModelIndexList (line 50) | QModelIndexList BsonTableView::selectedIndexes() const

FILE: src/robomongo/gui/widgets/workarea/BsonTableView.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/BsonTreeItem.cpp
  type removeIfFound (line 7) | struct removeIfFound
    method removeIfFound (line 9) | removeIfFound(Robomongo::BsonTreeItem *item) :_whatSearch(item) {}
  type Robomongo (line 33) | namespace Robomongo
    function BsonTreeItem (line 63) | BsonTreeItem* BsonTreeItem::child(unsigned pos) const
    function BsonTreeItem (line 68) | BsonTreeItem* BsonTreeItem::childSafe(unsigned pos) const
    function BsonTreeItem (line 78) | BsonTreeItem* BsonTreeItem::childByKey(const QString &val)
    function BsonTreeItem (line 88) | const BsonTreeItem *BsonTreeItem::superParent() const
    function QString (line 113) | QString BsonTreeItem::key() const
    function QString (line 118) | QString BsonTreeItem::value() const

FILE: src/robomongo/gui/widgets/workarea/BsonTreeItem.h
  function namespace (line 8) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/BsonTreeModel.cpp
  function QString (line 16) | QString arrayValue(int itemsCount) {
  function QString (line 21) | QString objectValue(int itemsCount) {
  function parseDocument (line 26) | void parseDocument(BsonTreeItem *root, const mongo::BSONObj &doc, bool i...
  type Robomongo (line 68) | namespace Robomongo
    function QIcon (line 130) | const QIcon &BsonTreeModel::getIcon(BsonTreeItem *item)
    function QVariant (line 154) | QVariant BsonTreeModel::data(const QModelIndex &index, int role) const
    function QVariant (line 224) | QVariant BsonTreeModel::headerData(int section, Qt::Orientation orient...
    function QModelIndex (line 244) | QModelIndex BsonTreeModel::parent(const QModelIndex& index) const
    function QModelIndex (line 259) | QModelIndex BsonTreeModel::index(int row, int column, const QModelInde...

FILE: src/robomongo/gui/widgets/workarea/BsonTreeModel.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/BsonTreeView.cpp
  type Robomongo (line 13) | namespace Robomongo
    function QModelIndex (line 165) | QModelIndex BsonTreeView::selectedIndex() const
    function QModelIndexList (line 176) | QModelIndexList BsonTreeView::selectedIndexes() const

FILE: src/robomongo/gui/widgets/workarea/BsonTreeView.h
  function namespace (line 8) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/CollectionStatsTreeItem.cpp
  function QString (line 15) | QString prepareValue(const QString &data)
  type Robomongo (line 21) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/CollectionStatsTreeItem.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/CollectionStatsTreeWidget.cpp
  type Robomongo (line 7) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/CollectionStatsTreeWidget.h
  function namespace (line 7) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/IndicatorLabel.cpp
  type Robomongo (line 7) | namespace Robomongo
    function QLabel (line 32) | QLabel *Indicator::createLabelWithIcon(const QIcon &icon)

FILE: src/robomongo/gui/widgets/workarea/IndicatorLabel.h
  function QT_END_NAMESPACE (line 7) | QT_END_NAMESPACE

FILE: src/robomongo/gui/widgets/workarea/JsonPrepareThread.cpp
  type Robomongo (line 9) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/JsonPrepareThread.h
  function namespace (line 10) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/OutputItemContentWidget.cpp
  type Robomongo (line 25) | namespace Robomongo
    function BsonTreeModel (line 404) | BsonTreeModel *OutputItemContentWidget::configureModel()
    function FindFrame (line 411) | FindFrame *Robomongo::OutputItemContentWidget::configureLogText()

FILE: src/robomongo/gui/widgets/workarea/OutputItemContentWidget.h
  function namespace (line 11) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/OutputItemHeaderWidget.cpp
  function QFrame (line 19) | QFrame *createVerticalLine()
  type Robomongo (line 29) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/OutputItemHeaderWidget.h
  function namespace (line 12) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/OutputWidget.cpp
  type Robomongo (line 17) | namespace Robomongo
    function QString (line 257) | QString OutputWidget::buildStyleSheet()

FILE: src/robomongo/gui/widgets/workarea/OutputWidget.h
  function namespace (line 11) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/PagingWidget.cpp
  function QPushButton (line 14) | QPushButton *createButtonWithIcon(const QIcon &icon)
  type Robomongo (line 24) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/PagingWidget.h
  function QT_END_NAMESPACE (line 6) | QT_END_NAMESPACE

FILE: src/robomongo/gui/widgets/workarea/ProgressBarPopup.cpp
  type Robomongo (line 7) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/ProgressBarPopup.h
  function QT_END_NAMESPACE (line 6) | QT_END_NAMESPACE

FILE: src/robomongo/gui/widgets/workarea/QueryWidget.cpp
  type Robomongo (line 41) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/QueryWidget.h
  function namespace (line 18) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/ScriptWidget.cpp
  function isStopChar (line 24) | bool isStopChar(const QChar &ch, bool direction)
  function isForbiddenChar (line 44) | bool isForbiddenChar(const QChar &ch)
  type Robomongo (line 50) | namespace Robomongo
    function QString (line 136) | QString ScriptWidget::text() const
    function QString (line 141) | QString ScriptWidget::selectedText() const
    function AutoCompletionInfo (line 349) | AutoCompletionInfo ScriptWidget::sanitizeForAutocompletion()

FILE: src/robomongo/gui/widgets/workarea/ScriptWidget.h
  function namespace (line 12) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/WelcomeTab.cpp
  type Robomongo (line 8) | namespace Robomongo {
    type BlogInfo (line 94) | struct BlogInfo
      method BlogInfo (line 96) | BlogInfo(QString const& title, QString const& link, QString const& p...
    type BlogLinkLabel (line 107) | struct BlogLinkLabel : public QLabel
      method BlogLinkLabel (line 109) | BlogLinkLabel(QString const& args)
    function deleteOldCacheFile (line 488) | bool deleteOldCacheFile(QString const& absFilePath)
    function saveIntoCache (line 502) | bool saveIntoCache(QString const& fileName, QString const& fileData,
    function saveIntoCache (line 523) | bool saveIntoCache(QString const& fileName, QPixmap const& pixMap,
    function saveIntoCache (line 543) | bool saveIntoCache(QString const& fileName, QByteArray* data,
  type Robomongo (line 78) | namespace Robomongo
    type BlogInfo (line 94) | struct BlogInfo
      method BlogInfo (line 96) | BlogInfo(QString const& title, QString const& link, QString const& p...
    type BlogLinkLabel (line 107) | struct BlogLinkLabel : public QLabel
      method BlogLinkLabel (line 109) | BlogLinkLabel(QString const& args)
    function deleteOldCacheFile (line 488) | bool deleteOldCacheFile(QString const& absFilePath)
    function saveIntoCache (line 502) | bool saveIntoCache(QString const& fileName, QString const& fileData,
    function saveIntoCache (line 523) | bool saveIntoCache(QString const& fileName, QPixmap const& pixMap,
    function saveIntoCache (line 543) | bool saveIntoCache(QString const& fileName, QByteArray* data,

FILE: src/robomongo/gui/widgets/workarea/WelcomeTab.h
  function QT_END_NAMESPACE (line 10) | QT_END_NAMESPACE
  function QT_END_NAMESPACE (line 51) | QT_END_NAMESPACE

FILE: src/robomongo/gui/widgets/workarea/WorkAreaTabBar.cpp
  type Robomongo (line 7) | namespace Robomongo
    function QString (line 137) | QString WorkAreaTabBar::buildStyleSheet()

FILE: src/robomongo/gui/widgets/workarea/WorkAreaTabBar.h
  function namespace (line 6) | namespace Robomongo

FILE: src/robomongo/gui/widgets/workarea/WorkAreaTabWidget.cpp
  type Robomongo (line 17) | namespace Robomongo
    function QueryWidget (line 126) | QueryWidget *WorkAreaTabWidget::currentQueryWidget()
    function QueryWidget (line 131) | QueryWidget *WorkAreaTabWidget::queryWidget(int index)
    function WelcomeTab (line 136) | WelcomeTab* WorkAreaTabWidget::getWelcomeTab()

FILE: src/robomongo/gui/widgets/workarea/WorkAreaTabWidget.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/shell/bson/json.cpp
  type mongo (line 50) | namespace mongo {
    type Robomongo (line 51) | namespace Robomongo {
      function Status (line 93) | Status JParse::parseError(StringData msg) {
      function Status (line 106) | Status JParse::value(StringData fieldName, BSONObjBuilder& builder) {
      function Status (line 235) | Status JParse::parse(BSONObjBuilder& builder) {
      function Status (line 239) | Status JParse::object(StringData fieldName, BSONObjBuilder& builder,...
      function Status (line 390) | Status JParse::objectIdObject(StringData fieldName, BSONObjBuilder& ...
      function Status (line 410) | Status JParse::binaryObject(StringData fieldName, BSONObjBuilder& bu...
      function Status (line 453) | Status JParse::dateObject(StringData fieldName, BSONObjBuilder& buil...
      function Status (line 528) | Status JParse::timestampObject(StringData fieldName, BSONObjBuilder&...
      function Status (line 590) | Status JParse::regexObject(StringData fieldName, BSONObjBuilder& bui...
      function Status (line 624) | Status JParse::dbRefObject(StringData fieldName, BSONObjBuilder& bui...
      function Status (line 673) | Status JParse::undefinedObject(StringData fieldName, BSONObjBuilder&...
      function Status (line 684) | Status JParse::numberLongObject(StringData fieldName, BSONObjBuilder...
      function Status (line 708) | Status JParse::numberDecimalObject(StringData fieldName, BSONObjBuil...
      function Status (line 726) | Status JParse::minKeyObject(StringData fieldName, BSONObjBuilder& bu...
      function Status (line 737) | Status JParse::maxKeyObject(StringData fieldName, BSONObjBuilder& bu...
      function Status (line 748) | Status JParse::array(StringData fieldName, BSONObjBuilder& builder, ...
      function Status (line 782) | Status JParse::constructor(StringData fieldName, BSONObjBuilder& bui...
      function Status (line 804) | Status JParse::date(StringData fieldName, BSONObjBuilder& builder) {
      function Status (line 836) | Status JParse::isodate(const StringData fieldName, BSONObjBuilder& b...
      function Status (line 872) | Status JParse::uuid(const StringData fieldName, BSONObjBuilder &buil...
      function Status (line 877) | Status JParse::luuid(const StringData fieldName, BSONObjBuilder &bui...
      function Status (line 882) | Status JParse::juuid(const StringData fieldName, BSONObjBuilder &bui...
      function Status (line 887) | Status JParse::nuuid(const StringData fieldName, BSONObjBuilder &bui...
      function Status (line 892) | Status JParse::pyuuid(const StringData fieldName, BSONObjBuilder &bu...
      function Status (line 897) | Status JParse::parseUuid(const StringData fieldName, BSONObjBuilder ...
      function Status (line 931) | Status JParse::timestamp(StringData fieldName, BSONObjBuilder& build...
      function Status (line 974) | Status JParse::objectId(StringData fieldName, BSONObjBuilder& builde...
      function Status (line 997) | Status JParse::numberLong(StringData fieldName, BSONObjBuilder& buil...
      function Status (line 1020) | Status JParse::numberDecimal(StringData fieldName, BSONObjBuilder& b...
      function Status (line 1039) | Status JParse::numberInt(StringData fieldName, BSONObjBuilder& build...
      function Status (line 1062) | Status JParse::dbRef(StringData fieldName, BSONObjBuilder& builder) {
      function Status (line 1103) | Status JParse::regex(StringData fieldName, BSONObjBuilder& builder) {
      function Status (line 1130) | Status JParse::regexPat(std::string* result) {
      function Status (line 1135) | Status JParse::regexOpt(std::string* result) {
      function Status (line 1140) | Status JParse::regexOptCheck(StringData opt) {
      function Status (line 1151) | Status JParse::number(StringData fieldName, BSONObjBuilder& builder) {
      function Status (line 1195) | Status JParse::field(std::string* result) {
      function Status (line 1219) | Status JParse::quotedString(std::string* result) {
      function Status (line 1247) | Status JParse::chars(std::string* result, const char* terminalSet, c...
      function BSONObj (line 1440) | BSONObj fromjson(const char* jsonString, int* len) {
      function BSONObj (line 1472) | BSONObj fromjson(const std::string& str) {
      function tojson (line 1476) | std::string tojson(const BSONObj& obj, JsonStringFormat format, bool...
      function tojson (line 1480) | std::string tojson(const BSONArray& arr, JsonStringFormat format, bo...
      function isArray (line 1484) | bool isArray(StringData str) {

FILE: src/robomongo/shell/bson/json.h
  function namespace (line 37) | namespace mongo {

FILE: src/robomongo/shell/db/ptimeutil.cpp
  function getInt (line 38) | int getInt( const std::string &timebuf, std::string::size_type &index, i...
  type miutil (line 54) | namespace miutil
    function rfc1123date (line 59) | std::string rfc1123date( const boost::posix_time::ptime &pt )
    function rfc1123date (line 120) | boost::posix_time::ptime rfc1123date( const std::string &rfc1123 )
    function rfc1123date (line 125) | boost::posix_time::ptime rfc1123date( const char *rfc1123 )
    function isotimeString (line 201) | std::string isotimeString(const boost::posix_time::ptime &pt, bool use...
    function ptimeFromIsoString (line 283) | boost::posix_time::ptime ptimeFromIsoString( const std::string &isoTime)
    function ptimeFromIsoString (line 289) | boost::posix_time::ptime ptimeFromIsoString( const std::string &isoTim...

FILE: src/robomongo/shell/db/ptimeutil.h
  function namespace (line 35) | namespace miutil {

FILE: src/robomongo/shell/shell/dbshell.cpp
  type mongo (line 88) | namespace mongo {
    function logProcessDetailsForLogRotate (line 181) | void logProcessDetailsForLogRotate() {}
    function exitCleanly (line 183) | void exitCleanly(ExitCode code) {
  function generateCompletions (line 95) | void generateCompletions(const string& prefix, vector<string>& all) {
  function completionHook (line 117) | void completionHook(const char* text, linenoiseCompletions* lc) {
  function shellHistoryInit (line 125) | void shellHistoryInit() {
  function shellHistoryDone (line 137) | void shellHistoryDone() {
  function shellHistoryAdd (line 141) | void shellHistoryAdd(const char* line) {
  function killOps (line 166) | void killOps() {
  type mongo (line 180) | namespace mongo {
    function logProcessDetailsForLogRotate (line 181) | void logProcessDetailsForLogRotate() {}
    function exitCleanly (line 183) | void exitCleanly(ExitCode code) {
  function quitNicely (line 195) | void quitNicely(int sig) {
  function setupSignals (line 212) | void setupSignals() {
  function string (line 216) | string fixHost(const std::string& url, const std::string& host, const st...
  function isOpSymbol (line 249) | bool isOpSymbol(char c) {
  function isUseCmd (line 256) | bool isUseCmd(const std::string& code) {
  function skipOverString (line 271) | size_t skipOverString(const std::string& code, size_t start, char quote) {
  function isBalanced (line 293) | bool isBalanced(const std::string& code) {
  type BalancedTest (line 365) | struct BalancedTest : public mongo::StartupTest {
    method run (line 367) | void run() {
  function string (line 404) | string finishCode(string code) {
  function execPrompt (line 430) | bool execPrompt(mongo::Scope& scope, const char* promptFunction, string&...
  function edit (line 446) | static void edit(const string& whatToEdit) {
  function _main (line 587) | int _main(int argc, char* argv[], char** envp) {
  function wmain (line 915) | int wmain(int argc, wchar_t* argvW[], wchar_t* envpW[]) {
  function main (line 928) | int main(int argc, char* argv[], char** envp) {

FILE: src/robomongo/ssh/array.c
  function rbm_array_add (line 12) | int rbm_array_add(void ***array, int *currentsize, void *data) {
  function rbm_array_remove (line 29) | int rbm_array_remove(void ***array, int *currentsize, void *data) {

FILE: src/robomongo/ssh/log.c
  function log_error (line 8) | int log_error(const char *format, ...)
  function log_msg (line 27) | int log_msg(const char *format, ...)
  function ssh_log_v (line 44) | void ssh_log_v(struct rbm_session* session, enum rbm_ssh_log_type type, ...
  function ssh_log_msg (line 74) | void ssh_log_msg(struct rbm_session* session, const char *format, ...) {
  function ssh_log_warn (line 91) | void ssh_log_warn(struct rbm_session* session, const char *format, ...) {
  function ssh_log_debug (line 106) | void ssh_log_debug(struct rbm_session* session, const char *format, ...) {
  function ssh_log_error (line 120) | void ssh_log_error(struct rbm_session* session, const char *format, ...) {

FILE: src/robomongo/ssh/private.h
  type rbm_channel (line 39) | struct rbm_channel {
  type rbm_session (line 48) | struct rbm_session {
  type rbm_channel (line 63) | struct rbm_channel
  type rbm_session (line 63) | struct rbm_session
  type rbm_channel (line 64) | struct rbm_channel
  type rbm_channel (line 65) | struct rbm_channel
  type rbm_session (line 65) | struct rbm_session
  type rbm_session (line 67) | struct rbm_session
  type rbm_session (line 68) | struct rbm_session
  type rbm_session (line 69) | struct rbm_session
  type rbm_session (line 70) | struct rbm_session
  type rbm_session (line 71) | struct rbm_session
  type rbm_ssh_auth_type (line 71) | enum rbm_ssh_auth_type
  type rbm_session (line 73) | struct rbm_session
  type rbm_session (line 82) | struct rbm_session
  type rbm_ssh_log_type (line 82) | enum rbm_ssh_log_type
  type rbm_session (line 83) | struct rbm_session
  type rbm_session (line 84) | struct rbm_session
  type rbm_session (line 85) | struct rbm_session
  type rbm_session (line 86) | struct rbm_session

FILE: src/robomongo/ssh/server.c
  function main (line 5) | int main(int argc, char *argv[]) {

FILE: src/robomongo/ssh/ssh.c
  type rbm_session (line 27) | struct rbm_session
  type rbm_session (line 28) | struct rbm_session
  type rbm_session (line 29) | struct rbm_session
  function rbm_ssh_init (line 42) | int rbm_ssh_init() {
  function rbm_ssh_cleanup (line 76) | void rbm_ssh_cleanup() {
  type rbm_ssh_session (line 87) | struct rbm_ssh_session
  type rbm_ssh_tunnel_config (line 87) | struct rbm_ssh_tunnel_config
  type rbm_session (line 88) | struct rbm_session
  type rbm_session (line 88) | struct rbm_session
  type rbm_session (line 88) | struct rbm_session
  type rbm_ssh_session (line 109) | struct rbm_ssh_session
  type rbm_ssh_session (line 109) | struct rbm_ssh_session
  type rbm_ssh_session (line 109) | struct rbm_ssh_session
  function rbm_ssh_session_close (line 123) | void rbm_ssh_session_close(struct rbm_ssh_session *sshsession) {
  function rbm_ssh_open_tunnel (line 138) | int rbm_ssh_open_tunnel(struct rbm_ssh_session *sshsession) {
  function rbm_ssh_session_setup (line 164) | int rbm_ssh_session_setup(struct rbm_ssh_session *sshsession) {
  type rbm_channel (line 189) | struct rbm_channel
  type rbm_session (line 189) | struct rbm_session
  type rbm_channel (line 190) | struct rbm_channel
  type rbm_channel (line 190) | struct rbm_channel
  function rbm_channel_close (line 215) | void rbm_channel_close(struct rbm_channel *channel) {
  type rbm_channel (line 247) | struct rbm_channel
  type rbm_session (line 247) | struct rbm_session
  function rbm_ssh_setup (line 256) | int rbm_ssh_setup(struct rbm_session *session) {
  function rbm_session_cleanup (line 279) | void rbm_session_cleanup(struct rbm_session *session) {
  function rbm_open_tunnel (line 311) | int rbm_open_tunnel(struct rbm_session *connection) {
  function handle_new_client_connections (line 395) | static int handle_new_client_connections(struct rbm_session *connection,...
  function handle_ssh_connections (line 463) | static int handle_ssh_connections(struct rbm_session *connection, fd_set...
  function handle_client_connections (line 541) | static int handle_client_connections(struct rbm_session *connection, rbm...
  function rbm_socket_t (line 610) | static rbm_socket_t socket_connect(struct rbm_session* session, char *ip...
  function rbm_socket_t (line 647) | rbm_socket_t socket_listen(struct rbm_session *rsession, char *ip, int *...
  function LIBSSH2_SESSION (line 698) | LIBSSH2_SESSION *ssh_connect(struct rbm_session *rsession, rbm_socket_t ...
  function rbm_sleep_ms (line 772) | static void rbm_sleep_ms(int ms) {
  function rbm_socket_close (line 780) | static void rbm_socket_close(rbm_socket_t socket) {

FILE: src/robomongo/ssh/ssh.h
  type rbm_ssh_log_type (line 8) | enum rbm_ssh_log_type {
  type rbm_ssh_auth_type (line 15) | enum rbm_ssh_auth_type {
  type rbm_ssh_tunnel_config (line 24) | struct rbm_ssh_tunnel_config {
  type rbm_ssh_session (line 54) | struct rbm_ssh_session {
  type rbm_ssh_session (line 62) | struct rbm_ssh_session
  type rbm_ssh_tunnel_config (line 62) | struct rbm_ssh_tunnel_config
  type rbm_ssh_session (line 63) | struct rbm_ssh_session
  type rbm_ssh_session (line 64) | struct rbm_ssh_session
  type rbm_ssh_session (line 65) | struct rbm_ssh_session

FILE: src/robomongo/ssh/temp/direct_tcpip.c
  function main (line 52) | int main(int argc, char *argv[])

FILE: src/robomongo/ssh/temp/internal.h
  type rbm_ssh_log_type (line 8) | enum rbm_ssh_log_type

FILE: src/robomongo/ssh/temp/temp_ssh.c
  function rbm_ssh_init (line 39) | int rbm_ssh_init() {
  function rbm_ssh_cleanup (line 65) | void rbm_ssh_cleanup() {
  function rbm_socket_t (line 77) | static rbm_socket_t socket_connect(rbm_ssh_session* session, char *ip, i...
  function rbm_socket_t (line 106) | rbm_socket_t socket_listen(rbm_ssh_session *rsession, char *ip, int *por...
  function LIBSSH2_SESSION (line 151) | LIBSSH2_SESSION *ssh_connect(rbm_ssh_session *rsession, rbm_socket_t soc...
  function rbm_ssh_channel (line 228) | rbm_ssh_channel *ssh_channel_create(rbm_ssh_session* session, rbm_socket...
  function ssh_channel_close (line 253) | void ssh_channel_close(rbm_ssh_channel* channel) {
  function rbm_ssh_channel (line 306) | rbm_ssh_channel* ssh_channel_find_by_socket(rbm_ssh_session* session, rb...
  function handle_new_client_connections (line 317) | static int handle_new_client_connections(rbm_ssh_session *connection, in...
  function handle_ssh_connections (line 384) | static int handle_ssh_connections(rbm_ssh_session *connection, fd_set *m...
  function handle_client_connections (line 464) | static int handle_client_connections(rbm_ssh_session *connection, rbm_so...
  function rbm_ssh_open_tunnel_ex (line 532) | int rbm_ssh_open_tunnel_ex(rbm_ssh_session *connection) {
  function rbm_ssh_open_tunnel (line 616) | int rbm_ssh_open_tunnel(rbm_ssh_session *connection) {
  function rbm_ssh_session_cleanup (line 640) | void rbm_ssh_session_cleanup(rbm_ssh_session *session) {
  function rbm_ssh_session_close (line 674) | void rbm_ssh_session_close(rbm_ssh_session *session) {
  function rbm_ssh_session (line 688) | rbm_ssh_session* rbm_ssh_session_create(struct rbm_ssh_tunnel_config *co...
  function rbm_ssh_setup (line 714) | int rbm_ssh_setup(rbm_ssh_session *session) {
  function rbm_ssh_session_setup (line 740) | int rbm_ssh_session_setup(rbm_ssh_session *session) {

FILE: src/robomongo/ssh/temp/temp_ssh.h
  type rbm_ssh_log_type (line 18) | enum rbm_ssh_log_type {
  type rbm_ssh_auth_type (line 25) | enum rbm_ssh_auth_type {
  type rbm_ssh_session (line 31) | struct rbm_ssh_session
  type rbm_ssh_tunnel_config (line 36) | typedef struct rbm_ssh_tunnel_config {
  type rbm_ssh_channel (line 65) | typedef struct rbm_ssh_channel {
  type rbm_ssh_session (line 74) | typedef struct rbm_ssh_session {
  type rbm_ssh_tunnel_config (line 89) | struct rbm_ssh_tunnel_config
  type rbm_ssh_session (line 93) | struct rbm_ssh_session

FILE: src/robomongo/ssh/temp/temp_ssh_log.c
  function log_error (line 7) | int log_error(const char *format, ...)
  function log_msg (line 27) | int log_msg(const char *format, ...)
  function ssh_log_v (line 45) | void ssh_log_v(rbm_ssh_session* session, enum rbm_ssh_log_type type, con...
  function ssh_log_msg (line 74) | void ssh_log_msg(rbm_ssh_session* session, const char *format, ...) {
  function ssh_log_warn (line 91) | void ssh_log_warn(rbm_ssh_session* session, const char *format, ...) {
  function ssh_log_debug (line 106) | void ssh_log_debug(rbm_ssh_session* session, const char *format, ...) {
  function ssh_log_error (line 120) | void ssh_log_error(rbm_ssh_session* session, const char *format, ...) {

FILE: src/robomongo/ssh/test.c
  function add_one_element (line 13) | int add_one_element() {
  function add_two_elements (line 25) | int add_two_elements() {
  function array_remove_when_only_single (line 41) | int array_remove_when_only_single() {
  function array_remove_when_only_two (line 53) | int array_remove_when_only_two() {
  function array_remove_when_only_two_variation (line 67) | int array_remove_when_only_two_variation() {
  function array_remove_when_five_elements (line 81) | int array_remove_when_five_elements() {
  function remove_last_element (line 101) | int remove_last_element() {
  function add_with_incorrect_params (line 117) | int add_with_incorrect_params() {
  function init (line 127) | void init() {
  function cleanup (line 140) | void cleanup() {
  function main (line 148) | int main(int argc, char *argv[]) {

FILE: src/robomongo/ssh/win.c
  function ssh_win_init (line 3) | int ssh_win_init() {

FILE: src/robomongo/utils/RoboCrypt.cpp
  type Robomongo (line 15) | namespace Robomongo {

FILE: src/robomongo/utils/RoboCrypt.h
  function namespace (line 7) | namespace Robomongo {

FILE: src/robomongo/utils/RoboCrypt_test.cpp
  function TEST (line 15) | TEST(RoboCrypt_CoreTests, encrypt_decrypt)

FILE: src/robomongo/utils/SimpleCrypt.cpp
  function QByteArray (line 73) | QByteArray SimpleCrypt::encryptToByteArray(const QString& plaintext)
  function QByteArray (line 79) | QByteArray SimpleCrypt::encryptToByteArray(QByteArray plaintext)
  function QString (line 141) | QString SimpleCrypt::encryptToString(const QString& plaintext)
  function QString (line 149) | QString SimpleCrypt::encryptToString(QByteArray plaintext)
  function QString (line 156) | QString SimpleCrypt::decryptToString(const QString &cyphertext)
  function QString (line 165) | QString SimpleCrypt::decryptToString(QByteArray cypher)
  function QByteArray (line 173) | QByteArray SimpleCrypt::decryptToByteArray(const QString& cyphertext)
  function QByteArray (line 181) | QByteArray SimpleCrypt::decryptToByteArray(QByteArray cypher)

FILE: src/robomongo/utils/SimpleCrypt.h
  function class (line 57) | class SimpleCrypt

FILE: src/robomongo/utils/StringOperations.cpp
  type Robomongo (line 3) | namespace Robomongo
    function captilizeFirstChar (line 5) | std::string captilizeFirstChar(std::string str)

FILE: src/robomongo/utils/StringOperations.h
  function namespace (line 5) | namespace Robomongo

FILE: src/robomongo/utils/StringOperations_test.cpp
  function TEST (line 15) | TEST(StringOperationsTests, captilizeFirstChar)

FILE: src/robomongo/utils/common.cpp
  type Robomongo (line 11) | namespace Robomongo
    function genericEventErrorHandler (line 13) | void genericEventErrorHandler(Event *event, const std::string &userFri...
    function fileExists (line 28) | bool fileExists(const QString &filePath)
    function vectorContains (line 35) | bool vectorContains(std::vector<T> const& vec, T const& value) {
    function QVariant (line 39) | QVariant getSetting(QString const& key) {
    function saveSetting (line 43) | void saveSetting(QString const& key, QVariant const& value) {

FILE: src/robomongo/utils/common.h
  function namespace (line 8) | namespace Robomongo /* todo ::utils */

FILE: src/robomongo/utils/qzip/qzipreader_p.h
  type FileInfo (line 80) | struct FileInfo
  type Status (line 105) | enum Status {

FILE: src/third-party/googletest-1.8.1/googlemock/include/gmock/gmock-actions.h
  function namespace (line 55) | namespace testing {
  type T (line 214) | typedef T (*FactoryFunction)();
  function SetFactory (line 215) | static void SetFactory(FactoryFunction factory) {
  function Clear (line 221) | static void Clear() {
  function IsSet (line 227) | static bool IsSet() { return producer_ != NULL; }
  function Exists (line 231) | static bool Exists() {
  function T (line 238) | static T Get() {
  function class (line 250) | class FixedValueProducer : public ValueProducer {
  function class (line 260) | class FactoryValueProducer : public ValueProducer {
  function Clear (line 285) | static void Clear() {
  function IsSet (line 290) | static bool IsSet() { return address_ != NULL; }
  function Exists (line 294) | static bool Exists() {
  function T (line 301) | static T& Get() {
  function Get (line 316) | static void Get() {}
  type typename (line 332) | typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
  function virtual (line 335) | virtual ~ActionInterface() {}
  type typename (line 360) | typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
  function explicit (line 377) | explicit Action(ActionInterface<F>* impl) : impl_(impl) {}
  function Result (line 401) | Result Perform(ArgumentTuple args) const {
  type typename (line 468) | typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
  function explicit (line 470) | explicit MonomorphicImpl(const Impl& impl) : impl_(impl) {}
  function virtual (line 472) | virtual Result Perform(const ArgumentTuple& args) {
  function namespace (line 506) | namespace internal {
  function class (line 653) | class ReturnNullAction {
  function class (line 671) | class ReturnVoidAction {
  type typename (line 693) | typedef typename Function<F>::Result Result;
  type typename (line 708) | typedef typename Function<F>::ArgumentTuple ArgumentTuple;
  function explicit (line 710) | explicit Impl(T& ref) : ref_(ref) {}
  function virtual (line 712) | virtual Result Perform(const ArgumentTuple&) {
  type typename (line 741) | typedef typename Function<F>::Result Result;
  type typename (line 757) | typedef typename Function<F>::ArgumentTuple ArgumentTuple;
  function explicit (line 759) | explicit Impl(const T& value) : value_(value) {}
  function virtual (line 761) | virtual Result Perform(const ArgumentTuple&) {
  function class (line 777) | class DoDefaultAction {
  type typename (line 956) | typedef typename internal::Function<F>::Result Result;
  function ostream (line 1016) | ostream* os) {
  type typename (line 1042) | typedef typename Function<F>::ArgumentTuple ArgumentTuple;
  type typename (line 1043) | typedef typename Function<F>::MakeResultVoid VoidResult;
  function virtual (line 1048) | virtual Result Perform(const ArgumentTuple& args) {
  type internal (line 1098) | typedef internal::IgnoredValue Unused;
  function PolymorphicAction (line 1124) | inline PolymorphicAction<internal::ReturnNullAction> ReturnNull() {
  function PolymorphicAction (line 1129) | inline PolymorphicAction<internal::ReturnVoidAction> Return() {
  function internal (line 1157) | inline internal::DoDefaultAction DoDefault() {

FILE: src/third-party/googletest-1.8.1/googlemock/include/gmock/gmock-cardinalities.h
  function namespace (line 50) | namespace testing {

FILE: src/third-party/googletest-1.8.1/googlemock/include/gmock/gmock-generated-actions.h
  function namespace (line 47) | namespace testing {
  function R (line 225) | R Invoke(Function function, const ::testing::tuple<A1, A2, A3, A4, A5,
  function R (line 232) | R InvokeMethod(Class* obj_ptr,
  function R (line 249) | R Invoke(Function function, const ::testing::tuple<A1, A2, A3, A4, A5,
  function R (line 257) | R InvokeMethod(Class* obj_ptr,
  function R (line 274) | R Invoke(Function function, const ::testing::tuple<A1, A2, A3, A4, A5,
  function R (line 282) | R InvokeMethod(Class* obj_ptr,
  function R (line 301) | R Invoke(Function function, const ::testing::tuple<A1, A2, A3, A4, A5,
  function R (line 309) | R InvokeMethod(Class* obj_ptr,
  type typename (line 379) | typedef typename Function<type>::ArgumentTuple SelectedArgs;
  function SelectedArgs (line 380) | static SelectedArgs Select(const ArgumentTuple& args) {
  type Result (line 391) | typedef Result type();
  type typename (line 392) | typedef typename Function<type>::ArgumentTuple SelectedArgs;
  function SelectedArgs (line 393) | static SelectedArgs Select(const ArgumentTuple& /* args */) {
  type Result (line 402) | typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1));
  type typename (line 403) | typedef typename Function<type>::ArgumentTuple SelectedArgs;
  function SelectedArgs (line 404) | static SelectedArgs Select(const ArgumentTuple& args) {
  type Result (line 413) | typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
  type typename (line 415) | typedef typename Function<type>::ArgumentTuple SelectedArgs;
  function SelectedArgs (line 416) | static SelectedArgs Select(const ArgumentTuple& args) {
  type Result (line 425) | typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
  type typename (line 427) | typedef typename Function<type>::ArgumentTuple SelectedArgs;
  function SelectedArgs (line 428) | static SelectedArgs Select(const ArgumentTuple& args) {
  type Result (line 438) | typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
  type typename (line 441) | typedef typename Function<type>::ArgumentTuple SelectedArgs;
  function SelectedArgs (line 442) | static SelectedArgs Select(const ArgumentTuple& args) {
  type Result (line 453) | typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
  type typename (line 456) | typedef typename Function<type>::ArgumentTuple SelectedArgs;
  function SelectedArgs (line 457) | static SelectedArgs Select(const ArgumentTuple& args) {
  type Result (line 468) | typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
  type typename (line 472) | typedef typename Function<type>::ArgumentTuple SelectedArgs;
  function SelectedArgs (line 473) | static SelectedArgs Select(const ArgumentTuple& args) {
  type Result (line 484) | typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
  type typename (line 488) | typedef typename Function<type>::ArgumentTuple SelectedArgs;
  function SelectedArgs (line 489) | static SelectedArgs Select(const ArgumentTuple& args) {
  type Result (line 500) | typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
  type typename (line 505) | typedef typename Function<type>::ArgumentTuple SelectedArgs;
  function SelectedArgs (line 506) | static SelectedArgs Select(const ArgumentTuple& args) {
  type Result (line 518) | typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
  type typename (line 523) | typedef typename Function<type>::ArgumentTuple SelectedArgs;
  function SelectedArgs (line 524) | static SelectedArgs Select(const ArgumentTuple& args) {
  function explicit (line 539) | explicit WithArgsAction(const InnerAction& action) : action_(action) {}
  type typename (line 549) | typedef typename Function<F>::ArgumentTuple ArgumentTuple;
  function explicit (line 551) | explicit Impl(const InnerAction& action) : action_(action) {}
  function virtual (line 553) | virtual Result Perform(const ArgumentTuple& args) {
  type ExcessiveArg (line 584) | struct ExcessiveArg {}
  function Result (line 598) | Result Perform(Impl* impl, const ::testing::tuple<A0>& args) {
  function Result (line 606) | Result Perform(Impl* impl, const ::testing::tuple<A0, A1>& args) {
  function Result (line 614) | Result Perform(Impl* impl, const ::testing::tuple<A0, A1, A2>& args) {
  function Result (line 622) | Result Perform(Impl* impl, const ::testing::tuple<A0, A1, A2,
  function Result (line 631) | Result Perform(Impl* impl, const ::testing::tuple<A0, A1, A2, A3,
  function namespace (line 2271) | namespace testing {

FILE: src/third-party/googletest-1.8.1/googlemock/include/gmock/gmock-generated-function-mockers.h
  function namespace (line 51) | namespace testing {
  type R (line 226) | typedef R F(A1, A2, A3, A4, A5, A6, A7);
  type typename (line 227) | typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
  function R (line 235) | R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) {
  type R (line 252) | typedef R F(A1, A2, A3, A4, A5, A6, A7, A8);
  type typename (line 253) | typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
  function R (line 262) | R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) {
  type R (line 280) | typedef R F(A1, A2, A3, A4, A5, A6, A7, A8, A9);
  type typename (line 281) | typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
  function R (line 291) | R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) {
  type R (line 310) | typedef R F(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10);
  type typename (line 311) | typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
  function R (line 321) | R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9,
  function MockType (line 377) | MockType* AdjustConstness_const(const MockType* mock) {

FILE: src/third-party/googletest-1.8.1/googlemock/include/gmock/gmock-generated-matchers.h
  function namespace (line 49) | namespace testing {
  function type (line 104) | static type GetSelectedFields(const Tuple& t) {
  function type (line 114) | static type GetSelectedFields(const Tuple& t) {
  function type (line 124) | static type GetSelectedFields(const Tuple& t) {
  function type (line 135) | static type GetSelectedFields(const Tuple& t) {
  function type (line 146) | static type GetSelectedFields(const Tuple& t) {
  function type (line 158) | static type GetSelectedFields(const Tuple& t) {
  function type (line 171) | static type GetSelectedFields(const Tuple& t) {
  function type (line 186) | static type GetSelectedFields(const Tuple& t) {
  function type (line 201) | static type GetSelectedFields(const Tuple& t) {
  type RawArgsTuple (line 216) | typedef GTEST_REMOVE_REFERENCE_AND_CONST_(ArgsTuple) RawArgsTuple;
  type typename (line 217) | typedef typename internal::TupleFields<RawArgsTuple, k0, k1, k2, k3, k4,...
  type Matcher (line 219) | typedef Matcher<const SelectedArgs&> MonomorphicInnerMatcher;
  function inner_matcher_ (line 222) | ArgsMatcherImpl(const InnerMatcher& inner_matcher)
  function virtual (line 225) | virtual bool MatchAndExplain(ArgsTuple args,
  function virtual (line 241) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 247) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function PrintIndices (line 260) | static void PrintIndices(::std::ostream* os) {
  function explicit (line 285) | explicit ArgsMatcher(const InnerMatcher& inner_matcher)
  type M1 (line 308) | typedef M1 type;
  type BothOfMatcher (line 313) | typedef BothOfMatcher<
  type BothOfMatcher (line 321) | typedef BothOfMatcher<
  type BothOfMatcher (line 329) | typedef BothOfMatcher<
  type BothOfMatcher (line 337) | typedef BothOfMatcher<
  type M1 (line 396) | typedef M1 type;
  type EitherOfMatcher (line 401) | typedef EitherOfMatcher<
  type EitherOfMatcher (line 409) | typedef EitherOfMatcher<
  type EitherOfMatcher (line 417) | typedef EitherOfMatcher<
  type EitherOfMatcher (line 425) | typedef EitherOfMatcher<
  function internal (line 570) | inline internal::ElementsAreMatcher<
  type testing (line 582) | typedef ::testing::tuple<
  type testing (line 593) | typedef ::testing::tuple<
  type testing (line 606) | typedef ::testing::tuple<
  type testing (line 621) | typedef ::testing::tuple<
  type testing (line 639) | typedef ::testing::tuple<
  type testing (line 660) | typedef ::testing::tuple<
  type testing (line 683) | typedef ::testing::tuple<
  type testing (line 708) | typedef ::testing::tuple<
  type testing (line 736) | typedef ::testing::tuple<
  type testing (line 767) | typedef ::testing::tuple<
  function internal (line 788) | inline internal::UnorderedElementsAreMatcher<
  type testing (line 800) | typedef ::testing::tuple<
  type testing (line 811) | typedef ::testing::tuple<
  type testing (line 824) | typedef ::testing::tuple<
  type testing (line 839) | typedef ::testing::tuple<
  type testing (line 857) | typedef ::testing::tuple<
  type testing (line 878) | typedef ::testing::tuple<
  type testing (line 902) | typedef ::testing::tuple<
  type testing (line 928) | typedef ::testing::tuple<
  type testing (line 956) | typedef ::testing::tuple<
  type testing (line 987) | typedef ::testing::tuple<

FILE: src/third-party/googletest-1.8.1/googlemock/include/gmock/gmock-generated-nice-strict.h
  function namespace (line 73) | namespace testing {
  function MockClass (line 226) | NaggyMock(const A1& a1) : MockClass(a1) {
  function MockClass (line 344) | StrictMock(const A1& a1) : MockClass(a1) {

FILE: src/third-party/googletest-1.8.1/googlemock/include/gmock/gmock-matchers.h
  function namespace (line 64) | namespace testing {
  function explicit (line 397) | explicit Matcher(const MatcherInterface<const std::string&>* impl)
  function explicit (line 422) | explicit Matcher(const MatcherInterface<std::string>* impl)
  function explicit (line 472) | explicit Matcher(const MatcherInterface< ::string>* impl)
  function explicit (line 498) | explicit Matcher(const MatcherInterface<const absl::string_view&>* impl)
  function explicit (line 526) | explicit Matcher(const MatcherInterface<absl::string_view>* impl)
  function virtual (line 590) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 594) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 598) | virtual bool MatchAndExplain(T x, MatchResultListener* listener) const {
  function namespace (line 639) | namespace internal {
  type RawT (line 825) | typedef GTEST_REMOVE_REFERENCE_AND_CONST_(T) RawT;
  type RawU (line 826) | typedef GTEST_REMOVE_REFERENCE_AND_CONST_(U) RawU;
  function namespace (line 848) | namespace internal {
  function virtual (line 1248) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function CaseInsensitiveCStringEquals (line 1265) | inline bool CaseInsensitiveCStringEquals(const char* lhs, const char* rh...
  function CaseInsensitiveCStringEquals (line 1269) | inline bool CaseInsensitiveCStringEquals(const wchar_t* lhs,
  function MatchAndExplain (line 1308) | bool MatchAndExplain(const absl::string_view& s,
  function DescribeTo (line 1346) | void DescribeTo(::std::ostream* os) const {
  function DescribeNegationTo (line 1350) | void DescribeNegationTo(::std::ostream* os) const {
  function MatchAndExplain (line 1381) | bool MatchAndExplain(const absl::string_view& s,
  function DescribeTo (line 1415) | void DescribeTo(::std::ostream* os) const {
  function DescribeNegationTo (line 1420) | void DescribeNegationTo(::std::ostream* os) const {
  function MatchAndExplain (line 1441) | bool MatchAndExplain(const absl::string_view& s,
  function DescribeTo (line 1475) | void DescribeTo(::std::ostream* os) const {
  function DescribeNegationTo (line 1480) | void DescribeNegationTo(::std::ostream* os) const {
  function MatchAndExplain (line 1500) | bool MatchAndExplain(const absl::string_view& s,
  function DescribeTo (line 1534) | void DescribeTo(::std::ostream* os) const {
  function DescribeNegationTo (line 1539) | void DescribeNegationTo(::std::ostream* os) const {
  function class (line 1553) | class MatchesRegexMatcher {
  function DescribeNegationTo (line 1593) | void DescribeNegationTo(::std::ostream* os) const {
  function matcher_ (line 1681) | matcher_(matcher) {}
  function virtual (line 1683) | virtual bool MatchAndExplain(GTEST_REFERENCE_TO_CONST_(T) x,
  function virtual (line 1688) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 1692) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 1733) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 1742) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 1751) | virtual bool MatchAndExplain(GTEST_REFERENCE_TO_CONST_(T) x,
  function virtual (line 1869) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 1878) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 1887) | virtual bool MatchAndExplain(GTEST_REFERENCE_TO_CONST_(T) x,
  function DescribeNegationTo (line 1985) | void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 2158) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 2179) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function operator (line 2218) | operator Matcher<FloatType>() const {
  function operator (line 2223) | operator Matcher<const FloatType&>() const {
  function operator (line 2228) | operator Matcher<FloatType&>() const {
  function explicit (line 2252) | explicit FloatingEq2Matcher(bool nan_eq_nan) { Init(-1, nan_eq_nan); }
  function explicit (line 2254) | explicit FloatingEq2Matcher(FloatType max_abs_error) {
  function explicit (line 2347) | explicit Impl(const InnerMatcher& matcher)
  function virtual (line 2350) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 2355) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 2360) | virtual bool MatchAndExplain(Pointer pointer,
  function DescribeNegationTo (line 2398) | void DescribeNegationTo(::std::ostream* os) const {
  function std (line 2406) | static std::string GetToName() {
  function DescribeTo (line 2470) | void DescribeTo(::std::ostream* os) const {
  function DescribeNegationTo (line 2475) | void DescribeNegationTo(::std::ostream* os) const {
  function MatchAndExplainImpl (line 2498) | bool MatchAndExplainImpl(true_type /* is_pointer */, const Class* p,
  function DescribeTo (line 2545) | void DescribeTo(::std::ostream* os) const {
  function DescribeNegationTo (line 2550) | void DescribeNegationTo(::std::ostream* os) const {
  function MatchAndExplainImpl (line 2583) | bool MatchAndExplainImpl(true_type /* is_pointer */, const Class* p,
  type Functor (line 2609) | typedef Functor StorageType;
  function CheckIsValid (line 2611) | static void CheckIsValid(Functor /* functor */) {}
  type typename (line 2617) | typedef typename Functor::result_type ResultType;
  function ResultType (line 2619) | ResultType Invoke(Functor f, T arg) { return f(arg); }
  type ResType (line 2626) | typedef ResType ResultType;
  type ResType (line 2627) | typedef ResType(*StorageType)(ArgType);
  function CheckIsValid (line 2629) | static void CheckIsValid(ResType(*f)(ArgType)) {
  function ResType (line 2634) | ResType Invoke(ResType(*f)(ArgType), T arg) {
  type typename (line 2663) | typedef typename CallableTraits<Callable>::ResultType ResultType;
  function virtual (line 2671) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 2676) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 2681) | virtual bool MatchAndExplain(T obj, MatchResultListener* listener) const {
  type typename (line 2728) | typedef typename ContainerView::type::size_type SizeType;
  function explicit (line 2729) | explicit Impl(const SizeMatcher& size_matcher)
  function virtual (line 2732) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 2736) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 2741) | virtual bool MatchAndExplain(Container container,
  type typename (line 2780) | typedef typename std::iterator_traits<
  function explicit (line 2783) | explicit Impl(const DistanceMatcher& distance_matcher)
  function virtual (line 2786) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 2790) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 2795) | virtual bool MatchAndExplain(Container container,
  type typename (line 2837) | typedef typename View::type StlContainer;
  type typename (line 2838) | typedef typename View::const_reference StlContainerReference;
  function explicit (line 2842) | explicit ContainerEqMatcher(const Container& expected)
  function DescribeTo (line 2850) | void DescribeTo(::std::ostream* os) const {
  function DescribeNegationTo (line 2854) | void DescribeNegationTo(::std::ostream* os) const {
  type internal (line 2864) | typedef internal::StlContainerView<GTEST_REMOVE_CONST_(LhsContainer)>
  type typename (line 2866) | typedef typename LhsView::type LhsStlContainer;
  type LessComparator (line 2919) | struct LessComparator {
  type typename (line 2942) | typedef typename LhsView::type LhsStlContainer;
  type typename (line 2943) | typedef typename LhsView::const_reference LhsStlContainerReference;
  type typename (line 2946) | typedef typename RemoveConstFromKey<
  function virtual (line 2952) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 2957) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 2962) | virtual bool MatchAndExplain(LhsContainer lhs,
  type typename (line 3013) | typedef typename RhsView::type RhsStlContainer;
  type typename (line 3014) | typedef typename RhsStlContainer::value_type RhsValue;
  type typename (line 3040) | typedef typename LhsView::type LhsStlContainer;
  type typename (line 3041) | typedef typename LhsView::const_reference LhsStlContainerReference;
  type typename (line 3042) | typedef typename LhsStlContainer::value_type LhsValue;
  type LhsValue (line 3047) | typedef ::testing::tuple<const LhsValue&, const RhsValue&> InnerMatcherArg;
  function virtual (line 3054) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 3061) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 3070) | virtual bool MatchAndExplain(LhsContainer lhs,
  type StlContainerView (line 3129) | typedef StlContainerView<RawContainer> View;
  type typename (line 3130) | typedef typename View::type StlContainer;
  type typename (line 3131) | typedef typename View::const_reference StlContainerReference;
  type typename (line 3132) | typedef typename StlContainer::value_type Element;
  function MatchAndExplainImpl (line 3142) | bool MatchAndExplainImpl(bool all_elements_should_match,
  function virtual (line 3178) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 3183) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 3188) | virtual bool MatchAndExplain(Container container,
  function virtual (line 3207) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 3212) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 3217) | virtual bool MatchAndExplain(Container container,
  type Rank1 (line 3260) | struct Rank1 {}
  type Rank0 (line 3261) | struct Rank0
  function namespace (line 3263) | namespace pair_getters {
  type typename (line 3312) | typedef typename RawPairType::first_type KeyType;
  function virtual (line 3321) | virtual bool MatchAndExplain(PairType key_value,
  function virtual (line 3334) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 3340) | virtual void DescribeNegationTo(::std::ostream* os) const {
  type typename (line 3374) | typedef typename RawPairType::first_type FirstType;
  type typename (line 3375) | typedef typename RawPairType::second_type SecondType;
  function virtual (line 3386) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 3394) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 3403) | virtual bool MatchAndExplain(PairType a_pair,
  type internal (line 3481) | typedef internal::StlContainerView<RawContainer> View;
  type typename (line 3482) | typedef typename View::type StlContainer;
  type typename (line 3483) | typedef typename View::const_reference StlContainerReference;
  type typename (line 3484) | typedef typename StlContainer::value_type Element;
  function virtual (line 3496) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 3515) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 3531) | virtual bool MatchAndExplain(Container container,
  function class (line 3627) | class GTEST_API_ MatchMatrix {
  type std (line 3667) | typedef ::std::pair<size_t, size_t> ElementMatcherPair;
  type std (line 3668) | typedef ::std::vector<ElementMatcherPair> ElementMatcherPairs;
  type UnorderedMatcherRequire (line 3675) | struct UnorderedMatcherRequire {
  function class (line 3686) | class GTEST_API_ UnorderedElementsAreMatcherImplBase {
  type internal (line 3735) | typedef internal::StlContainerView<RawContainer> View;
  type typename (line 3736) | typedef typename View::type StlContainer;
  type typename (line 3737) | typedef typename View::const_reference StlContainerReference;
  type typename (line 3738) | typedef typename StlContainer::const_iterator StlContainerConstIterator;
  type typename (line 3739) | typedef typename StlContainer::value_type Element;
  function UnorderedElementsAreMatcherImplBase (line 3744) | UnorderedElementsAreMatcherImplBase(matcher_flags) {
  function virtual (line 3752) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 3757) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 3761) | virtual bool MatchAndExplain(Container container,
  type RawContainer (line 3841) | typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
  type typename (line 3842) | typedef typename internal::StlContainerView<RawContainer>::type View;
  type typename (line 3843) | typedef typename View::value_type Element;
  type Element (line 3844) | typedef ::std::vector<Matcher<const Element&> > MatcherVec;
  type RawContainer (line 3871) | typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
  type typename (line 3872) | typedef typename internal::StlContainerView<RawContainer>::type View;
  type typename (line 3873) | typedef typename View::value_type Element;
  type Element (line 3874) | typedef ::std::vector<Matcher<const Element&> > MatcherVec;
  function virtual (line 3975) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 3982) | virtual bool MatchAndExplain(T x, MatchResultListener* listener) const {
  type typename (line 4033) | typedef typename OptionalView::value_type ValueType;
  function explicit (line 4034) | explicit Impl(const ValueMatcher& value_matcher)
  function virtual (line 4037) | virtual void DescribeTo(::std::ostream* os) const {
  function virtual (line 4042) | virtual void DescribeNegationTo(::std::ostream* os) const {
  function virtual (line 4047) | virtual bool MatchAndExplain(Optional optional,
  function namespace (line 4072) | namespace variant_matcher {
  function namespace (line 4133) | namespace any_cast_matcher {
  type RawContainer (line 4835) | typedef GTEST_REMOVE_CONST_(Container) RawContainer;
  type RawContainer (line 4873) | typedef GTEST_REMOVE_CONST_(Container) RawContainer;
  type RawRhsContainer (line 4910) | typedef GTEST_REMOVE_CONST_(RhsContainer) RawRhsContainer;
  type typename (line 4914) | typedef typename internal::StlContainerView<RawRhsContainer> RhsView;
  type typename (line 4915) | typedef typename RhsView::type RhsStlContainer;
  type typename (line 4916) | typedef typename RhsStlContainer::value_type Second;

FILE: src/third-party/googletest-1.8.1/googlemock/include/gmock/gmock-more-actions.h
  function namespace (line 44) | namespace testing {
  type typename (line 189) | typedef typename ::testing::tuple_element<k, args_type>::type argk_type;

FILE: src/third-party/googletest-1.8.1/googlemock/include/gmock/gmock-more-matchers.h
  function namespace (line 45) | namespace testing {

FILE: src/third-party/googletest-1.8.1/googlemock/include/gmock/gmock-spec-builders.h
  function namespace (line 83) | namespace testing {
  type CallReaction (line 371) | enum CallReaction {
  function class (line 380) | class GTEST_API_ Mock {
  function class (line 496) | class GTEST_API_ Expectation {
  function class (line 572) | class ExpectationSet {
  function class (line 628) | class GTEST_API_ Sequence {
  function class (line 669) | class GTEST_API_ InSequence {
  function namespace (line 679) | namespace internal {
  type typename (line 1260) | typedef typename internal::Function<F>::ArgumentMatcherTuple
  function T (line 1328) | T Unwrap() { return ::testing::internal::move(value_); }
  function explicit (line 1350) | explicit ReferenceOrValueWrapper(reference ref)
  function class (line 1374) | class UntypedActionResultHolderBase {
  function virtual (line 1392) | virtual void PrintAsActionResult(::std::ostream* os) const {
  function ActionResultHolder (line 1401) | ActionResultHolder* PerformDefaultAction(
  function ActionResultHolder (line 1412) | ActionResultHolder* PerformAction(
  function explicit (line 1422) | explicit ActionResultHolder(Wrapper result)
  function virtual (line 1437) | virtual void PrintAsActionResult(::std::ostream* /* os */) const {}
  function ActionResultHolder (line 1442) | ActionResultHolder* PerformDefaultAction(
  function ActionResultHolder (line 1453) | ActionResultHolder* PerformAction(
  type typename (line 1472) | typedef typename Function<F>::ArgumentTuple ArgumentTuple;
  type typename (line 1473) | typedef typename Function<F>::ArgumentMatcherTuple ArgumentMatcherTuple;
  function virtual (line 1480) | virtual ~FunctionMockerBase()
  function OnCallSpec (line 1491) | const OnCallSpec<F>* FindOnCallSpec(
  function Result (line 1511) | Result PerformDefaultAction(
  function virtual (line 1538) | virtual UntypedActionResultHolderBase* UntypedPerformDefaultAction(
  function virtual (line 1550) | virtual UntypedActionResultHolderBase* UntypedPerformAction(
  function virtual (line 1561) | virtual void ClearDefaultActionsLocked()
  type ActionResultHolder (line 1591) | typedef ActionResultHolder<Result> ResultHolder;
  function Result (line 1596) | Result InvokeWith(
  function GTEST_LOCK_EXCLUDED_ (line 1611) | GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
  function GTEST_LOCK_EXCLUDED_ (line 1622) | GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
  function DescribeDefaultActionTo (line 1648) | void DescribeDefaultActionTo(const ArgumentTuple& args,
  function virtual (line 1665) | virtual void UntypedDescribeUninterestingCall(
  function virtual (line 1693) | virtual const ExpectationBase* UntypedFindMatchingExpectation(
  function virtual (line 1719) | virtual void UntypedPrintArgs(const void* untyped_args,
  function GTEST_EXCLUSIVE_LOCK_REQUIRED_ (line 1729) | const
  function FormatUnexpectedCallMessageLocked (line 1747) | void FormatUnexpectedCallMessageLocked(
  function PrintTriedExpectationsLocked (line 1760) | void PrintTriedExpectationsLocked(
  function Expectation (line 1839) | inline Expectation::Expectation(internal::ExpectationBase& exp)  // NOLINT

FILE: src/third-party/googletest-1.8.1/googlemock/include/gmock/gmock.h
  function namespace (line 70) | namespace testing {

FILE: src/third-party/googletest-1.8.1/googlemock/include/gmock/internal/gmock-generated-internal-utils.h
  function namespace (line 47) | namespace testing {
  type R (line 166) | typedef R Result;
  type testing (line 167) | typedef ::testing::tuple<> ArgumentTuple;
  type typename (line 168) | typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  type IgnoredValue (line 170) | typedef IgnoredValue MakeResultIgnoredValue();
  type A1 (line 176) | typedef A1 Argument1;
  type testing (line 177) | typedef ::testing::tuple<A1> ArgumentTuple;
  type typename (line 178) | typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  type IgnoredValue (line 180) | typedef IgnoredValue MakeResultIgnoredValue(A1);
  type testing (line 187) | typedef ::testing::tuple<A1, A2> ArgumentTuple;
  type typename (line 188) | typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  type IgnoredValue (line 190) | typedef IgnoredValue MakeResultIgnoredValue(A1, A2);
  type testing (line 197) | typedef ::testing::tuple<A1, A2, A3> ArgumentTuple;
  type typename (line 198) | typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  type IgnoredValue (line 200) | typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3);
  type testing (line 207) | typedef ::testing::tuple<A1, A2, A3, A4> ArgumentTuple;
  type typename (line 208) | typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  type IgnoredValue (line 210) | typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4);
  type testing (line 218) | typedef ::testing::tuple<A1, A2, A3, A4, A5> ArgumentTuple;
  type typename (line 219) | typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  type IgnoredValue (line 221) | typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5);
  type testing (line 229) | typedef ::testing::tuple<A1, A2, A3, A4, A5, A6> ArgumentTuple;
  type typename (line 230) | typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  type IgnoredValue (line 232) | typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5, A6);
  type testing (line 240) | typedef ::testing::tuple<A1, A2, A3, A4, A5, A6, A7> ArgumentTuple;
  type typename (line 241) | typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  type IgnoredValue (line 243) | typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5, A6, A7);
  type testing (line 251) | typedef ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8> ArgumentTuple;
  type typename (line 252) | typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  type IgnoredValue (line 254) | typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5, A6, A7, ...
  type testing (line 262) | typedef ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9> ArgumentTuple;
  type typename (line 263) | typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  type IgnoredValue (line 265) | typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5, A6, A7, A8,
  type testing (line 275) | typedef ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9,
  type typename (line 277) | typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  type IgnoredValue (line 279) | typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5, A6, A7, A8,

FILE: src/third-party/googletest-1.8.1/googlemock/include/gmock/internal/gmock-internal-utils.h
  function namespace (line 49) | namespace testing {

FILE: src/third-party/googletest-1.8.1/googlemock/scripts/fuse_gmock_files.py
  function GetGTestRootDir (line 91) | def GetGTestRootDir(gmock_root):
  function ValidateGMockRootDir (line 97) | def ValidateGMockRootDir(gmock_root):
  function ValidateOutputDir (line 108) | def ValidateOutputDir(output_dir):
  function FuseGMockH (line 119) | def FuseGMockH(gmock_root, output_dir):
  function FuseGMockAllCcToFile (line 159) | def FuseGMockAllCcToFile(gmock_root, output_file):
  function FuseGMockGTestAllCc (line 204) | def FuseGMockGTestAllCc(gmock_root, output_dir):
  function FuseGMock (line 215) | def FuseGMock(gmock_root, output_dir):
  function main (line 226) | def main():

FILE: src/third-party/googletest-1.8.1/googlemock/scripts/generator/cpp/ast.py
  function reversed (line 52) | def reversed(seq):
  function next (line 58) | def next(obj):
  class _NullDict (line 103) | class _NullDict(object):
  class Node (line 109) | class Node(object):
    method __init__ (line 112) | def __init__(self, start, end):
    method IsDeclaration (line 116) | def IsDeclaration(self):
    method IsDefinition (line 120) | def IsDefinition(self):
    method IsExportable (line 124) | def IsExportable(self):
    method Requires (line 128) | def Requires(self, node):
    method XXX__str__ (line 132) | def XXX__str__(self):
    method _StringHelper (line 135) | def _StringHelper(self, name, suffix):
    method __repr__ (line 140) | def __repr__(self):
  class Define (line 144) | class Define(Node):
    method __init__ (line 145) | def __init__(self, start, end, name, definition):
    method __str__ (line 150) | def __str__(self):
  class Include (line 155) | class Include(Node):
    method __init__ (line 156) | def __init__(self, start, end, filename, system):
    method __str__ (line 161) | def __str__(self):
  class Goto (line 168) | class Goto(Node):
    method __init__ (line 169) | def __init__(self, start, end, label):
    method __str__ (line 173) | def __str__(self):
  class Expr (line 177) | class Expr(Node):
    method __init__ (line 178) | def __init__(self, start, end, expr):
    method Requires (line 182) | def Requires(self, node):
    method __str__ (line 186) | def __str__(self):
  class Return (line 190) | class Return(Expr):
  class Delete (line 194) | class Delete(Expr):
  class Friend (line 198) | class Friend(Expr):
    method __init__ (line 199) | def __init__(self, start, end, expr, namespace):
  class Using (line 204) | class Using(Node):
    method __init__ (line 205) | def __init__(self, start, end, names):
    method __str__ (line 209) | def __str__(self):
  class Parameter (line 213) | class Parameter(Node):
    method __init__ (line 214) | def __init__(self, start, end, name, parameter_type, default):
    method Requires (line 220) | def Requires(self, node):
    method __str__ (line 224) | def __str__(self):
  class _GenericDeclaration (line 232) | class _GenericDeclaration(Node):
    method __init__ (line 233) | def __init__(self, start, end, name, namespace):
    method FullName (line 238) | def FullName(self):
    method _TypeStringHelper (line 244) | def _TypeStringHelper(self, suffix):
  class VariableDeclaration (line 252) | class VariableDeclaration(_GenericDeclaration):
    method __init__ (line 253) | def __init__(self, start, end, name, var_type, initial_value, namespace):
    method Requires (line 258) | def Requires(self, node):
    method ToString (line 262) | def ToString(self):
    method __str__ (line 269) | def __str__(self):
  class Typedef (line 273) | class Typedef(_GenericDeclaration):
    method __init__ (line 274) | def __init__(self, start, end, name, alias, namespace):
    method IsDefinition (line 278) | def IsDefinition(self):
    method IsExportable (line 281) | def IsExportable(self):
    method Requires (line 284) | def Requires(self, node):
    method __str__ (line 292) | def __str__(self):
  class _NestedType (line 297) | class _NestedType(_GenericDeclaration):
    method __init__ (line 298) | def __init__(self, start, end, name, fields, namespace):
    method IsDefinition (line 302) | def IsDefinition(self):
    method IsExportable (line 305) | def IsExportable(self):
    method __str__ (line 308) | def __str__(self):
  class Union (line 313) | class Union(_NestedType):
  class Enum (line 317) | class Enum(_NestedType):
  class Class (line 321) | class Class(_GenericDeclaration):
    method __init__ (line 322) | def __init__(self, start, end, name, bases, templated_types, body, nam...
    method IsDeclaration (line 328) | def IsDeclaration(self):
    method IsDefinition (line 331) | def IsDefinition(self):
    method IsExportable (line 334) | def IsExportable(self):
    method Requires (line 337) | def Requires(self, node):
    method __str__ (line 348) | def __str__(self):
  class Struct (line 356) | class Struct(Class):
  class Function (line 360) | class Function(_GenericDeclaration):
    method __init__ (line 361) | def __init__(self, start, end, name, return_type, parameters,
    method IsDeclaration (line 371) | def IsDeclaration(self):
    method IsDefinition (line 374) | def IsDefinition(self):
    method IsExportable (line 377) | def IsExportable(self):
    method Requires (line 382) | def Requires(self, node):
    method __str__ (line 391) | def __str__(self):
  class Method (line 399) | class Method(Function):
    method __init__ (line 400) | def __init__(self, start, end, name, in_class, return_type, parameters,
  class Type (line 409) | class Type(_GenericDeclaration):
    method __init__ (line 412) | def __init__(self, start, end, name, templated_types, modifiers,
    method __str__ (line 430) | def __str__(self):
    method IsDeclaration (line 448) | def IsDeclaration(self):
    method IsDefinition (line 451) | def IsDefinition(self):
    method IsExportable (line 454) | def IsExportable(self):
  class TypeConverter (line 458) | class TypeConverter(object):
    method __init__ (line 460) | def __init__(self, namespace_stack):
    method _GetTemplateEnd (line 463) | def _GetTemplateEnd(self, tokens, start):
    method ToType (line 477) | def ToType(self, tokens):
    method DeclarationToParts (line 536) | def DeclarationToParts(self, parts, needs_name_removed):
    method ToParameters (line 591) | def ToParameters(self, tokens):
    method CreateReturnType (line 652) | def CreateReturnType(self, return_type_seq):
    method GetTemplateIndices (line 666) | def GetTemplateIndices(self, names):
  class AstBuilder (line 676) | class AstBuilder(object):
    method __init__ (line 677) | def __init__(self, token_stream, filename, in_class='', visibility=None,
    method HandleError (line 699) | def HandleError(self, msg, token):
    method Generate (line 704) | def Generate(self):
    method _CreateVariable (line 727) | def _CreateVariable(self, pos_token, name, type_name, type_modifiers,
    method _GenerateOne (line 738) | def _GenerateOne(self, token):
    method _GetTokensUpTo (line 849) | def _GetTokensUpTo(self, expected_token_type, expected_token):
    method _GetVarTokensUpTo (line 852) | def _GetVarTokensUpTo(self, expected_token_type, *expected_tokens):
    method _IgnoreUpTo (line 862) | def _IgnoreUpTo(self, token_type, token):
    method _SkipIf0Blocks (line 865) | def _SkipIf0Blocks(self):
    method _GetMatchingChar (line 880) | def _GetMatchingChar(self, open_paren, close_paren, GetNextToken=None):
    method _GetParameters (line 899) | def _GetParameters(self):
    method GetScope (line 902) | def GetScope(self):
    method _GetNextToken (line 905) | def _GetNextToken(self):
    method _AddBackToken (line 910) | def _AddBackToken(self, token):
    method _AddBackTokens (line 918) | def _AddBackTokens(self, tokens):
    method GetName (line 928) | def GetName(self, seq=None):
    method GetMethod (line 953) | def GetMethod(self, modifiers, templated_types):
    method _GetMethod (line 959) | def _GetMethod(self, return_type_and_name, modifiers, templated_types,
    method _GetReturnTypeAndClassName (line 1116) | def _GetReturnTypeAndClassName(self, token_seq):
    method handle_bool (line 1160) | def handle_bool(self):
    method handle_char (line 1163) | def handle_char(self):
    method handle_int (line 1166) | def handle_int(self):
    method handle_long (line 1169) | def handle_long(self):
    method handle_short (line 1172) | def handle_short(self):
    method handle_double (line 1175) | def handle_double(self):
    method handle_float (line 1178) | def handle_float(self):
    method handle_void (line 1181) | def handle_void(self):
    method handle_wchar_t (line 1184) | def handle_wchar_t(self):
    method handle_unsigned (line 1187) | def handle_unsigned(self):
    method handle_signed (line 1190) | def handle_signed(self):
    method _GetNestedType (line 1193) | def _GetNestedType(self, ctor):
    method handle_struct (line 1227) | def handle_struct(self):
    method handle_union (line 1263) | def handle_union(self):
    method handle_enum (line 1266) | def handle_enum(self):
    method handle_auto (line 1272) | def handle_auto(self):
    method handle_register (line 1277) | def handle_register(self):
    method handle_const (line 1280) | def handle_const(self):
    method handle_inline (line 1283) | def handle_inline(self):
    method handle_extern (line 1286) | def handle_extern(self):
    method handle_static (line 1289) | def handle_static(self):
    method handle_virtual (line 1292) | def handle_virtual(self):
    method handle_volatile (line 1308) | def handle_volatile(self):
    method handle_mutable (line 1311) | def handle_mutable(self):
    method handle_public (line 1314) | def handle_public(self):
    method handle_protected (line 1318) | def handle_protected(self):
    method handle_private (line 1322) | def handle_private(self):
    method handle_friend (line 1326) | def handle_friend(self):
    method handle_static_cast (line 1332) | def handle_static_cast(self):
    method handle_const_cast (line 1335) | def handle_const_cast(self):
    method handle_dynamic_cast (line 1338) | def handle_dynamic_cast(self):
    method handle_reinterpret_cast (line 1341) | def handle_reinterpret_cast(self):
    method handle_new (line 1344) | def handle_new(self):
    method handle_delete (line 1347) | def handle_delete(self):
    method handle_typedef (line 1352) | def handle_typedef(self):
    method handle_typeid (line 1392) | def handle_typeid(self):
    method handle_typename (line 1395) | def handle_typename(self):
    method _GetTemplatedTypes (line 1398) | def _GetTemplatedTypes(self):
    method handle_template (line 1425) | def handle_template(self):
    method handle_true (line 1448) | def handle_true(self):
    method handle_false (line 1451) | def handle_false(self):
    method handle_asm (line 1454) | def handle_asm(self):
    method handle_class (line 1457) | def handle_class(self):
    method _GetBases (line 1460) | def _GetBases(self):
    method _GetClass (line 1492) | def _GetClass(self, class_type, visibility, templated_types):
    method handle_namespace (line 1564) | def handle_namespace(self):
    method handle_using (line 1591) | def handle_using(self):
    method handle_explicit (line 1596) | def handle_explicit(self):
    method handle_this (line 1603) | def handle_this(self):
    method handle_operator (line 1606) | def handle_operator(self):
    method handle_sizeof (line 1610) | def handle_sizeof(self):
    method handle_case (line 1613) | def handle_case(self):
    method handle_switch (line 1616) | def handle_switch(self):
    method handle_default (line 1619) | def handle_default(self):
    method handle_if (line 1624) | def handle_if(self):
    method handle_else (line 1627) | def handle_else(self):
    method handle_return (line 1630) | def handle_return(self):
    method handle_goto (line 1636) | def handle_goto(self):
    method handle_try (line 1641) | def handle_try(self):
    method handle_catch (line 1644) | def handle_catch(self):
    method handle_throw (line 1647) | def handle_throw(self):
    method handle_while (line 1650) | def handle_while(self):
    method handle_do (line 1653) | def handle_do(self):
    method handle_for (line 1656) | def handle_for(self):
    method handle_break (line 1659) | def handle_break(self):
    method handle_continue (line 1662) | def handle_continue(self):
  function BuilderFromSource (line 1666) | def BuilderFromSource(source, filename):
  function PrintIndentifiers (line 1679) | def PrintIndentifiers(filename, should_print):
  function PrintAllIndentifiers (line 1703) | def PrintAllIndentifiers(filenames, should_print):
  function main (line 1714) | def main(argv):

FILE: src/third-party/googletest-1.8.1/googlemock/scripts/generator/cpp/gmock_class.py
  function _GenerateMethods (line 51) | def _GenerateMethods(output_lines, source, class_node):
  function _GenerateMocks (line 126) | def _GenerateMocks(filename, source, ast_list, desired_class_names):
  function main (line 190) | def main(argv=sys.argv):

FILE: src/third-party/googletest-1.8.1/googlemock/scripts/generator/cpp/gmock_class_test.py
  class TestCase (line 34) | class TestCase(unittest.TestCase):
    method StripLeadingWhitespace (line 37) | def StripLeadingWhitespace(self, lines):
    method assertEqualIgnoreLeadingWhitespace (line 41) | def assertEqualIgnoreLeadingWhitespace(self, expected_lines, lines):
  class GenerateMethodsTest (line 46) | class GenerateMethodsTest(TestCase):
    method GenerateMethodSource (line 48) | def GenerateMethodSource(self, cpp_source):
    method testSimpleMethod (line 57) | def testSimpleMethod(self):
    method testSimpleConstructorsAndDestructor (line 68) | def testSimpleConstructorsAndDestructor(self):
    method testVirtualDestructor (line 85) | def testVirtualDestructor(self):
    method testExplicitlyDefaultedConstructorsAndDestructor (line 98) | def testExplicitlyDefaultedConstructorsAndDestructor(self):
    method testExplicitlyDeletedConstructorsAndDestructor (line 114) | def testExplicitlyDeletedConstructorsAndDestructor(self):
    method testSimpleOverrideMethod (line 130) | def testSimpleOverrideMethod(self):
    method testSimpleConstMethod (line 141) | def testSimpleConstMethod(self):
    method testExplicitVoid (line 152) | def testExplicitVoid(self):
    method testStrangeNewlineInParameter (line 163) | def testStrangeNewlineInParameter(self):
    method testDefaultParameters (line 175) | def testDefaultParameters(self):
    method testMultipleDefaultParameters (line 186) | def testMultipleDefaultParameters(self):
    method testRemovesCommentsWhenDefaultsArePresent (line 197) | def testRemovesCommentsWhenDefaultsArePresent(self):
    method testDoubleSlashCommentsInParameterListAreRemoved (line 209) | def testDoubleSlashCommentsInParameterListAreRemoved(self):
    method testCStyleCommentsInParameterListAreNotRemoved (line 222) | def testCStyleCommentsInParameterListAreNotRemoved(self):
    method testArgsOfTemplateTypes (line 236) | def testArgsOfTemplateTypes(self):
    method testReturnTypeWithOneTemplateArg (line 247) | def testReturnTypeWithOneTemplateArg(self):
    method testReturnTypeWithManyTemplateArgs (line 257) | def testReturnTypeWithManyTemplateArgs(self):
    method testSimpleMethodInTemplatedClass (line 272) | def testSimpleMethodInTemplatedClass(self):
    method testPointerArgWithoutNames (line 284) | def testPointerArgWithoutNames(self):
    method testReferenceArgWithoutNames (line 294) | def testReferenceArgWithoutNames(self):
    method testArrayArgWithoutNames (line 304) | def testArrayArgWithoutNames(self):
  class GenerateMocksTest (line 315) | class GenerateMocksTest(TestCase):
    method GenerateMocks (line 317) | def GenerateMocks(self, cpp_source):
    method testNamespaces (line 326) | def testNamespaces(self):
    method testClassWithStorageSpecifierMacro (line 356) | def testClassWithStorageSpecifierMacro(self):
    method testTemplatedForwardDeclaration (line 373) | def testTemplatedForwardDeclaration(self):
    method testTemplatedClass (line 391) | def testTemplatedClass(self):
    method testTemplateInATemplateTypedef (line 410) | def testTemplateInATemplateTypedef(self):
    method testTemplateInATemplateTypedefWithComma (line 428) | def testTemplateInATemplateTypedefWithComma(self):
    method testEnumClass (line 447) | def testEnumClass(self):

FILE: src/third-party/googletest-1.8.1/googlemock/scripts/generator/cpp/keywords.py
  function IsKeyword (line 52) | def IsKeyword(token):
  function IsBuiltinType (line 55) | def IsBuiltinType(token):

FILE: src/third-party/googletest-1.8.1/googlemock/scripts/generator/cpp/tokenize.py
  class Token (line 64) | class Token(object):
    method __init__ (line 74) | def __init__(self, token_type, name, start, end):
    method __str__ (line 81) | def __str__(self):
  function _GetString (line 89) | def _GetString(source, start, i):
  function _GetChar (line 105) | def _GetChar(source, start, i):
  function GetTokens (line 119) | def GetTokens(source):
  function main (line 274) | def main(argv):

FILE: src/third-party/googletest-1.8.1/googlemock/scripts/generator/cpp/utils.py
  function ReadFile (line 30) | def ReadFile(filename, print_error=True):

FILE: src/third-party/googletest-1.8.1/googlemock/scripts/gmock_doctor.py
  function _FindAllMatches (line 137) | def _FindAllMatches(regex, s):
  function _GenericDiagnoser (line 144) | def _GenericDiagnoser(short_name, long_name, diagnoses, msg):
  function _NeedToReturnReferenceDiagnoser (line 166) | def _NeedToReturnReferenceDiagnoser(msg):
  function _NeedToReturnSomethingDiagnoser (line 191) | def _NeedToReturnSomethingDiagnoser(msg):
  function _NeedToReturnNothingDiagnoser (line 218) | def _NeedToReturnNothingDiagnoser(msg):
  function _IncompleteByReferenceArgumentDiagnoser (line 255) | def _IncompleteByReferenceArgumentDiagnoser(msg):
  function _OverloadedFunctionMatcherDiagnoser (line 282) | def _OverloadedFunctionMatcherDiagnoser(msg):
  function _OverloadedFunctionActionDiagnoser (line 303) | def _OverloadedFunctionActionDiagnoser(msg):
  function _OverloadedMethodActionDiagnoser (line 328) | def _OverloadedMethodActionDiagnoser(msg):
  function _MockObjectPointerDiagnoser (line 357) | def _MockObjectPointerDiagnoser(msg):
  function _NeedToUseSymbolDiagnoser (line 396) | def _NeedToUseSymbolDiagnoser(msg):
  function _NeedToUseReturnNullDiagnoser (line 416) | def _NeedToUseReturnNullDiagnoser(msg):
  function _TypeInTemplatedBaseDiagnoser (line 442) | def _TypeInTemplatedBaseDiagnoser(msg):
  function _WrongMockMethodMacroDiagnoser (line 511) | def _WrongMockMethodMacroDiagnoser(msg):
  function _WrongParenPositionDiagnoser (line 539) | def _WrongParenPositionDiagnoser(msg):
  function Diagnose (line 577) | def Diagnose(msg):
  function main (line 594) | def main():

FILE: src/third-party/googletest-1.8.1/googlemock/scripts/upload.py
  function GetEmail (line 65) | def GetEmail(prompt):
  function StatusUpdate (line 97) | def StatusUpdate(msg):
  function ErrorExit (line 109) | def ErrorExit(msg):
  class ClientLoginError (line 115) | class ClientLoginError(urllib2.HTTPError):
    method __init__ (line 118) | def __init__(self, url, code, msg, headers, args):
  class AbstractRpcServer (line 124) | class AbstractRpcServer(object):
    method __init__ (line 127) | def __init__(self, host, auth_function, host_override=None, extra_head...
    method _GetOpener (line 154) | def _GetOpener(self):
    method _CreateRequest (line 162) | def _CreateRequest(self, url, data=None):
    method _GetAuthToken (line 172) | def _GetAuthToken(self, email, password):
    method _GetAuthCookie (line 215) | def _GetAuthCookie(self, auth_token):
    method _Authenticate (line 239) | def _Authenticate(self):
    method Send (line 291) | def Send(self, request_path, payload=None,
  class HttpRpcServer (line 344) | class HttpRpcServer(AbstractRpcServer):
    method _Authenticate (line 347) | def _Authenticate(self):
    method _GetOpener (line 354) | def _GetOpener(self):
  function GetRpcServer (line 458) | def GetRpcServer(options):
  function EncodeMultipartFormData (line 498) | def EncodeMultipartFormData(fields, files):
  function GetContentType (line 533) | def GetContentType(filename):
  function RunShellWithReturnCode (line 541) | def RunShellWithReturnCode(command, print_output=False,
  function RunShell (line 577) | def RunShell(command, silent_ok=False, universal_newlines=True,
  class VersionControlSystem (line 588) | class VersionControlSystem(object):
    method __init__ (line 591) | def __init__(self, options):
    method GenerateDiff (line 599) | def GenerateDiff(self, args):
    method GetUnknownFiles (line 608) | def GetUnknownFiles(self):
    method CheckForUnknownFiles (line 613) | def CheckForUnknownFiles(self):
    method GetBaseFile (line 625) | def GetBaseFile(self, filename):
    method GetBaseFiles (line 642) | def GetBaseFiles(self, diff):
    method UploadBaseFiles (line 661) | def UploadBaseFiles(self, issue, rpc_server, patch_list, patchset, opt...
    method IsImage (line 713) | def IsImage(self, filename):
  class SubversionVCS (line 721) | class SubversionVCS(VersionControlSystem):
    method __init__ (line 724) | def __init__(self, options):
    method GuessBase (line 742) | def GuessBase(self, required):
    method _GuessBase (line 746) | def _GuessBase(self, required):
    method GenerateDiff (line 790) | def GenerateDiff(self, args):
    method _CollapseKeywords (line 805) | def _CollapseKeywords(self, content, keyword_str):
    method GetUnknownFiles (line 836) | def GetUnknownFiles(self):
    method ReadFile (line 844) | def ReadFile(self, filename):
    method GetStatus (line 854) | def GetStatus(self, filename):
    method GetBaseFile (line 898) | def GetBaseFile(self, filename):
  class GitVCS (line 985) | class GitVCS(VersionControlSystem):
    method __init__ (line 988) | def __init__(self, options):
    method GenerateDiff (line 993) | def GenerateDiff(self, extra_args):
    method GetUnknownFiles (line 1021) | def GetUnknownFiles(self):
    method GetBaseFile (line 1026) | def GetBaseFile(self, filename):
  class MercurialVCS (line 1042) | class MercurialVCS(VersionControlSystem):
    method __init__ (line 1045) | def __init__(self, options, repo_dir):
    method _GetRelPath (line 1058) | def _GetRelPath(self, filename):
    method GenerateDiff (line 1064) | def GenerateDiff(self, extra_args):
    method GetUnknownFiles (line 1090) | def GetUnknownFiles(self):
    method GetBaseFile (line 1102) | def GetBaseFile(self, filename):
  function SplitPatch (line 1141) | def SplitPatch(data):
  function UploadSeparatePatches (line 1181) | def UploadSeparatePatches(issue, rpc_server, patchset, data, options):
  function GuessVCS (line 1209) | def GuessVCS(options):
  function RealMain (line 1250) | def RealMain(argv, data=None):
  function main (line 1377) | def main():

FILE: src/third-party/googletest-1.8.1/googlemock/scripts/upload_gmock.py
  function main (line 49) | def main():

FILE: src/third-party/googletest-1.8.1/googlemock/src/gmock-cardinalities.cc
  type testing (line 44) | namespace testing {
    class BetweenCardinalityImpl (line 49) | class BetweenCardinalityImpl : public CardinalityInterface {
      method BetweenCardinalityImpl (line 51) | BetweenCardinalityImpl(int min, int max)
      method ConservativeLowerBound (line 73) | virtual int ConservativeLowerBound() const { return min_; }
      method ConservativeUpperBound (line 74) | virtual int ConservativeUpperBound() const { return max_; }
      method IsSatisfiedByCallCount (line 76) | virtual bool IsSatisfiedByCallCount(int call_count) const {
      method IsSaturatedByCallCount (line 80) | virtual bool IsSaturatedByCallCount(int call_count) const {
    function FormatTimes (line 94) | inline std::string FormatTimes(int n) {
    function GTEST_API_ (line 139) | GTEST_API_ Cardinality AtLeast(int n) { return Between(n, INT_MAX); }
    function GTEST_API_ (line 142) | GTEST_API_ Cardinality AtMost(int n) { return Between(0, n); }
    function GTEST_API_ (line 145) | GTEST_API_ Cardinality AnyNumber() { return AtLeast(0); }
    function GTEST_API_ (line 148) | GTEST_API_ Cardinality Between(int min, int max) {
    function GTEST_API_ (line 153) | GTEST_API_ Cardinality Exactly(int n) { return Between(n, n); }

FILE: src/third-party/googletest-1.8.1/googlemock/src/gmock-internal-utils.cc
  type testing (line 46) | namespace testing {
    type internal (line 47) | namespace internal {
      function GTEST_API_ (line 51) | GTEST_API_ std::string JoinAsTuple(const Strings& fields) {
      function GTEST_API_ (line 72) | GTEST_API_ std::string ConvertIdentifierNameToWords(const char* id_n...
      class GoogleTestFailureReporter (line 94) | class GoogleTestFailureReporter : public FailureReporterInterface {
        method ReportFailure (line 96) | virtual void ReportFailure(FailureType type, const char* file, int...
      function GTEST_API_ (line 112) | GTEST_API_ FailureReporterInterface* GetFailureReporter() {
      function GTEST_API_ (line 128) | GTEST_API_ bool LogIsVisible(LogSeverity severity) {
      function GTEST_API_ (line 149) | GTEST_API_ void Log(LogSeverity severity, const std::string& message,
      function GTEST_API_ (line 190) | GTEST_API_ WithoutMatchers GetWithoutMatchers() { return WithoutMatc...
      function GTEST_API_ (line 192) | GTEST_API_ void IllegalDoDefault(const char* file, int line) {

FILE: src/third-party/googletest-1.8.1/googlemock/src/gmock-matchers.cc
  type testing (line 44) | namespace testing {
    type internal (line 155) | namespace internal {
      function GTEST_API_ (line 162) | GTEST_API_ std::string FormatMatcherDescription(bool negation,
      class MaxBipartiteMatchState (line 232) | class MaxBipartiteMatchState {
        method MaxBipartiteMatchState (line 234) | explicit MaxBipartiteMatchState(const MatchMatrix& graph)
        method ElementMatcherPairs (line 240) | ElementMatcherPairs Compute() {
        method TryAugment (line 292) | bool TryAugment(size_t ilhs, ::std::vector<char>* seen) {
      function GTEST_API_ (line 338) | GTEST_API_ ElementMatcherPairs FindMaxBipartiteMatching(const MatchM...
      function LogElementMatcherPairVec (line 342) | static void LogElementMatcherPairVec(const ElementMatcherPairs& pairs,

FILE: src/third-party/googletest-1.8.1/googlemock/src/gmock-spec-builders.cc
  type testing (line 60) | namespace testing {
    type internal (line 61) | namespace internal {
      function GTEST_API_ (line 68) | GTEST_API_ void LogWithLocation(testing::internal::LogSeverity sever...
      function GTEST_EXCLUSIVE_LOCK_REQUIRED_ (line 104) | GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
      function GTEST_EXCLUSIVE_LOCK_REQUIRED_ (line 131) | GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
      function GTEST_EXCLUSIVE_LOCK_REQUIRED_ (line 151) | GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
      function GTEST_EXCLUSIVE_LOCK_REQUIRED_ (line 182) | GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
      function GTEST_LOCK_EXCLUDED_ (line 205) | GTEST_LOCK_EXCLUDED_(mutex_) {
      function ReportUninterestingCall (line 278) | void ReportUninterestingCall(CallReaction reaction, const std::strin...
      function GTEST_LOCK_EXCLUDED_ (line 313) | GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
      function GTEST_LOCK_EXCLUDED_ (line 326) | GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
      function GTEST_LOCK_EXCLUDED_ (line 337) | GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
      function GTEST_LOCK_EXCLUDED_ (line 354) | GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
      function GTEST_LOCK_EXCLUDED_ (line 372) | GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
      function Expectation (line 486) | Expectation UntypedFunctionMockerBase::GetHandleOf(ExpectationBase* ...
      function GTEST_EXCLUSIVE_LOCK_REQUIRED_ (line 507) | GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
      function CallReaction (line 551) | CallReaction intToCallReaction(int mock_behavior) {
    type MockObjectState (line 569) | struct MockObjectState {
      method MockObjectState (line 570) | MockObjectState()
    class MockObjectRegistry (line 587) | class MockObjectRegistry {
      method StateMap (line 644) | StateMap& states() { return states_; }
    function GTEST_LOCK_EXCLUDED_ (line 661) | GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
    function GTEST_LOCK_EXCLUDED_ (line 671) | GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
    function GTEST_LOCK_EXCLUDED_ (line 678) | GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
    function GTEST_LOCK_EXCLUDED_ (line 685) | GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
    function GTEST_LOCK_EXCLUDED_ (line 692) | GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
    function GTEST_LOCK_EXCLUDED_ (line 701) | GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
    function GTEST_LOCK_EXCLUDED_ (line 711) | GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
    function GTEST_LOCK_EXCLUDED_ (line 720) | GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
    function GTEST_LOCK_EXCLUDED_ (line 729) | GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
    function GTEST_EXCLUSIVE_LOCK_REQUIRED_ (line 739) | GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex) {
    function GTEST_LOCK_EXCLUDED_ (line 766) | GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
    function GTEST_LOCK_EXCLUDED_ (line 776) | GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
    function GTEST_EXCLUSIVE_LOCK_REQUIRED_ (line 799) | GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex) {
    function GTEST_EXCLUSIVE_LOCK_REQUIRED_ (line 817) | GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex) {

FILE: src/third-party/googletest-1.8.1/googlemock/src/gmock.cc
  type testing (line 34) | namespace testing {
    type internal (line 57) | namespace internal {
      function ParseGoogleMockBoolFlag (line 97) | static bool ParseGoogleMockBoolFlag(const char* str, const char* flag,
      function ParseGoogleMockStringFlag (line 116) | static bool ParseGoogleMockStringFlag(const char* str, const char* f...
      function ParseGoogleMockIntFlag (line 129) | static bool ParseGoogleMockIntFlag(const char* str, const char* flag,
      function InitGoogleMockImpl (line 147) | void InitGoogleMockImpl(int* argc, CharType** argv) {
    function GTEST_API_ (line 194) | GTEST_API_ void InitGoogleMock(int* argc, char** argv) {
    function GTEST_API_ (line 200) | GTEST_API_ void InitGoogleMock(int* argc, wchar_t** argv) {

FILE: src/third-party/googletest-1.8.1/googlemock/src/gmock_main.cc
  function GTEST_API_ (line 46) | GTEST_API_ int main(int argc, char** argv) {

FILE: src/third-party/googletest-1.8.1/googlemock/test/gmock-actions_test.cc
  function TEST (line 91) | TEST(BuiltInDefaultValueTest, IsNullForPointerTypes) {
  function TEST (line 98) | TEST(BuiltInDefaultValueTest, ExistsForPointerTypes) {
  function TEST (line 106) | TEST(BuiltInDefaultValueTest, IsZeroForNumericTypes) {
  function TEST (line 138) | TEST(BuiltInDefaultValueTest, ExistsForNumericTypes) {
  function TEST (line 165) | TEST(BuiltInDefaultValueTest, IsFalseForBool) {
  function TEST (line 170) | TEST(BuiltInDefaultValueTest, BoolExists) {
  function TEST (line 176) | TEST(BuiltInDefaultValueTest, IsEmptyStringForString) {
  function TEST (line 186) | TEST(BuiltInDefaultValueTest, ExistsForString) {
  function TEST (line 196) | TEST(BuiltInDefaultValueTest, WorksForConstTypes) {
  class MyDefaultConstructible (line 204) | class MyDefaultConstructible {
    method MyDefaultConstructible (line 206) | MyDefaultConstructible() : value_(42) {}
    method value (line 208) | int value() const { return value_; }
  class MyNonDefaultConstructible (line 215) | class MyNonDefaultConstructible {
    method MyNonDefaultConstructible (line 218) | explicit MyNonDefaultConstructible(int a_value) : value_(a_value) {}
    method value (line 220) | int value() const { return value_; }
  function TEST (line 228) | TEST(BuiltInDefaultValueTest, ExistsForDefaultConstructibleType) {
  function TEST (line 232) | TEST(BuiltInDefaultValueTest, IsDefaultConstructedForDefaultConstructibl...
  function TEST (line 238) | TEST(BuiltInDefaultValueTest, DoesNotExistForNonDefaultConstructibleType) {
  function TEST (line 243) | TEST(BuiltInDefaultValueDeathTest, IsUndefinedForReferences) {
  function TEST (line 252) | TEST(BuiltInDefaultValueDeathTest, IsUndefinedForNonDefaultConstructible...
  function TEST (line 259) | TEST(DefaultValueTest, IsInitiallyUnset) {
  function TEST (line 266) | TEST(DefaultValueTest, CanBeSetAndUnset) {
  function TEST (line 293) | TEST(DefaultValueDeathTest, GetReturnsBuiltInDefaultValueWhenUnset) {
  function TEST (line 307) | TEST(DefaultValueTest, GetWorksForMoveOnlyIfSet) {
  function TEST (line 320) | TEST(DefaultValueTest, GetWorksForVoid) {
  function TEST (line 327) | TEST(DefaultValueOfReferenceTest, IsInitiallyUnset) {
  function TEST (line 334) | TEST(DefaultValueOfReferenceTest, IsInitiallyNotExisting) {
  function TEST (line 341) | TEST(DefaultValueOfReferenceTest, CanBeSetAndUnset) {
  function TEST (line 366) | TEST(DefaultValueOfReferenceDeathTest, GetReturnsBuiltInDefaultValueWhen...
  class MyActionImpl (line 383) | class MyActionImpl : public ActionInterface<MyGlobalFunction> {
    method Perform (line 385) | virtual int Perform(const tuple<bool, int>& args) {
  function TEST (line 390) | TEST(ActionInterfaceTest, CanBeImplementedByDefiningPerform) {
  function TEST (line 395) | TEST(ActionInterfaceTest, MakeAction) {
  function TEST (line 408) | TEST(ActionTest, CanBeConstructedFromActionInterface) {
  function TEST (line 413) | TEST(ActionTest, DelegatesWorkToActionInterface) {
  function TEST (line 421) | TEST(ActionTest, IsCopyable) {
  class IsNotZero (line 447) | class IsNotZero : public ActionInterface<bool(int)> {  // NOLINT
    method Perform (line 449) | virtual bool Perform(const tuple<int>& arg) {
  function TEST (line 460) | TEST(ActionTest, CanBeConvertedToOtherActionType) {
  class ReturnSecondArgumentAction (line 472) | class ReturnSecondArgumentAction {
    method Result (line 478) | Result Perform(const ArgumentTuple& args) { return get<1>(args); }
  class ReturnZeroFromNullaryFunctionAction (line 483) | class ReturnZeroFromNullaryFunctionAction {
    method Result (line 493) | Result Perform(const tuple<>&) const { return 0; }
  function ReturnSecondArgument (line 499) | PolymorphicAction<ReturnSecondArgumentAction> ReturnSecondArgument() {
  function ReturnZeroFromNullaryFunction (line 503) | PolymorphicAction<ReturnZeroFromNullaryFunctionAction>
  function TEST (line 510) | TEST(MakePolymorphicActionTest, ConstructsActionFromImpl) {
  function TEST (line 517) | TEST(MakePolymorphicActionTest, WorksWhenPerformHasOneTemplateParameter) {
  function TEST (line 527) | TEST(ReturnTest, WorksForVoid) {
  function TEST (line 533) | TEST(ReturnTest, ReturnsGivenValue) {
  function TEST (line 542) | TEST(ReturnTest, AcceptsStringLiteral) {
  type IntegerVectorWrapper (line 552) | struct IntegerVectorWrapper {
    method IntegerVectorWrapper (line 554) | IntegerVectorWrapper(std::vector<int>& _v) : v(&_v) {}
  function TEST (line 558) | TEST(ReturnTest, SupportsWrapperReturnType) {
  type Base (line 572) | struct Base {
  type Derived (line 576) | struct Derived : public Base {
  function TEST (line 580) | TEST(ReturnTest, IsCovariant) {
  class FromType (line 594) | class FromType {
    method FromType (line 596) | explicit FromType(bool* is_converted) : converted_(is_converted) {}
  class ToType (line 605) | class ToType {
    method ToType (line 608) | ToType(const FromType& x) { *x.converted() = true; }
  function TEST (line 611) | TEST(ReturnTest, ConvertsArgumentWhenConverted) {
  class DestinationType (line 623) | class DestinationType {}
  class SourceType (line 625) | class SourceType {
  function TEST (line 631) | TEST(ReturnTest, CanConvertArgumentUsingNonConstTypeCastOperator) {
  function TEST (line 637) | TEST(ReturnNullTest, WorksInPointerReturningFunction) {
  function TEST (line 648) | TEST(ReturnNullTest, WorksInSmartPointerReturningFunction) {
  function TEST (line 658) | TEST(ReturnRefTest, WorksForReference) {
  function TEST (line 666) | TEST(ReturnRefTest, IsCovariant) {
  function TEST (line 677) | TEST(ReturnRefOfCopyTest, WorksForReference) {
  function TEST (line 690) | TEST(ReturnRefOfCopyTest, IsCovariant) {
  class MockClass (line 702) | class MockClass {
    method MockClass (line 704) | MockClass() {}
  function TEST (line 723) | TEST(DoDefaultTest, ReturnsBuiltInDefaultValueByDefault) {
  function TEST (line 732) | TEST(DoDefaultDeathTest, DiesForUnknowType) {
  function VoidFunc (line 748) | void VoidFunc(bool /* flag */) {}
  function TEST (line 750) | TEST(DoDefaultDeathTest, DiesIfUsedInCompositeAction) {
  function TEST (line 767) | TEST(DoDefaultTest, ReturnsUserSpecifiedPerTypeDefaultValueWhenThereIsOn...
  function TEST (line 777) | TEST(DoDefaultTest, DoesWhatOnCallSpecifies) {
  function TEST (line 787) | TEST(DoDefaultTest, CannotBeUsedInOnCall) {
  function TEST (line 797) | TEST(SetArgPointeeTest, SetsTheNthPointee) {
  function TEST (line 818) | TEST(SetArgPointeeTest, AcceptsStringLiteral) {
  function TEST (line 834) | TEST(SetArgPointeeTest, AcceptsWideStringLiteral) {
  function TEST (line 854) | TEST(SetArgPointeeTest, AcceptsCharPointer) {
  function TEST (line 873) | TEST(SetArgPointeeTest, AcceptsWideCharPointer) {
  function TEST (line 895) | TEST(SetArgumentPointeeTest, SetsTheNthPointee) {
  function Nullary (line 914) | int Nullary() { return 1; }
  class NullaryFunctor (line 916) | class NullaryFunctor {
  function VoidNullary (line 922) | void VoidNullary() { g_done = true; }
  class VoidNullaryFunctor (line 924) | class VoidNullaryFunctor {
  class Foo (line 929) | class Foo {
    method Foo (line 931) | Foo() : value_(123) {}
    method Nullary (line 933) | int Nullary() const { return value_; }
  function TEST (line 940) | TEST(InvokeWithoutArgsTest, Function) {
  function TEST (line 957) | TEST(InvokeWithoutArgsTest, Functor) {
  function TEST (line 975) | TEST(InvokeWithoutArgsTest, Method) {
  function TEST (line 983) | TEST(IgnoreResultTest, PolymorphicAction) {
  function ReturnOne (line 990) | int ReturnOne() {
  function TEST (line 995) | TEST(IgnoreResultTest, MonomorphicAction) {
  function MyNonDefaultConstructible (line 1004) | MyNonDefaultConstructible ReturnMyNonDefaultConstructible(double /* x */) {
    method MyNonDefaultConstructible (line 218) | explicit MyNonDefaultConstructible(int a_value) : value_(a_value) {}
    method value (line 220) | int value() const { return value_; }
  function TEST (line 1009) | TEST(IgnoreResultTest, ActionReturningClass) {
  function TEST (line 1017) | TEST(AssignTest, Int) {
  function TEST (line 1024) | TEST(AssignTest, String) {
  function TEST (line 1031) | TEST(AssignTest, CompatibleTypes) {
  class SetErrnoAndReturnTest (line 1040) | class SetErrnoAndReturnTest : public testing::Test {
    method SetUp (line 1042) | virtual void SetUp() { errno = 0; }
    method TearDown (line 1043) | virtual void TearDown() { errno = 0; }
  function TEST_F (line 1046) | TEST_F(SetErrnoAndReturnTest, Int) {
  function TEST_F (line 1052) | TEST_F(SetErrnoAndReturnTest, Ptr) {
  function TEST_F (line 1059) | TEST_F(SetErrnoAndReturnTest, CompatibleTypes) {
  function TEST (line 1070) | TEST(ByRefTest, IsCopyable) {
  function TEST (line 1093) | TEST(ByRefTest, ConstValue) {
  function TEST (line 1102) | TEST(ByRefTest, NonConstValue) {
  function TEST (line 1115) | TEST(ByRefTest, ExplicitType) {
  function TEST (line 1144) | TEST(ByRefTest, PrintsCorrectly) {
  function UniquePtrSource (line 1154) | std::unique_ptr<int> UniquePtrSource() {
  function VectorUniquePtrSource (line 1158) | std::vector<std::unique_ptr<int>> VectorUniquePtrSource() {
  function TEST (line 1164) | TEST(MockMethodTest, CanReturnMoveOnlyValue_Return) {
  function TEST (line 1186) | TEST(MockMethodTest, CanReturnMoveOnlyValue_DoAllReturn) {
  function TEST (line 1199) | TEST(MockMethodTest, CanReturnMoveOnlyValue_Invoke) {
  function TEST (line 1223) | TEST(MockMethodTest, CanTakeMoveOnlyValue) {
  function Add (line 1270) | int Add(int val, int& ref, int* ptr) {  // NOLINT
  function Deref (line 1277) | int Deref(std::unique_ptr<int> ptr) { return *ptr; }
  type Double (line 1279) | struct Double {
    method T (line 1281) | T operator()(T t) { return 2 * t; }
  function UniqueInt (line 1284) | std::unique_ptr<int> UniqueInt(int i) {
  function TEST (line 1288) | TEST(FunctorActionTest, ActionFromFunction) {
  function TEST (line 1299) | TEST(FunctorActionTest, ActionFromLambda) {
  function TEST (line 1312) | TEST(FunctorActionTest, PolymorphicFunctor) {
  function TEST (line 1319) | TEST(FunctorActionTest, TypeConversion) {
  function TEST (line 1337) | TEST(FunctorActionTest, UnusedArguments) {
  function TEST (line 1350) | TEST(MoveOnlyArgumentsTest, ReturningActions) {

FILE: src/third-party/googletest-1.8.1/googlemock/test/gmock-cardinalities_test.cc
  class MockFoo (line 52) | class MockFoo {
    method MockFoo (line 54) | MockFoo() {}
  function TEST (line 62) | TEST(CardinalityTest, IsDefaultConstructable) {
  function TEST (line 67) | TEST(CardinalityTest, IsCopyable) {
  function TEST (line 81) | TEST(CardinalityTest, IsOverSaturatedByCallCountWorks) {
  function TEST (line 90) | TEST(CardinalityTest, CanDescribeActualCallCount) {
  function TEST (line 109) | TEST(AnyNumber, Works) {
  function TEST (line 126) | TEST(AnyNumberTest, HasCorrectBounds) {
  function TEST (line 134) | TEST(AtLeastTest, OnNegativeNumber) {
  function TEST (line 140) | TEST(AtLeastTest, OnZero) {
  function TEST (line 154) | TEST(AtLeastTest, OnPositiveNumber) {
  function TEST (line 181) | TEST(AtLeastTest, HasCorrectBounds) {
  function TEST (line 189) | TEST(AtMostTest, OnNegativeNumber) {
  function TEST (line 195) | TEST(AtMostTest, OnZero) {
  function TEST (line 209) | TEST(AtMostTest, OnPositiveNumber) {
  function TEST (line 236) | TEST(AtMostTest, HasCorrectBounds) {
  function TEST (line 244) | TEST(BetweenTest, OnNegativeStart) {
  function TEST (line 250) | TEST(BetweenTest, OnNegativeEnd) {
  function TEST (line 256) | TEST(BetweenTest, OnStartBiggerThanEnd) {
  function TEST (line 263) | TEST(BetweenTest, OnZeroStartAndZeroEnd) {
  function TEST (line 278) | TEST(BetweenTest, OnZeroStartAndNonZeroEnd) {
  function TEST (line 296) | TEST(BetweenTest, OnSameStartAndEnd) {
  function TEST (line 314) | TEST(BetweenTest, OnDifferentStartAndEnd) {
  function TEST (line 335) | TEST(BetweenTest, HasCorrectBounds) {
  function TEST (line 343) | TEST(ExactlyTest, OnNegativeNumber) {
  function TEST (line 349) | TEST(ExactlyTest, OnZero) {
  function TEST (line 363) | TEST(ExactlyTest, OnPositiveNumber) {
  function TEST (line 387) | TEST(ExactlyTest, HasCorrectBounds) {
  class EvenCardinality (line 396) | class EvenCardinality : public CardinalityInterface {
    method IsSatisfiedByCallCount (line 399) | virtual bool IsSatisfiedByCallCount(int call_count) const {
    method IsSaturatedByCallCount (line 404) | virtual bool IsSaturatedByCallCount(int /* call_count */) const {
    method DescribeTo (line 409) | virtual void DescribeTo(::std::ostream* ss) const {
  function TEST (line 414) | TEST(MakeCardinalityTest, ConstructsCardinalityFromInterface) {

FILE: src/third-party/googletest-1.8.1/googlemock/test/gmock-generated-actions_test.cc
  type testing (line 43) | namespace testing {
    type gmock_generated_actions_test (line 44) | namespace gmock_generated_actions_test {
      function Short (line 66) | inline short Short(short n) { return n; }
      function Char (line 67) | inline char Char(char ch) { return ch; }
      function Nullary (line 70) | int Nullary() { return 1; }
      class NullaryFunctor (line 72) | class NullaryFunctor {
      function Unary (line 79) | bool Unary(int x) { return x < 0; }
      function ByConstRef (line 83) | bool ByConstRef(const std::string& s) { return s == "Hi"; }
      function ReferencesGlobalDouble (line 86) | bool ReferencesGlobalDouble(const double& x) { return &x == &g_doubl...
      function ByNonConstRef (line 88) | std::string ByNonConstRef(std::string& s) { return s += "+"; }
      type UnaryFunctor (line 90) | struct UnaryFunctor {
      function VoidBinary (line 96) | void VoidBinary(int, char) { g_done = true; }
      function Ternary (line 98) | int Ternary(int x, char y, short z) { return x + y + z; }
      function VoidTernary (line 100) | void VoidTernary(int, char, bool) { g_done = true; }
      function SumOf4 (line 102) | int SumOf4(int a, int b, int c, int d) { return a + b + c + d; }
      function Concat4 (line 104) | std::string Concat4(const char* s1, const char* s2, const char* s3,
      function SumOf5 (line 109) | int SumOf5(int a, int b, int c, int d, int e) { return a + b + c + d...
      type SumOf5Functor (line 111) | struct SumOf5Functor {
      function Concat5 (line 117) | std::string Concat5(const char* s1, const char* s2, const char* s3,
      function SumOf6 (line 122) | int SumOf6(int a, int b, int c, int d, int e, int f) {
      type SumOf6Functor (line 126) | struct SumOf6Functor {
      function Concat6 (line 132) | std::string Concat6(const char* s1, const char* s2, const char* s3,
      function Concat7 (line 137) | std::string Concat7(const char* s1, const char* s2, const char* s3,
      function Concat8 (line 143) | std::string Concat8(const char* s1, const char* s2, const char* s3,
      function Concat9 (line 149) | std::string Concat9(const char* s1, const char* s2, const char* s3,
      function Concat10 (line 155) | std::string Concat10(const char* s1, const char* s2, const char* s3,
      function TEST (line 169) | TEST(InvokeArgumentTest, Function0) {
      function TEST (line 175) | TEST(InvokeArgumentTest, Functor1) {
      function TEST (line 181) | TEST(InvokeArgumentTest, Function5) {
      function TEST (line 188) | TEST(InvokeArgumentTest, Functor5) {
      function TEST (line 195) | TEST(InvokeArgumentTest, Function6) {
      function TEST (line 202) | TEST(InvokeArgumentTest, Functor6) {
      function TEST (line 209) | TEST(InvokeArgumentTest, Function7) {
      function TEST (line 218) | TEST(InvokeArgumentTest, Function8) {
      function TEST (line 227) | TEST(InvokeArgumentTest, Function9) {
      function TEST (line 236) | TEST(InvokeArgumentTest, Function10) {
      function TEST (line 245) | TEST(InvokeArgumentTest, ByPointerFunction) {
      function TEST (line 253) | TEST(InvokeArgumentTest, FunctionWithCStringLiteral) {
      function TEST (line 260) | TEST(InvokeArgumentTest, ByConstReferenceFunction) {
      function TEST (line 271) | TEST(InvokeArgumentTest, ByExplicitConstReferenceFunction) {
      function TEST (line 283) | TEST(WithArgsTest, OneArg) {
      function TEST (line 290) | TEST(WithArgsTest, TwoArgs) {
      function TEST (line 298) | TEST(WithArgsTest, ThreeArgs) {
      function TEST (line 305) | TEST(WithArgsTest, FourArgs) {
      function TEST (line 314) | TEST(WithArgsTest, FiveArgs) {
      function TEST (line 324) | TEST(WithArgsTest, SixArgs) {
      function TEST (line 332) | TEST(WithArgsTest, SevenArgs) {
      function TEST (line 341) | TEST(WithArgsTest, EightArgs) {
      function TEST (line 350) | TEST(WithArgsTest, NineArgs) {
      function TEST (line 359) | TEST(WithArgsTest, TenArgs) {
      class SubstractAction (line 368) | class SubstractAction : public ActionInterface<int(int, int)> {  // ...
        method Perform (line 370) | virtual int Perform(const tuple<int, int>& args) {
      function TEST (line 375) | TEST(WithArgsTest, NonInvokeAction) {
      function TEST (line 383) | TEST(WithArgsTest, Identity) {
      function TEST (line 390) | TEST(WithArgsTest, RepeatedArguments) {
      function TEST (line 397) | TEST(WithArgsTest, ReversedArgumentOrder) {
      function TEST (line 405) | TEST(WithArgsTest, ArgsOfCompatibleTypes) {
      function TEST (line 412) | TEST(WithArgsTest, VoidAction) {
      function TEST (line 420) | TEST(DoAllTest, TwoActions) {
      function TEST (line 429) | TEST(DoAllTest, ThreeActions) {
      function TEST (line 440) | TEST(DoAllTest, FourActions) {
      function TEST (line 455) | TEST(DoAllTest, FiveActions) {
      function TEST (line 472) | TEST(DoAllTest, SixActions) {
      function TEST (line 491) | TEST(DoAllTest, SevenActions) {
      function TEST (line 512) | TEST(DoAllTest, EightActions) {
      function TEST (line 536) | TEST(DoAllTest, NineActions) {
      function TEST (line 562) | TEST(DoAllTest, TenActions) {
      function ACTION (line 604) | ACTION(Return5) { return 5; }
      function TEST (line 606) | TEST(ActionMacroTest, WorksWhenNotReferencingArguments) {
      function ACTION (line 615) | ACTION(IncrementArg1) { (*arg1)++; }
      function TEST (line 617) | TEST(ActionMacroTest, WorksWhenReturningVoid) {
      function ACTION (line 626) | ACTION(IncrementArg2) {
      function TEST (line 632) | TEST(ActionMacroTest, CanReferenceArgumentType) {
      function ACTION (line 641) | ACTION(Sum2) {
      function TEST (line 647) | TEST(ActionMacroTest, CanReferenceArgumentTuple) {
      function Dummy (line 655) | int Dummy(bool flag) { return flag? 1 : 0; }
      function ACTION (line 657) | ACTION(InvokeDummy) {
      function TEST (line 663) | TEST(ActionMacroTest, CanReferenceMockFunctionType) {
      function ACTION (line 671) | ACTION(InvokeDummy2) {
      function TEST (line 677) | TEST(ActionMacroTest, CanReferenceMockFunctionReturnType) {
      function ACTION (line 684) | ACTION(ReturnAddrOfConstBoolReferenceArg) {
      function TEST (line 689) | TEST(ActionMacroTest, WorksForConstReferenceArg) {
      function ACTION (line 696) | ACTION(ReturnAddrOfIntReferenceArg) {
      function TEST (line 701) | TEST(ActionMacroTest, WorksForNonConstReferenceArg) {
      type action_test (line 708) | namespace action_test {
        function ACTION (line 709) | ACTION(Sum) { return arg0 + arg1; }
      function TEST (line 712) | TEST(ActionMacroTest, WorksInNamespace) {
      function ACTION (line 719) | ACTION(PlusTwo) { return arg0 + 2; }
      function TEST (line 721) | TEST(ActionMacroTest, WorksForDifferentArgumentNumbers) {
      function ACTION_P (line 731) | ACTION_P(Plus, n) { return arg0 + n; }
      function TEST (line 733) | TEST(ActionPMacroTest, DefinesParameterizedAction) {
      function ACTION_P (line 740) | ACTION_P(TypedPlus, n) {
      function TEST (line 746) | TEST(ActionPMacroTest, CanReferenceArgumentAndParameterTypes) {
      function TEST (line 753) | TEST(ActionPMacroTest, WorksInCompatibleMockFunction) {
      function ACTION (line 763) | ACTION(OverloadedAction) { return arg0 ? arg1 : "hello"; }
      function ACTION_P (line 765) | ACTION_P(OverloadedAction, default_value) {
      function ACTION_P2 (line 769) | ACTION_P2(OverloadedAction, true_value, false_value) {
      function TEST (line 773) | TEST(ActionMacroTest, CanDefineOverloadedActions) {
      function ACTION_P3 (line 791) | ACTION_P3(Plus, m, n, k) { return arg0 + m + n + k; }
      function TEST (line 793) | TEST(ActionPnMacroTest, WorksFor3Parameters) {
      function ACTION_P4 (line 803) | ACTION_P4(Plus, p0, p1, p2, p3) { return arg0 + p0 + p1 + p2 + p3; }
      function TEST (line 805) | TEST(ActionPnMacroTest, WorksFor4Parameters) {
      function ACTION_P5 (line 810) | ACTION_P5(Plus, p0, p1, p2, p3, p4) { return arg0 + p0 + p1 + p2 + p...
      function TEST (line 812) | TEST(ActionPnMacroTest, WorksFor5Parameters) {
      function ACTION_P6 (line 817) | ACTION_P6(Plus, p0, p1, p2, p3, p4, p5) {
      function TEST (line 821) | TEST(ActionPnMacroTest, WorksFor6Parameters) {
      function ACTION_P7 (line 826) | ACTION_P7(Plus, p0, p1, p2, p3, p4, p5, p6) {
      function TEST (line 830) | TEST(ActionPnMacroTest, WorksFor7Parameters) {
      function ACTION_P8 (line 835) | ACTION_P8(Plus, p0, p1, p2, p3, p4, p5, p6, p7) {
      function TEST (line 839) | TEST(ActionPnMacroTest, WorksFor8Parameters) {
      function ACTION_P9 (line 844) | ACTION_P9(Plus, p0, p1, p2, p3, p4, p5, p6, p7, p8) {
      function TEST (line 848) | TEST(ActionPnMacroTest, WorksFor9Parameters) {
      function ACTION_P10 (line 853) | ACTION_P10(Plus, p0, p1, p2, p3, p4, p5, p6, p7, p8, last_param) {
      function TEST (line 859) | TEST(ActionPnMacroTest, WorksFor10Parameters) {
      function ACTION_P2 (line 867) | ACTION_P2(PadArgument, prefix, suffix) {
      function TEST (line 874) | TEST(ActionPnMacroTest, SimpleTypePromotion) {
      function ACTION_P3 (line 888) | ACTION_P3(ConcatImpl, a, b, c) {
      function Concat (line 903) | ConcatImplActionP3<std::string, T1, T2>
      function Concat (line 922) | ConcatImplActionP3<T1, int, T2>
      function TEST (line 927) | TEST(ActionPnMacroTest, CanPartiallyRestrictParameterTypes) {
      function ACTION (line 937) | ACTION(DoFoo) {}
      function ACTION_P (line 938) | ACTION_P(DoFoo, p) {}
      function ACTION_P2 (line 939) | ACTION_P2(DoFoo, p0, p1) {}
      function TEST (line 941) | TEST(ActionPnMacroTest, TypesAreCorrect) {
      function ACTION_P (line 981) | ACTION_P(Plus1, x) { return x; }
      function ACTION_P2 (line 982) | ACTION_P2(Plus2, x, y) { return x + y; }
      function ACTION_P3 (line 983) | ACTION_P3(Plus3, x, y, z) { return x + y + z; }
      function ACTION_P10 (line 984) | ACTION_P10(Plus10, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
      function TEST (line 988) | TEST(ActionPnMacroTest, CanExplicitlyInstantiateWithReferenceTypes) {
      class NullaryConstructorClass (line 1008) | class NullaryConstructorClass {
        method NullaryConstructorClass (line 1010) | NullaryConstructorClass() : value_(123) {}
      function TEST (line 1015) | TEST(ReturnNewTest, NoArgs) {
      class UnaryConstructorClass (line 1022) | class UnaryConstructorClass {
        method UnaryConstructorClass (line 1024) | explicit UnaryConstructorClass(int value) : value_(value) {}
      function TEST (line 1029) | TEST(ReturnNewTest, Unary) {
      function TEST (line 1036) | TEST(ReturnNewTest, UnaryWorksWhenMockMethodHasArgs) {
      function TEST (line 1044) | TEST(ReturnNewTest, UnaryWorksWhenMockMethodReturnsPointerToConst) {
      class TenArgConstructorClass (line 1052) | class TenArgConstructorClass {
        method TenArgConstructorClass (line 1054) | TenArgConstructorClass(int a1, int a2, int a3, int a4, int a5,
      function TEST (line 1062) | TEST(ReturnNewTest, ConstructorThatTakes10Arguments) {
      function TEST (line 1079) | TEST(ActionTemplateTest, WorksWithoutValueParam) {
      function TEST (line 1092) | TEST(ActionTemplateTest, WorksWithValueParams) {
      function ACTION_TEMPLATE (line 1100) | ACTION_TEMPLATE(MyDeleteArg,
      class BoolResetter (line 1107) | class BoolResetter {
        method BoolResetter (line 1109) | explicit BoolResetter(bool* value) : value_(value) {}
      function TEST (line 1115) | TEST(ActionTemplateTest, WorksForIntegralTemplateParams) {
      function TEST (line 1132) | TEST(ActionTemplateTest, WorksForTemplateTemplateParameters) {
      type GiantTemplate (line 1142) | struct GiantTemplate {
        method GiantTemplate (line 1144) | explicit GiantTemplate(int a_value) : value(a_value) {}
    function TEST (line 1164) | TEST(ActionTemplateTest, WorksFor10TemplateParameters) {
    function TEST (line 1181) | TEST(ActionTemplateTest, WorksFor10ValueParameters) {
    function ACTION (line 1189) | ACTION(ReturnSum) { return 0; }
    function ACTION_P (line 1191) | ACTION_P(ReturnSum, x) { return x; }
    function TEST (line 1211) | TEST(ActionTemplateTest, CanBeOverloadedOnNumberOfValueParameters) {

FILE: src/third-party/googletest-1.8.1/googlemock/test/gmock-generated-function-mockers_test.cc
  type testing (line 56) | namespace testing {
    type gmock_generated_function_mockers_test (line 57) | namespace gmock_generated_function_mockers_test {
      class FooInterface (line 73) | class FooInterface {
      class MockFoo (line 122) | class MockFoo : public FooInterface {
        method MockFoo (line 124) | MockFoo() {}
      class FunctionMockerTest (line 183) | class FunctionMockerTest : public testing::Test {
        method FunctionMockerTest (line 185) | FunctionMockerTest() : foo_(&mock_foo_) {}
      function TEST_F (line 192) | TEST_F(FunctionMockerTest, MocksVoidFunction) {
      function TEST_F (line 198) | TEST_F(FunctionMockerTest, MocksNullaryFunction) {
      function TEST_F (line 208) | TEST_F(FunctionMockerTest, MocksUnaryFunction) {
      function TEST_F (line 218) | TEST_F(FunctionMockerTest, MocksBinaryFunction) {
      function TEST_F (line 226) | TEST_F(FunctionMockerTest, MocksDecimalFunction) {
      function TEST_F (line 235) | TEST_F(FunctionMockerTest, MocksFunctionWithNonConstReferenceArgumen...
      function TEST_F (line 244) | TEST_F(FunctionMockerTest, MocksFunctionWithConstReferenceArgument) {
      function TEST_F (line 254) | TEST_F(FunctionMockerTest, MocksFunctionWithConstArgument) {
      function TEST_F (line 263) | TEST_F(FunctionMockerTest, MocksFunctionsOverloadedOnArgumentNumber) {
      function TEST_F (line 274) | TEST_F(FunctionMockerTest, MocksFunctionsOverloadedOnArgumentType) {
      function TEST_F (line 285) | TEST_F(FunctionMockerTest, MocksFunctionsOverloadedOnConstnessOfThis) {
      function TEST_F (line 294) | TEST_F(FunctionMockerTest, MocksReturnTypeWithComma) {
      function TEST_F (line 307) | TEST_F(FunctionMockerTest, MocksNullaryFunctionWithCallType) {
      function TEST_F (line 317) | TEST_F(FunctionMockerTest, MocksUnaryFunctionWithCallType) {
      function TEST_F (line 328) | TEST_F(FunctionMockerTest, MocksDecimalFunctionWithCallType) {
      function TEST_F (line 337) | TEST_F(FunctionMockerTest, MocksFunctionsConstFunctionWithCallType) {
      function TEST_F (line 344) | TEST_F(FunctionMockerTest, MocksReturnTypeWithCommaAndCallType) {
      class MockB (line 354) | class MockB {
        method MockB (line 356) | MockB() {}
      function TEST (line 366) | TEST(ExpectCallTest, UnmentionedFunctionCanBeCalledAnyNumberOfTimes) {
      class StackInterface (line 386) | class StackInterface {
      class MockStack (line 399) | class MockStack : public StackInterface<T> {
        method MockStack (line 401) | MockStack() {}
      function TEST (line 417) | TEST(TemplateMockTest, Works) {
      function TEST (line 439) | TEST(TemplateMockTest, MethodWithCommaInReturnTypeWorks) {
      class StackInterfaceWithCallType (line 456) | class StackInterfaceWithCallType {
      class MockStackWithCallType (line 469) | class MockStackWithCallType : public StackInterfaceWithCallType<T> {
        method MockStackWithCallType (line 471) | MockStackWithCallType() {}
      function TEST (line 483) | TEST(TemplateMockTestWithCallType, Works) {
      class MockOverloadedOnArgNumber (line 511) | class MockOverloadedOnArgNumber {
        method MockOverloadedOnArgNumber (line 513) | MockOverloadedOnArgNumber() {}
      function TEST (line 521) | TEST(OverloadedMockMethodTest, CanOverloadOnArgNumberInMacroBody) {
      class MockOverloadedOnConstness (line 536) | class MockOverloadedOnConstness {
        method MockOverloadedOnConstness (line 538) | MockOverloadedOnConstness() {}
      function TEST (line 546) | TEST(OverloadedMockMethodTest, CanOverloadOnConstnessInMacroBody) {
      function TEST (line 556) | TEST(MockFunctionTest, WorksForVoidNullary) {
      function TEST (line 562) | TEST(MockFunctionTest, WorksForNonVoidNullary) {
      function TEST (line 571) | TEST(MockFunctionTest, WorksForVoidUnary) {
      function TEST (line 577) | TEST(MockFunctionTest, WorksForNonVoidBinary) {
      function TEST (line 589) | TEST(MockFunctionTest, WorksFor10Arguments) {
      function TEST (line 600) | TEST(MockFunctionTest, AsStdFunction) {
      function TEST (line 611) | TEST(MockFunctionTest, AsStdFunctionReturnsReference) {
      type MockMethodSizes0 (line 622) | struct MockMethodSizes0 {
      type MockMethodSizes1 (line 625) | struct MockMethodSizes1 {
      type MockMethodSizes2 (line 628) | struct MockMethodSizes2 {
      type MockMethodSizes3 (line 631) | struct MockMethodSizes3 {
      type MockMethodSizes4 (line 634) | struct MockMethodSizes4 {
      function TEST (line 638) | TEST(MockFunctionTest, MockMethodSizeOverhead) {

FILE: src/third-party/googletest-1.8.1/googlemock/test/gmock-generated-internal-utils_test.cc
  function TEST (line 50) | TEST(MatcherTupleTest, ForSize0) {
  function TEST (line 54) | TEST(MatcherTupleTest, ForSize1) {
  function TEST (line 59) | TEST(MatcherTupleTest, ForSize2) {
  function TEST (line 64) | TEST(MatcherTupleTest, ForSize5) {
  function TEST (line 73) | TEST(FunctionTest, Nullary) {
  function TEST (line 82) | TEST(FunctionTest, Unary) {
  function TEST (line 93) | TEST(FunctionTest, Binary) {
  function TEST (line 107) | TEST(FunctionTest, LongArgumentList) {

FILE: src/third-party/googletest-1.8.1/googlemock/test/gmock-generated-matchers_test.cc
  function Describe (line 96) | std::string Describe(const Matcher<T>& m) {
  function DescribeNegation (line 104) | std::string DescribeNegation(const Matcher<T>& m) {
  function Explain (line 112) | std::string Explain(const MatcherType& m, const Value& x) {
  function TEST (line 120) | TEST(ArgsTest, AcceptsZeroTemplateArg) {
  function TEST (line 126) | TEST(ArgsTest, AcceptsOneTemplateArg) {
  function TEST (line 133) | TEST(ArgsTest, AcceptsTwoTemplateArgs) {
  function TEST (line 141) | TEST(ArgsTest, AcceptsRepeatedTemplateArgs) {
  function TEST (line 147) | TEST(ArgsTest, AcceptsDecreasingTemplateArgs) {
  function TEST (line 167) | TEST(ArgsTest, AcceptsMoreTemplateArgsThanArityOfOriginalTuple) {
  function TEST (line 172) | TEST(ArgsTest, CanBeNested) {
  function TEST (line 178) | TEST(ArgsTest, CanMatchTupleByValue) {
  function TEST (line 185) | TEST(ArgsTest, CanMatchTupleByReference) {
  function TEST (line 197) | TEST(ArgsTest, AcceptsTenTemplateArgs) {
  function TEST (line 206) | TEST(ArgsTest, DescirbesSelfCorrectly) {
  function TEST (line 213) | TEST(ArgsTest, DescirbesNestedArgsCorrectly) {
  function TEST (line 221) | TEST(ArgsTest, DescribesNegationCorrectly) {
  function TEST (line 228) | TEST(ArgsTest, ExplainsMatchResultWithoutInnerExplanation) {
  class LessThanMatcher (line 237) | class LessThanMatcher : public MatcherInterface<tuple<char, int> > {
    method DescribeTo (line 239) | virtual void DescribeTo(::std::ostream* os) const {}
    method MatchAndExplain (line 241) | virtual bool MatchAndExplain(tuple<char, int> value,
  function LessThan (line 252) | Matcher<tuple<char, int> > LessThan() {
  function TEST (line 256) | TEST(ArgsTest, ExplainsMatchResultWithInnerExplanation) {
  class GreaterThanMatcher (line 266) | class GreaterThanMatcher : public MatcherInterface<int> {
    method GreaterThanMatcher (line 268) | explicit GreaterThanMatcher(int rhs) : rhs_(rhs) {}
    method DescribeTo (line 270) | virtual void DescribeTo(::std::ostream* os) const {
    method MatchAndExplain (line 274) | virtual bool MatchAndExplain(int lhs,
  function GreaterThan (line 292) | Matcher<int> GreaterThan(int n) {
  function TEST (line 298) | TEST(ElementsAreTest, CanDescribeExpectingNoElement) {
  function TEST (line 303) | TEST(ElementsAreTest, CanDescribeExpectingOneElement) {
  function TEST (line 308) | TEST(ElementsAreTest, CanDescribeExpectingManyElements) {
  function TEST (line 315) | TEST(ElementsAreTest, CanDescribeNegationOfExpectingNoElement) {
  function TEST (line 320) | TEST(ElementsAreTest, CanDescribeNegationOfExpectingOneElment) {
  function TEST (line 326) | TEST(ElementsAreTest, CanDescribeNegationOfExpectingManyElements) {
  function TEST (line 333) | TEST(ElementsAreTest, DoesNotExplainTrivialMatch) {
  function TEST (line 342) | TEST(ElementsAreTest, ExplainsNonTrivialMatch) {
  function TEST (line 353) | TEST(ElementsAreTest, CanExplainMismatchWrongSize) {
  function TEST (line 364) | TEST(ElementsAreTest, CanExplainMismatchRightSize) {
  function TEST (line 377) | TEST(ElementsAreTest, MatchesOneElementVector) {
  function TEST (line 384) | TEST(ElementsAreTest, MatchesOneElementList) {
  function TEST (line 391) | TEST(ElementsAreTest, MatchesThreeElementVector) {
  function TEST (line 400) | TEST(ElementsAreTest, MatchesOneElementEqMatcher) {
  function TEST (line 407) | TEST(ElementsAreTest, MatchesOneElementAnyMatcher) {
  function TEST (line 414) | TEST(ElementsAreTest, MatchesOneElementValue) {
  function TEST (line 421) | TEST(ElementsAreTest, MatchesThreeElementsMixedMatchers) {
  function TEST (line 430) | TEST(ElementsAreTest, MatchesTenElementVector) {
  function TEST (line 440) | TEST(ElementsAreTest, DoesNotMatchWrongSize) {
  function TEST (line 449) | TEST(ElementsAreTest, DoesNotMatchWrongValue) {
  function TEST (line 457) | TEST(ElementsAreTest, DoesNotMatchWrongOrder) {
  function TEST (line 468) | TEST(ElementsAreTest, WorksForNestedContainer) {
  function TEST (line 485) | TEST(ElementsAreTest, WorksWithByRefElementMatchers) {
  function TEST (line 493) | TEST(ElementsAreTest, WorksWithContainerPointerUsingPointee) {
  function TEST (line 501) | TEST(ElementsAreTest, WorksWithNativeArrayPassedByReference) {
  class NativeArrayPassedAsPointerAndSize (line 508) | class NativeArrayPassedAsPointerAndSize {
    method NativeArrayPassedAsPointerAndSize (line 510) | NativeArrayPassedAsPointerAndSize() {}
  function TEST (line 518) | TEST(ElementsAreTest, WorksWithNativeArrayPassedAsPointerAndSize) {
  function TEST (line 530) | TEST(ElementsAreTest, WorksWithTwoDimensionalNativeArray) {
  function TEST (line 539) | TEST(ElementsAreTest, AcceptsStringLiteral) {
  function TEST (line 555) | TEST(ElementsAreTest, AcceptsArrayWithUnknownSize) {
  function TEST (line 570) | TEST(ElementsAreTest, MakesCopyOfArguments) {
  function TEST (line 589) | TEST(ElementsAreArrayTest, CanBeCreatedWithValueArray) {
  function TEST (line 599) | TEST(ElementsAreArrayTest, CanBeCreatedWithArraySize) {
  function TEST (line 610) | TEST(ElementsAreArrayTest, CanBeCreatedWithoutArraySize) {
  function TEST (line 620) | TEST(ElementsAreArrayTest, CanBeCreatedWithMatcherArray) {
  function TEST (line 634) | TEST(ElementsAreArrayTest, CanBeCreatedWithVector) {
  function TEST (line 645) | TEST(ElementsAreArrayTest, TakesInitializerList) {
  function TEST (line 652) | TEST(ElementsAreArrayTest, TakesInitializerListOfCStrings) {
  function TEST (line 659) | TEST(ElementsAreArrayTest, TakesInitializerListOfSameTypedMatchers) {
  function TEST (line 667) | TEST(ElementsAreArrayTest,
  function TEST (line 681) | TEST(ElementsAreArrayTest, CanBeCreatedWithMatcherVector) {
  function TEST (line 692) | TEST(ElementsAreArrayTest, CanBeCreatedWithIteratorRange) {
  function TEST (line 707) | TEST(ElementsAreArrayTest, WorksWithNativeArray) {
  function TEST (line 716) | TEST(ElementsAreArrayTest, SourceLifeSpan) {
  function TEST (line 738) | TEST(MatcherMacroTest, Works) {
  function TEST (line 782) | TEST(MatcherMacroTest, DescriptionCanReferenceNegationAndParameters) {
  function TEST (line 793) | TEST(MatcherMacroTest, CanExplainMatchResult) {
  function TEST (line 816) | TEST(MatcherMacroTest, CanReferenceArgType) {
  type matcher_test (line 826) | namespace matcher_test {
  function TEST (line 830) | TEST(MatcherMacroTest, WorksInNamespace) {
  function TEST (line 841) | TEST(MatcherMacroTest, CanBeComposedUsingValue) {
  function TEST (line 851) | TEST(MatcherPMacroTest, Works) {
  function TEST (line 865) | TEST(MatcherPMacroTest, GeneratesCorrectDescription) {
  class UncopyableFoo (line 877) | class UncopyableFoo {
    method UncopyableFoo (line 879) | explicit UncopyableFoo(char value) : value_(value) {}
  function TEST (line 889) | TEST(MatcherPMacroTest, WorksWhenExplicitlyInstantiatedWithReference) {
  function TEST (line 915) | TEST(MatcherPnMacroTest, CanReferenceParamTypes) {
  function TEST (line 926) | TEST(MatcherPnMacroTest, WorksWhenExplicitlyInstantiatedWithReferences) {
  function TEST (line 936) | TEST(MatcherPnMacroTest,
  function TEST (line 954) | TEST(MatcherPnMacroTest, Works) {
  function TEST (line 990) | TEST(MatcherPnMacroTest, CanBeOverloadedOnNumberOfParameters) {
  function TEST (line 1035) | TEST(MatcherPnMacroTest, WorksForDifferentParameterTypes) {
  function TEST (line 1052) | TEST(MatcherPnMacroTest, SimpleTypePromotion) {
  function TEST (line 1065) | TEST(MatcherPnMacroTest, TypesAreCorrect) {
  function TEST (line 1114) | TEST(MatcherPnMacroTest, CanUseMatcherTypedParameterInValue) {
  function TEST (line 1121) | TEST(ContainsTest, ListMatchesWhenElementIsInContainer) {
  function TEST (line 1138) | TEST(ContainsTest, ListDoesNotMatchWhenElementIsNotInContainer) {
  function TEST (line 1145) | TEST(ContainsTest, SetMatchesWhenElementIsInContainer) {
  function TEST (line 1162) | TEST(ContainsTest, SetDoesNotMatchWhenElementIsNotInContainer) {
  function TEST (line 1173) | TEST(ContainsTest, ExplainsMatchResultCorrectly) {
  function TEST (line 1188) | TEST(ContainsTest, DescribesItselfCorrectly) {
  function TEST (line 1196) | TEST(ContainsTest, MapMatchesWhenElementIsInContainer) {
  function TEST (line 1212) | TEST(ContainsTest, MapDoesNotMatchWhenElementIsNotInContainer) {
  function TEST (line 1219) | TEST(ContainsTest, ArrayMatchesWhenElementIsInContainer) {
  function TEST (line 1224) | TEST(ContainsTest, ArrayDoesNotMatchWhenElementIsNotInContainer) {
  function TEST (line 1229) | TEST(ContainsTest, AcceptsMatcher) {
  function TEST (line 1235) | TEST(ContainsTest, WorksForNativeArrayAsTuple) {
  function TEST (line 1242) | TEST(ContainsTest, WorksForTwoDimensionalNativeArray) {
  function TEST (line 1250) | TEST(AllOfTest, HugeMatcher) {
  function TEST (line 1257) | TEST(AnyOfTest, HugeMatcher) {
  type adl_test (line 1264) | namespace adl_test {
    function AllOf (line 1276) | bool AllOf(const T1& t1, const T2& t2) { return true; }
    function TEST (line 1278) | TEST(AllOfTest, DoesNotCallAllOfUnqualified) {
    function AnyOf (line 1283) | bool
    function TEST (line 1286) | TEST(AnyOfTest, DoesNotCallAnyOfUnqualified) {
  function TEST (line 1299) | TEST(AllOfTest, WorksOnMoveOnlyType) {
  function TEST (line 1305) | TEST(AnyOfTest, WorksOnMoveOnlyType) {
  function TEST (line 1317) | TEST(MatcherMacroTest, WorksOnMoveOnlyType) {
  function TEST (line 1329) | TEST(MatcherPMacroTest, WorksOnMoveOnlyType) {

FILE: src/third-party/googletest-1.8.1/googlemock/test/gmock-internal-utils_test.cc
  class ProtocolMessage (line 60) | class ProtocolMessage
  type proto2 (line 62) | namespace proto2 {
    class Message (line 63) | class Message
  type testing (line 66) | namespace testing {
    type internal (line 67) | namespace internal {
      function TEST (line 71) | TEST(JoinAsTupleTest, JoinsEmptyTuple) {
      function TEST (line 75) | TEST(JoinAsTupleTest, JoinsOneTuple) {
      function TEST (line 80) | TEST(JoinAsTupleTest, JoinsTwoTuple) {
      function TEST (line 85) | TEST(JoinAsTupleTest, JoinsTenTuple) {
      function TEST (line 91) | TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContainsNoWord) {
      function TEST (line 97) | TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContainsDigits) {
      function TEST (line 104) | TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContainsCamelCas...
      function TEST (line 112) | TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContains_Separat...
      function TEST (line 119) | TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameIsMixture) {
      function TEST (line 125) | TEST(PointeeOfTest, WorksForSmartPointers) {
      function TEST (line 137) | TEST(PointeeOfTest, WorksForRawPointers) {
      function TEST (line 143) | TEST(GetRawPointerTest, WorksForSmartPointers) {
      function TEST (line 160) | TEST(GetRawPointerTest, WorksForRawPointers) {
      class Base (line 170) | class Base {}
      class Derived (line 171) | class Derived : public Base {}
      function TEST (line 173) | TEST(KindOfTest, Bool) {
      function TEST (line 177) | TEST(KindOfTest, Integer) {
      function TEST (line 197) | TEST(KindOfTest, FloatingPoint) {
      function TEST (line 203) | TEST(KindOfTest, Other) {
      function TEST (line 211) | TEST(LosslessArithmeticConvertibleTest, BoolToBool) {
      function TEST (line 215) | TEST(LosslessArithmeticConvertibleTest, BoolToInteger) {
      function TEST (line 222) | TEST(LosslessArithmeticConvertibleTest, BoolToFloatingPoint) {
      function TEST (line 227) | TEST(LosslessArithmeticConvertibleTest, IntegerToBool) {
      function TEST (line 232) | TEST(LosslessArithmeticConvertibleTest, IntegerToInteger) {
      function TEST (line 265) | TEST(LosslessArithmeticConvertibleTest, IntegerToFloatingPoint) {
      function TEST (line 274) | TEST(LosslessArithmeticConvertibleTest, FloatingPointToBool) {
      function TEST (line 279) | TEST(LosslessArithmeticConvertibleTest, FloatingPointToInteger) {
      function TEST (line 285) | TEST(LosslessArithmeticConvertibleTest, FloatingPointToFloatingPoint) {
      function TEST (line 310) | TEST(TupleMatchesTest, WorksForSize0) {
      function TEST (line 317) | TEST(TupleMatchesTest, WorksForSize1) {
      function TEST (line 326) | TEST(TupleMatchesTest, WorksForSize2) {
      function TEST (line 339) | TEST(TupleMatchesTest, WorksForSize5) {
      function TEST (line 353) | TEST(AssertTest, SucceedsOnTrue) {
      function TEST (line 359) | TEST(AssertTest, FailsFatallyOnFalse) {
      function TEST (line 370) | TEST(ExpectTest, SucceedsOnTrue) {
      function TEST (line 376) | TEST(ExpectTest, FailsNonfatallyOnFalse) {
      class LogIsVisibleTest (line 388) | class LogIsVisibleTest : public ::testing::Test {
        method SetUp (line 390) | virtual void SetUp() {
        method TearDown (line 394) | virtual void TearDown() { GMOCK_FLAG(verbose) = original_verbose_; }
      function TEST_F (line 399) | TEST_F(LogIsVisibleTest, AlwaysReturnsTrueIfVerbosityIsInfo) {
      function TEST_F (line 405) | TEST_F(LogIsVisibleTest, AlwaysReturnsFalseIfVerbosityIsError) {
      function TEST_F (line 411) | TEST_F(LogIsVisibleTest, WorksWhenVerbosityIsWarning) {
      function TestLogWithSeverity (line 423) | void TestLogWithSeverity(const std::string& verbosity, LogSeverity s...
      function TEST (line 443) | TEST(LogTest, NoStackTraceWhenStackFramesToSkipIsNegative) {
      type MockStackTraceGetter (line 452) | struct MockStackTraceGetter : testing::internal::OsStackTraceGetterI...
        method CurrentStackTrace (line 453) | virtual std::string CurrentStackTrace(int max_depth, int skip_coun...
        method UponLeavingGTest (line 457) | virtual void UponLeavingGTest() {}
      function TEST (line 462) | TEST(LogTest, NoSkippingStackFrameInOptMode) {
      function TEST (line 500) | TEST(LogTest, AllLogsArePrintedWhenVerbosityIsInfo) {
      function TEST (line 507) | TEST(LogTest, OnlyWarningsArePrintedWhenVerbosityIsWarning) {
      function TEST (line 514) | TEST(LogTest, NoLogsArePrintedWhenVerbosityIsError) {
      function TEST (line 521) | TEST(LogTest, OnlyWarningsArePrintedWhenVerbosityIsInvalid) {
      function TEST (line 528) | TEST(TypeTraitsTest, true_type) {
      function TEST (line 532) | TEST(TypeTraitsTest, false_type) {
      function TEST (line 536) | TEST(TypeTraitsTest, is_reference) {
      function TEST (line 542) | TEST(TypeTraitsTest, is_pointer) {
      function TEST (line 548) | TEST(TypeTraitsTest, type_equals) {
      function TEST (line 555) | TEST(TypeTraitsTest, remove_reference) {
      function GrabOutput (line 567) | std::string GrabOutput(void(*logger)(), const char* verbosity) {
      class DummyMock (line 576) | class DummyMock {
      function ExpectCallLogger (line 582) | void ExpectCallLogger() {
      function TEST (line 589) | TEST(ExpectCallTest, LogsWhenVerbosityIsInfo) {
      function TEST (line 596) | TEST(ExpectCallTest, DoesNotLogWhenVerbosityIsWarning) {
      function TEST (line 602) | TEST(ExpectCallTest,  DoesNotLogWhenVerbosityIsError) {
      function OnCallLogger (line 606) | void OnCallLogger() {
      function TEST (line 612) | TEST(OnCallTest, LogsWhenVerbosityIsInfo) {
      function TEST (line 619) | TEST(OnCallTest, DoesNotLogWhenVerbosityIsWarning) {
      function TEST (line 625) | TEST(OnCallTest, DoesNotLogWhenVerbosityIsError) {
      function OnCallAnyArgumentLogger (line 629) | void OnCallAnyArgumentLogger() {
      function TEST (line 635) | TEST(OnCallTest, LogsAnythingArgument) {
      function TEST (line 644) | TEST(StlContainerViewTest, WorksForStlContainer) {
      function TEST (line 660) | TEST(StlContainerViewTest, WorksForStaticNativeArray) {
      function TEST (line 687) | TEST(StlContainerViewTest, WorksForDynamicNativeArray) {

FILE: src/third-party/googletest-1.8.1/googlemock/test/gmock-matchers_test.cc
  type testing (line 65) | namespace testing {
    type gmock_matchers_test (line 66) | namespace gmock_matchers_test {
      class GreaterThanMatcher (line 160) | class GreaterThanMatcher : public MatcherInterface<int> {
        method GreaterThanMatcher (line 162) | explicit GreaterThanMatcher
Copy disabled (too large) Download .json
Condensed preview — 1999 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (23,915K chars).
[
  {
    "path": ".gitattributes",
    "chars": 731,
    "preview": "# Auto detect text files and perform LF normalization\n*  text=auto\n\n# Explicitly declaring text files we want to always "
  },
  {
    "path": ".gitignore",
    "chars": 919,
    "preview": "# Robomongo-specific\n\nCMakeLists.txt.user*\n\n.sconsign.dblite\n.sconf_temp\n.scons\n\n*.kate-swp\n*.swp\n\ntarget/\ntarget-debug/"
  },
  {
    "path": ".travis.yml",
    "chars": 199,
    "preview": "os:\n  - linux\n  # - osx\n  # - windows\n\ndist: xenial\nsudo: require\nlanguage: cpp\n\nscript:\n  - bash bin/clean\n  - bash bin"
  },
  {
    "path": "CHANGELOG",
    "chars": 29646,
    "preview": "\nDownload latest version: \nhttps://robomongo.org/download\n\nRobo 3T 1.4.4 (Aug/2021)\n  New Features:\n  - Support for Stan"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 2284,
    "preview": "cmake_minimum_required(VERSION 3.8.0)\nproject(Robomongo)\n\n# Where to look first for CMake modules, before \"${CMAKE_ROOT}"
  },
  {
    "path": "COPYRIGHT",
    "chars": 331,
    "preview": "Robo 3T, shell-centric cross-platform MongoDB management tool.\n\nCopyright 2014-2017 3T Software Labs Ltd.\n\nThe Robo 3T i"
  },
  {
    "path": "DESCRIPTION",
    "chars": 175,
    "preview": "Robo 3T is a shell-centric cross-platform open source MongoDB management\ntool (i.e. Admin GUI). Robomongo embeds the sam"
  },
  {
    "path": "LICENSE",
    "chars": 35147,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "README.md",
    "chars": 8475,
    "preview": "## Important\n\nIf you are using Studio 3T, please file any feedback on the [Studio 3T Feedback](https://studio3t.com/feed"
  },
  {
    "path": "bin/README.md",
    "chars": 722,
    "preview": "Bash fronted for CMake\n======================\n\nIf you want to use this scripts, you need to set single environment varia"
  },
  {
    "path": "bin/build",
    "chars": 315,
    "preview": "#!/usr/bin/env bash\n\nBIN_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"       # Get directory of this file\nPROJ"
  },
  {
    "path": "bin/build-and-run-tests",
    "chars": 276,
    "preview": "#!/usr/bin/env bash\n\nBIN_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"       # Get directory of this file\nPROJ"
  },
  {
    "path": "bin/build-and-run-tests.bat",
    "chars": 376,
    "preview": "@echo off\r\nsetlocal enableextensions enabledelayedexpansion\r\n\r\nrem Path to bin and project folder\r\nset BIN_DIR_WITH_BACK"
  },
  {
    "path": "bin/build.bat",
    "chars": 496,
    "preview": "@echo off\r\nsetlocal enableextensions enabledelayedexpansion\r\n\r\nrem Path to bin and project folder\r\nset BIN_DIR_WITH_BACK"
  },
  {
    "path": "bin/clang-checks.txt",
    "chars": 118,
    "preview": "bugprone-*\ncert-*\nclang-analyzer-*\ncppcoreguidelines-*\nconcurrency-*\nhicpp-*\nllvm-*\nmisc-*\nperformance-*\nreadability-*"
  },
  {
    "path": "bin/clang-tidy.xml",
    "chars": 201,
    "preview": "  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|x64'\">\n    <EnableClangTidyCodeAnalysis>true</EnableC"
  },
  {
    "path": "bin/clean",
    "chars": 289,
    "preview": "#!/usr/bin/env bash\n\nBIN_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"       # Get directory of this file\nPROJ"
  },
  {
    "path": "bin/clean.bat",
    "chars": 391,
    "preview": "@echo off\r\nsetlocal enableextensions enabledelayedexpansion\r\n\r\nrem Path to bin and project folder\r\nset BIN_DIR_WITH_BACK"
  },
  {
    "path": "bin/common/setup",
    "chars": 639,
    "preview": "#!/usr/bin/env bash\n\nif [ \"$1\" == \"debug\" ]; then\n  BUILD_TYPE=Debug\nelse\n  BUILD_TYPE=Release\n\n  # Prepend \"release\" in"
  },
  {
    "path": "bin/common/setup.bat",
    "chars": 1355,
    "preview": "rem Check that ROBOMONGO_CMAKE_PREFIX_PATH is set\r\nif not defined ROBOMONGO_CMAKE_PREFIX_PATH (\r\n  echo Set environment "
  },
  {
    "path": "bin/configure",
    "chars": 455,
    "preview": "#!/usr/bin/env bash\n\nBIN_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"       # Get directory of this file\nPROJ"
  },
  {
    "path": "bin/configure.bat",
    "chars": 860,
    "preview": "@echo off \r\nsetlocal enableextensions enabledelayedexpansion\r\n\r\nrem Path to bin and project folder\r\nset BIN_DIR_WITH_BAC"
  },
  {
    "path": "bin/enable-visual-studio-clang-tidy.py",
    "chars": 1370,
    "preview": "import sys\nfrom lxml import etree\n\nprint('\\nEnabling Clang Tidy for Visual Studio 2019')\n\nrobo_proj_xml = sys.argv[1]\ncl"
  },
  {
    "path": "bin/install",
    "chars": 309,
    "preview": "#!/usr/bin/env bash\n\nBIN_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"       # Get directory of this file\nPROJ"
  },
  {
    "path": "bin/install-debug-dlls.bat",
    "chars": 1793,
    "preview": "@echo off\r\nsetlocal enableextensions enabledelayedexpansion\r\n\r\nrem // This script installs debug *.dll files\r\nrem ------"
  },
  {
    "path": "bin/install.bat",
    "chars": 403,
    "preview": "@echo off\r\nsetlocal enableextensions enabledelayedexpansion\r\n\r\nrem Path to bin and project folder\r\nset BIN_DIR_WITH_BACK"
  },
  {
    "path": "bin/pack",
    "chars": 303,
    "preview": "#!/usr/bin/env bash\n\nBIN_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"       # Get directory of this file\nPROJ"
  },
  {
    "path": "bin/pack.bat",
    "chars": 403,
    "preview": "@echo off\r\nsetlocal enableextensions enabledelayedexpansion\r\n\r\nrem Path to bin and project folder\r\nset BIN_DIR_WITH_BACK"
  },
  {
    "path": "bin/rebuild.bat",
    "chars": 128,
    "preview": "@echo off\r\nsetlocal enableextensions enabledelayedexpansion\r\n\r\ncall \"clean.bat\" %*\r\ncall \"configure.bat\" %*\r\ncall \"build"
  },
  {
    "path": "bin/run",
    "chars": 577,
    "preview": "#!/usr/bin/env bash\n\nBIN_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"       # Get directory of this file\nPROJ"
  },
  {
    "path": "bin/run-clang-tidy",
    "chars": 1575,
    "preview": "#!/usr/bin/env bash\n\n### Common Setup\nBIN_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"       # Get directory "
  },
  {
    "path": "bin/run-clang-tidy.py",
    "chars": 11489,
    "preview": "#!/usr/bin/env python\n#\n#===- run-clang-tidy.py - Parallel clang-tidy runner ---------*- python -*--===#\n#\n# Part of the"
  },
  {
    "path": "bin/run-cppcheck.bat",
    "chars": 592,
    "preview": "@echo off\r\nsetlocal enableextensions enabledelayedexpansion\r\n\r\nset CPP_VER=c++17\r\n\r\nset FILE_OR_DIR=..\\src\\robomongo\\\r\ns"
  },
  {
    "path": "bin/run-scan-build",
    "chars": 960,
    "preview": "#!/usr/bin/env bash\n\nBIN_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"       # Get directory of this file\nPROJ"
  },
  {
    "path": "bin/run-tests",
    "chars": 713,
    "preview": "#!/usr/bin/env bash\n\nBIN_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"       # Get directory of this file\nPROJ"
  },
  {
    "path": "bin/run-tests.bat",
    "chars": 614,
    "preview": "@echo off\r\nsetlocal enableextensions enabledelayedexpansion\r\n\r\nrem Path to bin and project folder\r\nset BIN_DIR_WITH_BACK"
  },
  {
    "path": "bin/run-vs-code-analysis.bat",
    "chars": 1160,
    "preview": "@echo off\r\nsetlocal enableextensions enabledelayedexpansion\r\n\r\nrem Path to bin and project folder\r\nset BIN_DIR_WITH_BACK"
  },
  {
    "path": "bin/set-mongo-warning-level-3.py",
    "chars": 1283,
    "preview": "import os\nfrom os.path import join\n\n### \ndef force_warning_level_3(file):\n    with open(file, \"r\") as in_file:\n        b"
  },
  {
    "path": "bin/tag",
    "chars": 555,
    "preview": "#!/usr/bin/env bash\n\nBIN_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"       # Get directory of this file\nPROJ"
  },
  {
    "path": "cmake/FindMongoDB.cmake",
    "chars": 6122,
    "preview": "#\n# Find the MongoDB libraries\n#\n# This module defines the following variables:\n#      MongoDB_FOUND\n#      MongoDB_LIBS"
  },
  {
    "path": "cmake/FindOpenSSL.cmake",
    "chars": 4750,
    "preview": "##################################################\n# Find and Add OpenSSL shared (dynamic) library \n# \n# - This module d"
  },
  {
    "path": "cmake/FindThreading.cmake",
    "chars": 805,
    "preview": "# This wrapper is created in order to support CMake 3.0\n# Only starting from CMake 3.1 \"Threads\" module exports\n# \"Threa"
  },
  {
    "path": "cmake/RobomongoCMakeDefaults.cmake",
    "chars": 1142,
    "preview": "# Put the include dirs which are in the source or build tree\n# before all other include dirs, so the headers in the sour"
  },
  {
    "path": "cmake/RobomongoCommon.cmake",
    "chars": 101,
    "preview": "\nset(ROBOMONGO_DISPLAY_NAME \"Robo 3T\")\nset(ROBOMONGO_DISPLAY_FULL_NAME \"Robo 3T ${PROJECT_VERSION}\")\n"
  },
  {
    "path": "cmake/RobomongoConfigurationSummary.cmake",
    "chars": 2672,
    "preview": "# Set MONGO_BUILD_FOLDER\nset(MONGO_BUILD_FOLDER \"build/opt\")  # Release\nif(CMAKE_BUILD_TYPE STREQUAL \"Debug\") \n    set(M"
  },
  {
    "path": "cmake/RobomongoDefaults.cmake",
    "chars": 2318,
    "preview": "# This files defines:\n#\n# 1) Platform checks\n#\n#    SYSTEM_MACOSX\n#    SYSTEM_WINDOWS\n#    SYSTEM_LINUX\n#    SYSTEM_FREE"
  },
  {
    "path": "cmake/RobomongoInstall.cmake",
    "chars": 4874,
    "preview": "# Note for maintainers\n# --------------------\n#\n# Do not use absolute paths in DESTINATION arguments for install() comma"
  },
  {
    "path": "cmake/RobomongoInstallQt.cmake",
    "chars": 3987,
    "preview": "function(install_qt_lib)\n    foreach(module ${ARGV})\n        set(target_name Qt5::${module})\n        set(module_name Qt5"
  },
  {
    "path": "cmake/RobomongoPackage.cmake",
    "chars": 4814,
    "preview": "# Notes for maintainers.\n#\n# 1. Make sure that we use only lowercase letters in file name of outputed\n#    package for a"
  },
  {
    "path": "cmake/RobomongoPrintUtils.cmake",
    "chars": 2994,
    "preview": "###\n# Prints CMake variables.\n#\n# Print all variables in the current scope:\n#\n# print_vars()\n# print_vars(\"\")           "
  },
  {
    "path": "cmake/RobomongoTargetArch.cmake",
    "chars": 6877,
    "preview": "# Copyright (c) 2012 Petroules Corporation. All rights reserved.\n#\n# Redistribution and use in source and binary forms, "
  },
  {
    "path": "cmake/RobomongoTrashSymbols.cmake",
    "chars": 1412,
    "preview": "if(SYSTEM_LINUX OR SYSTEM_MACOSX)\n    set(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -std=c++11\")\n    set(CMAKE_C_FLAGS \"${CMAK"
  },
  {
    "path": "cmake/mongodb/README.md",
    "chars": 2536,
    "preview": "\nSee these docs for the latest info about this topic:\n-------------\n- [Build Robo 3T - Mac OS X and Linux](https://githu"
  },
  {
    "path": "cmake/mongodb/linux-debug.objects",
    "chars": 89279,
    "preview": "build/debug/third_party/icu4c-57.1/source/i18n/nfrs.o build/debug/mongo/db/index/expression_keys_private.o build/debug/t"
  },
  {
    "path": "cmake/mongodb/linux-release.objects",
    "chars": 86148,
    "preview": "build/opt/third_party/mozjs-60/extract/mfbt/double-conversion/double-conversion/strtod.o build/opt/third_party/zstandard"
  },
  {
    "path": "cmake/mongodb/macosx-debug.objects",
    "chars": 87711,
    "preview": "build/debug/third_party/boost-1.70.0/libs/system/src/error_code.o build/debug/third_party/zlib-1.2.11/inffast.o build/de"
  },
  {
    "path": "cmake/mongodb/macosx-release.objects",
    "chars": 84634,
    "preview": "build/opt/third_party/shim_asio.o build/opt/mongo/db/keys_collection_manager.o build/opt/mongo/crypto/aead_encryption.o "
  },
  {
    "path": "cmake/mongodb/windows-debug.objects",
    "chars": 92414,
    "preview": "build\\debug\\mongo\\util\\net\\ssl_options_client.obj build\\debug\\mongo\\util\\net\\ssl_options_client_gen.obj build\\debug\\mong"
  },
  {
    "path": "cmake/mongodb/windows-release.objects",
    "chars": 89291,
    "preview": "build\\opt\\mongo\\util\\net\\ssl_options_client.obj build\\opt\\mongo\\util\\net\\ssl_options_client_gen.obj build\\opt\\mongo\\tran"
  },
  {
    "path": "cmake/readme.md",
    "chars": 752,
    "preview": "Quick reference to CMake\n========================\n\n    if(<constant>)\n    \nTrue if the constant is `1`, `ON`, `YES`, `TR"
  },
  {
    "path": "docs/BuildRobo3TOnMacAndLinux.md",
    "chars": 6417,
    "preview": "Building Robo 3T (macOS and Linux)  \n==================\n\nA. Prerequisites\n-------------\n\n1. Modern Compiler\nA modern and"
  },
  {
    "path": "docs/BuildRobo3TOnWindows.md",
    "chars": 6873,
    "preview": "Building Robo 3T (Windows)\n==============================\n\nA. Prerequisites\n-------------\n\n#### 0. Git\n\n Download Git in"
  },
  {
    "path": "docs/BuildRobo3TShell.md",
    "chars": 1553,
    "preview": "\nBuilding Robo 3T Shell\n========================\n\nRobo 3T uses [modified version](https://github.com/paralect/robomongo-"
  },
  {
    "path": "docs/BuildingMongoDB.md",
    "chars": 1792,
    "preview": "Building Robomongo Shell (Old Document)\n========================\n\n**Important Note:**  \nThis document is for versions 1."
  },
  {
    "path": "docs/BuildingRobomongo.md",
    "chars": 3611,
    "preview": "Building Robomongo (Mac OS X and Linux)\n==================\n\n**Important Note:**  \nThis document is for versions 1.0 and "
  },
  {
    "path": "docs/BuildingRobomongoOnWindows.md",
    "chars": 5586,
    "preview": "Building Robomongo (Windows)\n==============================\n\n**Important Note:**  \nThis document is for versions 1.0 and"
  },
  {
    "path": "docs/Debug.md",
    "chars": 5044,
    "preview": "Runtime Dependencies\n====================\n\nThis information is for maintainers. If you want to just use Robomongo - down"
  },
  {
    "path": "install/linux/robomongo.sh",
    "chars": 706,
    "preview": "#!/bin/bash\n\n#ROBO_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\n\nSOURCE=\"${BASH_SOURCE[0]}\"\nwhile [ -h \"$SOUR"
  },
  {
    "path": "install/macosx/Info.plist.in",
    "chars": 1400,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.c"
  },
  {
    "path": "install/macosx/README.md",
    "chars": 174,
    "preview": "How to generate \"icns\" icon file\n================================\n\nIn this directory run:\n\n    $ iconutil -c icns Robomo"
  },
  {
    "path": "install/macosx/qt.conf",
    "chars": 29,
    "preview": "[Paths]\nPlugins = PlugIns/Qt\n"
  },
  {
    "path": "install/qt.conf.in",
    "chars": 36,
    "preview": "[Paths]\nPlugins = @qt_conf_plugins@\n"
  },
  {
    "path": "install/windows/README.md",
    "chars": 1834,
    "preview": "How to generate ICO file from the set of PNGs\n=============================================\n\nInstall ImageMagick (http:/"
  },
  {
    "path": "install/windows/winres.rc.in",
    "chars": 1762,
    "preview": "#include \"verrsrc.h\"\n\nIDI_ICON1               ICON        \"@windows_icon@\"\n\n\n#define VER_FILEVERSION             @PROJEC"
  },
  {
    "path": "shortcuts.txt",
    "chars": 4554,
    "preview": "Robomongo shortcut key reference\n================================\n\"3T\", \"Robomongo\"\n### Windows/Linux users\n\n   Ctrl+Ent"
  },
  {
    "path": "src/robomongo/.clang-format",
    "chars": 1931,
    "preview": "# BasedOnStyle:  Google\nAccessModifierOffset: -4\nAlignOperands: false\nAlignAfterOpenBracket: true\nAlignEscapedNewlinesLe"
  },
  {
    "path": "src/robomongo/CMakeLists.txt",
    "chars": 9609,
    "preview": "\n# Automatically generate code for Qt moc, uic and rcc files\n# Since CMake 2.8.6\nset(CMAKE_AUTOMOC ON)\nset(CMAKE_AUTORCC"
  },
  {
    "path": "src/robomongo/app/main.cpp",
    "chars": 4244,
    "preview": "#include <QApplication>\n#include <QDesktopWidget>\n\n#include <locale.h>\n\n// Header \"mongo/util/net/sock\" is needed for mo"
  },
  {
    "path": "src/robomongo/app/main_mongo.cpp",
    "chars": 561,
    "preview": "#include <QApplication>\n#include <QDesktopWidget>\n#include <QDebug>\n\n#include <locale.h>\n#include <mongo/bson/bsonobjbui"
  },
  {
    "path": "src/robomongo/app/main_test.cpp",
    "chars": 2502,
    "preview": "#undef NDEBUG\n\n#include <sstream>\n#include <iostream>\n#include <assert.h>\n#include <limits>\n#include <mongo/util/exit_co"
  },
  {
    "path": "src/robomongo/core/AppRegistry.cpp",
    "chars": 402,
    "preview": "#include \"robomongo/core/AppRegistry.h\"\n\n#include \"robomongo/core/EventBus.h\"\n#include \"robomongo/core/settings/Settings"
  },
  {
    "path": "src/robomongo/core/AppRegistry.h",
    "chars": 698,
    "preview": "#pragma once\n\n#include \"robomongo/core/Core.h\"\n#include \"robomongo/core/utils/SingletonPattern.hpp\"\n\nnamespace Robomongo"
  },
  {
    "path": "src/robomongo/core/Core.h",
    "chars": 1431,
    "preview": "#pragma once\n\n#include <boost/scoped_ptr.hpp>\n#include <boost/shared_ptr.hpp>\n\nnamespace mongo\n{\n    class DBClientConne"
  },
  {
    "path": "src/robomongo/core/Enums.cpp",
    "chars": 1477,
    "preview": "#include \"robomongo/core/Enums.h\"\n#include <string.h>\n\nnamespace\n{\n    const char *viewModeAsoc[Robomongo::Custom+1] = {"
  },
  {
    "path": "src/robomongo/core/Enums.h",
    "chars": 886,
    "preview": "#pragma once\n\nnamespace Robomongo\n{\n    enum UUIDEncoding\n    {\n        DefaultEncoding = 0,\n        JavaLegacy      = 1"
  },
  {
    "path": "src/robomongo/core/Event.cpp",
    "chars": 35,
    "preview": "#include \"robomongo/core/Event.h\"\n\n"
  },
  {
    "path": "src/robomongo/core/Event.h",
    "chars": 3187,
    "preview": "#pragma once\n\n#include <QObject>\n#include <QString>\n#include <QEvent>\n#include <QMetaType>\n\n#include \"robomongo/core/Eve"
  },
  {
    "path": "src/robomongo/core/EventBus.cpp",
    "chars": 5021,
    "preview": "#include \"robomongo/core/EventBus.h\"\n\n#include <QObject>\n#include <QCoreApplication>\n#include <QThread>\n#include <QMutex"
  },
  {
    "path": "src/robomongo/core/EventBus.h",
    "chars": 1833,
    "preview": "#pragma once\n\n#include <QObject>\n#include <QEvent>\n#include <QMutex>\n#include <vector>\n\nnamespace Robomongo\n{\n    class "
  },
  {
    "path": "src/robomongo/core/EventBusDispatcher.cpp",
    "chars": 775,
    "preview": "#include \"robomongo/core/EventBusDispatcher.h\"\n#include \"robomongo/core/EventWrapper.h\"\n\nnamespace Robomongo\n{\n\n    Even"
  },
  {
    "path": "src/robomongo/core/EventBusDispatcher.h",
    "chars": 312,
    "preview": "#pragma once\n#include <QObject>\n\nnamespace Robomongo\n{\n    /**\n     * @brief The EventBusDispatcher class\n     */\n    cl"
  },
  {
    "path": "src/robomongo/core/EventBusSubscriber.cpp",
    "chars": 318,
    "preview": "#include \"robomongo/core/EventBusSubscriber.h\"\n#include \"robomongo/core/EventBusDispatcher.h\"\n\nnamespace Robomongo\n{\n   "
  },
  {
    "path": "src/robomongo/core/EventBusSubscriber.h",
    "chars": 341,
    "preview": "#pragma once\n\n#include <QObject>\n\nnamespace Robomongo\n{\n    class EventBusDispatcher;\n    struct EventBusSubscriber\n    "
  },
  {
    "path": "src/robomongo/core/EventError.cpp",
    "chars": 1010,
    "preview": "#include \"robomongo/core/EventError.h\"\n\n#include \"robomongo/utils/StringOperations.h\"\n\nnamespace Robomongo\n{\n    EventEr"
  },
  {
    "path": "src/robomongo/core/EventError.h",
    "chars": 2149,
    "preview": "#pragma once\n#include <string>\n\n#include \"robomongo/core/mongodb/ReplicaSet.h\"\n\nnamespace Robomongo\n{\n    /**\n     * @br"
  },
  {
    "path": "src/robomongo/core/EventWrapper.cpp",
    "chars": 557,
    "preview": "#include \"robomongo/core/EventWrapper.h\"\nnamespace Robomongo\n{\n    EventWrapper::EventWrapper(Event *event, QList<QObjec"
  },
  {
    "path": "src/robomongo/core/EventWrapper.h",
    "chars": 473,
    "preview": "#pragma once\n#include <boost/scoped_ptr.hpp>\n#include \"robomongo/core/Event.h\"\n\nnamespace Robomongo\n{\n    class EventWra"
  },
  {
    "path": "src/robomongo/core/HexUtils.cpp",
    "chars": 6909,
    "preview": "#include \"robomongo/core/HexUtils.h\"\n\n#include <mongo/util/hex.h>\n#include <pcrecpp.h>\n#include <iostream>\n\nnamespace Ro"
  },
  {
    "path": "src/robomongo/core/HexUtils.h",
    "chars": 1809,
    "preview": "#pragma once\n#include \"robomongo/core/Enums.h\"\n#include <mongo/bson/bsonelement.h>\n\nnamespace Robomongo\n{\n\n    /**\n     "
  },
  {
    "path": "src/robomongo/core/HexUtils_test.cpp",
    "chars": 386,
    "preview": "#include \"gtest/gtest.h\"\n#include \"HexUtils.h\"\n\n#include <string>\n\n/* Example Test:\n*\n* TEST( [Test_Case_Name], [Test_Na"
  },
  {
    "path": "src/robomongo/core/KeyboardManager.cpp",
    "chars": 2540,
    "preview": "#include \"robomongo/core/KeyboardManager.h\"\n\nnamespace Robomongo\n{\n    bool KeyboardManager::isNewTabShortcut(QKeyEvent "
  },
  {
    "path": "src/robomongo/core/KeyboardManager.h",
    "chars": 626,
    "preview": "#pragma once\n\n#include <QKeyEvent>\n\nnamespace Robomongo\n{\n    namespace KeyboardManager\n    {\n        bool isNewTabShort"
  },
  {
    "path": "src/robomongo/core/domain/App.cpp",
    "chars": 12221,
    "preview": "#include \"robomongo/core/domain/App.h\"\n\n#include <QHash>\n#include <QInputDialog>\n#include <QMessageBox>\n\n#include \"robom"
  },
  {
    "path": "src/robomongo/core/domain/App.h",
    "chars": 4470,
    "preview": "#pragma once\n#include <QObject>\n#include <vector>\n#include <robomongo/core/events/MongoEvents.h>\n\n#include \"robomongo/co"
  },
  {
    "path": "src/robomongo/core/domain/CursorPosition.cpp",
    "chars": 311,
    "preview": "#include \"robomongo/core/domain/CursorPosition.h\"\n\nnamespace Robomongo\n{\n    CursorPosition::CursorPosition() :\n        "
  },
  {
    "path": "src/robomongo/core/domain/CursorPosition.h",
    "chars": 393,
    "preview": "#pragma once\n\nnamespace Robomongo\n{\n    class CursorPosition\n    {\n    public:\n        CursorPosition();\n        CursorP"
  },
  {
    "path": "src/robomongo/core/domain/MongoAggregateInfo.h",
    "chars": 670,
    "preview": "#pragma once\n\nnamespace Robomongo\n{\n    struct AggrInfo\n    {\n        AggrInfo() {}\n\n        AggrInfo(const std::string&"
  },
  {
    "path": "src/robomongo/core/domain/MongoCollection.cpp",
    "chars": 932,
    "preview": "#include \"robomongo/core/domain/MongoCollection.h\"\n#include \"robomongo/core/domain/MongoUtils.h\"\n\nnamespace Robomongo\n{\n"
  },
  {
    "path": "src/robomongo/core/domain/MongoCollection.h",
    "chars": 808,
    "preview": "#pragma once\n\n#include \"robomongo/core/domain/MongoDatabase.h\"\n#include \"robomongo/core/domain/MongoCollectionInfo.h\"\n\nn"
  },
  {
    "path": "src/robomongo/core/domain/MongoCollectionInfo.cpp",
    "chars": 795,
    "preview": "#include \"MongoCollectionInfo.h\"\n#include \"robomongo/core/utils/BsonUtils.h\"\n#include <mongo/client/dbclient_base.h>\n\nna"
  },
  {
    "path": "src/robomongo/core/domain/MongoCollectionInfo.h",
    "chars": 1567,
    "preview": "#pragma once\n#include <mongo/bson/bsonobj.h>\n#include \"robomongo/core/domain/MongoNamespace.h\"\n\nnamespace Robomongo\n{\n  "
  },
  {
    "path": "src/robomongo/core/domain/MongoDatabase.cpp",
    "chars": 10496,
    "preview": "#include \"robomongo/core/domain/MongoDatabase.h\"\n\n#include \"robomongo/core/domain/MongoServer.h\"\n#include \"robomongo/cor"
  },
  {
    "path": "src/robomongo/core/domain/MongoDatabase.h",
    "chars": 5542,
    "preview": "#pragma once\n\n#include <QObject>\n#include <mongo/bson/bsonobj.h>\n\n#include \"robomongo/core/Core.h\"\n#include \"robomongo/c"
  },
  {
    "path": "src/robomongo/core/domain/MongoDocument.cpp",
    "chars": 1276,
    "preview": "#include \"robomongo/core/domain/MongoDocument.h\"\n\n#include <mongo/client/dbclient_base.h>\n#include \"robomongo/core/setti"
  },
  {
    "path": "src/robomongo/core/domain/MongoDocument.h",
    "chars": 1113,
    "preview": "#pragma once\n\n#include <QStringList>\n#include <mongo/bson/bsonobj.h>\n\n#include \"robomongo/core/Core.h\"\n\nnamespace Robomo"
  },
  {
    "path": "src/robomongo/core/domain/MongoFunction.cpp",
    "chars": 641,
    "preview": "#include \"robomongo/core/domain/MongoFunction.h\"\n#include \"robomongo/core/utils/BsonUtils.h\"\n#include <mongo/client/dbcl"
  },
  {
    "path": "src/robomongo/core/domain/MongoFunction.h",
    "chars": 709,
    "preview": "#pragma once\n\n#include <mongo/bson/bsonobj.h>\n\nnamespace Robomongo\n{\n    class MongoFunction\n    {\n    public:\n        /"
  },
  {
    "path": "src/robomongo/core/domain/MongoNamespace.cpp",
    "chars": 562,
    "preview": "#include \"robomongo/core/domain/MongoNamespace.h\"\n\n#include <stdio.h>\n\nnamespace Robomongo\n{\n    MongoNamespace::MongoNa"
  },
  {
    "path": "src/robomongo/core/domain/MongoNamespace.h",
    "chars": 621,
    "preview": "#pragma once\n\n#include <string>\n\nnamespace Robomongo\n{\n    class MongoNamespace\n    {\n    public:\n        MongoNamespace"
  },
  {
    "path": "src/robomongo/core/domain/MongoQueryInfo.cpp",
    "chars": 1231,
    "preview": "#include \"robomongo/core/domain/MongoQueryInfo.h\"\n\n#include <mongo/client/dbclient_base.h>\n\nnamespace Robomongo\n{\n    na"
  },
  {
    "path": "src/robomongo/core/domain/MongoQueryInfo.h",
    "chars": 1101,
    "preview": "#pragma once\n\n#include <mongo/bson/bsonobj.h>\n#include \"robomongo/core/domain/MongoNamespace.h\"\n\nnamespace Robomongo\n{\n "
  },
  {
    "path": "src/robomongo/core/domain/MongoServer.cpp",
    "chars": 21732,
    "preview": "#include \"robomongo/core/domain/MongoServer.h\"\n\n#include \"robomongo/core/domain/MongoDatabase.h\"\n#include \"robomongo/cor"
  },
  {
    "path": "src/robomongo/core/domain/MongoServer.h",
    "chars": 5659,
    "preview": "#pragma once\n#include <QObject>\n\n#include \"robomongo/core/settings/ConnectionSettings.h\"\n#include \"robomongo/core/events"
  },
  {
    "path": "src/robomongo/core/domain/MongoShell.cpp",
    "chars": 4277,
    "preview": "#include \"robomongo/core/domain/MongoShell.h\"\n\n#include \"mongo/scripting/engine.h\"\n\n#include \"robomongo/core/domain/Mong"
  },
  {
    "path": "src/robomongo/core/domain/MongoShell.h",
    "chars": 1755,
    "preview": "#pragma once\n#include <QObject>\n#include \"robomongo/core/events/MongoEvents.h\"\n#include \"robomongo/core/domain/ScriptInf"
  },
  {
    "path": "src/robomongo/core/domain/MongoShellResult.h",
    "chars": 3736,
    "preview": "#pragma once\n#include \"robomongo/core/domain/MongoQueryInfo.h\"\n#include \"robomongo/core/domain/MongoAggregateInfo.h\"\n#in"
  },
  {
    "path": "src/robomongo/core/domain/MongoUser.cpp",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "src/robomongo/core/domain/MongoUser.h",
    "chars": 1559,
    "preview": "#pragma once\n#include <mongo/bson/bsonobj.h>\n#include <mongo/bson/bsonelement.h>\n\n#include \"robomongo/core/utils/BsonUti"
  },
  {
    "path": "src/robomongo/core/domain/MongoUtils.cpp",
    "chars": 1006,
    "preview": "#include \"robomongo/core/domain/MongoUtils.h\"\n#include <mongo/db/json.h>\nusing namespace std;\n#include \"mongo/util/md5.h"
  },
  {
    "path": "src/robomongo/core/domain/MongoUtils.h",
    "chars": 247,
    "preview": "#pragma once\n\n#include <QString>\n\nnamespace Robomongo\n{\n    namespace MongoUtils\n    {\n        QString buildNiceSizeStri"
  },
  {
    "path": "src/robomongo/core/domain/Notifier.cpp",
    "chars": 19364,
    "preview": "#include \"robomongo/core/domain/Notifier.h\"\n\n#include <thread>\n#include <chrono>\n\n#include <QAction>\n#include <QClipboar"
  },
  {
    "path": "src/robomongo/core/domain/Notifier.h",
    "chars": 2389,
    "preview": "#pragma once\n\n#include <QModelIndex>\n\n#include \"robomongo/core/domain/MongoQueryInfo.h\"\n\nQT_BEGIN_NAMESPACE\nclass QActio"
  },
  {
    "path": "src/robomongo/core/domain/ScriptInfo.cpp",
    "chars": 3234,
    "preview": "#include \"robomongo/core/domain/ScriptInfo.h\"\n\n#include <QTextStream>\n#include <QApplication>\n#include <QMessageBox>\n#in"
  },
  {
    "path": "src/robomongo/core/domain/ScriptInfo.h",
    "chars": 1202,
    "preview": "#pragma once\n\n#include <QString>\n\n#include \"robomongo/core/domain/CursorPosition.h\"\n\nnamespace Robomongo\n{\n    class Scr"
  },
  {
    "path": "src/robomongo/core/engine/ScriptEngine.cpp",
    "chars": 20410,
    "preview": "#include \"robomongo/core/engine/ScriptEngine.h\"\n\n#include <QVector> // unable to put this include below. doesn't compile"
  },
  {
    "path": "src/robomongo/core/engine/ScriptEngine.h",
    "chars": 2084,
    "preview": "#pragma once\n\n#include <QObject>\n#include <QMutex>\n#include <mongo/scripting/engine.h>\n//#include <third_party/js-1.7/js"
  },
  {
    "path": "src/robomongo/core/events/MongoEvents.cpp",
    "chars": 3234,
    "preview": "#include \"robomongo/core/events/MongoEvents.h\"\n#include \"robomongo/core/Core.h\"\n\nnamespace Robomongo\n{\n    R_REGISTER_EV"
  },
  {
    "path": "src/robomongo/core/events/MongoEvents.h",
    "chars": 38544,
    "preview": "#pragma once\n\n#include <QMessageBox>\n#include <QString>\n#include <QStringList>\n#include <QEvent>\n#include <mongo/client/"
  },
  {
    "path": "src/robomongo/core/events/MongoEventsInfo.cpp",
    "chars": 1373,
    "preview": "#include \"robomongo/core/events/MongoEventsInfo.h\"\n\nnamespace Robomongo\n{\n    IndexInfo::IndexInfo(\n        const MongoC"
  },
  {
    "path": "src/robomongo/core/events/MongoEventsInfo.h",
    "chars": 1528,
    "preview": "#pragma once\n#include <string>\n#include \"robomongo/core/domain/MongoCollectionInfo.h\"\n\nnamespace Robomongo\n{\n    struct "
  },
  {
    "path": "src/robomongo/core/mongodb/MongoClient.cpp",
    "chars": 23543,
    "preview": "#include \"robomongo/core/mongodb/MongoClient.h\"\n\n#include \"mongo/db/namespace_string.h\"\n\n#include \"robomongo/core/domain"
  },
  {
    "path": "src/robomongo/core/mongodb/MongoClient.h",
    "chars": 3058,
    "preview": "#pragma once\n\n#include <mongo/client/dbclient_base.h>\n#include <mongo/bson/bsonobj.h>\n\n#include \"robomongo/core/Core.h\"\n"
  },
  {
    "path": "src/robomongo/core/mongodb/MongoWorker.cpp",
    "chars": 45642,
    "preview": "#include \"robomongo/core/mongodb/MongoWorker.h\"\n\n#include <algorithm>\n#include <exception>\n\n#include <QThread>\n\n#include"
  },
  {
    "path": "src/robomongo/core/mongodb/MongoWorker.h",
    "chars": 6047,
    "preview": "#pragma once\n\n#include <QObject>\n#include <QMutex>\n#include <unordered_set>\n\n#include <mongo/client/dbclient_rs.h> \n\n#in"
  },
  {
    "path": "src/robomongo/core/mongodb/ReplicaSet.cpp",
    "chars": 471,
    "preview": "\n#include \"robomongo/core/mongodb/ReplicaSet.h\"\n\nnamespace Robomongo\n{\n    ReplicaSet::ReplicaSet(std::string const& set"
  },
  {
    "path": "src/robomongo/core/mongodb/ReplicaSet.h",
    "chars": 764,
    "preview": "#pragma once\n\n#include <mongo/util/net/hostandport.h>\n#include <vector>\n\nnamespace Robomongo\n{\n    /**\n    * @brief Stru"
  },
  {
    "path": "src/robomongo/core/mongodb/SshTunnelWorker.cpp",
    "chars": 8625,
    "preview": "#include \"robomongo/core/mongodb/SshTunnelWorker.h\"\n\n#include <QThread>\n#include <QElapsedTimer>\n\n#include \"robomongo/co"
  },
  {
    "path": "src/robomongo/core/mongodb/SshTunnelWorker.h",
    "chars": 1953,
    "preview": "#pragma once\n\n#include <QObject>\n\n#include <robomongo/ssh/ssh.h>\n#include \"robomongo/core/events/MongoEvents.h\"\n\nQT_BEGI"
  },
  {
    "path": "src/robomongo/core/settings/ConnectionSettings.cpp",
    "chars": 8850,
    "preview": "#include \"robomongo/core/settings/ConnectionSettings.h\"\n\n#include <stdio.h>\n\n#include <QUuid>\n\n#include \"robomongo/core/"
  },
  {
    "path": "src/robomongo/core/settings/ConnectionSettings.h",
    "chars": 5808,
    "preview": "#pragma once\n\n#include <QString>\n#include <QVariant>\n#include <QVariantMap>\n\n#include <mongo/client/dbclient_base.h>\n#in"
  },
  {
    "path": "src/robomongo/core/settings/CredentialSettings.cpp",
    "chars": 2276,
    "preview": "#include \"robomongo/core/settings/CredentialSettings.h\"\n\n#include \"robomongo/core/utils/QtUtils.h\"\n#include \"robomongo/u"
  },
  {
    "path": "src/robomongo/core/settings/CredentialSettings.h",
    "chars": 2552,
    "preview": "#pragma once\n\n#include <QString>\n#include <QVariant>\n#include <QVariantMap>\n\nnamespace Robomongo\n{\n    class CredentialS"
  },
  {
    "path": "src/robomongo/core/settings/ReplicaSetSettings.cpp",
    "chars": 2813,
    "preview": "#include \"robomongo/core/settings/ReplicaSetSettings.h\"\n\n#include \"robomongo/core/utils/QtUtils.h\"\n\nnamespace Robomongo\n"
  },
  {
    "path": "src/robomongo/core/settings/ReplicaSetSettings.h",
    "chars": 2115,
    "preview": "#pragma once\n\n#include <QString>\n#include <QVariant>\n#include <QVariantMap>\n\n#include <mongo/util/net/hostandport.h>\n#in"
  },
  {
    "path": "src/robomongo/core/settings/SettingsManager.cpp",
    "chars": 27711,
    "preview": "#include \"robomongo/core/settings/SettingsManager.h\"\n\n#include <QDir>\n#include <QFile>\n#include <QVariantList>\n#include "
  },
  {
    "path": "src/robomongo/core/settings/SettingsManager.h",
    "chars": 9513,
    "preview": "#pragma once\n\n#include <QString>\n#include <QVariantMap>\n#include <QSet>\n#include <QDir>\n\n#include <vector>\n#include <cst"
  },
  {
    "path": "src/robomongo/core/settings/SshSettings.cpp",
    "chars": 2846,
    "preview": "#include \"robomongo/core/settings/SshSettings.h\"\n\n#include \"robomongo/core/utils/QtUtils.h\"\n#include \"robomongo/utils/Ro"
  },
  {
    "path": "src/robomongo/core/settings/SshSettings.h",
    "chars": 3137,
    "preview": "#pragma once\n\n#include <QString>\n#include <QVariant>\n#include <QVariantMap>\n\nnamespace Robomongo\n{\n    class SshSettings"
  },
  {
    "path": "src/robomongo/core/settings/SslSettings.cpp",
    "chars": 2578,
    "preview": "#include \"robomongo/core/settings/SslSettings.h\"\n\n#include \"robomongo/core/utils/QtUtils.h\"\n#include \"robomongo/utils/Ro"
  },
  {
    "path": "src/robomongo/core/settings/SslSettings.h",
    "chars": 2771,
    "preview": "#pragma once\n\n#include <QString>\n#include <QVariant>\n#include <QVariantMap>\n\nnamespace Robomongo\n{\n    class SslSettings"
  },
  {
    "path": "src/robomongo/core/utils/BsonUtils.cpp",
    "chars": 26730,
    "preview": "#include \"robomongo/core/utils/BsonUtils.h\"\n\n#include <mongo/client/dbclient_base.h>\n//#include <mongo/bson/bsonobjitera"
  },
  {
    "path": "src/robomongo/core/utils/BsonUtils.h",
    "chars": 3887,
    "preview": "#pragma once\n\n#include <mongo/bson/bsonelement.h>\n#include <mongo/bson/bsonobj.h>\n\n#include \"robomongo/core/Enums.h\"\n\ncl"
  },
  {
    "path": "src/robomongo/core/utils/Logger.cpp",
    "chars": 2005,
    "preview": "#include \"robomongo/core/utils/Logger.h\"\n\n#include <QDir>\n#include <QMetaType>\n\n#include \"robomongo/core/AppRegistry.h\"\n"
  },
  {
    "path": "src/robomongo/core/utils/Logger.h",
    "chars": 1340,
    "preview": "#pragma once\n\n#include <QObject>\n#include <QString>\n#include <string>\n\n#include <mongo/logger/log_severity.h>\n\n#include "
  },
  {
    "path": "src/robomongo/core/utils/QtUtils.cpp",
    "chars": 1573,
    "preview": "#include \"robomongo/core/utils/QtUtils.h\"\n\n#include <QThread>\n#include <QTreeWidgetItem>\n\nnamespace Robomongo\n{\n    name"
  },
  {
    "path": "src/robomongo/core/utils/QtUtils.h",
    "chars": 926,
    "preview": "#pragma once\n#include <QString>\n#include <QModelIndex>\n\nQT_BEGIN_NAMESPACE\nclass QThread;\nclass QTreeWidgetItem;\nclass Q"
  },
  {
    "path": "src/robomongo/core/utils/SingletonPattern.hpp",
    "chars": 1019,
    "preview": "#pragma once\nnamespace Patterns\n{\n    template <class T>\n    class Singleton\n    {\n      static T* _self;\n    public:\n  "
  },
  {
    "path": "src/robomongo/core/utils/StdUtils.cpp",
    "chars": 111,
    "preview": "#include \"robomongo/core/utils/StdUtils.h\"\n\nnamespace Robomongo\n{\n    namespace stdutils\n    {\n       \n    }\n}\n"
  },
  {
    "path": "src/robomongo/core/utils/StdUtils.h",
    "chars": 1245,
    "preview": "#pragma once\n\n#include <algorithm>\n#include <functional>\n\nnamespace Robomongo\n{\n    namespace stdutils\n    {\n        tem"
  },
  {
    "path": "src/robomongo/gui/AppStyle.cpp",
    "chars": 1730,
    "preview": "#include \"robomongo/gui/AppStyle.h\"\n\n#include <QApplication>\n#include <QStyleFactory>\n\n#include \"robomongo/core/AppRegis"
  },
  {
    "path": "src/robomongo/gui/AppStyle.h",
    "chars": 761,
    "preview": "#pragma once\n\n#include <QStyle>\n#include <QProxyStyle>\n\nnamespace Robomongo\n{\n    namespace AppStyleUtils\n    {\n        "
  },
  {
    "path": "src/robomongo/gui/GuiRegistry.cpp",
    "chars": 13001,
    "preview": "#include \"robomongo/gui/GuiRegistry.h\"\n#include \"robomongo/core/AppRegistry.h\"\n#include \"robomongo/core/settings/Setting"
  },
  {
    "path": "src/robomongo/gui/GuiRegistry.h",
    "chars": 3683,
    "preview": "#pragma once\n\n#include <QIcon>\n#include <QBrush>\n#include <QAbstractItemView>\n\nnamespace Robomongo\n{\n    /**\n     * @bri"
  },
  {
    "path": "src/robomongo/gui/MainWindow.cpp",
    "chars": 57688,
    "preview": "#include \"robomongo/gui/MainWindow.h\"\n\n#include <QApplication>\n#include <QToolButton>\n#include <QMessageBox>\n#include <Q"
  },
  {
    "path": "src/robomongo/gui/MainWindow.h",
    "chars": 4639,
    "preview": "#pragma once\n\n#include <QMainWindow>\n#include <QSystemTrayIcon>\n\nQT_BEGIN_NAMESPACE\nclass QLabel;\nclass QToolBar;\nclass "
  },
  {
    "path": "src/robomongo/gui/dialogs/AboutDialog.cpp",
    "chars": 4216,
    "preview": "#include \"robomongo/gui/dialogs/AboutDialog.h\"\n\n#include <QDate>\n#include <QDialogButtonBox>\n#include <QGridLayout>\n#inc"
  },
  {
    "path": "src/robomongo/gui/dialogs/AboutDialog.h",
    "chars": 188,
    "preview": "#pragma  once\n\n#include <QDialog>\n\nnamespace Robomongo\n{\n    class AboutDialog : public QDialog\n    {\n        Q_OBJECT\n\n"
  },
  {
    "path": "src/robomongo/gui/dialogs/ChangeShellTimeoutDialog.cpp",
    "chars": 2514,
    "preview": "\n#include \"robomongo/gui/dialogs/ChangeShellTimeoutDialog.h\"\n\n#include <QDialog>\n#include <QDialogButtonBox>\n#include <Q"
  },
  {
    "path": "src/robomongo/gui/dialogs/ChangeShellTimeoutDialog.h",
    "chars": 75,
    "preview": "#pragma once\n\nnamespace Robomongo\n{\n    void changeShellTimeoutDialog();\n}\n"
  },
  {
    "path": "src/robomongo/gui/dialogs/ConnectionAdvancedTab.cpp",
    "chars": 6687,
    "preview": "#include \"robomongo/gui/dialogs/ConnectionAdvancedTab.h\"\n\n#include <QLabel>\n#include <QGridLayout>\n#include <QLineEdit>\n"
  },
  {
    "path": "src/robomongo/gui/dialogs/ConnectionAdvancedTab.h",
    "chars": 940,
    "preview": "#pragma once\n\n#include <QWidget>\n\nQT_BEGIN_NAMESPACE\nclass QLineEdit;\nclass QCheckBox;\nclass QPushButton;\nQT_END_NAMESPA"
  },
  {
    "path": "src/robomongo/gui/dialogs/ConnectionAuthTab.cpp",
    "chars": 8868,
    "preview": "#include \"robomongo/gui/dialogs/ConnectionAuthTab.h\"\n\n#include <QGridLayout>\n#include <QLineEdit>\n#include <QLabel>\n#inc"
  },
  {
    "path": "src/robomongo/gui/dialogs/ConnectionAuthTab.h",
    "chars": 1414,
    "preview": "#pragma once\n\n#include <QWidget>\n\n#include \"robomongo/gui/utils/GuiConstants.h\"\n\nQT_BEGIN_NAMESPACE\nclass QLineEdit;\ncla"
  },
  {
    "path": "src/robomongo/gui/dialogs/ConnectionBasicTab.cpp",
    "chars": 17146,
    "preview": "#include \"robomongo/gui/dialogs/ConnectionBasicTab.h\"\n\n#include <QLabel>\n#include <QLineEdit>\n#include <QGridLayout>\n#i"
  },
  {
    "path": "src/robomongo/gui/dialogs/ConnectionBasicTab.h",
    "chars": 1648,
    "preview": "#pragma once\n\n#include <QWidget>\nQT_BEGIN_NAMESPACE\nclass QLineEdit;\nclass QLabel;\nclass QCheckBox;\nclass QPushButton;\nc"
  },
  {
    "path": "src/robomongo/gui/dialogs/ConnectionDiagnosticDialog.cpp",
    "chars": 12298,
    "preview": "#include \"robomongo/gui/dialogs/ConnectionDiagnosticDialog.h\"\n\n#include <QGridLayout>\n#include <QApplication>\n#include <"
  },
  {
    "path": "src/robomongo/gui/dialogs/ConnectionDiagnosticDialog.h",
    "chars": 1696,
    "preview": "#pragma once\n\n#include <QDialog>\n#include <QIcon>\n\nclass QLabel;\nclass QMovie;\n\nnamespace Robomongo\n{\n    struct Connect"
  },
  {
    "path": "src/robomongo/gui/dialogs/ConnectionDialog.cpp",
    "chars": 5354,
    "preview": "#include \"robomongo/gui/dialogs/ConnectionDialog.h\"\n\n#include <QPushButton>\n#include <QCloseEvent>\n#include <QHBoxLayout"
  },
  {
    "path": "src/robomongo/gui/dialogs/ConnectionDialog.h",
    "chars": 2183,
    "preview": "#pragma once\n\n#include <QDialog>\n\n#include \"robomongo/core/Core.h\"\n#include \"robomongo/gui/utils/GuiConstants.h\"\n\nnamesp"
  },
  {
    "path": "src/robomongo/gui/dialogs/ConnectionsDialog.cpp",
    "chars": 17547,
    "preview": "#include \"robomongo/gui/dialogs/ConnectionsDialog.h\"\n\n#include <QPushButton>\n#include <QHBoxLayout>\n#include <QAction>\n#"
  },
  {
    "path": "src/robomongo/gui/dialogs/ConnectionsDialog.h",
    "chars": 3098,
    "preview": "#pragma once\n\n#include <QDialog>\n#include <QTreeWidget>\n\n#include \"robomongo/core/Core.h\"\n\nnamespace Robomongo\n{\n    cla"
  },
  {
    "path": "src/robomongo/gui/dialogs/CopyCollectionDialog.cpp",
    "chars": 5553,
    "preview": "#include \"robomongo/gui/dialogs/CopyCollectionDialog.h\"\n\n#include <QPushButton>\n#include <QHBoxLayout>\n#include <QVBoxLa"
  },
  {
    "path": "src/robomongo/gui/dialogs/CopyCollectionDialog.h",
    "chars": 929,
    "preview": "#pragma once\n\n#include <QDialog>\n#include \"robomongo/core/domain/App.h\"\nQT_BEGIN_NAMESPACE\nclass QDialogButtonBox;\nclass"
  },
  {
    "path": "src/robomongo/gui/dialogs/CreateCollectionDialog.cpp",
    "chars": 23526,
    "preview": "#include \"robomongo/gui/dialogs/CreateCollectionDialog.h\"\n\n#include <mongo/bson/bsonobjbuilder.h>\n#include <QApplication"
  },
  {
    "path": "src/robomongo/gui/dialogs/CreateCollectionDialog.h",
    "chars": 9313,
    "preview": "#pragma once\n\n#include <mongo/bson/bsonobj.h>\n#include <QDialog>\n\nQT_BEGIN_NAMESPACE\nclass QLabel;\nclass QDialogButtonBo"
  },
  {
    "path": "src/robomongo/gui/dialogs/CreateDatabaseDialog.cpp",
    "chars": 3653,
    "preview": "#include \"robomongo/gui/dialogs/CreateDatabaseDialog.h\"\n\n#include <QPushButton>\n#include <QHBoxLayout>\n#include <QVBoxLa"
  },
  {
    "path": "src/robomongo/gui/dialogs/CreateDatabaseDialog.h",
    "chars": 1073,
    "preview": "#pragma once\n\n#include <QDialog>\nQT_BEGIN_NAMESPACE\nclass QLabel;\nclass QDialogButtonBox;\nclass QLineEdit;\nQT_END_NAMESP"
  },
  {
    "path": "src/robomongo/gui/dialogs/CreateUserDialog.cpp",
    "chars": 8701,
    "preview": "#include \"robomongo/gui/dialogs/CreateUserDialog.h\"\n\n#include <QHBoxLayout>\n#include <QPushButton>\n#include <QCheckBox>\n"
  },
  {
    "path": "src/robomongo/gui/dialogs/CreateUserDialog.h",
    "chars": 1259,
    "preview": "#pragma once\n\n#include <QDialog>\nQT_BEGIN_NAMESPACE\nclass QTextEdit;\nclass QLabel;\nclass QCheckBox;\nclass QLineEdit;\ncla"
  },
  {
    "path": "src/robomongo/gui/dialogs/DocumentTextEditor.cpp",
    "chars": 8625,
    "preview": "#include \"robomongo/gui/dialogs/DocumentTextEditor.h\"\n\n#include <QApplication>\n#include <QHBoxLayout>\n#include <QPushBut"
  }
]

// ... and 1799 more files (download for full content)

About this extraction

This page contains the full source code of the Studio3T/robomongo GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1999 files (32.9 MB), approximately 5.8M tokens, and a symbol index with 10306 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!