You've already forked qBittorrent
mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-10-09 18:32:15 +02:00
Compare commits
2153 Commits
release-4.
...
release-5.
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a5681f72bc | ||
![]() |
9e569f1a70 | ||
![]() |
9d3c314ac0 | ||
![]() |
931de85ab5 | ||
![]() |
6a82cb1af6 | ||
![]() |
f8ae8f419d | ||
![]() |
ac91c1348b | ||
![]() |
d7aaf80744 | ||
![]() |
50caa231f7 | ||
![]() |
d5e41bf679 | ||
![]() |
773cb1e55d | ||
![]() |
0967bdc715 | ||
![]() |
c06817f4eb | ||
![]() |
1702b6c891 | ||
![]() |
f65af03c67 | ||
![]() |
a567f8b600 | ||
![]() |
71f1e6df59 | ||
![]() |
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 | ||
![]() |
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 | ||
![]() |
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 2017
|
||||
|
||||
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\2017\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
|
||||
|
1
.github/FUNDING.yml
vendored
Normal file
1
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
custom: "https://www.qbittorrent.org/donate.php"
|
20
.github/ISSUE_TEMPLATE.md
vendored
20
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,20 +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"
|
244
.github/workflows/ci.yaml
vendored
244
.github/workflows/ci.yaml
vendored
@@ -1,244 +0,0 @@
|
||||
name: GitHub Actions CI
|
||||
|
||||
# Cache is used for all Windows and macOS dependencies (size approx. 1230 * 2 + 1850 = 4310 MiB)
|
||||
# Cache is not used for Ubuntu builds, because it already has all dependencies except
|
||||
# the appropriate libtorrent version, which only takes 3-5 minutes to build from source anyway
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
types: [edited, opened, reopened, synchronize]
|
||||
branches: [ master ]
|
||||
|
||||
env:
|
||||
# Qt: 5.15.0
|
||||
# libtorrent: RC_1_2 HEAD, 1.2.10
|
||||
VCPKG_COMMIT: 32eccc18191fbb57b159784a1724d2d00613ae82
|
||||
VCPKG_DEST_MACOS: /Users/runner/qbt_tools/vcpkg
|
||||
VCPKG_DEST_WIN: C:\qbt_tools\vcpkg
|
||||
UBUNTU_LIBTORRENT_VERSION: libtorrent-1.2.10
|
||||
|
||||
jobs:
|
||||
|
||||
ci_ubuntu:
|
||||
name: Ubuntu
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-20.04, ubuntu-18.04]
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
fail-fast: false
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
steps:
|
||||
- name: checkout repository
|
||||
uses: actions/checkout@v2.3.2
|
||||
|
||||
- name: install all build dependencies except libtorrent from Ubuntu repos
|
||||
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 \
|
||||
libqt5svg5-dev qtbase5-dev qttools5-dev
|
||||
|
||||
- name: install libtorrent from source
|
||||
run: |
|
||||
git clone https://github.com/arvidn/libtorrent && cd libtorrent
|
||||
git checkout ${{ env.UBUNTU_LIBTORRENT_VERSION }}
|
||||
cmake -B cmake-build-dir -G "Ninja" \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-Ddeprecated-functions=OFF \
|
||||
--graphviz=cmake-build-dir/target_graph.dot
|
||||
cmake --build cmake-build-dir
|
||||
sudo cmake --install cmake-build-dir --prefix /usr/local
|
||||
|
||||
- name: build qBittorrent
|
||||
run: |
|
||||
cmake -B build -G "Ninja" \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-D${{ matrix.qbt_gui }} \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
--graphviz=build/target_graph.dot
|
||||
cmake --build build
|
||||
|
||||
- name: upload artifact as zip
|
||||
uses: actions/upload-artifact@v2.1.3
|
||||
with:
|
||||
name: qBittorrent-CI-Ubuntu_${{ matrix.os }}-${{ matrix.qbt_gui }}
|
||||
path: |
|
||||
build/compile_commands.json
|
||||
build/target_graph.dot
|
||||
build/qbittorrent
|
||||
build/qbittorrent-nox
|
||||
libtorrent/cmake-build-dir/compile_commands.json
|
||||
libtorrent/cmake-build-dir/target_graph.dot
|
||||
|
||||
ci_windows:
|
||||
name: Windows + vcpkg
|
||||
|
||||
runs-on: windows-2019
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
|
||||
steps:
|
||||
- name: checkout repository
|
||||
uses: actions/checkout@v2.3.2
|
||||
|
||||
# - ninja is needed for building qBittorrent (because it's preferrable, not a hard requirement)
|
||||
- name: install additional required packages with chocolatey
|
||||
run: |
|
||||
choco install ninja
|
||||
|
||||
- name: setup vcpkg (cached, if possible)
|
||||
uses: lukka/run-vcpkg@v3.3
|
||||
with:
|
||||
vcpkgDirectory: ${{ env.VCPKG_DEST_WIN }}
|
||||
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT }}
|
||||
setupOnly: true
|
||||
|
||||
# Tell vcpkg to only build Release variants of the dependencies
|
||||
- name: configure vcpkg triplet overlay for release builds only
|
||||
run: |
|
||||
New-Item -Path ${{ github.workspace }} -Name "triplets_overlay" -ItemType Directory
|
||||
Copy-Item ${{ env.RUNVCPKG_VCPKG_ROOT }}/triplets/x64-windows-static.cmake `
|
||||
${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake
|
||||
Add-Content ${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake `
|
||||
-Value "set(VCPKG_BUILD_TYPE release)"
|
||||
|
||||
# clear buildtrees after each package installation to reduce disk space requirements
|
||||
- name: install dependencies via vcpkg
|
||||
run: |
|
||||
$packages = `
|
||||
"boost-circular-buffer:x64-windows-static-release",
|
||||
"libtorrent:x64-windows-static-release",
|
||||
"qt5-base:x64-windows-static-release",
|
||||
"qt5-svg:x64-windows-static-release",
|
||||
"qt5-tools:x64-windows-static-release",
|
||||
"qt5-winextras:x64-windows-static-release"
|
||||
foreach($package in $packages)
|
||||
{
|
||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe install $package `
|
||||
--overlay-triplets=${{ github.workspace }}/triplets_overlay `
|
||||
--clean-after-build
|
||||
}
|
||||
|
||||
# NOTE: this is necessary to correctly find and use cl.exe with the Ninja generator for now
|
||||
- name: setup devcmd
|
||||
uses: ilammy/msvc-dev-cmd@v1.3.0
|
||||
|
||||
- name: build qBittorrent
|
||||
shell: cmd
|
||||
run: |
|
||||
cmake -B build -G "Ninja" ^
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo ^
|
||||
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_DEST_WIN }}\scripts\buildsystems\vcpkg.cmake ^
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-release ^
|
||||
-DVERBOSE_CONFIGURE=ON ^
|
||||
-DMSVC_RUNTIME_DYNAMIC=OFF ^
|
||||
--graphviz=build\target_graph.dot
|
||||
cmake --build build
|
||||
|
||||
- name: upload artifact as zip
|
||||
uses: actions/upload-artifact@v2.1.3
|
||||
with:
|
||||
name: qBittorrent-CI-Windows_x64-static-release
|
||||
path: |
|
||||
build/compile_commands.json
|
||||
build/target_graph.dot
|
||||
build/qbittorrent.exe
|
||||
build/qbittorrent.pdb
|
||||
dist/windows/qt.conf
|
||||
|
||||
ci_macos:
|
||||
name: macOS + vcpkg
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
fail-fast: false
|
||||
|
||||
runs-on: macos-10.15
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
|
||||
steps:
|
||||
- name: checkout repository
|
||||
uses: actions/checkout@v2.3.2
|
||||
|
||||
# - ninja is needed for building qBittorrent (because it's preferrable, not a hard requirement)
|
||||
# - pkg-config is needed for some vcpkg installations
|
||||
- name: install additional required packages with homebrew
|
||||
shell: bash
|
||||
run: |
|
||||
brew install ninja pkg-config
|
||||
|
||||
- name: setup vcpkg (cached, if possible)
|
||||
uses: lukka/run-vcpkg@v3.3
|
||||
with:
|
||||
vcpkgDirectory: ${{ env.VCPKG_DEST_MACOS }}
|
||||
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT }}
|
||||
setupOnly: true
|
||||
|
||||
- name: configure vcpkg triplet overlay for release builds only
|
||||
run: |
|
||||
New-Item -Path ${{ github.workspace }} -Name "triplets_overlay" -ItemType Directory
|
||||
Copy-Item ${{ env.RUNVCPKG_VCPKG_ROOT }}/triplets/x64-osx.cmake `
|
||||
${{ github.workspace }}/triplets_overlay/x64-osx-release.cmake
|
||||
Add-Content ${{ github.workspace }}/triplets_overlay/x64-osx-release.cmake `
|
||||
-Value "set(VCPKG_BUILD_TYPE release)"
|
||||
|
||||
# NOTE: Avoids a libtorrent ABI issue. See https://github.com/arvidn/libtorrent/issues/4965
|
||||
- name: force AppleClang to compile libtorrent with C++14
|
||||
run: |
|
||||
(Get-Content -path ${{ env.RUNVCPKG_VCPKG_ROOT }}/ports/libtorrent/portfile.cmake).Replace( `
|
||||
'${FEATURE_OPTIONS}', '${FEATURE_OPTIONS} -DCMAKE_CXX_STANDARD=14') `
|
||||
| Set-Content -Path ${{ env.RUNVCPKG_VCPKG_ROOT }}/ports/libtorrent/portfile.cmake
|
||||
|
||||
- name: install dependencies via vcpkg
|
||||
run: |
|
||||
$packages = `
|
||||
"boost-circular-buffer:x64-osx-release",
|
||||
"libtorrent:x64-osx-release",
|
||||
"qt5-base:x64-osx-release",
|
||||
"qt5-svg:x64-osx-release",
|
||||
"qt5-tools:x64-osx-release",
|
||||
"qt5-macextras:x64-osx-release"
|
||||
foreach($package in $packages)
|
||||
{
|
||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg install $package `
|
||||
--overlay-triplets=${{ github.workspace }}/triplets_overlay `
|
||||
--clean-after-build
|
||||
}
|
||||
|
||||
- name: build qBittorrent
|
||||
shell: bash
|
||||
run: |
|
||||
cmake -B build -G "Ninja" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_DEST_MACOS }}/scripts/buildsystems/vcpkg.cmake \
|
||||
-DVCPKG_TARGET_TRIPLET=x64-osx-release \
|
||||
-D${{ matrix.qbt_gui }} \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
--graphviz=build/target_graph.dot
|
||||
cmake --build build
|
||||
|
||||
- name: upload artifact as zip
|
||||
uses: actions/upload-artifact@v2.1.3
|
||||
with:
|
||||
name: qBittorrent-CI-macOS_x64-static-release_${{ matrix.qbt_gui }}
|
||||
path: |
|
||||
build/compile_commands.json
|
||||
build/target_graph.dot
|
||||
build/qbittorrent.app
|
||||
build/qbittorrent-nox.app
|
44
.github/workflows/ci_file_health.yaml
vendored
Normal file
44
.github/workflows/ci_file_health.yaml
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
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@v4
|
||||
|
||||
- name: Install tools
|
||||
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: |
|
||||
# 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
Normal file
140
.github/workflows/ci_macos.yaml
vendored
Normal file
@@ -0,0 +1,140 @@
|
||||
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-latest
|
||||
|
||||
strategy:
|
||||
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"
|
||||
openssl_root: /usr/local/opt/openssl@3
|
||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
uses: Wandalen/wretry.action@v1
|
||||
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 \
|
||||
openssl@3 zlib
|
||||
|
||||
- name: Setup ccache
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
store_cache: ${{ startsWith(github.ref, 'refs/heads/') }}
|
||||
update_packager_index: false
|
||||
|
||||
- name: Install boost
|
||||
env:
|
||||
BOOST_MAJOR_VERSION: "1"
|
||||
BOOST_MINOR_VERSION: "84"
|
||||
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@v3
|
||||
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 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 \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-Ddeprecated-functions=OFF \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}"
|
||||
cmake --build build
|
||||
sudo cmake --install build
|
||||
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-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
|
||||
pushd build
|
||||
macdeployqt "$appName.app" -dmg -no-strip
|
||||
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@v4
|
||||
with:
|
||||
name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||
path: upload
|
170
.github/workflows/ci_ubuntu.yaml
vendored
Normal file
170
.github/workflows/ci_ubuntu.yaml
vendored
Normal file
@@ -0,0 +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-latest
|
||||
|
||||
strategy:
|
||||
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@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: Setup ccache
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
store_cache: ${{ startsWith(github.ref, 'refs/heads/') }}
|
||||
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: |
|
||||
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@v3
|
||||
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 }}
|
||||
CXXFLAGS="$CXXFLAGS ${{ env.harden_flags }}" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-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: |
|
||||
CXXFLAGS="$CXXFLAGS ${{ env.harden_flags }} -Werror" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-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: 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-x86_64.AppImage \
|
||||
-O https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage \
|
||||
-O https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage
|
||||
chmod +x \
|
||||
linuxdeploy-x86_64.AppImage \
|
||||
linuxdeploy-plugin-qt-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-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-x86_64.AppImage --appdir qbittorrent --output appimage
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qBittorrent-CI_Ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||
path: upload
|
48
.github/workflows/ci_webui.yaml
vendored
Normal file
48
.github/workflows/ci_webui.yaml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
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
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: src/webui/www
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup nodejs
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 'lts/*'
|
||||
|
||||
- name: Install tools
|
||||
run: npm install
|
||||
|
||||
- name: Lint code
|
||||
run: npm run lint
|
||||
|
||||
- name: Format code
|
||||
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
|
198
.github/workflows/ci_windows.yaml
vendored
Normal file
198
.github/workflows/ci_windows.yaml
vendored
Normal file
@@ -0,0 +1,198 @@
|
||||
name: CI - Windows
|
||||
|
||||
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: windows-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.10", "1.2.19"]
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
||||
vcpkg_path: "c:/vcpkg"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup devcmd
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Install build tools
|
||||
run: |
|
||||
if ((Get-Command "ninja.exe" -ErrorAction SilentlyContinue) -eq $null)
|
||||
{
|
||||
choco install ninja
|
||||
}
|
||||
where.exe ninja
|
||||
ninja --version
|
||||
|
||||
# https://learn.microsoft.com/en-us/vcpkg/users/binarycaching#gha
|
||||
- name: Set variables for vcpkg
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
core.exportVariable('ACTIONS_CACHE_URL', (process.env.ACTIONS_CACHE_URL || ''));
|
||||
core.exportVariable('ACTIONS_RUNTIME_TOKEN', (process.env.ACTIONS_RUNTIME_TOKEN || ''));
|
||||
|
||||
- name: Install dependencies with vcpkg
|
||||
run: |
|
||||
# create our own triplet
|
||||
New-Item `
|
||||
-Force `
|
||||
-ItemType File `
|
||||
-Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake"
|
||||
# OpenSSL isn't compatible with `/guard:cf` flag so we omit it for now, see: https://github.com/openssl/openssl/issues/22554
|
||||
Add-Content `
|
||||
-Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake" `
|
||||
-Value @("set(VCPKG_TARGET_ARCHITECTURE x64)",
|
||||
"set(VCPKG_LIBRARY_LINKAGE static)",
|
||||
"set(VCPKG_CRT_LINKAGE dynamic)",
|
||||
"set(VCPKG_BUILD_TYPE release)")
|
||||
# clear buildtrees after each package installation to reduce disk space requirements
|
||||
$packages = `
|
||||
"openssl:x64-windows-static-md-release",
|
||||
"zlib:x64-windows-static-md-release"
|
||||
${{ env.vcpkg_path }}/vcpkg.exe upgrade `
|
||||
--no-dry-run `
|
||||
--overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay"
|
||||
${{ env.vcpkg_path }}/vcpkg.exe install `
|
||||
--binarysource="clear;x-gha,readwrite" `
|
||||
--clean-after-build `
|
||||
--overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay" `
|
||||
$packages
|
||||
|
||||
- name: Install boost
|
||||
env:
|
||||
BOOST_MAJOR_VERSION: "1"
|
||||
BOOST_MINOR_VERSION: "84"
|
||||
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"
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."
|
||||
if ($LastExitCode -ne 0)
|
||||
{
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."
|
||||
}
|
||||
move "${{ github.workspace }}/../boost_*" "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: "6.5.2"
|
||||
archives: qtbase 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 }}
|
||||
$env:CXXFLAGS+=" /guard:cf"
|
||||
$env:LDFLAGS+=" /guard:cf"
|
||||
cmake `
|
||||
-B build `
|
||||
-G "Ninja" `
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
||||
-DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}/install" `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.vcpkg_path }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||
-DBUILD_SHARED_LIBS=OFF `
|
||||
-Ddeprecated-functions=OFF `
|
||||
-Dstatic_runtime=OFF `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release
|
||||
cmake --build build
|
||||
cmake --install build
|
||||
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
$env:CXXFLAGS+=" /WX"
|
||||
cmake `
|
||||
-B build `
|
||||
-G "Ninja" `
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.vcpkg_path }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||
-DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/install/lib/cmake/LibtorrentRasterbar" `
|
||||
-DMSVC_RUNTIME_DYNAMIC=ON `
|
||||
-DTESTING=ON `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release `
|
||||
-DVERBOSE_CONFIGURE=ON `
|
||||
--graphviz=build/target_graph.dot
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
|
||||
- name: Prepare build artifacts
|
||||
run: |
|
||||
mkdir upload
|
||||
mkdir upload/qBittorrent
|
||||
copy build/qbittorrent.exe upload/qBittorrent
|
||||
copy build/qbittorrent.pdb upload/qBittorrent
|
||||
copy dist/windows/qt.conf upload/qBittorrent
|
||||
# runtimes
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Core.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Gui.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Network.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Sql.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Svg.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Widgets.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Xml.dll" upload/qBittorrent
|
||||
mkdir upload/qBittorrent/plugins/iconengines
|
||||
copy "${{ env.Qt6_DIR }}/plugins/iconengines/qsvgicon.dll" upload/qBittorrent/plugins/iconengines
|
||||
mkdir upload/qBittorrent/plugins/imageformats
|
||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qico.dll" upload/qBittorrent/plugins/imageformats
|
||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qsvg.dll" upload/qBittorrent/plugins/imageformats
|
||||
mkdir upload/qBittorrent/plugins/platforms
|
||||
copy "${{ env.Qt6_DIR }}/plugins/platforms/qwindows.dll" upload/qBittorrent/plugins/platforms
|
||||
mkdir upload/qBittorrent/plugins/sqldrivers
|
||||
copy "${{ env.Qt6_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/qBittorrent/plugins/sqldrivers
|
||||
mkdir upload/qBittorrent/plugins/styles
|
||||
copy "${{ env.Qt6_DIR }}/plugins/styles/qwindowsvistastyle.dll" upload/qBittorrent/plugins/styles
|
||||
mkdir upload/qBittorrent/plugins/tls
|
||||
copy "${{ env.Qt6_DIR }}/plugins/tls/qschannelbackend.dll" upload/qBittorrent/plugins/tls
|
||||
# cmake additionals
|
||||
mkdir upload/cmake
|
||||
copy build/compile_commands.json upload/cmake
|
||||
copy build/target_graph.dot upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
copy ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}
|
||||
path: upload
|
||||
|
||||
- name: Create installer
|
||||
run: |
|
||||
7z x -o"dist/windows/" "dist/windows/NSISPlugins.zip"
|
||||
makensis /DQBT_DIST_DIR="../../upload/qBittorrent" /WX dist/windows/qbittorrent.nsi
|
||||
|
||||
- name: Upload installer
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}-setup
|
||||
path: dist/windows/qbittorrent_*_setup.exe
|
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: "84"
|
||||
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@v3
|
||||
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
|
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"
|
68
.github/workflows/helper/pre-commit/check_translation_tag.py
vendored
Executable file
68
.github/workflows/helper/pre-commit/check_translation_tag.py
vendored
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/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 as error:
|
||||
# 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
|
6
.gitignore
vendored
6
.gitignore
vendored
@@ -1,9 +1,11 @@
|
||||
.vscode/
|
||||
src/gui/geoip/GeoIP.dat
|
||||
src/gui/geoip/GeoIP.dat.gz
|
||||
src/qbittorrent
|
||||
src/qbittorrent-nox
|
||||
src/release
|
||||
src/debug
|
||||
src/base/version.h
|
||||
CMakeLists.txt.user*
|
||||
qbittorrent.pro.user*
|
||||
conf.pri
|
||||
@@ -15,6 +17,7 @@ Makefile*
|
||||
*.o
|
||||
*.pdb
|
||||
*.exe
|
||||
*.dll
|
||||
|
||||
# Generated MOC, resource and UI files
|
||||
moc_*.cpp
|
||||
@@ -22,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
|
||||
|
117
.pre-commit-config.yaml
Normal file
117
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,117 @@
|
||||
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,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/lang/.* |
|
||||
src/webui/www/private/scripts/lib/.* |
|
||||
src/webui/www/public/lang/.* |
|
||||
src/webui/www/public/scripts/lib/.* |
|
||||
src/webui/www/transifex/.*
|
||||
)$
|
||||
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/lang/.* |
|
||||
src/webui/www/private/scripts/lib/.* |
|
||||
src/webui/www/public/lang/.* |
|
||||
src/webui/www/public/scripts/lib/.* |
|
||||
src/webui/www/transifex/.*
|
||||
)$
|
||||
exclude_types:
|
||||
- svg
|
||||
- ts
|
177
.travis.yml
177
.travis.yml
@@ -1,177 +0,0 @@
|
||||
language: cpp
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
dist: bionic
|
||||
|
||||
env:
|
||||
matrix:
|
||||
- libt_branch=RC_1_2 gui=true build_system=qmake
|
||||
- libt_branch=RC_1_2 gui=false build_system=qmake
|
||||
- libt_branch=RC_1_2 gui=true build_system=cmake
|
||||
- libt_branch=RC_1_2 gui=false build_system=cmake
|
||||
global:
|
||||
- secure: "OI9CUjj4lTb0HwwIZU5PbECU3hLlAL6KC8KsbwohG8/O3j5fLcnmDsK4Ad9us5cC39sS11Jcd1kDP2qRcCuST/glVNhLkcjKkiQerOfd5nQ/qL4JYfz/1mfP5mdpz9jHKzpLUIG+TXkbSTjP6VVmsb5KPT+3pKEdRFZB+Pu9+J8="
|
||||
- coverity_branch: coverity_scan
|
||||
|
||||
matrix:
|
||||
allow_failures:
|
||||
- env: libt_branch=RC_1_2 gui=true build_system=cmake
|
||||
- env: libt_branch=RC_1_2 gui=false build_system=cmake
|
||||
|
||||
branches:
|
||||
except:
|
||||
- search_encoding_windows
|
||||
- v2_9_x
|
||||
|
||||
notifications:
|
||||
email:
|
||||
on_success: change
|
||||
on_failure: change
|
||||
|
||||
cache:
|
||||
ccache: true
|
||||
directories:
|
||||
- $HOME/travis/deb
|
||||
- $HOME/travis/brew
|
||||
|
||||
addons:
|
||||
coverity_scan:
|
||||
project:
|
||||
name: "qbittorrent/qBittorrent"
|
||||
description: "Build submitted via Travis CI"
|
||||
build_command_prepend: "./bootstrap.sh && ./configure $qmake_conf"
|
||||
build_command: "make -j2"
|
||||
branch_pattern: $coverity_branch
|
||||
notification_email: sledgehammer999@qbittorrent.org
|
||||
apt:
|
||||
sources:
|
||||
# sources list: https://github.com/travis-ci/apt-source-safelist/blob/master/ubuntu.json
|
||||
- sourceline: 'ppa:qbittorrent-team/qbt-libtorrent-travisci'
|
||||
- sourceline: 'deb https://apt.kitware.com/ubuntu/ bionic main'
|
||||
key_url: 'https://apt.kitware.com/keys/kitware-archive-latest.asc'
|
||||
packages:
|
||||
# packages list: https://github.com/travis-ci/apt-package-safelist/blob/master/ubuntu-trusty
|
||||
- [autoconf, automake, cmake, colormake]
|
||||
- [libboost-dev, libboost-system-dev]
|
||||
- libssl-dev
|
||||
- [qtbase5-dev, libqt5svg5-dev, qttools5-dev]
|
||||
- zlib1g-dev
|
||||
|
||||
before_install:
|
||||
# only allow specific build for coverity scan, others will stop
|
||||
- if [ "$TRAVIS_BRANCH" = "$coverity_branch" ] && ! [ "$TRAVIS_OS_NAME" = "linux" -a "$libt_branch" = "RC_1_2" -a "$gui" = "true" -a "$build_system" = "qmake" ]; then exit ; fi
|
||||
|
||||
- shopt -s expand_aliases
|
||||
- alias make="colormake -j2" # Using nprocs/2 sometimes may fail (gcc is killed by system)
|
||||
- qbt_path="$HOME/qbt_install"
|
||||
- qmake_conf="$qmake_conf --prefix=$qbt_path"
|
||||
- cmake_conf="$cmake_conf -DCMAKE_INSTALL_PREFIX=$qbt_path"
|
||||
|
||||
# options for specific branches
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
||||
# setup virtual display for after_success target
|
||||
if [ "$gui" = "true" ]; then export "DISPLAY=:99.0" && /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16 ; fi ;
|
||||
# CMake from Kitware is installed in /usr/bin
|
||||
# TravisCI installs its own cmake to another location which ovverides other installations
|
||||
# if they don't call the new binary directly
|
||||
alias cmake="/usr/bin/cmake"
|
||||
fi
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||
CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedefs"
|
||||
|
||||
openssl_root_path="/usr/local/opt/openssl"
|
||||
qmake_conf="$qmake_conf PKG_CONFIG_PATH=$openssl_root_path/lib/pkgconfig:$PKG_CONFIG_PATH"
|
||||
cmake_conf="$cmake_conf -DOPENSSL_ROOT_DIR=$openssl_root_path"
|
||||
fi
|
||||
- |
|
||||
if [ "$gui" = "false" ]; then
|
||||
qmake_conf="$qmake_conf --disable-gui"
|
||||
cmake_conf="$cmake_conf -DGUI=OFF"
|
||||
fi
|
||||
|
||||
# print settings
|
||||
- echo $libt_branch
|
||||
- echo $gui
|
||||
- echo $build_system
|
||||
- echo $qmake_conf
|
||||
- echo $cmake_conf
|
||||
|
||||
install:
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||
# dependencies
|
||||
PATH="/usr/local/opt/ccache/libexec:$PATH"
|
||||
|
||||
brew update > /dev/null
|
||||
brew upgrade cmake
|
||||
brew install ccache colormake boost openssl qt zlib
|
||||
brew link --force qt zlib
|
||||
|
||||
if [ "$build_system" = "cmake" ]; then
|
||||
sudo ln -s /usr/local/opt/qt/mkspecs /usr/local/mkspecs
|
||||
sudo ln -s /usr/local/opt/qt/plugins /usr/local/plugins
|
||||
fi
|
||||
fi
|
||||
- |
|
||||
if [ "$TRAVIS_BRANCH" != "$coverity_branch" ]; then
|
||||
export use_ccache=true
|
||||
ccache -M 512M
|
||||
ccache -V && ccache --show-stats && ccache --zero-stats
|
||||
fi
|
||||
- |
|
||||
if [ "$libt_branch" = "RC_1_2" ] && [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
||||
# Will install latest 1.2.x daily build from the PPA
|
||||
sudo apt-get -y install libtorrent-rasterbar-dev
|
||||
fi
|
||||
- |
|
||||
if [ "$libt_branch" = "RC_1_2" ] && [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||
# building libtorrent manually should be faster than using the official bottle
|
||||
# because the bottle will also pull in a lot of updated dependencies and prolong the overall time
|
||||
pushd "$HOME"
|
||||
git clone --single-branch --branch RC_1_2 https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
git checkout tags/v1.2.10
|
||||
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=14 -Ddeprecated-functions=OFF -DOPENSSL_ROOT_DIR="$openssl_root_path" ./
|
||||
make
|
||||
sudo make install
|
||||
popd
|
||||
fi
|
||||
|
||||
script:
|
||||
- if [ "$TRAVIS_BRANCH" = "$coverity_branch" ]; then exit ; fi # skip usual build when running coverity scan
|
||||
- |
|
||||
cd "$TRAVIS_BUILD_DIR"
|
||||
if [ "$build_system" = "qmake" ]; then
|
||||
# scan only as lupdate is prone to hang
|
||||
lupdate -extensions c,cpp,h,hpp,ui ./
|
||||
./bootstrap.sh
|
||||
./configure $qmake_conf CXXFLAGS="$CXXFLAGS"
|
||||
else
|
||||
mkdir build && cd build
|
||||
cmake $cmake_conf ../
|
||||
fi
|
||||
- make
|
||||
- make install
|
||||
|
||||
after_success:
|
||||
- if [ "$gui" = "true" ]; then qbt_exe="qbittorrent" ; else qbt_exe="qbittorrent-nox" ; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then cd "$qbt_path/bin" ; fi
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||
if [ "$build_system" = "qmake" ]; then
|
||||
macdeployqt "$TRAVIS_BUILD_DIR/src/$qbt_exe.app"
|
||||
cd "$TRAVIS_BUILD_DIR/src/$qbt_exe.app/Contents/MacOS"
|
||||
else
|
||||
cd "$qbt_path/$qbt_exe.app/Contents/MacOS"
|
||||
fi
|
||||
fi
|
||||
- ./$qbt_exe --version
|
||||
|
||||
after_script:
|
||||
- if [ "$use_ccache" = true ]; then ccache --show-stats ; fi
|
43
.tx/config
43
.tx/config
@@ -1,27 +1,32 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[qbittorrent.qbittorrent_master]
|
||||
file_filter = src/lang/qbittorrent_<lang>.ts
|
||||
lang_map = pt: pt_PT
|
||||
source_file = src/lang/qbittorrent_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_master]
|
||||
file_filter = src/lang/qbittorrent_<lang>.ts
|
||||
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
|
||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_webui]
|
||||
file_filter = src/webui/www/translations/webui_<lang>.ts
|
||||
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
|
||||
|
||||
[qbittorrent.qbittorrent_webui]
|
||||
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
|
||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_webui_json]
|
||||
file_filter = src/webui/www/transifex/<lang>.json
|
||||
source_file = src/webui/www/transifex/en.json
|
||||
source_lang = en
|
||||
type = KEYVALUEJSON
|
||||
minimum_perc = 23
|
||||
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
|
||||
mode = developer
|
||||
|
95
AUTHORS
95
AUTHORS
@@ -17,81 +17,78 @@ Contributors:
|
||||
* Nick Tiskov <daymansmail@gmail.com>
|
||||
|
||||
Code from other projects:
|
||||
* files src/qtsingleapplication/* src/lineedit/*
|
||||
* files src/app/qtlocalpeer/*
|
||||
copyright: Nokia Corporation
|
||||
license: LGPL
|
||||
license: mixed
|
||||
|
||||
* files src/ico.cpp src/ico.h
|
||||
copyright: Malte Starostik <malte@kde.org>
|
||||
license: LGPL
|
||||
* files src/gui/lineedit.*
|
||||
copyright: Trolltech ASA <info@trolltech.com>
|
||||
license: custom
|
||||
|
||||
* files src/search_engine/socks.py
|
||||
copyright: Dan Haim <negativeiq@users.sourceforge.net>
|
||||
license: BSD
|
||||
|
||||
* file src/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
|
||||
@@ -119,7 +116,7 @@ Translations authors:
|
||||
- German: Niels Hoffmann (zentralmaschine@users.sourceforge.net)
|
||||
- Greek: Tsvetan Bankov (emerge_life@users.sourceforge.net), Stephanos Antaris (santaris@csd.auth.gr), sledgehammer999(hammered999@gmail.com) and Γιάννης Ανθυμίδης Evropi(Transifex)
|
||||
- Hebrew: David Deutsch (d.deffo@gmail.com)
|
||||
- Hungarian: Majoros Péter (majoros.j.p@t-online.hu)
|
||||
- Hungarian: Majoros Péter
|
||||
- Italian: bovirus (bovirus@live.it) and Matteo Sechi (bu17714@gmail.com)
|
||||
- Japanese: Masato Hashimoto (cabezon.hashimoto@gmail.com)
|
||||
- Korean: Jin Woo Sin (jin828sin@users.sourceforge.net)
|
||||
|
@@ -1,51 +1,67 @@
|
||||
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
|
||||
VERSION 4.3.0.1
|
||||
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
|
||||
set(requiredBoostVersion 1.40)
|
||||
set(requiredQtVersion 5.9.0)
|
||||
set(requiredOpenSSLVersion 1.0)
|
||||
set(requiredLibtorrentVersion 1.2.0)
|
||||
set(requiredZlibVersion 1.2.5.2)
|
||||
|
||||
# features (some are platform-specific)
|
||||
include(FeatureSummary)
|
||||
include(FeatureOptionsSetup)
|
||||
feature_option(STACKTRACE "Enable stacktraces" ON)
|
||||
feature_option(GUI "Build GUI application" ON)
|
||||
feature_option(WEBUI "Enables built-in HTTP server for headless use" ON)
|
||||
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")
|
||||
feature_option_dependent(DBUS
|
||||
"Enables support for notifications and power-management features on Linux 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
|
||||
)
|
||||
elseif (MSVC)
|
||||
feature_option(MSVC_RUNTIME_DYNAMIC "Use MSVC dynamic runtime library (-MD) instead of static (-MT)" ON)
|
||||
endif()
|
||||
|
||||
set(QBT_VER_STATUS "alpha1" CACHE STRING "Project status version. Should be empty for release builds.")
|
||||
# version requirements - older versions may work, but you are on your own
|
||||
set(minBoostVersion 1.76)
|
||||
set(minQt6Version 6.5.0)
|
||||
set(minOpenSSLVersion 3.0.2)
|
||||
set(minLibtorrent1Version 1.2.19)
|
||||
set(minLibtorrentVersion 2.0.9)
|
||||
set(minZlibVersion 1.2.11)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(dist)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
|
||||
include(FeatureSummary)
|
||||
include(FeatureOptionsSetup)
|
||||
|
||||
# features, list is loosely sorted by user's interests
|
||||
feature_option(GUI "Build GUI application" 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" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||
feature_option_dependent(DBUS
|
||||
"Enable support for notifications and power-management features via D-Bus"
|
||||
ON "GUI" OFF
|
||||
)
|
||||
endif()
|
||||
|
||||
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)
|
||||
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()
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user