You've already forked qBittorrent
							
							
				mirror of
				https://github.com/qbittorrent/qBittorrent
				synced 2025-10-26 06:12:17 +01:00 
			
		
		
		
	Compare commits
	
		
			2320 Commits
		
	
	
		
			release-4.
			...
			release-5.
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 94136262a8 | ||
|   | f52947e27e | ||
|   | 315e88aee9 | ||
|   | 9104351c89 | ||
|   | e58b0a65d2 | ||
|   | 878d829904 | ||
|   | 063f77bc6c | ||
|   | 2a4077414f | ||
|   | 2a44253802 | ||
|   | 4712eba0dc | ||
|   | 983b7814aa | ||
|   | e082a21751 | ||
|   | 7dd1d1bac8 | ||
|   | 49f57b1049 | ||
|   | fbf68a0649 | ||
|   | 39229dc06a | ||
|   | bb314e1555 | ||
|   | a3a8b15828 | ||
|   | b579afe1aa | ||
|   | 93096dba56 | ||
|   | 6379c33964 | ||
|   | 84372de675 | ||
|   | 403b7c7c35 | ||
|   | b2fab43865 | ||
|   | 387821267f | ||
|   | dd7ef8e934 | ||
|   | cce295faeb | ||
|   | db5479ea01 | ||
|   | e1216c4c9a | ||
|   | f4a0868426 | ||
|   | 59a5fcf7d0 | ||
|   | f9a2b02a8d | ||
|   | 04f6a565f3 | ||
|   | 3e96048ee4 | ||
|   | d4ccf3001c | ||
|   | 64506f16bd | ||
|   | 24a7a835af | ||
|   | 93b9bf9552 | ||
|   | f4125601de | ||
|   | 2d67729617 | ||
|   | 878ebbed41 | ||
|   | c61c3d7cd8 | ||
|   | 978fbbdc0d | ||
|   | 63689cf763 | ||
|   | cebc72d3cf | ||
|   | a67bd271c6 | ||
|   | a8cffbb205 | ||
|   | 7dfb0110d4 | ||
|   | 3ad8fcbdd2 | ||
|   | 195eae5f3d | ||
|   | 920ae26f7b | ||
|   | 09ed0d6b66 | ||
|   | 4f0cc8aa11 | ||
|   | 4d490c84e7 | ||
|   | 96607ce874 | ||
|   | 418edc7471 | ||
|   | bd01b7c4df | ||
|   | b0ac763048 | ||
|   | 127d2d6f0b | ||
|   | 4149609e78 | ||
|   | 78c549f83e | ||
|   | a3a53e2e0e | ||
|   | 5aaa43e01d | ||
|   | 86745d7b07 | ||
|   | 210650a5ee | ||
|   | fe93b6d0d8 | ||
|   | e8b585acd8 | ||
|   | cea20141a9 | ||
|   | 0f5a27ed50 | ||
|   | c2cf898ccd | ||
|   | 5e5aa8a563 | ||
|   | 12a4c3fda2 | ||
|   | 5f50b701d2 | ||
|   | 9f20d9c3aa | ||
|   | 05e3130baa | ||
|   | 683492648f | ||
|   | 2f2e158877 | ||
|   | e60e96cb0e | ||
|   | 5f31208bf1 | ||
|   | fa58e58e70 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 671943a9a6 | ||
|   | 8bad80bcdd | ||
|   | c44e300507 | ||
|   | 318a677e8f | ||
|   | 0246df790a | ||
|   | 782fbc1425 | ||
|   | 7deccd5592 | ||
|   | 4a36fe7278 | ||
|   | 1c5af96ad8 | ||
|   | 3bb47a5410 | ||
|   | d7abeb4bf0 | ||
|   | a19d623ead | ||
|   | 1ef21bc2b7 | ||
|   | 4687b4e8e4 | ||
|   | d2e5163861 | ||
|   | 8a15ea8026 | ||
|   | 2b99554813 | ||
|   | e6638f9c19 | ||
|   | ec6eac2ba1 | ||
|   | a126a7b493 | ||
|   | b8a774f1fb | ||
|   | e09a871ca3 | ||
|   | 04154ebb76 | ||
|   | fb796ec595 | ||
|   | 00ca209ab9 | ||
|   | 4d8713ce11 | ||
|   | 2c47f09d7a | ||
|   | a19ef58400 | ||
|   | 21a4ab6bac | ||
|   | 2b728b3bc0 | ||
|   | 6231208ddf | ||
|   | e2d6cd31b2 | ||
|   | 79eb7b8e38 | ||
|   | 8ef7d3ec9a | ||
|   | 05416458db | ||
|   | cd3982cf3c | ||
|   | a1af077889 | ||
|   | 42b87963fd | ||
|   | 775b38079f | ||
|   | d65d8558d6 | ||
|   | b1175b60e1 | ||
|   | d3315f7cc7 | ||
|   | 321d7e5b17 | ||
|   | 4ac586c896 | ||
|   | ca71c186e0 | ||
|   | ddb0ff29e2 | ||
|   | 6c57fad0cd | ||
|   | 1c7ecb7371 | ||
|   | 4945ed576a | ||
|   | c6f4e95b7d | ||
|   | fc3953dbaa | ||
|   | 75e2ae2fa0 | ||
|   | 7310eec74e | ||
|   | 3e0fd01604 | ||
|   | ace5286402 | ||
|   | d7cded54e4 | ||
|   | 6c82d5e305 | ||
|   | c036313adf | ||
|   | 29f0adf215 | ||
|   | e697d40382 | ||
|   | 01cc4ea90b | ||
|   | d407e954d1 | ||
|   | f085f8c076 | ||
|   | 92ce507151 | ||
|   | 67dfce7437 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | e4aad461c7 | ||
|   | f37d0c486c | ||
|   | 8e6515be2c | ||
|   | 1d221c22e4 | ||
|   | 2fe91a6c8f | ||
|   | 90383567b2 | ||
|   | 4967f977c5 | ||
|   | eb9e98a4b3 | ||
|   | f5cac13979 | ||
|   | f20467889d | ||
|   | 5e8b9df859 | ||
|   | 489bacd766 | ||
|   | 5d1c249606 | ||
|   | f2d6129db3 | ||
|   | 5c67c5a77d | ||
|   | ce013f132f | ||
|   | abcf1e076e | ||
|   | 47c38e8d91 | ||
|   | 34d19e5714 | ||
|   | 25b7972f88 | ||
|   | 845f9a821e | ||
|   | b489262f51 | ||
|   | a5681f72bc | ||
|   | 9e569f1a70 | ||
|   | 9d3c314ac0 | ||
|   | 931de85ab5 | ||
|   | 6a82cb1af6 | ||
|   | f8ae8f419d | ||
|   | ac91c1348b | ||
|   | d7aaf80744 | ||
|   | 50caa231f7 | ||
|   | d5e41bf679 | ||
|   | 773cb1e55d | ||
|   | 0967bdc715 | ||
|   | c06817f4eb | ||
|   | 1702b6c891 | ||
|   | f65af03c67 | ||
|   | a567f8b600 | ||
|   | 71f1e6df59 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 896f5fe729 | ||
|   | 8a1bc8e5fd | ||
|   | 6964132475 | ||
|   | f265eb0166 | ||
|   | 0114610a40 | ||
|   | 15697f904d | ||
|   | 46e8ee50c8 | ||
|   | 364bcf73ee | ||
|   | 031fa6183c | ||
|   | 66c34ddb6e | ||
|   | 3f2b4afc21 | ||
|   | e1fa7e01c6 | ||
|   | 9192c988ed | ||
|   | cffd74b62a | ||
|   | c6ee0ff017 | ||
|   | dc501c39be | ||
|   | 7786e1b084 | ||
|   | 80dea08328 | ||
|   | bb8a012b1c | ||
|   | 63c9b6388e | ||
|   | 3d24a4e0f7 | ||
|   | f04edd555f | ||
|   | e31b553807 | ||
|   | a9741bb203 | ||
|   | 67e0a2de44 | ||
|   | 1afb3ff433 | ||
|   | 16a91f26fb | ||
|   | 963a7faab8 | ||
|   | d06d5b923a | ||
|   | 6d68ab4dae | ||
|   | 60bb819e2e | ||
|   | 8ef99b336c | ||
|   | f7e9ff0fb0 | ||
|   | 9b64d50660 | ||
|   | 5fe5c333b5 | ||
|   | 49f819ef78 | ||
|   | 2755190d8e | ||
|   | f87ea1b5d3 | ||
|   | 88a4990435 | ||
|   | 9bfb447dd3 | ||
|   | d652a10495 | ||
|   | df41940ebc | ||
|   | 94e80d01a8 | ||
|   | bab9c15913 | ||
|   | 31d456c43b | ||
|   | c5d7b62473 | ||
|   | 8ec3db1807 | ||
|   | 05572a7317 | ||
|   | 00372dd559 | ||
|   | 6918316a3d | ||
|   | 2edb1a0765 | ||
|   | 582e4dcb59 | ||
|   | 14513d051d | ||
|   | 97c0abcbf0 | ||
|   | ad22237a2f | ||
|   | 8bdb83d973 | ||
|   | 54bcabeca4 | ||
|   | 114652205c | ||
|   | 5b3b56c918 | ||
|   | e69f857828 | ||
|   | 0b6d785e87 | ||
|   | f3d45327e1 | ||
|   | 9bf7f3b181 | ||
|   | d5bf0358cb | ||
|   | fc56fdade7 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 293a2efca7 | ||
|   | 8bd604f633 | ||
|   | fcd16d56e2 | ||
|   | be5bf9a138 | ||
|   | 8dcc734df5 | ||
|   | 4057972b2d | ||
|   | 073ca4267c | ||
|   | 9d90141c29 | ||
|   | cc563d9f78 | ||
|   | 88ef8a51dd | ||
|   | 0297f0f34b | ||
|   | 7a41192597 | ||
|   | 65771d66fc | ||
|   | 0dbac78e17 | ||
|   | 608efc77e8 | ||
|   | 9ecb3874d8 | ||
|   | 4ba8eaf4b4 | ||
|   | bfd3ce2fca | ||
|   | 86d5d13ce6 | ||
|   | 8f230bc2e6 | ||
|   | 6d0ad62632 | ||
|   | c165131c3f | ||
|   | 9fde5634f1 | ||
|   | 19b88b7f4a | ||
|   | 60eaff9fcb | ||
|   | c3adc90f7e | ||
|   | 6f7f418ec1 | ||
|   | 137df132e8 | ||
|   | b2c51a5b9e | ||
|   | e99a012bb4 | ||
|   | 75feacb213 | ||
|   | ce34245aaf | ||
|   | ef06be63bf | ||
|   | a1c78a0455 | ||
|   | 32fbacf615 | ||
|   | 75c638e2f8 | ||
|   | 298e4ba852 | ||
|   | 50680a3d9b | ||
|   | 20bfd392ff | ||
|   | 8cc8ffabb0 | ||
|   | 2a20764d39 | ||
|   | 9d6d3a30eb | ||
|   | b67da4bebe | ||
|   | 8e39ac7efd | ||
|   | fb497f3410 | ||
|   | 5d1d3fcf57 | ||
|   | 0f40fad74d | ||
|   | 28b5d7230c | ||
|   | c88bd7cb3f | ||
|   | 30d9978c97 | ||
|   | f067ab1692 | ||
|   | bcfa251290 | ||
|   | f49507cb58 | ||
|   | 606c23d1a4 | ||
|   | 7c0e3baf5f | ||
|   | 6cfbc02d8f | ||
|   | 794cce38f3 | ||
|   | f20f009b78 | ||
|   | e216a9cf53 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 7f57324655 | ||
|   | 0186f44bf4 | ||
|   | 6b53c57157 | ||
|   | 5db2c2c2be | ||
|   | cecbb44a03 | ||
|   | 4a20a1660e | ||
|   | eddfaedc4d | ||
|   | e42d3f38cc | ||
|   | e7f38ec6ce | ||
|   | a689ccf798 | ||
|   | 7bd8f262db | ||
|   | 98576dacae | ||
|   | b4642ca9d3 | ||
|   | 9b924c1931 | ||
|   | de2ba53f08 | ||
|   | 031be41491 | ||
|   | c671b7059e | ||
|   | 347124812e | ||
|   | bf95eb50da | ||
|   | ee9390fecd | ||
|   | 12674d2990 | ||
|   | 35e4b35d12 | ||
|   | 6860c0d60d | ||
|   | 9de32a78f1 | ||
|   | 8d5022c715 | ||
|   | 921be09d8f | ||
|   | 116b05009d | ||
|   | 63499511cb | ||
|   | 413e7dd3c4 | ||
|   | cba433823f | ||
|   | 90e023f138 | ||
|   | e6ec3d0c2b | ||
|   | d60f9c6142 | ||
|   | a3888811f6 | ||
|   | 30189ae943 | ||
|   | ec90d169c0 | ||
|   | 3ca0939411 | ||
|   | 34f7b75f12 | ||
|   | c051ee9409 | ||
|   | 70b438e6d9 | ||
|   | 73028f9930 | ||
|   | bda18ad29b | ||
|   | 0404ff9fb3 | ||
|   | 47439a7efd | ||
|   | 16111496ca | ||
|   | 43e9403a4c | ||
|   | 7ab90cfc40 | ||
|   | b3fda76027 | ||
|   | 529e49aea7 | ||
|   | 46c1c9de65 | ||
|   | cacae42e5e | ||
|   | f3b688217e | ||
|   | 5e5c6aa7d8 | ||
|   | 88d32d57ab | ||
|   | 1537f1e703 | ||
|   | 30badbf36e | ||
|   | 5a334175a8 | ||
|   | dcba9eda00 | ||
|   | 633167a6da | ||
|   | c394868f87 | ||
|   | 2deb7eb3d9 | ||
|   | d19f4c2e1f | ||
|   | 22f63468a2 | ||
|   | 479639162d | ||
|   | 5b57abc7d8 | ||
|   | d841dda654 | ||
|   | 4cf933b4fc | ||
|   | 7cd2445a49 | ||
|   | 2f94c92df9 | ||
|   | 39efd0e9ff | ||
|   | ff80e0ce66 | ||
|   | 65930ddf94 | ||
|   | 4d2015cfed | ||
|   | 2dc1a7d66f | ||
|   | 145971b915 | ||
|   | 43e3d0b4b2 | ||
|   | 0fdb1b3f53 | ||
|   | 24da51ffa0 | ||
|   | e434812cda | ||
|   | 9a1df0c595 | ||
|   | 44763d3e15 | ||
|   | 9a73a21f3f | ||
|   | e045b4678d | ||
|   | d8a03cd8d8 | ||
|   | 270c63d64c | ||
|   | bbac94cc95 | ||
|   | 9ab8203c8a | ||
|   | c805606524 | ||
|   | 34d30ed031 | ||
|   | f3f4610ba4 | ||
|   | 21b77cb4f8 | ||
|   | dcf3e97291 | ||
|   | e4313d6651 | ||
|   | 52fbb774a2 | ||
|   | a0e41a11de | ||
|   | cab5edb721 | ||
|   | 7a9a102b6f | ||
|   | 6ba561dea2 | ||
|   | 56ba5e5182 | ||
|   | 69d60b5f1c | ||
|   | 850da9dd83 | ||
|   | 502b3d3228 | ||
|   | c25d14b1d0 | ||
|   | 31fe327763 | ||
|   | 870bcc7a19 | ||
|   | 44f0a63354 | ||
|   | 9fa48a375d | ||
|   | f2b4aa6570 | ||
|   | 5c06d0aa75 | ||
|   | 4d98761e99 | ||
|   | 180e708f3c | ||
|   | da4f2c2439 | ||
|   | 33d767b765 | ||
|   | 06581636a1 | ||
|   | a0fa1709d5 | ||
|   | 699dc1689a | ||
|   | a427b9228d | ||
|   | c4ed40b82f | ||
|   | e68cf87f05 | ||
|   | fccdeb4e78 | ||
|   | 431860482c | ||
|   | d554db4f4e | ||
|   | 6c16a09385 | ||
|   | b35c2bca5d | ||
|   | 852927bf50 | ||
|   | a5a4ea9ba0 | ||
|   | 45ca5d31c9 | ||
|   | b14740aeac | ||
|   | 5b0706df65 | ||
|   | 11efd26acc | ||
|   | 006ad23d0d | ||
|   | 9975230dea | ||
|   | e31c3376bd | ||
|   | 9898901236 | ||
|   | 56c52af124 | ||
|   | c20a77aa77 | ||
|   | d6adebe4c0 | ||
|   | c58aa58cba | ||
|   | 7612d5d0ef | ||
|   | 1874fd7f93 | ||
|   | 0bcc1cf4a0 | ||
|   | cffcf5783f | ||
|   | 10ee1ab7a2 | ||
|   | f27f2c20e0 | ||
|   | d554f4d44a | ||
|   | d357cdd5f9 | ||
|   | 0f862fcf9f | ||
|   | 6bd56478fd | ||
|   | 76b5ca6b8b | ||
|   | dbb1b1e9bb | ||
|   | b5fbfdf106 | ||
|   | f3f9cfe44e | ||
|   | dbe79484d2 | ||
|   | 5e610cfdcf | ||
|   | 2c08dc9dad | ||
|   | 15b46259f3 | ||
|   | d569eaa991 | ||
|   | 64c3845a7c | ||
|   | 79afa0b84d | ||
|   | 38d773ca46 | ||
|   | 9194f60ac0 | ||
|   | 4a217dc42f | ||
|   | 9171b73edb | ||
|   | 0f0de5e4f8 | ||
|   | c1d64cc3ea | ||
|   | 57085ca126 | ||
|   | 7b4b7c2b81 | ||
|   | 6a3a5fac83 | ||
|   | 35e18498d9 | ||
|   | f99a98306d | ||
|   | b0cfe53329 | ||
|   | 060466e326 | ||
|   | 392949b313 | ||
|   | b17307f283 | ||
|   | e739d38061 | ||
|   | 20f4d0c4e3 | ||
|   | 4f6038c350 | ||
|   | f08556be30 | ||
|   | 543745b3f2 | ||
|   | cb0c09769f | ||
|   | e8f5a3b44e | ||
|   | 5a660fc8a9 | ||
|   | 488464731d | ||
|   | fb68604ee7 | ||
|   | 4ef9a6444a | ||
|   | 66dfe8545d | ||
|   | fff7b1dcbd | ||
|   | b5b1f51cee | ||
|   | 33875aa70a | ||
|   | 9d7dad4a61 | ||
|   | 213b6e316c | ||
|   | ffc3d8d345 | ||
|   | 7ec80263e1 | ||
|   | 66e533f505 | ||
|   | 045b4f0a06 | ||
|   | 80c637bf99 | ||
|   | 48d5e3326b | ||
|   | 80791e328d | ||
|   | 08a771468d | ||
|   | c3fc96dfe6 | ||
|   | 715a4f3eb6 | ||
|   | 8655e48336 | ||
|   | 3c139ca333 | ||
|   | f4deb1050f | ||
|   | 889ed5bce9 | ||
|   | 6680fdda18 | ||
|   | 88bd4f270f | ||
|   | 86a5ad3241 | ||
|   | 1c654d8f47 | ||
|   | c90863f217 | ||
|   | deec2ae1b1 | ||
|   | f37fff31ae | ||
|   | dffb93a6aa | ||
|   | 3b948b0130 | ||
|   | b3d2ba7d07 | ||
|   | 03d3552ee0 | ||
|   | 379b0dbe40 | ||
|   | f213f81727 | ||
|   | 1f2a6455b6 | ||
|   | fc8c74989b | ||
|   | b01a48879a | ||
|   | e780b3a9b7 | ||
|   | 2bbfd317ce | ||
|   | e6d85a468b | ||
|   | f6b58f36e2 | ||
|   | 79ca2e145f | ||
|   | 81bc910d68 | ||
|   | ff5d02bcf2 | ||
|   | 2e87e6e0df | ||
|   | a5e8af5070 | ||
|   | cf415dd7fe | ||
|   | 83e6afcb71 | ||
|   | 62d96c068a | ||
|   | 040c3c7ef8 | ||
|   | 3ef8726083 | ||
|   | dad9157d84 | ||
|   | 5cea69472f | ||
|   | b1492bcd7d | ||
|   | d571ab2be1 | ||
|   | 4550469bb9 | ||
|   | 160af4feef | ||
|   | b27e839405 | ||
|   | ecc08dee09 | ||
|   | 11ac4e7620 | ||
|   | fbe93f0c47 | ||
|   | 11945eef3f | ||
|   | a35dbc6df7 | ||
|   | 3fb4e4d293 | ||
|   | f5a4065101 | ||
|   | ba93d55a6d | ||
|   | a59301712e | ||
|   | b406d669b3 | ||
|   | 4ef8f39f23 | ||
|   | 34802362ad | ||
|   | c10f1f0ad2 | ||
|   | 58ae98026b | ||
|   | 32a55551fe | ||
|   | 7880fe8440 | ||
|   | bb959bda8c | ||
|   | d629c77184 | ||
|   | b953d223e4 | ||
|   | 6fa53b5ed8 | ||
|   | c777ed3299 | ||
|   | 341b2f345a | ||
|   | 905f141657 | ||
|   | 0a87bb368f | ||
|   | 93a1e58554 | ||
|   | 0cc29f1851 | ||
|   | 81daad92ec | ||
|   | 41be7e9bbe | ||
|   | 179a61d75e | ||
|   | 73134d5f4d | ||
|   | 29c05ed3e8 | ||
|   | e375f3ee0b | ||
|   | b185153254 | ||
|   | e7e5c38384 | ||
|   | 9a00839a75 | ||
|   | 79e85d01fa | ||
|   | e408973ee6 | ||
|   | 8c9b6e2f2d | ||
|   | 5b43782f58 | ||
|   | 2059825597 | ||
|   | e1be46820b | ||
|   | 8219b1f695 | ||
|   | 3fbe380582 | ||
|   | 5f00d42a49 | ||
|   | 15de7aed9a | ||
|   | 5c38cc00d9 | ||
|   | 5a1dcbae9c | ||
|   | 7c6a852f85 | ||
|   | 147b22ddd3 | ||
|   | d83b2a6131 | ||
|   | 821e946bbe | ||
|   | 634eb4a183 | ||
|   | 758ea7edca | ||
|   | 1bd499565e | ||
|   | be9ec5a329 | ||
|   | df895cb2a7 | ||
|   | 3b72859980 | ||
|   | 69df85f564 | ||
|   | 1f1da32371 | ||
|   | cddf8c199c | ||
|   | bbd5ed1142 | ||
|   | 0f033ec9c8 | ||
|   | 7397c80837 | ||
|   | 51132c817b | ||
|   | 1fe006d16f | ||
|   | bd31eddb94 | ||
|   | 0defb7d79d | ||
|   | 1e400df324 | ||
|   | 9ea48539b4 | ||
|   | d63e0ad78f | ||
|   | eaee38a19e | ||
|   | b3e9c46eff | ||
|   | 5dcc14153f | ||
|   | 4a66d705b8 | ||
|   | 9d7fcea5d6 | ||
|   | b8cd614775 | ||
|   | a9ab2d9b9e | ||
|   | cecf2d28e6 | ||
|   | a01f1014b9 | ||
|   | 77411760a0 | ||
|   | 0dcb65bb7c | ||
|   | d40be79c69 | ||
|   | b55d4b1733 | ||
|   | 40e28930a4 | ||
|   | 5a3579a3f9 | ||
|   | 9de8abadb6 | ||
|   | 05c5cdab96 | ||
|   | 1e1c1725ab | ||
|   | b5c57af869 | ||
|   | eb875ac8c1 | ||
|   | a36358d7d0 | ||
|   | 679e592a5c | ||
|   | b922441a7c | ||
|   | 941c587c68 | ||
|   | 77bd09bb8b | ||
|   | 8bcac1bed2 | ||
|   | cdded6cef7 | ||
|   | 8cbe4a571c | ||
|   | ee9d2173e0 | ||
|   | a450a7c6e1 | ||
|   | d41a77841d | ||
|   | ae06daba6a | ||
|   | 77aa85fbd3 | ||
|   | 989b1e6c2c | ||
|   | 9ef23d524d | ||
|   | f16e903623 | ||
|   | 0bb0829a9a | ||
|   | fa30b70453 | ||
|   | e4f90730b2 | ||
|   | 6fd522472c | ||
|   | 0f32de9d8c | ||
|   | f630d84858 | ||
|   | ee6f699b48 | ||
|   | ce9bdaef5c | ||
|   | 37c04fdeed | ||
|   | c51aa2d573 | ||
|   | b922e1ae73 | ||
|   | dd48f62d66 | ||
|   | f5b5312cf0 | ||
|   | 58a654a70f | ||
|   | ff0f3b4975 | ||
|   | 8df68ac878 | ||
|   | 2f9b313287 | ||
|   | cbf591a8b5 | ||
|   | 96da685e5d | ||
|   | 6ac14d0c57 | ||
|   | 4745a40f0b | ||
|   | 8993d87b32 | ||
|   | 8df80b67f9 | ||
|   | 466314675c | ||
|   | d75fd3fcde | ||
|   | 7ae83df5a5 | ||
|   | 19f55512c1 | ||
|   | 6e25db444e | ||
|   | d2c4b69f47 | ||
|   | 4170b4e21b | ||
|   | 9fb9ca47f6 | ||
|   | 917190d936 | ||
|   | 1e913f46f0 | ||
|   | 4c0ebc0e0f | ||
|   | 1b0f5b8567 | ||
|   | 6a4bb5c1b7 | ||
|   | 3fea9f5a33 | ||
|   | 7600f59f3a | ||
|   | 915121a0dd | ||
|   | 1be5b3abd8 | ||
|   | e37661d53a | ||
|   | d06f78dbbd | ||
|   | 5d4766edbe | ||
|   | 72ac92ec68 | ||
|   | 22ea508ff6 | ||
|   | b2213ded6d | ||
|   | 1ea2fe5b8d | ||
|   | 7227d2b2b2 | ||
|   | 0dcbf9f698 | ||
|   | 09e58df03f | ||
|   | d256db5072 | ||
|   | 10153f0063 | ||
|   | c6a1b977b3 | ||
|   | 870bb42e4f | ||
|   | b61c7b7220 | ||
|   | c58fb92365 | ||
|   | 5e952a561b | ||
|   | ca72360b6f | ||
|   | 630b4ed3b9 | ||
|   | cba9680ef9 | ||
|   | 2310dcd136 | ||
|   | ee00a80796 | ||
|   | 051bac5e59 | ||
|   | 771c58d000 | ||
|   | 53cec6db09 | ||
|   | 43e059801e | ||
|   | ce35a06ec3 | ||
|   | 32e4371208 | ||
|   | 0d376e7fd6 | ||
|   | 2b20d5b260 | ||
|   | 719e4afd8c | ||
|   | 9cdf660ddb | ||
|   | 5dbccf3473 | ||
|   | 8db2d04dbb | ||
|   | 209850064a | ||
|   | e628b7d527 | ||
|   | 61dbb211c0 | ||
|   | 71f4a5667c | ||
|   | b33dc7d831 | ||
|   | c5a4a0db2c | ||
|   | b9e045e80b | ||
|   | cfd0c5433e | ||
|   | ebad387c1a | ||
|   | 3f39bd9f35 | ||
|   | f8236eb397 | ||
|   | 23a56c95e3 | ||
|   | 6f8aa07a10 | ||
|   | 594f9e8632 | ||
|   | aeae065007 | ||
|   | b12fdcf018 | ||
|   | 84fabf14c8 | ||
|   | 0ec47db9cd | ||
|   | 3cf0004665 | ||
|   | 40258f6a2f | ||
|   | b335114219 | ||
|   | 998b08f5d8 | ||
|   | 991c30943a | ||
|   | ad2be39c33 | ||
|   | c3936cd4b6 | ||
|   | d2e595aac3 | ||
|   | b8aa9e5609 | ||
|   | 2109c4e1ae | ||
|   | ac3ad17a9e | ||
|   | 31c7306bd2 | ||
|   | 4741aab7a3 | ||
|   | 679e3b8bea | ||
|   | 25ea0d274b | ||
|   | 12b58be8c2 | ||
|   | e4f1485c82 | ||
|   | 1b2ff0f6f8 | ||
|   | a31755bbc8 | ||
|   | 311e0f21eb | ||
|   | b86366f243 | ||
|   | 58d1c80b12 | ||
|   | 182915f801 | ||
|   | 50c08e55cd | ||
|   | 4307a09621 | ||
|   | d531d6d221 | ||
|   | 4cf94a6fa0 | ||
|   | 4cb60f4870 | ||
|   | d82edb2838 | ||
|   | c91eefe469 | ||
|   | 327affa340 | ||
|   | 4e7c2589e4 | ||
|   | 17ce07230d | ||
|   | fda6c9a3d9 | ||
|   | 92af2922c7 | ||
|   | 1cee69da6c | ||
|   | f54b66eb75 | ||
|   | 3563bad5fc | ||
|   | 1f3f96f7aa | ||
|   | 7022adb89b | ||
|   | bac57de5f5 | ||
|   | bdd56a52d3 | ||
|   | dcdbd02102 | ||
|   | b68c4e2106 | ||
|   | 67cb75e9d3 | ||
|   | f9eefe866c | ||
|   | c636618cf3 | ||
|   | 0f82c16936 | ||
|   | d328eeb5be | ||
|   | d90ea0d3be | ||
|   | e7ece66717 | ||
|   | 6c9c40fd7c | ||
|   | 529c1ec9f4 | ||
|   | 93429840c8 | ||
|   | 6aee7f95b7 | ||
|   | 0b70ccf9e9 | ||
|   | da586828be | ||
|   | 2e4431f0b8 | ||
|   | 162273da47 | ||
|   | 22fb9797c4 | ||
|   | f6735401f4 | ||
|   | 06c4c58613 | ||
|   | c80238d66f | ||
|   | 6a560016dd | ||
|   | 99b7663fa9 | ||
|   | be0f34a69e | ||
|   | 3a2e73cc94 | ||
|   | 3ee0457cfa | ||
|   | e19173c1f3 | ||
|   | 4a5d2e2558 | ||
|   | 027d6be48f | ||
|   | 0f2cc92ba2 | ||
|   | 07bb1df74f | ||
|   | c29a6079bf | ||
|   | dfb56ce31c | ||
|   | 5a8027ae1f | ||
|   | bb2caabd61 | ||
|   | 14e4bc7eea | ||
|   | 9fb8f765e8 | ||
|   | fe0be98fde | ||
|   | fdba525e62 | ||
|   | dfdaa706bd | ||
|   | 1a782a9362 | ||
|   | 5f2d807861 | ||
|   | f2dd1e6456 | ||
|   | 155e73df16 | ||
|   | 05b7194bf7 | ||
|   | 597444c527 | ||
|   | 1c2dc79f51 | ||
|   | 106adf135c | ||
|   | dcfd367ff8 | ||
|   | 67ee43fac1 | ||
|   | a325ab8d6e | ||
|   | c94152c47c | ||
|   | a44bca3f07 | ||
|   | 698284f00e | ||
|   | 3b9d68f344 | ||
|   | e028d8085b | ||
|   | af1c97e2ea | ||
|   | b95d97d07b | ||
|   | 17a5bd03c5 | ||
|   | ada594faf3 | ||
|   | 4f0990dc29 | ||
|   | f66ec4430d | ||
|   | 67357e9964 | ||
|   | 7eb97348de | ||
|   | 0279b80b46 | ||
|   | d3936c07c7 | ||
|   | aa022400f7 | ||
|   | 66795d533a | ||
|   | ce7d8dee28 | ||
|   | 1f799689ed | ||
|   | 3463442631 | ||
|   | c35ca52b00 | ||
|   | 6d501c2e6e | ||
|   | a71d7e6557 | ||
|   | 30c2f9d9f3 | ||
|   | 544f9675c6 | ||
|   | 0c76321a6a | ||
|   | 10349b84d6 | ||
|   | 6fa4305aba | ||
|   | d9af207a11 | ||
|   | ad59eb4dfc | ||
|   | 874b015b20 | ||
|   | 21aabfdcb5 | ||
|   | e7370d1a0f | ||
|   | 855f727451 | ||
|   | 3b0ac0962e | ||
|   | 617dedc464 | ||
|   | 8b4a0da235 | ||
|   | dcc5206e3d | ||
|   | 9a81cbf4c0 | ||
|   | d96ed5f4a4 | ||
|   | 102b6c32eb | ||
|   | 2af1e1874e | ||
|   | 680455a21b | ||
|   | b568cdb1aa | ||
|   | bc0d906adc | ||
|   | 2b385e5f92 | ||
|   | 616057a433 | ||
|   | 9a20aa51de | ||
|   | 6c8b31420c | ||
|   | 0514cb304d | ||
|   | 0a4ee60ea0 | ||
|   | caa30e41d8 | ||
|   | dc76a175ad | ||
|   | 92768c36aa | ||
|   | 2a3a4bff70 | ||
|   | cacfe4f3ca | ||
|   | 37150520e1 | ||
|   | 3aadb63d80 | ||
|   | 0e0b8d1027 | ||
|   | 5e4a94e6b6 | ||
|   | db7850e218 | ||
|   | 1dcfd7bb59 | ||
|   | b28704a6ec | ||
|   | 0c6e56a150 | ||
|   | d71ff734a9 | ||
|   | 90652d3555 | ||
|   | f8a2fbc4c5 | ||
|   | 80759f9e69 | ||
|   | e692a191ed | ||
|   | 4e06a9629a | ||
|   | b3334e5fac | ||
|   | 4e326229da | ||
|   | 021222b407 | ||
|   | 6c60fa5161 | ||
|   | cd405ffc32 | ||
|   | 537b1c1ea9 | ||
|   | 257914b0d5 | ||
|   | 5cfaaa5d1a | ||
|   | 109c45bb95 | ||
|   | 851374e517 | ||
|   | 4094a4c448 | ||
|   | 987e1b544a | ||
|   | 5cf6b1cbde | ||
|   | 4318de6dc5 | ||
|   | 459d1cf82c | ||
|   | 48d52d9ab7 | ||
|   | 16a99e687f | ||
|   | fb37b0c147 | ||
|   | 9877ff330e | ||
|   | 6f88609d60 | ||
|   | 6263c4786b | ||
|   | 3061f6cf5b | ||
|   | cc8c1a5748 | ||
|   | ca897a8a35 | ||
|   | 77dd8bd27b | ||
|   | fe34749cfe | ||
|   | 646322b2a2 | ||
|   | 670b381df7 | ||
|   | ddf4b94bc6 | ||
|   | 794a92f911 | ||
|   | f6e2715f4a | ||
|   | 082e6f8830 | ||
|   | ee38124db7 | ||
|   | e06e1d9911 | ||
|   | 3851e76179 | ||
|   | d693f97a46 | ||
|   | ca274635d5 | ||
|   | 525692759d | ||
|   | e5491645e4 | ||
|   | 9f511a47e8 | ||
|   | 7b0644cdcd | ||
|   | 7527343629 | ||
|   | d173216941 | ||
|   | d28b5f7834 | ||
|   | 04f6ee79c3 | ||
|   | b046b40668 | ||
|   | 0a289e15b4 | ||
|   | ce8b51e7ef | ||
|   | df5ea9b675 | ||
|   | ff7fe7c107 | ||
|   | ac6af55335 | ||
|   | 001c3906b5 | ||
|   | 0d5d6db0ee | ||
|   | 72941b10bb | ||
|   | d6c92704a1 | ||
|   | ba511e07b4 | ||
|   | aa6b29fe7e | ||
|   | f5836c9fc9 | ||
|   | d7d1a90de6 | ||
|   | 16482c507b | ||
|   | 5abd72d42a | ||
|   | 2fa5ad982d | ||
|   | 43df7d0cd4 | ||
|   | 17d40855d2 | ||
|   | c924fe7950 | ||
|   | 908f345e22 | ||
|   | 858eea1e9e | ||
|   | 06c704c740 | ||
|   | 916e53c260 | ||
|   | 3f94a68e62 | ||
|   | 5c96f16e3d | ||
|   | 8e33d99901 | ||
|   | d27dd85dfd | ||
|   | 15515200ee | ||
|   | 7f40602da9 | ||
|   | 33e6ca6778 | ||
|   | 54b50c3a8a | ||
|   | fa3d98aa37 | ||
|   | e24aaa4ce1 | ||
|   | aed492b881 | ||
|   | a4c2363f43 | ||
|   | 0056a61db3 | ||
|   | 6d1573f901 | ||
|   | ef297dd8e6 | ||
|   | 958929aa77 | ||
|   | 1c0479a795 | ||
|   | 748226be29 | ||
|   | 27e1a8ad80 | ||
|   | 0802b6d506 | ||
|   | 29f8b4b786 | ||
|   | 2ebdf6060d | ||
|   | b98e7cb69f | ||
|   | 2071ec0c96 | ||
|   | 36bc77e2e2 | ||
|   | 88556078be | ||
|   | 27a07e20f5 | ||
|   | 5d1115f591 | ||
|   | 88d9e82fc9 | ||
|   | 50b01ed45d | ||
|   | 243d130667 | ||
|   | e33f73d08e | ||
|   | f505d742d8 | ||
|   | 727d20cc92 | ||
|   | 3567ae3529 | ||
|   | a9906e5d2a | ||
|   | 6ab35512da | ||
|   | cfcbe3d6e1 | ||
|   | 39c0c1a088 | ||
|   | f7ae010274 | ||
|   | 4fd5037c10 | ||
|   | 3fe09aa673 | ||
|   | 3a6858a277 | ||
|   | c287c7bb01 | ||
|   | 99061d92c1 | ||
|   | 5b269a782a | ||
|   | 71e53a4628 | ||
|   | 275387a972 | ||
|   | e68e3b516e | ||
|   | 3f7376f26b | ||
|   | 0e3ce019e4 | ||
|   | f20f479a4b | ||
|   | e95066a37c | ||
|   | e281b667c6 | ||
|   | ce0e92e12a | ||
|   | 56bb379024 | ||
|   | bafe4e909c | ||
|   | b6b0b54cdb | ||
|   | a9a45b9569 | ||
|   | 864d806ee8 | ||
|   | 4cda5d89fb | ||
|   | 5b730ffb72 | ||
|   | e2b140b8dd | ||
|   | d2a29c2f87 | ||
|   | 60e62dc5ab | ||
|   | 4f1684c714 | ||
|   | d3e7e8a630 | ||
|   | 437ddd3f76 | ||
|   | 0d715d879d | ||
|   | cfdf5cffac | ||
|   | d6314b30a2 | ||
|   | 03da68b1cf | ||
|   | 890630944d | ||
|   | 8d73ab65b2 | ||
|   | e54124fdb8 | ||
|   | e4fafb911a | ||
|   | 2ef059807a | ||
|   | dba711d099 | ||
|   | ec13bba4da | ||
|   | 8736c9ec4c | ||
|   | 286df8f560 | ||
|   | 92afbd45e8 | ||
|   | d293c22a52 | ||
|   | c660c9df8e | ||
|   | ed2eadaf56 | ||
|   | fa26333a5b | ||
|   | be7cfb78de | ||
|   | ec1d2cba40 | ||
|   | a93cd20e4d | ||
|   | 25b3f2d1a6 | ||
|   | b44bdd21cb | ||
|   | 53ea1843ab | ||
|   | 34091176d5 | ||
|   | ac8a6887b6 | ||
|   | cc0a0b56ed | ||
|   | 0e989185ce | ||
|   | aadf961184 | ||
|   | 1abeac8811 | ||
|   | f8a304abdc | ||
|   | 41a38428fc | ||
|   | d3850cf98f | ||
|   | 02d906d3ae | ||
|   | 6de72ecc77 | ||
|   | 2a5dbe840c | ||
|   | 86b6bcc1d9 | ||
|   | 3023cff2b5 | ||
|   | f3a4764a1d | ||
|   | 0d46a108b8 | ||
|   | 8114c11d58 | ||
|   | e3425cfa9e | ||
|   | af78344e5d | ||
|   | a2121f2483 | ||
|   | 7d97905716 | ||
|   | 61adfea196 | ||
|   | 3dd616f6ff | ||
|   | d5e6d161f2 | ||
|   | d1515456bc | ||
|   | 7faa8b7a02 | ||
|   | 5b0cbf9eb1 | ||
|   | 74db0576af | ||
|   | d0b13f0eb0 | ||
|   | 29a964d5b7 | ||
|   | 5e6174c087 | ||
|   | 199d770e15 | ||
|   | c47e29c7c8 | ||
|   | fed969ed64 | ||
|   | 9cb686a6b7 | ||
|   | eddeda7bab | ||
|   | ca07540675 | ||
|   | fb5f563537 | ||
|   | 2f9c5cdb22 | ||
|   | fcf50820e8 | ||
|   | 3fd0241abb | ||
|   | ab0c82965c | ||
|   | 5173a56ebd | ||
|   | 9cd993d1da | ||
|   | 73faf67084 | ||
|   | fd51362545 | ||
|   | 56b99f4e19 | ||
|   | 63cdfa2d85 | ||
|   | 242874e705 | ||
|   | a5caa807f5 | ||
|   | c2c17fd053 | ||
|   | f54cc5796e | ||
|   | a9f99aed48 | ||
|   | 7eaaa8f92a | ||
|   | ca9f5a18d4 | ||
|   | 4f62900cd3 | ||
|   | 2c9e1d942b | ||
|   | 4032393c0e | ||
|   | 8e854062e8 | ||
|   | cbf9c8ec1a | ||
|   | 494593c745 | ||
|   | 3af832ec18 | ||
|   | 7e0cd223fd | ||
|   | 8c0cd09823 | ||
|   | f931fc5a85 | ||
|   | c8b4611d8d | ||
|   | 7764169aa3 | ||
|   | 567dd3fabb | ||
|   | 8d3c19c599 | ||
|   | b84333f8a1 | ||
|   | acdd08e9a2 | ||
|   | dbfd6a2368 | ||
|   | 5af96943e3 | ||
|   | 05325b135d | ||
|   | 9d858d5cd7 | ||
|   | e82c50ed73 | ||
|   | 4ce98d57dd | ||
|   | 114c6d36d1 | ||
|   | 538c88ced4 | ||
|   | 7c35904062 | ||
|   | 5c3c6b63ba | ||
|   | e698c09298 | ||
|   | a048ea668f | ||
|   | 5af78ad2cd | ||
|   | 338e89176d | ||
|   | a266599118 | ||
|   | 80f624e4cc | ||
|   | 002d56d8b3 | ||
|   | be4a1e7fd7 | ||
|   | a0a45333f1 | ||
|   | dba998fea0 | ||
|   | fe2b49cf81 | ||
|   | c90f1511dc | ||
|   | 763d17281f | ||
|   | 1ae5339c33 | ||
|   | 7562e0e870 | ||
|   | 0e456f33c1 | ||
|   | 6778d36454 | ||
|   | bc54860ad6 | ||
|   | 4894578b72 | ||
|   | fb7f7d0c75 | ||
|   | 48fa4e116c | ||
|   | e9d3928fe0 | ||
|   | 2a6f02fa29 | ||
|   | ce0e5be7ce | ||
|   | a8b6a40f13 | ||
|   | 88a91e0769 | ||
|   | 21f4676b16 | ||
|   | bb2a874fd5 | ||
|   | 56667e717b | ||
|   | caaaa05710 | ||
|   | d69e6bb7aa | ||
|   | a1903e5d67 | ||
|   | 64d8db0c93 | ||
|   | 7b608fd0c9 | ||
|   | 19cbffb5e2 | ||
|   | c5ea6b0502 | ||
|   | 639ed40314 | ||
|   | c5cbda0bbe | ||
|   | 59e37210f3 | ||
|   | 9351f66c26 | ||
|   | 7432c4dbfe | ||
|   | 1069bea273 | ||
|   | c740d105c9 | ||
|   | 66a5a9863f | ||
|   | 7ca47b8916 | ||
|   | bcfa4866fe | ||
|   | de8377ab53 | ||
|   | b85b1e8834 | ||
|   | eba5a48abd | ||
|   | a90ade0446 | ||
|   | 0b86eb9b4c | ||
|   | 359c4fef9d | ||
|   | 71b1cb3b9c | ||
|   | b740cc23d3 | ||
|   | 613e9866aa | ||
|   | bc937d38a2 | ||
|   | 35fcf39fc8 | ||
|   | bd45dc5d0f | ||
|   | 7377974731 | ||
|   | 669b67e666 | ||
|   | a2b85ba1fd | ||
|   | dc22109fa7 | ||
|   | 4471a6377e | ||
|   | 3f762a416d | ||
|   | a59a6ce8e4 | ||
|   | 189514c6de | ||
|   | dded874350 | ||
|   | e42fa0e027 | ||
|   | 33ffe95294 | ||
|   | 0657238ad1 | ||
|   | 4efece4ab8 | ||
|   | b9b2ed64f9 | ||
|   | 16bc0531f4 | ||
|   | 39c34078d6 | ||
|   | 9318f05e2b | ||
|   | 95f3073e6f | ||
|   | 6f4a9390ba | ||
|   | 0eb6967bb2 | ||
|   | 2854630b1c | ||
|   | bbd781c420 | ||
|   | f7cfdfcf63 | ||
|   | af7c32d3aa | ||
|   | 0d334369f0 | ||
|   | 08f3630f01 | ||
|   | 2b17838820 | ||
|   | 0b0338a9cb | ||
|   | a24f2ae884 | ||
|   | ec5b0b5403 | ||
|   | df2d449f9b | ||
|   | eecd221d40 | ||
|   | 3951b891c1 | ||
|   | eab455422f | ||
|   | 75c93d72be | ||
|   | 6842e8263d | ||
|   | f35d94d98e | ||
|   | 01206a0e2e | ||
|   | cf9e3193bc | ||
|   | f5239ffb0b | ||
|   | 746fe7ba09 | ||
|   | 7c1a986e61 | ||
|   | c6b772da11 | ||
|   | 11cfe38d1c | ||
|   | 4ca6de2b54 | ||
|   | e1abcc684a | ||
|   | bbd936fdfa | ||
|   | f58eed13d0 | ||
|   | 8a708fd97e | ||
|   | bf8d993743 | ||
|   | c029122a8e | ||
|   | 54327d579b | ||
|   | 6c10aa33e1 | ||
|   | b7c098c5e6 | ||
|   | c18c42e866 | ||
|   | 386f99cb1d | ||
|   | a4b606c6e9 | ||
|   | baa8d2c326 | ||
|   | e1ca0f3ff9 | ||
|   | ca2be2f499 | ||
|   | 5960e7dda6 | ||
|   | efc04645b7 | ||
|   | f888fb4ac7 | ||
|   | e71e97cb68 | ||
|   | 1b4c5fd34d | ||
|   | 802ec5a14e | ||
|   | 5341478036 | ||
|   | 7694b21dff | ||
|   | cf061b7d30 | ||
|   | 7fffb6526c | ||
|   | dd5b16831c | ||
|   | b3ca2ea179 | ||
|   | b5d67f90e4 | ||
|   | ce42f7c9f1 | ||
|   | 02869d7428 | ||
|   | 67b35b76ac | ||
|   | baebabbfd8 | ||
|   | 154ee1a73e | ||
|   | b3fb6bd990 | ||
|   | 926d51839f | ||
|   | 8de966ea88 | ||
|   | 85b0a40a0e | ||
|   | 88fe94bd6a | ||
|   | 1b53c590f2 | ||
|   | 2ee5b35f48 | ||
|   | f0dd7b7dae | ||
|   | f08c0afbea | ||
|   | 5a417c6a29 | ||
|   | 9f32e6e50d | ||
|   | 801cfdbc24 | ||
|   | 889d994dbc | ||
|   | 97c28e1e51 | ||
|   | ad6e2b4b94 | ||
|   | da12daffee | ||
|   | 30319e51e5 | ||
|   | 294ea17222 | ||
|   | fad954df18 | ||
|   | 25be00931a | ||
|   | cd9ed1706d | ||
|   | b034b86be8 | ||
|   | aa189a7fc6 | ||
|   | 074cbdad28 | ||
|   | cbc0ef860b | ||
|   | ab64ee872b | ||
|   | a63515b8f4 | ||
|   | 4dcd6df136 | ||
|   | cea1bbde23 | ||
|   | 2c8447853b | ||
|   | 116664285d | ||
|   | 213b18e33b | ||
|   | 299f981441 | ||
|   | 7ea827f8d3 | ||
|   | c2af5c6a3f | ||
|   | 63812ca951 | ||
|   | 98bdfcef65 | ||
|   | ac97ed685f | ||
|   | c5ff9b353c | ||
|   | 04c1988665 | ||
|   | 36c14ca587 | ||
|   | 0c118bed61 | ||
|   | 6c6474291e | ||
|   | 7fa89c9ba4 | ||
|   | d2aad3a3ca | ||
|   | ca09b0491e | ||
|   | 2e08ae82b1 | ||
|   | 2652c73a4f | ||
|   | a21bff1dbd | ||
|   | 14fc3dc9b3 | ||
|   | 5cb295341c | ||
|   | b854c3b00e | ||
|   | 2d3ff6a97c | ||
|   | c627ed4b6f | ||
|   | 70ec183fca | ||
|   | 1e45b7f50b | ||
|   | 293479a1f2 | ||
|   | 7b8962a796 | ||
|   | 852a14992c | ||
|   | 37e6a9ebc2 | ||
|   | b3f5bf1583 | ||
|   | a3a8c19dc2 | ||
|   | bc94de5626 | ||
|   | c3a64b3d6c | ||
|   | 70eed10a34 | ||
|   | 56c3983885 | ||
|   | 78eaa49cd6 | ||
|   | 2668a42f0c | ||
|   | 4a7f1116ac | ||
|   | f12ce78b5c | ||
|   | 610009fb7f | ||
|   | 4cb075b168 | ||
|   | cf96e6c642 | ||
|   | dd1bd8ad10 | ||
|   | facfa26eed | ||
|   | 0012a3ede7 | ||
|   | b61a818a3f | ||
|   | a2c44dedce | ||
|   | a8ad4f784a | ||
|   | 78d69bcbf0 | ||
|   | 414361a3db | ||
|   | 1d4071d6d8 | ||
|   | 47daf1b358 | ||
|   | 7a910a8cc1 | ||
|   | 9818c7b6a4 | ||
|   | ca9e5e8531 | ||
|   | aafee60033 | ||
|   | adf7c4ffb6 | ||
|   | 96965ae347 | ||
|   | bc2ef5d726 | ||
|   | 7a539d9890 | ||
|   | c40408b337 | ||
|   | 4e2daf117b | ||
|   | 9553afc3c2 | ||
|   | 26352c9eb4 | ||
|   | 62c167fc77 | ||
|   | 03c774eae7 | ||
|   | 53992bf0d5 | ||
|   | ff99e5ac9a | ||
|   | 0cc318664d | ||
|   | 43c427b253 | ||
|   | 44c8d60a70 | ||
|   | 54252184ab | ||
|   | 7ae68b20e7 | ||
|   | 208234b934 | ||
|   | 1729b9f29c | ||
|   | 5d69334287 | ||
|   | 4d54fb675f | ||
|   | e93de54eb5 | ||
|   | 43441d8291 | ||
|   | d6dce1efe9 | ||
|   | dca69f053a | ||
|   | 5ebbed8160 | ||
|   | 3fdb330bd9 | ||
|   | c05dbc451a | ||
|   | 5f623e32c4 | ||
|   | 7c37c5c06f | ||
|   | 4d541ca969 | ||
|   | e4a67183bd | ||
|   | d25be686ee | ||
|   | a3be239a60 | ||
|   | 709a053c7c | ||
|   | d39c6bef4b | ||
|   | 84a8158aa2 | ||
|   | a7c5826e05 | ||
|   | 2da39e2fbb | ||
|   | d6e0164766 | ||
|   | fbc85bed64 | ||
|   | 52b54fe154 | ||
|   | f44341a8e2 | ||
|   | 9f6130cbaa | ||
|   | 24d73f5822 | ||
|   | d3bdeaab3f | ||
|   | b66f4b9322 | ||
|   | 9dfe5f5f07 | ||
|   | d6fc020ba7 | ||
|   | 8397b118b7 | ||
|   | 74dc000ac1 | ||
|   | 9b61991523 | ||
|   | 702c79a92f | ||
|   | a27822b557 | ||
|   | bdcb00a3b2 | ||
|   | ac5a485651 | ||
|   | e8c65388eb | ||
|   | f2cbb61d49 | ||
|   | 0a1c61d9d3 | ||
|   | 01a0fff4c2 | ||
|   | bf9516d164 | ||
|   | fdbf8cb0ee | ||
|   | 7e8a176751 | ||
|   | 61504ae3b1 | ||
|   | dd76525372 | ||
|   | 1c0f8b4289 | ||
|   | 63043b4927 | ||
|   | 3ea4c66d41 | ||
|   | 781d7fbf1a | ||
|   | e7ebbffbfd | ||
|   | 39f054eef6 | ||
|   | 7a620c794d | ||
|   | cc13f3e10d | ||
|   | b0e41abf5a | ||
|   | 5347897b7d | ||
|   | 6f8fae9a7b | ||
|   | 62b50d1475 | ||
|   | 2fb0c86f1e | ||
|   | aedd997604 | ||
|   | aa3da942cb | ||
|   | 87e1a14a4b | ||
|   | 00f6bb7c82 | ||
|   | cca93c2be2 | ||
|   | ad9d0608d4 | ||
|   | 3c5688c6f6 | ||
|   | ece92a886a | ||
|   | 85777ea491 | ||
|   | b8a84dbd83 | ||
|   | 35c31906b7 | ||
|   | 1fa940876f | ||
|   | c652123145 | ||
|   | 1c52fff1cc | ||
|   | 261f08b90e | ||
|   | 2d48581570 | ||
|   | b8a7ecfe69 | ||
|   | cbc2de6b85 | ||
|   | 9d2bb67834 | ||
|   | 3d7ff9765a | ||
|   | 28f2def21f | ||
|   | 0ee303789a | ||
|   | 6ccc92020c | ||
|   | e3fe66d3ec | ||
|   | ab5605d54b | ||
|   | a7a90613c2 | ||
|   | 19d95ebd10 | ||
|   | 0e1849346b | ||
|   | 0f34e3bed9 | ||
|   | c8b66b25e8 | ||
|   | e6f07a6fe4 | ||
|   | 51469f8fa2 | ||
|   | d78b2a569f | ||
|   | ec6c970775 | ||
|   | 67c45efff7 | ||
|   | a54772bf35 | ||
|   | 166be2a94d | ||
|   | 7150d05399 | ||
|   | 36a6e22f27 | ||
|   | dc13eaed1f | ||
|   | 001bd60d36 | ||
|   | b063042988 | ||
|   | fa1d49add5 | ||
|   | b45248bf99 | ||
|   | dfe862dcd5 | ||
|   | d4ddeaa917 | ||
|   | 13a49866a7 | ||
|   | 7e2aea92b0 | ||
|   | 7db51b2f8d | ||
|   | ae1b963e0f | ||
|   | b29b7e0185 | ||
|   | 71270260bf | ||
|   | 22abbc1d41 | ||
|   | 32698fe0be | ||
|   | 16f8d6a936 | ||
|   | 046d6f3bc1 | ||
|   | e33c4086b9 | ||
|   | 51d754a53e | ||
|   | 49976bcd83 | ||
|   | f991d2bdb4 | ||
|   | e6ff23885e | ||
|   | 7aa859a442 | ||
|   | 180deb867a | ||
|   | a5c531f0a4 | ||
|   | 5dd70b88d3 | ||
|   | 40f2718265 | ||
|   | ddd106655d | ||
|   | cc61ad01b6 | ||
|   | 8a44c1f6d5 | ||
|   | e370cbb06b | ||
|   | cb0c2e3b9c | ||
|   | 80360cc79a | ||
|   | 559a979536 | ||
|   | 5e88537809 | ||
|   | 8b60baea99 | ||
|   | ac61c33d1c | ||
|   | 3088f04e6f | ||
|   | 864dca1b67 | ||
|   | 15320018f0 | ||
|   | 6226dd5b80 | ||
|   | aafc1064d9 | ||
|   | fb2fbc875d | ||
|   | 8085db6ba9 | ||
|   | 4f20769a6c | ||
|   | 090199f9de | ||
|   | cd3635985e | ||
|   | 8a7179195f | ||
|   | e45e29b431 | ||
|   | ca28fc27dc | ||
|   | 08b2cde8e8 | ||
|   | 489d88e02a | ||
|   | dff39ffd20 | ||
|   | 3c948ef063 | ||
|   | 7087565d92 | ||
|   | 3467358663 | ||
|   | 45a1c25a29 | ||
|   | 70a11a12b3 | ||
|   | 5d5b0d572e | ||
|   | 7c8eadfddf | ||
|   | 89ca0c537d | ||
|   | a92a6404cb | ||
|   | 78459fcb31 | ||
|   | 41fc0fd084 | ||
|   | 5c9655abc3 | ||
|   | 3301797491 | ||
|   | eb5e1d34df | ||
|   | 9e92e5995f | ||
|   | e96f2d7be0 | ||
|   | 03cb51844b | ||
|   | 6b06cc9216 | ||
|   | 6b49323f05 | ||
|   | 4a11fab2b1 | ||
|   | c382191e75 | ||
|   | 4d480b8761 | ||
|   | cd25562fd2 | ||
|   | 9a3d560d9e | ||
|   | 4924fb95f8 | ||
|   | 6de67fe81f | ||
|   | bc71827c01 | ||
|   | a8ade3a04b | ||
|   | eca04e2e92 | ||
|   | 763b9fc1da | ||
|   | add75fbc77 | ||
|   | 86b1ac5d7c | ||
|   | b51197936b | ||
|   | 64609ce5cf | ||
|   | b81cbf9062 | ||
|   | e7e881e5d7 | ||
|   | e236a76d5a | ||
|   | ad8a827c1f | ||
|   | 08ac33bc5c | ||
|   | 5cf39a2970 | ||
|   | 1c9321d5a1 | ||
|   | 97a8d865dc | ||
|   | 982133d9b6 | ||
|   | d23935a269 | ||
|   | 1c343a444b | ||
|   | 1c9696b68e | ||
|   | ecd23d0abd | ||
|   | 010d1b5ff8 | ||
|   | 46394a7c0f | ||
|   | fc86034fab | ||
|   | 03012cc175 | ||
|   | 8518333406 | ||
|   | b2e0e25f1c | ||
|   | 9673be17cb | ||
|   | fa8786e230 | ||
|   | 21f72baae2 | ||
|   | 4b78af268f | ||
|   | a734199383 | ||
|   | 046b741700 | ||
|   | ce0b6f0d56 | ||
|   | 6de0622c1a | ||
|   | 6229b81730 | ||
|   | c701379a2e | ||
|   | 0783968121 | ||
|   | 307f5e6e56 | ||
|   | cb29685a24 | ||
|   | dabba89682 | ||
|   | 2efd4f2a77 | ||
|   | 90296b3ef0 | ||
|   | 8f02fe0cc6 | ||
|   | 7a6edcdddb | ||
|   | 81139c0098 | ||
|   | 6a6268c068 | ||
|   | 68133ec8e3 | ||
|   | 314f92f2d8 | ||
|   | 8b5db328ec | ||
|   | 615b76f78c | ||
|   | f2912c14ea | ||
|   | 08f33d7e9e | ||
|   | c034cb5985 | ||
|   | e3cd15dced | ||
|   | 8439d4e827 | ||
|   | 2b501904cf | ||
|   | ea986a1f1b | ||
|   | b924357ea9 | ||
|   | b823d74ac3 | ||
|   | d1e2019cd7 | ||
|   | 70573eba2c | ||
|   | cf46653333 | ||
|   | 8d3fcbd897 | ||
|   | 1900538315 | ||
|   | a9feae6110 | ||
|   | 8d822f2cb4 | ||
|   | c12e486f59 | ||
|   | d0d0bed333 | ||
|   | 8799321312 | ||
|   | 00d2997971 | ||
|   | 69f7f233fd | ||
|   | 793e8643bf | ||
|   | 521ef8e28f | ||
|   | 7433d85418 | ||
|   | ba1cf12817 | ||
|   | 7dc7b95bfd | ||
|   | 59352e4ca7 | ||
|   | 011d026d76 | ||
|   | 89a8184ad2 | ||
|   | a23e10dff5 | ||
|   | 535603fac4 | ||
|   | fb6282da57 | ||
|   | 23766cd01d | ||
|   | 44b2afb218 | ||
|   | 9e82e59fc8 | ||
|   | e006538514 | ||
|   | fad5dfa4f4 | ||
|   | b737ee0240 | ||
|   | 9d9f774dad | ||
|   | 526ee9c9db | ||
|   | 671eff324d | ||
|   | a93cf04aca | ||
|   | e93a67e644 | ||
|   | b29a52dfa8 | ||
|   | 4ed99ba851 | ||
|   | 3e92e716b2 | ||
|   | c6c8f6563d | ||
|   | 138c911ef4 | ||
|   | e5fe6401a0 | ||
|   | bed643e627 | ||
|   | 4ac25a50ed | ||
|   | d9cf189ef6 | ||
|   | 6e19878973 | ||
|   | 9f9c4d6ed0 | ||
|   | 567848e94f | ||
|   | 221cbcc1ac | ||
|   | dc2086dab4 | ||
|   | 7be2a03c86 | ||
|   | e87f8f5b93 | ||
|   | 11a063ea66 | ||
|   | 1d26f4c5f7 | ||
|   | 8a09558ed8 | ||
|   | 60b1e692b9 | ||
|   | 0a1865d0dd | ||
|   | 3d94c70c48 | ||
|   | 7d7f967d5e | ||
|   | ce554e6c77 | ||
|   | 5d151cca9d | ||
|   | e47d90b5a6 | ||
|   | e4730191db | ||
|   | 49aab492e0 | ||
|   | 2d4d246268 | ||
|   | 09e558ae0b | ||
|   | a3fd6633c4 | ||
|   | 1eb246c98b | ||
|   | 96e0c0df20 | ||
|   | aa8f420681 | ||
|   | 7974b5a95c | ||
|   | ed4570cb4d | ||
|   | 01d851440b | ||
|   | e5943b64c1 | ||
|   | 933e56494c | ||
|   | 140e73be4e | ||
|   | 960b9b855f | ||
|   | 1e1d55b26d | ||
|   | 925bf7715c | ||
|   | 399d3ad85a | ||
|   | d923c03d52 | ||
|   | 699b91ab8d | ||
|   | abd6eb2ff3 | ||
|   | 32f29e72c6 | ||
|   | e76bac4131 | ||
|   | 8b94642ab1 | ||
|   | d3497148c5 | ||
|   | 27baa55443 | ||
|   | fd3d4d479a | ||
|   | 4b0a2d050a | ||
|   | d85c14864b | ||
|   | ee696e6f36 | ||
|   | 6ccbd8472c | ||
|   | 8ec26e9ea9 | ||
|   | 45e31a153c | ||
|   | 7c23d800e6 | ||
|   | 4dbf6af733 | ||
|   | bdc03b1c75 | ||
|   | 9bfc74a1bc | ||
|   | 5d03917877 | ||
|   | d2f975a0f3 | ||
|   | eedd47860a | ||
|   | 6e59248ea6 | ||
|   | 365554d064 | ||
|   | 70d1cb86fd | ||
|   | ccb7c0d579 | ||
|   | fd9941e2d8 | ||
|   | 2f89563fca | ||
|   | 261f601bd5 | ||
|   | 5157e4965a | ||
|   | 3ffd25f9e1 | ||
|   | 665ab34f25 | ||
|   | 37f227ae74 | ||
|   | f6eb29d800 | ||
|   | f5315d9ba7 | ||
|   | 124cc9621d | ||
|   | 3faa7226e7 | ||
|   | 6070b41c9b | ||
|   | 50ddfea617 | ||
|   | e74ad86f14 | ||
|   | 2bd2490539 | ||
|   | 5c0378a684 | ||
|   | 2bd5aca3a4 | ||
|   | ccb59fbad3 | ||
|   | 6c66d02aff | ||
|   | 9f03598259 | ||
|   | 8191246c19 | ||
|   | 437769ac0b | ||
|   | f97a1103b1 | ||
|   | 9b0c9be7dd | ||
|   | 97c7f3bc67 | ||
|   | 2503271a45 | ||
|   | d335f263f3 | ||
|   | 1c34635016 | ||
|   | b6a35e9477 | ||
|   | 6aa8251b98 | ||
|   | 3b4bf90a13 | ||
|   | 0c71756009 | ||
|   | 2f6abb8aa1 | ||
|   | 42582e21f7 | ||
|   | af49a4dd5a | ||
|   | b2081faf87 | ||
|   | f960934eb9 | ||
|   | 5522725f5d | ||
|   | 9f3d36bab0 | ||
|   | 87e7085c22 | ||
|   | d8eac56f5e | ||
|   | c20557f690 | ||
|   | 65bdc4cf43 | ||
|   | ee79c196df | ||
|   | 41682bfcbb | ||
|   | 34be8c9213 | ||
|   | aebb9f89d1 | ||
|   | 40f6201509 | ||
|   | 2e8e2b04a1 | ||
|   | 015780fc72 | ||
|   | c64e433a69 | ||
|   | e21f46d824 | ||
|   | ef79546508 | ||
|   | 2993fdb169 | ||
|   | 365b1c6299 | ||
|   | 9565b695ef | ||
|   | 89cedd411e | ||
|   | a51742b47c | ||
|   | ea3b897d5d | ||
|   | e432d67b3b | ||
|   | bd7dc8b5e7 | ||
|   | a7ac700fe1 | ||
|   | ff87958188 | ||
|   | f308cd392b | ||
|   | e4bea17fb8 | ||
|   | 2c47cfbe25 | ||
|   | b0685541d9 | ||
|   | f097c15c61 | ||
|   | 511fa37c84 | ||
|   | a82ca6adb2 | ||
|   | 05e3e46f5a | ||
|   | 6d399f0303 | ||
|   | ecebfc34fa | ||
|   | 59b53f3db4 | ||
|   | e86916a7f9 | ||
|   | 11ae073c12 | ||
|   | aec53b2849 | ||
|   | 0f42ab230e | ||
|   | 211c92c387 | ||
|   | 2f1ec09aef | ||
|   | 4561d844e4 | ||
|   | 3caa57358f | ||
|   | 94195d5339 | ||
|   | c9a552c89c | ||
|   | 6b123921a4 | ||
|   | 383eaf44ac | ||
|   | 223d15802e | ||
|   | bdf2f6c3e1 | ||
|   | fdc186c92f | ||
|   | ab6141edb7 | ||
|   | d0dcf53575 | ||
|   | ab906f17de | ||
|   | 28ef33b0a0 | ||
|   | 376dedebb1 | ||
|   | 137c6458f7 | ||
|   | 75e0990eb3 | ||
|   | 62a6c725d6 | ||
|   | d4554c2e5c | ||
|   | d6a398cf2c | ||
|   | 68e3bcbcda | ||
|   | 6864e13e6f | ||
|   | 942fad1d6f | ||
|   | 29e6b229ac | ||
|   | a4ce5d1687 | ||
|   | cb8d6a0939 | ||
|   | e38128119c | ||
|   | c7c7924d37 | ||
|   | b5a24fd877 | ||
|   | e1ed5b73d0 | ||
|   | 3e47d26e44 | ||
|   | e0d17e496a | ||
|   | 6cf99cd0f2 | ||
|   | 31d84100cd | ||
|   | 0eb39aa9e3 | ||
|   | f457069881 | ||
|   | 47eef78365 | ||
|   | eaaadf40c9 | ||
|   | c9e2da5f53 | ||
|   | 53b7956968 | ||
|   | d13be829c3 | ||
|   | e18b2ab437 | ||
|   | 6777a615d4 | ||
|   | 41f2375053 | ||
|   | f385bd2236 | ||
|   | 35032d7eed | ||
|   | bfd48f187a | ||
|   | 7662da52e6 | ||
|   | 7722916fad | ||
|   | d82a1d7198 | ||
|   | 45925efe32 | ||
|   | a64bb1a990 | ||
|   | 650bf15db8 | ||
|   | 2b8e50b296 | ||
|   | 2731eb1c05 | ||
|   | f97aa05bdb | ||
|   | 4a68df084e | ||
|   | 83530b7adb | ||
|   | a2ef09466f | ||
|   | 7c9488105e | ||
|   | 3f32b040dc | ||
|   | 21b3c61162 | ||
|   | 5045fa6dcd | ||
|   | c4a3d70500 | ||
|   | 435bb34435 | ||
|   | bb9ca7f418 | ||
|   | 2e30ed17bd | ||
|   | 0b3d088782 | ||
|   | 6514eaf565 | ||
|   | f8e7602d96 | ||
|   | 565aef9637 | ||
|   | 82efb83c43 | ||
|   | f29ff67585 | ||
|   | 825bf8d61e | ||
|   | 1344b31535 | ||
|   | 9b8bddf7b2 | ||
|   | 8a087a876e | ||
|   | f8067aa592 | ||
|   | 2b837381f3 | ||
|   | cd6959b712 | ||
|   | 3e5f8c64d4 | ||
|   | 2d1c34d8e0 | ||
|   | 48d532777a | ||
|   | f6336a6056 | ||
|   | cd7bdc8998 | ||
|   | 2b7b3c65cc | ||
|   | 98e02a8fed | ||
|   | a93391e247 | ||
|   | 102cc684dd | ||
|   | a230228441 | ||
|   | 135cad576c | ||
|   | 561fbf2cca | ||
|   | a8127d6102 | ||
|   | 2f28d3c7b6 | ||
|   | e59c735331 | ||
|   | 221014a2e3 | ||
|   | e2dbfa9ace | ||
|   | 121ff2b7be | ||
|   | 45465e994e | ||
|   | af85a8a340 | ||
|   | 5fe0e9395f | ||
|   | 1f1cabd144 | ||
|   | c3bab70434 | ||
|   | 1d6af22813 | ||
|   | a50798c78f | ||
|   | 379d41b6fb | ||
|   | 09da6828b8 | ||
|   | 9f386afe9c | ||
|   | 35dedd3d83 | ||
|   | 45c0d5a823 | ||
|   | 7bc5bfa140 | ||
|   | fda6def384 | ||
|   | 4bf4d45389 | ||
|   | 4e8eb2c996 | ||
|   | e43a9de2f3 | ||
|   | 1a9e97ee3b | ||
|   | 901fca2d12 | ||
|   | c23f8542b2 | ||
|   | 0189606445 | ||
|   | 9b31496b22 | ||
|   | b9676ac3eb | ||
|   | 764aabc459 | ||
|   | 61d2ff359b | ||
|   | 87ad8a1495 | ||
|   | 5d889e4a8f | ||
|   | b65a714d17 | ||
|   | ea1c4a8fc8 | ||
|   | 5beb1b2cd0 | ||
|   | f55e0b6775 | ||
|   | d124041726 | ||
|   | 7a26a92edd | ||
|   | 43c8ac0aa1 | ||
|   | 46e6ed480a | ||
|   | 9f30aba2b3 | ||
|   | 560ecbc6c3 | ||
|   | 8d9b6cca63 | ||
|   | 3972597163 | ||
|   | b0d17221f2 | ||
|   | be2cdca1e9 | ||
|   | f6ab1d63e8 | ||
|   | cf5e833898 | ||
|   | 6ed2e2694f | ||
|   | 04827188f2 | ||
|   | 560239c918 | ||
|   | a78929dadf | ||
|   | 349cc54c69 | ||
|   | a8ae97ba91 | ||
|   | aad6b69f00 | ||
|   | d74df935f4 | ||
|   | 5c8806b307 | ||
|   | a078633a32 | ||
|   | f022458383 | ||
|   | 6139d0d65a | ||
|   | 86a283b4ae | ||
|   | bb39a41e9e | ||
|   | 1568e98d43 | ||
|   | 0c9ecd1d76 | ||
|   | 799e67bbca | ||
|   | 561b597031 | ||
|   | 6d6908e625 | ||
|   | 4da4fb0676 | ||
|   | 7a8c05dc7c | ||
|   | d7bacdcbff | ||
|   | 73e927ff19 | ||
|   | e2c785b2d5 | ||
|   | 20e9952d98 | ||
|   | 0bf36ad031 | ||
|   | f3435c5e35 | ||
|   | 166ec74ff9 | ||
|   | 6b3c6c12ff | ||
|   | 5161758193 | ||
|   | bea32cfe38 | ||
|   | 8cfd803222 | ||
|   | 9a567721a8 | ||
|   | 3a49c8f2da | ||
|   | 12938799a6 | ||
|   | 89807fb55f | ||
|   | 891a24c6ba | ||
|   | 752b45083c | ||
|   | f00f552369 | ||
|   | 5c2b81d78f | ||
|   | a2b0531d5f | ||
|   | 752eb58ec0 | ||
|   | 7373b60522 | ||
|   | 59f0961594 | ||
|   | b776f98df8 | ||
|   | 7400284cff | ||
|   | da87eb7b4c | ||
|   | e1f9083c81 | ||
|   | 614376ed64 | ||
|   | 529dd6e3a8 | ||
|   | acb1bc0c0e | ||
|   | 8233f60569 | ||
|   | 4ae2160372 | ||
|   | 1df2dd9593 | ||
|   | d53a1d1412 | ||
|   | de9b43984a | ||
|   | 4a0b36a50b | ||
|   | fffe5e7003 | ||
|   | 0bac639a04 | ||
|   | 0d0d0a7c23 | ||
|   | c8e8a44747 | ||
|   | 173f8b093f | ||
|   | e46c88580a | ||
|   | e6033c952e | ||
|   | 3dfd0ff3b3 | ||
|   | dd65f35e5a | ||
|   | 0d550c9bce | ||
|   | 2aeb8b9390 | ||
|   | afa2fc0ba9 | ||
|   | 6a45919b25 | ||
|   | e4f7d607e1 | ||
|   | 0690ef31d1 | ||
|   | c3f02d833c | ||
|   | e273ac3a0d | ||
|   | 459d02abc8 | ||
|   | f5e8b26a55 | ||
|   | 2d27083509 | ||
|   | ce482c20cb | ||
|   | c2f149cca3 | ||
|   | ab0e1ec6e8 | ||
|   | 5e4f548321 | ||
|   | e53634ecef | ||
|   | 03e7019182 | ||
|   | 82b0bc63a3 | ||
|   | 04275e7d5d | ||
|   | 7a471ea6b2 | ||
|   | 45874fa333 | ||
|   | 74a5c6e745 | ||
|   | cfafe90fe0 | ||
|   | 12d396ffc5 | ||
|   | dc39b9e643 | ||
|   | e6a8c02745 | ||
|   | 88d695f7af | ||
|   | b673e0c219 | ||
|   | 5c819f7242 | ||
|   | 40bd2039d4 | ||
|   | 53f29613c2 | ||
|   | 3371709472 | ||
|   | 50c009265e | ||
|   | e169c0ce5e | ||
|   | f04d4b10e4 | ||
|   | f3e4338efc | ||
|   | c8979a6a49 | ||
|   | 5b495e2f51 | ||
|   | 42637a642b | ||
|   | 2375e7c100 | ||
|   | ae1b852821 | ||
|   | 44e4dd3700 | ||
|   | 24d7d599f1 | ||
|   | d85a41ad75 | ||
|   | 478ddfe102 | ||
|   | 198f832c3d | ||
|   | f0b78ffc04 | ||
|   | a445311705 | ||
|   | 1fe1fa9eac | ||
|   | 6258652c7b | ||
|   | 28d31b9d5b | ||
|   | 75426cc498 | ||
|   | ae29e8bbab | ||
|   | 2b9c7e04a4 | ||
|   | d1aba56096 | ||
|   | 3985d58d3c | ||
|   | 1479b61214 | ||
|   | 15a249eb54 | ||
|   | 08b3d6bbb0 | ||
|   | 710c5e2c31 | ||
|   | 17fa615bd3 | ||
|   | 6bfed97710 | ||
|   | f9e286123f | ||
|   | 613fd1bcf0 | ||
|   | 52ce52d466 | ||
|   | cede5ac9d2 | ||
|   | 89559eae2b | ||
|   | d7fb2e6403 | ||
|   | e3119b457c | ||
|   | ae27a5b7b7 | ||
|   | 302cb27e98 | ||
|   | 2d3481b9a9 | ||
|   | 9b67e988db | ||
|   | 15f1fdddd9 | ||
|   | 24fa9e32b0 | ||
|   | 0b4fef19f6 | ||
|   | 35731b96dc | ||
|   | b79a1b5755 | ||
|   | 1561f6f09f | ||
|   | 36d7fce909 | ||
|   | b8d6058b28 | ||
|   | 8771e1a339 | ||
|   | 7b657c942d | ||
|   | 531ae501ad | ||
|   | d0cac421bb | ||
|   | 4429a16ca8 | ||
|   | c669401767 | ||
|   | 4d349f5f81 | ||
|   | 08e0349ca3 | ||
|   | ee5fe424e8 | ||
|   | 552ff0489d | ||
|   | 04a9ce6e81 | ||
|   | 586bdc0567 | ||
|   | 4bb3d13921 | ||
|   | 7c02630186 | ||
|   | ff63ad8b97 | ||
|   | bdf1fb6db8 | ||
|   | d21fdb7546 | ||
|   | be5af2796d | ||
|   | b1020c599f | ||
|   | b2199202ab | ||
|   | 06105072f9 | ||
|   | b676ca7d96 | ||
|   | 90f355cfaf | ||
|   | 757ab3dc92 | ||
|   | e022c371ff | ||
|   | 50a2cc9917 | ||
|   | 5209b0172b | ||
|   | cfb55d9d77 | ||
|   | df2bbe129d | ||
|   | f7cae610a4 | ||
|   | bb698d682c | ||
|   | 5bd6ff2285 | ||
|   | e6cf186c23 | ||
|   | e8b5508463 | ||
|   | d70b893852 | ||
|   | a579b4a519 | ||
|   | fffa2f097e | ||
|   | cabb2198b0 | ||
|   | 3af2168b02 | ||
|   | f1337524f6 | ||
|   | 348109a1f9 | ||
|   | 0b0597be0c | ||
|   | 690dbc4725 | ||
|   | cc9b1ea8a1 | ||
|   | ffebe82586 | ||
|   | 4453e7fcdd | ||
|   | 60d65d8137 | ||
|   | c8eefe749f | ||
|   | 162421a59a | ||
|   | 79048812e9 | ||
|   | 70b242f190 | ||
|   | 8db4bde15d | ||
|   | fbb8f0cbf5 | ||
|   | aafa12eb6e | ||
|   | 76f285f19c | ||
|   | e1073de36f | ||
|   | ae48e49cba | ||
|   | 4180db601d | ||
|   | 423983e023 | ||
|   | 90a1ea4281 | ||
|   | 0ebd864db9 | ||
|   | 02e85913da | ||
|   | 1d5dc283fe | ||
|   | 769f0a78d4 | ||
|   | 4029f86c60 | ||
|   | f6d1fea9b7 | ||
|   | fa6524d377 | ||
|   | c56cb8adb6 | ||
|   | 78638a15be | ||
|   | d4a51979bb | ||
|   | 77555cd5c2 | ||
|   | 7c48ba2f19 | ||
|   | 4dbe0a0d0e | ||
|   | ca92a74a39 | ||
|   | c01d28a471 | ||
|   | 98ff09931d | ||
|   | 20ae89c2a1 | ||
|   | 0baa23f553 | ||
|   | 10fbb6a2a8 | ||
|   | 6152b83405 | ||
|   | aed25ff87c | ||
|   | 5f94238d23 | ||
|   | 4d1d5d6b20 | ||
|   | 5ba6a5fca1 | ||
|   | cba8d83b21 | ||
|   | aaeffe3846 | ||
|   | 6881e8fbe3 | ||
|   | 137e455f03 | ||
|   | ff3d0346eb | ||
|   | 498da509db | ||
|   | d484c0e7ce | ||
|   | 5c1c561d7d | ||
|   | 9f0429ca6f | ||
|   | 3485ad39d9 | ||
|   | d899923876 | ||
|   | 4e04cd27c9 | ||
|   | 7e4b428a3e | ||
|   | 9f65a318da | ||
|   | 2f6ed86c78 | ||
|   | 6590915b15 | ||
|   | 0c3fe54b0b | ||
|   | a93b675cb8 | ||
|   | 0f2df23800 | ||
|   | e4e0a24416 | ||
|   | 6aa5abf298 | ||
|   | bd672c4c4e | ||
|   | 8d768bda31 | ||
|   | 5110994f81 | ||
|   | 83d17b5c0e | ||
|   | e6c174c33b | ||
|   | 9497300a4a | ||
|   | acab62e345 | ||
|   | 0e8feed2f2 | ||
|   | 82716d8014 | ||
|   | af262e9a14 | ||
|   | d0d5af8c66 | ||
|   | 86f9b1f6db | ||
|   | c4485d0af7 | ||
|   | 7c5d0a0e00 | ||
|   | 5f014a2056 | ||
|   | eaaacd71a8 | ||
|   | 75cead9266 | ||
|   | d79c5824b8 | ||
|   | 4381739b6d | ||
|   | 8f2cdcef0e | ||
|   | 990cc41e80 | ||
|   | 9721acbf63 | ||
|   | be5cb1683b | ||
|   | a4e7e546ff | ||
|   | 4259b4571c | ||
|   | 2414a79578 | ||
|   | 84623ac1f6 | ||
|   | d46343fb9c | ||
|   | 5c788a6130 | ||
|   | 281cf584ec | ||
|   | 13c4581c86 | ||
|   | 9c938b91b7 | ||
|   | f71f7a0b63 | ||
|   | b8c03a1905 | ||
|   | 9515b40ca5 | ||
|   | df3d3db776 | ||
|   | e15df81351 | ||
|   | 77ec423510 | ||
|   | c41df9ffbd | ||
|   | acad35c5bc | ||
|   | 6b3fe68a17 | ||
|   | 6ec07d744e | ||
|   | 989fdb5895 | ||
|   | e60b91b5e2 | ||
|   | 0be2567d97 | ||
|   | 61770ad69e | ||
|   | 85bd0feee0 | ||
|   | b249216db6 | ||
|   | 2a2a80b0bf | ||
|   | 7ddd5e9bc3 | ||
|   | 6b4a4517ec | ||
|   | 7c1c91ac43 | ||
|   | 6b56768e9c | ||
|   | b2b7d02c01 | ||
|   | 8bb097fd10 | ||
|   | a5f8f1f0f5 | ||
|   | 424e2c76fa | ||
|   | 41ae2bfb84 | ||
|   | 4bdf9eda41 | ||
|   | ef1c7eec74 | ||
|   | 87527fccc6 | ||
|   | f23234d0df | ||
|   | fdbc3a692f | ||
|   | 571aaea3e0 | ||
|   | d0986297ca | ||
|   | 188e679ea3 | ||
|   | 4209a5699a | ||
|   | 80ca7796ca | ||
|   | 02f19bfbee | ||
|   | 49d5591f48 | ||
|   | 816bc45707 | ||
|   | 73e9dce143 | ||
|   | 9f0edde12b | ||
|   | cf55b67cee | ||
|   | 9ca415c665 | ||
|   | af029e6c3f | ||
|   | 6d514c97f8 | ||
|   | e812ac2c0b | ||
|   | 480832318c | ||
|   | 7a3e397949 | ||
|   | c95e450b8d | ||
|   | b63a34110e | ||
|   | 0a2a71e83b | ||
|   | 831bf71ce6 | ||
|   | 172eda5471 | ||
|   | aa899f0693 | ||
|   | 82602b51bf | ||
|   | 3971a12f0e | ||
|   | 70c4eb44fd | ||
|   | 9ce54162c2 | ||
|   | 92c6fc04a8 | ||
|   | 46ebf9b7e5 | ||
|   | 799ad0feff | ||
|   | 1a56385cf9 | ||
|   | 71827fe4e6 | ||
|   | 8568f7a0fb | ||
|   | 39c61327b5 | ||
|   | 81d2130b06 | ||
|   | 536f5ff091 | ||
|   | 7e258bfe38 | ||
|   | 66f0e6a8f2 | ||
|   | 04306a544f | ||
|   | e4fe3bfe35 | ||
|   | b636bf4b2a | ||
|   | 05c7796909 | ||
|   | e2b3463c05 | ||
|   | 6c016cf443 | ||
|   | fc48168153 | ||
|   | 096e6f2f80 | ||
|   | 4a00bfcc55 | ||
|   | 6ebc19fccb | ||
|   | 0fa40c9ac3 | 
| @@ -1,59 +0,0 @@ | ||||
| version: '{branch}-{build}' | ||||
|  | ||||
| # Do not build on tags (GitHub only) | ||||
| skip_tags: true | ||||
|  | ||||
| image: Visual Studio 2019 | ||||
|  | ||||
| branches: | ||||
|   except:  # blacklist | ||||
|     - coverity_scan | ||||
|  | ||||
| environment: | ||||
|   REPO_DIR: &REPO_DIR c:\qbittorrent | ||||
|   CACHE_DIR: &CACHE_DIR c:\qbt_cache | ||||
|  | ||||
|   QBT_VER_URL: https://builds.shiki.hu/appveyor/version | ||||
|   QBT_LIB_URL: https://builds.shiki.hu/appveyor/qbt_libraries.7z | ||||
|  | ||||
| # project directory | ||||
| clone_folder: *REPO_DIR | ||||
|  | ||||
| # cache size should < 100MB (after compressing with fastest option): | ||||
| # see: https://www.appveyor.com/docs/build-cache#save-update-cache-before-build-finishes | ||||
| cache: | ||||
|   - *CACHE_DIR | ||||
|  | ||||
| clone_depth: 50 | ||||
|  | ||||
| install: | ||||
|   # check if library needs update | ||||
|   - appveyor DownloadFile "%QBT_VER_URL%" -FileName "c:\version_new" && SET /P newVersion=<"c:\version_new" | ||||
|   - IF EXIST "%CACHE_DIR%\version" (SET /P oldVersion=<"%CACHE_DIR%\version") | ||||
|   - IF NOT EXIST "%CACHE_DIR%\version" (SET updateCache=1) | ||||
|   - IF NOT "%oldVersion%" == "%newVersion%" (SET updateCache=1) | ||||
|   # update library | ||||
|   - IF "%updateCache%" == "1" (ECHO "--- Will redownload libraries ---" && | ||||
|       RMDIR /S /Q "%CACHE_DIR%" & MKDIR "%CACHE_DIR%" && | ||||
|       appveyor DownloadFile "%QBT_LIB_URL%" -FileName "c:\qbt_lib.7z" && 7z x "c:\qbt_lib.7z" -o"%CACHE_DIR%" > nul && | ||||
|       COPY "c:\version_new" "%CACHE_DIR%\version") | ||||
|   # Qt stay compressed in cache | ||||
|   - 7z x "%CACHE_DIR%\qt5_32.7z" -o"c:\qbt" > nul | ||||
|  | ||||
| before_build: | ||||
|   # setup env | ||||
|   - CALL "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat" | ||||
|   - SET PATH=%PATH%;c:\qbt\qt5_32\bin;%CACHE_DIR%\jom; | ||||
|   # setup project | ||||
|   - COPY /Y "%CACHE_DIR%\conf.pri" "%REPO_DIR%" | ||||
|   # workarounds | ||||
|   - MKLINK /J "c:\qbt\base" "%CACHE_DIR%\base" | ||||
|  | ||||
| build_script: | ||||
|   - cd "%REPO_DIR%" | ||||
|   # scan only as lupdate is prone to hang | ||||
|   - lupdate -extensions c,cpp,h,hpp,ui . | ||||
|   - qmake qbittorrent.pro && cd src && qmake src.pro | ||||
|   - jom -j2 -f Makefile.Release | ||||
|  | ||||
| test: off | ||||
							
								
								
									
										81
									
								
								.clang-tidy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								.clang-tidy
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,81 @@ | ||||
| Checks: > | ||||
|   bugprone-*, | ||||
|   cert-*, | ||||
|   concurrency-*, | ||||
|   cppcoreguidelines-*, | ||||
|   misc-*, | ||||
|   modernize-*, | ||||
|   performance-*, | ||||
|   portability-*, | ||||
|   readability-*, | ||||
|   -# not applicable at all, | ||||
|   -bugprone-easily-swappable-parameters, | ||||
|   -bugprone-implicit-widening-of-multiplication-result, | ||||
|   -bugprone-macro-parentheses, | ||||
|   -cppcoreguidelines-avoid-c-arrays, | ||||
|   -cppcoreguidelines-avoid-magic-numbers, | ||||
|   -cppcoreguidelines-avoid-non-const-global-variables, | ||||
|   -cppcoreguidelines-macro-usage, | ||||
|   -cppcoreguidelines-non-private-member-variables-in-classes, | ||||
|   -cppcoreguidelines-owning-memory, | ||||
|   -cppcoreguidelines-pro-bounds-array-to-pointer-decay, | ||||
|   -cppcoreguidelines-pro-bounds-constant-array-index, | ||||
|   -cppcoreguidelines-pro-bounds-pointer-arithmetic, | ||||
|   -cppcoreguidelines-pro-type-const-cast, | ||||
|   -cppcoreguidelines-pro-type-reinterpret-cast, | ||||
|   -cppcoreguidelines-pro-type-union-access, | ||||
|   -cppcoreguidelines-pro-type-vararg, | ||||
|   -cppcoreguidelines-special-member-functions, | ||||
|   -cppcoreguidelines-virtual-class-destructor, | ||||
|   -misc-no-recursion, | ||||
|   -misc-non-private-member-variables-in-classes, | ||||
|   -misc-unused-parameters, | ||||
|   -modernize-avoid-c-arrays, | ||||
|   -modernize-pass-by-value, | ||||
|   -modernize-use-auto, | ||||
|   -modernize-use-nodiscard, | ||||
|   -modernize-use-trailing-return-type, | ||||
|   -readability-function-cognitive-complexity, | ||||
|   -readability-function-size, | ||||
|   -readability-identifier-length, | ||||
|   -readability-implicit-bool-conversion, | ||||
|   -readability-isolate-declaration, | ||||
|   -readability-magic-numbers, | ||||
|   -readability-named-parameter, | ||||
|   -readability-redundant-access-specifiers, | ||||
|   -readability-simplify-boolean-expr, | ||||
|   -readability-uppercase-literal-suffix, | ||||
|   -# only sometimes useful, | ||||
|   -bugprone-narrowing-conversions, | ||||
|   -cert-dcl58-cpp, | ||||
|   -cert-err33-c, | ||||
|   -cert-err58-cpp, | ||||
|   -clang-analyzer-core.CallAndMessage, | ||||
|   -clang-analyzer-cplusplus.NewDelete, | ||||
|   -clang-analyzer-cplusplus.NewDeleteLeaks, | ||||
|   -concurrency-mt-unsafe, | ||||
|   -cppcoreguidelines-init-variables, | ||||
|   -cppcoreguidelines-narrowing-conversions, | ||||
|   -cppcoreguidelines-prefer-member-initializer, | ||||
|   -cppcoreguidelines-pro-type-static-cast-downcast, | ||||
|   -misc-definitions-in-headers, | ||||
|   -modernize-concat-nested-namespaces, | ||||
|   -modernize-loop-convert, | ||||
|   -modernize-raw-string-literal, | ||||
|   -modernize-unary-static-assert, | ||||
|   -performance-no-automatic-move, | ||||
|   -readability-convert-member-functions-to-static, | ||||
|   -readability-else-after-return, | ||||
|   -readability-redundant-declaration, | ||||
|   -# obsoleted, | ||||
|   -cert-dcl21-cpp | ||||
|  | ||||
| CheckOptions: | ||||
|   - { key: cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors, value: true } | ||||
|   - { key: modernize-use-override.IgnoreDestructors, value: true } | ||||
|   - { key: performance-for-range-copy.AllowedTypes, value: "QJsonValue" } | ||||
|   - { key: performance-for-range-copy.WarnOnAllAutoCopies, value: true } | ||||
|   - { key: readability-braces-around-statements.ShortStatementLines, value: 3 } | ||||
|  | ||||
| HeaderFilterRegex: ".+/src/.*\\.h" | ||||
| WarningsAsErrors: "*" | ||||
| @@ -1,8 +1,10 @@ | ||||
| # EditorConfig is awesome: http://EditorConfig.org | ||||
| # EditorConfig is awesome: https://EditorConfig.org | ||||
|  | ||||
| root = true | ||||
|  | ||||
| [*] | ||||
| charset = utf-8 | ||||
| end_of_line = lf | ||||
| indent_style = space | ||||
| indent_size = 4 | ||||
| insert_final_newline = true | ||||
|   | ||||
							
								
								
									
										11
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							| @@ -1,7 +1,10 @@ | ||||
| core.eol=lf | ||||
| * text eol=lf | ||||
| *.zip binary | ||||
| *.png binary | ||||
| *.ico binary | ||||
| *.qm binary | ||||
| *.icns binary | ||||
| *.ico binary | ||||
| *.png binary | ||||
| *.qm binary | ||||
| *.zip binary | ||||
|  | ||||
| dist/windows/license.txt text eol=crlf | ||||
| test/testdata/crlf.txt text eol=crlf | ||||
|   | ||||
							
								
								
									
										19
									
								
								.github/ISSUE_TEMPLATE.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								.github/ISSUE_TEMPLATE.md
									
									
									
									
										vendored
									
									
								
							| @@ -1,19 +0,0 @@ | ||||
