Compare commits

...
781 Commits
Author SHA1 Message Date
Malte LangkabelandGitHub 4b1b0e4fd1 docs: Change link to blog post in Readme 2021-12-13 19:24:17 +01:00
Eberhard Graether bdd3c4d910 res: Changelog for 2021.4.19 2021-11-30 20:13:24 +01:00
Eberhard Graether 2863686bf2 docs: Changed image sizes to not cover the full width 2021-11-30 11:19:12 +01:00
Malte LangkabelandGitHub e992f14ff1 src: switch in-app links to documentation to .md file on GitHub(#1230) 2021-11-29 19:20:58 +01:00
Malte LangkabelandGitHub 3833a93f8d doc: remove website links from readme 2021-11-29 19:20:20 +01:00
Eberhard Graether 4cea653367 docs: Converted docs to Markdown file DOCUMENTATION.md 2021-11-23 20:47:48 +01:00
Malte LangkabelandGitHub c6169a989d ui: changes for discontinue of Sourcetrail (#1229)
* remove patreon button from start screen
* change text on github button on start screen
* remove outdated info from "about" dialog
* replace references to website by links to github repo
2021-11-23 07:11:21 +01:00
Malte LangkabelandGitHub cb2e3d369e logic: remove update checking code (#1226)
Removed because we are not planning to release any further versions of this software.
2021-11-22 13:21:39 +01:00
Frédéric SimonisandGitHub 1a2a81b137 logic: fix extensive wait for short-lived processes (#1227) 2021-11-22 13:19:54 +01:00
mlangkabel 98cb81ef3a switch timestamp server for windows packaging 2021-10-25 15:44:39 +02:00
mlangkabel b67d5be03b res: re-add all Patreon sponsors with their at their highest tier 2021-09-20 16:35:07 +02:00
mlangkabel 463c055f4e res: Update SPONSORS.md - September 2021 2021-09-20 16:08:35 +02:00
Daniel AsztalosandGitHub 565c9d5db6 docs: missing close list tag added (#1212) 2021-09-14 20:20:44 +02:00
mlangkabel 5860949144 res: Update SPONSORS.md - August 2021 2021-08-07 21:21:10 +02:00
amorphous1andGitHub 3d68f1d131 src: support Gradle 7 when copying (test) compile libs (#1203)
Gradle 7 drops support of the depracated compile/testCompile configurations - compileClasspath/testCompileClasspath can be used instead.
2021-07-26 17:28:04 +02:00
Frédéric SimonisandGitHub 6e1eb2cf8a src: Add support for LLVM 12 (#1194) 2021-07-26 16:50:48 +02:00
Brandon ShawandGitHub 3d27274f33 ui: fix background color of line number was ignored in stylesheet (issue #1201) (#1202) 2021-07-19 20:42:14 +02:00
Brandon ShawandGitHub 55964b6f1d ui: fix issue where C/C++ keywods could have the syntax highlighting style of a function (issue #1197) (#1199)
by moving FUNCTION rule in cpp.rules above KEYWORD rules
2021-07-12 16:10:19 +02:00
Brandon ShawandGitHub 689877a42f ui: add color schemes "solarized_dark.xml" and "solarized_light.xml" (#1195) 2021-07-12 15:26:15 +02:00
mlangkabel c1627944d4 res: Update SPONSORS.md - June 2021 2021-06-07 16:25:16 +02:00
mlangkabel b5fb1dd22b res: Updated SPONSORS.md - April 2021 2021-04-12 16:29:05 +02:00
mlangkabel 1556161bcc res: Changelog for 2021.1.30 (beta) 2021-03-15 21:43:21 +01:00
mlangkabel 532ecbfc73 docs: update documentation version and fix link 2021-03-14 08:36:53 +01:00
Josh SorefandGitHub 12bbce899e build: replace timestamp endpoint for Windows code signing (#1164)
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2021-03-14 08:13:08 +01:00
Josh SorefandGitHub 3a75ef0df4 src: correct spelling errors (#1162) 2021-03-14 07:47:26 +01:00
Malte LangkabelandGitHub 5932e9f1e8 ui: hide news widget if no news are available (#1160) 2021-03-09 07:48:16 +01:00
Malte LangkabelandGitHub 804e564c8d update SourcetrailPythonIndexer to version 1.25.6 to fix TextAccess issue (#1159)
* before this update the SourcetrailPythonIndexer was saving indexed code to the database different than Sourcetrail, which could result in crashes
2021-03-09 07:43:27 +01:00
mlangkabel 7c30074165 res: Updated SPONSORS.md - March 2021 2021-03-08 22:13:28 +01:00
Malte LangkabelandGitHub 33e3f96283 build: make Windows CI build and test Java language support (#1156) 2021-03-03 07:33:29 +01:00
Rainer WinklerandGitHub f1686147c4 doc: Adapt cmake -DBOOST_ROOT path in README to reflect downgrade of boost (#1153)
With #775 Boost was downgraded to 1.67 (from 1.68).
With pull request #807 the readme file was corrected. But this correction was not complete. The example path for the -DBOOST_ROOT parameter of cmake was left unchanged.
2021-02-27 19:39:04 +01:00
Malte LangkabelandGitHub 220ac82681 data: update Java dependencies to add support for Java 13, 14 and 15 (#1152)
* updated java indexer dependencies
* replaced old gradle tooling jar that is shipped with Sourcetrail because it is not working for new JRE versions anymore
* fixed crash in Java indexer
* added language standard sleection for Java 13, 14 and 15
* fixed console logging for recent jdk versions
2021-02-25 18:28:17 +01:00
Malte LangkabelandGitHub 7cb232af86 remove call to boost::filesystem::canonical when preparing indexer (issue #1149) (#1151)
boost::filesystem::canonical causes issues on Windows and will throw an exception if path is too long. Now those paths will be ignored by the indexer because boost::filesystem::exists returns false.
2021-02-25 07:38:01 +01:00
mlangkabel 5a2b0fd591 test: add HierarchyCache test for diamond inheritance and fix cyclic inheritance test 2021-02-23 23:12:16 +01:00
Toni DietzeandGitHub 7d344fb08e logic: fix multi-level inheritance edges when there are diamonds (#1142)
The old implementation produces several multi-inheritance edges between
two classes if there are multiple inheritance paths between them due to
multiple inheritance diamonds. The new implementation produces only one
edge in such a case.

Also, the old implementation has performance issues when there is a huge
number of inheritance paths starting at the focused class. With a
pathological multiple inheritance class structure, the number of paths
can be exponential in the number of involved classes. The new
implementation solves this issue by considering subgraphs instead of
paths.

The following is a small problematic example, which does not show the
performance problem due to its small size. However, when focusing on
X::foo, the old implementation produces 4 different multi-level
inheritance edges from X to B1 while the new implementation produces
only one multi-level inheritance edge, which is basically the union of
the edges of the old implementation:

    struct B1 {
    	virtual void foo() = 0;
    };
    struct C1 : B1 {};
    struct D1 : B1 {};
    struct B2 : C1, D1 {};
    struct C2 : B2 {};
    struct D2 : B2 {};
    struct B3 : C2, D2 {};

    struct X : B3 {
    	void foo() override {};
    };

    int main () {
    	X x;
    	x.foo();
    	return 0;
    }
2021-02-23 23:04:18 +01:00
Malte LangkabelandGitHub 4b922ed103 src: specify if file or directory path is returned by helpers (#1146) 2021-02-22 21:55:30 +01:00
mlangkabel 6ab808852c test: make HierarchyCache tests independent of edge order 2021-02-22 18:22:51 +01:00
mlangkabel 4d35697f9e test: add inheritance edge tests for HierarchyCache 2021-02-22 17:04:16 +01:00
Malte LangkabelandGitHub 3c1638da25 src: switch from Qt to boost implementation of executeProcess (#1145)
* changed implementation of executeProcess
* unified all different implementations of executeProcess
* separated arg list from command for all calls of executeProcess (this also required to remove quotes that were added to path args because otherwise the Python indexer would mistake absolute paths for relative paths.)
* update expected output for custom command tests
2021-02-22 16:00:32 +01:00
mlangkabel 9a13c194df ui: remove "beta" notice for Python support 2021-02-17 07:30:30 +01:00
BenandGitHub be68740839 doc: markdown formatting of docker readme (#1140)
indented code snippets by 4 spaces
2021-02-16 08:22:48 +01:00
37b4bbb432 src: simplify symbolic link resolution in Linux Sourcetrail launch script (#1134)
Co-authored-by: Yakov Markovitch <yakov.spare@gmail.com>
2021-02-15 20:31:26 +01:00
midchildanandGitHub 64b42f1de4 src: fix java path detection failures on linux (#1138)
readlink was being invoked as "readlink" "-f path/to/java". It should've been "readlink" "-f" "path/to/java" instead.
2021-02-15 19:48:06 +01:00
mlangkabel 17cbe4619f res: Updated SPONSORS.md - February 2021 2021-02-15 16:35:28 +01:00
freddiiandGitHub b60eaa5b09 docs: fixed typos (#1131) 2021-02-08 13:18:25 +01:00
Malte LangkabelandGitHub b642929790 Revert "Revert "test: fix expected output for CXX indexer tests"" (#1137)
This reverts commit e3c0ed9349.
2021-02-08 12:47:08 +01:00
Malte LangkabelandGitHub a4e0296471 src: revert migration of QProcess::start() to QStringList (#1136)
* Revert "src: Migrate QProcess::start() to QStringList (#1107)"

This reverts commit 8b8c186697.

* Revert "fix escaping in mvn path detector (necessary after 8b8c1866)"

This reverts commit fcd2f33304.
2021-02-08 11:20:02 +01:00
mlangkabel 220b8bad0b logic: add nullpointer checks in CXX ast visitor 2021-01-25 22:02:16 +01:00
mlangkabel e3c0ed9349 Revert "test: fix expected output for CXX indexer tests"
This reverts commit ce1d5e8443.
2021-01-12 07:49:05 +01:00
mlangkabel ce1d5e8443 test: fix expected output for CXX indexer tests 2021-01-11 19:54:02 +01:00
Malte LangkabelandGitHub 281dfd7fac docs: update language support version numbers in docu 2021-01-11 16:23:40 +01:00
Malte LangkabelandGitHub f18bef7f73 build: make Java tests run on Linux CI (#1127) 2021-01-11 14:34:28 +01:00
Eberhard Graether 2fbe3d68ea res: Updated SPONSORS.md - January 2021 2021-01-06 23:20:31 +01:00
Eberhard Graether 27262d20b4 res: Changelog for 2020.4.35 2021-01-06 23:14:18 +01:00
Malte LangkabelandGitHub d0f9056f15 ui: move "Save Graph as Image..." up in "Edit" menu to keep "Preferences..." at the bottom (#1124)
This is done because users may already be used to "preferences" being the bottom-most button and may accidentally click "Save Graph as Image..." when they actually want to open the preferences screen.
2020-12-31 18:39:07 +01:00
Malte Langkabel a087ef9454 build: fix warning (treated as error on windows) 2020-12-31 16:27:52 +01:00
Eberhard Graether 989f174678 res: Changelog for 2020.4.32 (beta) 2020-12-16 22:50:44 +01:00
mlangkabel 3be856b1f9 build: update windows build scripts to new code signing mechanism 2020-12-14 21:01:58 +01:00
Eberhard Graether cf9534d795 res: Updated SPONSORS.md - December 2020 2020-12-08 18:58:04 +01:00
Frédéric SimonisandGitHub f70e9ecbc4 build: Add compatibility layer for Qt versions (#1118) 2020-12-07 15:34:14 +01:00
Malte LangkabelandGitHub 5cae072a02 build: Update to LLVM 11.0.0 (issue #1088) (#1116) 2020-12-01 07:53:20 +01:00
mlangkabel 1a0b564b1e ui: change text of error message if Java could not be loaded to be less narrow regarding the cause 2020-11-30 16:12:04 +01:00
Malte LangkabelandGitHub efc80fde57 logic: check if clang NamedDecl really has a name before asking for it to prevent assert (issue #1075) (#1112) 2020-11-18 19:25:12 +01:00
mlangkabel fcd2f33304 fix escaping in mvn path detector (necessary after 8b8c1866) 2020-11-18 17:44:32 +01:00
mlangkabel d3873213f1 logic: add another codeblocks related null check 2020-11-18 17:11:03 +01:00
William WoldandGitHub 4b6b58de86 logic: fix crash when using codeblocks project (issue #1109) (#1110) 2020-11-18 16:47:14 +01:00
miltolstoyandGitHub 8990eb320d logic: add menu action for graph 'save as image' (issue #426) (#1104) 2020-11-18 16:19:27 +01:00
Frédéric SimonisandGitHub 8b8c186697 src: Migrate QProcess::start() to QStringList (#1107)
The non-QStringList variant of QProcess::start() was removed in Qt 5.15.
The adapted method handles escaping of the arguments, which simplifies
code in some locations.
2020-11-18 15:45:38 +01:00
mlangkabel 4277bcc47d docs: mention PyCharm and CLion in Editor Plugins section 2020-11-18 15:30:43 +01:00
Eberhard Graether 73772365ad res: Updated SPONSORS.md - November 2020 2020-11-04 22:39:47 +01:00
miltolstoyandGitHub ad9d8d7930 logic: remember graph zoom level on restart (issue #801) (#1099) 2020-10-23 19:25:44 +02:00
Eberhard Graether a37681e58b res: Updated SPONSORS.md - October 2020 2020-10-19 22:11:42 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3e9fd2306b build(deps-dev): bump junit (#1097)
Bumps [junit](https://github.com/junit-team/junit4) from 3.8.1 to 4.13.1.
- [Release notes](https://github.com/junit-team/junit4/releases)
- [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.13.1.md)
- [Commits](https://github.com/junit-team/junit4/commits/r4.13.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-10-19 13:26:26 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
b86e237c0b build(deps-dev): bump junit (#1096)
Bumps [junit](https://github.com/junit-team/junit4) from 3.8.1 to 4.13.1.
- [Release notes](https://github.com/junit-team/junit4/releases)
- [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.13.1.md)
- [Commits](https://github.com/junit-team/junit4/commits/r4.13.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-10-19 13:26:14 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
404511603d build(deps-dev): bump junit (#1095)
Bumps [junit](https://github.com/junit-team/junit4) from 3.8.1 to 4.13.1.
- [Release notes](https://github.com/junit-team/junit4/releases)
- [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.13.1.md)
- [Commits](https://github.com/junit-team/junit4/commits/r4.13.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-10-19 13:26:03 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
744b8e3186 build(deps-dev): bump junit (#1094)
Bumps [junit](https://github.com/junit-team/junit4) from 3.8.1 to 4.13.1.
- [Release notes](https://github.com/junit-team/junit4/releases)
- [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.13.1.md)
- [Commits](https://github.com/junit-team/junit4/commits/r4.13.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-10-19 13:25:09 +02:00
Malte LangkabelandGitHub 5795114561 build: fix compiler issue when CMAKE_CXX_COMPILER_LAUNCHER was set to ccache (issue #1081) (#1093) 2020-10-19 13:05:33 +02:00
Malte LangkabelandGitHub b54b1a6e02 data: update python indexer to v1.db25.p5 (#1087) 2020-10-05 10:02:05 +02:00
Malte LangkabelandGitHub 7dd45b586b build: replace winrar dependency by 7z (#1077) 2020-09-08 18:36:40 +02:00
Eberhard Graether a26679d6d3 res: Updated SPONSORS.md - September 2020 2020-09-08 00:04:56 +02:00
midchildanandGitHub 85329174ba test: fix expected output for c sourcegroup tests on unix (#1073)
follow-up of f3614a37 and 0294589f
2020-08-23 00:33:30 +02:00
midchildanandGitHub d079d1787c logic: explicitly add u+w permission when copying initial user data on Linux (#1072) 2020-08-23 00:31:48 +02:00
bam80andGitHub 7d51b7d917 build: fixed duplicating Sourcetrail icon on run on Linux (#1071)
fixes #1068
2020-08-21 23:58:20 +02:00
mlangkabel f3614a3745 fixed expected output for c sourcegroup tests 2020-08-17 13:41:39 +02:00
Sergei NikulovandGitHub 8e30c8b633 build: fixed issue with clang includes detection (issue #1058) (#1064) 2020-08-17 10:26:03 +02:00
Eberhard Graether cffdf6b57f res: Updated SPONSORS.md - August 2020 2020-08-10 08:17:47 +02:00
Malte LangkabelandGitHub e946c475c4 Qt 5.12 deprecation fixes (#1003) 2020-08-04 18:13:18 +02:00
Eberhard Graether ca890978ab linux: Prevent word splitting within arguments passed to Sourcetrail.sh (#1057)
closes #1057
2020-07-07 21:21:39 +02:00
5536613411 build: Support linking with LLVM/Clang Dylib instead of individual components (#1044)
Co-authored-by: serge-sans-paille <sguelton@redhat.com>
2020-07-07 10:02:28 +02:00
Eberhard Graether 2dfca2f53d res: Updated SPONSORS.md - July 2020 2020-07-06 20:19:51 +02:00
Eberhard Graether aeea6e62d8 res: Changelog for Release 2020.2.43 2020-06-29 20:40:30 +02:00
Eberhard Graether b0d03d9c8d docs: Updates for release 2020.2
closes #1047
2020-06-29 19:41:47 +02:00
Eberhard GrätherandGitHub 3950da7999 src: Rename aggregation edge to bundled edges (#1051)
The term aggregation is misleading. Bundled edges is a better definition for this type of edge.

closes #962
2020-06-29 19:41:12 +02:00
Malte LangkabelandGitHub 7008d2abdd logic: fix error recording for multi-threaded custom command indexing (issue #1043) (#1049)
In multi-threaded custom command indexing errors were read from the wrong storage.
2020-06-29 19:25:26 +02:00
Eberhard GrätherandGitHub 27558c42bb ui: Fixed crash when changing tabs during animation (#1046)
Changing tabs during animation triggers a hover leave event on the focused node, which moves the focus to the parent node if available. This parent node however is still the old node, and deleted after the graph transition animation finishes, which leaves a dangling pointer.

closes #1021
2020-06-29 01:05:53 +02:00
Eberhard Graether 673e26e290 res: Fixed Changelog markdown 2020-06-11 09:25:42 +02:00
Eberhard Graether 44bd0aad01 res: Changelog for release 2020.2 (beta) 2020-06-09 00:00:49 +02:00
Malte LangkabelandGitHub 6d39039b4a ui: improve help message for cxx "source file extensions" in project settings (#1039) 2020-06-08 21:19:59 +02:00
Malte LangkabelandGitHub 0294589f16 logic: set language to "C" for "Empty C" Sourcegroups (#1038) 2020-06-08 19:47:38 +02:00
Malte LangkabelandGitHub 8962c6d511 data: update python indexer to v1.db25.p4 (#1037) 2020-06-08 18:54:34 +02:00
Malte LangkabelandGitHub a76a19041f build: remove unused windows 32 bit deployment 2020-06-08 16:35:31 +02:00
Eberhard GrätherandGitHub 9a8fa94905 build: Migrate Linux '.tar.gz' package creation from CPack to linuxdeployqt (#1034)
Unified Linux package creation into single script 'setup/Linux/createPackages.sh' that uses 'linuxdeployqt' for both the '.tar.gz' and '.AppImage' package.
2020-06-08 15:06:42 +02:00
Malte LangkabelandGitHub 9bac6cc411 build: fix crash in cxx indexer due to usage of DenseMap as mentioned in PR #971 (#1035) 2020-06-08 14:45:30 +02:00
mlangkabel b307a106f7 fixed last filepicker location was cleared when file picker dialog was aborted 2020-06-08 11:42:34 +02:00
miltolstoyandGitHub 0da704eabe logic: save last filepicker location (issue #802) (#1024) 2020-06-08 11:24:38 +02:00
Eberhard GrätherandGitHub e7fc3d205d build: Updated Travis CI docker image to LLVM/Clang 10.0.0 (#1033) 2020-06-07 16:44:14 +02:00
Louis St-AmourandGitHub a12deb2056 Fixes for Clang 10 compatibility (closes #965) (#968)
Primarily FrontendAction now gets passed as unique_ptr, but also StringRef was added in a few places. See https://releases.llvm.org/10.0.0/tools/clang/docs/ReleaseNotes.html#internal-api-changes and http://llvm.org/docs/ProgrammersManual.html#the-stringref-class Also, llvm::make_unique is now std::make_unique: https://reviews.llvm.org/D66259 because LLVM requires C++14.
2020-06-07 16:18:58 +02:00
Eberhard Graether 43a6b1308b res: Updated SPONSORS.md - June 2020 2020-06-02 22:47:22 +02:00
Eberhard GrätherandGitHub a3abdf7c04 java: Updated macOS Java Path detector and docs to current JDK file structure (#1031) 2020-06-01 23:42:02 +02:00
Eberhard GrätherandGitHub ef8b9e0031 src: Improved performance of FilePathFilter (#1030)
* Only retrieve FilePath::wstr once per checked FilePath
* Replaced all invokation of FilePathFilter::isMatching with FilePathFilter::areMatching
* Don't pass match to std::regex_match
* set 'optimize' flag on regexes

partly fixes #1007
2020-05-31 21:34:14 +02:00
Eberhard Graether b7ad802cc2 res: Fixed wrong year in Changelog 2020-05-18 16:42:11 +02:00
Malte LangkabelandGitHub 11563a0f48 build: fix warnings due to empty switch statememts if no language support is built (#1015) 2020-05-15 18:34:02 +02:00
Malte LangkabelandGitHub 3d5529b694 build: create symlinks in cmake on Windows (#1014) 2020-05-15 17:54:02 +02:00
Louis St-AmourandGitHub caa2deb546 build: Set C++ standard to C++17 from C++14 (#971)
This is not yet the case but if our code uses DenseMap, Clang has to be compiled with C++17 to work natively with C++17 host applications
2020-05-15 14:23:22 +02:00
Malte LangkabelandGitHub 66ea5a9be4 ui: fix corrupted display of non-ascii characters in about window (issue #1011) (#1013) 2020-05-15 11:59:50 +02:00
Malte LangkabelandGitHub 89ee28351a build: Copy Clang compiler headers from Clang build dir in CMake (issue #993) (#1005) 2020-05-09 08:48:05 +02:00
Malte LangkabelandGitHub 8a75946c73 logic: improve logging if exception occurred while loading project (#1004) 2020-05-08 16:09:29 +02:00
Frédéric SimonisandGitHub f86a4afdc5 ui: Add graph action 'copy to clipboard' (#999)
* Refactor image generation into separate function
2020-05-06 06:17:33 +02:00
Eberhard Graether 3fb14b3000 res: Updated SPONSORS.md - May 2020 2020-05-04 22:20:44 +02:00
Malte LangkabelandGitHub db148c0573 docs: add "Customizable Color Schemes" section to documentation (#991) 2020-04-28 21:48:13 +02:00
Malte LangkabelandGitHub 6cef832329 ui: extend "compiler flags" help message (issue #974) (#990)
* extend help dialog for preprocessor defines in project setup to assign values to defines
* make documentation consistent with message box
2020-04-23 16:30:23 +02:00
Eberhard Graether 242fe22419 src: Minor refactorings in graph focus handling 2020-04-20 22:02:58 +02:00
Louis St-AmourandGitHub 224c89182a src: Apply clang-format and extend use to Java code (#973) 2020-04-19 14:11:48 +02:00
Eberhard GrätherandGitHub a6e02cc249 src: Fixed can't convert initializer list to const ref for some VS versions #986
regards #985
2020-04-19 12:19:18 +02:00
Eberhard Graether d50ebb5de9 build: Create .dmg release package using HFS+ filesystem to be mountable on older macOS versions (closes #619) 2020-04-14 19:31:34 +02:00
Malte LangkabelandGitHub 7162a4908a docs: restructure build information in readme (#980) 2020-04-14 15:20:52 +02:00
Louis St-AmourandGitHub 1320f703e4 data: Copy paste typo fix in ProjectSettings_template.xml (#972) 2020-04-12 10:48:01 +02:00
Malte LangkabelandGitHub 54c6f189b1 respect "super()" in python post processing (#964)
if a method call is qualified with "super()" only record edges pointing to the base class of the context of the callee
2020-04-06 20:16:27 +02:00
Eberhard Graether 6ae55b3281 test: Ammending missing test data for #959 2020-04-03 15:29:12 +02:00
Eberhard GrätherandGitHub 2924c1c948 logic: Less restrictions for FilePath::isValid check on project location (#959)
Switch from using boost::filesystem::portable_name and boost::filesystem::portable_directory_name to using boost::filesystem::windows_name, which allows periods and spaces in paths.
Fixes #957
2020-04-03 15:27:31 +02:00
Eberhard GrätherandGitHub 0c577f2f69 ui: Refactored recent projects menu (#956)
fixes #848
2020-04-02 12:30:30 +02:00
Eberhard Graether 5a4de2d46a res: Updated SPONSORS.md - April 2020 2020-04-02 12:29:13 +02:00
Eberhard Graether 3aa7a85574 build: Fixed macOS bundling issues
* Fixed Info.plist file missing values and deprecated keys
* Compress with 'ditto' instead of 'zip' for correct app notarization
2020-03-31 14:04:36 +02:00
Eberhard Graether 5617672ee6 res: Changelog for release 2020.1 2020-03-31 14:03:36 +02:00
Malte LangkabelandGitHub f6e8a2125d logic: respect class qualifyer in method call for python post processing (#951)
If the class of a called method is explicitly specified ("Base.__init__()"), only record an ambiguous edge to that method.
2020-03-30 21:24:23 +02:00
Eberhard GrätherandGitHub 31cbf6c11a logic: Fixed multiple main declarations not shown as separate symbols when declaring file has same name (#950)
regards #233
2020-03-30 13:49:14 +02:00
mlangkabel f37716dc82 build: improve error handling if windows deployment cannot find the proper tools 2020-03-30 12:02:55 +02:00
Eberhard GrätherandGitHub d13c21f6f3 ui/test: Manual testing fixes (#949)
* Fixed tooltip list items not activated on click
* Fixed crash when clearing focused graph edges after displaying graph with no edges
* Updated and fixed manual graph view tests
* Fixed previous location refocused when activating local symbol
* Fixed crash in graph view after showing empty graph
2020-03-29 23:32:49 +02:00
Eberhard Graether a4d1403722 docs: Updated documentation to release 2020.1
* removed steps from Source Group setup
* added installation guide for Linux AppImage
* added new focus navigation shortcuts
2020-03-29 17:26:09 +02:00
Eberhard GrätherandGitHub bf6a017720 build: Provide AppImage package for Linux (issue #279) (#945)
* Create AppImage package using linuxdeployqt in Travis CI
* Renamed appPath() to sharedDataPath()
* Fixed include error in tutorial
2020-03-29 17:10:30 +02:00
Eberhard GrätherandGitHub 76562bb8ee ui: Fixes related to focus navigation (#948)
Scroll graph area with Ctrl + Arrows
Moved graph zoom to Ctrl + Shift + Up/Down
Scroll code area with Ctrl + Arrows
Fixed graph showing focus when activating the active symbol
Made links in project description focus-able
Fixed parent graph node not showing focus after hovering edge to child node
2020-03-29 16:01:22 +02:00
Andreas StallingerandGitHub 57fd9f277a build: rename TestSettings in MigratorTestSuite to enable UNITY_BUILD (#947)
Run cmake (minimum version 3.16) with -DCMAKE_UNITY_BUILD=ON to reduce build time.
2020-03-27 14:38:55 +01:00
Eberhard GrätherandGitHub eaa263be44 ui: Fix copy shortcut for selected code broken #943
fixes #940
2020-03-23 18:10:21 +01:00
Eberhard GrätherandGitHub 38925292b7 ui: Iterate code references within the same line when holding Shift (#936) 2020-03-05 15:41:17 +01:00
Eberhard Graether e8f258ba1d res: Changelog for Sourcetrail 2020.1.103-beta 2020-03-02 23:00:05 +01:00
Eberhard Graether b98634f226 build: Fixed macOS app notarization issues
* fixed code signing issues for app notarization
* extended bundle_install.sh script with optional app notarization
* also made DMG package creation optional
2020-03-02 22:44:19 +01:00
Eberhard Graether 140e0059e8 ui: Make content of help dialogs selectable (issue #805) 2020-03-02 16:19:31 +01:00
mlangkabel da7cd9411b build: change linux CI to deploy release builds for tags 2020-03-02 16:15:31 +01:00
Eberhard GrätherandGitHub b0616778f3 ui: Keyboard controls (#935)
* switch focus between views with Tab
* move focus within views with WASD/HJKL/Arrows
* move focus between graph edges by holding Shift
* move focus between code references by holding Shift
* removed graph panning with WASD and moved zooming to Alt + W/S
* removed graph navigation by pressing starting character in graph view lists
* changed local reference and custom trail shortcuts
* updated Keyboard Shortcuts window
* use common back and forward shortcuts and YZ & Shift + YZ
* fix macOS issue where widgets don't get proper focus after creating a new tab
* don't use shared_ptr in QtMainView

fixes #486, #327, #214, #210
2020-03-02 14:48:03 +01:00
f4b37f9763 logic: Fixing a crash in SharedMemory::ScopedAccess use (#912)
Co-authored-by: Eberhard Gräther <egraether@coati.io>
2020-03-02 12:23:57 +01:00
Eberhard Graether 5e475b75c8 res: Updated SPONSORS.md - March 2020 2020-03-02 10:19:20 +01:00
Malte LangkabelandGitHub 3e6d8fcce5 buid: fix remaining msvc warnings for 64 bit build (#934) 2020-03-02 09:51:15 +01:00
Malte LangkabelandGitHub ad464fc1b1 logic: discard non-existing paths in path detectors (#930)
This prevents the automatic path detection from adding paths to the project settings or application settings that cause the "you have missing paths" dialog to pop up when saving the settings.
2020-02-24 19:59:21 +01:00
Malte LangkabelandGitHub 4dd0cb7590 data: update python indexer to v1.db25.p3 (#929) 2020-02-24 16:14:57 +01:00
Eberhard GrätherandGitHub 3a29d23a56 src: Fixed QtThreadedFunctor gets sometimes stuck (#926)
* It happens when executed both from Qt and TaskScheduler thread in parallel.
* I found that the signal within QtThreadedFunctorHelper::operator() was sometimes not emitted and therefore QtThreadedFunctorHelper::execute() was never called.
2020-02-19 09:06:25 +01:00
Malte LangkabelandGitHub 437f06d21b src: extract NoteType::Type to NodeKind (#925) 2020-02-14 20:35:02 +01:00
Malte LangkabelandGitHub a30f47e27f build: Treat warnings as errors (#923)
* squash and rebase andronov-alexey:treat_warnings_as_errors from pull request #850
* fix remaining warnings in java lib
2020-02-14 16:34:04 +01:00
Eberhard GrätherandGitHub e5c1a118d7 data: Updated LLVM/Clang config headers to release 9.0.0 (#922) 2020-02-13 15:41:08 +01:00
Malte LangkabelandGitHub db95591645 util: Fix FilePath::isValid() and add tests (#908)
* fixed bug that caused FilePath to be invalid for files with extension
* added tests for FilePath::isValid()
fixes #907
2020-02-13 00:29:15 +01:00
Eberhard GrätherandGitHub 3be685dbc9 test: Fixed test code causing exceptions in FilePath::exists() (#921) 2020-02-12 23:29:51 +01:00
Eberhard GrätherandGitHub b0143adeed logic: Fix crash in update check on premature Qt object deletion (#920) 2020-02-12 22:14:20 +01:00
Waqar AhmedandGitHub 222e3d578a perf: Fix more clazy qstring-allocation warnings and pass parameters by reference (#910)
* Fix some more clazy-qstring-allocation warnings

* Fix missing refs on large types in lib_gui

* Fix trivially copyable types being passed by ref in lib_gui
2020-02-12 22:13:36 +01:00
Timothee "TTimo" BessetandGitHub 71ef2f31a1 util: Making FilePath::exists noexcept so the noexcept version of boost::filesystem::exists is used (#919) 2020-02-12 16:53:39 +01:00
Timothee "TTimo" BessetandGitHub 4da9c53931 logic: Fix an indexer crash (#911) 2020-02-12 08:20:20 +01:00
Eberhard GrätherandGitHub 08f43173c0 ui: Refresh UI state only after every style refresh in each view finished (#917)
Separated UI refresh into 'style' and 'state' refresh to avoid race condition between task scheduler thread and UI thread that affected code view state.
fixes #916
2020-02-11 01:19:44 +01:00
Eberhard GrätherandGitHub 9fc0a05c3b ui: Fixes in Source Group UI (issue #723) (#915)
* fixed Source Group setup from Visual Studio Extension
* fixed crashes in project setup due to use of std::shared_ptr
* fixed source file count not updated on 'show files' click
* fixed passing wheel events to parents when list boxes can't handle them
2020-02-10 23:45:31 +01:00
Eberhard GrätherandGitHub 9c40d26002 ui: Mark required contents with * in Source Group setup (issue #723) (#914)
* And show '*required' label at bottom of each page
2020-02-10 21:27:18 +01:00
Eberhard GrätherandGitHub 260f1227bc Removed multiple dialog steps in Source Group setup (issue #723) (#913)
* removed QtSourceGroupWizard, QtSourceGroupWizardPage and context types
* removed isInForm flag of QtProjectWizardContent
* added check of empty source paths
* set project window as parent for message boxes, so they don't get hidden behind main window
* fixed issues when removing and duplicating source groups
* updated project setup tests to no steps
2020-02-10 20:00:36 +01:00
Malte LangkabelandGitHub 7f9f098c70 logic: handled case when selected project location can not be written (issue #735) (#906) 2020-02-04 20:24:59 +01:00
Malte LangkabelandGitHub 7556d171cb build: "fixed" cmake for test target (#909)
This should just be a temporary solution until we remove the circular dependencies in our library targets
2020-02-04 19:52:46 +01:00
Eberhard Graether 6662a8c41c src: Hotfix for issue #907 2020-02-03 18:08:11 +01:00
Malte LangkabelandGitHub 3a6beb76fc ui: fixed error help dialog not showing up during indexing (issue #740) (#904) 2020-02-03 15:45:09 +01:00
Malte LangkabelandGitHub f6bddec0ec build: add missing dependency to CMakeLists (#905) 2020-02-03 14:36:19 +01:00
Waqar AhmedandGitHub f7923ebd75 logic: Allow changing the log file path in preferences (issue #156) (#900) 2020-02-03 10:54:52 +01:00
Eberhard Graether 9669dc1e71 res: Updated SPONSORS.md 2020-02-03 10:14:30 +01:00
Waqar AhmedandGitHub ecaf25ead6 perf: Fix all clazy qstring-allocation warnings (#903) 2020-01-29 19:48:35 +01:00
technateNGandGitHub 9d26104d2f perf: PersistentStorage::getGraphForAll - avoiding second sqlite call. (#890)
* perf: PersistentStorage::getGraphForAll - avoiding second sqlite call.

* std::map -> std::unordered_map for m_symbolDefinitionKinds.

* src: Added PersistentStorage::addFileNodeToGraph.

* src: Refactor and Bugfixes in new implementation of getGraphForAll.

* std::map -> std::unordered_map for m_fileNodeIndexed.
* Added PersistentStorage::addNodeToGraph.
2020-01-29 18:30:22 +01:00
Malte LangkabelandGitHub 8cc4aaf6ea logic: fix crash when project directory contains non-latin character (issue #899) (#901)
* added "isValid()" to FilePath
* used "isValid" in check of selected project directory
2020-01-27 21:52:05 +01:00
Malte LangkabelandGitHub 719591a247 test: added test for fetching dependencies from gradle config (#897) 2020-01-20 11:47:26 +01:00
Malte LangkabelandGitHub 00137a2b7f build: update qt version in appveyor script (#896) 2020-01-20 10:45:09 +01:00
Malte LangkabelandGitHub a812a49b0c test: removed gradle tests to fix Linux CI (#895) 2020-01-15 23:32:51 +01:00
Eberhard Graether dedbc2eb27 data: Fixed endless recursion on cyclic inheritance edges
Fixed an endless recursion that happenes when the index contains cyclic inheritance relationships,
which might accidentally appear due to name collisions.
2020-01-14 00:14:05 +01:00
Malte LangkabelandGitHub c8dcb193ff test: added tests for gradle utility functions (#892) 2020-01-13 19:26:17 +01:00
Malte LangkabelandGitHub d3b9e46cd9 docs: mention Choco package in Readme 2020-01-13 11:29:09 +01:00
technateNGandMalte Langkabel cbf8e3412f perf: Added utilities::caseInsensitiveLess. (#882)
* Added utilities::caseInsensitiveLess to compare two wstring arguments
* Replaced less comparision method in DummyNodeComp.
* Added tests for caseInsensitiveLess.
2020-01-10 07:55:47 +01:00
technateNGandMalte Langkabel 0dcb83403c perf: GetOverviewBundleNodeTypesOrdered to static const variable. (#878) 2020-01-07 12:44:44 +01:00
Malte LangkabelandGitHub f799bd4946 doc: added FAQ question for contact info (#884) 2020-01-07 09:55:15 +01:00
AlvodaandEberhard Gräther 2422e09b7f ui: Add 'close tabs to the right' context menu action to tab bar #822 (#875)
* first try to implement closeTabs toRight.

* removed .kdev4

* signals and slots mechanisms for closeTabstoRight now done correct.

* feature: add option to close tabs to the right on right-click context menu.

* indentation, whitespaces etc.
2020-01-04 11:00:18 +01:00
Malte LangkabelandGitHub e68da85bbd logic: fix CI by replacing code that depends on a hard-coded date (#876) 2020-01-02 23:09:32 +01:00
Eberhard Graether b39a8d33dd res: Update SPONSORS.md 2020-01-01 15:14:21 +01:00
AlvodaandMalte Langkabel 2a996ed9a0 build: fixed race condition in cmake for creating symlinks on Linux (#872) 2019-12-30 13:11:33 +01:00
Malte LangkabelandGitHub 28b67bc91d logic: record calls to cxx destructor on delete keyword (issue #829) (#863) 2019-12-29 23:05:24 +01:00
Malte LangkabelandGitHub 270c8698dc logic: retry pre-filling mandatory empty path settings on startup (#864) 2019-12-29 23:03:37 +01:00
Malte LangkabelandGitHub 2ab4e2bab9 build: set correct working directory for tests in cmake on Windows (#865) 2019-12-29 23:03:02 +01:00
Malte LangkabelandGitHub a0856a6de5 ui: change caption of close dialog button when finished shallow indexing (#861) 2019-12-22 14:21:07 +01:00
Malte LangkabelandGitHub bc911923d0 logic: improved handling of unloadable source group (#862)
* improve comparison to respect all values
* improved UI to display the source group type
2019-12-22 14:19:51 +01:00
David ManouchehriandEberhard Gräther be8023063a res: Update SPONSORS.md (#860) 2019-12-22 00:55:06 +01:00
Eberhard Graether 8c2b55a324 res: Changelog for Sourcetrail 2019.4.102 2019-12-20 12:16:53 +01:00
David HallasandMalte Langkabel ceb900589e build: Fix build on Gentoo Linux (#854)
Fixes the build on Gentoo Linux. On Gentoo Linux the user chooses which
llvm backend to build and install, therefore we need to loop over the
installed targets and append the libraries needed instead of relying on
the full list of supported backends.
2019-12-17 18:07:50 +01:00
Malte LangkabelandGitHub ceb274478d build: added Travis ci for Linux builds (#857) 2019-12-17 11:04:02 +01:00
Eberhard Graether 99cc3d9636 build: Updated Docker Linux 64bit image to Qt 5.12.6 and LLVM/Clang 9.0.0
* updated to CentOS 7
* removed 32bit image
2019-12-16 15:38:31 +01:00
mlangkabel 67b803bd29 test: fixed java tests 2019-12-16 14:51:45 +01:00
Malte LangkabelandGitHub 11110b6a6f ui: update selectable cxx language standards and cross-compiler flags (issue #835) (#856) 2019-12-16 13:13:05 +01:00
Malte LangkabelandGitHub ebed9b0e56 docs: update contact information in documentation 2019-12-13 17:00:39 +01:00
Alexey AndronovandMalte Langkabel cf0ad287d8 docs: Replace unsafe http links with https in docs (#853) 2019-12-13 15:40:03 +01:00
Malte LangkabelandGitHub 3932bb1fb8 logic: allow to specify custom Maven settings.xml file in project settings (issue #794) (#847) 2019-12-11 14:00:20 +01:00
Malte LangkabelandGitHub d33a5357dd logic: update python indexer to fix issue #771 (#846)
This will allow the Python indexer to accept a Windows Python environment with the python.exe located in the root directory of the environment.
2019-12-10 19:04:07 +01:00
Malte LangkabelandGitHub 732c389520 logic: extend language support to Java 12 (issue #752) (#844)
* update java indexer dependencies
* update java language support to java 12
* enable java preview features by default
* add test for Java 12 support
2019-12-10 15:02:59 +01:00
Malte LangkabelandGitHub 097833beee logic: add java 9 path detector for windows (#843) 2019-12-10 13:30:30 +01:00
Malte LangkabelandGitHub e8480d4a43 build: make build fail if maven fails to generate the java indexer jar (#842) 2019-12-10 13:29:59 +01:00
Malte LangkabelandGitHub f93b063763 docs: list maven as a dependency for building Java language support in readme (#841) 2019-12-10 11:50:50 +01:00
Eberhard Graether f25e8aa32d ui: Return to active symbol definition in code view when clicking active node in graph view (issue #836) 2019-12-09 17:51:18 +01:00
Rivka LigierandMalte Langkabel eeb5b13797 docs: restructure software documentation (#816)
also re-phrased some sentences and fixed minor grammar errors
2019-12-07 11:18:17 +01:00
Eberhard GrätherandGitHub 1558b7215d build: Changes to compile on Debian Buster (#827)
based on #784
2019-12-03 23:59:36 +01:00
Malte LangkabelandGitHub e6e0ecbcf5 logic: fix recording template parameter as local symbol instead of qualifier (#824) 2019-12-03 19:35:38 +01:00
Malte LangkabelandGitHub fa6dd6c9e1 logic: improve usability of shallow indexing ui (#823)
* added "--shallow" command line option to request shallow indexing
* modified behavior of Sourcetrail to always perform a deep index if not explicitly specified differently by the user
2019-12-03 18:26:02 +01:00
Malte LangkabelandGitHub 00bf7ebda6 logic: color scheme fixes (#821)
* fixed issues where color scheme entries were missing
* removed color scheme entries for nodes and edges that do not exist anymore
2019-12-03 14:46:11 +01:00
Alexey AndronovandEberhard Gräther 136f3b5eff ui: drag and drop selected source code from code view into other applications (#817) (issue #707) 2019-12-02 17:59:10 +01:00
Eberhard Graether 042ccb55da res: Updated SPONSORS.md for Dec 2019 2019-12-02 13:18:43 +01:00
Michał JaniszewskiandMalte Langkabel f64019b87f build: use ninja on appveyor (#819) 2019-12-02 13:05:35 +01:00
Malte LangkabelandGitHub 7602571be8 docs: update list of dependencies in readme to clang 9.0.0 2019-11-30 17:20:28 +01:00
Alexey AndronovandMalte Langkabel 52ae646f26 build: add multiprocessor compilation flag to cmake to speedup builds (#793) 2019-11-28 20:47:07 +01:00
Malte LangkabelandGitHub 9274758d5d build: update to SourcetrailPythonIndexer v1_db25_p1 (#813)
This allows to use "unsafe" Python environment if this environment has explicitly been specified by the user (issues #697, #747).
2019-11-28 20:15:26 +01:00
Alexey AndronovandEberhard Gräther 75e6edaf44 res: move clang-format file to project top-level folder (#815)
So IDE's can automatically detect it
2019-11-28 16:11:34 +01:00
Michael VetterandEberhard Gräther 6041f997a9 build: Link to LIB_GUI_PROJECT (#797)
This is needed to build successfully on openSUSE.

Regards https://github.com/CoatiSoftware/Sourcetrail/issues/758
2019-11-28 10:33:44 +01:00
Robert PollakandMalte Langkabel 4d13131321 docs: correct the required Boost version in the Readme (#807)
See commit cca66470 in pull request #775.
2019-11-27 18:43:21 +01:00
Michael VetterandEberhard Gräther 1162a52c1d build: Install SourcetrailPythonIndexer only if Python language package is enabled (#800)
Regards https://github.com/CoatiSoftware/Sourcetrail/issues/758
2019-11-26 17:03:32 +01:00
Malte LangkabelandGitHub 0070431265 update to clang 9 (#799) 2019-11-26 16:21:37 +01:00
Malte LangkabelandGitHub 5bbbb73362 build: enable Python language support in appveyor builds (#798) 2019-11-26 14:11:01 +01:00
Malte LangkabelandGitHub 2d9ad2b746 docs: fix wiki link in readme 2019-11-26 08:33:34 +01:00
Alexey AndronovandEberhard Gräther 1d7f466e4f src: Fix crash on exit when deleting components (#789)
* build: add missing includes in header files

* logic: delete components in reverse to creation order
2019-11-25 20:13:29 +01:00
Malte LangkabelandGitHub 7bee830c6f docs: add wiki link to readme file 2019-11-25 19:12:16 +01:00
Eberhard GrätherandMalte Langkabel cca66470be build: Downgraded Boost to 1.67 (#775) 2019-11-25 17:47:33 +01:00
mlangkabel a177c6daf5 docs: add Sourcetrail user documentation to repository 2019-11-23 13:54:34 +01:00
Malte LangkabelandGitHub 77d798d6f3 docs: add Appveyor CI badge to readme 2019-11-23 10:09:11 +01:00
Song LiandEberhard Gräther afc9e8212c build: Fix a possible cmake error on macOS (#782) 2019-11-22 08:19:09 +01:00
Malte LangkabelandGitHub d8b19b70fb docs: mention "good first issue" label in readme 2019-11-20 23:28:36 +01:00
ale rimoldiandEberhard Gräther 08058158d0 ui: Corrected cmake export compile command hint (#776)
Modern CMakes seem to need need -DCMAKE_EXPORT_COMPILE_COMMANDS=ON instead of -DCMAKE_EXPORT_COMPILE_COMMANDS=1
2019-11-20 17:03:47 +01:00
Eberhard GrätherandGitHub db28aa80d1 docs: Updated Slack link 2019-11-20 13:34:28 +01:00
Malte LangkabelandGitHub 7f241e8bdb Add Appveyor based CI (#773)
The CI will build the entire project on Windows (currently without language support) and run all applicable tests.
2019-11-20 12:20:21 +01:00
Eberhard Graether ff598e3866 ui: Fixed code view cleared in single file mode on ui refresh (#772) 2019-11-20 11:16:32 +01:00
Eberhard Graether a1fccbf6eb logic: Fixed update check url going to wrong subdomain 2019-11-20 11:15:10 +01:00
Iru Cai (vimacs)andEberhard Gräther b0d4db6d61 build: Add a default version if not in git (#765)
This fixes building with the tarball source.
2019-11-20 10:28:25 +01:00
Michael VetterandEberhard Gräther 1e870e9a25 src: getNodeStyle() always return a value (#767)
Regards #758
2019-11-19 17:52:29 +01:00
Michael VetterandEberhard Gräther 63007170df src: getRefreshInfo() always return a value (#768)
Regards #758
2019-11-19 17:48:49 +01:00
Steve AshmanandEberhard Gräther 538d76d858 docs: Fix typo in README.md (#766) 2019-11-19 17:07:01 +01:00
mlangkabel 7b14bfaf70 build: update deploy script for windows
* added option to disable 32 or 64 bit build
* re-added option to enable code signing on demand
2019-11-19 16:55:25 +01:00
mlangkabel 7a4b2347fb build: fix build errors on windows
* fix compiler issue where string was returned instead of wstring
* fix boost caching in CMakeList: for CMake 3.12.2 the "set" command requires a docstring if the CACHE flag is set
2019-11-19 16:52:05 +01:00
Benjamin TandEberhard Gräther 216ec83f84 build: Fix lib order (#755) 2019-11-19 16:25:11 +01:00
Michael VetterandEberhard Gräther 44a8104890 src: Always return a value from non void function getSearchTypeName() (#761)
getSearchTypeName() needs to always return std:wstring.

We cover all cases because our switch contains all current possibilities
for Search_Type.

But the compiler will still warn/error on this, depending on system
configuration.

Regards https://github.com/CoatiSoftware/Sourcetrail/issues/758
2019-11-19 15:38:56 +01:00
Michael VetterandEberhard Gräther 7edafe91f2 src: Always return a value from non void function elide() (#760)
elide() needs to always return std:string.

We cover all cases because our switch contains all current possibilities
for ElideMode.

But the compiler will still warn/error on this, depending on system
configuration.

I would like to add a `return "";` or `return str;` or add a `default:`
case to the switch to silence this compiler complaint.

Regards https://github.com/CoatiSoftware/Sourcetrail/issues/758
2019-11-19 15:08:29 +01:00
Michael VetterandEberhard Gräther c0a0e4335a build: Make Boost_USE_STATIC_LIBS a cache variable (#759)
Like this we can overwrite it's value from the commandline via
`-DBoost_USE_STATIC_LIBS=OFF`.

Linux distributions will prefer this.

Regards https://github.com/CoatiSoftware/Sourcetrail/issues/758
2019-11-19 14:56:52 +01:00
Eberhard GrätherandGitHub ce1d5c579d res: Create Funding.yml 2019-11-18 17:36:17 +01:00
mlangkabel 21f2625d9e data: added clang format rules 2019-11-18 17:12:39 +01:00
mlangkabel 078feca004 src: applied clang-format 2019-11-18 17:07:20 +01:00
mlangkabel 52058d9947 data: updated Readme 2019-11-18 16:47:31 +01:00
Eberhard Graether 2e2390d00e res: Changelog for release 2019.4 2019-11-18 15:06:20 +01:00
Eberhard Graether c808fa8732 ui: Show Sourcetrail license on top in licenses window
* updated versions and license files of some 3rd party libraries
2019-11-18 10:41:08 +01:00
mlangkabel fdbb79b677 src: fixed build issues 2019-11-18 10:06:44 +01:00
Eberhard Graether 9ab724ae47 src: Removed backwards compatibility to Coati (.coatiproject, .coatidb) 2019-11-17 16:22:35 +01:00
Eberhard Graether b5e0387f1e ui: Added GitHub and Patreon buttons to start window 2019-11-17 16:14:24 +01:00
Eberhard Graether 9b86f0e824 build: Revised macOS bundle generation script and info (issue #730) 2019-11-17 15:49:19 +01:00
mlangkabel 6641c17b93 data: added GNU General Public License 2019-11-17 15:34:39 +01:00
mlangkabel 1c300e0240 build: removed usage of environment variables from CMakeLists 2019-11-17 15:32:21 +01:00
Eberhard Graether 6c5ac66a59 build: fixed missing semicolons in Linux build 2019-11-17 12:16:21 +01:00
mlangkabel 61b97e4931 test: removed indexer coverage regression tests for Cxx
Currently the output of these tests depends on the c++ standard library that is installed on the executing machine. So for some machines these tests would pass while they fail on other machines.
2019-11-16 17:21:17 +01:00
mlangkabel cc17dbe2ea ui: Remove EULA from GUI and Windows installer 2019-11-16 14:57:31 +01:00
Eberhard Graether bb40bcfe45 build: Only add language package specific source and header files to build when enabled
* removed preprocessor guards in language specific files to avoid "file has no symbols" warning
* separated files into multiple lists in lib and lib_gui CMakeLists.txt for each language package
2019-11-14 12:44:59 +01:00
Eberhard Graether 634e09ddfc build: Fixes minor cmake issues and status bar default color 2019-11-14 12:41:42 +01:00
mlangkabel 0e4a620768 script: updated windows deploy script
* add missing copy command for dll to cmake
* fix deploy script
* remove code signing from deploy script
2019-11-13 19:33:40 +01:00
mlangkabel c38117ab8b build: allow to disable language support in cmake
* in addition: add unloadable sourcegroup to visualize, load and save information when loading a project that contains source groups that are not supported by the build
2019-11-13 17:26:06 +01:00
mlangkabel 4cf852770e src: minior code cleanup 2019-11-11 14:32:10 +01:00
mlangkabel ceb30020b5 src: removed sonargraph based project setup methods 2019-11-09 17:56:51 +01:00
mlangkabel 7257de9f11 src: fixed msvc compiler errors 2019-11-09 12:52:31 +01:00
Eberhard Graether d2a1ac464d src: Use gnu C and C++ standards as default for C and C++ SourceGroupSettings on Linux platform (issue #748) 2019-11-08 17:04:02 +01:00
Eberhard Graether 9281c237a7 ui: Refactored code component to handle all state changes in controller 2019-11-08 16:20:43 +01:00
mlangkabel 9d556599ab logic: shallow python indexing (issue #725) 2019-11-06 19:50:47 +01:00
mlangkabel 73f3be72e1 data: removed unused edge and node types 2019-11-05 23:28:27 +01:00
Eberhard Graether dca9e2627c build: Fixed Linux build 2019-11-05 23:20:17 +01:00
Eberhard Graether c34b17418d build: revised build scripts 2019-11-05 17:00:39 +01:00
mlangkabel 8264b8cae3 build: skip downloading python indexer if correct version is already installed 2019-11-05 11:28:50 +01:00
mlangkabel 38581f9571 build: move build related tasks for Windows from setup script to CMake 2019-11-04 17:46:59 +01:00
mlangkabel d177a7d733 build: removed CxxTest from docker files 2019-11-04 11:55:49 +01:00
mlangkabel 49050e1089 src: replaced unit test framework CxxTest with Catch2 2019-10-29 19:54:16 +01:00
Eberhard Graether 48c4bddc1b src: Fixed macOS build 2019-10-29 14:42:27 +01:00
mlangkabel ed1d4b7d33 src: split indexing dialog to multiple classes 2019-10-22 17:38:38 +02:00
Eberhard Graether c5d94fbd08 ui: Fixed nested layout broken after relayout for maximum access node width 2019-10-21 17:04:23 +02:00
Eberhard Graether 0d8e992bdf src: Removed everything license key related
* removed license check
* removed license from ApplicationSettings
* removed LicenseGenerator
* removed license tests
* removed lib_license
* removed dependency on Botan
* removed license generation in all scripts
2019-10-18 13:05:30 +02:00
mlangkabelandEberhard Graether 2cfce03f6e logic: improved performance of python post processing (by around factor 2) 2019-10-18 13:05:30 +02:00
mlangkabelandEberhard Graether 7f861964ea logic: improved performance of clearing data from re-indexed files to be instant 2019-10-18 13:05:30 +02:00
mlangkabelandEberhard Graether 122b384d60 logic: fix FilePath::makeCanonical for case when working directory is symlink on Windows (issue #733)
This was broken because on first iteration loop the path passed to is_symlink was not a real path, thus boost uses the working dir instead.
2019-10-18 13:05:30 +02:00
mlangkabelandEberhard Graether eb142cfb4e ui: update list indexed headers when editing the compilation database text box (issue #724) 2019-10-18 13:05:29 +02:00
mlangkabelandEberhard Graether f7262c805f logic: skip pre-indexing steps of disabled source groups (issue #737) 2019-10-18 13:05:29 +02:00
mlangkabelandEberhard Graether f572e5ee05 logic: fixed refreshing to clear files of disabled source groups 2019-10-18 13:05:29 +02:00
Eberhard Graether 827b8431ca build: Fixed include issue on clang 2019-10-18 13:05:29 +02:00
mlangkabelandEberhard Graether 712d80cc8a test: clean up cxx indexer tests 2019-10-18 13:05:29 +02:00
mlangkabelandEberhard Graether 580ed9f3d6 logic: merge nodes for all possible expansions of a template parameter pack 2019-10-18 13:05:29 +02:00
mlangkabelandEberhard Graether e81315c131 logic: record inheritance edges for implicit template specializations 2019-10-18 13:05:29 +02:00
mlangkabelandEberhard Graether cd731a3798 logic: skip traversing unspecialized template method of implicit template class specialization 2019-10-18 13:05:29 +02:00
mlangkabelandEberhard Graether ee7dcc2d83 data: replace template member specialization edge by template specialization edge 2019-10-18 13:05:29 +02:00
mlangkabelandEberhard Graether 42cb917490 data: remove NodeType::NODE_TEMPLATE_PARAMETER 2019-10-18 13:05:29 +02:00
mlangkabelandEberhard Graether b72d3531c0 test: fixed some TODOs in CxxParserTestSuite 2019-10-18 13:05:28 +02:00
mlangkabelandEberhard Graether 1bb16deb3b logic: fixed bug where explicit template specialization records edge pointing to self 2019-10-18 13:05:28 +02:00
mlangkabelandEberhard Graether 7a5d1f7d2b logic: record location of substituted template parameter as usage of concrete type
e.g. "return T();" in template function implicitly specialized with T=int records a usage of "int" at the location of "T()".
2019-10-18 13:05:28 +02:00
mlangkabelandEberhard Graether 04bda70b3c logic: template fixes
* omit recording usage of template argument for global scope
* use name of templated decl if specialization has dependend argument types
2019-10-18 13:05:28 +02:00
mlangkabelandEberhard Graether 5a18d0973e logic: fixed respecting the provided order of template arguments of partial template specialization 2019-10-18 13:05:28 +02:00
mlangkabelandEberhard Graether 0498d68f5b logic: skip recording qualifier of template parameter decl name (e.g."A<typename T>::T" -> "T") 2019-10-18 13:05:28 +02:00
mlangkabelandEberhard Graether 517dde06e4 logic: yield name of templated base for dependent template specialization 2019-10-18 13:05:28 +02:00
mlangkabelandEberhard Graether ce22e5917a logic: record template argument that is a dependent template type as local symbol 2019-10-18 13:05:28 +02:00
mlangkabelandEberhard Graether fc0e652ae0 data: Remove Template Argument reference kind and edge 2019-10-18 13:05:28 +02:00
mlangkabelandEberhard Graether 583046c291 data: reduce template related data types
* record template parameter as local symbol
* record template default args as type usage
2019-10-18 13:05:27 +02:00
mlangkabelandEberhard Graether e621a835fd logic: use caching to speed up preparing gradle and maven projects for indexing 2019-10-18 13:05:27 +02:00
mlangkabelandEberhard Graether b631f3ddf7 data: fixed styles missing in portable windows packages 2019-10-18 13:05:27 +02:00
mlangkabelandEberhard Graether e5ff90084e src: fixed msvc compiler issues for variadic SourceGroupSettings templates 2019-10-18 13:05:27 +02:00
Eberhard Graether 74a61e0402 src: Refactored MessageActivationBase handling into single ActivationListener
* structured message type directory
2019-10-18 13:05:27 +02:00
Eberhard Graether bd09cc4feb src: Refactored SourceGroupSettings into components as bases architecture 2019-10-18 13:05:27 +02:00
mlangkabelandEberhard Graether 941e5dbcaa logic: fixed errors sometimes not clickable 2019-10-18 13:05:27 +02:00
mlangkabelandEberhard Graether 6b692ff0e9 ui: add menu entry to close the current project (issue #722) 2019-10-18 13:05:27 +02:00
mlangkabelandEberhard Graether dc24bae943 ui: allow to cancel if cdb project setup specifies unused pch file 2019-10-18 13:05:27 +02:00
mlangkabelandEberhard Graether a856788e75 test: fixed wording in test checklist 2019-10-18 13:05:27 +02:00
Eberhard Graether 7f53c3d4b2 res: Changelog for 2019.3 2019-10-18 13:05:27 +02:00
mlangkabelandEberhard Graether 0587d54172 logic: removed "JVM Maximum Memory" setting from preferences 2019-10-18 13:05:27 +02:00
mlangkabelandEberhard Graether 942eb219eb build: sign windows builds and installer when deploying (issue #704) 2019-10-18 12:59:02 +02:00
mlangkabel ef68893957 data: update Sourcetrail to use python indexer to v1.db24.p2 2019-08-26 18:38:24 +02:00
Eberhard Graether 51ebee7cfd ui: Display message box when From -> To Custom Trail doesn't yield a path 2019-08-26 17:19:08 +02:00
mlangkabel f75593392b logic: fixes for handling pch flags for cdb source groups
* use flags of first source file that specifies an "-include-pch" flag for generating the .pch file
* allow to save project settings without specifying input header file if cdb contains -include-pch args
2019-08-26 16:40:26 +02:00
Eberhard Graether 733ef0ea04 logic: Fixed issues when indexing via CLI (issue #718)
* show proper error message in console when project configuration has issues
* quit when project configuration is wrong
* show indexing progress as self-updating percentage
2019-08-26 16:34:54 +02:00
Eberhard Graether 5a97c88a69 ui: show '.' as directory in file title if file is within project root 2019-08-26 12:53:26 +02:00
Eberhard Graether 70969b1bc3 data: Fixed clang::fileEntry traversal in CxxAstVisitor caused crashes with PCH files on macOS 2019-08-20 16:55:20 +02:00
mlangkabel e89dc0ab0a logic: only use precompiled headers for compilation database commands that specify the "-include-pch" flag (issue #719) 2019-08-13 17:31:33 +02:00
Eberhard Graether 084bc3dc43 logic: Save maven effective-pom output to file instead of using console output to avoid issues with color codes (issue #705) 2019-08-13 17:22:09 +02:00
mlangkabel 809f201583 data: update version of fallback Application Settings 2019-08-12 10:23:00 +02:00
Eberhard Graether b50ab76af5 utility: Fixed process execution aborted due to messing ! 2019-08-06 19:53:12 +02:00
mlangkabel 8a43a95b5c data: update Sourcetrail to use python indexer to v1.db24.p1 2019-08-06 18:34:51 +02:00
mlangkabel 1c7bc2fc90 logic: fix qprocess stuck if finished or errored too quickly 2019-08-06 17:27:41 +02:00
Eberhard Graether bda7375e63 ui: Fixed code file title buttons might shrink to zero content when elided 2019-08-06 13:40:46 +02:00
mlangkabel cce41dd964 ui: fixed bezier edge to remove highlight when not hovered anymore 2019-08-06 13:34:46 +02:00
mlangkabel 3e9df0b074 ui: fix z-index of custom trail dialog and row height of "show directory path" option in preferences 2019-08-06 13:04:54 +02:00
mlangkabel 21f25a0b00 data: make Qt Windows Vista style available for windows 10 2019-08-06 10:55:50 +02:00
Eberhard Graether 6a3561cb87 ui: Change mouse cursor to pointer on graph and code view contents (issue #715) 2019-08-05 22:40:21 +02:00
mlangkabel cc289e8b1e ui: hide jvm maximum memory setting on windows 10 (issue #694)
setting this value to anything other than -1 will cause Sourcetrail to get stuck when initializing the JVM
2019-08-05 18:17:07 +02:00
Eberhard Graether 5f91f48844 logic: Show overview instead of empty error screen after all indexing errors were fixed 2019-08-05 14:33:14 +02:00
Eberhard Graether 2f21848de8 logic: Index multiple indexer commands for one source file in CDB source group (issue #717) 2019-08-05 11:35:09 +02:00
Eberhard Graether b35d4657d5 data: Record errors in precompiled header generation
* also records include dependencies within precompiled header file
2019-07-31 23:28:22 +02:00
Eberhard Graether 4b58bb679c data: Fixed files within precompiled header have no syntax highlighting
- removed working_copy from project setup tests
2019-07-31 21:37:53 +02:00
Eberhard Graether c6adbab340 logic: Added PCH support to CDB source groups (issue #311)
* added PCH Flags list and checkbox to reuse compiler flags and cdb flags to source group setup
* added UI tests for C++ and CDB source groups
2019-07-31 00:41:08 +02:00
mlangkabel b8d0f88336 logic: fixed source location recording for symbols defined inside PCH files 2019-07-30 14:33:07 +02:00
Eberhard Graether 68c9782e33 ui: Added custom trail dialog (issue #249)
* open custom trail dialg via button in top of trail controls
* search from symbol to symbol or all referenced/referencing of symbol
* define search depth with slider
* define horizontal/vertical layout
* define node and edge types
* renamed depth graph to trail in graph ui
* added custom trail UI tests

fortune cookie message = A happy surprise is waiting for you.
2019-07-29 11:25:34 +02:00
Eberhard Graether 6a2c59f3e5 logic: Fixed removing duplicate compiler header and show paths in dialog (issue #710) 2019-07-28 21:03:45 +02:00
Eberhard Graether 6b54d5f07b java: Run maven effective-pom in batch mode to avoid console colors in xml output (issue #705) 2019-07-28 14:02:26 +02:00
Eberhard Graether cd144a979f ui: Added option to show file directory in code view title (issue #556)
* relative to project file if shorter
* checkbox in preferences
* not enabled by default
2019-07-22 14:25:46 +02:00
mlangkabel 293ddffb46 logic: skip everything except call operator when traversing lambda decl 2019-07-22 14:00:33 +02:00
mlangkabel af3e7861b6 src: fixed windows compile errors 2019-07-22 13:54:49 +02:00
Eberhard Graether 8e3ca182b9 src: refactored lib/utility
* removed unused utilityMath
* removed some unused functions from utility
* moved time related utility functions to TimeStamp
* moved path objects from utility to app/paths
* moved objects in lib to lib/app
* removed duplicate confirm methods in DialogView
* moved utilityFile to utility/file
* removed uint typedef and replaced with size_t everywhere
* removed boost header in utilityUuid
2019-07-17 15:10:05 +02:00
Eberhard Graether 70febae55b src: Moved path prefilling to ApplicationSettingsPrefiller
* added subdirectory for all source group settings related files
2019-07-16 14:29:34 +02:00
Eberhard Graether 086c19f25e ui: Don't apply stylesheet to search view every time autocompletions are set 2019-07-09 16:07:13 +02:00
Eberhard Graether 1e8791da35 src: Fixed clang error 2019-07-09 15:11:43 +02:00
mlangkabel bb78c04b34 logic: Implemented usage of PCH for indexing EmptyCxx Source Groups
* further change: initialize all llvm targets before indexing
* further change: remove configurable dependencies directory from gradle and maven sourcegroups
2019-07-02 15:52:17 +02:00
Eberhard Graether 3aebe91e36 ui: Refactored View initialization
* moved initView() implementation where used into constructor
* specify methods as override instead of virtual where applicable
* use default destructors where applicable
2019-07-02 15:04:09 +02:00
Eberhard Graether 5cc39824e0 ui: usability fixes
* reduced mouse drag sensibility when clicking on graph nodes
* also edit search element when cursor in front and pressing DELETE
* scroll to up to minimized snippet after minimizing when scrolled down far
2019-06-28 12:43:31 +02:00
Eberhard Graether 841a87469b src: refactored UI elements and graphics file structure
* split QtIconButton into multiple files
* moved graph elements from view to graphics
* structured elements into sub directories
2019-05-29 18:31:11 +02:00
Eberhard Graether 1cc61a93a2 src: refactored project wizard file structure
* renamed wizzard to wizard
* split QtProjectWizardContentPath into multiple files
* split QtProjectWizardContentPaths into multiple files
* restructured subdirectories
2019-05-29 16:26:49 +02:00
Eberhard Graether 529b534939 res: Changelog for 2019.2.39 2019-05-29 03:34:33 +02:00
mlangkabel e5b51ecebb data: updated version of sample projects 2019-05-28 18:59:26 +02:00
mlangkabel b90444b943 ui: add example for python environment to source group settings ui and changed name in project settings file (issue #696) 2019-05-28 17:47:27 +02:00
Eberhard Graether d2b41f7598 logic: improved python post processing speed and show progress dialog 2019-05-28 17:40:35 +02:00
mlangkabel 31f4e47903 ui: check validity of Python environment when entered in Python Source Group
* Python sourcegroup now displays if a provided Python environment is valid
* update used version of SourcetrailPythonIndexer
* changed executeProcess() to return the process' exit code and console output
2019-05-28 16:44:50 +02:00
mlangkabel b607933e0f data: updated expected output for cxx indexer tests and source group tests for windows 2019-05-28 16:42:00 +02:00
Eberhard Graether 5084a11dec ui: Fixed annotation hovering slow in code snippet view due to style calculation from setting stylesheets 2019-05-28 14:30:23 +02:00
Eberhard Graether 762b27d306 test: moved SourceGroupTestSuite to end to prevent java environment issues on unix 2019-05-28 13:12:56 +02:00
Eberhard Graether f2108084da ui: Added another updateGeometry call to single file view to prevent white space at end and wrong scroll positions 2019-05-28 12:03:26 +02:00
Eberhard Graether e410548665 ui: Fixed undoing after single edge activation within aggregation showed missing edges 2019-05-28 11:46:01 +02:00
Eberhard Graether 150240a9af logic: Don't set project state outdated if only source group name changed (issue #700) 2019-05-27 18:04:29 +02:00
Eberhard Graether b6a39a2d66 logic: Don't store CxxCompilerHeaderPath in Global Include Paths
* show path in Global Include Paths preferences
* add to CXX indexer commands
* add migration to remove from app settings
2019-05-27 16:11:19 +02:00
mlangkabel 581b1894f2 logic: write output of Python indexer processes to log file 2019-05-27 14:05:02 +02:00
Eberhard Graether f087d7e5ea lic: Remove unique_ptr in LicenseChecker to avoid crash on destruction 2019-05-27 13:07:48 +02:00
Eberhard Graether 82fcd4f673 lic: Fixed crash in License destruction (issue #698) 2019-05-27 12:22:22 +02:00
Eberhard Graether 6376b4bca7 res: Changelog for 2019.2.25 2019-05-23 11:04:55 +02:00
mlangkabel 758a8a5318 logic: update version of python indexer 2019-05-21 23:33:26 +02:00
mlangkabel e339b32286 logic: have logging enabled by default if not specified in app settings 2019-05-21 22:05:14 +02:00
Eberhard Graether 8c6ded28a8 data: Add StorageElementComponent to Storage injection 2019-05-21 17:56:50 +02:00
Eberhard Graether e2157b8352 data: Fixed indexer crashes in Cinder after Clang update 2019-05-21 17:50:56 +02:00
mlangkabel 4d6cb464c4 logic: sort custom indexer commands by indexed file size and name 2019-05-21 17:23:03 +02:00
mlangkabel 0fb7fe719a <module>: fixed storage cache to accept local symbols names of python indexer 2019-05-21 17:10:55 +02:00
Eberhard Graether f74789e210 build: export path to OpenSSL config in Sourcetrail.sh (issue #659) 2019-05-21 12:18:23 +02:00
Eberhard Graether 78eade475e data: Updated LLVM/Clang config headers to release 8.0.1 2019-05-20 14:10:34 +02:00
mlangkabel 5690bdc02c script: revert using SourcetrailPythonIndexer beta release 2019-05-20 12:59:17 +02:00
Eberhard Graether a526612fdb ui: Refocus already focused search box on find shortcut to select content 2019-05-20 11:43:28 +02:00
mlangkabel bcef315789 ui: added description of python errors to error help dialog 2019-05-20 11:32:34 +02:00
Eberhard Graether cf45e99505 build: Fixed Clang compilation output not colored on macOS 2019-05-16 19:06:45 +02:00
Eberhard Graether 018a65e0b6 data: renamed 'main' function in tutorial to 'start_tour' due to multiple main fix 2019-05-15 14:56:51 +02:00
Eberhard Graether b5e8c7f452 build: Fixed macOS bundle not using correct Python environment
* Pass verbose flag to Python indexer if enabled
2019-05-15 14:44:49 +02:00
mlangkabel a9887da9f1 ui: show EULA on first start of windows portable package 2019-05-13 18:02:41 +02:00
mlangkabel 67e342119a package: Fixed licenses in wrong directory in Windows package 2019-05-07 18:51:36 +02:00
Eberhard Graether 4716881485 package: Fixed licenses in wrong directory in macOS package 2019-05-07 18:43:54 +02:00
mlangkabel 877fcb47e4 script: fixed windows deploy scripts 2019-05-07 17:27:49 +02:00
Eberhard Graether 0e01a9b200 logic: Fixed python sample migration removed last recent project 2019-05-07 17:10:57 +02:00
mlangkabel 3106257692 ui: add python project icon 2019-05-07 16:28:29 +02:00
mlangkabel 76cb4e0dc9 data: added python sample project 2019-05-07 15:51:37 +02:00
Eberhard Graether abda525b84 ui: Fixed symbol definition shown instead of reference on undoing
* fixes History Tests - State Tests - Code Reference
2019-05-07 14:59:14 +02:00
mlangkabel bdb4c78399 logic: implemented Python post processing to add ambiguous edges for unsolved symbols 2019-05-07 14:17:59 +02:00
Eberhard Graether 7f4e03b241 license: Fixed old test license format not loaded (issue #691) 2019-05-06 13:25:39 +02:00
Eberhard Graether af70d684a5 data: Added intermediate fix to handle multiple definitions of main() in C/C++ (issue #233)
* record main definition as .:main:.<filename>
* restore original name in name deserialization
* don't look up id when undoing main activation
2019-04-30 13:04:57 +02:00
Eberhard Graether ee1fd9c38b logic: Unblock UI when aborting indexing after partial refresh warning 2019-04-23 17:08:10 +02:00
mlangkabel 9e9d488834 data: added manual tests for python sourcegroup 2019-04-23 16:53:32 +02:00
mlangkabel 42cd0f05d7 logic: don't allow partial re-indexing for python source groups 2019-04-23 16:49:11 +02:00
mlangkabel b46b9d157d data: fix EULA date 2019-04-23 15:46:41 +02:00
Eberhard Graether 550ce9c7df logic: Start automatic update checks on second day of use
* Added status messages for update check
2019-04-23 14:28:56 +02:00
Eberhard Graether 76aed77f59 ui: renamed 'relations' to 'references' in overview stats 2019-04-23 14:14:49 +02:00
mlangkabel 25325244d7 logic: update version of python indexer 2019-04-23 13:30:06 +02:00
Eberhard Graether a00cdc18ca ui: Added "Show Definition in IDE" action to graph context menu for nodes (issue #687) 2019-04-23 13:15:56 +02:00
Eberhard Graether 4984e23c07 ui: Increased contrast in bright color scheme 2019-04-23 13:08:34 +02:00
Eberhard Graether 1f6179c1b8 logic: Delete log files older than a month (issue #676) 2019-04-23 13:02:55 +02:00
Eberhard Graether 02835ff59a ui: show multi-level inheritance edge in graph legend
* and added "multi-level" to tooltip
2019-04-23 10:07:33 +02:00
Eberhard Graether ff9467ccae ui: Fixed first character in search autocompletion list type string sometimes slightly cut 2019-04-23 09:34:34 +02:00
Eberhard Graether f9c2ff7c9f build: Updated docker images to clang 8 2019-04-23 08:18:39 +02:00
Eberhard Graether 4def43086e build: Updated to clang 8
* updated "runToolOnCodeWithArgs" from clang 3.7 code to clang 8 code
* fixed "clang-tool" may have occurred in compile command twice
2019-04-19 14:08:11 +02:00
Eberhard Graether 4dd032dcff ui: Multi-column layout within access nodes if no child node has edges
* use multiple columns for access nodes if no child has edges
* try to layout close to a square
* layout neighboring accesses to the width of the largest
* increase threshold to hide children on parent activation to 100
* use square layouting in inheritance trees as well
2019-04-16 16:24:38 +02:00
mlangkabel 92192659d9 ui: add python syntax highlighting for "self" 2019-04-09 14:13:57 +02:00
mlangkabel 7b514173c3 ui: print version number of used SourcetrailPythonIndexer in sourcegroup selection ui 2019-04-09 10:36:45 +02:00
Eberhard Graether edf319cde9 data: removed directory data/gui/installer and moved EULA files to data/license
* moved EULA files to data/license
* moved 3rd party license to data/license
* updated paths in installer scripts
2019-04-08 18:25:13 +02:00
mlangkabel f7d3275e89 logic: make python environment path configurable in project settings 2019-04-08 13:09:52 +02:00
mlangkabel 045a3a4e50 logic: Added "Empty Python" Sourcegroup to project setup
The respective release of the SourcetrailPythonIndexer project is automatically downloaded from GitHub when the setup script is executed.
2019-04-02 15:54:17 +02:00
Eberhard Graether 5d672fafc4 ui: edit search element on backspace instead of deleting (issue #681) 2019-03-20 14:47:39 +01:00
Eberhard Graether b02064a160 license: Implemented new license format
* Implemented new format splitting user, version, and usage period into separate lines
* Refactored all classes: License, LicenseGenerator, LicenseChecker
* Removed redundant license check hash from ApplicationSettings, don't generate, store and check it anymore
* Moved license checking and encoding logic to LicenseChecker
* Moved default for license generation to main.cpp
* Refactored license checking logic in whole app, removed involved message types
* Added LicenseCheckerTestSuite for checking all legacy and current license types
* Generate new license type lifelong
2019-03-18 14:49:52 +01:00
mlangkabel 6ff7d22641 data: update EULA to allow for lifelong licenses 2019-03-12 15:48:37 +01:00
mlangkabel db569ee551 logic: improved fulltext search performance (issue #680)
* move to multithreaded implementation
* omit unnecessary work
2019-03-12 11:16:49 +01:00
mlangkabel b6031fdb3a ui: fixed tooltips were not resizing if app font size was changed on windows 2019-03-11 18:01:16 +01:00
mlangkabel 65f9bdb976 build: use WIX Heat to harvest samples and data for building the windows installer 2019-03-11 09:53:58 +01:00
Eberhard Graether 1c11cd5e8c logic: Fixed crash when closing license window on force entering license 2019-02-26 15:39:13 +01:00
mlangkabel 91e2c2e7e5 ui: replace invalid characters in project name during project creation (issue #671) 2019-02-25 12:43:32 +01:00
mlangkabel 478f97d66b build: add syntax highlighting rules to portable windows package (issue #672) 2019-02-25 11:17:08 +01:00
Eberhard Graether 6ca5208ab5 build: Changelog for 2019.1.11 2019-02-12 12:45:46 +01:00
mlangkabel ad34bcd9e1 data: added python syntax highlighting rules to windows installer 2019-02-05 14:21:18 +01:00
Eberhard Graether e3b5e01435 logic: Show errors when executing custom commands in info message 2019-02-05 14:16:52 +01:00
mlangkabel b0cdd23fb3 UI: mention CDB can be generated by Qt Creator 2019-02-04 18:14:07 +01:00
mlangkabel 0ce7d93cef test: updated custom command test to index python code 2019-02-04 17:44:41 +01:00
mlangkabel 82a3c06a9d logic: implemented using regex capture ranges for syntax highlighting rules
* only first capture will be highlighted (-> only use one capture range per regex
* non-capturing braces can be used with start: "(?:" and end: ")"
2019-02-04 16:07:20 +01:00
Eberhard Graether 92c8c282f5 logic: Fixed qualifier locations not used in reference navigation and only highlighted on hovering 2019-02-04 02:04:38 +01:00
Eberhard Graether 463d3ebd4c ui: Fixed error count in status bar not restored after discarding interrupted index 2019-02-03 23:47:12 +01:00
Eberhard Graether 01ac38dd8a ui: Fixed inheritance chains not correctly layouted 2019-02-03 17:48:09 +01:00
Eberhard Graether f7eb1fc160 data: Added highlighting rules for Python
* fixed multiline highlights to work for any highlight type
* erase priority ranges contained within others
2019-02-03 15:53:40 +01:00
Eberhard Graether 03573abc3b ui: Fixed edge case in multiline CXX highlighting 2019-02-03 13:35:05 +01:00
Eberhard Graether 7d746ba947 logic: Fixes in header path detection
* Rerun header path detection when only cxx header path is present after update in migration
* Check if path exists in header and framework path detection on mac/linux
2019-01-29 13:49:40 +01:00
mlangkabel 5dcecdb3bd ui: fixed status error may not show up if custom command fails on windows 2019-01-21 16:38:47 +01:00
Eberhard Graether 6f0cc614e2 ui: Fixed right click on edge activates it on Windows 2019-01-21 15:46:21 +01:00
Eberhard Graether 7d30709306 logic: Fixes and improvements for C/C++ compiler header path handling
* Always add compiler header path when prefilling on first start, regardless of successful detection
* Show compiler header path in path list box on top and readonly
* Prepend compiler header path on Windows in system header path compiler flags, append otherwise
* Show warning when saving ApplicationSettings if compiler header path is not in global include paths
* Show warning when saving ApplicationSettings if there is another path containing compiler headers
2019-01-21 15:18:31 +01:00
mlangkabel 3eb9211520 logic: added option to execute custom indexer commands in parallel 2019-01-21 13:28:51 +01:00
Eberhard Graether 85bd0d39c3 ui: Fixed graph layout middle column offset to move all buckets in the same direction 2019-01-21 13:13:04 +01:00
Eberhard Graether f7b8563e57 ui: Align graph layout buckets in middle colum at middle gap to avoid edges going through nodes 2019-01-20 23:24:11 +01:00
Eberhard Graether f4859ee094 ui: Improved line number disappearing fix 2019-01-15 00:00:12 +01:00
Andreas Stallinger 711cd6ce1c ui: Fixed line numbers disappearing on hover on Linux 2019-01-14 18:27:19 +01:00
mlangkabel e3c9f12012 logic: fixed initialization of header search paths on first start
* updated version of fallback ApplicationSettings.xml to current settings version
* removed is-empty-check when pre-filling settings at the first start of Sourcetrail
2019-01-14 17:22:22 +01:00
Eberhard Graether fc64f1a958 ui: Recommended project setup from CDB and moved empty setup at end of list 2019-01-14 17:20:37 +01:00
Eberhard Graether 21ac50c204 ui: double click in project setup list box to add new item 2019-01-14 16:37:44 +01:00
mlangkabel 2d2f8f4f31 data: add java dependencies to repository
* this helps us prevent non-intended software updates which would require changes in code and windows installer
2019-01-14 10:02:19 +01:00
Eberhard Graether 2bc90c07bf ui: Only bundle importing files when import edge present 2019-01-10 23:13:18 +01:00
Eberhard Graether 08dc7ec98b ui: Prevent flickering of edges when going back after multiple edge activations 2019-01-10 22:56:14 +01:00
Eberhard Graether 3014dd35a8 logic: Fixed relative paths not working Code::Blocks project files (issue #663)
* Index non-target files if no others available
2019-01-10 22:11:05 +01:00
Eberhard Graether 7d94302712 ui: Remove virtual nodes in depth graph edges when moving nodes (issue #639) 2019-01-10 16:52:40 +01:00
Eberhard Graether 934131b877 logic: Added exception handling for HTTP request exceptions in update checker (issue #659) 2019-01-10 16:01:49 +01:00
Eberhard Graether 545969161e ui: Clear screen search matches when anything in the view changes (issue #660) 2019-01-10 15:53:09 +01:00
Eberhard Graether 322c353898 ui: Wrap lines in status and error table (issue #658) 2019-01-10 15:22:56 +01:00
Eberhard Graether 53c4ac77cf bin: reverted accidental change in tictactoe sample 2019-01-08 14:31:34 +01:00
Eberhard Graether 54f989f6f5 ui: Also elide name of active node if it has more than 100 characters (issue #652) 2019-01-08 14:25:28 +01:00
Eberhard Graether d6a07e9477 ui: Added link to changelog to help menu (issue #653) 2019-01-08 14:17:14 +01:00
Eberhard Graether 29d5ae2cd0 build: Changelog for 2018.4.45 2019-01-08 14:12:13 +01:00
Eberhard Graether 5b787e19d4 src: added exception handling to file reading in TextAccess 2019-01-08 14:10:08 +01:00
mlangkabel b4ea675c9a logic: fixed custom commands
* allow filesystem to rename temp db after indexing
* changed custom command variable syntax
* adjusted test checklist for custom commands
2018-12-18 15:02:45 +01:00
mlangkabel e3940fdf19 logic: skip project settings migration if version is 0 2018-12-18 13:23:28 +01:00
mlangkabel 6d2c89b127 data: updated windows installer 2018-12-18 11:42:44 +01:00
Eberhard Graether d091fc857b ui: fixed active code view mode button could be unchecked 2018-12-17 23:21:38 +01:00
Eberhard Graether 4152deb15e test: Fixed typos and issues in manual tests 2018-12-17 23:06:15 +01:00
Eberhard Graether 22b1b0cc40 build: fixed missing include on linux/gcc 2018-12-17 16:54:36 +01:00
Eberhard Graether 19190f4e5e logic: Suggest full reindex after changing custom command 2018-12-17 16:33:52 +01:00
Eberhard Graether f169805fbc data: record Clang Invocation errors as errors when nothing is recorded 2018-12-17 15:29:49 +01:00
Eberhard Graether 86190675a2 ui: Show Database Version in About and Custom Command Source Group description 2018-12-17 14:49:04 +01:00
Eberhard Graether 95e121159f ui: fixed annotations stay highlighted after hovering in tooltip list 2018-12-17 02:05:58 +01:00
Eberhard Graether 797bf2fee5 logic: Show error updates during custom command indexing
* fixed code view showing all locations when switching view mode while showing errors
2018-12-17 00:27:16 +01:00
Eberhard Graether dd4a880ec3 ui: Show overview bundles for non-indexed or symbol types if no others available 2018-12-16 23:51:53 +01:00
Eberhard Graether 1dabbab599 ui: Extracted syntax highlighting rules for java and cpp to files
* pass file language from storage to code view
* load syntax highlighting rules files from install directory "syntax_highlighting_rules"
* files must be named <language_identifier>.rules to make syntax highlighting work
2018-12-16 22:59:07 +01:00
Eberhard Graether a45dcb8a01 project: changed custom command parameter $STORAGE_VERSION to $DB_VERSION 2018-12-16 13:57:56 +01:00
mlangkabel 111e8a5588 logic: log the first 20.000 characters of clang invocations if verbose indexer logging is disabled 2018-12-14 17:56:33 +01:00
mlangkabel 92f4a9e056 logic: record language for files 2018-12-12 15:50:29 +01:00
Eberhard Graether d3d5b961ff data: Replaced NameDelimiterType in NameHierarchy with std::wstring to allow use with arbitrary delimiters 2018-12-11 16:29:08 +01:00
Eberhard Graether 6d5a3c047d logic: Added SourceGroupCustomCommand to use with SourcetrailDB binaries
* Added new Source Group type SourceGroupCustomCommand to UI and ProjectSettings
* The Source Group executes a specified command on every source file
* The variables $SOURCE_PATH, $PROJECT_PATH, $DB_PATH, $STORAGE_VERSION can be passed
* The commands are executed after all other source groups finished indexing
* The command is executed with working directory set to project directory
* Errors during command execution are shown as status update and in the Status View
* SourceGroupCustomCommand cannot be partially cleared, when one file needs clearing the project must be fully re-indexed
2018-12-11 14:05:26 +01:00
mlangkabel 21d947ed6c src: updated SymbolKind enum
* removed SymbolKinds for Parameter and LocalSymbol, because these are not stored as symbols inside the database
* added Module symbol kind for Python
2018-12-10 16:26:38 +01:00
Eberhard Graether 6d5937d18f ui: Fixed indexed source files not updated on changes in project setup
* Now updated when pressing "Show Files" button
2018-12-06 19:51:28 +01:00
Eberhard Graether c7cc70c22e build: Fixed issue in sourcetrail.sh Linux script (issue #638) 2018-12-06 18:08:40 +01:00
Eberhard Graether b47a0b5b72 logic: Inspect errors during indexing (issue #235)
* Enabled errors table during indexing
* Store intermediate errors in StorageCache
* Open tab for errors if no tab yet
* "Show errors" for file disabled during indexing
* Hide indexing dialogs with ESC instead of stopping indexing
2018-12-06 15:46:42 +01:00
Eberhard Graether 09c6155583 ui: Fixed header path selection also preselects non exsiting paths (issue #640) 2018-12-06 11:24:29 +01:00
Eberhard Graether 7a0edaec06 ui: Fixed graph node centering shows right end when node has greater width than view 2018-12-05 16:33:51 +01:00
Eberhard Graether 242ba3c2c7 data: refactored indexer log messages 2018-12-05 14:08:51 +01:00
Eberhard Graether dc76661a53 ui: fixed multiple multiline comments within one line not correctly highlighted 2018-12-05 00:20:46 +01:00
Eberhard Graether a044e17fdc ui: Reduced code view snippet style 2018-11-30 22:40:07 +01:00
Eberhard Graether bdce9a1841 test: Added graph view UI tests 2018-11-30 22:34:52 +01:00
mlangkabel a51799c279 logic: Store locations of errors in source_location table of DB 2018-11-30 16:02:10 +01:00
Eberhard Graether 34691a0555 ui: Display cmake export compile commands flag in project setup without space to avoid error on copy & paste 2018-11-28 16:04:32 +01:00
Eberhard Graether db69b45c58 utility: Don't shrink shared memory below initial size (issue #636) 2018-11-27 13:18:07 +01:00
mlangkabel f7ee5d0d39 src: simplify adding node hierarchies in ParserClient
* removed unnecessary NodeType parameter from ParserClientImpl addNodeHierarchy
2018-11-26 08:55:26 +01:00
Eberhard Graether 267d6b2eb7 logic: Fixed and improved indexing interruption (issue #634)
* Fixed indexing can be interrupted when dialog hidden
* Clear intermediate storages when interrupting
* Abort waiting for less queued storages when indexing interrupted
* Don't index another file when indexing was already interrupted
* Moved indexing interrupted progress dialog to TaskBuildIndex
* Use MessageIndexingInterrupted instead of MessageInterruptTasks
2018-11-23 15:33:20 +01:00
Eberhard Graether 308954635e ui: Fixed unhovering source location does not remove graph highlight 2018-11-21 16:01:17 +01:00
Eberhard Graether 8e0a60eec7 data: Reduced number of storages in shared memory queue until indexer starts waiting to 2 to save memory 2018-11-21 11:50:20 +01:00
Eberhard Graether 7ada0b56f9 build: Changelog for release 2018.4 2018-11-21 11:42:18 +01:00
mlangkabel 3e16235c12 src: changed name of template parameter symbol kind 2018-11-16 12:52:57 +01:00
mlangkabel e4f0269d94 logic: only log clang invocation in verbose indexer mode 2018-11-13 11:04:26 +01:00
Eberhard Graether c7afb0910d logic: Added weekday condition to news API 2018-11-12 23:40:07 +01:00
mlangkabel fb95762293 logic: fixed: search activates wrong symbol if multiple potential matches share the same "long" symbol name 2018-11-12 16:31:41 +01:00
Eberhard Graether 6490191972 ui: Fixed code file content requests in background tabs failing 2018-11-12 16:14:42 +01:00
mlangkabel 5d64910083 logic: fixed infinite iteration when trying to solve parent name of C++ template arguments with multiple parent contexts in Clang AST (this is a very rare edge case) 2018-11-12 15:28:54 +01:00
Eberhard Graether 8188fbd7be ui: Fixed multiple empty tabs opened when constantly closing tabs 2018-11-12 15:22:29 +01:00
Eberhard Graether 0169f04a7a data: optimized batch insert statement maxiumum variable use 2018-11-10 23:51:27 +01:00
Eberhard Graether 660482b294 build: Opt out of macOS Mojave dark mode 2018-11-09 19:58:48 +01:00
Eberhard Graether dfa6230ad6 logic: Reduced delays when combining TaskDecoratorRepeat and TaskSelector 2018-11-05 18:01:17 +01:00
mlangkabel ddc37aee80 data: fixed description of some UI tests 2018-11-05 17:22:16 +01:00
Eberhard Graether 6d0fa311c1 logic: Fixed commands not in auto completions when symbols with same name exist 2018-11-05 17:10:11 +01:00
mlangkabel 9a8276d76e data: updated description and expected output of manual tests 2018-11-05 17:05:32 +01:00
mlangkabel e47929dcbe data: updated windows installer 2018-11-05 16:58:21 +01:00
Eberhard Graether 6f88910466 ui: Fixed graph nodes not movable 2018-11-05 16:54:28 +01:00
Eberhard Graether 0b9b7c8ed5 logic: Fixed race condition for threaded indexing where indexers don't start indexing when command queue was already stopped 2018-11-05 16:21:09 +01:00
Eberhard Graether 165c82f26f logic: Fixed race condition when TaskBuildIndex exits before indexer threads are started when command queue is already empty 2018-11-05 15:04:22 +01:00
Eberhard Graether e96a28b38a ui: Finalized news on start screen layout
* And fixed mac bundle install script.
2018-11-05 14:15:55 +01:00
Eberhard Graether bac8d6afe8 ui: Added Ctrl + W tab close shortcut for Windows 2018-11-05 12:16:16 +01:00
mlangkabel d2cd236318 logic: implemented shrinking shared memory to fit required amount from time to time 2018-11-05 10:38:48 +01:00
Eberhard Graether f13aec70dd ui: Added tabs UI to top of main window (issue #215)
* Added tab bar to top of main window with UI/shortcuts similar to web browsers
* ComponentManager offers components for 2 use-cases: application and tab
* Application components: log view (status/errors), bookmarks, screen search, status bar, tabs, tooltips, dialogs and all tab views disabled
* Tab components: graph, code, history and search
* When a project is loaded there is always at least one tab, otherwise there is none
* Each tab replaces the application views of the same name in the main layout when activated
* Each tab has it's own TaskScheduler, to process tasks independent from other tabs
* The application has a global TaskScheduler for application wide tasks
* The singloton class TaskManager is responsible for managing the TaskSchedulers
* MessageListeners and Messages hold an optional schedulerId, both must be set to only send to a specific TaskScheduler
* Bookmark buttons where split off into a separate view per tab, bookmark managemement is done in the application
* History menu processing is done by the QtMainWindow now
* Screen search is an application component, the responders are always changed to the active tab
* Plugin messages are opened in a new tab
* Symbols can be opened in a new tab via middle click/context menu in graph, code, history dropdown
* Full text index creation is mutexed now in PersistenStorage to make it fully thread-safe
* All tabs are closed when switching projects
* Tab contents are only animated when visible

fortune cookie message = Catch your lucky star!
2018-11-05 01:28:12 +01:00
Eberhard Graether bd4a554b27 build: Fixed .config directory no write permission after install on Linux (issue #625, #626) 2018-11-04 16:41:38 +01:00
Eberhard Graether 466f094800 build: Fixed docker builds
* fixed Boost c++ standard
* build with docker on mac
* added mail script
* fixed cxx index sample test on mac
* disabled gradle source group test for linux docker builds
2018-11-03 03:18:06 +01:00
mlangkabel bff7b0d70a logic: added type usage edge for types that occur as template arguments 2018-11-02 13:27:44 +01:00
mlangkabel 05649977a6 data: updated 3rd party license info 2018-10-30 13:39:05 +01:00
mlangkabel 1497941c3d logic: skip recording implicit local symbols
* for example this would be the parameter of an implicitly defined copy constructor
2018-10-30 13:34:16 +01:00
mlangkabel 73cf651664 ui: Show explicit error message if no java path provided in preferences 2018-10-30 12:30:32 +01:00
mlangkabel d12570ccf9 data: updated expected output for Cxx sample project tests
* changed expected output of Bullet and Box2D to new formatting (without duplicates)
* minor additions due to clang update
* updated expected output of TicTacToe project with all headers indexed
2018-10-30 12:04:33 +01:00
Eberhard Graether 0663286a90 logic: Fixed TaskDecoratorDelay slowing down Task processing 2018-10-28 17:11:24 +01:00
Eberhard Graether e2dd26ee5a logic: Split MessageRefresh into index and UI 2018-10-28 12:11:53 +01:00
Eberhard Graether 27627b6d05 logic: Fixed termination issues in task scheduling
* don't use thread::detach() in TaskGroupParallel::terminate to make it useful for tabs
* properly terminate TaskFillIndexerCommandQueue
* fixed wrong microsecond delays
* moved some task delays to TaskDecoratorRepeat for better transparency
2018-10-28 02:36:41 +01:00
Andreas Stallinger aef4970aa2 build: Updated docker images 2018-10-26 17:49:50 +02:00
Eberhard Graether f7b77b6f9c build: Updated to Clang 7.0.0 2018-10-26 14:23:26 +02:00
Eberhard Graether 3d8afdb7be src: Removed pointless singleton pattern from LicenseChecker 2018-10-21 13:59:48 +02:00
Eberhard Graether 6a6bd0fca8 ui: Show news sent with update check on start screen
* News are passed as JSON string, containing an array of news items.
* Each news item has version and content (html).
* Items can be filtered by min/max version, OS and license. The first item that fits is used.
* Items can be important, which highlights the news box.
* News are not shown if older than 5 days.

fortune cookie message = You will be financially successful in case your actions are well planned.
2018-10-21 13:49:06 +02:00
Eberhard Graether 518f15d490 data: Added forEach<StorageType>() methods to SqliteIndexStorage for significantly lower memory use of queries
* use in local index building during refresh
* use in read cache building on project load
* use in some storage access requests
* also slightly improves speed
2018-10-20 14:57:38 +02:00
Eberhard Graether 4638ea2baf data: use uint32_t instead of Id in SqliteIndexStorage local indexes 2018-10-20 04:13:13 +02:00
Eberhard Graether 426e16c75b data: Fixed real deadlock in interprocess indexer when command queue is empty on start 2018-10-20 02:49:46 +02:00
Eberhard Graether f8bff8dfda data: Fixed deadlock when indexers started before commands in queue
* Made refilling command queue faster to avoid indexers shutting down
2018-10-20 01:59:09 +02:00
Eberhard Graether ab6cf631f4 ui: Added Copy action to code view context menu 2018-10-20 00:09:57 +02:00
Eberhard Graether 1e7a694c80 ui: Removed leading spaces in overview project description 2018-10-19 23:51:02 +02:00
Eberhard Graether 5a10867d56 logic: fixed refresh broken after refreshing with no files to index and clear 2018-10-19 23:24:22 +02:00
Eberhard Graether c50ff53b32 logic: Fixed history menu to show global activation history chronologically 2018-10-19 22:18:17 +02:00
Eberhard Graether 684699ace9 ui: Fixed undo to now undefined node didn't display it undefined 2018-10-19 21:26:47 +02:00
Eberhard Graether adc1900d18 logic: Fixed multiple active symbols broken on undo
* fixed undoing to multiple actives didn't show all nodes in graph
* fixed wrong name in search bar, status message and history dropdown
* fixed flicker when activating multiple nodes in code view
2018-10-19 20:47:08 +02:00
Eberhard Graether bcbbb54b70 res: No std header files in tutorial 2018-10-19 18:38:27 +02:00
Eberhard Graether 842bce8b32 logic: Show hidden indexing dialog on refresh
* Fixed refresh restarted when refreshing while processing files
2018-10-17 01:30:33 +02:00
Eberhard Graether d78e80b548 ui: Fixed unhovering active error removes active highlight 2018-10-16 23:40:40 +02:00
Eberhard Graether cfdd332a18 cxx: Only log clang invocation errors when present 2018-10-16 17:08:59 +02:00
Eberhard Graether 73007931b2 logic: Fixed race conditions in indexing tasks
* Fixed TaskFillIndexerCommandQueue exiting right away when all commands fitted into queue on first call
* Fixed TaskBuildIndex exiting right away when starting of indexer processes takes longer than the update cycle
* Refactored Indexing Tasks Behavior Tree
2018-10-16 17:02:42 +02:00
Eberhard Graether 54f3b551ef src: Fixed shared memory garbage collector mutex stuck
* Try unlocking mutex 5 times
* Then force ownership
* If everything fails run without garbage collector
2018-10-16 15:20:48 +02:00
Eberhard Graether 31d2fb67e2 build: Fixed Linux build 2018-10-16 14:16:21 +02:00
Eberhard Graether db586939e9 ui: Fixed crash on scope expansion
Code file list was still referencing deleted snippet scrollbar after replacing snippets on scope expansion.
2018-10-16 12:10:20 +02:00
Eberhard Graether 4ae052cb9c data: Refactored ParserClient API to return and use Ids instead of NameHierarchies for faster indexing
* Pass NameHierarchy to record new symbol returning an Id
* Cache symbol Ids in Parser implementation
* Reuse symbol Ids as reference when recording related data
* Pass FilePath to record new file returning an Id
* Cache file Ids in CanonicalFilePathCache
* Store file Id in ParseLocation instead of FilePath

fortune cookie message = You know a silent way to impose your will.
2018-10-16 00:54:38 +02:00
Eberhard Graether aab29b241e test: Replaced DumpParserClient and TestParserClient with TestIntermediateStorage to ease switch to new ParserClient API 2018-10-15 15:05:15 +02:00
Eberhard Graether 3d5b90364a data: Removed source_location_file_node_id_type_index 2018-10-06 12:43:57 +02:00
mlangkabel 10658b2801 ui: display multi-line maven error messages (issue #622) 2018-10-05 13:32:25 +02:00
Eberhard Graether 9edfdacd72 data: Removed separate comment_location table
* added LocationType LOCATION_COMMENT
* store comment locations within source_locations
2018-10-04 21:21:31 +02:00
Eberhard Graether f060b6042d data: Improved injection performance with batched insertions
* add InsertBatchStatement inserting any number as multiples
* switched Storage injection interface to containers
2018-10-03 01:15:27 +02:00
mlangkabel 15e66758df build: updated versions of Java indexer dependencies 2018-10-02 18:15:39 +02:00
Eberhard Graether 83f41e04b1 data: start adding node name hierarchy from bottom and stop when a name was already added 2018-09-25 00:52:09 +02:00
Eberhard Graether a870858bb6 data: Don't store NameElement in NameHierarchy in shared_ptr to reduce heap allocations 2018-09-23 18:01:31 +02:00
Eberhard Graether 34cdde604e data: improved ParserClientImpl recording performance
* Removed storage checks and single use methods
* cache file ids in ParserClientImpl to avoid lookup for every source location
* NameHierarchy::serialize with range to avoid copies when adding nodes
* removed duplicate code in IndexerCxx and IndexerJava, moved to Indexer
2018-09-23 17:52:05 +02:00
mlangkabel 7c039a2fb8 logic: fixed reading lines now also breaks at a single "\r" on windows 2018-09-21 18:00:34 +02:00
mlangkabel 951256c07b logic: reduced waiting time when interrupting indexer processes
* made multiprocess AST traversal interruptible again
* removed const variables that define sleep times for threads
2018-09-21 17:19:03 +02:00
Eberhard Graether 593e075399 utility: don't process log messages in stream macros when logging disabled 2018-09-21 16:28:07 +02:00
Eberhard Graether 56dcddfb83 cxx: Improved performance of CxxAstVisitor, CxxNameResolver and CxxName types
* use unique_ptr for CxxName handling
* create CxxNameResolver from other
* improved string handling in CxxName types
* only traverse decls within projects
* use macro in ast visitor to call into each component instead of virtual calls
* improved CxxName caching performance
* refactored CxxNameResolver classes to use less locals
2018-09-21 14:48:51 +02:00
Eberhard Graether 513988e51b src: Fixed tests for Mac 2018-09-21 14:38:31 +02:00
mlangkabel dfc6d88432 build: search headers in all source directories
* removed paths in include directives
* changed cmake to provide necessary header search paths
* changed name of version.h to productVersion.h due to name conflict
2018-09-18 19:00:18 +02:00
mlangkabel 9dc2bcc2f9 logic: indexer command refactoring
* moved SystemHeaderSearchPaths and FramewordSeearchPaths of indexer cxx indexer commands to CompilerFlags section
* added SourceGroupTestSuite to test indexer command generation of all source groups
* removed "compile_commands.json" from gitignore, because a resource file for the tests has this name
2018-09-18 17:09:28 +02:00
Eberhard Graether 07454f2045 data: Removed std::multimap optimization from LowMemoryStringMap and store local symbol names in std::map 2018-09-18 12:32:55 +02:00
Eberhard Graether 9f453ef376 src: Fixed clang warnings 2018-09-18 10:56:56 +02:00
mlangkabel 5517cd4ccf logic: refresh info generator fixes and tests
* fixed case where "to-index" state of a file has changed and thus the file needs to be re-indexed
* clear and re-index files that depend on changed non-indexed files
* clear and re-index files referenced by unchanged but cleared (due to referencing a changed file) files
* fixed: updated files with changed timestamp that do not have content in the db will now count as changed
* refined refresh info generator tests
* updated checklists for manual project setup tests
2018-09-14 16:02:01 +02:00
mlangkabel 5b7938eda6 logic: record and display cxx indexer configuration issues (issue #618) 2018-09-14 15:31:27 +02:00
mlangkabel eb0bf063b8 logic: improved performance of "setting up indexers" step for CDB SourceGroups
* improved performance of generating IndexerCommandProviders of  CDB SourceGroups
2018-09-11 13:23:55 +02:00
mlangkabel ec0f3bb2ac build: update to boost 1.68 for Windows builds 2018-09-10 17:12:42 +02:00
mlangkabel db85279b8c logic: reduced memory consumption of indexer commands for empty, Sonargraph and Codeblocks Cxx sourcegroups
* use compressed format of CxxIndexerCommandProvider for these SourceGroups
2018-09-10 13:58:45 +02:00
mlangkabel cdbca77495 src: cleaned up code of Tasks and IndexerCommands 2018-09-10 13:17:49 +02:00
mlangkabel df0b7bc7bb logic: Log success of VS path detector instead of printing to console 2018-09-10 13:01:54 +02:00
mlangkabel 9998855527 logic: generate indexer commands on demand to reduce shared memory consumption
* implemented task for sending IndexerCommands to shared memory on demand
* SourceGroups now return IndexerCommandProviders instead of just a list of indexer commands. This way information can be stored in a compressed format
* merged IndexerCommandCxxEmpty and IndexerCommandCxxCdb
* moved sorting of indexer commands by file size from IndexerCommandList to TaskFillIndexerCommandQueue
* removed obsolete IndexerCommandList class
* wait for IndexerCommandQueue to be filled before starting the indexers
* restart finished indexer processes while indexerCommandQueue is still running
* restart indexer threads as long as there are indexer commands to process
* removed Blackboard::getMutex() and added an atomic update() method
2018-09-10 12:40:30 +02:00
Eberhard Graether 92a19869e7 test: History ui tests 2018-09-07 12:50:04 +02:00
Eberhard Graether ac7b642d8a test: Search view ui tests 2018-09-07 12:48:19 +02:00
Eberhard Graether d2a99cbab2 test: Code view ui tests 2018-09-07 12:46:31 +02:00
mlangkabel 1a39f9ddc0 logic: fixed crash and missing includes in LogMemoryStringMap 2018-09-04 21:43:00 +02:00
mlangkabel 0e9fb73463 logic: improved performance of querying filepaths from CDB
* we don't need to get the complete compile commands for this
* as a fallback, querying a single compile command for a file is fast, because it is stored in a map
2018-09-03 16:51:48 +02:00
mlangkabel 5ff7d510d7 Re-Revert and fix "logic: changed Java type_argument edges to originate in the generic type or method" 2018-09-03 09:38:51 +02:00
Eberhard Graether bb1d7f5b39 src: Fixed clang warnings 2018-09-02 21:23:07 +02:00
Eberhard Graether 06d64b76f7 data: Reduced memory usage during indexing with LowMemoryStringMap
* reduces node and local symbol index sizes by about 30-50%
2018-09-02 20:47:43 +02:00
Eberhard Graether 55753a1bf5 Changelog for 2018.3.55 2018-09-02 20:44:24 +02:00
mlangkabel ea68229303 logic: fixed crash that occurred in some cases when logging the clang invocation 2018-08-31 13:19:52 +02:00
mlangkabel bac68a93df data: added annotation icon to windows installer 2018-08-28 16:57:36 +02:00
mlangkabel 4afd1b3fef ui: implemented restoring minimized Sourcetrail window if token is activated from IDE on Windows 2018-08-28 16:50:21 +02:00
mlangkabel 5c6e9afe06 ui: fixed raising Sourcetrail window if token is activated from IDE on Windows 2018-08-28 16:40:00 +02:00
mlangkabel 8e6d5e6010 Revert "logic: changed Java type_argument edges to originate in the generic type or method" 2018-08-28 16:20:51 +02:00
Eberhard Graether ff92ac7929 logic: Fixed crash on self referencing connections in HierarchyCache 2018-08-28 16:05:34 +02:00
mlangkabel 03c06e91e8 test: added project setup test description and resources for Java Sonargraph setup 2018-08-28 15:01:13 +02:00
Eberhard Graether db23d50614 test: Fixed project setup tests for mac 2018-08-28 14:20:28 +02:00
mlangkabel 21d58357f2 logic: fixed application crash on windows if JVM tries to allocate too much memory by reducing the amount of allocated memory to the available size. 2018-08-28 13:06:36 +02:00
Eberhard Graether 5f80d79540 ui: Fixed gradle loading dialogs in main window instaed of project setup dialog 2018-08-28 12:58:29 +02:00
mlangkabel 1ba843fbec test: added test descriptions and resources for manually testing different project setup methods 2018-08-28 11:13:05 +02:00
mlangkabel 0f5548f5f9 ui: updated text for handling non-existent project in recent projects list 2018-08-28 11:02:48 +02:00
mlangkabel d2b8b5567f build: fixed ShadedIntermediateStorage not compiling on Windows 2018-08-28 10:15:14 +02:00
Eberhard Graether a1ad9abc0d data: Faster creation of ParseLocation 2018-08-28 02:16:31 +02:00
Eberhard Graether 470a8a3920 data: Improved data storing performance in IntermediateStorage 2018-08-27 23:37:24 +02:00
Eberhard Graether c0984b2ca4 ui: Display count circle of bundle node as rounded rect 2018-08-27 19:42:20 +02:00
Eberhard Graether e3e8fa1547 data: Request file modification time not until storing to index for faster indexing performance 2018-08-27 17:05:38 +02:00
mlangkabel e8a4830229 ui: fixed crash that had a chance to occur when showing source files of cdb/cbp/sonargraph project 2018-08-27 16:15:18 +02:00
Eberhard Graether 9bce2de57b data: reduced memory usage of sqlite index during indexing
* use std::string instead of std::wstring in temp indices
* use number types for edges and source locations in temp indices
* use map::emplace where appropriate
* moved 100 occurence insert optimization fully to sqlite index
2018-08-27 15:38:44 +02:00
Eberhard Graether bd1e79179b logic: Fixed source extensions not converted to lowercase (issue #614) 2018-08-24 16:12:53 +02:00
mlangkabel 862f7b99a7 logic: fixed recorded locations of errors that appear after cxx line directives (issue #610) 2018-08-24 16:06:05 +02:00
Eberhard Graether f7e67c8a63 ui: Fixed syntax highlighting for Java annotations 2018-08-24 15:51:22 +02:00
Eberhard Graether 1ba1b9f967 ui: Clear graph contents on overview (issue #609) 2018-08-24 13:54:53 +02:00
Eberhard Graether 01d5f23e8f gen: Added quarters parameter to license generator 2018-08-24 12:25:58 +02:00
mlangkabel caad4dfc14 logic: fixed policy for finding windows user data folder (issue #612)
* creating "user_fallback" path in application directory if everything else fails
2018-08-24 10:50:00 +02:00
mlangkabel 50c0f6ef59 logic: fixed recording of multiple cxx anonymous namespaces within the same file 2018-08-21 16:57:16 +02:00
Eberhard Graether b64fda77b5 logic: Fixed files within indexed directories always refreshed in empty C/C++ source groups 2018-08-21 16:49:01 +02:00
Eberhard Graether 5f6747d6a1 ui: Don't show overriden method in tooltip list when clicking overriding method 2018-08-21 16:08:41 +02:00
Eberhard Graether 366bbd6548 ui: Fixed local reference navigation not shown for edge clicks when file content was not present yet 2018-08-21 14:14:39 +02:00
Eberhard Graether 4e68de8917 logic: Fixed crash when start window deleted while checking for update 2018-08-21 13:19:17 +02:00
Eberhard Graether 023c6288d6 logic: Fixed issues releated to real signatures in tooltips (issue #604)
* Fixed crash when signature was wrongly recorded
* Fixed line break at wrong position for template functions/methods
* Fixed already qualified name replace with qualified name, repeating qualifiers
2018-08-20 23:22:50 +02:00
mlangkabel c86f4d04dc logic: record "java.lang" symbol as package 2018-08-20 18:15:11 +02:00
mlangkabel 36a9d552da logic: changed Java type_argument edges to originate in the generic type or method
* added tests for java type argument recording
* implemented recording type arguments for java ExpressionMethodReferences
* changed type_argument edge to originate in generic type
* added type_usage edge for type_arguments that originates in context (e.g. calling method)
2018-08-20 16:27:53 +02:00
mlangkabel 14a8d024b9 logic: record all symbol types of package names qualifying a Java import declaration 2018-08-20 16:02:10 +02:00
Eberhard Graether 2e5cfd9333 ui: Fixed code annotations missing in snippet mode for files with /r/n line endings 2018-08-20 14:43:44 +02:00
mlangkabel 9813c9873f logic: index and store Java annotations
* add annotation symbol kind
* add annotation_usage edge kind
* increment storage version
* record java annotation decls
* record java annotation member decls (as fields)
* update expected output of java sample project indexing tests
* add tests for recording annotations
* add annotation icon, annotation colors
* add new annotation node and edge types to legend
2018-08-14 17:33:00 +02:00
mlangkabel abe0248c1e logic: implemented setting Clang's language to "c++" for "empty cpp" source groups 2018-08-13 17:52:24 +02:00
mlangkabel 7150817fc4 logic: implemented logging of used clang invocation which also include implicit and derived arguments (issue #595) 2018-08-13 17:21:27 +02:00
mlangkabel 195f5893c9 logic: reduce copies of intermediate storage data when creating shared memory representation 2018-08-10 16:19:45 +02:00
mlangkabel 5ace9e080f logic: removed shuffling of indexer commands 2018-08-10 16:10:06 +02:00
mlangkabel 337cf2d371 logic: improved performance of storing index to database
* add compiled statement for batch inserting 100 occurrences at once
* removed unnecessary primary key from component_access to get rid of additional index table
* changed explicit check for existing symbols when injecting to implicit check in insert statement (insert or ignore)
* improved performance of adding edges by replacing edge multi part index with in-memory-index
* added in-memory-index for node table
* added in-memory-index for local_symbol table
* added in-memory-index for lource_location table
* moved setting storage mode to SqliteIndexStorage, because storage modes are not used anywhere else.
* don't store current mode as member because re-creating an existing index takes no time.
* add getter for name of SqliteDatabaseIndex
* removed unused method from persistent storage
2018-08-10 15:37:08 +02:00
Eberhard Graether 52d0236f9a res: Changelog for 2018.3.13 2018-08-07 14:03:32 +02:00
Eberhard Graether 0898accd58 ui: improved hatching color contrast of variable in bright scheme 2018-08-06 01:04:36 +02:00
Eberhard Graether d71e28b7b7 ui: Fixed fulltext search locations disappearing when expanding scope in code snippet view 2018-08-05 20:29:17 +02:00
Eberhard Graether ae7b827b0c ui: Added expand and collapse node actions to graph view context menu
* expand/collapse node via graph view context menu
* also possible with Shift + Left Click
2018-08-05 19:49:18 +02:00
mlangkabel f9b43526f4 logic: improved performance of storing index to the database
* batch inject occurrences
* removed unnecessary destructor and keywords from storages
2018-08-03 13:51:31 +02:00
mlangkabel 1e77613a1b ui: implemented handling of case where index db is used by different process while trying to swap files 2018-07-31 18:06:46 +02:00
mlangkabel 70dba27f9e logic: fixed crash that occurred when trying to use a project that encountered an exception while loading
* fixed crash when storage access proxy tries to access a deleted storage pointer
* refactored StorageAccessProxy implementation to use macros to generate proxy methods
2018-07-31 15:55:29 +02:00
mlangkabel 40bd5ceb5a logic: improved "prepare indexing" performance for cxx sourcegroups
* improved performance of "prepare indexing" step for all cxx source groups except empty
* unified code for filtering to contained file paths of source groups
* cleaned up code of SourceGroupFactoryModules
2018-07-31 14:17:14 +02:00
mlangkabel 445e7f339e logic: Fixed full-text search sometimes showing more results than intended
* fixed building longest common prefix array for full-text search by making values not relative the the charcode of the "a" character, because this would result in characters (e.g. "_") having a negarive value.
2018-07-31 10:15:25 +02:00
Eberhard Graether 5b42298a25 data: Use ordered_map in canonical filepath cache 2018-07-30 16:26:23 +02:00
Eberhard Graether ea0c249ad9 ui: Improved contrasts in color schemes
* fixed edge routed wrong issue in graph legend
* fixed Alt + Ctrl/Cmd + R refreshes UI
2018-07-27 14:45:25 +02:00
Eberhard Graether 713a8eec50 data: Improved file path caching in CXX indexer
* centralized all file path caching in CanonicalFilePathCache
* added cache by clang::FileID
* moved FileRegister into CanonicalFilePathCache and removed it from AST* classes
* only record files once
2018-07-27 12:39:55 +02:00
Eberhard Graether afec261872 ui: Made all indexing dialogs hideable
* all dialogs for the indexing usecase can be hidden regardless of project state
* fixed some dialogs could not be shown
* pass dialogview into project and all indexing tasks
* pass application to project and tasks
2018-07-25 23:49:46 +02:00
Eberhard Graether b055b4c7dc logic: Fixed click on macro activated first of multiple symbols instead of showing list 2018-07-25 20:53:54 +02:00
mlangkabel eda86dc44a ui: fixed inheritance and template edges hidden by grouped node 2018-07-24 16:49:19 +02:00
mlangkabel 7007cae02d logic: fixed parser client to record scope of nodes that have a signature 2018-07-24 16:34:06 +02:00
Eberhard Graether af8220968c ui: Fixed graph not interactive after showing legend 2018-07-24 15:18:21 +02:00
Eberhard Graether 704b1a4e9a logic: Disable activation of errors while indexing 2018-07-24 14:28:19 +02:00
mlangkabel 80055d42ff logic: fixed infinite iteration in cxx signature recording 2018-07-24 13:53:32 +02:00
Eberhard Graether d96baad91d src: Fixes for Release
* pass log directory absolute to indexers
* pass app and user paths absolute to indexers
* removed QCoreApplication instance from indexer process
* removed mutex from ConsoleLogger
* updated shortcut window
* renamed code reference menu items
2018-07-24 12:53:55 +02:00
mlangkabel f715e5c99e logic: only prefill application settings once 2018-07-24 11:55:44 +02:00
mlangkabel 86b0583b6b ui: added check for entered project name to be a valid file name 2018-07-24 11:02:13 +02:00
Eberhard Graether ac31bb6779 src: avoid indexing slowdown on macOS by not using unknown progress for progressbar in status bar 2018-07-24 03:36:27 +02:00
mlangkabel 0fc670bcd7 data: added legend icon to windows installer 2018-07-23 18:54:17 +02:00
mlangkabel 75a22be362 logic: fixed names of available header path detectors
* fixed header path detector incorrectly showing up as available
* fixed visual studio header path detector names
2018-07-23 18:46:28 +02:00
mlangkabel fdc99a2935 logic: fixed infinite iteration in cxx brace recording 2018-07-23 18:21:29 +02:00
Eberhard Graether ed0ade034e ui: Graph legend (issue #308, #540)
* Show graph legend via 'legend' command or '?' button in the lower right corner
* Legend is not interactive: nodes and edges not clickable or moveable
* CXX and Java node types are mixed
2018-07-23 16:55:58 +02:00
mlangkabel 83873f4dbf ui: added info on supported Sonargraph module types to source group type selection screen 2018-07-23 15:59:41 +02:00
mlangkabel 20086d14a6 logic: ship clang compiler header within Sourcetrail package on Windows
* added clang system headers to data folder of Sourcetrail repo
* added clang system header search directory to detected directories on windows
* updated migration to add clang system header search directory on windows
* updated windows installer and portable package to include compiler headers
* updated linux package
* cleaned code of path detectors
* unrelated removal of unnecessary code in LicenseChecker and UpdateChecker
2018-07-23 15:14:07 +02:00
mlangkabel 637857fb56 src: fixed crash when indexing in headless mode 2018-07-23 14:20:16 +02:00
mlangkabel c523f1bd8b build: added codeview arrow buttons to windows installer 2018-07-23 11:19:29 +02:00
Eberhard Graether 95ebfff19c ui: Added on-demand local reference navigation to code view navigation bar (issue #453, #538)
* show local reference navigation for local symbols and multiple edge references
* shortcut Ctrl/Cmd + T
* iterate with consecutive edge clicks
2018-07-23 03:13:41 +02:00
mlangkabel 1df330ff2c ui: improved buttons texts for "reindexing required" dialog 2018-07-22 20:28:18 +02:00
Eberhard Graether 1db248a34e ui: scroll code horizontally to active sourcelocations 2018-07-22 19:40:01 +02:00
Eberhard Graether ad6f5c8727 ui: Added show definition context menu action for graph nodes (issue #83)
* use 'show definition' context menu action or 'Ctrl/Cmd + Left Click' to show definition of node in code
2018-07-22 14:30:56 +02:00
Eberhard Graether 0b5ad33a8c src: Improved project load speed with move semantics and in-place initialization
* switched SearchIndex and HierarchyCache to std::unique_ptr
* use move semantics and in-place initialization in StorageTypes and SearchIndex
* improved autocompletion speed by fixing contained node type checking
2018-07-22 00:25:54 +02:00
mlangkabel 46e6b8ff14 logic: create non-existing project directory during project setup for better usability 2018-07-21 09:32:33 +02:00
mlangkabel c6f9d8f92c logic: show real code of signatures in tooltips
* added new location type
* refactored old recording code
* record signature locations for cxx functions and java methods
* added signature locations to sample project indexer tests
* ignore signature locations in ui
* signatures in tooltip with qualified name of the function/method
* added test for finding signature location of constructor with initializer list
2018-07-20 14:00:08 +02:00
Eberhard Graether 605d07688b src: Use move semantics for NameElement construction 2018-07-17 15:31:18 +02:00
Eberhard Graether 6adcb2b31e logic: Improved search result scoring
* Increase result count relative to query length
* Only run best scoring on shortest 1000 results
* Made NameHierarchy deserializing faster
2018-07-17 14:41:17 +02:00
mlangkabel 094bfae8f1 test: added performance tracking for java indexer tests 2018-07-17 13:00:56 +02:00
Eberhard Graether ec5ac09566 ui: Don't animate scroll to top in graph 2018-07-16 15:40:14 +02:00
Eberhard Graether e020546f29 test: Fixed test build 2018-07-16 15:14:20 +02:00
Eberhard Graether ed1e8c2273 src: switched isupper to iswupper and all similar functions (issue #598) 2018-07-16 14:56:05 +02:00
mlangkabel 033ff82192 src: refactored cxx ast visitor code
* extracted brace recording code into own ast visitor component
* removed unnecessary cxx ast visitor code
2018-07-16 14:48:47 +02:00
mlangkabel 4be04e28bf ui: improved windows error handling for loading external dlls to display an error text 2018-07-16 12:54:17 +02:00
mlangkabel 855d8f4e2e logic: implemented highlighting both opening and closing bracket in Code view while hovering either one (issue #12) 2018-07-16 10:38:40 +02:00
mlangkabel f77e47a921 test: implemented recording history of sample project indexing times on windows 2018-07-13 14:58:10 +02:00
Eberhard Graether 37aa46d77b ui: Fixed start screen not disappearing when opening project with double click on macOS 2018-07-13 14:36:13 +02:00
Eberhard Graether 7884f82432 ui: Fixed restoring scroll position on undo in graph broken 2018-07-13 14:14:04 +02:00
Eberhard Graether 88b507b169 ui: Don't show children with type use edges if parent is active by default 2018-07-13 13:16:53 +02:00
Eberhard Graether 151fb666e4 ui: Fixed bookmark creator/editor header 2018-07-10 15:59:39 +02:00
Eberhard Graether 983e0dacd4 logic: Show parameters for functions/methods with same name within same parent (issue #259) 2018-07-10 15:28:09 +02:00
mlangkabel 98f4ec62ec logic: implemented exporting graph as .svg (issue #596) 2018-07-10 14:31:39 +02:00
mlangkabel ee3bf41a27 logic: fixed crash when renaming the temp storage while it is still used 2018-07-10 14:14:48 +02:00
mlangkabel 58eb994a60 src: cleaned logger code 2018-07-10 11:52:22 +02:00
Eberhard Graether ad325ac974 logic: background indexing (issue #175)
* allow hiding of indexing dialogs to browse loaded project while indexing
* show indexing status in status bar while indexing
* use different dialog views for different use cases to avoid state collisions
* fixed error label in status bar jittering while indexing
* show hand cursors for clickable elements in status bar
* indexing is not interrupted on pressing ESC while in hidden
* disable error table and error label while indexing
* refactored indexing messages
* forbid indexing and changing project while indexing
* don't show indexing status messages in status bar when indexing in the background
* allow tasks to run in the background

fortune cookie message = A journey is waiting for you.
2018-07-10 11:42:58 +02:00
mlangkabel 6bbb44309d logic: added support for Java 10
* updated java indexed and dependencies to support java 10
* added java indexer test for java 10 "var" support
2018-07-10 11:26:51 +02:00
mlangkabel 2bbe696af2 ui: fixed project setup to check if CBP and Sonargraph paths are set before allowing to continue 2018-07-09 10:17:59 +02:00
mlangkabel a1dd1a77c9 logic: allow the user to discard an aborted indexer run
* keep old database on filesystem while indexing
* migrate old ".coatiproject" settings to new ".srctrlprj" extension when loading project
* send new errors in MessageErrorCountUpdate after injecting
* recheck filepath exist() in FileSystem's remove, rename, copy and create functions
* updated tasks to new "override" policy
2018-07-03 18:54:53 +02:00
Eberhard Graether c8a885be83 logic: Made history menu use on Messages instead of SearchMatch
* Common base class MessageActivateBase for activation messages with getter for SearchMatches
* Removed duplicate logic for creating SearchMatches from Messages
* Fixed can't reactivate fulltext search from history menu
* Renamed history message and moved to sub directory
* Fixed activating node type filters didn't clear code view
2018-07-03 15:11:52 +02:00
mlangkabel 0519fd1462 logic: fixed project shows up empty after exiting app while indexing previously empty project 2018-07-02 13:16:30 +02:00
mlangkabel 7c09f3339b ui: store and display translation unit of recorded indexing errors 2018-07-02 13:00:41 +02:00
Eberhard Graether 6794b61fab ui: Fixed activating history item from menu showed wrong symbol (issue #572)
* Refactored SearchMatch: removed delimiter, added tokenName
* Refactored MessageActivateTokens: removed tokenNames
* Restore from SearchMatches from NameHierarchies of tokens
2018-06-30 02:16:03 +02:00
Eberhard Graether 84ddb4ba21 logic: Force unlock shared memory mutex of SharedMemoryGarbageCollector on creation 2018-06-30 01:48:31 +02:00
Eberhard Graether 172f1b7934 logic: Moved all error handling logic into ErrorController (issue #577)
* Handle all error related messages in ErrorController
* Moved error filter state from Storage to ErrorController
* Moved all error related messages to type/error subdirectory
* Enable all errors shown by default
* Always show unfiltered error count in status bar and overview
* Fixed all errors shown again when changing error filter on errors for file
2018-06-29 13:31:05 +02:00
Eberhard Graether c91207cfe9 java: Updated .jar dependencies 2018-06-29 13:25:28 +02:00
mlangkabel 08ab75f262 logic: refactored QtProjectWizzard to remove duplicate definition of contents shown for setup and summary
* also added current page count (e.g. 1/3) to project setup
* moved the code for copying a source group to the settings classes so that the wizzard doesn't need to know which source groups may be there anymore.
2018-06-25 16:00:20 +02:00
Eberhard Graether e287c86315 data: Allow a complete file to become incomplete again if it has errors in a later translation unit 2018-06-20 23:56:18 +02:00
Eberhard Graether c7872831e9 build: Changelog for 2018.2.77 2018-06-20 23:44:29 +02:00
Eberhard Graether def645a057 ui: Readded SonarGraph setup in Source Group type selection 2018-06-20 23:31:30 +02:00
Eberhard Graether dcea53b242 bin: fixed accidental changes in tictactoe project 2018-06-18 20:48:01 +02:00
Eberhard Graether d5f0c62f56 src: removed debug code from SourceGroupCxxCdb 2018-06-18 20:37:36 +02:00
Eberhard Graether c4901b6a7f data: fixed issues with errors in incomplete files
* fixed intermediatestorage merges might lose file indexed/complete information
* fixed changing file complete to true only possible if the file has no errors
* fixed clicking show errors for a file where no asociated errors were found showed all errors
2018-06-18 20:31:52 +02:00
mlangkabel 009404dd37 logic: reduced overhead in indexed files for indexer commands generated from CDB
* done by removing unrelated .cpp files from the indexed files because they don't get indexed by the respective compilation unit
2018-06-18 18:11:43 +02:00
Eberhard Graether f11be042a6 build: ship clang compiler header within Sourcetrail package on macOS and Linux
* replace path to local compiler headers with packaged ones in include path detection
* added app settings migration to replace local compiler header path with path to packaged headers
2018-06-18 14:08:50 +02:00
Eberhard Graether a1c146d439 ui: Hide SonarGraph project setup from Source Group type selection 2018-06-18 11:15:41 +02:00
mlangkabel 8c90739f6d ui: added link to Sonargraph website to sourcegroup selection screen 2018-06-15 19:16:02 +02:00
mlangkabel 24c0f86eda logic: only return existing paths in indexed header path detection of CDB, CBP and Sonargraph sourcegroups 2018-06-15 18:53:50 +02:00
mlangkabel bbf462d1fb logic: paths that are automatically filled by the project setup wizard will be made relative if they are shorter if the absolute paths 2018-06-15 18:39:03 +02:00
mlangkabel b6588cd6ba logic: added exclude filters for cbp sourcegroups 2018-06-15 18:33:04 +02:00
mlangkabel 0a6347fa43 logic: add clang msvc compatibility flags to newly created codeblocks and sonargraph sourcegroups 2018-06-15 14:01:56 +02:00
mlangkabel f0b423b319 logic: improved performance of code blocks indexed header detection 2018-06-15 13:35:27 +02:00
Eberhard Graether e4000e88be ui: Fixed undoing one of multiple edge activations caused multiple recenterings of the graph 2018-06-14 23:17:10 +02:00
Eberhard Graether 9c91ec50b0 license: fixed enterprise license not showing unlimited users 2018-06-14 23:12:25 +02:00
mlangkabel c65a5d04b1 logic: cleaned up code for SourceGroupSettings and Wizzard
* Flattened sourcegroupsettings class hierarchy by moving cross compilation options to own base class
* QtProjectWizzardContentFlags constructor required correct settings object to reduce the need for type casting
* QtProjectWizzardContentPath constructors required correct settings objects
* moved SourcePaths from SourceGroupSettingsJava to SourceGroupSettingsJavaEmpty because they are not required for Gradle and Maven projects
* removed classpath from maven and gradle source group settings
* reuse code of SourceGroup for "show source files" in wizard
2018-06-12 21:16:51 +02:00
Eberhard Graether dca4c3c16b ui: Fixed issues in source group type selection
* no visible scrollbar was shown
* better default size
* description links were not clickable
2018-06-12 14:52:58 +02:00
mlangkabel 32d0b01694 ui: added icon for CBP sourcegroups to project setup 2018-06-12 11:30:12 +02:00
mlangkabel 61975757f4 ui: fixed project settings did not update display correctly if source group gets removed 2018-06-11 20:57:12 +02:00
mlangkabel 963fbdc564 logic: fixed exclude filters partly not working for CDB SourceGroup
* fixed logic for fetching all source file paths of CDB Sourcegroup to respect exclude filters
* reused this logic in wizzard ui
2018-06-11 20:45:15 +02:00
mlangkabel b1317457ab logic: added support for sonargraph manual cpp modules 2018-06-11 18:54:55 +02:00
Eberhard Graether 1c9b4c1afd data: explicitly clear all errors when refreshing incomplete files 2018-06-11 15:55:23 +02:00
Eberhard Graether 1a37a9af34 src: miscellaneous fixes
* fixed code view snippet minimize click expanded snippet again
* fixed typedef nodes node grouped within file group
* fixed splitting anonymous namespace bundle increased group nesting instead
* fixed build, tests and clang warnings
2018-06-08 16:12:53 +02:00
mlangkabel dcf506e3d7 ui: fixed selected source group changed in project settings list even if not allowed because content has become invalid 2018-06-08 14:43:47 +02:00
mlangkabel 269c1eb88c ui: fixed status message text that appears when loading an empty project 2018-06-08 12:29:24 +02:00
mlangkabel 704808b26f logic: added C/C++ project setup from Code::Blocks
* also changed xml elements in sourcegroup settings that specify the used language standard, so that one sourcegroup can maintain multiple language standards
* added migration and migrated sample projects
2018-06-08 12:10:38 +02:00
Eberhard Graether ce0a8a6444 ui: Use flow layout in source group selection window 2018-06-05 16:24:13 +02:00
mlangkabel 2584a1f4e2 logic: sonargraph fixes
* removed duplicates from detected indexed headers
* fixed indexed header paths not used in cxx sonargraph project
2018-06-05 15:48:54 +02:00
Eberhard Graether 2a3420eedf logic: fixed enless loop in include path auto detection (issue #585) 2018-06-05 13:38:54 +02:00
mlangkabel 31920972eb logic: added "serialize" method for indexer commands 2018-06-05 11:45:03 +02:00
mlangkabel 3cc51e0d01 logic: sonargraph fixes
* updated sonargraph project icon
* fixed Sonargraph SourceGroup to only return indexer commands for requested files
* fixed refresh info generator to ignore non-existing files
2018-06-04 19:05:54 +02:00
mlangkabel 12bf007caf logic: fixed making paths relative for indexed header path detection 2018-06-01 15:11:01 +02:00
mlangkabel e43e604966 logic: fixed crash in include validation 2018-06-01 14:58:51 +02:00
Eberhard Graether 9a036cc249 ui: Fixed typo in update check (issue #586) 2018-05-24 20:17:32 +02:00
Eberhard Graether 382f17ffa2 license: Allow any license type to specify expiration by days 2018-05-23 06:26:01 +02:00
Eberhard Graether 59f32e9942 build: Fixed enum forward declarations and filepath checks in SonarGraphProjectTestSuite 2018-05-22 13:02:27 +02:00
mlangkabel 7b735cfd17 logic: added project setup support for Sonargraph projects (Java and CMake-JSON modules supported)
* added classes for loading a Sonargraph project
* added Sonargraph options to project setup wizard
* added test for generating indexer commands from Sonargraph modules
* fixed sqlite storage crashing in constructor when parent directory of provided path does not exist
* removed unused FileRegister from Java indexing
* removed unused info from IndexerCommandJava
* refactored loading and saving of SourceGroupSettings
* extracted sourcepaths settings to own class that can be re-used
* merged CDB wizard contentents for source file and indexed paths
* unified wizard content for sonargraph project path
* removed include filters from default source groups
* extracted generation of RefreshInfo from Project to RefreshInfoGenerator
* added tests for RefreshInfoGenerator
* added language and standard selection to sonargraph project setup
* added auto-detection for indexed header paths of sonargraph cmake json modules
* Sonargraph::Project can enable/disable support for specific modules
* warn if sonargraph project contains no matching modules
* indexed headers can be detected from sonargraph project
2018-05-18 16:07:57 +02:00
mlangkabel e55ae5ba31 ui: added check() for errors in compiler flags in C/C++ project settings 2018-05-11 12:10:06 +02:00
mlangkabel ea7f900e81 logic: C/C++ errors without location are now recorded for current main file
* such an error occurrs if a "-include" flag is provided with a non-existing file"
2018-05-11 11:22:39 +02:00
Eberhard Graether e47bd10096 build: Changelog for 2018.2.36 2018-05-09 07:28:36 -06:00
mlangkabel 331c3e8c26 logic: fixed c/c++ indexing errors are not recorded inside macro expansion (issue #580) 2018-05-08 23:28:55 +02:00
mlangkabel e1df15a7b9 ui: disable re-pre-filling of indexed header paths for compilation database sourcegroups (issue #579)
* disable re-pre-filling of indexed header paths if these are empty when showing settings of a cdb sourgroup
* fixed indexed header path were not regarded when deciding if project settings have been updated
2018-05-08 11:13:10 +02:00
Eberhard Graether 2d9b9a43de build: fixed script for CI 2018-05-04 16:49:05 +02:00
Eberhard Graether 568e2f3e36 ui: fixed crash when clicking on namespace label 2018-05-04 16:09:43 +02:00
mlangkabel bf2b56a69e ui: improved help dialog for compiler flags in project setup 2018-05-04 12:42:19 +02:00
mlangkabel f72f780862 logic: fixed handling case insensitive filepath matches when activating a symbol via editor plugin 2018-05-04 12:25:37 +02:00
Eberhard Graether 0ba6f9b7a0 src: minor improvements for release
* only reduce ideal thread count on windows
* show export compile commands flag in description
* not black in radio button
2018-05-03 22:14:01 +02:00
Eberhard Graether f5a4ad1db0 build: Fixed macOS gatekeeper refusing to open app bundle (issue #568) 2018-05-01 14:42:58 +02:00
Eberhard Graether 633521b35e ui: custom radio button style in indexing dialog 2018-04-29 23:38:21 +02:00
mlangkabel 9af5780c12 src: added language package classes and moved indexer instantiation there 2018-04-27 18:02:32 +02:00
mlangkabel a7ef02459a logic: fixed indexed header paths for compilation database project screw up the processing order of includes (issue #571)
* prevented indexed header paths for CDB to be appended to compile command
* fixed exists check for relative paths in QtSelectPathsDialog
* indexed header paths will automatically be updated when a new compilation database is picked
2018-04-27 17:51:03 +02:00
Eberhard Graether 872d24bf6a ui: Fixed single code view is scrollalbe below last line and scroll request show the wrong line 2018-04-27 13:22:40 +02:00
Eberhard Graether c249c6c794 ui: Allow tooltips to be as wide as the window (issue #570)
<description>
2018-04-26 00:08:11 +02:00
Eberhard Graether 67cec7dda7 ui: Improved graph layout
* wider gabs between buckets
* different column widths above and below horizontal edge split
* only use base/derived bundles for inheritance
2018-04-25 23:50:36 +02:00
Eberhard Graether a635592dc1 build: Changelog for release 2018.2 2018-04-25 20:53:10 +02:00
mlangkabel d29cabd0b3 logic: fixed missing matches in fulltext search 2018-04-24 19:18:26 +02:00
mlangkabel bac9f7fbc4 build: added missing include for linux builds 2018-04-24 18:13:11 +02:00
mlangkabel b6692b9842 src: fixed typedef for Id because bitshift syntax for generated node ids failed on 64 bit windows 2018-04-24 17:34:21 +02:00
mlangkabel ca3e2f48ee logic: removed C/C++ "unparsed" check from indexer
Cxx AstVisitor re-visits previously or simultaneously indexed files because the "visible" content may have changed due to other preprocessor defines etc.
2018-04-24 13:25:06 +02:00
Eberhard Graether c5d0362df5 ui: Fixed crash in FilePath::makeCanonical and QtPathListBox making all settings paths relative 2018-04-24 11:44:28 +02:00
mlangkabel b00bfb8964 build: updated icon references for windows installer 2018-04-23 12:54:13 +02:00
mlangkabel 5e0c0a6f18 ui: centered Sourcetrail logo in about dialog 2018-04-23 12:42:25 +02:00
mlangkabel f08f27717f logic: record and display include edges for non-indexed files
* non-indexed files are shown in graph view and in code view
* non-indexed files are ignored in search view, overview, stats and refresh dialog
2018-04-23 12:13:49 +02:00
Eberhard Graether 17ec0747f2 ui: Fixed weird border in screen search bar 2018-04-22 22:53:46 +02:00
Eberhard Graether 089ccb1d6c ui: updated about dialog 2018-04-21 06:04:05 +02:00
Eberhard Graether 83cd1b94b6 logic: Fixed license checker did not ignore commit number in expiration version 2018-04-21 04:54:59 +02:00
Eberhard Graether 91b4e80384 ui: adapt scroll target value in code single file mode as workaround when view scrolls below last line 2018-04-21 04:30:55 +02:00
Eberhard Graether fe38cfff6a logic: Fixed single file mode fulltext references and caching 2018-04-21 03:43:50 +02:00
Eberhard Graether e5280f99ca logic: Fixed loading of outversioned projects fails 2018-04-20 10:05:35 +02:00
Eberhard Graether e9877acf80 logic: Fixed updated files detection performance in project refresh 2018-04-20 10:00:37 +02:00
Eberhard Graether 5edaedfd37 ui: Improvements and fixes in graph layouting
* put nodes with bidirectional aggregations on the left
* layout aggregations either horizontal or vertical based on buckets
* exceed bucket height if only one element and vertical split
* fixed hiding nodes in sublayout showed empty spot
2018-04-19 18:54:34 +02:00
Eberhard Graether 1ee4f829a4 ui: switched edge offsets in graph 2018-04-19 15:33:21 +02:00
mlangkabel c340256425 data: updated EULA 2018-04-16 18:13:20 +02:00
Eberhard Graether 3a6dcfcd03 logic: Fixed race condition in TooltipController 2018-04-12 22:52:32 +02:00
Eberhard Graether a18aa0b9a6 ui: Fixed switching code view mode shows active reference 2018-04-12 20:22:27 +02:00
Eberhard Graether 0489cac94d ui: Fixed carriage return in line endings breaks screen search in code 2018-04-12 19:24:50 +02:00
Eberhard Graether 04e82969a9 ui: Fixed expanding snippet footer to whole file 2018-04-12 19:12:23 +02:00
Eberhard Graether 2695b16e9c ui: Fixed scrollbar below snippet always bright on mac 2018-04-12 19:02:06 +02:00
2303 changed files with 151043 additions and 444664 deletions
+82
View File
@@ -0,0 +1,82 @@
AccessModifierOffset: -4
AlignAfterOpenBracket: AlwaysBreak
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignConsecutiveMacros: false
AlignEscapedNewlines: Right
AlignOperands: false
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllConstructorInitializersOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Allman
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeComma
BreakInheritanceList: BeforeComma
BreakStringLiterals: true
ColumnLimit: 100
CompactNamespaces: true
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
FixNamespaceComments: true
IncludeBlocks: Preserve
IndentCaseLabels: false
IndentPPDirectives: AfterHash
IndentWidth: 4
IndentWrappedFunctionNames: true
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 2
NamespaceIndentation: None
PenaltyBreakAssignment: 50
PenaltyBreakBeforeFirstCallParameter: 0
PenaltyBreakComment: 100
PenaltyBreakFirstLessLess: 200
PenaltyBreakString: 100
PenaltyBreakTemplateDeclaration: 0
PenaltyExcessCharacter: 10
PenaltyReturnTypeOnItsOwnLine: 1000
PointerAlignment: Left
ReflowComments: true
SortIncludes: true
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: false
SpaceBeforeInheritanceColon: false
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 4
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: c++17
TabWidth: 4
UseTab: Always
---
Language: Cpp
---
Language: Java
#BasedOnStyle: Google
#BreakAfterJavaFieldAnnotations: true
+12
View File
@@ -0,0 +1,12 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: sourcetrail
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
+10 -4
View File
@@ -1,9 +1,12 @@
/build/
build-*
/distr/
/deps/
/bin/app/data/projects/ignored/
/bin/app/data/cxx
/bin/app/data/java/lib/
/bin/app/data/projects/ignored/
/bin/app/data/python/
/bin/app/user/log/
/bin/app/user/ApplicationSettings.xml
/bin/app/user/window_settings.ini
@@ -13,6 +16,8 @@
/bin/test/data/TestSettings.xml
/bin/test/data/CommandlineTestSuite/settings.xml
/bin/test/data/ConfigManagerTestSuite/temp.xml
/bin/test/data/UtilityMavenTestSuite/effective-pom.xml
/bin/test/data/SourceGroupTestSuite/java_maven/input/sourcetrail_dependencies
/java_indexer/target/
@@ -38,7 +43,6 @@
/ide_plugins/vs/vs2015/SourcetrailPlugin/TestResults
*.coatidb
*.srctrldb
*.srctrlbm
*.suo
@@ -48,13 +52,14 @@
*.swp
*.swo
*.VC.db
*.timing
.clang_complete
.ycm_extra_conf.py
.ycm_extra_conf.pyc
sourcetrail.srctrlprj
compile_commands.json
Sourcetrail.srctrlprj
Sourcetrail_dev.srctrlprj
Makefile
CMakeLists.txt.user*
@@ -64,5 +69,6 @@ CMakeLists.txt.user*
/deployment/windows/wixSetup/build
/deployment/windows/wixSetup/CustomActions/UninstallRemoveLogFolder/bin
/deployment/windows/wixSetup/CustomActions/UninstallRemoveLogFolder/obj
/deployment/windows/wixSetup/CustomActions/.vs
/deployment/windows/wixSetup/Setup/build/Setup/Release
/deployment/windows/wixSetup/Setup/build/Setup/x64
-134
View File
@@ -1,134 +0,0 @@
variables:
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
IMAGE_64: coatisoftware/centos6_64_qt_llvm:qt5101-llvm600
IMAGE_32: coatisoftware/centos6_32_qt_llvm:qt5101-llvm600
## Templates ##
.build_template: &build_def
stage: build
before_script:
# CCache Config/jobs
- mkdir -p ccache
- export CCACHE_BASEDIR=${PWD}
- export CCACHE_DIR=${PWD}/ccache
script:
- ./script/buildonly.sh all
- ./script/buildonly.sh package
- ./script/build.sh release test
artifacts:
name: "$CI_JOB_NAME"
paths:
- Sourcetrail*.tar.gz
expire_in: 3 days
.deploy_template: &deploy_def
image: alpine
stage: deploy
before_script:
- apk add --no-cache lftp git
script:
- VERS=$(git describe --long | sed 's/-/./' | sed 's/-.*//')
- TARGET_DIR=releases-$CI_ENVIRONMENT_NAME/$TYPE/$VERS
- echo $TARGET_DIR/$CI_ENVIRONMENT_NAME/$TYPE/
- lftp -u $FTP_USER,$FTP_PW -p $FTP_PORT $FTP_ADDR -e "mkdir $TARGET_DIR; mput -O $TARGET_DIR Sourcetrail*; bye"
only:
- master
- tags
- /^release.*$/
## Build Stage ##
build:Linux64:
image: $IMAGE_64
only:
- /^release.*$/
- master
- tags
cache:
key: cache_linux_64
paths:
- ccache/
- java_indexer/.m2/repository
<<: *build_def
build:Linux32:
image: $IMAGE_32
only:
- /^release.*$/
- master
- tags
cache:
key: cache_linux_32
paths:
- ccache/
- java_indexer/.m2/repository
when: manual
<<: *build_def
LicenseGenerator:
image: $IMAGE_64
stage: build
when: manual
script:
- ./script/setup.sh
- ./script/buildonly.sh release keygen
- mv build/Release/license_generator/Sourcetrail_license_generator .
artifacts:
name: "$CI_JOB_NAME"
paths:
- Sourcetrail_license_generator
expire_in: 3 days
## Deploy ##
deploy:Linux_staging_beta:
when: manual
environment:
name: staging
variables:
TYPE: beta
<<: *deploy_def
deploy:Linux_staging_full:
when: manual
environment:
name: staging
variables:
TYPE: full
<<: *deploy_def
deploy:Linux_production_beta:
when: manual
environment:
name: production
variables:
TYPE: beta
<<: *deploy_def
deploy:Linux_production_full:
when: manual
environment:
name: production
variables:
TYPE: full
<<: *deploy_def
deploy:Linux_tag_staging:
environment:
name: staging
variables:
TYPE: beta
<<: *deploy_def
only:
- tags
## could be interesting for daily/weekly/monthly builds
# https://docs.gitlab.com/ce/user/project/pipelines/schedules.html
#
#job:on-schedule:
#only:
# - schedules
#
+26
View File
@@ -0,0 +1,26 @@
language: bash
services: docker
install:
- chmod 777 deployment/dockerfiles/linux/travis_ci/entrypoint.sh
- docker build -t coatisoftware/local deployment/dockerfiles/linux/travis_ci
script:
- COMMIT_HASH=$(git rev-parse HEAD)
- docker run --name builder coatisoftware/local ${COMMIT_HASH}
- docker cp builder:/home/builder/Sourcetrail/release $TRAVIS_BUILD_DIR/release
deploy:
provider: releases
api_key:
secure: b+fTcE73+5nkYufBNzGdxnwbx4a2BQr7iy28wdcr+8NrCxgq4mhmuZd+R3JzE7mt3ehEfUbUkXPLwefEcTFkqxXN6WdBjJYTa2JxAHkBuYiSG9X7voNCOU3SWaucY77FTdt5MlWKVOEzoKNT+tbBuLlWKNyPnFLE0JArc9w4DfvCbHos9ikTtiT1suE+OiIgt28SjD6MD4mIDmEHcKkZs1SfNxz8zhkJBp7y0iJOFPaZHZ9wE2DMox5h26ks13NMYP9mkYgZDTMppabuR8KtjGTJB7NSY3Uoj+6AYdGr5hfpzMIzLjfstagfBzLWpnuz29XwUhYR02MTRiJS6h8wXoO5twxWEKIeUT7xEjSZzdirynrErMDThz90vli0gaoZyIhU01sS9lOUozkdQJEg9Wosxs/586bShHOqhvhrfeCv2Z/7u9ftnpm7U+GaFxk3j1ZPHnSt6XcLz2wDcYIjKgsc8dvmMxYTJYLkXENU5XTkKXKfMHfweiZPWBUBjjMpcZWEyw8NQ/IsegMhXlptLsxr5N5A54KipnJK36b52vryIUzzQd4uM/pcWn5j2Il/KagM5U/kRhQDCxAozQ1Ub0HWqM+4WdCxzAg1FEUly7Y68FIVeeD19P7TAPRBGeljmr3vEdJHnr2z20dubWyhOlZ7NfTcd1drWthpN9ZvvT4=
file_glob: true
file:
- "$TRAVIS_BUILD_DIR/release/Sourcetrail*.tar.gz"
- "$TRAVIS_BUILD_DIR/release/Sourcetrail*.AppImage"
overwrite: true
skip_cleanup: true
on:
tags: true
repo: CoatiSoftware/Sourcetrail
+11
View File
@@ -0,0 +1,11 @@
Authors
=======
Andreas Stallinger
Eberhard Gräther (@egraether) <egraether@coati.io>
Malte Langkabel (@mlangkabel) <mlangkabel@coati.io>
Manuel Dobusch
Viktoria Pfausler
Louis St-Amour (@LouisStAmour) <LouisStAmour@gmail.com>
Note: (@user) means a github user name.
+606 -148
View File
File diff suppressed because it is too large Load Diff
+504 -432
View File
File diff suppressed because it is too large Load Diff
+14
View File
@@ -0,0 +1,14 @@
# Contributing
If you like this project and want to get involved, there are lots of ways you can help:
* __Spread the word.__ The more people want this project to grow, the greater the motivation for the developers to get things done.
* __Fund the development.__ Further development and maintenance of this project is crowd funded via [Patreon](https://www.patreon.com/sourcetrail). If you would like Sourcetrail to grow and improve but cannot spare the time to contribute your self, please consider making a pledge.
* __Test Sourcetrail.__ Run it on your own source code. If you find any issues, just report it here. Best, include some detailed step-by-step instructions that illustrate how to reproduce the issue, so that we can use it as a basis to craft a test case for our continuous integration and no one will ever break that case again.
* __Write some code.__ Don't be shy here. You can implement whole new features or fix some bugs, but you can also do some refactoring if you think that it benefits the readability or the maintainability of the code. Still, no matter if you just want to work on cosmetics or implement new features, it would be best if you create an issue here on the issue tracker before you actually start handing in pull requests, so that we can discuss those changes first and thus raise the probability that those changes will get pulled quickly.
To create a pull request, follow these steps:
* Fork the Repo on GitHub.
* Make your commits.
* If you added functionality or fixed a bug, please add a test.
* Add your name to the AUTHORS.txt file.
* Push to your fork and submit a pull request.
+1684
View File
File diff suppressed because it is too large Load Diff
+674
View File
@@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://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 <https://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
<https://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
<https://www.gnu.org/licenses/why-not-lgpl.html>.
+200 -114
View File
@@ -1,164 +1,250 @@
## Sourcetrail
# Sourcetrail
### Setup
*__Important Note:__ This project was archived by the original autors and maintainers of Sourcetrail by the end of 2021. If you want to know more about this decision, read more on our [blog](https://web.archive.org/web/20211119200517/https://www.sourcetrail.com/blog/).*
#### External Software
Sourcetrail is a free and open-source cross-platform source explorer that helps you get productive on unfamiliar source code.
* JDK 1.8
* QT 5.10.1
* CxxTest 4.3
* Clang & LLVM 6.0 (doesnt quite work for windows, use unix setup below and skip all the ninja stuff)(installation guide http://clang.llvm.org/docs/LibASTMatchersTutorial.html)
* Boost 1.64
* Botan 2.1.0
* Image Magick 7.0.6
* ccache (Unix)
* Visual Leak Detector (Windows)
* Wix 3.11 (Windows)
* Winrar (Windows)
Windows: [![Build status](https://ci.appveyor.com/api/projects/status/0c258a2opn3loyc2/branch/master?svg=true)](https://ci.appveyor.com/project/mlangkabel/sourcetrail/branch/master)
#### Environment Variables
Linux: [![Build Status](https://travis-ci.org/CoatiSoftware/Sourcetrail.svg?branch=master)](https://travis-ci.org/CoatiSoftware/Sourcetrail)
* CXX_TEST_DIR - .../cxxtest-4.3
* CLANG_DIR - .../clang-llvm
* BOOST_DIR - .../boost_1_64_0
* BOTAN_DIR - .../Botan-2.1.0
__Links__
* [Download](https://github.com/CoatiSoftware/Sourcetrail/releases)
* [Quick Start Guide](DOCUMENTATION.md#getting-started)
* [Documentation](DOCUMENTATION.md)
* [Changelog](CHANGELOG.md)
For MacOS and Linux
* QT_DIR - .../Qt/Qt5.10.1/5.10.1/<IDE>
!["Sourcetrail User Interface"](docs/readme/user_interface.png "Sourcetrail User Interface")
For Windows:
* QT_WIN32_DIR - .../Qt/Qt5.10.1/5.10.1/msvc2015
* QT_WIN64_DIR - .../Qt/Qt5.10.1/5.10.1/msvc2015_64
* VLD_DIR - .../Visual Leak Detector
* JAVA_HOME - .../Java/jdk1.x.x_xxx
* path
- append path to git.exe
- append path to jdk/bin
- append path to VisualStudio/Common7/Tools
- append path to VisualStudio/Common7/IDE
- append path to .../Microsoft SDKs/Windows/v7.1A/Bin (for uuidgen in deploy script)
- append path to .../WiX Toolset v3.11/bin
- append path to .../WinRAR
Sourcetrail is:
* free
* working offline
* operating on Windows, macOS and Linux
* supporting C, C++, Java and Python
* offering an SDK ([SourcetrailDB](https://github.com/CoatiSoftware/SourcetrailDB)) to write custom language extensions
##### ccache
## Sourcetrail on Patreon
* install ccache
* if ccache is in path it will be used for recompilation
The open-source development and regular software releases are made possible entirely by the support of [these awesome patrons](SPONSORS.md)!
##### Clang setup
## Using Sourcetrail
For Windows:
Execute Cmake twice (once for each target compiler (32 and 64 bit)). Set the respective build path to ${CLANG_DIR}/build_win32 or ${CLANG_DIR}/build_win64
To setup Sourcetrail on your machine, you can either download the respective build for your operating system from our list of [Releases](https://github.com/CoatiSoftware/Sourcetrail/releases) and install it on your machine, or use one of the following package managers:
##### Boost setup
* Use the [Chocolatey package](https://chocolatey.org/packages/sourcetrail) with `choco install sourcetrail`
For Windows:
Build the Boost libs for 32 and 64 bit. Make sure that the platform specific libs are located in ${BOOST_DIR}/lib32-msvc-14 and ${BOOST_DIR}/lib64-msvc-14.
After your installation is complete, follow our [Quick Start Guide](DOCUMENTATION.md#getting-started) to get to know Sourcetrail.
For Mac:
$ ./bootstrap.sh --with-libraries=filesystem,program_options,system,date_time
$ ./b2 --link=static --variant=release --threading=multi --runtime-link=static --cxxflags=-fPIC
## How to Report Issues
##### Botan setup
You can post all your feature requests and bug reports on our [issue tracker](https://github.com/CoatiSoftware/Sourcetrail/issues).
For Windows
### Reporting
Extract the contents of your Botan package into "${BOTAN_DIR}/win32". Duplicate that folder and rename it "win64".
Use the following template:
Build 32 bit debug lib in ${BOTAN_DIR}/win32/debug
$ python configure.py --cc=msvc --cpu=x86_32 --disable-shared --no-optimizations --with-debug-info
* platform version:
* Sourcetrail version:
* description of the problem:
* steps to reproduce the problem:
Build 32 bit release lib in ${BOTAN_DIR}/win32/release
$ python configure.py --cc=msvc --cpu=x86_32 --disable-shared
### Supporting
To build the 64 bit lib start the VS command prompt with the "amd64" argument as described here:https://msdn.microsoft.com/en-us/library/x4d2c09s.aspx
If you want to support a certain feature request or you have the same bug that another user already reported, please let us know:
* post a comment with "+1" to the issue
* or send an email to support@sourcetrail.com with the issue ID
Build 64 bit debug lib in ${BOTAN_DIR}/win64/debug
$ python configure.py --cc=msvc --cpu=x86_64 --disable-shared --no-optimizations --with-debug-info
## How to Contribute
Build 64 bit release lib in ${BOTAN_DIR}/win64/release
$ python configure.py --cc=msvc --cpu=x86_64 --disable-shared
* Please read and follow the steps in [CONTRIBUTING.md](CONTRIBUTING.md) file.
* You may want to look out for issues labeled [good first issue](https://github.com/CoatiSoftware/Sourcetrail/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) to find some initial tasks to tackle.
* If you are looking for more information about Sourcetrail software development, please refer to our [wiki](https://github.com/CoatiSoftware/Sourcetrail/wiki).
# How to Build
Building Sourcetrail requires several dependencies to be in place on your machine. However, our CMake based setup allows to disable indexing support for specific languages which reduces the number of dependencies to a minimum.
## Building the Base Application
### Required Tools
* __CMake v3.12 (required for Windows, Linux and MacOS)__
* __Reason__: Used to generate a build configuration for your build system
* __Download__: https://cmake.org/download
* __Git (required for Windows, Linux and MacOS)__
* __Reason__: Used for version control and to automatically generate the Sourcetrail version number from commits and tags
* __Download__: https://git-scm.com/download
* __Remarks__: Make sure `git` is added to your `PATH` environment variable before running CMake
* __Visual Studio (required for Windows)__
* __Reason__: Used for building Sourcetrail
* __Download__: https://visualstudio.microsoft.com/downloads/
* __ccache (optional for Linux and MacOS)__
* __Reason__: Used to speed up rebuilds if found in `PATH`
* __Download__: https://ccache.dev/download.html
### Required dependencies
* __Boost 1.67__
* __Reason__: Used for file system access and interprocess communication
* __Prebuilt Download for Windows__: https://sourceforge.net/projects/boost/files/boost-binaries/
* __Building for Unix__:
```
$ ./bootstrap.sh --with-libraries=filesystem,program_options,system,date_time
$ ./b2 --link=static --variant=release --threading=multi --runtime-link=static --cxxflags=-fPIC
```
* __Qt 5.12.3__
* __Reason__: Used for rendering the GUI and for starting additional (indexer) processes.
* __Prebuilt Download__: http://download.qt.io/official_releases/qt/
### Building
#### On Windows
* To set up your build environment run:
```
$ git clone https://github.com/CoatiSoftware/Sourcetrail.git
$ cd Sourcetrail
$ mkdir -p build/win64
$ cd build/win64
$ cmake -G "Visual Studio 15 2017 Win64" -DBOOST_ROOT=<path/to/boost_1_67_0> -DQt5_DIR=<path/to/Qt/version/platform/compiler/lib/cmake/Qt5> ../..
```
_Hint: If you are using the CMake GUI, we recommend that you activate advanced mode. Also you may be required to add some of the defines via the "Add Entry" button._
* After generating the build configuration, just open the Sourcetrail.sln file that was generated by CMake and build the Sourcetrail project.
#### On Unix
* To set up your build environment run:
```
$ cd Sourcetrail
$ mkdir -p build/Release
$ cd build/Release
$ cmake -DCMAKE_BUILD_TYPE="Release" -DBOOST_ROOT=<path/to/boost_1_67_0> -DQt5_DIR=<path/to/Qt/version/platform/compiler/lib/cmake/Qt5> ../..
```
* Now start the build with:
```
$ make Sourcetrail
```
### Running
* Run Sourcetrail from within the build directory. During execution Sourcetrail needs resources from `bin/app/data` and `bin/app/user`. CMake creates symlinks within the build directory that make these directories accessible.
For MacOS and Linux
## Enable C/C++ Language Support
Build release lib in ${BOTAN_DIR}/release
Build debug lib in ${BOTAN_DIR}/debug
### Required dependencies
for Mac:
$ mkdir debug/release
$ cd debug/release
$ python ../configure.py --disable-shared --disable-modules=darwin_secrandom (--with-debug-info)
$ make -j 4
* __LLVM/Clang 11.0.0__
* __Reason__: Used for running the preprocessor on the indexed source code, building and traversing an Abstract Syntax Tree and generating error messages.
* __Building__: Make sure to check out the correct tag: `git checkout llvmorg-11.0.0`
* __Building for Windows__: Follow [these steps](https://clang.llvm.org/get_started.html) to build the project. Run the cmake command exactly as described.
* __Building for Unix__: Follow this [installation guide](http://clang.llvm.org/docs/LibASTMatchersTutorial.html) to build the project. Make sure to build with `-DLLVM_ENABLE_RTTI=ON`.
for Linux:
$ python configure.py --disable-shared
### Building
#### Settings
* Run CMake with these additional options:
```
-DClang_DIR=<path/to/llvm_build>/lib/cmake/clang
-DBUILD_CXX_LANGUAGE_PACKAGE=ON
```
* Build Sourcetrail as described [above](#building).
Run setup script:
$ ./script/setup.sh
## Enable Java Language Support
### Release
### Required dependencies
#### App
* create release build
* make sure it uses the Sourcetrail icon
* obfuscate the executable using upx
* __JDK 1.8__
* __Reason__: Used to build the Java indexer and make it callable from the C++ code via JNI.
* __Remarks__: Make sure that `<jdk_root>/bin` is available in your `PATH` environment variable and that the `JAVA_HOME` environment variable is set:
```
JAVA_HOME=<path/to/Java>/jdk1.x.x_xxx
```
#### Data folder
* put data folder in working directory
* add empty log folder
* add working tictactoe.xml project to /projects/tictactoe with sources in /projects/tictactoe/src
* add empty app settings with one recent project tictactoe.xml
* leave window_settings.ini with correct Sourcetrail start layout
* __Maven__
* __REASON__: Used within Sourcetrail's automated tests.
* __Remarks__: Make sure `.../apache-maven-x.x.x/bin` is available in your `PATH` environment variable and that both `M2_HOME` and `MAVEN_HOME` environment variables are set:
```
M2_HOME=.../apache-maven-x.x.x
MAVEN_HOME=.../apache-maven-x.x.x
```
#### Package
* add app
### Building
#### Updating Clang on UNIX
* Run CMake with these additional options:
```
-DBUILD_JAVA_LANGUAGE_PACKAGE=ON
```
* Build Sourcetrail as described [above](#building).
$ cd .../clang_llvm
## Enable Python Language Support
$ cd llvm
$ git pull origin master
### Required Tools
$ cd tools/clang
$ git pull origin master
* __7z (required for Windows)__
* __REASON__: Used to extract the prebuilt SourcetrailPythonIndexer which is downloaded automatically during build execution.
$ cd tools/extra/
$ git pull origin master
### Building
$ cd ../../../../../build_debug
$ cmake -G Ninja -DLLVM_ENABLE_RTTI=ON ../llvm
$ ninja -j4 check-all
* Run CMake with these additional options:
```
-DBUILD_PYTHON_LANGUAGE_PACKAGE=ON
```
* Build Sourcetrail as described [above](#building).
$ cd ../build_release
$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RTTI=ON ../llvm
$ ninja -j4 check-all
#### Remarks
## Creating the deployment Package
* Boost lib dir: rename library directory for your system (e.g.: 'lib32-msvc-12.0') to 'lib'
### Windows
### Tagging
#### Required Tools
$ git tag -a VERSION_NUMBER -m "DESCRIPTION"
$ git push --tags
* __Visual Studio (required for Windows)__
* __Reason__: Used for building the Sourcetrail Windows installer.
* __Remarks__: Make sure to install the `.Net desktop development` workload.
* __Download__: https://visualstudio.microsoft.com/downloads/
### Loader gif creation from png sequence
* __Wix 3.11__
* __Reason__: Used to build the `sourcetrail.msi` Windows installer.
* __Remarks__: Make sure to add `<path/to>/WiX Toolset v3.11/bin` to your `PATH` environment variable.
* __Download__: https://wixtoolset.org/releases/
// from png sequence
convert -delay 3 -loop 0 souretrail_*.png souretrail.gif
* __Wix extension for Visual Studio__
* __Reason__: Used to run Wix from the Visual Studio build environment.
* __Download__: https://marketplace.visualstudio.com/items?itemName=WixToolset.WixToolsetVisualStudio2017Extension
// less colors
gifsicle --colors 255 souretrail.gif > color.gif
* __JRE__
* __Reason__: Used for indexing the java sample project that ships with the package.
// crop size
gifsicle --crop 0,5+0x-5 color.gif > crop.gif
* __WinRAR__
* __Reason__: Used for creating the final zip files for the installer and the portable package.
* __Remarks__: Make sure to add `<path/to>/WinRAR` to your `PATH` environment variable.
// add transparency
gifsicle --unoptimize --disposal=previous --transparent="#FFFFFF" crop.gif > trans.gif
#### Building
// resize
gifsicle --resize-height 18 trans.gif > loader.gif
* Run `./script/deploy_windows.sh` from your Developer Command Prompt for Visual Studio. The script which will generate a 64bit build and packages it into a portable `.zip` file and a Wix-based Windows installer, each.
### macOS
After building, run the `bundle_install.sh` script within the build directory which will create a `Sourcetrail.app` bundle and generate a `Sourcetrail_<version>.dmg` container.
### Linux
Run `./setup/Linux/createPackages.sh` from the main directory, which creates both a `.tar.gz` and a `.AppImage` package in the main directory. Packaging depends on [linuxdeployqt](https://github.com/probonopd/linuxdeployqt).
# How to Run the Tests
The automated test suite of Sourcetrail is powered by [Catch2](https://github.com/catchorg/Catch2). To run the tests, simply execute the `Sourcetrail_test` binary. Before executing, please make sure to set the working directory to `./bin/test`.
# License
Sourcetrail is licensed under the [GNU General Public License Version 3](LICENSE.txt).
# Trademark
The "Sourcetrail" name is a trademark owned by Coati Software and is not included within the assets licensed under the GNU GPLv3.
+87
View File
@@ -0,0 +1,87 @@
# Sponsors
Sponsors [via Patreon](https://www.patreon.com/sourcetrail).
## Legendary Coatis
* Akinobu Fujii
* Chris Anderson
* David Manouchehri
* Manik Singhal
* Mario van Beek
* Tai-Wu Chiang
* Timothee Besset
## Super Coatis
* Alexis Jeandet
* Anshu Mathur
* Anthony Marchini
* Chris Morley
* dsp
* Edward Gibbs
* Georg Friedrich
* Jean-Luc Burhop
* Jonathan Nemo
* Kikuchi Takanori
* Konstantin Kirenko
* Louis St-Amour
* Mario Lioni
* Simon Pintarelli
* William Wold
* XTRON777
## Regular Coatis
* Alex B
* Andreas
* anonymous
* Anton
* Bicakci, Inc.
* BJ
* Christian Hipp
* Daniel Nissenbaum
* Dio Lee
* Ferenc Fejes
* Frederic Simonis
* Friedrich Hunstock
* Graydon Hoare
* IndustrialRobot
* Jason Stevens
* Jeffrey Hofer
* John Borland
* kagusanto
* kale
* MangerDesPates
* Matěj Týč
* Matt Alexander
* Max Bruckner
* Michael F. Schönitzer
* Nakul Dhotre
* Nathan
* Nathan Loofbourrow
* Neil Horlock
* Nick Moore
* Nils Moehrle
* Ouaf
* Pierre Fransson
* Rémi Cohen-Scali
* Robokitty
* Rui Pires
* Ryo Koyama
* Saket Sinha
* Sam Tuke
* Simon
* Sneakyferret
* Sophie Winter
* Stephan Roslen
* Thorsten Dahlheimer
* Tomi Joki-Korpela
* Tony Hong
* Traxes
* Werner de Groot
* X. Xu
* Yacob Cohen-Arazi
* Yang, Wenbo
* 勇男 金子
* 郝晨煜
+38
View File
@@ -0,0 +1,38 @@
version: 0.0.0.{build}
image: Visual Studio 2017
install:
############################################################################
# Install Ninja
############################################################################
- set NINJA_URL="https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-win.zip"
- appveyor DownloadFile %NINJA_URL% -FileName ninja.zip
- 7z x ninja.zip -oC:\projects\deps\ninja > nul
- set PATH=C:\projects\deps\ninja;%PATH%
- ninja --version
before_build:
- mkdir build
- cd build
- mkdir temp
- cd ../
- cd build
- mkdir win64
- cd win64
- call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
- cmake -G "Ninja" -DBOOST_ROOT=C:/Libraries/boost_1_69_0 -DQt5_DIR=C:/Qt/5.12.6/msvc2017_64/lib/cmake/Qt5 -DBUILD_JAVA_LANGUAGE_PACKAGE=ON -DBUILD_PYTHON_LANGUAGE_PACKAGE=ON -DCMAKE_BUILD_TYPE=Release ../../
- cd ../../
build_script:
- cd build/win64
- ninja
- cd ../../
test_script:
- cd bin/app
- ..\..\build\win64\Release\app\Sourcetrail.exe config -j "C:/Program Files/Java/jdk1.8.0/jre/bin/server/jvm.dll"
- cd ../../
- ps: copy bin/app/user/ApplicationSettings.xml bin/test/data/TestSettings.xml
- cd bin/test
- ..\..\build\win64\Release\test\Sourcetrail_test.exe
- cd ../../
@@ -1,47 +0,0 @@
Copyright (C) 1999-2013,2014,2015 Jack Lloyd
2001 Peter J Jones
2004-2007 Justin Karneges
2004 Vaclav Ovsik
2005 Matthew Gregan
2005-2006 Matt Johnston
2006 Luca Piccarreta
2007 Yves Jerschow
2007-2008 FlexSecure GmbH
2007-2008 Technische Universitat Darmstadt
2007-2008,2010,2014 Falko Strenzke
2007-2008 Martin Doering
2007 Manuel Hartl
2007 Christoph Ludwig
2007 Patrick Sona
2008 Copyright Projet SECRET, INRIA, Rocquencourt
2008 Bhaskar Biswas and Nicolas Sendrier
2008 Google Inc.
2010 Olivier de Gaalon
2012 Vojtech Kral
2012-2014 Markus Wanner
2013 Joel Low
2014 cryptosource GmbH
2014 Andrew Moon
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions, and the following disclaimer.
2. 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 HOLDER 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.
@@ -1,174 +0,0 @@
GNU LESSER GENERAL PUBLIC LICENSE
The Qt Toolkit is Copyright (C) 2015 The Qt Company Ltd.
Contact: http://www.qt.io/licensing/
You may use, distribute and copy the Qt Toolkit under the terms of
GNU Lesser General Public License version 3, which is displayed below.
This license makes reference to the version 3 of the GNU General
Public License, which you can find in the LICENSE.GPLv3 file.
-------------------------------------------------------------------------
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright © 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this
licensedocument, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the
GNU General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort
to ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this
license document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that, taken
together, effectively do not restrict modification of the portions of
the Library contained in the Combined Work and reverse engineering for
debugging such modifications, if you also do each of the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this
license document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of
this License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with
the Library. A suitable mechanism is one that (a) uses at run
time a copy of the Library already present on the user's
computer system, and (b) will operate properly with a modified
version of the Library that is interface-compatible with the
Linked Version.
e) Provide Installation Information, but only if you would
otherwise be required to provide such information under section 6
of the GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the Application
with a modified version of the Linked Version. (If you use option
4d0, the Installation Information must accompany the Minimal
Corresponding Source and Corresponding Application Code. If you
use option 4d1, you must provide the Installation Information in
the manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the Library
side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities, conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of
it is a work based on the Library, and explaining where to find
the accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser 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 Library
as you received it specifies that a certain numbered version of the
GNU Lesser General Public License "or any later version" applies to
it, you have the option of following the terms and conditions either
of that published version or of any later version published by the
Free Software Foundation. If the Library as you received it does not
specify a version number of the GNU Lesser General Public License,
you may choose any version of the GNU Lesser General Public License
ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the Library.
+1 -1
View File
@@ -21,7 +21,7 @@
</source_paths>
<exclude_paths>
<exclude_path><!-- STRING: path to file or directory to exclude from analysis --></source_path>
<exclude_path><!-- STRING: path to file or directory to exclude from analysis --></exclude_path>
</exclude_paths>
<source_extensions>
+4 -4
View File
@@ -171,7 +171,7 @@
</hatching>
</default>
<!-- OPTIONAL: type specific node colors can be overriden by using the TEMPLATE within a type tag below -->
<!-- OPTIONAL: type specific node colors can be overridden by using the TEMPLATE within a type tag below -->
<type></type>
<builtin_type></builtin_type>
<class></class>
@@ -179,7 +179,7 @@
<struct></struct>
<enum></enum>
<typedef></typedef>
<template_parameter_type></template_parameter_type>
<template_parameter></template_parameter>
<type_parameter></type_parameter>
<function></function>
@@ -211,7 +211,7 @@
<focus></focus> <!-- If not defined, the normal tag is used -->
</default>
<!-- OPTIONAL: type specific edge colors can be overriden by using the TEMPLATE within a type tag below -->
<!-- OPTIONAL: type specific edge colors can be overridden by using the TEMPLATE within a type tag below -->
<type_of></type_of>
<return_type></return_type>
<parameter_type></parameter_type>
@@ -234,7 +234,7 @@
<include></include>
<macro_use></macro_use>
<aggregation></aggregation>
<bundled_edges></bundled_edges>
</edge>
</graph>
+78 -63
View File
@@ -2,7 +2,9 @@
<config>
<window>
<background>#494949</background>
<separator>#CCCCCC</separator>
<focus>#9BF51D</focus>
<scrollbar>
<background>transparent</background>
<handle>#80999999</handle>
@@ -100,17 +102,17 @@
<navigation>
<background>#494949</background>
<text>#CCCCCC</text>
<line>#CCCCCC</line>
<line>#FFF</line>
</navigation>
<file>
<background>#CCCCCC</background>
<background>#AAAAAA</background>
<title>
<text>black</text>
<normal>#CCCCCC</normal>
<hover>#BBBBBB</hover>
<press>#AAAAAA</press>
<hover>#CCCCCC</hover>
<press>#CCCCCC</press>
<icon>black</icon>
<border>#B1B1B1</border>
<hatching>grey</hatching>
@@ -128,7 +130,6 @@
<title>
<text>#A0A0A0</text>
<background>transparent</background>
<hover>#2F2F2F</hover>
</title>
<line_number>
@@ -142,7 +143,7 @@
</line_number>
<syntax>
<normal>#D4D4D4</normal>
<text>#D4D4D4</text>
<directive>#00A0B6</directive>
<keyword>#00BCD6</keyword>
<type>#FF5961</type>
@@ -184,7 +185,7 @@
<text>#262626</text>
</focus>
<active>
<border>transparent</border>
<border>white</border>
<fill>#A5DEFF</fill>
<text>#262626</text>
</active>
@@ -253,7 +254,7 @@
<type>
<border>
<normal>#20FFFFFF</normal>
<focus>#FFFFFF</focus>
<highlight>#FFFFFF</highlight>
</border>
<text>
<normal>#FFFFFF</normal>
@@ -283,9 +284,6 @@
<typedef>
<like>type</like>
</typedef>
<template_parameter_type>
<like>type</like>
</template_parameter_type>
<type_parameter>
<like>type</like>
</type_parameter>
@@ -293,11 +291,11 @@
<function>
<fill>
<normal>#FFCC3B</normal>
<focus>#FFD05A</focus>
<highlight>#FFD05A</highlight>
</fill>
<border>
<normal>transparent</normal>
<focus>#FFFFFF</focus>
<highlight>#FFFFFF</highlight>
</border>
<hatching>
<normal>#FFE8A6</normal>
@@ -310,11 +308,11 @@
<global_variable>
<fill>
<normal>#2FC2D6</normal>
<focus>#38D3E8</focus>
<highlight>#38D3E8</highlight>
</fill>
<border>
<normal>transparent</normal>
<focus>#FFFFFF</focus>
<highlight>#FFFFFF</highlight>
</border>
<hatching>
<normal>#96DAE3</normal>
@@ -336,7 +334,7 @@
</fill>
<border>
<normal>#80FFFFFF</normal>
<focus>#FFFFFF</focus>
<highlight>#FFFFFF</highlight>
</border>
<text>
<normal>#FFFFFF</normal>
@@ -348,6 +346,9 @@
<normal>#B05151</normal>
</hatching>
</namespace>
<module>
<like>namespace</like>
</module>
<package>
<like>namespace</like>
</package>
@@ -355,11 +356,11 @@
<file>
<fill>
<normal>#4E82F6</normal>
<focus>#6793F6</focus>
<highlight>#6793F6</highlight>
</fill>
<border>
<normal>#20FFFFFF</normal>
<focus>#FFFFFF</focus>
<highlight>#FFFFFF</highlight>
</border>
<text>
<normal>#FFFFFF</normal>
@@ -374,11 +375,20 @@
<macro>
<like>file</like>
</macro>
<annotation>
<like>file</like>
</annotation>
<access>
<fill>
<normal>#CCCCCC</normal>
<normal>#494949</normal>
</fill>
<text>
<normal>#FFFFFF</normal>
</text>
<icon>
<normal>#FFFFFF</normal>
</icon>
</access>
<bundle>
<fill>
@@ -386,7 +396,7 @@
</fill>
<border>
<normal>#80FFFFFF</normal>
<focus>#FFFFFF</focus>
<highlight>#FFFFFF</highlight>
</border>
<text>
<normal>#FFFFFF</normal>
@@ -446,7 +456,7 @@
</text>
<border>
<normal>#4E82F6</normal>
<focus>#6793F6</focus>
<highlight>#6793F6</highlight>
</border>
</file>
<namespace>
@@ -458,7 +468,7 @@
</text>
<border>
<normal>#873E3E</normal>
<focus>#944444</focus>
<highlight>#944444</highlight>
</border>
</namespace>
<inheritance>
@@ -472,50 +482,24 @@
</group>
</node>
<edge>
<default>
<normal>#797979</normal>
</default>
<default>#797979</default>
<type_use>#797979</type_use>
<inheritance>#797979</inheritance>
<override>
<normal>#BA5ECC</normal>
</override>
<use>#00A0B6</use>
<call>#DEA400</call>
<call_trail_focus>#FFFFFF</call_trail_focus>
<override>#BA5ECC</override>
<call>
<normal>#DEA400</normal>
<trail_focus>#FFFFFF</trail_focus>
</call>
<type_argument>#D93D5F</type_argument>
<template_specialization>#D93D5F</template_specialization>
<use>
<normal>#00A0B6</normal>
</use>
<include>#4E82F6</include>
<import>#4E82F6</import>
<macro_use>#4E82F6</macro_use>
<annotation_use>#4E82F6</annotation_use>
<template_argument>
<normal>#D93D5F</normal>
</template_argument>
<type_argument>
<like>template_argument</like>
</type_argument>
<template_default_argument>
<like>template_argument</like>
</template_default_argument>
<template_specialization>
<like>template_argument</like>
</template_specialization>
<template_member_specialization>
<like>template_argument</like>
</template_member_specialization>
<include>
<normal>#4E82F6</normal>
</include>
<macro_use>
<normal>#4E82F6</normal>
</macro_use>
<aggregation>
<normal>#5D5D5D</normal>
<focus>#6D6D6D</focus>
</aggregation>
<bundled_edges>#666666</bundled_edges>
</edge>
</graph>
@@ -525,12 +509,21 @@
<background>#808080</background>
<border>#BEBEBE</border>
<button>
<text>white</text>
<text>
<normal>#CCC</normal>
<hover>#CCC</hover>
<press>white</press>
</text>
<border>
<normal>#CCC</normal>
<press>#EEE</press>
</border>
<background>
<normal>#808080</normal>
<hover>#505050</hover>
<press>#494949</press>
</background>
<icon>#CCC</icon>
</button>
</bar>
</tab>
@@ -541,6 +534,7 @@
<text>
<normal>#D4D4D4</normal>
<active>black</active>
<disabled>#AAA</disabled>
</text>
<table_line_1>
<normal>#494949</normal>
@@ -570,4 +564,25 @@
<icon_disabled>#666666</icon_disabled>
</button>
</screen_search>
<custom_trail>
<background>#494949</background>
<alt_background>#808080</alt_background>
<separator>#CCCCCC</separator>
<text>#FFFFFF</text>
<text_disabled>darkgrey</text_disabled>
<background_disabled>#696969</background_disabled>
<button>
<default>
<text>#FFFFFF</text>
<background>#494949</background>
<border>#FFFFFF</border>
</default>
<hover>
<text>#494949</text>
<background>#FFFFFF</background>
<border>#FFFFFF</border>
</hover>
</button>
</custom_trail>
</config>
+90 -74
View File
@@ -2,7 +2,9 @@
<config>
<window>
<background>white</background>
<separator>#A2A2A2</separator>
<focus>#FF5900</focus>
<scrollbar>
<background>transparent</background>
<handle>#80999999</handle>
@@ -27,27 +29,27 @@
<background>white</background>
<button>
<normal>#D0D0D0</normal>
<hover>#A2A2A2</hover>
<press>#727272</press>
<disabled>#F2F2F2</disabled>
<normal>#B0B0B0</normal>
<hover>#828282</hover>
<press>#626262</press>
<disabled>#E2E2E2</disabled>
<icon>white</icon>
<icon_disabled>#CECECE</icon_disabled>
<icon_disabled>#9E9E9E</icon_disabled>
</button>
<field>
<text>black</text>
<background>#D0D0D0</background>
<border>#D0D0D0</border>
<highlight>#A2A2A2</highlight>
<background>white</background>
<border>#B0B0B0</border>
<highlight>#929292</highlight>
</field>
<popup>
<text>black</text>
<by_text>#525252</by_text>
<background>white</background>
<highlight>#D0D0D0</highlight>
<line>#D0D0D0</line>
<highlight>#C0C0C0</highlight>
<line>#C0C0C0</line>
</popup>
<query>
@@ -67,7 +69,7 @@
<text>black</text>
</normal>
<hover>
<fill>#5EA071</fill>
<fill>#6DB080</fill>
<text>black</text>
</hover>
</command>
@@ -104,13 +106,13 @@
</navigation>
<file>
<background>#D0D0D0</background>
<background>#D8D8D8</background>
<title>
<text>black</text>
<normal>#D0D0D0</normal>
<hover>#B2B2B2</hover>
<press>#A2A2A2</press>
<hover>#C0C0C0</hover>
<press>#B5B5B5</press>
<icon>black</icon>
<border>white</border>
<hatching>bright</hatching>
@@ -126,27 +128,26 @@
<background>white</background>
<title>
<text>#A0A0A0</text>
<text>#909090</text>
<background>transparent</background>
<hover>#F5F5F5</hover>
</title>
<line_number>
<text>black</text>
<inactive_text>#A0A0A0</inactive_text>
<inactive_text>#909090</inactive_text>
<background>white</background>
<marker>
<active>#D0D0D0</active>
<active>#C0C0C0</active>
<focus>#727272</focus>
</marker>
</line_number>
<syntax>
<normal>black</normal>
<text>black</text>
<directive>#1B8856</directive>
<keyword>#1B8856</keyword>
<type>#C1492D</type>
<comment>#6B9AB2</comment>
<comment>#3D84A8</comment>
<number>#C1315E</number>
<quotation>#865F9E</quotation>
<function>#B0812C</function>
@@ -183,7 +184,7 @@
<fill>#C6EAFF</fill>
</focus>
<active>
<border>transparent</border>
<border>#136391</border>
<fill>#C6EAFF</fill>
</active>
</local_symbol>
@@ -232,7 +233,7 @@
<node>
<default>
<fill>
<normal>#E6E6E6</normal>
<normal>#D6D6D6</normal>
</fill>
<border>
<normal>#3C3C3C</normal>
@@ -244,14 +245,14 @@
<normal>black</normal>
</icon>
<hatching>
<normal>#F5F5F5</normal>
<normal>#F0F0F0</normal>
</hatching>
</default>
<type>
<border>
<normal>#203C3C3C</normal>
<focus>#3C3C3C</focus>
<highlight>#3C3C3C</highlight>
</border>
</type>
<built_in_type>
@@ -275,9 +276,6 @@
<typedef>
<like>type</like>
</typedef>
<template_parameter_type>
<like>type</like>
</template_parameter_type>
<type_parameter>
<like>type</like>
</type_parameter>
@@ -285,11 +283,11 @@
<function>
<fill>
<normal>#F4D07D</normal>
<focus>#F4BC3D</focus>
<highlight>#F4BC3D</highlight>
</fill>
<border>
<normal>transparent</normal>
<focus>#3C3C3C</focus>
<highlight>#3C3C3C</highlight>
</border>
<hatching>
<normal>#FFEDC4</normal>
@@ -301,15 +299,15 @@
<global_variable>
<fill>
<normal>#7BB5D4</normal>
<focus>#42A1D4</focus>
<normal>#81C1E3</normal>
<highlight>#72B3D6</highlight>
</fill>
<border>
<normal>transparent</normal>
<focus>#3C3C3C</focus>
<highlight>#3C3C3C</highlight>
</border>
<hatching>
<normal>#B3D4E5</normal>
<normal>#BBDDED</normal>
</hatching>
</global_variable>
<field>
@@ -328,7 +326,7 @@
</fill>
<border>
<normal>#3D3D3D</normal>
<focus>black</focus>
<highlight>black</highlight>
</border>
<icon>
<normal>#3D3D3D</normal>
@@ -337,6 +335,9 @@
<normal>#FFDEDE</normal>
</hatching>
</namespace>
<module>
<like>namespace</like>
</module>
<package>
<like>namespace</like>
</package>
@@ -344,11 +345,11 @@
<file>
<fill>
<normal>#BEE0AF</normal>
<focus>#A6D492</focus>
<highlight>#A6D492</highlight>
</fill>
<border>
<normal>#203C3C3C</normal>
<focus>#3C3C3C</focus>
<highlight>#3C3C3C</highlight>
</border>
<hatching>
<normal>#D7F7C8</normal>
@@ -357,6 +358,9 @@
<macro>
<like>file</like>
</macro>
<annotation>
<like>file</like>
</annotation>
<access>
<fill>
@@ -369,7 +373,7 @@
</fill>
<border>
<normal>#803C3C3C</normal>
<focus>#3C3C3C</focus>
<highlight>#3C3C3C</highlight>
</border>
</bundle>
<count_number>
@@ -420,7 +424,7 @@
</text>
<border>
<normal>#BEE0AF</normal>
<focus>#A6D492</focus>
<highlight>#A6D492</highlight>
</border>
</file>
<namespace>
@@ -432,7 +436,7 @@
</text>
<border>
<normal>#EFC5C5</normal>
<focus>#EFB3B3</focus>
<highlight>#EFB3B3</highlight>
</border>
</namespace>
<inheritance>
@@ -446,43 +450,24 @@
</group>
</node>
<edge>
<default>
<normal>#878787</normal>
</default>
<default>#878787</default>
<type_use>#878787</type_use>
<inheritance>#878787</inheritance>
<override>
<normal>#A37ACC</normal>
</override>
<use>#4B9FC4</use>
<call>#F4BC3D</call>
<call_trail_focus>#F56B3D</call_trail_focus>
<override>#A37ACC</override>
<call>
<normal>#F4BC3D</normal>
<trail_focus>#878787</trail_focus>
</call>
<type_argument>#CF6B7C</type_argument>
<template_specialization>#CF6B7C</template_specialization>
<use>
<normal>#3190BA</normal>
</use>
<include>#719660</include>
<import>#719660</import>
<macro_use>#719660</macro_use>
<annotation_use>#719660</annotation_use>
<template_argument>
<normal>#CF6B7C</normal>
</template_argument>
<type_argument>
<like>template_argument</like>
</type_argument>
<template_default_argument>
<like>template_argument</like>
</template_default_argument>
<template_specialization>
<like>template_argument</like>
</template_specialization>
<template_member_specialization>
<like>template_argument</like>
</template_member_specialization>
<aggregation>
<normal>#DDD</normal>
<focus>#CCC</focus>
</aggregation>
<bundled_edges>#CCC</bundled_edges>
</edge>
</graph>
@@ -490,14 +475,23 @@
<background>white</background>
<bar>
<background>#E0E0E0</background>
<border>#BEBEBE</border>
<border>#A2A2A2</border>
<button>
<text>black</text>
<text>
<normal>#555</normal>
<hover>#555</hover>
<press>black</press>
</text>
<border>
<normal>#888</normal>
<press>#777</press>
</border>
<background>
<normal>#E0E0E0</normal>
<hover>#F0F0F0</hover>
<press>#FFFFFF</press>
</background>
<icon>#555</icon>
</button>
</bar>
</tab>
@@ -508,6 +502,7 @@
<text>
<normal>black</normal>
<active>white</active>
<disabled>#777</disabled>
</text>
<table_line_1>
<normal>white</normal>
@@ -537,4 +532,25 @@
<icon_disabled>#CECECE</icon_disabled>
</button>
</screen_search>
<custom_trail>
<background>white</background>
<alt_background>#F5F5F5</alt_background>
<separator>#C0C0C0</separator>
<text>black</text>
<text_disabled>#A0A0A0</text_disabled>
<background_disabled>#F2F2F2</background_disabled>
<button>
<default>
<text>black</text>
<background>white</background>
<border>lightgray</border>
</default>
<hover>
<text>white</text>
<background>#2D3C86</background>
<border>lightgray</border>
</hover>
</button>
</custom_trail>
</config>
+68 -59
View File
@@ -2,7 +2,9 @@
<config>
<window>
<background>#272728</background>
<separator>#CCC</separator>
<focus>#FFFF4D</focus>
<scrollbar>
<background>transparent</background>
<handle>#80999999</handle>
@@ -100,7 +102,7 @@
<navigation>
<background>#272728</background>
<text>#C5C5C5</text>
<line>#CCC</line>
<line>#999</line>
</navigation>
<file>
@@ -128,7 +130,6 @@
<title>
<text>#A0A0A0</text>
<background>transparent</background>
<hover>#2F2F2F</hover>
</title>
<line_number>
@@ -142,7 +143,7 @@
</line_number>
<syntax>
<normal>#F7F7F7</normal>
<text>#F7F7F7</text>
<directive>#1F9C62</directive>
<keyword>#1F9C62</keyword>
<type>#D95233</type>
@@ -184,7 +185,7 @@
<text>#191919</text>
</focus>
<active>
<border>transparent</border>
<border>white</border>
<fill>#969696</fill>
<text>#272728</text>
</active>
@@ -254,7 +255,7 @@
<type>
<border>
<normal>#20C3C3C3</normal>
<focus>#C3C3C3</focus>
<highlight>#C3C3C3</highlight>
</border>
</type>
<built_in_type>
@@ -278,9 +279,6 @@
<typedef>
<like>type</like>
</typedef>
<template_parameter_type>
<like>type</like>
</template_parameter_type>
<type_parameter>
<like>type</like>
</type_parameter>
@@ -288,11 +286,11 @@
<function>
<fill>
<normal>#7A681F</normal>
<focus>#9C8528</focus>
<highlight>#9C8528</highlight>
</fill>
<border>
<normal>transparent</normal>
<focus>#C3C3C3</focus>
<highlight>#C3C3C3</highlight>
</border>
<hatching>
<normal>#544815</normal>
@@ -305,11 +303,11 @@
<global_variable>
<fill>
<normal>#21516B</normal>
<focus>#2A6484</focus>
<highlight>#2A6484</highlight>
</fill>
<border>
<normal>transparent</normal>
<focus>#C3C3C3</focus>
<highlight>#C3C3C3</highlight>
</border>
<hatching>
<normal>#17384A</normal>
@@ -331,7 +329,7 @@
</fill>
<border>
<normal>#80C3C3C3</normal>
<focus>#C3C3C3</focus>
<highlight>#C3C3C3</highlight>
</border>
<icon>
<normal>#C3C3C3</normal>
@@ -340,6 +338,9 @@
<normal>#521B1F</normal>
</hatching>
</namespace>
<module>
<like>namespace</like>
</module>
<package>
<like>namespace</like>
</package>
@@ -347,11 +348,11 @@
<file>
<fill>
<normal>#1B564E</normal>
<focus>#21695F</focus>
<highlight>#21695F</highlight>
</fill>
<border>
<normal>#20C3C3C3</normal>
<focus>#C3C3C3</focus>
<highlight>#C3C3C3</highlight>
</border>
<hatching>
<normal>#123B35</normal>
@@ -360,6 +361,9 @@
<macro>
<like>file</like>
</macro>
<annotation>
<like>file</like>
</annotation>
<access>
<fill>
@@ -372,7 +376,7 @@
</fill>
<border>
<normal>#80C3C3C3</normal>
<focus>#C3C3C3</focus>
<highlight>#C3C3C3</highlight>
</border>
</bundle>
<count_number>
@@ -423,7 +427,7 @@
</text>
<border>
<normal>#1B564E</normal>
<focus>#1E6158</focus>
<highlight>#1E6158</highlight>
</border>
</file>
<namespace>
@@ -435,7 +439,7 @@
</text>
<border>
<normal>#78282D</normal>
<focus>#872D33</focus>
<highlight>#872D33</highlight>
</border>
</namespace>
<inheritance>
@@ -449,50 +453,24 @@
</group>
</node>
<edge>
<default>
<normal>#797979</normal>
</default>
<default>#797979</default>
<type_use>#797979</type_use>
<inheritance>#797979</inheritance>
<override>
<normal>#8A5A94</normal>
</override>
<use>#2D6A8C</use>
<call>#9C8528</call>
<call_trail_focus>#F7F7F7</call_trail_focus>
<override>#8A5A94</override>
<call>
<normal>#9C8528</normal>
<trail_focus>#F7F7F7</trail_focus>
</call>
<type_argument>#C14057</type_argument>
<template_specialization>#C14057</template_specialization>
<use>
<normal>#2A6484</normal>
</use>
<include>#247368</include>
<import>#247368</import>
<macro_use>#247368</macro_use>
<annotation_use>#247368</annotation_use>
<template_argument>
<normal>#C14057</normal>
</template_argument>
<type_argument>
<like>template_argument</like>
</type_argument>
<template_default_argument>
<like>template_argument</like>
</template_default_argument>
<template_specialization>
<like>template_argument</like>
</template_specialization>
<template_member_specialization>
<like>template_argument</like>
</template_member_specialization>
<include>
<normal>#247368</normal>
</include>
<macro_use>
<normal>#247368</normal>
</macro_use>
<aggregation>
<normal>#4D4D4D</normal>
<focus>#6D6D6D</focus>
</aggregation>
<bundled_edges>#4D4D4D</bundled_edges>
</edge>
</graph>
@@ -502,12 +480,21 @@
<background>#555555</background>
<border>#BEBEBE</border>
<button>
<text>white</text>
<text>
<normal>#AAA</normal>
<hover>#AAA</hover>
<press>white</press>
</text>
<border>
<normal>#777</normal>
<press>#999</press>
</border>
<background>
<normal>#555555</normal>
<hover>#2F2F2F</hover>
<press>#272728</press>
</background>
<icon>#AAA</icon>
</button>
</bar>
</tab>
@@ -518,6 +505,7 @@
<text>
<normal>white</normal>
<active>black</active>
<disabled>#AAA</disabled>
</text>
<table_line_1>
<normal>#272728</normal>
@@ -547,4 +535,25 @@
<icon_disabled>#555555</icon_disabled>
</button>
</screen_search>
<custom_trail>
<background>#272728</background>
<alt_background>#555555</alt_background>
<separator>#CCC</separator>
<text>#F7F7F7</text>
<text_disabled>darkgrey</text_disabled>
<background_disabled>#474748</background_disabled>
<button>
<default>
<text>#F7F7F7</text>
<background>#272728</background>
<border>#F7F7F7</border>
</default>
<hover>
<text>#272728</text>
<background>#F7F7F7</background>
<border>#F7F7F7</border>
</hover>
</button>
</custom_trail>
</config>
@@ -0,0 +1,567 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Solarized(dark) based color scheme
Solarized created by Ethan Schoonover
Solarized project page - http://ethanschoonover.com/solarized
Solarized on github - https://github.com/altercation/solarized
-->
<config>
<window>
<background>#272728</background>
<separator>#CCC</separator>
<focus>#FFFF4D</focus>
<scrollbar>
<background>transparent</background>
<handle>#80999999</handle>
<line>#80999999</line>
</scrollbar>
<dock>
<text>#F7F7F7</text>
<background>#555555</background>
<line>#808080</line>
<icon_type>white</icon_type> <!-- white, grey, black -->
</dock>
<button>
<text>white</text>
<background>#3A3A3A</background>
<border>#C5C5C5</border>
<border_hover>white</border_hover>
<icon>white</icon>
</button>
</window>
<search>
<background>#272728</background>
<button>
<normal>#555555</normal>
<hover>#404040</hover>
<press>#3A3A3A</press>
<disabled>#333333</disabled>
<icon>white</icon>
<icon_disabled>#777777</icon_disabled>
</button>
<field>
<text>#F7F7F7</text>
<background>#272728</background>
<border>#555555</border>
<highlight>#999999</highlight>
</field>
<popup>
<text>#F7F7F7</text>
<by_text>#A0A0A0</by_text>
<background>#272728</background>
<highlight>#333333</highlight>
<line>#4A4A4A</line>
</popup>
<query>
<none>
<normal>
<fill>#2F2F2F</fill>
<text>#F7F7F7</text>
</normal>
<hover>
<fill>black</fill>
<text>#F7F7F7</text>
</hover>
</none>
<command>
<normal>
<fill>#406D4D</fill>
<text>#F7F7F7</text>
</normal>
<hover>
<fill>#4E855E</fill>
<text>#F7F7F7</text>
</hover>
</command>
<operator>
<normal>
<fill>#7D2724</fill>
<text>#F7F7F7</text>
</normal>
<hover>
<fill>#8C2B29</fill>
<text>#F7F7F7</text>
</hover>
</operator>
<fulltext>
<normal>
<fill>#207EA8</fill>
<text>#F7F7F7</text>
</normal>
<hover>
<fill>#006D93</fill>
<text>#F7F7F7</text>
</hover>
</fulltext>
</query>
</search>
<code>
<background>#313132</background>
<navigation>
<background>#272728</background>
<text>#C5C5C5</text>
<line>#999</line>
</navigation>
<file>
<background>#5C5C5C</background>
<title>
<text>#F7F7F7</text>
<normal>#5C5C5C</normal>
<hover>#4A4A4A</hover>
<press>#404040</press>
<icon>white</icon>
<border>#272728</border>
<hatching>dark</hatching>
</title>
<ref_count>
<text>#F7F7F7</text>
<background>#272728</background>
</ref_count>
</file>
<snippet>
<background>#002b36</background>
<title>
<text>#A0A0A0</text>
<background>transparent</background>
</title>
<line_number>
<text>#839496</text>
<inactive_text>#839496</inactive_text>
<background>#073642</background>
<marker>
<active>#797979</active>
<focus>#F7F7F7</focus>
</marker>
</line_number>
<syntax>
<text>#839496</text>
<directive>#cb4b16</directive>
<keyword>#859900</keyword>
<type>#b58900</type>
<comment>#586e75</comment>
<quotation>#2aa198</quotation>
<function>#839496</function>
<number>#2aa198</number>
</syntax>
<selection>
<text>white</text>
<background>#777777</background>
</selection>
<annotation>
<token>
<normal>
<border>transparent</border>
<fill>transparent</fill>
</normal>
<focus>
<border>#D5D5D5</border>
<fill>transparent</fill>
</focus>
<active>
<border>transparent</border>
<fill>#D5D5D5</fill>
<text>#272728</text>
</active>
</token>
<local_symbol>
<normal>
<border>transparent</border>
<fill>transparent</fill>
</normal>
<focus>
<border>#A0A0A0</border>
<fill>#969696</fill>
<text>#191919</text>
</focus>
<active>
<border>white</border>
<fill>#969696</fill>
<text>#272728</text>
</active>
</local_symbol>
<scope>
<normal>
<border>transparent</border>
<fill>transparent</fill>
</normal>
</scope>
<error>
<normal>
<border>transparent</border>
<fill>#BBFF0000</fill>
<text>#000000</text>
</normal>
<focus>
<fill>#FFFF0000</fill>
</focus>
</error>
<fulltext_search>
<normal>
<fill>#207EA8</fill>
<text>#F7F7F7</text>
</normal>
<focus>
<border>#006D93</border>
<fill>#134B63</fill>
</focus>
</fulltext_search>
<screen_search>
<normal>
<border>transparent</border>
<fill>#6EDB42</fill>
<text>#000000</text>
</normal>
<focus>
<fill>#FF52E8</fill>
</focus>
</screen_search>
</annotation>
</snippet>
</code>
<graph>
<background>#002b36</background>
<node>
<default>
<fill>
<normal>#5A5A5A</normal>
</fill>
<border>
<normal>#C3C3C3</normal>
</border>
<text>
<normal>#F7F7F7</normal>
</text>
<icon>
<normal>#F7F7F7</normal>
</icon>
<hatching>
<normal>#3D3D3D</normal>
</hatching>
</default>
<type>
<border>
<normal>#20C3C3C3</normal>
<highlight>#C3C3C3</highlight>
</border>
</type>
<built_in_type>
<like>type</like>
</built_in_type>
<class>
<like>type</like>
</class>
<interface>
<like>type</like>
</interface>
<struct>
<like>type</like>
</struct>
<enum>
<like>type</like>
</enum>
<union>
<like>type</like>
</union>
<typedef>
<like>type</like>
</typedef>
<type_parameter>
<like>type</like>
</type_parameter>
<function>
<fill>
<normal>#7A681F</normal>
<highlight>#9C8528</highlight>
</fill>
<border>
<normal>transparent</normal>
<highlight>#C3C3C3</highlight>
</border>
<hatching>
<normal>#544815</normal>
</hatching>
</function>
<method>
<like>function</like>
</method>
<global_variable>
<fill>
<normal>#21516B</normal>
<highlight>#2A6484</highlight>
</fill>
<border>
<normal>transparent</normal>
<highlight>#C3C3C3</highlight>
</border>
<hatching>
<normal>#17384A</normal>
</hatching>
</global_variable>
<field>
<like>global_variable</like>
</field>
<enum_constant>
<like>global_variable</like>>
</enum_constant>
<symbol>
<like>type</like>
</symbol>
<namespace>
<fill>
<normal>#78282D</normal>
</fill>
<border>
<normal>#80C3C3C3</normal>
<highlight>#C3C3C3</highlight>
</border>
<icon>
<normal>#C3C3C3</normal>
</icon>
<hatching>
<normal>#521B1F</normal>
</hatching>
</namespace>
<module>
<like>namespace</like>
</module>
<package>
<like>namespace</like>
</package>
<file>
<fill>
<normal>#1B564E</normal>
<highlight>#21695F</highlight>
</fill>
<border>
<normal>#20C3C3C3</normal>
<highlight>#C3C3C3</highlight>
</border>
<hatching>
<normal>#123B35</normal>
</hatching>
</file>
<macro>
<like>file</like>
</macro>
<annotation>
<like>file</like>
</annotation>
<access>
<fill>
<normal>#272728</normal>
</fill>
</access>
<bundle>
<fill>
<normal>#272728</normal>
</fill>
<border>
<normal>#80C3C3C3</normal>
<highlight>#C3C3C3</highlight>
</border>
</bundle>
<count_number>
<fill>
<normal>#272728</normal>
</fill>
<border>
<normal>#C3C3C3</normal>
</border>
<text>
<normal>#F7F7F7</normal>
</text>
</count_number>
<qualifier>
<fill>
<normal>#78282D</normal>
</fill>
<border>
<normal>#C3C3C3</normal>
</border>
<text>
<normal>#F7F7F7</normal>
</text>
</qualifier>
<text>
<fill>
<normal>transparent</normal>
</fill>
<text>
<normal>#777777</normal>
</text>
</text>
<group>
<default>
<fill>
<normal>transparent</normal>
</fill>
<border>
<normal>#5A5A5A</normal>
</border>
</default>
<file>
<fill>
<normal>transparent</normal>
</fill>
<text>
<normal>#C3C3C3</normal>
</text>
<border>
<normal>#1B564E</normal>
<highlight>#1E6158</highlight>
</border>
</file>
<namespace>
<fill>
<normal>transparent</normal>
</fill>
<text>
<normal>#C3C3C3</normal>
</text>
<border>
<normal>#78282D</normal>
<highlight>#872D33</highlight>
</border>
</namespace>
<inheritance>
<fill>
<normal>transparent</normal>
</fill>
<border>
<normal>#797979</normal>
</border>
</inheritance>
</group>
</node>
<edge>
<default>#797979</default>
<type_use>#797979</type_use>
<inheritance>#797979</inheritance>
<use>#2D6A8C</use>
<call>#9C8528</call>
<call_trail_focus>#F7F7F7</call_trail_focus>
<override>#8A5A94</override>
<type_argument>#C14057</type_argument>
<template_specialization>#C14057</template_specialization>
<include>#247368</include>
<import>#247368</import>
<macro_use>#247368</macro_use>
<annotation_use>#247368</annotation_use>
<bundled_edges>#4D4D4D</bundled_edges>
</edge>
</graph>
<tab>
<background>#272728</background>
<bar>
<background>#555555</background>
<border>#BEBEBE</border>
<button>
<text>
<normal>#AAA</normal>
<hover>#AAA</hover>
<press>white</press>
</text>
<border>
<normal>#777</normal>
<press>#999</press>
</border>
<background>
<normal>#555555</normal>
<hover>#2F2F2F</hover>
<press>#272728</press>
</background>
<icon>#AAA</icon>
</button>
</bar>
</tab>
<table>
<background>#272728</background>
<table>#C5C5C5</table>
<text>
<normal>white</normal>
<active>black</active>
<disabled>#AAA</disabled>
</text>
<table_line_1>
<normal>#272728</normal>
<active>#969696</active>
</table_line_1>
<table_line_2>
<normal>#343434</normal>
<active>#969696</active>
</table_line_2>
</table>
<screen_search>
<background>#555555</background>
<border>#BEBEBE</border>
<box>
<background>#272728</background>
<text>#F7F7F7</text>
<match_label>#C5C5C5</match_label>
</box>
<filter>#F7F7F7</filter>
<button>
<normal>#272728</normal>
<hover>#333333</hover>
<press>#555555</press>
<disabled>#272728</disabled>
<icon>white</icon>
<icon_disabled>#555555</icon_disabled>
</button>
</screen_search>
<custom_trail>
<background>#272728</background>
<alt_background>#555555</alt_background>
<separator>#CCC</separator>
<text>#F7F7F7</text>
<text_disabled>darkgrey</text_disabled>
<background_disabled>#474748</background_disabled>
<button>
<default>
<text>#F7F7F7</text>
<background>#272728</background>
<border>#F7F7F7</border>
</default>
<hover>
<text>#272728</text>
<background>#F7F7F7</background>
<border>#F7F7F7</border>
</hover>
</button>
</custom_trail>
</config>
@@ -0,0 +1,567 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Solarized(light) based color scheme
Solarized created by Ethan Schoonover
Solarized project page - http://ethanschoonover.com/solarized
Solarized on github - https://github.com/altercation/solarized
-->
<config>
<window>
<background>#272728</background>
<separator>#CCC</separator>
<focus>#FFFF4D</focus>
<scrollbar>
<background>transparent</background>
<handle>#80999999</handle>
<line>#80999999</line>
</scrollbar>
<dock>
<text>#F7F7F7</text>
<background>#555555</background>
<line>#808080</line>
<icon_type>white</icon_type> <!-- white, grey, black -->
</dock>
<button>
<text>white</text>
<background>#3A3A3A</background>
<border>#C5C5C5</border>
<border_hover>white</border_hover>
<icon>white</icon>
</button>
</window>
<search>
<background>#eee8d5</background>
<button>
<normal>#555555</normal>
<hover>#404040</hover>
<press>#3A3A3A</press>
<disabled>#333333</disabled>
<icon>white</icon>
<icon_disabled>#777777</icon_disabled>
</button>
<field>
<text>#F7F7F7</text>
<background>#272728</background>
<border>#555555</border>
<highlight>#999999</highlight>
</field>
<popup>
<text>#F7F7F7</text>
<by_text>#A0A0A0</by_text>
<background>#272728</background>
<highlight>#333333</highlight>
<line>#4A4A4A</line>
</popup>
<query>
<none>
<normal>
<fill>#2F2F2F</fill>
<text>#F7F7F7</text>
</normal>
<hover>
<fill>black</fill>
<text>#F7F7F7</text>
</hover>
</none>
<command>
<normal>
<fill>#406D4D</fill>
<text>#F7F7F7</text>
</normal>
<hover>
<fill>#4E855E</fill>
<text>#F7F7F7</text>
</hover>
</command>
<operator>
<normal>
<fill>#7D2724</fill>
<text>#F7F7F7</text>
</normal>
<hover>
<fill>#8C2B29</fill>
<text>#F7F7F7</text>
</hover>
</operator>
<fulltext>
<normal>
<fill>#207EA8</fill>
<text>#F7F7F7</text>
</normal>
<hover>
<fill>#006D93</fill>
<text>#F7F7F7</text>
</hover>
</fulltext>
</query>
</search>
<code>
<background>#eee8d5</background>
<navigation>
<background>#272728</background>
<text>#C5C5C5</text>
<line>#999</line>
</navigation>
<file>
<background>#5C5C5C</background>
<title>
<text>#F7F7F7</text>
<normal>#5C5C5C</normal>
<hover>#4A4A4A</hover>
<press>#404040</press>
<icon>white</icon>
<border>#272728</border>
<hatching>dark</hatching>
</title>
<ref_count>
<text>#F7F7F7</text>
<background>#272728</background>
</ref_count>
</file>
<snippet>
<background>#fdf6e3</background>
<title>
<text>#A0A0A0</text>
<background>transparent</background>
</title>
<line_number>
<text>#657b83</text>
<inactive_text>#839496</inactive_text>
<background>#eee8d5</background>
<marker>
<active>#797979</active>
<focus>#F7F7F7</focus>
</marker>
</line_number>
<syntax>
<text>#657b83</text>
<directive>#cb4b16</directive>
<keyword>#859900</keyword>
<type>#b58900</type>
<comment>#586e75</comment>
<quotation>#2aa198</quotation>
<function>#839496</function>
<number>#2aa198</number>
</syntax>
<selection>
<text>white</text>
<background>#777777</background>
</selection>
<annotation>
<token>
<normal>
<border>transparent</border>
<fill>transparent</fill>
</normal>
<focus>
<border>#D5D5D5</border>
<fill>transparent</fill>
</focus>
<active>
<border>transparent</border>
<fill>#D5D5D5</fill>
<text>#272728</text>
</active>
</token>
<local_symbol>
<normal>
<border>transparent</border>
<fill>transparent</fill>
</normal>
<focus>
<border>#A0A0A0</border>
<fill>#969696</fill>
<text>#191919</text>
</focus>
<active>
<border>white</border>
<fill>#969696</fill>
<text>#272728</text>
</active>
</local_symbol>
<scope>
<normal>
<border>transparent</border>
<fill>transparent</fill>
</normal>
</scope>
<error>
<normal>
<border>transparent</border>
<fill>#BBFF0000</fill>
<text>#000000</text>
</normal>
<focus>
<fill>#FFFF0000</fill>
</focus>
</error>
<fulltext_search>
<normal>
<fill>#207EA8</fill>
<text>#F7F7F7</text>
</normal>
<focus>
<border>#006D93</border>
<fill>#134B63</fill>
</focus>
</fulltext_search>
<screen_search>
<normal>
<border>transparent</border>
<fill>#6EDB42</fill>
<text>#000000</text>
</normal>
<focus>
<fill>#FF52E8</fill>
</focus>
</screen_search>
</annotation>
</snippet>
</code>
<graph>
<background>#fdf6e3</background>
<node>
<default>
<fill>
<normal>#5A5A5A</normal>
</fill>
<border>
<normal>#C3C3C3</normal>
</border>
<text>
<normal>#F7F7F7</normal>
</text>
<icon>
<normal>#F7F7F7</normal>
</icon>
<hatching>
<normal>#3D3D3D</normal>
</hatching>
</default>
<type>
<border>
<normal>#20C3C3C3</normal>
<highlight>#C3C3C3</highlight>
</border>
</type>
<built_in_type>
<like>type</like>
</built_in_type>
<class>
<like>type</like>
</class>
<interface>
<like>type</like>
</interface>
<struct>
<like>type</like>
</struct>
<enum>
<like>type</like>
</enum>
<union>
<like>type</like>
</union>
<typedef>
<like>type</like>
</typedef>
<type_parameter>
<like>type</like>
</type_parameter>
<function>
<fill>
<normal>#7A681F</normal>
<highlight>#9C8528</highlight>
</fill>
<border>
<normal>transparent</normal>
<highlight>#C3C3C3</highlight>
</border>
<hatching>
<normal>#544815</normal>
</hatching>
</function>
<method>
<like>function</like>
</method>
<global_variable>
<fill>
<normal>#21516B</normal>
<highlight>#2A6484</highlight>
</fill>
<border>
<normal>transparent</normal>
<highlight>#C3C3C3</highlight>
</border>
<hatching>
<normal>#17384A</normal>
</hatching>
</global_variable>
<field>
<like>global_variable</like>
</field>
<enum_constant>
<like>global_variable</like>>
</enum_constant>
<symbol>
<like>type</like>
</symbol>
<namespace>
<fill>
<normal>#78282D</normal>
</fill>
<border>
<normal>#80C3C3C3</normal>
<highlight>#C3C3C3</highlight>
</border>
<icon>
<normal>#C3C3C3</normal>
</icon>
<hatching>
<normal>#521B1F</normal>
</hatching>
</namespace>
<module>
<like>namespace</like>
</module>
<package>
<like>namespace</like>
</package>
<file>
<fill>
<normal>#1B564E</normal>
<highlight>#21695F</highlight>
</fill>
<border>
<normal>#20C3C3C3</normal>
<highlight>#C3C3C3</highlight>
</border>
<hatching>
<normal>#123B35</normal>
</hatching>
</file>
<macro>
<like>file</like>
</macro>
<annotation>
<like>file</like>
</annotation>
<access>
<fill>
<normal>#272728</normal>
</fill>
</access>
<bundle>
<fill>
<normal>#272728</normal>
</fill>
<border>
<normal>#80C3C3C3</normal>
<highlight>#C3C3C3</highlight>
</border>
</bundle>
<count_number>
<fill>
<normal>#272728</normal>
</fill>
<border>
<normal>#C3C3C3</normal>
</border>
<text>
<normal>#F7F7F7</normal>
</text>
</count_number>
<qualifier>
<fill>
<normal>#78282D</normal>
</fill>
<border>
<normal>#C3C3C3</normal>
</border>
<text>
<normal>#F7F7F7</normal>
</text>
</qualifier>
<text>
<fill>
<normal>transparent</normal>
</fill>
<text>
<normal>#777777</normal>
</text>
</text>
<group>
<default>
<fill>
<normal>transparent</normal>
</fill>
<border>
<normal>#5A5A5A</normal>
</border>
</default>
<file>
<fill>
<normal>transparent</normal>
</fill>
<text>
<normal>#C3C3C3</normal>
</text>
<border>
<normal>#1B564E</normal>
<highlight>#1E6158</highlight>
</border>
</file>
<namespace>
<fill>
<normal>transparent</normal>
</fill>
<text>
<normal>#C3C3C3</normal>
</text>
<border>
<normal>#78282D</normal>
<highlight>#872D33</highlight>
</border>
</namespace>
<inheritance>
<fill>
<normal>transparent</normal>
</fill>
<border>
<normal>#797979</normal>
</border>
</inheritance>
</group>
</node>
<edge>
<default>#797979</default>
<type_use>#797979</type_use>
<inheritance>#797979</inheritance>
<use>#2D6A8C</use>
<call>#9C8528</call>
<call_trail_focus>#F7F7F7</call_trail_focus>
<override>#8A5A94</override>
<type_argument>#C14057</type_argument>
<template_specialization>#C14057</template_specialization>
<include>#247368</include>
<import>#247368</import>
<macro_use>#247368</macro_use>
<annotation_use>#247368</annotation_use>
<bundled_edges>#4D4D4D</bundled_edges>
</edge>
</graph>
<tab>
<background>#272728</background>
<bar>
<background>#fdf6e3</background>
<border>#BEBEBE</border>
<button>
<text>
<normal>#AAA</normal>
<hover>#AAA</hover>
<press>white</press>
</text>
<border>
<normal>#777</normal>
<press>#999</press>
</border>
<background>
<normal>#555555</normal>
<hover>#2F2F2F</hover>
<press>#272728</press>
</background>
<icon>#AAA</icon>
</button>
</bar>
</tab>
<table>
<background>#272728</background>
<table>#C5C5C5</table>
<text>
<normal>white</normal>
<active>black</active>
<disabled>#AAA</disabled>
</text>
<table_line_1>
<normal>#272728</normal>
<active>#969696</active>
</table_line_1>
<table_line_2>
<normal>#343434</normal>
<active>#969696</active>
</table_line_2>
</table>
<screen_search>
<background>#555555</background>
<border>#BEBEBE</border>
<box>
<background>#272728</background>
<text>#F7F7F7</text>
<match_label>#C5C5C5</match_label>
</box>
<filter>#F7F7F7</filter>
<button>
<normal>#272728</normal>
<hover>#333333</hover>
<press>#555555</press>
<disabled>#272728</disabled>
<icon>white</icon>
<icon_disabled>#555555</icon_disabled>
</button>
</screen_search>
<custom_trail>
<background>#272728</background>
<alt_background>#555555</alt_background>
<separator>#CCC</separator>
<text>#F7F7F7</text>
<text_disabled>darkgrey</text_disabled>
<background_disabled>#474748</background_disabled>
<button>
<default>
<text>#F7F7F7</text>
<background>#272728</background>
<border>#F7F7F7</border>
</default>
<hover>
<text>#272728</text>
<background>#F7F7F7</background>
<border>#F7F7F7</border>
</hover>
</button>
</custom_trail>
</config>
@@ -1,18 +1,19 @@
<?xml version="1.0" encoding="utf-8" ?>
<config>
<application>
<application>
<window_base_width>500</window_base_width>
<window_base_height>500</window_base_height>
</application>
<indexing>
<indexer_thread_count>0</indexer_thread_count>
</indexing>
<indexing>
<indexer_thread_count>0</indexer_thread_count>
</indexing>
<user>
<recent_projects>
<recent_project>./projects/tutorial/tutorial.srctrlprj</recent_project>
<recent_project>./projects/tictactoe/tictactoe.srctrlprj</recent_project>
<recent_project>./projects/tictactoe_cpp/tictactoe_cpp.srctrlprj</recent_project>
<recent_project>./projects/tictactoe_py/tictactoe_py.srctrlprj</recent_project>
<recent_project>./projects/javaparser/javaparser.srctrlprj</recent_project>
</recent_projects>
</user>
<version>1</version>
<version>8</version>
</config>
+4
View File
@@ -4,6 +4,10 @@
font-weight: 100;
}
#small {
font-size: 12px;
}
#window {
background: qlineargradient( x1:0 y1:0.4, x2:0 y2:1, stop:0 #2F3F86, stop:1 #1C7BBC );
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

@@ -137,15 +137,12 @@
}
/* Bookmark creator */
#creator_header_background {
background-color: #2E3C86;
}
#creator_title_label {
font-size: 18px;
font-weight: bold;
color: white;
background-color: #2E3C86;
padding: 23px 20px 20px 20px;
}
#creator_label {
+82 -14
View File
@@ -24,7 +24,15 @@
border: none;
}
#code_navigation * {
#focus_indicator {
background: <color:code/navigation/background>;
}
#focus_indicator[focused=true] {
background: <color:window/focus>;
}
#code_navigation QLabel {
color: <color:code/file/title/text>;
font-size: <setting:font_size>px;
}
@@ -50,11 +58,39 @@
}
#code_navigation #reference_button_previous {
/*width: 20px;*/
padding-bottom: 2px;
border-bottom-left-radius: 11px;
border-top-left-radius: 11px;
}
#code_navigation #reference_button_next {
/*width: 20px;*/
padding-top: 3px;
border-bottom-right-radius: 11px;
border-top-right-radius: 11px;
}
#code_navigation #file_button_previous, #code_navigation #file_button_next {
width: 22px;
}
#code_navigation #file_button_previous, #code_navigation #local_reference_button_previous {
border-bottom-left-radius: 11px;
border-top-left-radius: 11px;
}
#code_navigation #local_reference_button_previous {
padding-bottom: 2px;
}
#code_navigation #local_reference_button_next {
padding-top: 3px;
}
#code_navigation #file_button_next, #code_navigation #local_reference_button_next {
border-bottom-right-radius: 11px;
border-top-right-radius: 11px;
}
@@ -88,10 +124,13 @@
#code_file {
background-color: <color:code/snippet/background>;
border: 2px solid <color:code/file/background>;
border-radius: 12px;
margin-bottom: 0px;
border: none;
font-size: <setting:font_size>px;
padding-bottom: 7px;
}
#code_file[last=true] {
border-bottom: 1px solid <color:code/file/background>;
}
#title_bar, #title_bar_single {
@@ -101,8 +140,11 @@
}
#title_bar[hovering=false] {
border-top-left-radius: 7px;
border-top-right-radius: 7px;
border-top: 1px solid <color:code/navigation/line>;
}
#title_bar[focused=true] {
border-left: 4px solid <color:window/focus>;
}
#title_bar_single {
@@ -115,13 +157,13 @@
}
#title_button {
background-color: <color:code/file/title/normal>;
background-color: transparent;
border: none;
border-radius: 3px;
color: <color:code/file/title/text>;
font-size: <setting:font_size>px;
padding: 2px 4px;
margin: 1px 8px;
margin: 1px 8px 1px 2px;
}
#title_bar_single #title_button {
@@ -136,7 +178,7 @@
background-color: <color:code/file/title/press>;
}
#title_button[complete=false] {
#title_button[nonindexed=true] {
border: 1px solid <color:code/file/title/border>;
}
@@ -152,33 +194,49 @@
#code_file #code_snippet {
background-color: <color:code/snippet/background>;
border-top: 2px solid <color:code/file/background>;
border-top: 1px solid <color:code/file/background>;
font-size: <setting:font_size>px;
}
#code_file #code_snippet[first=true] {
border: none;
}
#code_file #code_snippet #scope_name, #code_file #code_snippet #dots {
background-color: <color:code/snippet/title/background>;
border: none;
color: <color:code/snippet/title/text>;
font-family: "<setting:font_name>";
font-size: <setting:font_size>px;
padding-bottom: 2px;
}
#code_file #code_snippet #scope_name:hover {
background-color: <color:code/snippet/title/hover>;
#code_file #code_snippet #scope_name[focused=true] {
color: <color:code/snippet/syntax/text>;
}
#code_file #code_snippet #dots {
background-color: <color:code/snippet/line_number/background>;
padding-right: 16px;
border-right: 3px solid transparent;
margin-right: 5px;
padding-right: 8px;
text-align: right;
}
#code_file #code_snippet #dots[focused=true] {
border-right: 3px solid <color:window/focus>;
}
#code_file #code_snippet #scope_name {
padding-left: 4px;
text-align: left;
}
#code_file #code_snippet #scope_name[focused=true] {
padding-left: 4px;
text-align: left;
}
#line_number_area {
background-color: <color:code/snippet/line_number/background>;
border: none;
@@ -189,11 +247,21 @@
#code_area {
background-color: <color:code/snippet/background>;
color: <color:code/snippet/syntax/normal>;
color: <color:code/snippet/syntax/text>;
selection-color: <color:code/snippet/selection/text>;
selection-background-color: <color:code/snippet/selection/background>;
}
#title_bar #expand_button, #title_bar_single #expand_button {
background: transparent;
border: none;
margin: 3px;
max-height: 16px;
max-width: 16px;
margin-left: 8px;
margin-right: 0px;
}
#title_bar #file_button, #title_bar_single #file_button {
background: transparent;
border: none;
Binary file not shown.

After

Width:  |  Height:  |  Size: 939 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 922 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 536 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 554 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

@@ -0,0 +1,58 @@
* {
color: <color:custom_trail/text>;
}
#panelA {
background: <color:custom_trail/background>;
}
#panelB, #panelB2 {
background: <color:custom_trail/alt_background>;
border-top: 1px solid <color:custom_trail/separator>;
border-bottom: 1px solid <color:custom_trail/separator>;
}
#panelB2 {
border-bottom: none
}
#search_box_container {
border-color: <color:custom_trail/separator>;
border-radius: 8px;
border-width: 1px;
}
#search_box_container:disabled {
background: <color:custom_trail/background_disabled>;
border-color: <color:custom_trail/background_disabled>;
}
#search_box:disabled {
color: <color:custom_trail/text_disabled>;
}
#button, #button_small {
background: <color:custom_trail/button/default/background>;
border: 1px solid <color:custom_trail/button/default/border>;
border-radius: 8px;
color: <color:custom_trail/button/default/text>;
padding: 3px 8px 2px;
font-size: <setting:font_size+1>px;
min-width: 5em;
}
#button_small {
border-radius: 6px;
font-size: <setting:font_size-1>px;
min-width: 4em;
}
#button:hover, #button_small:hover {
background: <color:custom_trail/button/hover/background>;
border-color: <color:custom_trail/button/hover/border>;
color: <color:custom_trail/button/hover/text>;
}
#error {
color: red;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 532 B

@@ -22,6 +22,10 @@ QPushButton:pressed {
background: <color:search/button/press>;
}
#focus_indicator {
background: <color:window/focus>;
}
#expand_button {
max-width: 26px;
max-height: 26px;
@@ -101,3 +105,8 @@ QPushButton:pressed {
max-height: 26px;
padding-right: 2px;
}
#legend_button
{
border-radius: 9px;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

@@ -1,7 +1,22 @@
QLabel, QCheckBox, QRadioButton {
#window QLabel,
#window QCheckBox,
#window QRadioButton {
color: white;
}
#window QRadioButton::indicator {
background: white;
border-radius: 6px;
border: 3px solid white;
width: 6px;
height: 6px;
margin-right: 5px;
}
#window QRadioButton::indicator:checked {
background: #444;
}
#topHalf {
background: #007AC2;
border-top-left-radius: 15px;
-653
View File
@@ -1,653 +0,0 @@
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1031\deflangfe1031\themelang1031\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}
{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}
{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f39\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f40\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\f42\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f43\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f44\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f45\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\f46\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f47\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f59\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f60\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}
{\f62\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f63\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f64\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f65\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}
{\f66\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f67\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f379\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f380\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}
{\f382\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f383\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f386\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f387\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}
{\f409\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f410\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f412\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f413\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
{\f416\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f417\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}
{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}
{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;
\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp
\fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1031\langfe1031\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 \snext0 \sqformat \spriority0 Normal;}
{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1031\langfe1031\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031
\snext11 \ssemihidden \sunhideused \sqformat Normal Table;}{\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
\fs22\lang1031\langfe1031\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 \snext15 \sqformat \spriority1 \styrsid2585574 No Spacing;}}{\*\listtable{\list\listtemplateid-193139844\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0
\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid27729033}{\list\listtemplateid1375513438\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid96100686}{\list\listtemplateid300595816\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid253251691}{\list\listtemplateid76031560\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid300041076}{\list\listtemplateid-1730514658\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid311452362}{\list\listtemplateid1740521432\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid329989798}{\list\listtemplateid-2138013748\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid337853658}{\list\listtemplateid-1979967268\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid407533594}{\list\listtemplateid-2064771084\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid520895476}{\list\listtemplateid266901952\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid559290299}{\list\listtemplateid1270663972\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid578827701}{\list\listtemplateid1940422034\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid611281618}{\list\listtemplateid-116596600\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid720053339}{\list\listtemplateid-1917002558\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid731805719}{\list\listtemplateid2071086706\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid777916200}{\list\listtemplateid-331980480\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid846598160}{\list\listtemplateid-1896473156\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid929775564}{\list\listtemplateid-1405195412\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid936400082}{\list\listtemplateid1352454040\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1164903365}{\list\listtemplateid2109785220\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1207254615}{\list\listtemplateid-1006051000\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1352025351}{\list\listtemplateid-204324422\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1380668622}{\list\listtemplateid948060056\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1422531975}{\list\listtemplateid1664367632\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1447502227}{\list\listtemplateid-1464407968\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1509439923}{\list\listtemplateid2097152234\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1638951864}{\list\listtemplateid248937908\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1951863245}}{\*\listoverridetable{\listoverride\listid846598160\listoverridecount0\ls1}{\listoverride\listid253251691\listoverridecount0\ls2}
{\listoverride\listid731805719\listoverridecount0\ls3}{\listoverride\listid1638951864\listoverridecount0\ls4}{\listoverride\listid1207254615\listoverridecount0\ls5}{\listoverride\listid27729033\listoverridecount0\ls6}{\listoverride\listid611281618
\listoverridecount0\ls7}{\listoverride\listid1352025351\listoverridecount0\ls8}{\listoverride\listid1380668622\listoverridecount0\ls9}{\listoverride\listid936400082\listoverridecount0\ls10}{\listoverride\listid1447502227\listoverridecount0\ls11}
{\listoverride\listid300041076\listoverridecount0\ls12}{\listoverride\listid578827701\listoverridecount0\ls13}{\listoverride\listid520895476\listoverridecount0\ls14}{\listoverride\listid1164903365\listoverridecount0\ls15}{\listoverride\listid929775564
\listoverridecount0\ls16}{\listoverride\listid777916200\listoverridecount0\ls17}{\listoverride\listid337853658\listoverridecount0\ls18}{\listoverride\listid1509439923\listoverridecount0\ls19}{\listoverride\listid96100686\listoverridecount0\ls20}
{\listoverride\listid720053339\listoverridecount0\ls21}{\listoverride\listid1422531975\listoverridecount0\ls22}{\listoverride\listid329989798\listoverridecount0\ls23}{\listoverride\listid311452362\listoverridecount0\ls24}{\listoverride\listid559290299
\listoverridecount0\ls25}{\listoverride\listid407533594\listoverridecount0\ls26}{\listoverride\listid1951863245\listoverridecount0\ls27}}{\*\rsidtbl \rsid2585574\rsid3083065\rsid5248660\rsid5338747\rsid9004326\rsid9579172\rsid10582864\rsid14037707}
{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Thomson, Clive}{\operator Malte}{\creatim\yr2017\mo6\dy20\hr14}{\revtim\yr2018\mo4\dy6\hr15\min25}{\version9}
{\edmins0}{\nofpages5}{\nofwords1677}{\nofchars10570}{\*\company CSR}{\nofcharsws12223}{\vern32859}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
\paperw12240\paperh15840\margl1440\margr1440\margt1417\margb1134\gutter0\ltrsect
\widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves1\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120
\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot3083065 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}
{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9
\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
\fs22\lang1031\langfe1031\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 Sourcetrail
\par \hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 Software License Agreement (\'93\loch\f31506 \hich\f31506 AGREEMENT\'94\loch\f31506 )
\par \hich\af31506\dbch\af31505\loch\f31506 Last date of change: 2018-0}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 4}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 -}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 06}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par
\par \hich\af31506\dbch\af31505\loch\f31506 BY INSTALLING OR USING THIS SOFTWARE, YOU ARE BECOM\hich\af31506\dbch\af31505\loch\f31506
ING A PARTY TO, AND ARE CONSENTING TO BE BOUND BY, THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, DO NOT INSTALL OR USE THIS SOFTWARE.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 1. DEFINITIONS
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 "SOFTWARE" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls21\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 a version of the cross-platform source code explorer kn\hich\af31506\dbch\af31505\loch\f31506
own as Sourcetrail in executable form. The version is defined by the two leading numbers of the version string (e.g. the version of Sourcetrail 2017.1.x is version 2017.1); and}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 documentation for that version of Sourcetrail; and}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 minor updates included i\hich\af31506\dbch\af31505\loch\f31506
n software maintenance which are indicated by an increase in the digits that follow the first two leading numbers of the version string (e.g. the update from Sourcetrail 2017.1.0 to Sourcetrail 2017.1.1 is a minor update).
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 "LICENSE" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls22\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506
the permission to use and distribute the SOFTWARE as defined by the following sections of this document. The permissions granted especially depend on whether a SOFTWARE Non-Commercial License or a SOFTWARE Commercial License is agreed-upon.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 "LICENSOR" me\hich\af31506\dbch\af31505\loch\f31506 ans:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls22\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 Coati Software KG, having a place of business at Jakob-Haringer-Stra\'df\loch\f31506 e 1/127, 5020 Salzburg, Austria.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 "LICENSEE" means:}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls22\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 the individual who purchased a LICENSE(s) for the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 the individual who was granted a LICENSE(s) for the SOFTWARE by L\hich\af31506\dbch\af31505\loch\f31506 ICENSOR;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 the company, corporation, organization, or legal entity that purchased a LICENSE(s) for the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 the company, corporation, organization, or legal entity that was granted a LICENSE(s) for the SOFTWARE by LICENSOR.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 "PARTIES" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls23\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 both L\hich\af31506\dbch\af31505\loch\f31506 ICENSOR and LICENSEE collectively.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 "AUTHORIZED USER" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls23\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 the individual who is LICENSEE of the SOFTWARE. This individual is the only AUTHORIZED USER;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 an employee who is nameable on demand and might at any time use the SOFTWARE, of LICENSEE. Every AU\hich\af31506\dbch\af31505\loch\f31506
THORIZED USER known by name can be replaced by another user known by name only once in a month. From that time on, said first user must not use the SOFTWARE anymore and said second user may start to use the SOFTWARE. At no time may the number of the users
\hich\af31506\dbch\af31505\loch\f31506 \hich\af31506\dbch\af31505\loch\f31506 known by name exceed the agreed-upon number of AUTHORIZED USER(s).\tab
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 "ACTIVATION KEY" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls24\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 a document issued by LICENSOR that defines all parameters of the SOFTWARE Commercial License. Said document specifies the name of the licensed SOFTWARE, the name\hich\af31506\dbch\af31505\loch\f31506
of LICENSEE, the license type, the agreed-upon number of AUTHORIZED USERS, an upper limit for the licensed SOFTWARE version or an expiration date, and a hash-code. The combination of these values allows LICENSEE to unlock the full functionality of a genu
\hich\af31506\dbch\af31505\loch\f31506 i\hich\af31506\dbch\af31505\loch\f31506 ne copy of the SOFTWARE for intended commercial use.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 2. GRANT
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 The SOFTWARE is handed over to LICENSEE for its intended use. The scope of the intended use permitted by this AGREEMENT depends on whether a SOFTWARE Non-Commercial License or a SOFTWARE Comm
\hich\af31506\dbch\af31505\loch\f31506
ercial License is agreed-upon. If a SOFTWARE Non-Commercial License is agreed-upon LICENSEE is allowed to use the SOFTWARE solely for non-commercial purposes. A purpose is non-commercial only if it is in no manner primarily intended for or directed toward
\hich\af31506\dbch\af31505\loch\f31506 \hich\af31506\dbch\af31505\loch\f31506 commercial advantage or private monetary compensation.
\par \hich\af31506\dbch\af31505\loch\f31506 Examples of non-commercial purposes:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls24\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 you are using the SOFTWARE to work on open-source projects for free;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 you are a student and you are using the SOFTWARE for your academic projects;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 you are usin\hich\af31506\dbch\af31505\loch\f31506
g the SOFTWARE in your spare time to work on the desktop application of your local football club for free.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 Examples of commercial purposes, i.e. when you will need a Commercial License:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls25\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 you are using the SOFTWARE to work on open-source as well as on your\hich\af31506\dbch\af31505\loch\f31506 company's projects;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 you are a student and you are using the SOFTWARE for your work as a freelancer;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 you are using the SOFTWARE in your spare time to work on the desktop application of your local football club and you are getting paid for that.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 Subject to the terms of this AGREEMENT, LICENSOR hereby grants LICENSEE}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9004326 \hich\af31506\dbch\af31505\loch\f31506
a worldwide, non-transferable}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 , non-exclusive, non-sub-licensable, limited LICENSE that allows:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls26\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 LICENSEE to distribute (an) ACTIVATION KEY(s) to A\hich\af31506\dbch\af31505\loch\f31506 UTHORIZED USER(s);}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506
LICENSEE and AUTHORIZED USER(s) to install the SOFTWARE on any number of computer PCs where potential use of the full functionality of the SOFTWARE is restricted exclusively to AUTHORIZED USER(s);}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 LICENSEE and AUTHORIZED USER(s) to u\hich\af31506\dbch\af31505\loch\f31506
se the command-line interface of the SOFTWARE without unlocking the full functionality of the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 LICENSEE and AUTHORIZED USER(s) to use an ACTIVATION KEY to unlock the full functionality of the SOFTWARE for intended commercial use;}{\rtlch\fcs1
\af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 LICENSEE and \hich\af31506\dbch\af31505\loch\f31506
AUTHORIZED USER(s) to truthfully declare their intend to solely use the SOFTWARE for non-commercial purposes to unlock the full functionality of the SOFTWARE for intended non-commercial use;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 AUTHORIZED USER(s) to apply any version of the unlocked SOFTWAR\hich\af31506\dbch\af31505\loch\f31506
E that specifies a version number less than or equal to the version number denoted in the ACTIVATION KEY to the permitted intended use. If the ACTIVATION KEY does not denote a version number, the AUTHORIZED USER is allowed to use any version of the SOFTWA
\hich\af31506\dbch\af31505\loch\f31506 R\hich\af31506\dbch\af31505\loch\f31506 E for a period of time that is limited by the expiration date specified in the ACTIVATION KEY;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 LICENSEE to make a copy of the SOFTWARE for archival purposes provided the copy contains all of the proprietary notices of the SOFTWARE.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 3. RESTRICTIONS
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 LIC\hich\af31506\dbch\af31505\loch\f31506 ENSEE and AUTHORIZED USER(s) will not, and will have no right to:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 modify, translate, reverse engineer, decompile, disassemble (except to the extent applicable laws specifically prohibit such restriction), create derivative works based on, or otherwise at
\hich\af31506\dbch\af31505\loch\f31506 tempt to discover the source code or underlying ideas or algorithms of the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 sell, rent, lease, distribute, or otherwise transfer rights to the SOFTWARE without prior written consent from LICENSOR;}{\rtlch\fcs1 \af31507
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 remove any proprietary notices or labels from \hich\af31506\dbch\af31505\loch\f31506 the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 distribute, use, or transfer an ACTIVATION KEY(s) that has been superseded by an ACTIVATION KEY(s) provided with software maintenance.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 4. CONFIDENTIALITY
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 The SOFTWARE contains a feature that will automatically connect to LICENSOR's serve\hich\af31506\dbch\af31505\loch\f31506
rs to check for a new program version. The data sent in this process contains NO POTENTIALLY SENSITIVE INFORMATION. The user can opt-out from this feature.
\par \hich\af31506\dbch\af31505\loch\f31506 Unless a valid non-disclosure agreement exists between the Parties, in which case the terms of that \hich\af31506\dbch\af31505\loch\f31506
non-disclosure agreement shall apply, the following terms shall: Except as necessary for its performance under the AGREEMENT or required by law, LICENSOR shall not disclose to anyone any information furnished by LICENSEE that is marked as confidential or
\hich\af31506\dbch\af31505\loch\f31506 p\hich\af31506\dbch\af31505\loch\f31506 roprietary.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 5. TITLE AND COPYRIGHT
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506
Title, ownership rights, intellectual property rights, and copyright to the SOFTWARE, and any copies or portions thereof, shall remain in LICENSOR. The SOFTWARE is protected by European copyright directives, Austrian c
\hich\af31506\dbch\af31505\loch\f31506 opyright laws as well as United States copyright laws and international treaty provisions.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 6. DISCLAIMER OF WARRANTY
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506
THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND. LICENSOR HEREBY DISCLAIMS ALL EXPRESS OR IMPLIED WARRANTIES, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS DISCLAIMER
\hich\af31506\dbch\af31505\loch\f31506 O\hich\af31506\dbch\af31505\loch\f31506
F WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS AGREEMENT. SOME U.S. STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE. LICENSEE MAY HAVE OTHER LEGAL RIGHTS THAT VARY FROM STATE TO STATE OR BY JURISDICTIO
\hich\af31506\dbch\af31505\loch\f31506 N.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 7. LIMITATION OF LIABILITY
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506
LICENSEE ASSUMES THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. LICENSOR ASSUMES NO LIABILITY FOR THE COST OF ANY SERVICE OR REPAIR IF THE SOFTWARE IS DEFECTIVE. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL
\hich\af31506\dbch\af31505\loch\f31506
THEORY, TORT, CONTRACT, STRICT LIABILITY, OR OTHERWISE, SHALL LICENSOR, OR ITS LICENSORS, SUPPLIERS OR RESELLERS, BE LIABLE TO LICENSEE OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
\hich\af31506\dbch\af31505\loch\f31506 \hich\af31506\dbch\af31505\loch\f31506
LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES. IN NO EVENT WILL LICENSOR BE LIABLE FOR ANY DAMAGES IN EXCESS OF THE MONEY PAID FOR THE SOFTWARE, EV
\hich\af31506\dbch\af31505\loch\f31506 E\hich\af31506\dbch\af31505\loch\f31506
N IF LICENSOR SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION.
\hich\af31506\dbch\af31505\loch\f31506 F\hich\af31506\dbch\af31505\loch\f31506 URTHERMORE, SOME U.S. STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT APPLY TO LICENSEE.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 8. TERMINATION
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 The LICENSE granted herein shall be perpetual. If LICENSEE fails to \hich\af31506\dbch\af31505\loch\f31506
comply with any of the terms of this AGREEMENT, this AGREEMENT and the rights granted herein will terminate immediately. As such the Non-Commercial LICENSE terminates automatically if the usage of SOFTWARE becomes commercial. LICENSOR may, at its sole dis
\hich\af31506\dbch\af31505\loch\f31506 c\hich\af31506\dbch\af31505\loch\f31506 retion and at any time, terminate this AGREEMENT. On termination, LICENSEE must cease using and destroy all copies of the SOFTWARE.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 9. EXPORT CONTROLS
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 LICENSEE shall comply with all export laws, restrictions and regulations of the United States, the Dir\hich\af31506\dbch\af31505\loch\f31506 \hich\f31506
ective 2009/428/EC of the European Parliament and of the Council and the Austrian Au\'df\loch\f31506
enwirtschaftsgesetz 2011, BGBl I No. 26/2011. LICENSEE shall not export, re-export or otherwise transfer the SOFTWARE to any country for which the United States or the Eu\hich\af31506\dbch\af31505\loch\f31506 r\hich\af31506\dbch\af31505\loch\f31506
opean Union or Austria maintains an embargo, or to any person or entity on the U.S. Department of Treasury List of Specially Designated Nationals or the U.S. Department of Commerce Denied Persons List or Entity List. LICENSEE represents and warrants that
\hich\af31506\dbch\af31505\loch\f31506 L\hich\af31506\dbch\af31505\loch\f31506 ICENSEE is not located in, under the control of, or a national or resident of any restricted country or on any such list.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 10. YOUR RESPONSIBILITIES.
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 LICENSEE agrees to immediately notify LICENSOR in writing of any misuse, misappropriation or unauthori\hich\af31506\dbch\af31505\loch\f31506
zed use, disclosure, display or copying of the SOFTWARE that may come to LICENSEE's attention. In addition, LICENSEE agrees to defend, indemnify and hold LICENSOR, its suppliers and any of its directors, officers, employees or affiliates of any of the for
\hich\af31506\dbch\af31505\loch\f31506 e\hich\af31506\dbch\af31505\loch\f31506 going harmless from any and all claims resulting from or arising out of LICENSEE's use of the Software or breach of this AGREEMENT.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 11. THIRD PARTY CREDITS
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 Portions of the SOFTWARE utilize or include third party software and other copyrighted materials.\hich\af31506\dbch\af31505\loch\f31506 \hich\f31506
Credits, licensing terms, and disclaimers for such materials are contained in the installation directory for the SOFTWARE, and are accessible via the \'93\loch\f31506 \hich\f31506 3rd Party Licenses\'94\loch\f31506
dialog for the SOFTWARE. LICENSEE agrees that use of such copyrighted materials is \hich\af31506\dbch\af31505\loch\f31506 g\hich\af31506\dbch\af31505\loch\f31506 overned by their respective terms.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 12. SEVERABILITY
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 If a particular term of this AGREEMENT is not enforceable, the unenforceability of that term will not affect any other terms of this AGREEMENT.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 13. HEADINGS
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 The section headings used herein are for convenience only and do not affect the interpretation of this AGREEMENT.
\par
\par \hich\af31506\dbch\af31505\loch\f31506
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 14. NO WAIVER
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 LICENSOR's failure to enforce or exercise any part of this AGREEMENT is not a waiver of that part.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 15. ENTIRE AGREEMENT
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 T\hich\af31506\dbch\af31505\loch\f31506
his AGREEMENT represents the complete agreement concerning this SOFTWARE between the PARTIES and supersedes all prior agreements and representations between them. It may be amended only in writing executed by both PARTIES. The inclusion of LICENSEE's own
\hich\af31506\dbch\af31505\loch\f31506 t\hich\af31506\dbch\af31505\loch\f31506
erms and conditions is contradicted, unless their validity has explicitly been agreed to. LICENSOR reserves the exclusive right to update this AGREEMENT for new SOFTWARE versions. By using these new SOFTWARE versions the new AGREEMENT supersedes any older
\hich\af31506\dbch\af31505\loch\f31506 \hich\af31506\dbch\af31505\loch\f31506
one. Any action arising out of or relating to this AGREEMENT may be brought exclusively in Salzburg, Austria, and the PARTIES irrevocably consent to the jurisdiction of such courts and venue in Salzburg, Austria.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid10582864 \hich\af31506\dbch\af31505\loch\f31506 CONTACT
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 If you have questions regarding \hich\af31506\dbch\af31505\loch\f31506 this AGREEMENT, contact:
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 Coati Software KG
\par \hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 Jakob-Haringer-Stra\'df\loch\f31506 e 1/127
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 5020 Salzburg
\par \hich\af31506\dbch\af31505\loch\f31506 Austria
\par
\par \hich\af31506\dbch\af31505\loch\f31506 support@sourcetrail.com}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5338747\charrsid2585574
\par }{\*\themedata 504b030414000600080000002100828abc13fa0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb6ac3301045f785fe83d0b6d8
72ba28a5d8cea249777d2cd20f18e4b12d6a8f843409c9df77ecb850ba082d74231062ce997b55ae8fe3a00e1893f354e9555e6885647de3a8abf4fbee29bbd7
2a3150038327acf409935ed7d757e5ee14302999a654e99e393c18936c8f23a4dc072479697d1c81e51a3b13c07e4087e6b628ee8cf5c4489cf1c4d075f92a0b
44d7a07a83c82f308ac7b0a0f0fbf90c2480980b58abc733615aa2d210c2e02cb04430076a7ee833dfb6ce62e3ed7e14693e8317d8cd0433bf5c60f53fea2fe7
065bd80facb647e9e25c7fc421fd2ddb526b2e9373fed4bb902e182e97b7b461e6bfad3f010000ffff0300504b030414000600080000002100a5d6a7e7c00000
00360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4fc7060abb08
84a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b63095120f88d94fbc
52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462a1a82fe353
bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f7468656d652f7468
656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b4b0d592c9c
070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b4757e8d3f7
29e245eb2b260a0238fd010000ffff0300504b030414000600080000002100e35a492797060000551b0000160000007468656d652f7468656d652f7468656d65
312e786d6cec594d6f1b4518be23f11f467b6f6327761a4775aad8b11b6852a2d82dea71bc3bde9d66766735334eea1b6a8f484888823850891b0704546a252e
e5d7048aa048fd0bbc33b3bbde89d72469235a417d48bcb3cfbcdf5f33be7aed5eccd0211192f2a4edd52fd73c44129f073409dbdead61ffd29a87a4c2498019
4f48db9b12e95ddb78ffbdab785d45242608f627721db7bd48a9747d6949fab08ce5659e9204de8db988b18247112e05021f01dd982d2dd76aab4b31a6898712
1c03d91d2ca894f8d21691344cbc8d9c7c8f018f4449bde03331d0c489bbc7808383ba86c8a9ec32810e316b7bc02ae04743724f798861a9e045dbab998fb7b4
717509af679b985ab0b7b4af6f3ed9be6c4370b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83aa569632cd467faddec9699640f6
eb3ced6ead596bb8f812fd9539995b9d4ea7d9ca64b1440dc87e6dcce1d76aab8dcd65076f4016df9cc3373a9bddeeaa8337208b5f9dc3f7afb4561b2ede8022
46938339b47668bf9f512f2063ceb62be16b005fab65f0190aa2a1082fcd62cc13b530d8627c978b3e203492614513a4a62919631f22b98be391a05873c0eb04
97ded8255fce2d696648fa82a6aaed7d9862c88a19bd97cf7e78f9ec093abefff4f8fecfc70f1e1cdfffc91272766de3242cef7af1dde77f3dfa04fdf9e4db17
0fbfacc6cb32feb71f3ffdf5972faa81903f33719e7ff5f8f7a78f9f7ffdd91fdf3fac806f0a3c2ac387342612dd2447689fc7a098b18a2b391989f3ed184698
96776c26a1c409d65c2ae8f754e4a06f4e31cbbce3c8d121ae056f0ba81f55c0eb93bb8ec083484c14ade07c238a1de02ee7acc345a5156e685e25330f274958
cd5c4ccab87d8c0fab787771e2f8b73749a172e661e928de8d8823e61ec389c221498842fa1d3f20a442bb3b943a76dda5bee0928f15ba435107d34a930ce9c8
89a6d9a66d1a835fa6553a83bf1ddbecde461dceaab4de22872e12b202b30ae187843966bc8e270ac755248738666583ef6015550939980abf8ceb49059e0e09
e3a81710686d15527c2440df92d36f602859956edf65d3d8450a450faa68ee60cecbc82d7ed08d709c5661073489cad80fe4018428467b5c55c177b99b21fa19
fc809385eebe4d89e3eed3abc12d1a3a22cd0244bf99086d45a8d54e058e69f24fe59851a8c7d6fa17578ea1003effe651854fdfd642bc093da92a13b64f94df
45b89345b7cb4540dffe9abb8527c91e81309f6f3cef4aeebb92ebfde74beea27c3e6ba19dd55628bb7a6eb053b19991e3c523f298323650534676a499922534
8aa00f8b7aa3392292e2cc9446f0352bec0e2e14d8ec4182ab8fa98a06114e61c2ae7b9a482833d2a144299770b433cb95b4351ea674650f864d7d64b0054162
b5cb03bbbca297f3934141c6b49bd09c3f73462b9ac05999ad5cc98882daafc2acae853a33b7ba11cdd43a875ba13238715e35582cac09130882b905acbc0a87
74cd1a4e26989140dbdd36dfdc2dc60b17e92219e180643ed27acffba86e9c94c78ab90c80d8a9f0913ee69d62b512b79626fb1adccee2a432bbc60276b9f75e
c74b7904cfbca413f7443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc3a116bec629785deaa10fb3106e877c256cd89f9acc26cb67de6ce58ab94950878b0a
6bf739859d3a900aa9b6b08c6c6898575908b04473b2f22f37c1ac17a5808df4579062650d82e18d490176745d4bc663e2abb2b34b2bda76f6312ba57ca28818
44c1111ab189d8c7e07e1daaa04f4025dc4d988aa01fe0264d5bdbbc728b739674e5fb2b83b3eb98a511cecaad4ed13c932ddce4712183792a8907ba55ca6e94
3bbf2a26e52f48957218ffcf54d1fd04ae0a5602ed011fee7205463a5fdb1e172ae25085d288fa7d019383a91d102d701b0baf21a8e046d9fc17e450ffb73967
6998b486139fdaa7211214fa918a04217b50964cf49d42ac9ef52e4b9265844c4495c495a9157b440e091bea1ab8aa7bbb87220875534db232607027e3cf7dce
326814ea21a79c6f4e0d297aafcd817f7bf2b1c90c4ab975d80c34b9fd0b112bbaaadd6fb6e7bdb7ac887e311bb31a795600b3522b686569ff8a229cb3d5da8a
35a7f17233170ebc38af312c1603510a173e48ff81fe4785cf880963dd50877c1f6a2b829f1a3431081b88ea4b76f040ba40dac5110c4e76d1069326654d9b8d
4eda6a79b3bee049b7e07bc2d85ab2b3f8fb9cc62e8633979d938b1769ecccc28eadedda425383674fa6282c8df3938c718cf95dabfcc3131fdd05476fc105ff
84296982097e55121846cf81c903487ecbd16cddf81b0000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f
7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f
2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e31
98720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d98505
28a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100828abc13fa0000001c02000013000000000000000000000000
00000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b0000000000000000000000
00002b0100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c000000000000000000000000001402000074
68656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d0014000600080000002100e35a492797060000551b0000160000000000000000
0000000000d10200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000
0000000000000000009c0900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000970a00000000}
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;
\lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7;
\lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdpriority1 \lsdlocked0 Default Paragraph Font;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000
4d73786d6c322e534158584d4c5265616465722e352e3000000000000000000000060000
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffffec69d9888b8b3d4c859eaf6cd158be0f000000000000000000000000100f
95b7aacdd301feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000105000000000000}}
-132
View File
@@ -1,132 +0,0 @@
Sourcetrail
Software License Agreement (“AGREEMENT”)
Last date of change: 2018-04-06
BY INSTALLING OR USING THIS SOFTWARE, YOU ARE BECOMING A PARTY TO, AND ARE CONSENTING TO BE BOUND BY, THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, DO NOT INSTALL OR USE THIS SOFTWARE.
1. DEFINITIONS
"SOFTWARE" means:
* a version of the cross-platform source code explorer known as Sourcetrail in executable form. The version is defined by the two leading numbers of the version string (e.g. the version of Sourcetrail 2017.1.x is version 2017.1); and
* documentation for that version of Sourcetrail; and
* minor updates included in software maintenance which are indicated by an increase in the digits that follow the first two leading numbers of the version string (e.g. the update from Sourcetrail 2017.1.0 to Sourcetrail 2017.1.1 is a minor update).
"LICENSE" means:
* the permission to use and distribute the SOFTWARE as defined by the following sections of this document. The permissions granted especially depend on whether a SOFTWARE Non-Commercial License or a SOFTWARE Commercial License is agreed-upon.
"LICENSOR" means:
* Coati Software KG, having a place of business at Jakob-Haringer-Straße 1/127, 5020 Salzburg, Austria.
"LICENSEE" means:
* the individual who purchased a LICENSE(s) for the SOFTWARE;
* the individual who was granted a LICENSE(s) for the SOFTWARE by LICENSOR;
* the company, corporation, organization, or legal entity that purchased a LICENSE(s) for the SOFTWARE;
* the company, corporation, organization, or legal entity that was granted a LICENSE(s) for the SOFTWARE by LICENSOR.
"PARTIES" means:
* both LICENSOR and LICENSEE collectively.
"AUTHORIZED USER" means:
* the individual who is LICENSEE of the SOFTWARE. This individual is the only AUTHORIZED USER;
* an employee who is nameable on demand and might at any time use the SOFTWARE, of LICENSEE. Every AUTHORIZED USER known by name can be replaced by another user known by name only once in a month. From that time on, said first user must not use the SOFTWARE anymore and said second user may start to use the SOFTWARE. At no time may the number of the users known by name exceed the agreed-upon number of AUTHORIZED USER(s).
"ACTIVATION KEY" means:
* a document issued by LICENSOR that defines all parameters of the SOFTWARE Commercial License. Said document specifies the name of the licensed SOFTWARE, the name of LICENSEE, the license type, the agreed-upon number of AUTHORIZED USERS, an upper limit for the licensed SOFTWARE version or an expiration date, and a hash-code. The combination of these values allows LICENSEE to unlock the full functionality of a genuine copy of the SOFTWARE for intended commercial use.
2. GRANT
The SOFTWARE is handed over to LICENSEE for its intended use. The scope of the intended use permitted by this AGREEMENT depends on whether a SOFTWARE Non-Commercial License or a SOFTWARE Commercial License is agreed-upon. If a SOFTWARE Non-Commercial License is agreed-upon LICENSEE is allowed to use the SOFTWARE solely for non-commercial purposes. A purpose is non-commercial only if it is in no manner primarily intended for or directed toward commercial advantage or private monetary compensation.
Examples of non-commercial purposes:
* you are using the SOFTWARE to work on open-source projects for free;
* you are a student and you are using the SOFTWARE for your academic projects;
* you are using the SOFTWARE in your spare time to work on the desktop application of your local football club for free.
Examples of commercial purposes, i.e. when you will need a Commercial License:
* you are using the SOFTWARE to work on open-source as well as on your company's projects;
* you are a student and you are using the SOFTWARE for your work as a freelancer;
* you are using the SOFTWARE in your spare time to work on the desktop application of your local football club and you are getting paid for that.
Subject to the terms of this AGREEMENT, LICENSOR hereby grants LICENSEE a worldwide, non-transferable, non-exclusive, non-sub-licensable, limited LICENSE that allows:
* LICENSEE to distribute (an) ACTIVATION KEY(s) to AUTHORIZED USER(s);
* LICENSEE and AUTHORIZED USER(s) to install the SOFTWARE on any number of computer PCs where potential use of the full functionality of the SOFTWARE is restricted exclusively to AUTHORIZED USER(s);
* LICENSEE and AUTHORIZED USER(s) to use the command-line interface of the SOFTWARE without unlocking the full functionality of the SOFTWARE;
* LICENSEE and AUTHORIZED USER(s) to use an ACTIVATION KEY to unlock the full functionality of the SOFTWARE for intended commercial use;
* LICENSEE and AUTHORIZED USER(s) to truthfully declare their intend to solely use the SOFTWARE for non-commercial purposes to unlock the full functionality of the SOFTWARE for intended non-commercial use;
* AUTHORIZED USER(s) to apply any version of the unlocked SOFTWARE that specifies a version number less than or equal to the version number denoted in the ACTIVATION KEY to the permitted intended use. If the ACTIVATION KEY does not denote a version number, the AUTHORIZED USER is allowed to use any version of the SOFTWARE for a period of time that is limited by the expiration date specified in the ACTIVATION KEY;
* LICENSEE to make a copy of the SOFTWARE for archival purposes provided the copy contains all of the proprietary notices of the SOFTWARE.
3. RESTRICTIONS
LICENSEE and AUTHORIZED USER(s) will not, and will have no right to:
* modify, translate, reverse engineer, decompile, disassemble (except to the extent applicable laws specifically prohibit such restriction), create derivative works based on, or otherwise attempt to discover the source code or underlying ideas or algorithms of the SOFTWARE;
* sell, rent, lease, distribute, or otherwise transfer rights to the SOFTWARE without prior written consent from LICENSOR;
* remove any proprietary notices or labels from the SOFTWARE;
* distribute, use, or transfer an ACTIVATION KEY(s) that has been superseded by an ACTIVATION KEY(s) provided with software maintenance.
4. CONFIDENTIALITY
The SOFTWARE contains a feature that will automatically connect to LICENSOR's servers to check for a new program version. The data sent in this process contains NO POTENTIALLY SENSITIVE INFORMATION. The user can opt-out from this feature.
Unless a valid non-disclosure agreement exists between the Parties, in which case the terms of that non-disclosure agreement shall apply, the following terms shall: Except as necessary for its performance under the AGREEMENT or required by law, LICENSOR shall not disclose to anyone any information furnished by LICENSEE that is marked as confidential or proprietary.
5. TITLE AND COPYRIGHT
Title, ownership rights, intellectual property rights, and copyright to the SOFTWARE, and any copies or portions thereof, shall remain in LICENSOR. The SOFTWARE is protected by European copyright directives, Austrian copyright laws as well as United States copyright laws and international treaty provisions.
6. DISCLAIMER OF WARRANTY
THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND. LICENSOR HEREBY DISCLAIMS ALL EXPRESS OR IMPLIED WARRANTIES, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS AGREEMENT. SOME U.S. STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE. LICENSEE MAY HAVE OTHER LEGAL RIGHTS THAT VARY FROM STATE TO STATE OR BY JURISDICTION.
7. LIMITATION OF LIABILITY
LICENSEE ASSUMES THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. LICENSOR ASSUMES NO LIABILITY FOR THE COST OF ANY SERVICE OR REPAIR IF THE SOFTWARE IS DEFECTIVE. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, STRICT LIABILITY, OR OTHERWISE, SHALL LICENSOR, OR ITS LICENSORS, SUPPLIERS OR RESELLERS, BE LIABLE TO LICENSEE OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES. IN NO EVENT WILL LICENSOR BE LIABLE FOR ANY DAMAGES IN EXCESS OF THE MONEY PAID FOR THE SOFTWARE, EVEN IF LICENSOR SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. FURTHERMORE, SOME U.S. STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT APPLY TO LICENSEE.
8. TERMINATION
The LICENSE granted herein shall be perpetual. If LICENSEE fails to comply with any of the terms of this AGREEMENT, this AGREEMENT and the rights granted herein will terminate immediately. As such the Non-Commercial LICENSE terminates automatically if the usage of SOFTWARE becomes commercial. LICENSOR may, at its sole discretion and at any time, terminate this AGREEMENT. On termination, LICENSEE must cease using and destroy all copies of the SOFTWARE.
9. EXPORT CONTROLS
LICENSEE shall comply with all export laws, restrictions and regulations of the United States, the Directive 2009/428/EC of the European Parliament and of the Council and the Austrian Außenwirtschaftsgesetz 2011, BGBl I No. 26/2011. LICENSEE shall not export, re-export or otherwise transfer the SOFTWARE to any country for which the United States or the European Union or Austria maintains an embargo, or to any person or entity on the U.S. Department of Treasury List of Specially Designated Nationals or the U.S. Department of Commerce Denied Persons List or Entity List. LICENSEE represents and warrants that LICENSEE is not located in, under the control of, or a national or resident of any restricted country or on any such list.
10. YOUR RESPONSIBILITIES.
LICENSEE agrees to immediately notify LICENSOR in writing of any misuse, misappropriation or unauthorized use, disclosure, display or copying of the SOFTWARE that may come to LICENSEE's attention. In addition, LICENSEE agrees to defend, indemnify and hold LICENSOR, its suppliers and any of its directors, officers, employees or affiliates of any of the foregoing harmless from any and all claims resulting from or arising out of LICENSEE's use of the Software or breach of this AGREEMENT.
11. THIRD PARTY CREDITS
Portions of the SOFTWARE utilize or include third party software and other copyrighted materials. Credits, licensing terms, and disclaimers for such materials are contained in the installation directory for the SOFTWARE, and are accessible via the “3rd Party Licenses” dialog for the SOFTWARE. LICENSEE agrees that use of such copyrighted materials is governed by their respective terms.
12. SEVERABILITY
If a particular term of this AGREEMENT is not enforceable, the unenforceability of that term will not affect any other terms of this AGREEMENT.
13. HEADINGS
The section headings used herein are for convenience only and do not affect the interpretation of this AGREEMENT.
14. NO WAIVER
LICENSOR's failure to enforce or exercise any part of this AGREEMENT is not a waiver of that part.
15. ENTIRE AGREEMENT
This AGREEMENT represents the complete agreement concerning this SOFTWARE between the PARTIES and supersedes all prior agreements and representations between them. It may be amended only in writing executed by both PARTIES. The inclusion of LICENSEE's own terms and conditions is contradicted, unless their validity has explicitly been agreed to. LICENSOR reserves the exclusive right to update this AGREEMENT for new SOFTWARE versions. By using these new SOFTWARE versions the new AGREEMENT supersedes any older one. Any action arising out of or relating to this AGREEMENT may be brought exclusively in Salzburg, Austria, and the PARTIES irrevocably consent to the jurisdiction of such courts and venue in Salzburg, Austria.
CONTACT
If you have questions regarding this AGREEMENT, contact:
Coati Software KG
Jakob-Haringer-Straße 1/127
5020 Salzburg
Austria
support@sourcetrail.com
Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

@@ -2,7 +2,7 @@ QTableWidget {
font-family: "<setting:font_name>";
color: black;
margin-top: 6px;
background-color: #dadada;
background-color: white;
alternate-background-color: #f6f6f6;
selection-background-color: #227abf;
selection-color: white;
-30
View File
@@ -1,30 +0,0 @@
#title {
margin-left: 265px;
}
#licenseOption {
font-weight: bold;
}
#licenseField {
font-family: "<setting:font_name>";
font-size: 11px;
height: 200px;
padding: 5px;
width: 470px;
}
#licenseField:disabled {
background: #F5F5F5;
}
#licenseError {
color: red;
}
QTextEdit {
background-color: rgba(255, 255, 255, 200);
border-radius: 10px;
border: 1px solid lightgrey;
color: black;
}
+4 -1
View File
@@ -1,7 +1,6 @@
QToolTip {
background-color: #E0E0E0;
color: black;
font-size: <setting:font_size>px;
}
QPushButton {
@@ -13,6 +12,10 @@ QMainWindow::separator {
width: 1px;
}
QToolBar {
border: none;
}
QDockWidget {
color: <color:window/dock/text>;
font-size: 10pt;
@@ -1,11 +1,13 @@
#screen_search_bar {
border: none;
padding: 0;
}
#screen_search_box {
padding-left: 10;
border-top: 1px solid #BEBEBE;
background: <color:screen_search/background>;
margin: 0;
padding-left: 10;
}
#search_box {
+4 -4
View File
@@ -11,7 +11,7 @@
background-color: transparent;
}
QWidget#search_box_container {
#search_box_container {
background: <color:search/field/background>;
border: 2px solid <color:search/field/border>;
border-bottom-left-radius: 12px;
@@ -20,19 +20,19 @@ QWidget#search_box_container {
margin-right: 2px;
}
QLineEdit#search_box {
#search_box {
background-color: transparent;
border: none;
color: <color:search/field/text>;
selection-background-color: <color:search/field/highlight>;
}
QWidget#search_box_highlight {
#search_box_highlight {
background-color: <color:search/field/highlight>;
border: none;
}
QAbstractItemView#search_box_popup {
#search_box_popup {
background-color: <color:search/popup/background>;
border: 1px solid <color:search/popup/line>;
color: <color:search/popup/text>;
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

+29 -21
View File
@@ -1,14 +1,18 @@
#projectButton {
#projectButton, #infoButton {
background: white;
border: 1px solid lightgray;
border-radius: 8px;
color: black;
padding: 3px 5px 2px;
padding: 4px 5px 3px;
font-size: 14px;
min-width: 6em;
}
#projectButton:hover {
#infoButton {
padding: 4px 15px 3px;
}
#projectButton:hover, #infoButton:hover {
color: white;
background: #2D3F85;
}
@@ -29,17 +33,37 @@
border-radius: 10px;
}
#recentLabel {
#titleLabel {
color: black;
font-size: 16px;
font-weight: bold;
margin-left: 6px;
}
#versionLabel {
#textLabel {
color: black;
font-size: 12px;
}
#boldLabel {
color: black;
font-size: 12px;
font-weight: bold;
min-width: 200px;
}
#textField {
background: white;
border: 1px solid lightgray;
border-radius: 12px;
color: black;
font-size: 12px;
margin-top: 5px;
min-width: 180px;
}
#textField[important=true] {
border: 2px solid #007ac3;
}
#updateButton, #upgradeButton {
@@ -57,19 +81,3 @@
color: black;
text-decoration: none;
}
#licenseHeaderLabel {
color: black;
font-size: 12px;
font-weight: bold;
}
#licenseLabel {
color: black;
font-size: 12px;
}
#welcomeLabel {
color: black;
font-size: 12px;
}
+19 -1
View File
@@ -15,7 +15,7 @@ QTabBar::tab {
border: 1px solid <color:tab/bar/border>;
border-top-left-radius: 7px;
border-top-right-radius: 7px;
color: <color:tab/bar/button/text>;
color: <color:tab/bar/button/text/normal>;
font-size: <setting:font_size>px;
height: <setting:font_size+8>;
margin-left: 3px;
@@ -25,11 +25,13 @@ QTabBar::tab {
QTabBar::tab:hover {
background-color: <color:tab/bar/button/background/hover>;
color: <color:tab/bar/button/text/hover>;
}
QTabBar::tab:selected, QTabBar::tab:pressed {
background-color: <color:tab/bar/button/background/press>;
border-bottom: 1px solid <color:tab/bar/button/background/press>;
color: <color:tab/bar/button/text/press>;
}
QTabWidget #tab_content {
@@ -50,6 +52,10 @@ QTableView {
font-size: <setting:font_size>px;
}
QTableView:disabled {
color: <color:table/text/disabled>;
}
QTableView::item {
border-left: 1px solid <color:table/table>;
}
@@ -92,6 +98,10 @@ QHeaderView::section:vertical {
padding: 2px 5px 1px;
}
QHeaderView::section:disabled {
color: <color:table/text/disabled>;
}
QTableView QTableCornerButton::section {
background-color: <color:table/background>;
border-bottom: 1px solid <color:table/table>;
@@ -103,6 +113,14 @@ QCheckBox {
font-size: <setting:font_size>px;
}
QLabel {
color: <color:table/text/normal>;
}
QLabel:disabled {
color: <color:table/text/disabled>;
}
#help_button {
background: transparent;
border: none;
Binary file not shown.

After

Width:  |  Height:  |  Size: 881 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

+81
View File
@@ -0,0 +1,81 @@
QTabBar {
background-color: <color:tab/bar/background>;
border-bottom: 1px solid <color:tab/bar/border>;
font-size: <setting:font_size>px;
padding-left: 4px;
min-height: 30px;
}
QTabBar::tab {
background-color: <color:tab/bar/button/background/normal>;
border: 1px solid <color:tab/bar/border>;
border-top-left-radius: 11px;
border-top-right-radius: 11px;
color: <color:tab/bar/button/text/normal>;
min-height: 25px;
margin-left: 3px;
margin-top: 4px;
}
QTabBar::tab:hover {
background-color: <color:tab/bar/button/background/hover>;
color: <color:tab/bar/button/text/hover>;
}
QTabBar::tab:selected, QTabBar::tab:pressed {
background-color: <color:tab/bar/button/background/press>;
border-bottom: 1px solid <color:tab/bar/button/background/press>;
color: <color:tab/bar/button/text/press>;
}
#side_area {
background-color: <color:tab/bar/background>;
border-bottom: 1px solid <color:tab/bar/border>;
}
#type_circle {
background-color: <color:tab/bar/button/background/hover>;
border: 1px solid <color:tab/bar/button/border/normal>;
border-radius: 6px;
margin: 0;
height: 10px;
width: 10px;
margin-top: 3px;
margin-left: 6px;
}
#type_circle[selected=true] {
border: 1px solid <color:tab/bar/button/border/press>;
}
#close_button {
background-color: transparent;
border: 1px solid transparent;
border-radius: 8px;
color: <color:tab/bar/button/text/normal>;
font-size: 12px;
margin: 0;
height: 14px;
width: 14px;
margin-top: 5px;
margin-right: 0px;
}
#close_button:hover {
border: 1px solid <color:tab/bar/border>;
}
#add_button {
background-color: <color:tab/bar/button/background/hover>;
border: 1px solid <color:tab/bar/border>;
border-radius: 11px;
color: <color:tab/bar/button/text/normal>;
margin: 5px 0 3px 0;
height: 20px;
width: 20px;
}
#add_button:hover {
background-color: <color:tab/bar/button/background/press>;
color: <color:tab/bar/button/text/press>;
}
@@ -24,5 +24,5 @@
background-color: <color:code/snippet/background>;
border-bottom: 1px solid <color:code/file/background>;
padding: 3px;
color: <color:code/snippet/syntax/normal>;
color: <color:code/snippet/syntax/text>;
}
+7 -6
View File
@@ -1,16 +1,16 @@
* {
#window * {
font-size: 12px;
}
QLabel, QCheckBox {
#window QLabel, #window QCheckBox {
color: black;
}
QCheckBox::indicator {
#window QCheckBox::indicator {
color: black;
}
QCheckBox:disabled {
#window QCheckBox:disabled {
color: gray;
}
@@ -134,7 +134,8 @@ QCheckBox:disabled {
#menuButton {
background: white;
border: none;
border: 2px solid #CFD2E0;
border-right: none;
border-radius: 8px;
border-bottom-right-radius: 0px;
border-top-right-radius: 0px;
@@ -164,7 +165,7 @@ QCheckBox:disabled {
font-size: 12px;
width: 7em;
height: 8em;
margin-top: 10px;
margin: 5px;
}
#sourceGroupButton:hover, #sourceGroupButton:checked {
+21 -15
View File
@@ -1,3 +1,11 @@
def copyDependencies(source, destination) {
copy {
into destination
from source
eachFile { println "copying file \"" + it.file.name + "\" to \"" + destination + "\"" }
}
}
allprojects { pp ->
task printMainSrcDirs {
doLast {
@@ -28,13 +36,12 @@ allprojects { pp ->
File rootDir = pp.getRootDir()
String destination = project.hasProperty('sourcetrail_lib_path') ? project.property('sourcetrail_lib_path').replace("\"", "") : rootDir.getPath() + rootDir.separator + "lib"
println destination;
if (pp.configurations.hasProperty("compile")) {
copy {
into destination
from pp.configurations.compile
eachFile { println "copying file \"" + it.file.name + "\" to \"" + destination + "\"" }
}
}
if (pp.configurations.hasProperty("compile")) {
copyDependencies(pp.configurations.compile, destination)
}
if (pp.configurations.hasProperty("compileClasspath")) {
copyDependencies(pp.configurations.compileClasspath, destination)
}
}
}
@@ -42,13 +49,12 @@ allprojects { pp ->
doLast {
File rootDir = pp.getRootDir()
String destination = project.hasProperty('sourcetrail_lib_path') ? project.property('sourcetrail_lib_path') : rootDir.getPath() + rootDir.separator + "lib"
if (pp.configurations.hasProperty("testCompile")) {
copy {
into destination
from pp.configurations.testCompile
eachFile { println "copying file \"" + it.file.name + "\" to \"" + destination + "\"" }
}
}
if (pp.configurations.hasProperty("testCompile")) {
copyDependencies(pp.configurations.testCompile, destination)
}
if (pp.configurations.hasProperty("testCompileClasspath")) {
copyDependencies(pp.configurations.testCompileClasspath, destination)
}
}
}
}
}
@@ -0,0 +1,23 @@
Boost Software License - Version 1.0 - August 17th, 2003
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:
The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
@@ -4,7 +4,7 @@ LLVM Release License
University of Illinois/NCSA
Open Source License
Copyright (c) 2007-2016 University of Illinois at Urbana-Champaign.
Copyright (c) 2007-2019 University of Illinois at Urbana-Champaign.
All rights reserved.
Developed by:
@@ -0,0 +1,865 @@
GENERAL
-------
Qt is available under a commercial license with various pricing models and packages that meet a variety of needs. Commercial Qt license keeps your code proprietary where only you can control and monetize on your end products development, user experience and distribution. You also get great perks like additional functionality, productivity enhancing tools, world-class support and a close strategic relationship with The Qt Company to make sure your product and development goals are met.
Qt has been created under the belief of open development and providing freedom and choice to developers. To support that, The Qt Company also licenses Qt under open source licenses, where most of the functionality is available under LGPLv3. It should be noted that the tools as well as some add-on components are available only under GPLv3. In order to preserve the true meaning of open development and uphold the spirit of free software, it is imperative that the rules and regulations of open source licenses are followed. If you use Qt under open-source licenses, you need to make sure that you comply with all the licenses of the components you use.
Qt also contains some 3rd party components that are available under different open-source licenses. Please refer to the documentation for more details on 3rd party licenses used in Qt.
GPLv3 and LGPLv3
----------------
GNU LESSER GENERAL PUBLIC LICENSE
The Qt Toolkit is Copyright (C) 2017 The Qt Company Ltd.
Contact: https://www.qt.io/licensing
You may use, distribute and copy the Qt GUI Toolkit under the terms of
GNU Lesser General Public License version 3, which supplements GNU General
Public License Version 3. Both of the licenses are displayed below.
-------------------------------------------------------------------------
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>.
-------------------------------------------------------------------------
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright © 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.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the
GNU General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort
to ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this
license document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that, taken
together, effectively do not restrict modification of the portions of
the Library contained in the Combined Work and reverse engineering for
debugging such modifications, if you also do each of the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this
license document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of
this License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with
the Library. A suitable mechanism is one that (a) uses at run
time a copy of the Library already present on the user's
computer system, and (b) will operate properly with a modified
version of the Library that is interface-compatible with the
Linked Version.
e) Provide Installation Information, but only if you would
otherwise be required to provide such information under section 6
of the GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the Application
with a modified version of the Linked Version. (If you use option
4d0, the Installation Information must accompany the Minimal
Corresponding Source and Corresponding Application Code. If you
use option 4d1, you must provide the Installation Information in
the manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the Library
side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities, conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of
it is a work based on the Library, and explaining where to find
the accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser 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 Library
as you received it specifies that a certain numbered version of the
GNU Lesser General Public License "or any later version" applies to
it, you have the option of following the terms and conditions either
of that published version or of any later version published by the
Free Software Foundation. If the Library as you received it does not
specify a version number of the GNU Lesser General Public License,
you may choose any version of the GNU Lesser General Public License
ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the Library.
@@ -0,0 +1,170 @@
[
{
"type" : "quotation",
"patterns" : [ "\"(?:[^\"]|\\\\.)*\"", "\'[^\']\'" ],
"priority" : true
},
{
"type" : "comment",
"patterns" : [ "//[^\n]*" ],
"priority" : true
},
{
"type" : "comment",
"range" : {
"start" : "/\\*",
"end" : "\\*/"
},
"priority" : true
},
{
"type" : "function",
"patterns" : [ "\\b[A-Za-z0-9_]+(?=\\()" ]
},
{
"type" : "keyword",
"patterns" : [
"\\balignas\\b",
"\\balignof\\b",
"\\band\\b",
"\\band_eq\\b",
"\\basm\\b",
"\\bassert\\b",
"\\bauto\\b",
"\\bbitand\\b",
"\\bbitor\\b",
"\\bbreak\\b",
"\\bcase\\b",
"\\bcatch\\b",
"\\bcompl\\b",
"\\bcomplex\\b",
"\\bconst\\b",
"\\bconst_cast\\b",
"\\bconstexpr\\b",
"\\bcontinue\\b",
"\\bdecltype\\b",
"\\bdefault\\b",
"\\bdelete\\b",
"\\bdo\\b",
"\\bdynamic_cast\\b",
"\\belse\\b",
"\\bexplicit\\b",
"\\bexport\\b",
"\\bextern\\b",
"\\bfalse\\b",
"\\bfinal\\b",
"\\bfor\\b",
"\\bfriend\\b",
"\\bgoto\\b",
"\\bif\\b",
"\\bimaginary\\b",
"\\binline\\b",
"\\bmutable\\b",
"\\bnew\\b",
"\\bnoexcept\\b",
"\\bnoreturn\\b",
"\\bnot\\b",
"\\bnot_eq\\b",
"\\bNULL\\b",
"\\bnullptr\\b",
"\\boperator\\b",
"\\bor\\b",
"\\bor_eq\\b",
"\\boverride\\b",
"\\bprivate\\b",
"\\bprotected\\b",
"\\bpublic\\b",
"\\bregister\\b",
"\\breinterpret_cast\\b",
"\\brequires\\b",
"\\breturn\\b",
"\\bsignals\\b",
"\\bsizeof\\b",
"\\bslots\\b",
"\\bstatic\\b",
"\\bstatic_assert\\b",
"\\bstatic_cast\\b",
"\\bswitch\\b",
"\\btemplate\\b",
"\\bthis\\b",
"\\bthread_local\\b",
"\\bthrow\\b",
"\\bthrows\\b",
"\\btrue\\b",
"\\btry\\b",
"\\btypedef\\b",
"\\btypeid\\b",
"\\btypename\\b",
"\\busing\\b",
"\\bvirtual\\b",
"\\bvolatile\\b",
"\\bwhile\\b",
"\\bxor\\b",
"\\bxor_eq\\b"
]
},
{
"type" : "type",
"patterns" : [
"\\bbool\\b",
"\\bchar16_t\\b",
"\\bchar32_t\\b",
"\\bchar\\b",
"\\bclass\\b",
"\\bdouble\\b",
"\\benum\\b",
"\\bfloat\\b",
"\\bint16_t\\b",
"\\bint32_t\\b",
"\\bint64_t\\b",
"\\bint8_t\\b",
"\\bint\\b",
"\\bint_fast16_t\\b",
"\\bint_fast32_t\\b",
"\\bint_fast64_t\\b",
"\\bint_fast8_t\\b",
"\\bint_least16_t\\b",
"\\bint_least32_t\\b",
"\\bint_least64_t\\b",
"\\bint_least8_t\\b",
"\\bintmax_t\\b",
"\\bintptr_t\\b",
"\\blong\\b",
"\\bnamespace\\b",
"\\bshort\\b",
"\\bsigned\\b",
"\\bsize_t\\b",
"\\bstruct\\b",
"\\buint16_t\\b",
"\\buint32_t\\b",
"\\buint64_t\\b",
"\\buint8_t\\b",
"\\buint_fast16_t\\b",
"\\buint_fast32_t\\b",
"\\buint_fast64_t\\b",
"\\buint_fast8_t\\b",
"\\buint_least16_t\\b",
"\\buint_least32_t\\b",
"\\buint_least64_t\\b",
"\\buint_least8_t\\b",
"\\buintmax_t\\b",
"\\buintptr_t\\b",
"\\bunion\\b",
"\\bunsigned\\b",
"\\bvoid\\b",
"\\bwchar_t\\b"
]
},
{
"type" : "directive",
"patterns" : [ "#[a-z]+\\b" ]
},
{
"type" : "number",
"patterns" : [ "\\b[0-9]+\\b" ]
},
{
"type" : "quotation",
"patterns" : [ " <[^<>\\s]*>$" ]
}
]
@@ -0,0 +1,95 @@
[
{
"type" : "quotation",
"patterns" : [ "\"(?:[^\"]|\\\\.)*\"", "\'[^\']\'" ],
"priority" : true
},
{
"type" : "comment",
"range" : {
"start" : "/\\*",
"end" : "\\*/"
},
"priority" : true
},
{
"type" : "keyword",
"patterns" : [
"\\babstract\\b",
"\\bassert\\b",
"\\bbreak\\b",
"\\bcase\\b",
"\\bcatch\\b",
"\\bconst\\b",
"\\bcontinue\\b",
"\\bdefault\\b",
"\\bdo\\b",
"\\belse\\b",
"\\bextends\\b",
"\\bfalse\\b",
"\\bfinal\\b",
"\\bfinally\\b",
"\\bfor\\b",
"\\bfriend\\b",
"\\bgoto\\b",
"\\bif\\b",
"\\bimplements\\b",
"\\bimport\\b",
"\\binstanceof\\b",
"\\binterface\\b",
"\\bnative\\b",
"\\bnew\\b",
"\\bpackage\\b",
"\\bprivate\\b",
"\\bprotected\\b",
"\\bpublic\\b",
"\\breturn\\b",
"\\bstatic\\b",
"\\bstrictfp\\b",
"\\bsuper\\b",
"\\bswitch\\b",
"\\bsynchronized\\b",
"\\bthis\\b",
"\\bthrow\\b",
"\\bthrows\\b",
"\\btransient\\b",
"\\btrue\\b",
"\\btry\\b",
"\\bvolatile\\b",
"\\bwhile\\b"
]
},
{
"type" : "type",
"patterns" : [
"\\bboolean\\b",
"\\bbyte\\b",
"\\bchar\\b",
"\\bclass\\b",
"\\bdouble\\b",
"\\benum\\b",
"\\bfloat\\b",
"\\bint\\b",
"\\blong\\b",
"\\bpackage\\b",
"\\bshort\\b",
"\\bvoid\\b"
]
},
{
"type" : "directive",
"patterns" : [ "@[A-Za-z0-9_]+" ]
},
{
"type" : "number",
"patterns" : [ "\\b[0-9]+\\b" ]
},
{
"type" : "function",
"patterns" : [ "\\b[A-Za-z0-9_]+(?=\\()" ]
},
{
"type" : "comment",
"patterns" : [ "//[^\n]*" ]
}
]
@@ -0,0 +1,75 @@
[
{
"type" : "quotation",
"range" : {
"start" : "\'\'\'",
"end" : "\'\'\'"
},
"priority" : true
},
{
"type" : "quotation",
"range" : {
"start" : "\"\"\"",
"end" : "\"\"\""
},
"priority" : true
},
{
"type" : "quotation",
"patterns" : [ "(?:[^\"]|^)(\"(?:[^\"]|\\\\.)*\")(?:[^\"]|$)", "(?:[^\']|^)(\'(?:[^\']|\\\\.)*\')(?:[^\']|$)" ],
"priority" : true
},
{
"type" : "comment",
"patterns" : [ "#[^\n]*" ],
"priority" : true
},
{
"type" : "keyword",
"patterns" : [
"\\bself\\b",
"\\bFalse\\b",
"\\bclass\\b",
"\\bfinally\\b",
"\\bis\\b",
"\\breturn\\b",
"\\bNone\\b",
"\\bcontinue\\b",
"\\bfor\\b",
"\\blambda\\b",
"\\btry\\b",
"\\bTrue\\b",
"\\bdef\\b",
"\\bfrom\\b",
"\\bnonlocal\\b",
"\\bwhile\\b",
"\\band\\b",
"\\bdel\\b",
"\\bglobal\\b",
"\\bnot\\b",
"\\bwith\\b",
"\\bas\\b",
"\\belif\\b",
"\\bif\\b",
"\\bor\\b",
"\\byield\\b",
"\\bassert\\b",
"\\belse\\b",
"\\bimport\\b",
"\\bpass\\b",
"\\bbreak\\b",
"\\bexcept\\b",
"\\bin\\b",
"\\braise\\b"
]
},
{
"type" : "number",
"patterns" : [ "\\b[0-9]+\\b" ]
},
{
"type" : "function",
"patterns" : [ "\\b[A-Za-z0-9_]+(?=\\()" ]
}
]
@@ -81,14 +81,6 @@
<recent_project><!-- STRING: recent project path --></recent_project>
</recent_projects>
<license>
<check><!-- STRING: hashed path of the working directory used when entering the license key --></check>
<license><!-- STRING: the license key --></license>
<non_commercial_use><!-- BOOL: if used non-commercially --></non_commercial_use>
</license>
<accepted_eula_version><!-- INTEGER: last accepted eula version --></accepted_eula_version>
<token><!-- UUID: identifier for this user --></token>
<update_check>
@@ -97,6 +89,7 @@
<skip_version><!-- VERSION: version to skip for update --></skip_version>
<update_url><!-- STRING: url to new version download --></update_url>
<update_version><!-- VERSION: version of last check --></update_version>
<news><!-- STRING: news in last update check --></news>
</update_check>
<seen_error_help_message><!-- BOOL: whether user has been shown help message on errors after indexing --></seen_error_help_message>
@@ -17,6 +17,7 @@
</description>
<source_groups>
<source_group_7a9e75fc-2cad-42d5-8c5b-c86d02f7b4e4>
<java_standard>12</java_standard>
<name>Javaparser Source Group</name>
<source_extensions>
<source_extension>.java</source_extension>
@@ -25,11 +26,10 @@
<source_path>./src/main/java</source_path>
<source_path>./target/generated-sources/javacc</source_path>
</source_paths>
<standard>8</standard>
<status>enabled</status>
<type>Java Source Group</type>
<use_jre_system_library>1</use_jre_system_library>
</source_group_7a9e75fc-2cad-42d5-8c5b-c86d02f7b4e4>
</source_groups>
<version>5</version>
<version>8</version>
</config>
@@ -0,0 +1,128 @@
#include "field.h"
#include "io.h"
Field::Token Field::Opponent( Token token ) {
if ( token == PlayerA ) {
return PlayerB;
} else if (token == PlayerB){
return PlayerA;
} else {
return None;
}
}
Field::Field()
: left_( 9 ) {
grid_ = new Token* [3];
for ( int i = 0; i < 3 ; i++ ) {
grid_[i] = new Token[3];
}
}
Field::~Field() {
for ( int i = 0; i < 3; i++ ) {
delete [] grid_[i];
}
delete [] grid_;
}
Field Field::Clone() const {
Field field;
for ( int i = 0; i < 3; i++ ) {
for ( int j = 0; j < 3; j++ ) {
field.grid_[i][j] = grid_[i][j];
}
}
field.left_ = left_;
return field;
}
void Field::Clear() {
for ( int i = 0; i < 3; i++ ) {
for ( int j = 0; j < 3; j++ ) {
grid_[i][j] = None;
}
}
left_ = 9;
}
void Field::Show() const {
io::stringOut(" 1 2 3\n");
for ( int row = 0; row < 3; row++ ) {
io::numberOut(row + 1);
io::stringOut(" ");
for ( int col = 0; col < 3; col++ ) {
if ( grid_[row][col] == PlayerA ) {
io::stringOut(" X ");
} else if ( grid_[row][col] == PlayerB ) {
io::stringOut(" O ");
} else {
io::stringOut(" ");
}
if ( col < 2 ) {
io::stringOut("|");
}
}
if ( row < 2 ) {
io::stringOut("\n -----------\n");
}
}
io::stringOut("\n\n");
}
int Field::SameInRow( Token token, int amount ) const {
int sum = amount * token;
int count = 0;
for ( int i = 0; i < 3; i++ ) {
if ( grid_[i][0] + grid_[i][1] + grid_[i][2] == sum ) {
count++;
}
if ( grid_[0][i] + grid_[1][i] + grid_[2][i] == sum ) {
count++;
}
}
if ( grid_[0][0] + grid_[1][1] + grid_[2][2] == sum ) {
count++;
}
if ( grid_[2][0] + grid_[1][1] + grid_[0][2] == sum ) {
count++;
}
return count;
}
bool Field::InRange( const Move& move ) const {
return move.row >= 0 && move.row < 3 && move.col >= 0 && move.col < 3;
}
bool Field::IsEmpty( const Move& move ) const {
return grid_[move.row][move.col] == None;
}
bool Field::IsFull() const {
return left_ == 0;
}
void Field::MakeMove( const Move& move, Token token ) {
if ( !InRange( move ) || !IsEmpty( move ) || token == None || !left_ ) {
return;
}
grid_[move.row][move.col] = token;
left_--;
}
void Field::ClearMove( const Move& move ) {
if ( !InRange( move ) || IsEmpty( move ) || left_ == 9 ) {
return;
}
grid_[move.row][move.col] = None;
left_++;
}
@@ -4,6 +4,7 @@
#include "field.h"
#include "game_object.h"
class Player : public GameObject {
public:
Player( Field::Token token, const char* name );
@@ -0,0 +1,85 @@
#include "tictactoe.h"
#include "artificial_player.h"
#include "human_player.h"
#include "io.h"
TicTacToe::TicTacToe() {
players_[0] = 0;
players_[1] = 0;
}
TicTacToe::~TicTacToe() {
Reset();
}
bool TicTacToe::Start() {
Reset();
io::stringOut("Tic Tac Toe\n\n[1] Human\n[2] Computer\n[3] Quit\n\n");
players_[0] = SelectPlayer( Field::PlayerA, "Player A" );
if ( !players_[0] ) {
return false;
}
players_[1] = SelectPlayer( Field::PlayerB, "Player B" );
if ( !players_[1] ) {
return false;
}
io::stringOut("\n");
return true;
}
void TicTacToe::Run() {
field_.Show();
int playerIndex = 0;
for ( int i = 0; i < 9; i++ ) {
Player& player = *players_[playerIndex];
field_.MakeMove( player.Turn( field_ ), player.getToken() );
field_.Show();
if ( field_.SameInRow( player.getToken(), 3 ) ) {
io::stringOut(player.getName());
io::stringOut(" won!\n\n");
return;
}
playerIndex = ( playerIndex + 1 ) % 2;
}
io::stringOut("Game ends in draw!\n\n");
}
void TicTacToe::Reset() {
field_.Clear();
for ( int i = 0; i < 2; i++ ) {
if ( players_[i] ) {
delete players_[i];
players_[i] = 0;
}
}
}
Player* TicTacToe::SelectPlayer( Field::Token token, const char* name ) const {
int selection = 0;
while ( true ) {
io::stringOut("Choose ");
io::stringOut(name);
io::stringOut(": ");
selection = io::numberIn();
switch ( selection ) {
case 1 : return new HumanPlayer( token, name );
case 2 : return new ArtificialPlayer( token, name );
case 3 : return 0;
default : io::stringOut("Wrong input!\n");
}
}
}
@@ -2,6 +2,7 @@
<config>
<source_groups>
<source_group_afdfade2-4b42-49a6-961a-d4a563f2cf84>
<cpp_standard>c++2a</cpp_standard>
<cross_compilation>
<target>
<abi>unknown</abi>
@@ -21,10 +22,9 @@
<source_paths>
<source_path>./src</source_path>
</source_paths>
<standard>c++2a</standard>
<status>enabled</status>
<type>C++ Source Group</type>
</source_group_afdfade2-4b42-49a6-961a-d4a563f2cf84>
</source_groups>
<version>5</version>
<version>8</version>
</config>
@@ -0,0 +1,309 @@
from enum import Enum
from random import randint
def numberIn():
return int(input())
def numberOut(num):
print(str(num), end="")
def stringOut(str):
print(str, end="")
class GameObject:
pass
class Field(GameObject):
class Token(Enum):
TOKEN_NONE = 0
TOKEN_PLAYER_A = 1
TOKEN_PLAYER_B = 4
def opponent(self, token):
if token == Field.Token.TOKEN_PLAYER_A:
return Field.Token.TOKEN_PLAYER_B
elif token == Field.Token.TOKEN_PLAYER_B:
return Field.Token.TOKEN_PLAYER_A
return Field.Token.TOKEN_NONE
class Move:
def __init__(self):
self.row = None
self.col = None
def __init__(self):
self._grid = []
for j in range(0, 3):
row = []
for i in range(0, 3):
row.append(Field.Token.TOKEN_NONE)
self._grid.append(row)
self._left = 9
def clone(self):
field = Field()
for j in range(0, 3):
for i in range(0, 3):
field._grid[i][j] = self._grid[i][j]
field._left = self._left
return field
def clear(self):
for j in range(0, 3):
for i in range(0, 3):
self._grid[i][j] = Field.Token.TOKEN_NONE
self._left = 9
def show(self):
stringOut(" 1 2 3\n")
for row in range(0, 3):
numberOut(row + 1)
stringOut(" ")
for col in range(0, 3):
if self._grid[row][col] == Field.Token.TOKEN_PLAYER_A:
stringOut(" X ")
elif self._grid[row][col] == Field.Token.TOKEN_PLAYER_B:
stringOut(" O ")
else:
stringOut(" ")
if col < 2:
stringOut("|")
if row < 2:
stringOut("\n -----------\n")
stringOut("\n\n")
def sameInRow(self, token, amount):
total = amount * token.value
count = 0
for i in range(0, 3):
if self._grid[i][0].value + self._grid[i][1].value + self._grid[i][2].value == sum:
count += 1
if self._grid[0][i].value + self._grid[1][i].value + self._grid[2][i].value == sum:
count += 1
if self._grid[0][0].value + self._grid[1][1].value + self._grid[2][2].value == sum:
count += 1
if self._grid[2][0].value + self._grid[1][1].value + self._grid[0][2].value == sum:
count += 1
return count
def inRange(self, move):
return move.row >= 0 and move.row < 3 and move.col >= 0 and move.col < 3
def isEmpty(self, move):
return self._grid[move.row][move.col] == Field.Token.TOKEN_NONE
def isFull(self):
return self._left == 0
def makeMove(self, move, token):
if not self.inRange(move):
return
if not self.isEmpty(move):
return
if token is Field.Token.TOKEN_NONE:
return
if self.isFull():
return
self._grid[move.row][move.col] = token
self._left -= 1
def clearMove(self, move):
if not self.inRange(move):
return
if self.isEmpty(move):
return
if self._left == 9:
return
self._grid[move.row][move.col] = Field.Token.TOKEN_NONE
self._left += 1
class Player(GameObject):
def __init__(self, token, name):
self.token = token
self.name = name
def turn(field):
raise NotImplementedError
class HumanPlayer(Player):
def __init__(self, token, name):
Player.__init__(self, token, name)
def turn(self, field):
stringOut(self.name)
stringOut("\n")
while True:
move = self._input()
if self._check(field, move):
break
return move
def _input(self):
move = Field.Move()
stringOut("Insert row: ")
move.row = numberIn() - 1
stringOut("Insert col: ")
move.col = numberIn() - 1
stringOut("\n")
return move
def _check(self, field, move):
if not field.inRange(move):
stringOut("Wrong input!\n")
return False
elif not field.isEmpty(move):
stringOut("Is occupied!\n")
return False
return True
class ArtificialPlayer(Player):
class Node:
def __init__(self):
self.move = None
self.value = 0
def __init__(self, token, name):
Player.__init__(self, token, name)
def turn(self, field):
tempField = field.clone()
node = self._minMax(tempField, self.token)
return node.move
def _minMax(self, field, token, prefix = ""):
node = ArtificialPlayer.Node()
node.value = -10000
move = Field.Move()
sameMove = 0
for j in range(0, 3):
move.row = j
for i in range(0, 3):
move.col = i
if not field.isEmpty(move):
continue
field.makeMove(move, token)
turnValue = self._evaluate(field, token)
if turnValue == 0 and not field.isFull():
turnValue = -self._minMax(field, field.opponent(token), prefix + " ").value
field.clearMove(move)
if turnValue > node.value:
node.move = move
node.value = turnValue
sameMove = 1
elif turnValue == node.value:
sameMove += 1
if randint(0, sameMove - 1) == 0:
node.move = move
return node
def _evaluate(self, field, token):
if field.sameInRow(token, 3):
return 2
elif field.sameInRow(field.opponent(token), 2):
return -1
elif field.sameInRow(token, 2) > 1:
return 1
return 0
class TicTacToe:
def __init__(self):
self._field = Field()
self._players = [None, None]
def start(self):
self._reset()
stringOut("Tic Tac Toe\n\n[1] Human\n[2] Computer\n[3] Quit\n\n")
self._players[0] = self._selectPlayer(Field.Token.TOKEN_PLAYER_A, "Player A")
if self._players[0] is None:
return False
self._players[1] = self._selectPlayer(Field.Token.TOKEN_PLAYER_B, "Player B")
if self._players[1] is None:
return False
stringOut("\n")
return True
def run(self):
self._field.show()
playerIndex = 0
for i in range(0, 9):
player = self._players[playerIndex]
self._field.makeMove(player.turn(self._field), player.token)
self._field.show()
if self._field.sameInRow(player.token, 3):
stringOut(player.name)
stringOut(" won!\n\n")
return
playerIndex = (playerIndex + 1) % 2
stringOut("Game ends in draw!\n\n")
def _reset(self):
for i in range(0, 2):
self._players[i] = None
self._field.clear()
def _selectPlayer(self, token, name):
while (True):
stringOut("Choose ")
stringOut(name)
stringOut(": ")
selection = numberIn()
if selection == 1:
return HumanPlayer(token, name)
elif selection == 2:
return ArtificialPlayer(token, name)
elif selection == 3:
return None
stringOut("Wrong input!\n")
def main():
tictactoe = TicTacToe()
while tictactoe.start():
tictactoe.run()
if __name__ == '__main__':
main()
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8" ?>
<config>
<source_groups>
<source_group_b7e201f1-a5d5-4578-9629-b14152507962>
<name>TicTacToe Source Group</name>
<source_extensions>
<source_extension>.py</source_extension>
</source_extensions>
<source_paths>
<source_path>src</source_path>
</source_paths>
<status>enabled</status>
<type>Python Source Group</type>
</source_group_b7e201f1-a5d5-4578-9629-b14152507962>
</source_groups>
<version>8</version>
</config>
@@ -12,11 +12,13 @@
// code. It displays the structure of your project where all named symbols are
// nodes and all relations are edges. Like the code view it shows only the
// currently active symbol and all the incoming and outgoing dependencies.
// If you want to see which node and edge types exist, then click the '?'-icon in the
// lower right corner of the graph view to show the graph legend.
//
// 2 - HOW DO I NAVIGATE THE GRAPH
// You can activate a new symbol by left-clicking on the node you are
// interested in. For example: to find out where the function
// "where_am_i_called()" is called get over to the graph and click that
// You can activate a new symbol by left-clicking on the node you are
// interested in. For example: to find out where the function
// "where_am_i_called()" is called get over to the graph and click that
// function's node.
//
//------------------------------------------------------------------------------
@@ -2,7 +2,7 @@
#define GRAPH_TUTORIAL_6_H
#include <string>
#include "string.h"
class BoringClass
{
@@ -20,7 +20,7 @@ class BoringClass
// but I guess you will figure it out on your own. One last thing: If you see
// an element with a hatched background please call us. It's a runaway!
// Just kidding. Those are elements that are used within your code, but have no
// definition anywhere in your source folder (like the "string" symbol on the
// definition anywhere in your source folder (like the "String" symbol on the
// right hand side of the graph). So if you click them, Sourcetrail will
// display all the relations for the element, but the code view won't show a
// definition. If you want to learn more about Sourcetrail, use the graph to go
@@ -30,13 +30,13 @@ class BoringClass
class click_me_to_continue
{
void method(std::string s)
void method(String s)
{
the_central_hub();
}
};
class NothingToSeeHere: public BoringClass, public click_me_to_continue
class NothingToSeeHere: public BoringClass, public click_me_to_continue
{
};
+5 -7
View File
@@ -20,18 +20,16 @@
//------------------------------------------------------------------------------
//
// WHAT IS THIS?
// Now the Code View finally shows some real code of the tutorial project.
// And who could think of a better place to start a tutorial that involves
// code than a main function?
// WHAT IS THIS?
// Now the Code View finally shows some real code of the tutorial project.
//
// WHAT CAN I DO NOW?
// Left-click the "my_first_step()" function call inside the main function.
// Lets see what happens.
// Left-click the "my_first_step()" function call inside the start_tour
// function. Let's see what happens.
//
//------------------------------------------------------------------------------
int main()
int start_tour()
{
my_first_step();
return 0;
@@ -7,7 +7,7 @@
//------------------------------------------------------------------------------
//
// ANYTING ELSE I SHOULD KNOW?
// ANYTHING ELSE I SHOULD KNOW?
// I'm glad that you asked. Take a look at the code below. You will notice two
// different highlights when hovering different symbols in that snippet. One
// is used for symbols that may be used everywhere throughout your code base
@@ -7,7 +7,7 @@
//------------------------------------------------------------------------------
//
// 9 - CONGRATULATONS
// 9 - CONGRATULATIONS
// You have completed the challenge of search.
// Oh, I almost forgot: You can only find nodes such as symbols via the search
// bar. It doesn't allow you to find edges like calls or inheritance. At least
@@ -0,0 +1,8 @@
#ifndef STRING_H
#define STRING_H
class String
{
};
#endif // STRING_H
@@ -11,12 +11,15 @@
\tcontains a few hundred lines of code as you can see by the numbers below.\n
\n
LET'S GET STARTED!\n
\tTo keep things simple just click the "main" symbol below to start the tour.\n
\tTo keep things simple just click the "start_tour" symbol below to start the tour.\n
\n
[::\tmmain\tsint\tp()](); // &lt;- start here\n\n
\n
[::\tmstart_tour\tsint\tp()](); // &lt;- start here\n
\n
</description>
<source_groups>
<source_group_75041cb3-37c8-45c6-bb8a-1b8b79040f59>
<cpp_standard>c++2a</cpp_standard>
<cross_compilation>
<target>
<abi>unknown</abi>
@@ -26,6 +29,9 @@
</target>
<target_options_enabled>0</target_options_enabled>
</cross_compilation>
<exclude_filters>
<exclude_filter>src/string.h</exclude_filter>
</exclude_filters>
<name>Tutorial Source Group</name>
<source_extensions>
<source_extension>.cpp</source_extension>
@@ -33,10 +39,9 @@
<source_paths>
<source_path>./src</source_path>
</source_paths>
<standard>c++2a</standard>
<status>enabled</status>
<type>C++ Source Group</type>
</source_group_75041cb3-37c8-45c6-bb8a-1b8b79040f59>
</source_groups>
<version>5</version>
<version>8</version>
</config>

Some files were not shown because too many files have changed in this diff Show More