| **Please provide the following information** | ||||
|  | ||||
| ### qBittorrent version and Operating System | ||||
| (type here) | ||||
|  | ||||
| ### If on linux, libtorrent-rasterbar and Qt version | ||||
| (type here) | ||||
|  | ||||
| ### What is the problem | ||||
| (type here) | ||||
|  | ||||
| ### What is the expected behavior | ||||
| (type here) | ||||
|  | ||||
| ### Steps to reproduce | ||||
| (type here) | ||||
|  | ||||
| ### Extra info(if any) | ||||
| (type here) | ||||
							
								
								
									
										76
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | ||||
| name: Bug Report | ||||
| description: File a bug report to help improve qBittorrent user experience. | ||||
| body: | ||||
|   - type: markdown | ||||
|     attributes: | ||||
|       value: | | ||||
|         #### ADVISORY | ||||
|         "We do not support any versions older than the current release series" | ||||
|  | ||||
|         "We do not support any 3rd party/forked versions e.g. `portableapps`/`Enhanced Edition`etc." | ||||
|  | ||||
|         "Please post all details in **English**." | ||||
|  | ||||
|         #### Prerequisites before submitting an issue! | ||||
|         - Read the issue reporting section in the **[contributing guidelines](https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md)**, to know how to submit a good bug report with the required information. | ||||
|         - Verify that the issue is not fixed and is reproducible in the **[latest official qBittorrent version](https://www.qbittorrent.org/download.php).** | ||||
|         - (Optional, but recommended) Verify that the issue is not fixed and is reproducible in the latest CI (currently only on **[Windows](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_windows.yaml?query=branch%3Amaster+event%3Apush)**) builds. | ||||
|         - Check the **[frequent/common issues list](https://github.com/qbittorrent/qBittorrent/projects/2)** and perform a **[search of the issue tracker (including closed ones)](https://github.com/qbittorrent/qBittorrent/issues)** to avoid posting a duplicate. | ||||
|         - Make sure this is not a support request or question, both of which are better suited for either the **[discussions section](https://github.com/qbittorrent/qBittorrent/discussions)**, **[forum](https://qbforums.shiki.hu/)**, or **[subreddit](https://www.reddit.com/r/qBittorrent/)**. | ||||
|         - Verify that the **[wiki](https://github.com/qbittorrent/qBittorrent/wiki)** did not contain a suitable solution either. | ||||
|         - If relevant to issue/when asked, the qBittorrent preferences file, qBittorrent.log & watched_folders.json (if using "Watched Folders" feature) must be provided. | ||||
|           See **[Where does qBittorrent save its settings?](https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Where_does_qBittorrent_save_its_settings)** | ||||
|  | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: qBittorrent & operating system versions | ||||
|       description: | | ||||
|         Qt and libtorrent-rasterbar versions are required when: 1. You are using linux. 2. You are not using an official build downloaded from our website. | ||||
|  | ||||
|         Example of preferred formatting: | ||||
|         qBittorrent: 4.3.7 x64 | ||||
|         Operating system: Windows 10 Pro 21H1/2009 x64 | ||||
|         Qt: 5.15.2 | ||||
|         libtorrent-rasterbar: 1.2.14 | ||||
|       placeholder: | | ||||
|         qBittorrent: | ||||
|         Operating system: | ||||
|         Qt: | ||||
|         libtorrent-rasterbar: | ||||
|     validations: | ||||
|       required: true | ||||
|  | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: What is the problem? | ||||
|       description: Please add the "crash report" (if encountered) or give a clear and concise description of problem. | ||||
|     validations: | ||||
|       required: true | ||||
|  | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: Steps to reproduce | ||||
|       description: Please provide reliable steps to reproduce the problem. | ||||
|       placeholder: | | ||||
|         1. First step | ||||
|         2. Second step | ||||
|         3. and so on... | ||||
|     validations: | ||||
|       required: false | ||||
|  | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: Additional context | ||||
|       description: Add screenshots etc. (Anything that will provide more context about the problem) | ||||
|     validations: | ||||
|       required: false | ||||
|  | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: Log(s) & preferences file(s) | ||||
|       description: | | ||||
|         Add these files: qBittorrent preferences file, qBittorrent.log & watched_folders.json (if using "Watched Folders" feature). | ||||
|         See **[Where does qBittorrent save its settings?](https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Where_does_qBittorrent_save_its_settings)** | ||||
|         #### Note: It's the user's responsibility to redact any sensitive information | ||||
|     validations: | ||||
|       required: false | ||||
							
								
								
									
										17
									
								
								.github/ISSUE_TEMPLATE/config.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								.github/ISSUE_TEMPLATE/config.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| blank_issues_enabled: false | ||||
| contact_links: | ||||
|   - name: Wiki | ||||
|     url: "https://github.com/qbittorrent/qBittorrent/wiki/" | ||||
|     about: "Consult the wiki first (especially the FAQ), it might already contain the information you are looking for" | ||||
|  | ||||
|   - name: Question | ||||
|     url: "https://github.com/qbittorrent/qBittorrent/discussions" | ||||
|     about: "Please ask questions related to usage/setup/support/non-issue development discussion in the Discussions section" | ||||
|  | ||||
|   - name: Question | ||||
|     url: "http://forum.qbittorrent.org/" | ||||
|     about: "Alternatively, ask on the official forum" | ||||
|  | ||||
|   - name: Question | ||||
|     url: "https://www.reddit.com/r/qBittorrent/" | ||||
|     about: "Alternatively, use the subreddit" | ||||
							
								
								
									
										37
									
								
								.github/ISSUE_TEMPLATE/feature_request.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								.github/ISSUE_TEMPLATE/feature_request.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| name: Feature Request | ||||
| description: Suggest a new feature or enhancement for qBittorrent. | ||||
| labels: ["Feature request"] | ||||
| body: | ||||
|   - type: markdown | ||||
|     attributes: | ||||
|       value: | | ||||
|         #### ADVISORY | ||||
|  | ||||
|         "Please post all details in **English**." | ||||
|  | ||||
|         #### Prerequisites before submitting a feature request! | ||||
|         - Read the feature request section in the **[contributing guidelines](https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md)**, to know how to submit a good feature request with the required information. | ||||
|         - Verify that the feature being requested is not available in the **[latest official qBittorrent version](https://www.qbittorrent.org/download.php).** | ||||
|         - (Optional but recommended) Verify that the feature being requested is not available in the latest CI (**[macOS](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_macos.yaml?query=branch%3Amaster+event%3Apush)** / **[Ubuntu](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_ubuntu.yaml?query=branch%3Amaster+event%3Apush)** / **[Windows](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_windows.yaml?query=branch%3Amaster+event%3Apush)**) builds. | ||||
|         - Search the issue tracker with the **[feature request filter](https://github.com/qbittorrent/qBittorrent/issues?q=is%3Aopen+is%3Aissue+label%3A%22Feature+request%22)** for similar feature requests (including closed ones) to avoid posting a duplicate. | ||||
|         - Make sure this is not a support request or question, both of which are better suited for either the **[discussions section](https://github.com/qbittorrent/qBittorrent/discussions)**, **[forum](https://qbforums.shiki.hu/)**, or **[subreddit](https://www.reddit.com/r/qBittorrent/)**. | ||||
|         - Verify that the **[wiki](https://github.com/qbittorrent/qBittorrent/wiki)** did not contain a suitable solution either. | ||||
|  | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: Suggestion | ||||
|     validations: | ||||
|       required: false | ||||
|  | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: Use case | ||||
|     validations: | ||||
|       required: false | ||||
|  | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: Extra info/examples/attachments | ||||
|       description: Add screenshots etc. (Anything that will give us more context about what is being requested!) | ||||
|     validations: | ||||
|       required: false | ||||
							
								
								
									
										5
									
								
								.github/PULL_REQUEST_TEMPLATE.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.github/PULL_REQUEST_TEMPLATE.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| <!-- | ||||
| MANDATORY Before submitting your work, make sure you have: | ||||
| 1. Read https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md#opening-a-pull-request | ||||
| 2. Delete this comment block | ||||
| --> | ||||
							
								
								
									
										18
									
								
								.github/SUPPORT.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								.github/SUPPORT.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| # Support Resources | ||||
|  | ||||
| The issue tracker is only for bug reports/feature requests related to the project itself. | ||||
|  | ||||
| Please do not use the issue tracker for questions about general program usage, | ||||
| how BitTorrent (the protocol) works in general, etc. | ||||
|  | ||||
| For such questions, use one of the following community support resources: | ||||
|  | ||||
| * The [discussions section][discussions-url] | ||||
|  | ||||
| * The [official forum][forum-url] | ||||
|  | ||||
| * The [qBittorrent subreddit][subreddit-url] | ||||
|  | ||||
| [discussions-url]: https://github.com/qbittorrent/qBittorrent/discussions | ||||
| [forum-url]: http://forum.qbittorrent.org/ | ||||
| [subreddit-url]: https://www.reddit.com/r/qBittorrent/ | ||||
							
								
								
									
										15
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| version: 2 | ||||
|  | ||||
| updates: | ||||
|   - package-ecosystem: "github-actions" | ||||
|     directory: "/" | ||||
|     commit-message: | ||||
|       prefix: "GHA CI" | ||||
|     groups: | ||||
|       github-actions: | ||||
|         patterns: | ||||
|           - "*" | ||||
|     labels: | ||||
|       - "CI" | ||||
|     schedule: | ||||
|       interval: "monthly" | ||||
							
								
								
									
										34
									
								
								.github/workflows/ci_file_health.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										34
									
								
								.github/workflows/ci_file_health.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -2,19 +2,43 @@ name: CI - File health | ||||
|  | ||||
| on: [pull_request, push] | ||||
|  | ||||
| permissions: {} | ||||
|  | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||||
|   cancel-in-progress: ${{ github.head_ref != '' }} | ||||
|  | ||||
| jobs: | ||||
|   ci: | ||||
|     name: Check | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: Checkout repository | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Install tools | ||||
|         run: | | ||||
|           sudo apt update | ||||
|           sudo apt install zsh | ||||
|         uses: actions/setup-python@v5 | ||||
|         with: | ||||
|           python-version: "*" | ||||
|  | ||||
|       - name: Check files | ||||
|         uses: pre-commit/action@v3.0.1 | ||||
|  | ||||
|       - name: Check doc | ||||
|         env: | ||||
|           pandoc_path: "${{ github.workspace }}/../pandoc" | ||||
|         run: | | ||||
|           ./.github/workflows/file_health.sh | ||||
|           # install pandoc | ||||
|           curl \ | ||||
|             -L \ | ||||
|             -o "${{ runner.temp }}/pandoc.tar.gz" \ | ||||
|             "https://github.com/jgm/pandoc/releases/download/3.1.7/pandoc-3.1.7-linux-amd64.tar.gz" | ||||
|           tar -xf "${{ runner.temp }}/pandoc.tar.gz" -C "${{ github.workspace }}/.." | ||||
|           mv "${{ github.workspace }}/.."/pandoc-* "${{ env.pandoc_path }}" | ||||
|           # run pandoc | ||||
|           for lang in doc/*/; do | ||||
|             "${{ env.pandoc_path }}/bin/pandoc" -f markdown -t man -s "$lang/qbittorrent.1.md" -o "$lang/qbittorrent.1" | ||||
|             "${{ env.pandoc_path }}/bin/pandoc" -f markdown -t man -s "$lang/qbittorrent-nox.1.md" -o "$lang/qbittorrent-nox.1" | ||||
|           done | ||||
|           # check diff, ignore "Automatically generated by ..." part | ||||
|           git diff -I '\.\\".*' --exit-code | ||||
|   | ||||
							
								
								
									
										140
									
								
								.github/workflows/ci_macos.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										140
									
								
								.github/workflows/ci_macos.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -1,73 +1,149 @@ | ||||
| name: CI - macOS | ||||
|  | ||||
| on: [pull_request, push] | ||||
|  | ||||
| permissions: | ||||
|   actions: write | ||||
|  | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||||
|   cancel-in-progress: ${{ github.head_ref != '' }} | ||||
|  | ||||
| jobs: | ||||
|   ci: | ||||
|     name: Build | ||||
|     runs-on: macos-10.15 | ||||
|     runs-on: macos-latest | ||||
|  | ||||
|     strategy: | ||||
|       matrix: | ||||
|         libt_version: ["v1.2.12"] | ||||
|         qbt_gui: ["GUI=ON", "GUI=OFF"] | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         libt_version: ["2.0.10", "1.2.19"] | ||||
|         qbt_gui: ["GUI=ON", "GUI=OFF"] | ||||
|         qt_version: ["6.7.0"] | ||||
|  | ||||
|     env: | ||||
|       openssl_root: /usr/local/opt/openssl@1.1 | ||||
|       boost_path: "${{ github.workspace }}/../boost" | ||||
|       libtorrent_path: "${{ github.workspace }}/../libtorrent" | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout repository | ||||
|         uses: actions/checkout@v2 | ||||
|  | ||||
|       - name: Setup ccache | ||||
|         uses: hendrikmuhs/ccache-action@v1 | ||||
|         with: | ||||
|           key: ${{ runner.os }} | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Install dependencies | ||||
|         run: | | ||||
|         uses: Wandalen/wretry.action@v3 | ||||
|         env: | ||||
|            HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 | ||||
|            HOMEBREW_NO_INSTALL_CLEANUP: 1 | ||||
|         with: | ||||
|           attempt_delay: 20000 | ||||
|           attempt_limit: 6 | ||||
|           command: | | ||||
|             brew update > /dev/null | ||||
|             brew install \ | ||||
|               cmake ninja \ | ||||
|             boost openssl@1.1 qt@5 zlib | ||||
|           brew link --force \ | ||||
|             qt@5 | ||||
|           # workaround for cmake + Qt | ||||
|           sudo ln -s /usr/local/opt/qt@5/mkspecs /usr/local/mkspecs | ||||
|           sudo ln -s /usr/local/opt/qt@5/plugins /usr/local/plugins | ||||
|               openssl@3 zlib | ||||
|  | ||||
|       - name: Setup ccache | ||||
|         uses: Chocobo1/setup-ccache-action@v1 | ||||
|         with: | ||||
|           store_cache: ${{ github.ref == 'refs/heads/master' }} | ||||
|           update_packager_index: false | ||||
|           ccache_options: | | ||||
|             max_size=2G | ||||
|  | ||||
|       - name: Install boost | ||||
|         env: | ||||
|           BOOST_MAJOR_VERSION: "1" | ||||
|           BOOST_MINOR_VERSION: "85" | ||||
|           BOOST_PATCH_VERSION: "0" | ||||
|         run: | | ||||
|           boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" | ||||
|           boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" | ||||
|           set +e | ||||
|           curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url" | ||||
|           tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?" | ||||
|           if [ "$_exitCode" -ne "0" ]; then | ||||
|             curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2" | ||||
|             tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?" | ||||
|           fi | ||||
|           mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}" | ||||
|  | ||||
|       - name: Install Qt | ||||
|         uses: jurplel/install-qt-action@v4 | ||||
|         with: | ||||
|           version: ${{ matrix.qt_version }} | ||||
|           archives: qtbase qtdeclarative qtsvg qttools | ||||
|           # Not sure why Qt made a hard dependency on qtdeclarative, try removing it when Qt > 6.4.0 | ||||
|           cache: true | ||||
|  | ||||
|       - name: Install libtorrent | ||||
|         run: | | ||||
|           git clone --branch ${{ matrix.libt_version }} --depth 1 https://github.com/arvidn/libtorrent.git | ||||
|           cd libtorrent | ||||
|           git submodule update --init --recursive | ||||
|           export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | ||||
|           git clone \ | ||||
|             --branch v${{ matrix.libt_version }} \ | ||||
|             --depth 1 \ | ||||
|             --recurse-submodules \ | ||||
|             https://github.com/arvidn/libtorrent.git \ | ||||
|             ${{ env.libtorrent_path }} | ||||
|           cd ${{ env.libtorrent_path }} | ||||
|           cmake \ | ||||
|             -B build \ | ||||
|             -G "Ninja" \ | ||||
|             -DBUILD_SHARED_LIBS=OFF \ | ||||
|             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||||
|             -DCMAKE_CXX_STANDARD=17 \ | ||||
|             -Ddeprecated-functions=OFF \ | ||||
|             -DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" | ||||
|             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | ||||
|             -DBOOST_ROOT="${{ env.boost_path }}" \ | ||||
|             -Ddeprecated-functions=OFF | ||||
|           cmake --build build | ||||
|           sudo cmake --install build | ||||
|  | ||||
|       - name: Build qBittorrent | ||||
|         run: | | ||||
|           export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | ||||
|           CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \ | ||||
|           LDFLAGS="$LDFLAGS -gz" \ | ||||
|           cmake \ | ||||
|             -B build \ | ||||
|             -G "Ninja" \ | ||||
|             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||||
|             -D${{ matrix.qbt_gui }} \ | ||||
|             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | ||||
|             -DBOOST_ROOT="${{ env.boost_path }}" \ | ||||
|             -DTESTING=ON \ | ||||
|             -DVERBOSE_CONFIGURE=ON \ | ||||
|             -DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" | ||||
|             -D${{ matrix.qbt_gui }} | ||||
|           cmake --build build --target qbt_update_translations | ||||
|           cmake --build build | ||||
|           cmake --build build --target check | ||||
|  | ||||
|       - name: Prepare build artifacts | ||||
|         run: | | ||||
|           # create .dmg | ||||
|           appName="qbittorrent" | ||||
|           if [ "${{ matrix.qbt_gui }}" = "GUI=OFF" ]; then | ||||
|             appName="qbittorrent-nox" | ||||
|           fi | ||||
|           # package | ||||
|           pushd build | ||||
|           PACKAGE_RETRY=0 | ||||
|           while [ "$PACKAGE_RETRY" -lt "3" ]; do | ||||
|             macdeployqt "$appName.app" -dmg -no-strip | ||||
|             if [ -f "$appName.dmg" ]; then | ||||
|               break | ||||
|             fi | ||||
|             sleep 5 | ||||
|             PACKAGE_RETRY=$((PACKAGE_RETRY + 1)) | ||||
|             echo "Retry $PACKAGE_RETRY..." | ||||
|           done | ||||
|           popd | ||||
|           # prepare upload folder | ||||
|           mkdir upload | ||||
|           cp "build/$appName.dmg" upload | ||||
|           mkdir upload/cmake | ||||
|           cp build/compile_commands.json upload/cmake | ||||
|           mkdir upload/cmake/libtorrent | ||||
|           cp ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent | ||||
|  | ||||
|       - name: Upload build artifacts | ||||
|         uses: actions/upload-artifact@v2 | ||||
|         uses: actions/upload-artifact@v4 | ||||
|         with: | ||||
|           name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }} | ||||
|           path: | | ||||
|             build/qbittorrent.app | ||||
|             build/qbittorrent-nox.app | ||||
|           name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }} | ||||
|           path: upload | ||||
|   | ||||
							
								
								
									
										89
									
								
								.github/workflows/ci_python.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								.github/workflows/ci_python.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | ||||
| name: CI - Python | ||||
|  | ||||
| on: [pull_request, push] | ||||
|  | ||||
| permissions: {} | ||||
|  | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||||
|   cancel-in-progress: ${{ github.head_ref != '' }} | ||||
|  | ||||
| jobs: | ||||
|   ci: | ||||
|     name: Check | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout repository | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Setup python (auxiliary scripts) | ||||
|         uses: actions/setup-python@v5 | ||||
|         with: | ||||
|           python-version: '3'  # use default version | ||||
|  | ||||
|       - name: Install tools (auxiliary scripts) | ||||
|         run: pip install bandit pycodestyle pyflakes | ||||
|  | ||||
|       - name: Gather files (auxiliary scripts) | ||||
|         run: | | ||||
|           export "PY_FILES=$(find . -type f -name '*.py' ! -path '*searchengine*' -printf '%p ')" | ||||
|           echo $PY_FILES | ||||
|           echo "PY_FILES=$PY_FILES" >> "$GITHUB_ENV" | ||||
|  | ||||
|       - name: Lint code (auxiliary scripts) | ||||
|         run: | | ||||
|           pyflakes $PY_FILES | ||||
|           bandit --skip B314,B405 $PY_FILES | ||||
|  | ||||
|       - name: Format code (auxiliary scripts) | ||||
|         run: | | ||||
|           pycodestyle \ | ||||
|             --max-line-length=1000 \ | ||||
|             --statistics \ | ||||
|             $PY_FILES | ||||
|  | ||||
|       - name: Build code (auxiliary scripts) | ||||
|         run: | | ||||
|           python -m compileall $PY_FILES | ||||
|  | ||||
|       - name: Setup python (search engine) | ||||
|         uses: actions/setup-python@v5 | ||||
|         with: | ||||
|           python-version: '3.7' | ||||
|  | ||||
|       - name: Install tools (search engine) | ||||
|         run: pip install bandit mypy pycodestyle pyflakes pyright | ||||
|  | ||||
|       - name: Gather files (search engine) | ||||
|         run: | | ||||
|           export "PY_FILES=$(find . -type f -name '*.py' -path '*searchengine*' ! -name 'socks.py' -printf '%p ')" | ||||
|           echo $PY_FILES | ||||
|           echo "PY_FILES=$PY_FILES" >> "$GITHUB_ENV" | ||||
|  | ||||
|       - name: Check typings  (search engine) | ||||
|         run: | | ||||
|           MYPYPATH="src/searchengine/nova3" \ | ||||
|           mypy \ | ||||
|             --follow-imports skip \ | ||||
|             --strict \ | ||||
|             $PY_FILES | ||||
|           pyright \ | ||||
|             $PY_FILES | ||||
|  | ||||
|       - name: Lint code (search engine) | ||||
|         run: | | ||||
|           pyflakes $PY_FILES | ||||
|           bandit --skip B110,B310,B314,B405 $PY_FILES | ||||
|  | ||||
|       - name: Format code (search engine) | ||||
|         run: | | ||||
|           pycodestyle \ | ||||
|             --ignore=E265,E402 \ | ||||
|             --max-line-length=1000 \ | ||||
|             --statistics \ | ||||
|             $PY_FILES | ||||
|  | ||||
|       - name: Build code (search engine) | ||||
|         run: | | ||||
|           python -m compileall $PY_FILES | ||||
							
								
								
									
										168
									
								
								.github/workflows/ci_ubuntu.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										168
									
								
								.github/workflows/ci_ubuntu.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -1,84 +1,170 @@ | ||||
| name: CI - Ubuntu | ||||
|  | ||||
| on: [pull_request, push] | ||||
|  | ||||
| permissions: | ||||
|   actions: write | ||||
|   security-events: write | ||||
|  | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||||
|   cancel-in-progress: ${{ github.head_ref != '' }} | ||||
|  | ||||
| jobs: | ||||
|   ci: | ||||
|     name: Build | ||||
|     runs-on: ubuntu-20.04 | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     strategy: | ||||
|       matrix: | ||||
|         libt_version: ["v1.2.12"] | ||||
|         qbt_gui: ["GUI=ON", "GUI=OFF"] | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         libt_version: ["2.0.10", "1.2.19"] | ||||
|         qbt_gui: ["GUI=ON", "GUI=OFF"] | ||||
|         qt_version: ["6.5.2"] | ||||
|  | ||||
|     env: | ||||
|       boost_path: "${{ github.workspace }}/../boost" | ||||
|       harden_flags: "-D_FORTIFY_SOURCE=2 -D_GLIBCXX_ASSERTIONS" | ||||
|       libtorrent_path: "${{ github.workspace }}/../libtorrent" | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout repository | ||||
|         uses: actions/checkout@v2 | ||||
|  | ||||
|       - name: Setup ccache | ||||
|         uses: hendrikmuhs/ccache-action@v1 | ||||
|         with: | ||||
|           key: ${{ runner.os }} | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Install dependencies | ||||
|         run: | | ||||
|           sudo apt update | ||||
|           sudo apt install \ | ||||
|             build-essential cmake git ninja-build pkg-config \ | ||||
|             libssl-dev libgeoip-dev zlib1g-dev \ | ||||
|             libboost-dev libboost-chrono-dev libboost-random-dev libboost-system-dev | ||||
|         # sudo apt install libqt5svg5-dev qtbase5-dev qttools5-dev # the Qt version in the standard repositories is too old... | ||||
|             build-essential cmake ninja-build \ | ||||
|             libssl-dev libxkbcommon-x11-dev libxcb-cursor-dev zlib1g-dev | ||||
|  | ||||
|       # this will be installed under /opt/qt515. CMake will still find it automatically without additional hints | ||||
|       # to speed up the process, only the required components are installed rather than the full qt515-meta-full metapackage | ||||
|       - name: Install Qt | ||||
|       - name: Setup ccache | ||||
|         uses: Chocobo1/setup-ccache-action@v1 | ||||
|         with: | ||||
|           store_cache: ${{ github.ref == 'refs/heads/master' }} | ||||
|           update_packager_index: false | ||||
|           ccache_options: | | ||||
|             max_size=2G | ||||
|  | ||||
|       - name: Install boost | ||||
|         env: | ||||
|           BOOST_MAJOR_VERSION: "1" | ||||
|           BOOST_MINOR_VERSION: "76" | ||||
|           BOOST_PATCH_VERSION: "0" | ||||
|         run: | | ||||
|           sudo add-apt-repository ppa:beineri/opt-qt-5.15.2-focal | ||||
|           sudo apt install \ | ||||
|             qt515base qt515svg qt515tools | ||||
|           boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" | ||||
|           boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" | ||||
|           set +e | ||||
|           curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url" | ||||
|           tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?" | ||||
|           if [ "$_exitCode" -ne "0" ]; then | ||||
|             curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2" | ||||
|             tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?" | ||||
|           fi | ||||
|           mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}" | ||||
|  | ||||
|       - name: Install Qt | ||||
|         uses: jurplel/install-qt-action@v4 | ||||
|         with: | ||||
|           version: ${{ matrix.qt_version }} | ||||
|           archives: icu qtbase qtdeclarative qtsvg qttools | ||||
|           cache: true | ||||
|  | ||||
|       - name: Install libtorrent | ||||
|         run: | | ||||
|           git clone --branch ${{ matrix.libt_version }} --depth 1 https://github.com/arvidn/libtorrent.git | ||||
|           cd libtorrent | ||||
|           git submodule update --init --recursive | ||||
|           export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | ||||
|           git clone \ | ||||
|             --branch v${{ matrix.libt_version }} \ | ||||
|             --depth 1 \ | ||||
|             --recurse-submodules \ | ||||
|             https://github.com/arvidn/libtorrent.git \ | ||||
|             ${{ env.libtorrent_path }} | ||||
|           cd ${{ env.libtorrent_path }} | ||||
|           CXXFLAGS="$CXXFLAGS ${{ env.harden_flags }}" \ | ||||
|           cmake \ | ||||
|             -B build \ | ||||
|             -G "Ninja" \ | ||||
|             -DBUILD_SHARED_LIBS=OFF \ | ||||
|             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||||
|             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | ||||
|             -Ddeprecated-functions=OFF \ | ||||
|             --graphviz=cmake-build-dir/target_graph.dot | ||||
|             -DBOOST_ROOT="${{ env.boost_path }}" \ | ||||
|             -Ddeprecated-functions=OFF | ||||
|           cmake --build build | ||||
|           sudo cmake --install build | ||||
|  | ||||
|       # to avoid scanning 3rdparty codebases, initialize it just before building qbt | ||||
|       - name: Initialize CodeQL | ||||
|         uses: github/codeql-action/init@v3 | ||||
|         if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON') | ||||
|         with: | ||||
|           config-file: ./.github/workflows/helper/codeql/cpp.yaml | ||||
|           languages: cpp | ||||
|  | ||||
|       - name: Build qBittorrent | ||||
|         run: | | ||||
|           export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | ||||
|           CXXFLAGS="$CXXFLAGS ${{ env.harden_flags }} -Werror" \ | ||||
|           LDFLAGS="$LDFLAGS -gz" \ | ||||
|           cmake \ | ||||
|             -B build \ | ||||
|             -G "Ninja" \ | ||||
|             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||||
|             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | ||||
|             -D${{ matrix.qbt_gui }} \ | ||||
|             -DBOOST_ROOT="${{ env.boost_path }}" \ | ||||
|             -DCMAKE_INSTALL_PREFIX="/usr" \ | ||||
|             -DTESTING=ON \ | ||||
|             -DVERBOSE_CONFIGURE=ON \ | ||||
|             --graphviz=build/target_graph.dot | ||||
|             -D${{ matrix.qbt_gui }} | ||||
|           cmake --build build --target qbt_update_translations | ||||
|           cmake --build build | ||||
|           cmake --build build --target check | ||||
|           DESTDIR="qbittorrent" cmake --install build | ||||
|  | ||||
|       - name: Install qBittorrent | ||||
|         run: sudo cmake --install build | ||||
|       - name: Run CodeQL analysis | ||||
|         uses: github/codeql-action/analyze@v3 | ||||
|         if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON') | ||||
|         with: | ||||
|           category: ${{ github.base_ref || github.ref_name }} | ||||
|  | ||||
|       - name: Prepare build artifacts | ||||
|         run: | | ||||
|           mkdir upload | ||||
|           mkdir upload/cmake | ||||
|           cp build/compile_commands.json upload/cmake | ||||
|           mkdir upload/cmake/libtorrent | ||||
|           cp ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent | ||||
|  | ||||
|       - name: Install AppImage | ||||
|         run: | | ||||
|           sudo apt install libfuse2 | ||||
|           curl \ | ||||
|             -L \ | ||||
|             -Z \ | ||||
|             -O https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-static-x86_64.AppImage \ | ||||
|             -O https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-static-x86_64.AppImage \ | ||||
|             -O https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage | ||||
|           chmod +x \ | ||||
|             linuxdeploy-static-x86_64.AppImage \ | ||||
|             linuxdeploy-plugin-qt-static-x86_64.AppImage \ | ||||
|             linuxdeploy-plugin-appimage-x86_64.AppImage | ||||
|  | ||||
|       - name: Prepare files for AppImage | ||||
|         if: matrix.qbt_gui == 'GUI=OFF' | ||||
|         run: | | ||||
|           mkdir -p qbittorrent/usr/share/applications | ||||
|           cp .github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop qbittorrent/usr/share/applications/org.qbittorrent.qBittorrent.desktop | ||||
|           mkdir -p qbittorrent/usr/share/icons/hicolor/scalable/apps | ||||
|           cp dist/unix/menuicons/scalable/apps/qbittorrent.svg qbittorrent/usr/share/icons/hicolor/scalable/apps/qbittorrent.svg | ||||
|  | ||||
|       - name: Package AppImage | ||||
|         run: | | ||||
|           ./linuxdeploy-static-x86_64.AppImage --appdir qbittorrent --plugin qt | ||||
|           rm qbittorrent/apprun-hooks/* | ||||
|           cp .github/workflows/helper/appimage/export_vars.sh qbittorrent/apprun-hooks/export_vars.sh | ||||
|           NO_APPSTREAM=1 \ | ||||
|             OUTPUT=upload/qbittorrent-CI_Ubuntu_x86_64.AppImage \ | ||||
|             ./linuxdeploy-static-x86_64.AppImage --appdir qbittorrent --output appimage | ||||
|  | ||||
|       - name: Upload build artifacts | ||||
|         uses: actions/upload-artifact@v2 | ||||
|         uses: actions/upload-artifact@v4 | ||||
|         with: | ||||
|           name: qBittorrent-CI_ubuntu-20.04-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }} | ||||
|           path: | | ||||
|             build/compile_commands.json | ||||
|             build/install_manifest.txt | ||||
|             build/target_graph.dot | ||||
|             build/qbittorrent | ||||
|             build/qbittorrent-nox | ||||
|             libtorrent/cmake-build-dir/compile_commands.json | ||||
|             libtorrent/cmake-build-dir/target_graph.dot | ||||
|           name: qBittorrent-CI_Ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }} | ||||
|           path: upload | ||||
|   | ||||
							
								
								
									
										20
									
								
								.github/workflows/ci_webui.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/ci_webui.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -2,6 +2,13 @@ name: CI - WebUI | ||||
|  | ||||
| on: [pull_request, push] | ||||
|  | ||||
| permissions: | ||||
|   security-events: write | ||||
|  | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||||
|   cancel-in-progress: ${{ github.head_ref != '' }} | ||||
|  | ||||
| jobs: | ||||
|   ci: | ||||
|     name: Check | ||||
| @@ -13,10 +20,10 @@ jobs: | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout repository | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Setup nodejs | ||||
|         uses: actions/setup-node@v2 | ||||
|         uses: actions/setup-node@v4 | ||||
|         with: | ||||
|           node-version: 'lts/*' | ||||
|  | ||||
| @@ -30,3 +37,12 @@ jobs: | ||||
|         run: | | ||||
|           npm run format | ||||
|           git diff --exit-code | ||||
|  | ||||
|       - name: Initialize CodeQL | ||||
|         uses: github/codeql-action/init@v3 | ||||
|         with: | ||||
|           config-file: .github/workflows/helper/codeql/js.yaml | ||||
|           languages: javascript | ||||
|  | ||||
|       - name: Run CodeQL analysis | ||||
|         uses: github/codeql-action/analyze@v3 | ||||
|   | ||||
							
								
								
									
										233
									
								
								.github/workflows/ci_windows.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										233
									
								
								.github/workflows/ci_windows.yaml
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										115
									
								
								.github/workflows/coverity-scan.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								.github/workflows/coverity-scan.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,115 @@ | ||||
| name: Coverity Scan | ||||
|  | ||||
| on: | ||||
|   schedule: | ||||
|     - cron: '0 0 1 * *' # Monthly (1st day of month at midnight) | ||||
|   workflow_dispatch: # Mainly for testing. Don't forget the Coverity usage limits. | ||||
|  | ||||
| permissions: {} | ||||
|  | ||||
| jobs: | ||||
|   coverity_scan: | ||||
|     name: Scan | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     strategy: | ||||
|       matrix: | ||||
|         libt_version: ["2.0.10"] | ||||
|         qbt_gui: ["GUI=ON"] | ||||
|         qt_version: ["6.5.2"] | ||||
|  | ||||
|     env: | ||||
|       boost_path: "${{ github.workspace }}/../boost" | ||||
|       coverity_path: "${{ github.workspace }}/../coverity" | ||||
|       libtorrent_path: "${{ github.workspace }}/../libtorrent" | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout repository | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Install dependencies | ||||
|         run: | | ||||
|           sudo apt update | ||||
|           sudo apt install \ | ||||
|             build-essential cmake ninja-build \ | ||||
|             libssl-dev libxkbcommon-x11-dev libxcb-cursor-dev zlib1g-dev | ||||
|  | ||||
|       - name: Install boost | ||||
|         env: | ||||
|           BOOST_MAJOR_VERSION: "1" | ||||
|           BOOST_MINOR_VERSION: "85" | ||||
|           BOOST_PATCH_VERSION: "0" | ||||
|         run: | | ||||
|           boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" | ||||
|           boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" | ||||
|           set +e | ||||
|           curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url" | ||||
|           tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?" | ||||
|           if [ "$_exitCode" -ne "0" ]; then | ||||
|             curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2" | ||||
|             tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?" | ||||
|           fi | ||||
|           mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}" | ||||
|  | ||||
|       - name: Install Qt | ||||
|         uses: jurplel/install-qt-action@v4 | ||||
|         with: | ||||
|           version: ${{ matrix.qt_version }} | ||||
|           archives: icu qtbase qtdeclarative qtsvg qttools | ||||
|           cache: true | ||||
|  | ||||
|       - name: Install libtorrent | ||||
|         run: | | ||||
|           git clone \ | ||||
|             --branch v${{ matrix.libt_version }} \ | ||||
|             --depth 1 \ | ||||
|             --recurse-submodules \ | ||||
|             https://github.com/arvidn/libtorrent.git \ | ||||
|             ${{ env.libtorrent_path }} | ||||
|           cd ${{ env.libtorrent_path }} | ||||
|           cmake \ | ||||
|             -B build \ | ||||
|             -G "Ninja" \ | ||||
|             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||||
|             -DBOOST_ROOT="${{ env.boost_path }}" \ | ||||
|             -Ddeprecated-functions=OFF | ||||
|           cmake --build build | ||||
|           sudo cmake --install build | ||||
|  | ||||
|       - name: Download Coverity Build Tool | ||||
|         run: | | ||||
|           curl \ | ||||
|             -L \ | ||||
|             -d "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=qbittorrent%2FqBittorrent" \ | ||||
|             -o "${{ runner.temp }}/coverity_tool.tgz" \ | ||||
|             "https://scan.coverity.com/download/linux64" | ||||
|           mkdir -p ${{ env.coverity_path }} | ||||
|           tar \ | ||||
|             -xf "${{ runner.temp }}/coverity_tool.tgz" \ | ||||
|             -C "${{ env.coverity_path }}" \ | ||||
|             --strip-components 1 | ||||
|  | ||||
|       - name: Build qBittorrent | ||||
|         run: | | ||||
|           cmake \ | ||||
|             -B build \ | ||||
|             -G "Ninja" \ | ||||
|             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||||
|             -DBOOST_ROOT="${{ env.boost_path }}" \ | ||||
|             -DVERBOSE_CONFIGURE=ON \ | ||||
|             -D${{ matrix.qbt_gui }} | ||||
|           PATH="${{ env.coverity_path }}/bin:$PATH" \ | ||||
|           cov-build \ | ||||
|             --dir cov-int \ | ||||
|             cmake --build build | ||||
|  | ||||
|       - name: Submit the result to Coverity Scan | ||||
|         run: | | ||||
|           tar -caf qbittorrent.xz cov-int | ||||
|           curl \ | ||||
|             --form token="${{ secrets.COVERITY_SCAN_TOKEN }}" \ | ||||
|             --form email=sledgehammer999@qbittorrent.org \ | ||||
|             --form file=@qbittorrent.xz \ | ||||
|             --form version="$(git rev-parse --short HEAD)" \ | ||||
|             --form description="master" \ | ||||
|             https://scan.coverity.com/builds?project=qbittorrent%2FqBittorrent | ||||
							
								
								
									
										85
									
								
								.github/workflows/file_health.sh
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										85
									
								
								.github/workflows/file_health.sh
									
									
									
									
										vendored
									
									
								
							| @@ -1,85 +0,0 @@ | ||||
| #!/usr/bin/env zsh | ||||
|  | ||||
| set -o nounset | ||||
|  | ||||
| # Assumption: file names don't contain `:` (for the `cut` invocation). | ||||
| # Safe to assume, as such a character in a filename would cause trouble on Windows, a platform we support | ||||
|  | ||||
| # any regression turn this non-zero | ||||
| regressions=0 | ||||
|  | ||||
| # exclusions (these are just grep extended regular expressions to match against paths relative to the root of the repository) | ||||
| exclusions_nonutf8='(.*(7z|gif|ic(ns|o)|png|qm|zip))' | ||||
| exclusions_bom='src/base/unicodestrings.h' | ||||
| exclusions_tw='(*.ts)|src/webui/www/private/scripts/lib/*' | ||||
| exclusions_trailing_newline='configure' | ||||
| exclusions_no_lf='(*.ts)|(.*svg)|compile_commands.json|src/webui/www/private/scripts/lib/*' | ||||
|  | ||||
| echo -e "\n*** Detect files not encoded in UTF-8 ***\n" | ||||
|  | ||||
| find . -path ./build -prune -false -o -path ./.git -prune -false -o -type f -exec file --mime {} \; | sort \ | ||||
|     | grep -v -e "charset=us-ascii" -e "charset=utf-8" | cut -d ":" -f 1 \ | ||||
|     | grep -E -v -e "${exclusions_nonutf8}" \ | ||||
|     | tee >(echo -e "--> Files not encoded in UTF-8: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \ | ||||
|     | xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0' | ||||
| regressions=$((regressions+$?)) | ||||
|  | ||||
| echo -e "\n*** Detect files encoded in UTF-8 with BOM ***\n" | ||||
|  | ||||
| grep --exclude-dir={.git,build} -rIl $'\xEF\xBB\xBF' | sort \ | ||||
|     | grep -E -v -e "${exclusions_bom}" \ | ||||
|     | tee >(echo -e "--> Files encoded in UTF-8 with BOM: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \ | ||||
|     | xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0' | ||||
| regressions=$((regressions+$?)) | ||||
|  | ||||
| echo -e "\n*** Detect usage of CR byte ***\n" | ||||
|  | ||||
| grep --exclude-dir={.git,build} -rIlU $'\x0D' | sort \ | ||||
|     | tee >(echo -e "--> Usage of CR byte: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \ | ||||
|     | xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0' | ||||
| regressions=$((regressions+$?)) | ||||
|  | ||||
| echo -e "\n*** Detect trailing whitespace in lines ***\n" | ||||
|  | ||||
| grep --exclude-dir={.git,build} -rIl "[[:blank:]]$" | sort \ | ||||
|     | grep -E -v -e "${exclusions_tw}" \ | ||||
|     | tee >(echo -e "--> Trailing whitespace in lines: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \ | ||||
|     | xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0'; | ||||
| regressions=$((regressions+$?)) | ||||
|  | ||||
| echo -e "\n*** Detect too many trailing newlines ***\n" | ||||
|  | ||||
| find . -path ./build -prune -false -o -path ./.git -prune -false -o -type f -exec file --mime {} \; | sort \ | ||||
|     | grep -e "charset=us-ascii" -e "charset=utf-8" | cut -d ":" -f 1 \ | ||||
|     | grep -E -v -e "${exclusions_trailing_newline}" \ | ||||
|     | xargs -L1 -I my_input bash -c 'test "$(tail -q -c2 "my_input" | hexdump -C | grep "0a 0a")" && echo "my_input"' \ | ||||
|     | tee >(echo -e "--> Too many trailing newlines: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \ | ||||
|     | xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0' | ||||
| regressions=$((regressions+$?)) | ||||
|  | ||||
| echo -e "\n*** Detect no trailing newline ***\n" | ||||
|  | ||||
| find . -path ./build -prune -false -o -path ./.git -prune -false -o -type f -exec file --mime {} \; | sort \ | ||||
|     | grep -e "charset=us-ascii" -e "charset=utf-8" |  cut -d ":" -f 1 \ | ||||
|     | grep -E -v -e "${exclusions_no_lf}" \ | ||||
|     | xargs -L1 -I my_input bash -c 'test "$(tail -q -c1 "my_input" | hexdump -C | grep "0a")" || echo "my_input"' \ | ||||
|     | tee >(echo -e "--> No trailing newline: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \ | ||||
|     | xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0' | ||||
| regressions=$((regressions+$?)) | ||||
|  | ||||
| echo -e "\n*** Detect translation closing tag in new line ***\n" | ||||
|  | ||||
| grep --exclude-dir={.git,build} -nri "^</translation>" | sort \ | ||||
|     | cut -d ":" -f 1,2 \ | ||||
|     | tee >(echo -e "--> Translation closing tag in new line: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \ | ||||
|     | xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0' | ||||
| regressions=$((regressions+$?)) | ||||
|  | ||||
| if [ "$regressions" -ne 0 ]; then | ||||
|     regressions=1 | ||||
|     echo "\nFile health regressions found. Please fix them (or add them as exclusions)." | ||||
| else | ||||
|     echo "All OK, no file health regressions found." | ||||
| fi | ||||
|  | ||||
| exit $regressions; | ||||
							
								
								
									
										13
									
								
								.github/workflows/helper/appimage/export_vars.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										13
									
								
								.github/workflows/helper/appimage/export_vars.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| # this file is called from AppRun so 'root_dir' will point to where AppRun is | ||||
| root_dir="$(readlink -f "$(dirname "$0")")" | ||||
|  | ||||
| # Insert the default values because after the test we prepend our path | ||||
| # and it will create problems with DEs (eg KDE) that don't set the variable | ||||
| # and rely on the default paths | ||||
| if [ -z "${XDG_DATA_DIRS}" ]; then | ||||
|     XDG_DATA_DIRS="/usr/local/share/:/usr/share/" | ||||
| fi | ||||
|  | ||||
| export XDG_DATA_DIRS="${root_dir}/usr/share:${XDG_DATA_DIRS}" | ||||
							
								
								
									
										6
									
								
								.github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| [Desktop Entry] | ||||
| Name=qBittorrent | ||||
| Exec=qbittorrent-nox %U | ||||
| Icon=qbittorrent | ||||
| Type=Application | ||||
| Categories=Network | ||||
							
								
								
									
										14
									
								
								.github/workflows/helper/codeql/cpp.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								.github/workflows/helper/codeql/cpp.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| name: "CodeQL config for C++" | ||||
|  | ||||
| queries: | ||||
|   - uses: security-and-quality | ||||
|  | ||||
| query-filters: | ||||
|   - exclude: | ||||
|       id: cpp/commented-out-code | ||||
|   - exclude: | ||||
|       id: cpp/include-non-header | ||||
|   - exclude: | ||||
|       id: cpp/loop-variable-changed | ||||
|   - exclude: | ||||
|       id: cpp/useless-expression | ||||
							
								
								
									
										11
									
								
								.github/workflows/helper/codeql/js.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								.github/workflows/helper/codeql/js.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| name: "CodeQL config for Javascript" | ||||
|  | ||||
| paths-ignore: | ||||
|   - "**/lib/*" | ||||
|  | ||||
| queries: | ||||
|   - uses: security-and-quality | ||||
|  | ||||
| query-filters: | ||||
|   - exclude: | ||||
|       id: js/superfluous-trailing-arguments | ||||
							
								
								
									
										18
									
								
								.github/workflows/helper/pre-commit/.typos.toml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								.github/workflows/helper/pre-commit/.typos.toml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| # https://github.com/crate-ci/typos/blob/master/docs/reference.md | ||||
| # https://github.com/crate-ci/typos/blob/master/docs/design.md#identifiers-and-words | ||||
|  | ||||
| # try adding to `identifiers` list first, if doesn't work then `words` list | ||||
|  | ||||
| [default.extend-identifiers] | ||||
| additionals = "additionals" | ||||
| caf = "caf" | ||||
| curren = "curren" | ||||
| FO = "FO" | ||||
| ket = "ket" | ||||
| Q_INVOKABLE = "Q_INVOKABLE" | ||||
| switchs = "switchs" | ||||
| ths = "ths" | ||||
|  | ||||
| [default.extend-words] | ||||
| BA = "BA" | ||||
| helo = "helo" | ||||
							
								
								
									
										70
									
								
								.github/workflows/helper/pre-commit/check_translation_tag.py
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										70
									
								
								.github/workflows/helper/pre-commit/check_translation_tag.py
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| #!/usr/bin/env python3 | ||||
|  | ||||
| # A pre-commit hook for detecting problematic <translation> tags | ||||
| # Copyright (C) 2021  Mike Tzou (Chocobo1) | ||||
| # | ||||
| # 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 2 | ||||
| # 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, write to the Free Software | ||||
| # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. | ||||
| # | ||||
| # In addition, as a special exception, the copyright holders give permission to | ||||
| # link this program with the OpenSSL project's "OpenSSL" library (or with | ||||
| # modified versions of it that use the same license as the "OpenSSL" library), | ||||
| # and distribute the linked executables. You must obey the GNU General Public | ||||
| # License in all respects for all of the code used other than "OpenSSL".  If you | ||||
| # modify file(s), you may extend this exception to your version of the file(s), | ||||
| # but you are not obligated to do so. If you do not wish to do so, delete this | ||||
| # exception statement from your version. | ||||
|  | ||||
| from typing import Optional, Sequence | ||||
| import argparse | ||||
| import re | ||||
|  | ||||
|  | ||||
| def main(argv: Optional[Sequence[str]] = None) -> int: | ||||
|     parser = argparse.ArgumentParser() | ||||
|     parser.add_argument('filenames', nargs='*', help='Filenames to check') | ||||
|     args = parser.parse_args(argv) | ||||
|  | ||||
|     error_msg = "" | ||||
|     regex = re.compile(r"\s*</translation>") | ||||
|  | ||||
|     for filename in args.filenames: | ||||
|         line_counter = 1 | ||||
|         error_buffer = "" | ||||
|  | ||||
|         with open(filename) as file: | ||||
|             try: | ||||
|                 for line in file: | ||||
|                     if (match := regex.match(line)) is not None: | ||||
|                         error_buffer += str(f"Defect file: \"{filename}\"\n" | ||||
|                                             f"Line: {line_counter}\n" | ||||
|                                             f"Column span: {match.span()}\n" | ||||
|                                             f"Part: \"{match.group()}\"\n\n") | ||||
|                     line_counter += 1 | ||||
|  | ||||
|             except UnicodeDecodeError: | ||||
|                 # not a text file, skip | ||||
|                 continue | ||||
|  | ||||
|         error_msg += error_buffer | ||||
|  | ||||
|     if len(error_msg) > 0: | ||||
|         print(error_msg) | ||||
|         return 1 | ||||
|  | ||||
|     return 0 | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     exit(main()) | ||||
							
								
								
									
										25
									
								
								.github/workflows/stale_bot.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								.github/workflows/stale_bot.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| name: Stale bot | ||||
|  | ||||
| on: | ||||
|   schedule: | ||||
|     - cron: '0 0 * * *' | ||||
|  | ||||
| permissions: | ||||
|   pull-requests: write | ||||
|  | ||||
| jobs: | ||||
|   stale: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: Mark and close stale PRs | ||||
|         uses: actions/stale@v9 | ||||
|         with: | ||||
|           stale-pr-message: "This PR is stale because it has been 60 days with no activity. This PR will be automatically closed within 7 days if there is no further activity." | ||||
|           close-pr-message: "This PR was closed because it has been stalled for some time with no activity." | ||||
|           days-before-stale: -1 # avoid marking issues | ||||
|           days-before-pr-stale: 60 | ||||
|           days-before-close: -1 # avoid closing issues | ||||
|           days-before-pr-close: 7 | ||||
|           exempt-all-pr-assignees: true  # avoid stale for all PR with assignees | ||||
|           exempt-all-pr-milestones: true # avoid stale for all PR with milestones | ||||
|           operations-per-run: 200 | ||||
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,3 +1,4 @@ | ||||
| .vscode/ | ||||
| src/gui/geoip/GeoIP.dat | ||||
| src/gui/geoip/GeoIP.dat.gz | ||||
| src/qbittorrent | ||||
| @@ -16,6 +17,7 @@ Makefile* | ||||
| *.o | ||||
| *.pdb | ||||
| *.exe | ||||
| *.dll | ||||
|  | ||||
| # Generated MOC, resource and UI files | ||||
| moc_*.cpp | ||||
| @@ -23,8 +25,7 @@ moc_*.h | ||||
| qrc_*.cpp | ||||
| ui_*.h | ||||
| *.moc | ||||
| src/lang/qbittorrent_*.qm | ||||
| src/webui/www/translations/webui_*.qm | ||||
| *.qm | ||||
| .DS_Store | ||||
| .qmake.stash | ||||
| src/qbittorrent.app | ||||
|   | ||||
							
								
								
									
										109
									
								
								.pre-commit-config.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								.pre-commit-config.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,109 @@ | ||||
| repos: | ||||
|   - repo: local | ||||
|     hooks: | ||||
|       - id: check-translation-tag | ||||
|         name: Check newline characters in <translation> tag | ||||
|         entry: .github/workflows/helper/pre-commit/check_translation_tag.py | ||||
|         language: script | ||||
|         exclude: | | ||||
|           (?x)^( | ||||
|             src/lang/.* | ||||
|           )$ | ||||
|         types_or: | ||||
|           - ts | ||||
|  | ||||
|   - repo: https://github.com/pre-commit/pre-commit-hooks.git | ||||
|     rev: v4.5.0 | ||||
|     hooks: | ||||
|     - id: check-json | ||||
|       name: Check JSON files | ||||
|  | ||||
|     - id: check-yaml | ||||
|       name: Check YAML files | ||||
|  | ||||
|     - id: fix-byte-order-marker | ||||
|       name: Check file encoding (UTF-8 without BOM) | ||||
|       exclude: | | ||||
|         (?x)^( | ||||
|           src/base/unicodestrings.h | ||||
|         )$ | ||||
|  | ||||
|     - id: mixed-line-ending | ||||
|       name: Check line ending character (LF) | ||||
|       args: ["--fix=lf"] | ||||
|       exclude: | | ||||
|         (?x)^( | ||||
|           src/webui/www/private/css/lib/.* | | ||||
|           src/webui/www/private/scripts/lib/.* | | ||||
|           dist/windows/license.txt | | ||||
|           test/testdata/crlf.txt | ||||
|         )$ | ||||
|  | ||||
|     - id: end-of-file-fixer | ||||
|       name: Check trailing newlines | ||||
|       exclude: | | ||||
|         (?x)^( | ||||
|           configure | | ||||
|           src/webui/www/private/css/lib/.* | | ||||
|           src/webui/www/private/scripts/lib/.* | | ||||
|           test/testdata/crlf.txt | ||||
|         )$ | ||||
|       exclude_types: | ||||
|         - svg | ||||
|         - ts | ||||
|  | ||||
|     - id: trailing-whitespace | ||||
|       name: Check trailing whitespaces | ||||
|       exclude: | | ||||
|         (?x)^( | ||||
|           src/webui/www/private/css/lib/.* | | ||||
|           src/webui/www/private/scripts/lib/.* | ||||
|         )$ | ||||
|       exclude_types: | ||||
|         - ts | ||||
|  | ||||
|   - repo: https://github.com/codespell-project/codespell.git | ||||
|     rev: v2.2.6 | ||||
|     hooks: | ||||
|     - id: codespell | ||||
|       name: Check spelling (codespell) | ||||
|       args: ["--ignore-words-list", "additionals,curren,fo,ist,ket,searchin,superseeding,te,ths"] | ||||
|       exclude: | | ||||
|         (?x)^( | ||||
|           .*\.desktop | | ||||
|           .*\.qrc | | ||||
|           build-aux/.* | | ||||
|           Changelog | | ||||
|           dist/windows/installer-translations/.* | | ||||
|           m4/.* | | ||||
|           src/base/3rdparty/.* | | ||||
|           src/searchengine/nova3/socks.py | | ||||
|           src/webui/www/private/scripts/lib/.* | ||||
|         )$ | ||||
|       exclude_types: | ||||
|         - ts | ||||
|  | ||||
|   - repo: https://github.com/crate-ci/typos.git | ||||
|     rev: v1.16.18 | ||||
|     hooks: | ||||
|     - id: typos | ||||
|       name: Check spelling (typos) | ||||
|       args: ["--config", ".github/workflows/helper/pre-commit/.typos.toml"] | ||||
|       exclude: | | ||||
|         (?x)^( | ||||
|           .*\.asc | | ||||
|           .*\.desktop | | ||||
|           .*\.qrc | | ||||
|           \.pre-commit-config\.yaml | | ||||
|           build-aux/.* | | ||||
|           Changelog | | ||||
|           configure.* | | ||||
|           dist/windows/installer-translations/.* | | ||||
|           m4/.* | | ||||
|           src/base/3rdparty/.* | | ||||
|           src/searchengine/nova3/socks.py | | ||||
|           src/webui/www/private/scripts/lib/.* | ||||
|         )$ | ||||
|       exclude_types: | ||||
|         - svg | ||||
|         - ts | ||||
							
								
								
									
										23
									
								
								.tx/config
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								.tx/config
									
									
									
									
									
								
							| @@ -1,27 +1,24 @@ | ||||
| [main] | ||||
| host = https://www.transifex.com | ||||
|  | ||||
| [qbittorrent.qbittorrent_master] | ||||
| [o:sledgehammer999:p:qbittorrent:r:qbittorrent_v50x] | ||||
| file_filter  = src/lang/qbittorrent_<lang>.ts | ||||
| lang_map = pt: pt_PT | ||||
| source_file  = src/lang/qbittorrent_en.ts | ||||
| source_lang  = en | ||||
| type         = QT | ||||
| minimum_perc = 23 | ||||
| mode = developer | ||||
| lang_map     = pt: pt_PT, zh: zh_CN | ||||
|  | ||||
| [qbittorrent.qbittorrentdesktop_master] | ||||
| source_file = dist/unix/org.qbittorrent.qBittorrent.desktop | ||||
| source_lang = en | ||||
| type = DESKTOP | ||||
| minimum_perc = 23 | ||||
| mode = developer | ||||
|  | ||||
| [qbittorrent.qbittorrent_webui] | ||||
| [o:sledgehammer999:p:qbittorrent:r:qbittorrent_webui_v50x] | ||||
| file_filter  = src/webui/www/translations/webui_<lang>.ts | ||||
| lang_map = pt: pt_PT | ||||
| source_file  = src/webui/www/translations/webui_en.ts | ||||
| source_lang  = en | ||||
| type         = QT | ||||
| minimum_perc = 23 | ||||
| mode = developer | ||||
| lang_map     = pt: pt_PT, zh: zh_CN | ||||
|  | ||||
| [o:sledgehammer999:p:qbittorrent:r:qbittorrentdesktop_master] | ||||
| source_file  = dist/unix/org.qbittorrent.qBittorrent.desktop | ||||
| source_lang  = en | ||||
| type         = DESKTOP | ||||
| minimum_perc = 23 | ||||
|   | ||||
							
								
								
									
										87
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						
									
										87
									
								
								AUTHORS
									
									
									
									
									
								
							| @@ -29,73 +29,66 @@ Code from other projects: | ||||
|   copyright: Dan Haim <negativeiq@users.sourceforge.net> | ||||
|   license: BSD | ||||
|  | ||||
| * file src/app/stacktrace.h | ||||
|   copyright: Timo Bingmann from http://idlebox.net/ | ||||
|   license: WTFPL v2.0 | ||||
|  | ||||
| * file src/app/stacktrace_win.h | ||||
|   copyright: Quassel Project | ||||
|   license: GPLv2/3 | ||||
| * files src/webui/www/private/css/lib/vanillaSelectBox.css src/webui/www/private/scripts/lib/vanillaSelectBox.js | ||||
|   copyright: Philippe Meyer <pmg.meyer@gmail.com> | ||||
|   license: MIT | ||||
|  | ||||
| Images Authors: | ||||
| * files: src/icons/skin/qbittorrent-tray.svg (and related pngs) | ||||
| * files: src/icons/qbittorrent-tray.svg | ||||
|   copyright: Provided by HVS <hvs linuxmail org> (raster first proposal) and Atif Afzal(@atfzl github) <atif5801@gmail.com> (vectorized and modified) | ||||
|   license: GPLv2+ | ||||
|  | ||||
| * files: src/qbittorrent_file.ico src/icons/fileicon.svg | ||||
|   copyright: 'uknown.svg' (LGPLv3+) from Oxygen Icon Theme was used as base which was slightly modified and 'qbittorrent-tray.svg' (GPLv2+) was overlayed above it. | ||||
|   copyright: 'unknown.svg' (LGPLv3+) from Oxygen Icon Theme was used as base which was slightly modified and 'qbittorrent-tray.svg' (GPLv2+) was overlaid above it. | ||||
|   license: GPLv3+ | ||||
|  | ||||
| * files: src/icons/*.png | ||||
|   copyright: Gnome Icon Theme | ||||
|   license: GPLv2 | ||||
|   url: http://ftp.acc.umu.se/pub/GNOME/sources/gnome-icon-theme | ||||
|  | ||||
| * files: src/oxygen/*.png | ||||
|   copyright: Oxygen Icon Theme (KDE) | ||||
|   license: LGPL | ||||
|   url: http://www.oxygen-icons.org | ||||
|  | ||||
| * files: src/icons/flags/*.svg | ||||
|   copyright: lipis/flag-icon-css | ||||
|   copyright: lipis/flag-icons | ||||
|   license: MIT | ||||
|   url: https://github.com/lipis/flag-icon-css/ | ||||
|   url: https://github.com/lipis/flag-icons/ | ||||
|  | ||||
| * files: src/icons/skin/*.png | ||||
|   files: src/menuicons/YYxYY/*.png | ||||
|   copyright: Mateusz Tobola <tobejodok@qbittorrent.org> | ||||
|   license: GPLv2 | ||||
|  | ||||
| * file: src/icons/tabs.gif | ||||
| * file: src/webui/www/private/images/tabs.gif | ||||
|   copyright: Greg Houston <gregory.houston@gmail.com> | ||||
|   license: MIT | ||||
|  | ||||
| * file: src/icons/skin/qbittorrent_mono* | ||||
| * file: src/icons/qbittorrent-tray-dark.svg src/icons/qbittorrent-tray-light.svg | ||||
|   copyright: Daniel Eguren <deguren@gmail.com> | ||||
|   modified by: now-im <now-im.d8gcu@simplelogin.com> (@now-im) | ||||
|   license: LGPL | ||||
|  | ||||
| * file: src/search_engine/engines/btjunkie.png | ||||
|   copyright: Downloaded from btjunkie.org | ||||
| * folder: src/icons/ | ||||
|   files: application-rss+xml.svg, application-x-mswinurl.svg, connected.svg, disconnected.svg, checked-completed.svg, configure.svg, | ||||
|          edit-copy.svg, edit-rename.svg, folder-documents.svg, folder-new.svg, folder-remote.svg, go-bottom.svg, go-down.svg, go-top.svg, | ||||
|          go-up.svg, hash.svg, inode-directory.svg, insert-link.svg, kt-magnet.svg, media-playback-pause.svg, media-playback-start.svg, | ||||
|          media-seek-forward.svg, network-connect.svg, object-locked.svg, queued.svg, ratio.svg, reannounce.svg, slow_off.svg, slow.svg, | ||||
|          speedometer.svg, system-log-out.svg, tags.svg, task-complete.svg, task-reject.svg, tracker-error.svg, tracker-warning.svg, | ||||
|          trackerless.svg, trackers.svg, view-categories.svg | ||||
|   copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im) modified from La-Capitaine icon theme (https://github.com/keeferrourke/la-capitaine-icon-theme) | ||||
|   license: GPLv3+ | ||||
|  | ||||
| * file: src/search_engine/engines/isohunt.png | ||||
|   copyright: Downloaded from isohunt.com | ||||
| * folder: src/icons/ | ||||
|   files: application-exit.svg, collapse.svg, dialog-warning.svg, edit-find-user.svg, edit-find.svg, filter-all.svg, firewalled.svg, | ||||
|          help-about.svg, help-contents.svg, ip-blocked.svg, list-remove.svg, loading.svg, mail-folder-inbox.svg, name.svg, network-server.svg, | ||||
|          office-chart-line.svg, plugins.svg, preferences-desktop.svg, preferences-other.svg, preferences-system-network.svg, security-high.svg, | ||||
|          security-low.svg, set-location.svg, torrent-creator.svg, user-group-delete.svg, user-group-new.svg, view-preview.svg, view-refresh.svg, | ||||
|          view-statistics.svg, wallet-open.svg, webuiapplication-exit.svg, collapse.svg, dialog-warning.svg, edit-find-user.svg, edit-find.svg, | ||||
|          filter-all.svg, firewalled.svg, help-about.svg, help-contents.svg, ip-blocked.svg, list-remove.svg, loading.svg, mail-folder-inbox.svg, | ||||
|          name.svg, network-server.svg, office-chart-line.svg, plugins.svg, preferences-desktop.svg, preferences-other.svg, | ||||
|          preferences-system-network.svg, security-high.svg, security-low.svg, set-location.svg, torrent-creator.svg, user-group-delete.svg, | ||||
|          user-group-new.svg, view-preview.svg, view-refresh.svg, view-statistics.svg, wallet-open.svg, webui.svg | ||||
|   copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im) modified from Ionicons icon theme (https://github.com/ionic-team/ionicons) | ||||
|   license: MIT | ||||
|  | ||||
| * file: src/search_engine/engines/mininova.png | ||||
|   copyright: Downloaded from mininova.org | ||||
| * folder: src/icons/ | ||||
|   files: force-recheck.svg | ||||
|   copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im) modified from Font-Awesome icon theme (https://github.com/FortAwesome/Font-Awesome) | ||||
|   license: CC BY 4.0 License | ||||
|  | ||||
| * file: src/search_engine/engines/piratebay.png | ||||
|   copyright: Downloaded from thepiratebay.org | ||||
|  | ||||
| * file: src/search_engine/engines/torrentreactor.png | ||||
|   copyright: Downloaded from torrentreactor.net | ||||
|  | ||||
| * file: src/icons/oxygen/checked.png | ||||
|   copyright: Victor Buinsky <allok.victor@gmail.com> | ||||
|  | ||||
| * file: src/icons/skin/ratio.png | ||||
|   copyright: Fatcow Web Hosting | ||||
|   license: Creative Commons Attribution 3.0 License | ||||
|   url: http://www.fatcow.com/free-icons | ||||
| * folder: src/icons/ | ||||
|   files: downloading.svg, edit-clear.svg, error.svg, filter-active.svg, filter-inactive.svg, filter-stalled.svg, kt-set-max-download-speed.svg, | ||||
|          kt-set-max-upload-speed.svg, list-add.svg, preferences-web-browser-cookies.svg, stalledDL.svg, stalledUP.svg | ||||
|   copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im) | ||||
|   license: BSD 2-Clause License | ||||
|  | ||||
| Translations authors: | ||||
| * files: src/lang/*.ts | ||||
|   | ||||
| @@ -1,58 +1,49 @@ | ||||
| cmake_minimum_required(VERSION 3.16 FATAL_ERROR) # Policies <= CMP0097 default to NEW | ||||
|  | ||||
| list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules) | ||||
|  | ||||
| project(qBittorrent | ||||
|     DESCRIPTION "The qBittorrent BitTorrent client" | ||||
|     HOMEPAGE_URL "https://www.qbittorrent.org/" | ||||
|     LANGUAGES CXX | ||||
| ) | ||||
|  | ||||
| # use CONFIG mode first in find_package | ||||
| set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON) | ||||
| # version requirements - older versions may work, but you are on your own | ||||
| set(minBoostVersion 1.65) | ||||
| set(minQtVersion 5.11) | ||||
| set(minOpenSSLVersion 1.1.1) | ||||
| set(minLibtorrentVersion 1.2.12) | ||||
| set(minBoostVersion 1.76) | ||||
| set(minQt6Version 6.5.0) | ||||
| set(minOpenSSLVersion 3.0.2) | ||||
| set(minLibtorrent1Version 1.2.19) | ||||
| set(minLibtorrentVersion 2.0.10) | ||||
| set(minZlibVersion 1.2.11) | ||||
|  | ||||
| # features (some are platform-specific) | ||||
| include(CheckCXXSourceCompiles) # TODO: migrate to CheckSourceCompiles in CMake >= 3.19 | ||||
| include(GNUInstallDirs) | ||||
|  | ||||
| list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules) | ||||
| include(FeatureSummary) | ||||
| include(FeatureOptionsSetup) | ||||
| feature_option(STACKTRACE "Enable stacktraces" ON) | ||||
|  | ||||
| # features, list is loosely sorted by user's interests | ||||
| feature_option(GUI "Build GUI application" ON) | ||||
| feature_option(WEBUI "Enables built-in HTTP server for headless use" ON) | ||||
| feature_option(WEBUI "Enable built-in HTTP server for remote control" ON) | ||||
| feature_option(STACKTRACE "Enable stacktrace support" ON) | ||||
| feature_option(TESTING "Build internal testing suite" OFF) | ||||
| feature_option(VERBOSE_CONFIGURE "Show information about PACKAGES_FOUND and PACKAGES_NOT_FOUND in the configure output (only useful for debugging the CMake build scripts)" OFF) | ||||
| if (CMAKE_SYSTEM_NAME STREQUAL "Linux") | ||||
|  | ||||
| if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") | ||||
|     feature_option_dependent(DBUS | ||||
|         "Enables support for notifications and power-management features on Linux via D-Bus" | ||||
|         "Enable support for notifications and power-management features via D-Bus" | ||||
|         ON "GUI" OFF | ||||
|     ) | ||||
|     feature_option_dependent(SYSTEMD | ||||
|         "Install systemd service file to a directory manually overridable with Systemd_SERVICES_INSTALL_DIR" | ||||
|         OFF "NOT GUI" OFF | ||||
|     ) | ||||
|     if (STACKTRACE) | ||||
|         check_cxx_source_compiles( | ||||
|             "#include <execinfo.h> | ||||
|             int main(){return 0;}" | ||||
|             QBITTORRENT_HAS_EXECINFO_H | ||||
|         ) | ||||
|         if (NOT QBITTORRENT_HAS_EXECINFO_H) | ||||
|             message(FATAL_ERROR "execinfo.h header file not found.\n" | ||||
|                 "Please either disable the STACKTRACE feature or use a libc that has this header file, such as glibc (GNU libc)." | ||||
|             ) | ||||
|         endif() | ||||
|     endif() | ||||
| elseif (MSVC) | ||||
|     feature_option(MSVC_RUNTIME_DYNAMIC "Use MSVC dynamic runtime library (-MD) instead of static (-MT)" ON) | ||||
| endif() | ||||
|  | ||||
| include(GNUInstallDirs) | ||||
| add_subdirectory(src) | ||||
| add_subdirectory(dist) | ||||
| if (CMAKE_SYSTEM_NAME STREQUAL "Linux") | ||||
|     feature_option_dependent(SYSTEMD | ||||
|         "Install systemd service file. Target directory is overridable with `SYSTEMD_SERVICES_INSTALL_DIR` variable" | ||||
|         OFF "NOT GUI" OFF | ||||
|     ) | ||||
| endif() | ||||
|  | ||||
| if (MSVC) | ||||
|     feature_option(MSVC_RUNTIME_DYNAMIC "Use MSVC dynamic runtime library (-MD) instead of static (-MT)" ON) | ||||
| endif() | ||||
|  | ||||
| if (VERBOSE_CONFIGURE) | ||||
|     feature_summary(WHAT ALL) | ||||
| @@ -60,5 +51,17 @@ else() | ||||
|     feature_summary(WHAT ENABLED_FEATURES DISABLED_FEATURES) | ||||
| endif() | ||||
|  | ||||
| # go check the packages | ||||
| include(CheckPackages) | ||||
| # configure for specific platform | ||||
| include(CommonConfig) | ||||
|  | ||||
| # Generate version header | ||||
| configure_file("src/base/version.h.in" "${CMAKE_CURRENT_SOURCE_DIR}/src/base/version.h" @ONLY) | ||||
|  | ||||
| add_subdirectory(src) | ||||
| add_subdirectory(dist) | ||||
|  | ||||
| if (TESTING) | ||||
|     add_subdirectory(test) | ||||
| endif() | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| # Coding Guidelines | ||||
|  | ||||
| All new code **must** follow the following coding guidelines. \ | ||||
| All new code **must** follow the following coding guidelines. | ||||
|  | ||||
| If you make changes in a file that still uses another coding style, make sure that you follow these guidelines for your changes. \ | ||||
| For programming languages other than C++ (e.g. JavaScript) used in this repository and submodules, unless otherwise specified, coding guidelines listed here applies as much as possible. | ||||
|  | ||||
| @@ -275,7 +276,7 @@ struct StructName {}; | ||||
|  | ||||
| enum EnumName {}; | ||||
|  | ||||
| typedef QList<ClassName> SomeList; | ||||
| using SomeList = QList<ClassName>; | ||||
|  | ||||
| namespace NamespaceName | ||||
| { | ||||
| @@ -317,7 +318,7 @@ The headers should be ordered alphabetically within each group. \ | ||||
| If there are conditionals for the same header group, then put them at the bottom of the respective group. \ | ||||
| If there are conditionals that contain headers from several different header groups, then put them above the "qBittorrent's own headers" group. | ||||
|  | ||||
| One exception is the header containing the library version (for example, QtGlobal), this particular header isn't constrained by the aforementioned order. | ||||
| One exception is the header containing the library version (for example, QtVersionChecks), this particular header isn't constrained by the aforementioned order. | ||||
|  | ||||
| Example: | ||||
|  | ||||
| @@ -330,7 +331,7 @@ Example: | ||||
| // exceptions, headers containing version number | ||||
| #include <boost/version.hpp> | ||||
| #include <libtorrent/version.hpp> | ||||
| #include <QtGlobal> | ||||
| #include <QtVersionChecks> | ||||
|  | ||||
| // C++ Standard Library headers | ||||
| #include <cstdio> | ||||
| @@ -341,7 +342,7 @@ Example: | ||||
|  | ||||
| // System headers | ||||
| #ifdef Q_OS_WIN | ||||
| #include <Windows.h> | ||||
| #include <windows.h> | ||||
| #endif | ||||
|  | ||||
| // Boost library headers | ||||
| @@ -456,8 +457,8 @@ class ExampleWidget : public QWidget | ||||
| * Prefer pre-increment, pre-decrement operators | ||||
|  | ||||
|   ```c++ | ||||
|   ++i, --j;  // Yes | ||||
|   i++, j--;  // No | ||||
|   ++i, --j;  // yes | ||||
|   i++, j--;  // no | ||||
|   ``` | ||||
|  | ||||
| * private/public/protected must not be indented | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user