1
0
mirror of https://github.com/Radarr/Radarr.git synced 2026-03-05 13:21:25 -05:00

Compare commits

...

1181 Commits

Author SHA1 Message Date
Leonardo Galli
5a8d944397 Fixed sorting in movie list view. Also added new downloaded quality column.
Fixes #128
2017-01-12 23:07:09 +01:00
Leonardo Galli
0b70a5c315 Should fix ordering of releases. Fixes #147 (hopefully) 2017-01-12 22:12:32 +01:00
Leonardo Galli
91cded3b71 Merge pull request #202 from Radarr/onedr0p-patch-1
Update UserAgentBuilder.cs
2017-01-12 21:48:16 +01:00
Leonardo Galli
84112dc85b Should fix queueService failed while processing
(#178)
2017-01-12 21:48:02 +01:00
Devin Buhl
b1b947ae7f Update UserAgentBuilder.cs
Make user-agent Radarr
2017-01-12 15:41:56 -05:00
Leonardo Galli
1b035f8657 Update Parser to support large array of Extended, Director, Collectors, ... Cut, Edition, etc.
Fixes #192
2017-01-12 19:21:09 +01:00
Devin Buhl
9d50f4d651 Merge pull request #199 from Radarr/patch/add-uhd-todefault-indexers
Add UHD to default movie categories for newsnab providers
2017-01-12 12:58:23 -05:00
Devin Buhl
c06a6dc988 Add UHD to default movie categories for newsnab providers 2017-01-12 12:53:09 -05:00
Devin Buhl
f198ca2b77 Merge pull request #177 from Radarr/patch/sort-title
Movies in list don't sort correctly #174
2017-01-12 01:08:32 -05:00
Devin Buhl
9cfc766889 Merge pull request #180 from wcomartin/Issue115
Changed Sonarr Branding to Radarr
2017-01-11 23:27:31 -05:00
William Comartin
5ef1e40403 Change Sonarr to Radarr in CLA.md and CONTRIBUTING.md 2017-01-11 22:02:54 -05:00
William Comartin
c9e6835d7b Change Sonarr to Radarr in Help Text, and in Notification Text
Change sonarr log files to radarr log files
2017-01-11 21:59:13 -05:00
William Comartin
604cea00f6 Replace Sonarr With Radarr in UI Directory 2017-01-11 21:42:47 -05:00
Tim Turner
b4782da1d1 Update sortValue when selecting movie for manual import 2017-01-11 19:29:22 -05:00
Devin Buhl
d5504043c5 Movies in list don't sort correctly #174 2017-01-11 19:06:08 -05:00
Leonardo Galli
81ebbcad70 Now hidden files are ignored :). Fixes #166. 2017-01-11 23:05:11 +01:00
Leonardo Galli
92e9dc6ee1 Fix sorting of unkown release date. 2017-01-11 22:39:07 +01:00
Leonardo Galli
5e8b617625 Sorting now working according to quality in release collection. Fixes #85. 2017-01-11 22:27:37 +01:00
Leonardo Galli
2cbe17151d Correctly check if inCinemas date is present. Creates issue with sorting, but eh. Fixes 140. 2017-01-11 22:02:24 +01:00
Devin Buhl
95bd615718 Merge pull request #169 from Radarr/patch/big-movie-revenues
Problem with Avatar (2009) #168
2017-01-11 15:53:16 -05:00
Leonardo Galli
8e8c4ff497 Update parser to recognize [] and year at the beginning. Fixes #155, fixes #137 and fixes #136. 2017-01-11 21:49:59 +01:00
Devin Buhl
5eddcc1660 Problem with Avatar (2009) #168 2017-01-11 15:48:19 -05:00
Tim Turner
d42165a93a Clean up basic movie naming
Fixes #132
2017-01-11 15:03:55 -05:00
Devin Buhl
99012d8a40 Merge pull request #163 from Radarr/patch/fix-plex-notifs
update plex movie libraries instead of series
2017-01-11 12:35:01 -05:00
Devin Buhl
8bc42c76e4 update plex movie libraries instead of series 2017-01-11 12:25:27 -05:00
Leonardo Galli
b7f72c6259 Merge pull request #160 from Radarr/patch/fix-newznab
fix some spelling mistakes and update the newznab api 'imdbid'
2017-01-11 16:59:09 +01:00
Devin Buhl
64ef8db037 fix some spelling mistakes and update the newznab api 'imdbid' 2017-01-11 10:51:06 -05:00
Leonardo Galli
3b5887bf09 Merge pull request #133 from Radarr/fix-manual-import
Fix Manual Import & Drone Factory
2017-01-11 16:39:09 +01:00
Leonardo Galli
40a75949ba Merge pull request #156 from CHBMB/develop
aarch64 docker container added to readme.
2017-01-11 16:33:36 +01:00
Neil
6747267d19 aarch64 docker container added to readme. 2017-01-11 15:12:26 +00:00
Devin Buhl
13db03f97c Merge pull request #154 from Radarr/patch/remove-fanzub
removed indexer Fanzub - site shutdown
2017-01-11 10:12:03 -05:00
Devin Buhl
cd68eea790 removed indexer Fanzub - site shutdown 2017-01-11 09:40:42 -05:00
Devin Buhl
cfe55d00ae Merge pull request #148 from Radarr/patch/newznab-imdb
search imdbid for usenet indexers that support it
2017-01-11 08:53:28 -05:00
Devin Buhl
1d88313424 #146 search imdbid for usenet indexers that support it 2017-01-11 08:42:29 -05:00
Mike
9513068467 Get rid of unnecessary AppVeyor builds. 2017-01-11 08:57:15 +01:00
Tim Turner
9206258370 Fixes Manual Import and DroneFactory
Automatic Import still doesn't work - waiting for answer from Sonarr
team.
2017-01-10 21:12:47 -05:00
Tim Turner
0fa1509ca6 Manual Import works
Automatically importing still broken
2017-01-10 19:37:17 -05:00
Devin Buhl
c5eb772f7a Merge pull request #130 from Radarr/newznab-patch
Add category 2035 to Newznab providers for WEB-DL search support. #123
2017-01-10 19:14:21 -05:00
Devin Buhl
04fec6d4d8 Add category 2035 to Newznab providers for WEB-DL search support. #123 2017-01-10 19:09:12 -05:00
Devin Buhl
d0b5e380d7 Merge pull request #122 from Radarr/transmission-patch
Fix transmission
2017-01-10 17:43:16 -05:00
Devin Buhl
df69c58d2b Fix transmission 2017-01-10 17:37:23 -05:00
Leonardo Galli
27114c9399 Merge pull request #119 from CHBMB/develop
Update readme.md
2017-01-10 23:25:05 +01:00
Neil
cfca07996b Update readme.md 2017-01-10 22:19:12 +00:00
Leonardo Galli
e97b80f630 Update readme.md 2017-01-10 23:19:00 +01:00
Devin Buhl
792679fd81 Merge pull request #118 from lxh87/patch-1
Update SystemLayout.js
2017-01-10 16:50:15 -05:00
lxh87
ecf47d4b17 Update SystemLayout.js
Change restart/shutdown message from"Sonarr" to "Radarr"
2017-01-10 22:42:44 +01:00
Leonardo Galli
3b1d49a78f Update readme.md 2017-01-10 22:30:36 +01:00
Devin Buhl
753f3eb863 Merge pull request #117 from Radarr/wombles-patch
Fix Wombles for movies
2017-01-10 16:29:02 -05:00
Devin Buhl
9fc2d22d19 Fix Wombles for movies 2017-01-10 16:28:16 -05:00
Tim Turner
3cb42f06c2 Clean up Feature Requests 2017-01-10 16:05:56 -05:00
Devin Buhl
a6c396a595 Merge pull request #111 from Radarr/addmovie-patch
fix #108 - Links to IMDB not working when searching for movies
2017-01-10 15:45:39 -05:00
Devin Buhl
bac9076b1e fix #108 - Links to IMDB not working when searching for movies 2017-01-10 15:39:25 -05:00
Tim Turner
b228273be0 Update Info page.
Updates #73
2017-01-10 15:34:43 -05:00
Leonardo Galli
e7fa4cba19 Fix download rejections being ignored. 2017-01-10 21:25:36 +01:00
Leonardo Galli
0506cc4185 Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-10 20:07:01 +01:00
Leonardo Galli
cde8b4dd97 Added MovieFileResource. This allows the UI to interact with movie files better. Downloaded Quality is now shown in the table. 2017-01-10 20:06:53 +01:00
Leonardo Galli
0a0a44162c Merge pull request #105 from galli-leo/linux-tmp-path-patch
Fixes #104 - Backup/update fail Access to the path "/tmp/nzbdrone_backup/config.xml" is denied
2017-01-10 19:31:12 +01:00
Devin Buhl
125f46fbec Fixes #104 - Backup/update fail Access to the path "/tmp/nzbdrone_backup/config.xml" is denied 2017-01-10 13:21:54 -05:00
Leonardo Galli
f3222ca7c7 Merge pull request #102 from galli-leo/addmovies-patch
When adding a movie, monitored toggle doesn't apply and always defaults to being monitored
2017-01-10 19:21:24 +01:00
Devin Buhl
d252a8b232 Fixes #100 - When adding a movie, monitored toggle doesn't apply and always defaults to being monitored 2017-01-10 12:39:28 -05:00
Leonardo Galli
48559cf964 Updated legend with number of movies 2017-01-10 17:36:04 +01:00
Leonardo Galli
c734e8bc7e Update legend for missing status colors. 2017-01-10 17:07:32 +01:00
Leonardo Galli
3c7d7756e6 Fix issues with media managment config not getting saved. 2017-01-10 17:05:37 +01:00
Leonardo Galli
683bda49d8 Movie Editor works now. Fixes #99. 2017-01-10 16:51:56 +01:00
Leonardo Galli
52fb29ee18 Fixes a few things with importing: Sample check is done even when file is already in movie folder. Fixed importing of movies with "DC". 2017-01-10 16:23:07 +01:00
Leonardo Galli
236e16c9a5 Update sample detection runtime minutes. Some trailers can be long. 2017-01-10 15:43:35 +01:00
Leonardo Galli
0584038273 Fix queue specification. 2017-01-10 15:33:39 +01:00
Leonardo Galli
6685aea144 Movie search should now work, even when titles returned from the TMDB do not have a release date set. Fixes #27. 2017-01-10 15:29:20 +01:00
Leonardo Galli
e4f7aa52df History now correctly shows movie title. Fixes #92 2017-01-10 15:15:15 +01:00
Leonardo Galli
f61c4feb00 Redownloading failed downloads works again. Fixes #89. 2017-01-10 14:15:27 +01:00
Leonardo Galli
04e8c635e0 Use correct Modal for editing movies in table view. Fixes #90 2017-01-10 14:05:01 +01:00
Leonardo Galli
93ea5cfdee Merge pull request #88 from schumi2004/develop
Replace Sonarr with Radarr in Test notification messages
2017-01-10 11:31:39 +01:00
schumi2004
1b7288e7cb Replace Sonarr with Radarr in Test notification messages 2017-01-10 11:21:09 +01:00
Tim Turner
f1914082b8 Merge pull request #74 from fedoranimus/develop
Taking a pass at Library import and rename/organize
2017-01-09 17:31:25 -05:00
Tim Turner
6016948329 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-09 17:26:25 -05:00
Tim Turner
708db1a75c Organize & Rename work 2017-01-09 17:26:13 -05:00
Leonardo Galli
994e881ba6 Fixes an issue with movies not being added with same title slug as existing movies. 2017-01-09 23:16:54 +01:00
Leonardo Galli
893e20c27b Fix some links under status. Needs further changing further down the line. 2017-01-09 22:17:17 +01:00
Tim Turner
23aace6149 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop
# Conflicts:
#	src/NzbDrone.Api/Series/MovieResource.cs
2017-01-09 15:59:25 -05:00
Leonardo Galli
e774e6a038 Fix for importing movie folders with the at the end. 2017-01-09 21:37:37 +01:00
Leonardo Galli
f19a1a5960 Update Parser to support 576p movies, fixes #67 2017-01-09 18:43:41 +01:00
Devin Buhl
03156d62f6 Remove some indexers and fixed HDBits (#79)
* Update HDBitsRequestGenerator.cs

* Removed torrentleech, btn and bitmetv
2017-01-09 18:28:08 +01:00
Leonardo Galli
04d01dc781 Fixes Parser to match ImdbId as well as (year).
Also fixes searching by imdbid. Fixes importing existing movies as well.
2017-01-09 17:52:55 +01:00
Leonardo Galli
cfae8807aa Fixes movies not being able to be searched for.
(Very stupid mistake on my part.) Fixes #80
2017-01-09 16:47:51 +01:00
Tim Turner
f90e77987e Merge pull request #70 from aaearon/indexer-fix/omgwtfnzbs
update rss sync and fix search for omgwtfnzbs indexer
2017-01-09 08:39:23 -05:00
Devin Buhl
2ed0738b30 Added PassThePopcorn indexer (#64)
* Added PassThePopcorn indexe

* Added checkboxes for Gold and Checked torrents thanks @evulhotdog

* Sorted movie releases by golden -> checked -> upload date

* Refactored logic.

* Added flags at the end of torrent name for golden / approved

* Updated PTP GOlden to be the popcorn emoji

* Revert "Updated PTP GOlden to be the popcorn emoji"

This reverts commit c6cf0f5fc5.

* Opps, hopefully build will pass now.

* Move PTP props to new subclass.
2017-01-09 14:30:15 +01:00
Tim Turner
74c5664a7f Taking another pass at organization/renaming
Works once in a while
2017-01-08 22:16:14 -05:00
Tim Turner
4c9abe3d84 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-08 19:48:14 -05:00
Tim Turner
7a45394820 Unable to properly parse many movie titles 2017-01-08 19:48:04 -05:00
Tim Schindler
588a48e65d update rss sync and fix search for omgwtfnzbs indexer 2017-01-08 18:49:27 -05:00
Leonardo Galli
83453e2464 Update SkyHookProxy.cs 2017-01-09 00:40:36 +01:00
Leonardo Galli
e6809585c9 Update SonarrCloudRequestBuilder.cs
Fix https error on older mono versions
2017-01-08 23:58:49 +01:00
Tim Turner
14bf63e21d Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-08 17:01:47 -05:00
Tim Turner
b5d932866a Second Pass at rename/organize 2017-01-08 17:01:37 -05:00
Leonardo Galli
0b8a84a57c Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-08 20:45:22 +01:00
Leonardo Galli
3555b4ce20 Change name from updated message. 2017-01-08 20:45:19 +01:00
Mike
8cad976e7f Update readme.md 2017-01-08 20:23:24 +01:00
Leonardo Galli
ad7b6a8ec2 Remove hacky way to change branch 2017-01-08 20:09:44 +01:00
Leonardo Galli
906ecfb6a1 Fixed multiple things in the Update procedure 2017-01-08 20:06:39 +01:00
Mike
03cc3a1ad2 Change default branch in config. (#63)
* Change Sonarr / NzbDrone auto-updater stuff to Radarr.

This is required in order for the auto-updater to work.

* Change default branch to develop instead of forcing it.
2017-01-08 19:42:46 +01:00
Mike
d62dbd48ae Change Sonarr / NzbDrone auto-updater stuff to Radarr. (#61)
This is required in order for the auto-updater to work.
2017-01-08 18:47:48 +01:00
Leonardo Galli
cb12945270 Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-08 18:16:10 +01:00
Leonardo Galli
af74854b8e Fix Service install, when Sonarr is also present. Fixes #55. 2017-01-08 18:16:07 +01:00
Leonardo Galli
f35fae109b Merge pull request #59 from galli-leo/feature/release-dates
Physical release dates now are retreived and stored.
2017-01-08 17:57:22 +01:00
Leonardo Galli
804b2130a8 Merge branch 'develop' into feature/release-dates 2017-01-08 17:49:06 +01:00
Leonardo Galli
49537a2efe Update UI to display download status. 2017-01-08 17:47:19 +01:00
Leonardo Galli
1dfb4ddcd8 Fixes sorting of movies. Fixes #53. 2017-01-08 17:10:56 +01:00
Leonardo Galli
fb7969e046 Available date is now displayed. 2017-01-08 16:36:51 +01:00
Tim Turner
cd4863b974 Display UI for MovieEditor, remove reference to SeasonPass 2017-01-08 09:16:24 -05:00
Leonardo Galli
55f4a81dee Adding first implementation of release_dates for movies. 2017-01-08 12:58:39 +01:00
Tim Turner
d006df8d7c Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-08 06:51:47 -05:00
Leonardo Galli
97095733dd Sets Branch to develop. We need to change this later. 2017-01-08 11:28:23 +01:00
Mike
d08b0ce47a Integrate AppVeyor and change assembly versioning (#50)
* Change tvsearch to movie.

* Start working on AppVeyor.

* Add builds.

* MSBuild clean

* Fix.

* Added submodules.

* Add NuGet and Build.

* Restore properly.

* Proper build.

* Disable appveyor tests.

* Ignore cakebuild tools and updated build task.

* Package mono finished.

* Added osx package task.

* Less output, added osx package.

* Shut up npm.

* Actually shut up.

* Added PackageTests task.

* Added task CleanupWindowsPackage.

* Add artifacts.

* AssemblyVersion patching.

* Fix appveyor path.

* Is this a valid pattern?

* Cache node modules.

* Put in subdirectory.

* Start from v0.2.0.x to have a clean start with versions.

* Add tests.

* Tests work but disabled for now.

* Disable for real.
2017-01-08 11:03:04 +01:00
Leonardo Galli
caa5a7e6b7 Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-08 10:58:54 +01:00
Leonardo Galli
9376c02158 Movies can now be edited, even from the detail view. Fixes #42 2017-01-08 10:58:51 +01:00
Tim Turner
1ebd639e36 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-07 21:05:30 -05:00
Tim Turner
eff34725af Merge pull request #47 from mitchellcash/remove_DS_Store
Remove all .DS_Store files
2017-01-07 20:57:10 -05:00
Tim Turner
00d4bfd712 Merge pull request #48 from fedoranimus/develop
Harden parsing of imported movie titles
2017-01-07 20:56:33 -05:00
Tim Turner
5f9e285c70 Fix issues with ", the" not trimming properly 2017-01-07 20:55:14 -05:00
Tim Turner
902824cdbd Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-07 20:54:52 -05:00
Mitchell Cash
d3cbf9a8ff Remove all .DS_Store files
It is now part of .gitignore so hopefully we shouldn't see these again.
2017-01-08 11:20:50 +10:00
Mike
c63704ba0d Change tvsearch to movie. (#46) 2017-01-07 20:48:45 +01:00
Tim Turner
da404d6435 Merge pull request #45 from fedoranimus/develop
Enables the Import UI & parses movie titles which contain year
2017-01-07 14:31:24 -05:00
Tim Turner
d9a6c4f211 Update import UI & parse titles which contain years 2017-01-07 14:29:23 -05:00
Tim Turner
7436997f9b Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-07 12:38:58 -05:00
Tim Turner
4c2be68549 Merge pull request #38 from fedoranimus/develop
First pass at Media Management
2017-01-07 12:31:28 -05:00
Tim Turner
6d1766d81a Update default formats 2017-01-07 12:19:26 -05:00
Tim Turner
3e676d2073 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-07 11:58:47 -05:00
Leonardo Galli
6da73d73a5 Merge pull request #40 from AeonLucid/develop
Update services url to fix auto-updater.
2017-01-07 17:40:33 +01:00
Tim Turner
b9c98205e0 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-07 11:12:26 -05:00
Leonardo Galli
07d2f5b6a0 Update package.sh to support OSX AutoUpdater 2017-01-07 12:49:10 +01:00
Leonardo Galli
bfa479507c Update package.sh and PathExtensions in preparation for AutoUpdater 2017-01-07 12:40:19 +01:00
Leonardo Galli
4182728901 Updated all AssemblyInfos so version info only needs to be changed once 2017-01-07 12:03:56 +01:00
Leonardo Galli
5be5709043 Update package.sh, fixes #35 2017-01-07 11:24:53 +01:00
Leonardo Galli
ee5a2ec289 Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-07 11:03:59 +01:00
Leonardo Galli
cdfb95f425 Hopefully icon is now finally fixed. 2017-01-07 11:02:56 +01:00
Leonardo Galli
451060cb65 Merge pull request #37 from aaearon/rtorrent
dirty fix for rtorrent
2017-01-07 10:47:10 +01:00
Leonardo Galli
4d795e13cd Fix for movie naming config. Still kinda hacky, but works ok now. 2017-01-07 10:42:21 +01:00
Leonardo Galli
ff6bf235aa Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-07 09:47:14 +01:00
Leonardo Galli
a272127a00 Should finally fix exe icon and resulting build error. 2017-01-07 09:47:08 +01:00
AeonLucid
e3bc6de734 Update services url to fix auto-updater. 2017-01-07 05:48:24 +01:00
Tim Turner
23249de728 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-06 22:51:47 -05:00
Tim Turner
05e4af9ae7 1st pass at Movie Naming
Parser is failing on the sample
2017-01-06 22:51:15 -05:00
Tim Turner
1864a79f99 Merge pull request #36 from aaearon/nzbs.org
changed nzbs.org category for movies
2017-01-06 22:24:35 -05:00
Tim Schindler
5843a881e6 changed nzbs.org category for movies 2017-01-06 21:58:46 -05:00
Tim Schindler
d898fbb4b0 dirty fix for rtorrent 2017-01-06 21:54:24 -05:00
Tim Turner
721767331b Update naming management
Still need to write BuildFileName() and BuildFilePath()
2017-01-06 19:32:19 -05:00
Leonardo Galli
abd4c1a1ad Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-06 23:16:39 +01:00
Leonardo Galli
df971b1289 Fix exe icon. 2017-01-06 23:16:35 +01:00
Leonardo Galli
e5c81eefd2 Merge pull request #34 from onedr0p/develop
Instead of searching for imdbid (which jackett may or may not have depending on the tracker) search for a word instead.
2017-01-06 21:56:02 +01:00
Tim Turner
49c7c033d9 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-06 15:31:19 -05:00
Devin Buhl
f7fb238fb4 Merge pull request #1 from onedr0p/onedr0p-patch-1
Update TorrentPotatoRequestGenerator.cs
2017-01-06 15:27:33 -05:00
Devin Buhl
52dbd8d708 Update TorrentPotatoRequestGenerator.cs
Instead of searching for imdbid (which jackett may or may not have depending on the tracker) search for a word instead.
2017-01-06 15:26:16 -05:00
Leonardo Galli
427babf34e Update readme.md 2017-01-06 19:24:40 +01:00
Leonardo Galli
1022879103 Change version number to 0.1.0 2017-01-06 18:59:01 +01:00
Leonardo Galli
dbf34e6740 Updated Interval to scan for finished downloads to .25 minutes. 2017-01-06 16:11:41 +01:00
Leonardo Galli
4fd062b4e3 Fixed bug where movies and moviefiles were not linked. 2017-01-06 15:37:44 +01:00
Leonardo Galli
9aa8050627 Decision Engine is now mostly working with movies :) 2017-01-06 15:05:30 +01:00
Leonardo Galli
cd310626e9 Parser now recognizes Hardcoded subs. By default these releases are rejected. However, they can still be manually downloaded. 2017-01-06 14:38:52 +01:00
Leonardo Galli
145c2ca4a4 Update ISSUE_TEMPLATE.md 2017-01-06 14:11:58 +01:00
Leonardo Galli
1f5dcef29d Update .travis.yml
Added Travis CI webhook for Discord
2017-01-06 13:49:33 +01:00
Leonardo Galli
899c1d98e3 Real fix for osx app icon 2017-01-06 13:27:05 +01:00
Leonardo Galli
3f8ea405bf Fix for osx icon really now. 2017-01-06 13:26:12 +01:00
Leonardo Galli
f3c9a91da8 Fixes osx app icon. 2017-01-06 13:17:19 +01:00
Leonardo Galli
a6c79cd5d8 Update build.sh
Fixes crash for Mono, because it tried to use a system tray (Not available on linux & osx)
2017-01-06 13:13:22 +01:00
Tim Turner
ed1174affb Merge pull request #28 from fedoranimus/develop
Update Logos
2017-01-05 18:17:34 -05:00
Tim Turner
451f101350 Update background logo 2017-01-05 18:16:26 -05:00
Tim Turner
a29fe1681d Update background logo and poster 2017-01-05 18:05:50 -05:00
Tim Turner
48e142c47d Replaced more logos 2017-01-05 17:41:36 -05:00
Tim Turner
f1bc0164f6 Update logos 2017-01-05 17:38:00 -05:00
Leonardo Galli
aceb282f8d Fixes text color of movie links for list view. 2017-01-05 23:23:24 +01:00
Leonardo Galli
7871c118e7 Fix for PassThePopcorn release titles 2017-01-05 23:12:22 +01:00
Leonardo Galli
5e7b379a45 Fixes for movie statuses 2017-01-05 23:12:09 +01:00
Leonardo Galli
be95311471 Updated index page for movies. 2017-01-05 23:03:34 +01:00
Leonardo Galli
17d7083412 Fixes compile issues introduced with latest commit. 2017-01-05 20:49:26 +01:00
Leonardo Galli
51e5c55d5f Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-05 20:42:06 +01:00
Leonardo Galli
88dacc00f7 Renamed NzbDrone.exe to Radarr.exe. 2017-01-05 20:42:02 +01:00
Leonardo Galli
c314c9f6ec Update readme.md 2017-01-05 17:50:22 +01:00
Leonardo Galli
2b54f0a7f3 Fixed package script for osx. 2017-01-05 17:20:30 +01:00
Leonardo Galli
7a5fe59dbf Added TorrentPotato Indexer. 2017-01-05 17:12:46 +01:00
Leonardo Galli
a63587bb19 Fix alternative titles, if there is only one. 2017-01-05 14:54:48 +01:00
Leonardo Galli
eb46343ce8 Fix History not picking up imported movie. 2017-01-05 14:50:12 +01:00
Leonardo Galli
8fa43fb9f7 Fix for Path column in MovieFiles table. 2017-01-05 14:36:58 +01:00
Leonardo Galli
6d5e9ad4a1 Fixed matching wrong movies from database when searching. 2017-01-05 13:23:22 +01:00
Leonardo Galli
70c8228605 Updated Newznab to correctly identify movie search capabilities 2017-01-05 13:16:23 +01:00
Leonardo Galli
82470bd995 Fixed an issue where tracked downloads would not be found in the database due to alternative titles. 2017-01-05 12:39:48 +01:00
Leonardo Galli
a263558383 Fix parsing of special editions without . in title. 2017-01-05 11:36:26 +01:00
Leonardo Galli
7d82e35650 Fixes some strings still saying episode. 2017-01-05 11:28:22 +01:00
Leonardo Galli
8616bcedd4 Fixes Deluge for movies. 2017-01-05 11:04:29 +01:00
Leonardo Galli
2c66322121 Fixes default Category of QBittorent client. 2017-01-05 10:59:37 +01:00
Leonardo Galli
1402bc883e Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-05 10:50:35 +01:00
Leonardo Galli
1325822798 Added the TMDB Configuration service. This allows Image urls to be dynamically generated! 2017-01-05 10:49:55 +01:00
Mike
7a786d4c0e Fixes all usenet download clients. (#25)
* Remove confusing abstract method from UsenetClientBase.

* Fix Sabnzbd.

* Put back abstract method.

* Fix usenet download clients.
2017-01-05 01:06:18 +01:00
Leonardo Galli
87c7afac16 Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-04 23:20:52 +01:00
Leonardo Galli
06d39579a5 Fixed some things regarding director's cut / special edition. 2017-01-04 23:20:48 +01:00
Leonardo Galli
c8ea0a73e2 Merge pull request #24 from AeonLucid/develop
Better folder name.
2017-01-04 23:01:44 +01:00
Leonardo Galli
eeb3c88131 Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-04 22:59:39 +01:00
Leonardo Galli
fd718b61ac Updated Parser to parse movie titles. Should also parse things, such as: Director's Cut, Special Edition, etc. This is then displayed in the manual search UI. Importing is not yet updated for the new parser! 2017-01-04 22:59:34 +01:00
AeonLucid
4a3b2a0014 Better folder name. 2017-01-04 22:54:45 +01:00
Tim Turner
cbd87dcc38 Merge pull request #23 from fedoranimus/develop
Fix newznab indexers and nzbget
2017-01-04 15:55:19 -05:00
Tim Turner
956de03a62 Fixed up Newznab indexers
Hacky way to remove the "tt" from an imdbid - need to come up with a
better way.
2017-01-04 15:48:30 -05:00
Tim Turner
2b74098040 Merge remote-tracking branch 'refs/remotes/origin/develop' into galli-leo/develop 2017-01-04 14:55:25 -05:00
Leonardo Galli
402a9e1ee0 Fixes some issues when adding movies caused by TMDB. 2017-01-04 20:52:59 +01:00
Leonardo Galli
e68653463d Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-04 20:34:37 +01:00
Leonardo Galli
0715962ec5 TheMovieDB.org is now used as metadata source. 2017-01-04 20:27:14 +01:00
Leonardo Galli
5668a3bcfd Merge pull request #22 from AeonLucid/develop
Replace colon in movie path.
2017-01-04 18:42:01 +01:00
AeonLucid
bd241dcbe0 Replace colon in movie path. 2017-01-04 18:23:54 +01:00
Leonardo Galli
69786b3968 Fixes OSX Application name. 2017-01-04 15:05:14 +01:00
Leonardo Galli
6e2ded5d33 Fixed an issue where sometimes the json returned from IMDb just was not parsed correctly for some misterious reason. 2017-01-04 15:01:38 +01:00
Leonardo Galli
b47d5f7fa1 Update readme.md 2017-01-04 12:15:56 +01:00
Tim Turner
90ff73d45f Update NzbGet & NewznabSettings to support movies 2017-01-03 18:33:16 -05:00
Tim Turner
c2c7015f39 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-03 18:32:31 -05:00
Tim Turner
579602419e Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-03 18:01:17 -05:00
Leonardo Galli
28857e7fac Fixes issue with History table. 2017-01-03 23:59:41 +01:00
Leonardo Galli
6d23fb1b61 Fixes issue with History table not having a movie id field. 2017-01-03 23:57:02 +01:00
Tim Turner
96332978a0 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-03 17:42:54 -05:00
Leonardo Galli
ad95fbfd4a Implemented importing movies. This is still in early stages, however it should work pretty well. 2017-01-03 23:18:51 +01:00
Tim Turner
1488c0a0fc Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-03 16:54:20 -05:00
Leonardo Galli
d9d8cbacec Fixes package.sh for OSX builds 2017-01-03 17:35:47 +01:00
Leonardo Galli
80f2adad50 Changes name to Radarr in system tray icon. 2017-01-03 17:35:31 +01:00
Leonardo Galli
7a72f4a05b Fix package.sh 2017-01-03 16:29:49 +01:00
Leonardo Galli
6d7ff628d8 Updated package.sh for Travis 2017-01-03 16:15:13 +01:00
Leonardo Galli
e9f9f66b2f Allow Sonarr and Radarr to run together.
Also changes default port of Radarr to 7878.
However, now multiple instances of Radarr can also be run. This should
be fixed in the future.
2017-01-03 16:06:06 +01:00
Leonardo Galli
6ca88f98af Fix package.sh permissions for travis 2017-01-03 16:04:41 +01:00
Leonardo Galli
631cf776f6 Travis now automatically pushes a build to a server. 2017-01-03 15:54:15 +01:00
Leonardo Galli
6ea9b4b94a Added Script for easier packaging. 2017-01-03 14:18:13 +01:00
Leonardo Galli
d835c168d3 Searching for movies directly when adding them is now working. 2017-01-03 13:26:09 +01:00
Leonardo Galli
329786365d Fixed adding multiple movies. 2017-01-03 12:52:09 +01:00
Leonardo Galli
4f6380a73c Automatically downloading the best movie release works now. 2017-01-03 11:59:03 +01:00
Leonardo Galli
cde1217356 Movies now show up in the Queue. 2017-01-02 22:01:11 +01:00
Leonardo Galli
2eedfca78a Movie history now fully implemented. 2017-01-02 21:02:54 +01:00
Leonardo Galli
0d65984991 Fix History for Movie Details page. 2017-01-02 20:41:44 +01:00
Leonardo Galli
2a932fe7e8 First implementation of History for Movies. However, nothing is returned from the Database query misteriously. 2017-01-02 20:15:13 +01:00
Leonardo Galli
0e02171938 Fixes downloading a movie. However, now all downloaders except QBittorrent are non functional until they get fixed. See #14 2017-01-02 19:20:32 +01:00
Tim Turner
a3dfa05f25 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-02 12:24:56 -05:00
Leonardo Galli
2a3b0304cb Fixed a few things with displaying the Movie Details Page. Implemented the first round of Searching for and Downloading movie Releases. ATM this is still a bit hacky and alot of things need to be cleaned up. However, one can now manually search for and download (only in qBittorrent) a movie torrent. 2017-01-02 18:05:55 +01:00
Leonardo Galli
16e35f68bb Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-02 13:21:11 +01:00
Leonardo Galli
74b1c846a5 Fixed css for movies. 2017-01-02 13:20:50 +01:00
Leonardo Galli
1f930c18e4 Update readme.md 2017-01-02 11:45:11 +01:00
Leonardo Galli
d9e60eff6b Update .travis.yml
Removed tests since they take far too long
2017-01-02 11:25:28 +01:00
Leonardo Galli
097982334c Update .travis.yml
Fixed syntax for test.sh
2017-01-02 10:40:09 +01:00
Leonardo Galli
be6e6b910e Update .travis.yml
symlinking node was already done in apt-get and therefore resulted in an error.
2017-01-02 10:32:23 +01:00
Leonardo Galli
31b9ec1116 Create .travis.yml
Should enable automatically testing.
2017-01-02 10:27:59 +01:00
Leonardo Galli
ff6c3b70d3 Merge pull request #12 from fedoranimus/develop
Fix template references and 'movie' strings
2017-01-02 10:12:49 +01:00
Tim Turner
0fd0b31a60 Fix template references and 'movie' strings 2016-12-31 14:42:32 -05:00
Leonardo Galli
76e6ebc63c Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2016-12-30 11:58:43 +01:00
Leonardo Galli
2ea35adb98 Fixed issue with Homepage movies not loading correctly. 2016-12-30 11:58:39 +01:00
Leonardo Galli
782f63f510 Update readme.md 2016-12-30 11:34:11 +01:00
Leonardo Galli
c874122fc0 Use different folder to store sqlite database. Fixes #10. 2016-12-30 11:25:25 +01:00
Leonardo Galli
2efda4933d Changed the name in the UI to Radarr. 2016-12-29 17:44:51 +01:00
Leonardo Galli
b7c70d750a Movies should now show on the main page. However, a lot has to be done to the detail controller before it is really going to work. 2016-12-29 17:38:54 +01:00
Leonardo Galli
5ebfac6cc8 First implementation of custom database table for movies.Some things are not yet working quite well (e.g. search clears when movies are added.). Also movies cannot yet be looked up! 2016-12-29 16:04:01 +01:00
Leonardo Galli
74ca6149e3 Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2016-12-29 14:07:43 +01:00
Leonardo Galli
40d7590f80 First implementation of completely rewriting the way Radarr handles movies. Searching for new movies is now mostly feature complete. 2016-12-29 14:06:51 +01:00
Leonardo Galli
2cb27240dc Update readme.md 2016-12-28 22:37:06 +01:00
Leonardo Galli
837c2683df Update readme.md 2016-12-28 18:43:31 +01:00
Leonardo Galli
0b278c7db8 Searching for movie now works with downloading. They also get imported fine.
Additionally, a whole series (or movie in this case) can now be
downloaded manually.
Note: It probably won't start downloading missed releases. Only manually
clicking search for is working ATM.
2016-12-28 17:13:18 +01:00
Leonardo Galli
0b765d10fe Updated some text to say movies instead of series 2016-12-27 18:48:59 +01:00
Leonardo Galli
20dbdfb344 Added first iteration of adding movies.
Currently working:
- Searching for new Movies on IMDb (very hacky)
- Adding movie as a series with one season and episode (very hacky)
- Rarbg.to indexer. (somewhat hacky)

TODO:
- Tweak release specifications so that they do not cause exceptions.
- Add Movie struct so that searching for ones is not so hacky.
- rework movies UI.
2016-12-27 18:31:38 +01:00
Leonardo Galli
426448ed98 Update readme.md 2016-12-25 12:43:05 +01:00
Keivan
03b83ed226 Rename Metadata Dir to fix build in *nix 2016-12-24 12:13:16 -08:00
Keivan
eafe79450e Rename Metadata Dir Step 1 2016-12-24 12:13:15 -08:00
Keivan
f286dba40a Rename QBittorent Dir to fix building in *nix 2016-12-24 12:13:14 -08:00
Keivan
448f579723 Rename QBittorent Dir Step 1 2016-12-24 12:13:13 -08:00
Keivan Beigi
1562081235 Upgraded MediaInfo from 0.7.74 to 0.7.91 2016-12-23 13:51:01 -08:00
Keivan Beigi
0214c8e0f0 Removed unused using statements 2016-12-23 13:45:24 -08:00
Keivan Beigi
f16dd069b5 Upgraded DDay.iCal to Ical.Net 2016-12-21 20:38:37 -08:00
Keivan Beigi
aba613acd1 Because it's 2016! 2016-12-21 20:38:37 -08:00
Keivan Beigi
2e36538dcd Environment variables sometimes lie! 2016-12-21 20:38:35 -08:00
Keivan Beigi
c42e4d682c more kosher regex group names. 2016-12-21 20:38:35 -08:00
Keivan Beigi
327536b684 Added NoOp Performance Counter Manager 2016-12-21 20:38:35 -08:00
Mark McDowall
7dbacf105d Fixed: Parsing of some anime releases that use Episode after the title 2016-12-21 18:08:02 -08:00
margaale
8d776abb48 Fixed: Handle download clients sending invalid content-type header.
DownloadStation incorrectly surrounds charset with double-quotes. whereas the http standard specifies they must be without quotes.

fixes #1586
2016-12-20 20:54:44 +01:00
Mark McDowall
7f8093de92 Fixed: Use Category from qBittorrent when set instead of Label 2016-12-13 23:32:46 -08:00
Mark McDowall
c1de7f26d1 Added test for 4 digit season number and series title with year 2016-12-13 23:32:46 -08:00
Mark McDowall
4a82d30d3d Fixed: Parsing of mini episodes that contain the year in the title 2016-12-13 23:32:46 -08:00
Keivan Beigi
da52e60f36 Upgraded Nlog/RestSharp/Selenium 2016-12-12 11:17:15 -08:00
Keivan Beigi
cf58e52f40 Upgraded Nancy!!!! 2016-12-12 11:17:15 -08:00
Keivan Beigi
2a7ae96906 upgraded nbuilder/automoq 2016-12-12 11:17:15 -08:00
Keivan Beigi
053f6fcaeb Upgrade fluentmigrator 2016-12-12 11:17:15 -08:00
Keivan Beigi
0c75d0bb03 Upgraded nunit/fluentassertion 2016-12-12 11:17:15 -08:00
Thijs Tijsma
0c9b5dc97e Added Visual Studio folder (.vs) to the ignore file. 2016-12-11 15:33:48 -08:00
Mark McDowall
c99e92e6af New: Validate PMS version before performing a library update 2016-12-08 10:23:53 -08:00
Mark McDowall
3f64c01d5b Fixed: Partial library updates for Plex Media Server 1.3 2016-12-07 12:58:23 -08:00
Mark McDowall
f022dae1fa Fixed: Partial library updates for Plex Media Server 1.3 2016-12-06 17:05:00 -08:00
Mark McDowall
52ad8cf37f Fixed: Error handling of valid, empty responses from Plex Media Server 2016-12-06 09:11:50 -08:00
Mark McDowall
3d20fd8f96 Fixed: Error handling of valid, empty responses from Plex Media Server 2016-12-05 09:34:17 -08:00
Lloyd Sparkes
cf662291d5 Fixed: Lingering Socks5 Proxy sockets when proxy is using dynamic ips 2016-12-04 16:43:18 +01:00
Mark McDowall
43d85bf59d Fixed: Parsing of some Plex server responses before 1.3 2016-12-02 10:39:12 -08:00
ARTbird309
4a149c356b New: Telegram notifications
Closes #1355
2016-11-30 19:08:29 -08:00
Chris Allen
740fc9154f Shorten 'MPEG-2 Video' to 'MPEG2'. 2016-11-30 17:54:22 -08:00
Mark McDowall
0a657302f7 New: Support for Plex Media Server 1.3.0's new JSON responses 2016-11-23 16:38:57 -08:00
Mark McDowall
7b09b259a8 Fixed: Don't delete extra files after unlinking an episode file that still exists on disk 2016-11-23 16:38:40 -08:00
Taloth Saldono
b093be3f4e Added additional gdiplus check. 2016-11-05 22:26:30 +01:00
Mark McDowall
3c8b263694 Update CONTRIBUTING.md 2016-11-02 16:56:54 -07:00
Mark McDowall
43c5d03f9a Fix GetAncestorFolders tests under mono 2016-11-02 15:08:39 -07:00
Taloth Saldono
9fbe06ad68 New: Added support to override Copy vs Move import logic for DownloadedEpisodesScan API and Manual Import UI. 2016-11-02 20:28:45 +01:00
Mark McDowall
db899a9bb8 New: Move subtitles/other extra files to Sonarr's Recycle Bin instead of permanently deleting 2016-11-02 11:12:24 -07:00
Mark McDowall
d3890bd712 New: Health check warning for macOS when running from App Translocation folder 2016-11-02 11:12:24 -07:00
Mark McDowall
1a61796092 Fixed: mono 4.4.2 won't trigger mono version error 2016-11-02 11:12:24 -07:00
Taloth Saldono
1251e294cd Saving settings failed if value was null. 2016-11-02 00:02:14 +01:00
Taloth Saldono
0411b82e65 Fixed: Mount handling logic of net namespaces as seen on QNAP.
fixes #1483
2016-11-01 22:53:53 +01:00
Taloth Saldono
9519f3137c Compile error when fixing FileBrowser not displaying drive letters on Windows. 2016-11-01 20:30:58 +01:00
Taloth Saldono
f8d97cac7d Fixed: FileBrowser not displaying drive letters on Windows.
fixes #1535
2016-11-01 20:22:12 +01:00
Mark McDowall
f2ecbe776b Added and fixed qBittorent tests 2016-10-28 13:28:21 -07:00
Mark McDowall
1ac442d0e6 Removed unused disk provider 2016-10-28 13:14:18 -07:00
Mark McDowall
5f2aeb0cea Fixed: Failing database migration of metadata files without extensions 2016-10-28 13:04:22 -07:00
Mark McDowall
2ece05cd1e Fixed: Email connection test reporting success incorrectly
Fixes #1524
2016-10-28 11:02:36 -07:00
Casey Bodley
25a3f83ebc New: Remove completed torrents from qBittorrent
Fixes #1316
2016-10-27 20:07:42 -07:00
Mark McDowall
cdce65a922 Added TODO to remove ToPP SABnzbd status 2016-10-27 18:02:38 -07:00
Mark McDowall
8f73a51522 Fixed: Handling of some really long qBittorrent ETAs 2016-10-27 17:57:18 -07:00
Mark McDowall
bc438a6a63 Fixed: Handle SABnzbd Propagating status 2016-10-26 21:09:53 -07:00
Mark McDowall
4167ffe11a Capture exit code of nunit to avoid using failed tests as exit code 2016-10-25 14:00:27 -07:00
Mark McDowall
6fb1aa85d0 Fixed: Parsing of some poorly named standard episode release names
Closes #1522
2016-10-25 10:16:05 -07:00
Mark McDowall
eb8ef6c337 Fixed: login page being returned instead of unauthorized response 2016-10-24 20:41:19 -07:00
Mark McDowall
c076f1ddb1 Update omgwtfnzbs URL
Closes #1520
2016-10-24 18:49:58 -07:00
karaambaa
eeff79b288 Added Sonarr-icon to Boxcar notification
Now there is a small Sonarr icon next to the Boxcar message.
2016-10-20 09:36:00 -07:00
Mark McDowall
697a62da0a Fixed typo 2016-10-18 13:53:25 -07:00
Mark McDowall
f1a289cc74 Re-added accidentally removed anime parsing Regex 2016-10-18 13:52:15 -07:00
Mark McDowall
c39a26d9e0 Fixed: Parsing of multiple absolute episode number releases 2016-10-17 17:51:55 -07:00
Taloth Saldono
f2ccf94835 Fixed: Updated IPTorrents url validation to changed format.
fixes: #1493
2016-10-10 23:32:03 +02:00
Taloth Saldono
19d625c6c5 Fixed: Changed Quality Parser to avoid matching tags in the Episode title instead of the Quality tags. 2016-10-10 23:32:01 +02:00
Taloth Saldono
cd3b6000a0 Tweaked Nyaa Request Generator to avoid offset=1. 2016-10-10 23:31:58 +02:00
Mark McDowall
ff33f15bac Fixed: Import episodes in season packs in numerical order
Closes #1485
2016-10-04 10:20:48 -07:00
Mark McDowall
50a0e9514e Fixed: Default redirect URL for forms auth will use URL Base if configured 2016-10-01 15:40:04 -07:00
Taloth Saldono
7ef1ca8a00 Fixed: Tweaked ratelimit logic for rarbg api. 2016-09-29 21:42:08 +02:00
Mark McDowall
e0d1e08f94 Upgraded mono version check (3.10 minimum and 4.4.x)
New: Health warning if mono version is less than 3.10
New: Health error if running mono 4.4.x
2016-09-26 18:47:33 -07:00
Taloth Saldono
9fae76015a Fixed: Calendar api again includes series images. (Nzb360)
fixes #1473
2016-09-24 23:08:31 +02:00
Taloth Saldono
17bf438cad New: uTorrent differential api support to handle larger lists of torrents without hogging the api.
Fixes #1109
2016-09-24 23:07:08 +02:00
Chris Heath
c0b0567c23 Join: Device ID entry and better error handling
New: Optionally limit Join notifications to specific devices
Fixes #1455
2016-09-23 16:13:46 -07:00
Taloth Saldono
edc1e0b8d1 Fixed: Filter qbittorrent torrent list on newer versions.
fixes #1470
ref #1347
2016-09-23 21:42:52 +02:00
kaso17
cd79b42f5f add downloadvolumefactor and uploadvolumefactor torznab attributes (#1464)
Using the attributes it's possible to signal states like freeleech/neutral leech/double upload
2016-09-23 21:08:50 +02:00
Taloth Saldono
dc82e66dde Clarified min/max size rejection message by including the episode runtime. 2016-09-23 20:51:37 +02:00
Taloth Saldono
b034d0c1b3 Fixed: Cleanup unused Tags during housekeeping. 2016-09-23 20:51:36 +02:00
Taloth Saldono
36a3e86882 New: Added filter by tag to iCal feed.
closes  #1430
2016-09-23 20:51:34 +02:00
Mark McDowall
e76fb8c90b Fixed: Issue loading settings on some systems 2016-09-20 22:08:04 -07:00
Mark McDowall
e6288148ad Fixed: Suppress warning log messages when unable to parse non-video files 2016-09-20 22:08:04 -07:00
Mark McDowall
bf8d68a873 Fixed: Version check for SABnzbd develop 2016-09-20 22:08:04 -07:00
Taloth Saldono
080e2e9eff New: Added query parameter to ical feed to list premiers only.
fixes #1463
fixes #1442
2016-09-21 00:28:36 +02:00
Taloth Saldono
e3310e590c Fixed: prevents autofill on new password fields in settings. 2016-09-20 22:06:33 +02:00
Taloth Saldono
a0b4d3a38d Removed conflicting criteria from IsProduction check. 2016-09-20 21:30:46 +02:00
Taloth Saldono
a72b856fb8 Fixed: Added config validation to ensure NzbGet KeepHistory isn't set to 0. 2016-09-20 21:30:17 +02:00
Mark McDowall
522ef9d8d5 Don't append the extension when using ParsePath 2016-09-19 21:33:18 -07:00
Mark McDowall
a486bff40b Fixed: Migrations using old SQLite versions (Prior to 3.7.15)
Closes #1466
2016-09-19 16:10:40 -07:00
Mark McDowall
0de1f3f17a Fixed: Ignore extrafanart subfolder when scanning for extra files 2016-09-18 22:24:32 -07:00
Mark McDowall
755fdce227 Fixed: Generating metadata files after importing episode files 2016-09-18 22:19:08 -07:00
Mark McDowall
cd8659e684 Fixed: Store metadata file extensions 2016-09-18 11:30:22 -07:00
Mark McDowall
a621f0d49b Fixed: Prevent duplicate parsing of extra files 2016-09-18 11:04:56 -07:00
Mark McDowall
2e96c4e798 New: Parse existing subtitles and extra files
Towards #459
2016-09-17 01:27:15 -07:00
Taloth Saldono
816cf608fc Fixed: Added fallback and log errors when Tls1.2 clashes with https certificate with obsolete md5 hash. 2016-09-13 22:57:07 +02:00
Taloth Saldono
713e109bc9 Fixed api blacklist, history, wanted/missing and wanted/cutoff requiring sortKey, now defaulting to an appropriate value (airDateUtc/date desc for most).
fixes #1452
2016-09-10 23:05:34 +02:00
Taloth Saldono
4bf3ef45b0 Fixed: Auto-Updater rollback logic tries to restore unchanged files. 2016-09-10 12:56:27 +02:00
Taloth Saldono
09530b238f Fixed: Removed requirement to disable sabnzbd pre-check for sab version 1.1.0 onward. 2016-09-07 19:58:18 +02:00
Taloth Saldono
5414dadffc Fixed stupid error. 2016-09-03 12:57:30 +02:00
Mark McDowall
5482fa3ae0 New: Support for TLS 1.1 and 1.2 connections when only .net 4.5 is installed. 2016-09-03 12:11:06 +02:00
Taloth Saldono
6e8480d7cb Added additional categories to NZBFinder preset. 2016-09-03 11:57:10 +02:00
Ashley Broughton
7c7cfc0b7d Changed exit statement to "Press enter to exit..." to match use of ReadLine() (#1425) 2016-09-03 11:53:56 +02:00
Taloth Saldono
4e051bfde2 Merge branch 'pr/n1446_Awarua-' into develop 2016-09-03 11:48:39 +02:00
Taloth Saldono
356e14ac5b Cleanup 2016-09-03 11:48:23 +02:00
Taloth Saldono
97d0ddb6e9 Fixed: Sabnzbd 1.1.0 rc4 queue api changed time format. 2016-09-03 11:42:40 +02:00
Björn Dahlgren
17f6841426 Fixed: Updated HDBits api to api changes.
Closes #1448
2016-09-03 11:18:19 +02:00
Dion Woolley
a6a7732cd5 Fixed issue #1445 where sabnzbd has changed the time format reported for downloads 2016-09-03 13:13:55 +12:00
Mark McDowall
aa37b65842 Fixed tests for EpisodeFileMovingService 2016-09-02 12:26:04 -07:00
Mark McDowall
6ac9e5ec18 Don't blow if driveFormat is null when looking up DriveType
Closes #1444
2016-08-30 22:23:49 -07:00
Mark McDowall
2d54ca5d47 New: Ability to include unmonitored episodes in the iCAL feed
Closes #1442
2016-08-29 21:28:45 -07:00
Mark McDowall
422371d118 Fixed: Episode import when the series folder had a trailing slash and folder was not on disk 2016-08-29 21:22:25 -07:00
Mark McDowall
77574ec555 Fixed: Parsing absolute episode numbers preceeded by Episode
Closes #1441
2016-08-29 11:59:50 -07:00
Mark McDowall
3b385e8738 Fixed: Parsing of a multi-episode anime formats 2016-08-25 21:46:22 -07:00
Taloth Saldono
7f6101a6bc Better Captcha message. 2016-08-20 19:37:47 +02:00
Mark McDowall
28f6777f9a Fixed media info test 2016-08-16 21:12:18 -07:00
Chris Allen
e7275af073 VideoBitDepth and AudioChannels in Filename examples 2016-08-16 16:48:28 -07:00
Mark McDowall
5fcd65ef57 Fixed: MediaInfo.AudioChannels for some eac3 and mp3 files 2016-08-16 16:46:27 -07:00
Taloth Saldono
222ed1eb4b Changed startup loglevel to avoid incorrect sonarr.debug/trace log entry. 2016-08-16 22:10:03 +02:00
Taloth Saldono
4486317888 Fixed: Manual Import failing to parse series title from certain nested folders. 2016-08-14 21:05:35 +02:00
Taloth Saldono
206ff12b71 Added .editorconfig 2016-08-13 22:22:24 +02:00
Taloth Saldono
73fb216e6f New: Added CAPTCHA support to Rarbg. 2016-08-13 22:10:42 +02:00
Mark McDowall
e9eab0ae48 Audio codec E-AC-3 will be EAC3 in filenames 2016-08-13 11:40:12 -07:00
Christopher Heath
626d94d435 New: Join notifications
Closes #1197
2016-08-13 11:37:55 -07:00
Mark McDowall
e4adc1d3a1 Fixed: Include afpfs mount points in free space checks
Fixes #1399
2016-08-13 11:27:58 -07:00
Mark McDowall
c3f9a0336c Move platform files to proper folders 2016-08-11 20:30:46 -07:00
Mark McDowall
04ca1e4569 Always include decimal place for AudioChannels 2016-08-11 18:06:03 -07:00
Mark McDowall
459715b9b4 Fixed UpdateMediaInfoService tests 2016-08-11 16:20:40 -07:00
Mark McDowall
db4b0de5e2 New: MediaInfo VideoBitDepth and AudioChannels 2016-08-11 15:56:35 -07:00
Taloth Saldono
914f799f9d New: Added support to save .magnet to blackhole directory.
fixes #1406
2016-08-05 23:10:15 +02:00
Taloth Saldono
e2272dcca3 Reject m2ts (bluray) raw releases from BTN as well. 2016-08-05 22:18:33 +02:00
Taloth Saldono
2b1c97ffa4 Fixed: AnimoTosho RSS feed size parsing.
Also added handling for multiple enclosure elements.

ref #1384
2016-08-04 19:36:13 +02:00
Taloth Saldono
b80d6c74ad Api errors now log statuscode too. 2016-07-31 23:40:07 +02:00
Taloth Saldono
6f2dd5d2fa Improved Quality lookup. 2016-07-31 14:43:08 +02:00
Mark McDowall
1218dd255f Fixed: Allow series to be added unmonitored through the API
Closes #1404
2016-07-27 12:08:49 -07:00
Mark McDowall
5bf9b069fc Fixed: Slack Icon is optional 2016-07-27 11:31:51 -07:00
Mark McDowall
2ab9bb4fce Fixed: Incorrect matching of date in title
Closes #1401
2016-07-26 22:31:03 -07:00
Taloth Saldono
87d00abdf1 Adjusted Gzip stream to reduce response times. 2016-07-24 01:00:48 +02:00
Taloth Saldono
19aded7a15 Order the pipeline registration process. 2016-07-24 01:00:44 +02:00
Taloth Saldono
a2536deef0 Fixed: Significantly improved api performance. 2016-07-24 01:00:41 +02:00
Taloth Saldono
ff6737314f Added additional index to episodes table to speed up certain queries. 2016-07-24 01:00:39 +02:00
Taloth Saldono
4fc150f77b Reset srcset on failed load. 2016-07-24 01:00:37 +02:00
Taloth Saldono
90b5947a19 Fixed Deluge and BTN cleanse password logic. 2016-07-24 01:00:36 +02:00
Taloth Saldono
c7d445d1c1 New: Added raw DVD check for BTN to prevent those pesky VIDEO_TS downloads.
fixes #r1377
2016-07-24 01:00:34 +02:00
Taloth Saldono
c4a3bc3d2f Fixed cookie tests with expired dates. 2016-07-22 00:34:18 +02:00
Taloth Saldono
8966e5a403 Removed fanzub tests and disabled kickass tests. 2016-07-22 00:03:35 +02:00
Taloth Saldono
bc94a7f921 Fixed: Forcibly disable kat when using the wrong domain. 2016-07-21 23:29:13 +02:00
Taloth Saldono
f3cbc2bdd2 Fixed: Calendar arrows on Edge browser. 2016-07-21 19:29:09 +02:00
Taloth Saldono
f681d43601 Fixed: XEM series with only alternate season titles. 2016-07-21 19:28:42 +02:00
Mark McDowall
b232cc3081 Fixed: Delete all history for series when series is removed from Sonarr 2016-07-20 15:53:49 -07:00
Mark McDowall
857d661ff1 Fixed: Recreate log database if migration fails
Fixes: #1050
2016-07-19 18:57:36 -07:00
Mark McDowall
8255fb0b28 GHI and PR Templates 2016-07-07 12:44:32 -07:00
Mark McDowall
ab63c3e83d Fixed: Parsing series title during manual import 2016-07-03 23:32:25 -07:00
Mark McDowall
c1f59a55c6 Fixed: Kodi metadata AC3 audio codec
Closes #1344
2016-07-02 00:22:58 -07:00
Mark McDowall
c8474701a0 Fixed: Parsing Plex Media Server version 1.0 2016-07-02 00:19:31 -07:00
Mark McDowall
c206b83318 Fixed spelling mistake 2016-07-01 23:37:27 -07:00
Mark McDowall
a8b9a47f5f Emby metadata name changes 2016-07-01 23:29:32 -07:00
vintage81
3e9a159466 Fixed: Adding label to torrents in qBittorrent v3.3.5
Fixes #1347
2016-06-29 18:48:18 -07:00
Mark McDowall
ba817557ba Fixed: More results in season searches when KAT 2016-06-29 18:13:31 -07:00
Fossil
30ed3a4a80 Updated NZBFinder URL 2016-06-25 23:39:21 -07:00
Taloth Saldono
006dc9202b Fixed: Tweaked sample detection for short episodes. 2016-06-25 22:50:16 +02:00
Mark McDowall
c2a2746ccf Fixed: Roksbox metadata generation when series certification is not available 2016-06-20 01:07:35 -07:00
Taloth Saldono
2fa0729158 Fixed series filter 'missing' since percentOfEpisodes isn't always set. 2016-06-19 00:28:01 +02:00
Taloth Saldono
b3eee50892 Fixed relative path issue in Metadata handling. 2016-06-18 23:15:02 +02:00
Mark McDowall
f1c007c5fe Include full grab/import message for Slack notifications 2016-06-18 10:57:18 -07:00
Mark McDowall
7c8a8f8e55 AsOsAgnostic 2016-06-16 00:45:33 -07:00
aaraujo666
a3ade09964 New: Missing episodes series filter 2016-06-16 00:00:36 -07:00
Mark McDowall
8e429239a8 Fixed: Metadata files incorrectly stored in database 2016-06-15 23:53:23 -07:00
Taloth Saldono
4783803b6b New: Part One/Two/Three/.. parser support for mini series. 2016-06-15 21:25:08 +02:00
Taloth Saldono
b320a23bf8 Added better log message when indexer reached daily grab limit. 2016-06-14 23:15:41 +02:00
Taloth Saldono
32a347bdd2 Updated WEB regex. 2016-06-14 23:13:50 +02:00
Björn Dahlgren
a0b0f6162f New: Kodi metadata Stream Details
Closes #1286
2016-06-14 00:39:22 -07:00
Martin Hartvig
6c287f118f New: Slack notifications
Closes #1002
2016-06-13 23:35:25 -07:00
Mark McDowall
8213f020ff Removed 6box 2016-06-13 22:08:22 -07:00
Mark McDowall
d984dd41d6 Fixed: Parsing WEB releases that use spaces instead of periods
Closes #1339
2016-06-13 22:08:22 -07:00
Peter Tutervai
fea5db3e4b Re-enabled calling synoindex after renaming
Fixed: On Rename connections to synoindex
2016-06-13 22:07:47 -07:00
Taloth Saldono
c38973cce4 Fixed tests. 2016-06-11 00:53:55 +02:00
Taloth Saldono
958153be55 Fixed: Reduced spurious cpu usage on mono while idle. 2016-06-11 00:25:59 +02:00
Taloth Saldono
d4bab775df Updated NLog to 4.3.4. 2016-06-11 00:24:07 +02:00
Mark McDowall
ecf67e609e Fix regex for expanded series + episode number (S01 - E01) 2016-06-06 10:15:21 -07:00
Mark McDowall
449b15331a Fixed Hadouken tests 2016-06-03 20:46:32 -07:00
Mark McDowall
f0437d1f22 Fixed: Ignore more folder names when browsing file system 2016-06-03 19:12:33 -07:00
Mark McDowall
902d6929c0 New: Hadouken torrent client support 2016-06-03 19:09:44 -07:00
phrusher
d81e03fcc0 Updated to support Hadouken v5.1 and above
Fixes indentation issues

Removes AuthenticationType

Corrects FieldDefinitions
2016-06-02 19:24:13 -07:00
Viktor Elofsson
abf8c684e7 Basic Hadouken v5 implementation. 2016-06-02 19:24:13 -07:00
Mark McDowall
7476d692aa New: EpisodeTitles for Custom Scripts
Closes #1263
2016-06-02 19:16:35 -07:00
Mark McDowall
c25bea6470 Fixed: Parsing separated season and episode numbers (S01 - E01)
Closes #1320
2016-06-02 19:07:15 -07:00
Mark McDowall
b9d67ae421 Better logger name for QualityParser 2016-06-02 10:04:41 -07:00
Mark McDowall
ff3fc8de2e Replace octal characters from mounts in /proc/mounts
Fixed: Replace octal characters in mount points
Closes #1295
2016-06-01 21:24:41 -07:00
Mark McDowall
e4e3770e54 Log message makes sense now 2016-05-24 18:40:07 -07:00
Taloth Saldono
498a86f850 Fixed Search tests. 2016-05-22 16:45:41 +02:00
Taloth Saldono
f0ae908892 Merge remote-tracking branch 'upstream/search-delays' into develop 2016-05-22 15:57:49 +02:00
Taloth Saldono
54c17de849 New: Http/Socks proxy support.
fixes #732
2016-05-22 15:57:38 +02:00
Mark McDowall
12a1865d4d Service now depends on HTTP Service (http) 2016-05-21 23:31:39 -07:00
Taloth Saldono
9ea753011b Added round-robin over httpbin.org hosts for httpclient tests. 2016-05-21 23:02:02 +02:00
Taloth Saldono
4c39594a57 Final cleanup on proxy support. 2016-05-21 22:59:26 +02:00
Mark McDowall
67ff871cf6 FolderWritableValidator
Fixed: Information in UI when attempting to add a root folder that is not writable
Fixes #1280
2016-05-21 01:39:39 -07:00
Mark McDowall
ea0982ecae Fixed: Error messages when config file is empty or contains invalid characters
Closes #1104
2016-05-21 00:22:12 -07:00
Mark McDowall
4f5d79b189 Fixed: Perform health check after download clients or indexers are removed
Closes #1304
2016-05-20 23:29:29 -07:00
Mark McDowall
aec3ed16d0 Use wildcards when searching for single episodes on BTN
Fixed: Double episode searching on BTN
Closes #1305
2016-05-20 23:02:22 -07:00
Mark McDowall
2e90ea9c19 Fixed: Prefix Twitter notifications (Grabbed/Imported) 2016-05-19 18:54:49 -07:00
Igal Tabachnik
a6b1a1fc0d New: Vuze torrent client support 2016-05-16 21:00:27 -07:00
Mark McDowall
fd42ddec1b Fixed: Respect delays when searching after a failed DownloadRelease
Closes #1292
2016-05-12 21:02:57 -07:00
Taloth Saldono
229986033c Added logging of Sonarr API calls. 2016-05-11 21:13:31 +02:00
Taloth Saldono
c249ad5dbe Using a tiered fallback is safer in case there is another data-loss and ids get reset. 2016-05-11 19:06:35 +02:00
Mark McDowall
e2d6d374ab Update HttpAccept.Rss to include application/xml 2016-05-10 15:18:27 -07:00
Taloth Saldono
d3adb7ac40 Fixed: HDBits release age incorrect.
fixes #1272
2016-05-10 22:19:51 +02:00
Taloth Saldono
0f1afd416b Fixed: Adjusted BTN Recent Feed (RssSync) to better use their api db indexes. 2016-05-10 21:43:34 +02:00
Mark McDowall
2f3bc61af7 Nice try uTorrent, you're not Deluge
Fixed: uTorrent error message identity crisis
2016-05-02 10:38:59 -07:00
Lloyd Sparkes
2b11ad4585 Proxy BypassList tests
Lightly refactored and updated documentation to make it easier for users
2016-05-02 11:24:51 +01:00
Lloyd Sparkes
c82b90aca8 Fix tests failing due to lack of constructor less classes, after refactoring 2016-05-01 12:47:19 +01:00
Lloyd Sparkes
5fae8e7762 Updating SocksWebProxy to fix issues with POST Requests 2016-05-01 11:51:30 +01:00
Mark McDowall
319b4f13b7 Fixed: Refreshing series that have duplicate season information 2016-04-30 11:02:40 -07:00
Mark McDowall
54fda3d648 Fixed: Updating Emby Library
Closes #1267
2016-04-28 23:42:53 -07:00
Mark McDowall
2f6fded7c3 Fixed: An issue preventing access to settings due to extraneous data in the database 2016-04-27 16:18:11 -07:00
Mark McDowall
7934003b5e Fixed: Rare error when removing pending items that have been rejected 2016-04-27 16:16:43 -07:00
Taloth Saldono
b479064abd Moved Proxy types around and refactored/renamed a few things. 2016-04-25 21:53:26 +02:00
Taloth Saldono
9e7927acec Create HttpProxySettingsProvider and fixed related issues. 2016-04-25 20:22:52 +02:00
Lloyd Sparkes
f807e44a39 Force to IPv4 2016-04-24 17:01:01 +01:00
Lloyd Sparkes
d68abc746c Bug Fixes 2016-04-24 16:56:31 +01:00
Mark McDowall
8773d38ddd Fixed: Plex Meda Server authentication 2016-04-23 13:28:07 -07:00
Lloyd Sparkes
6fdbb2b659 Fix merging issues & API changes - that conflict resolution did not detect 2016-04-23 11:06:10 +01:00
Lloyd Sparkes
bfe134ee54 Proxy Support for Sonarr #732
Switch to use Port #0 which just uses the next free port
Non Functional - Code Cleanup
Tabs -> Spaces,
Opps Deleted too much
Refactoring & Code Cleanup & Move Config to DB
remove unneeded line
Clean Up Spaces
Code Review Points on the UI
FIx extra space
Clean Up unrequired changes
Add a HealthCheck.
Extra Check in ProxyCheck. Correctly deal with Socks Authentication
Remove SubModule
Add in Nuget + Tweak ProxyCheck
Code Review Points
Missed Review Point
Add Subnet Filtering, Add ProxyBypass for local addresses. UI updated for property changes.
Fix typo, and copy&paste error
Tweak URL to hit
2016-04-23 10:58:02 +01:00
Taloth Saldono
f16f097b3e Fixed: Sabnzbd 1.0.1 added two new status values.
fixes #1259
2016-04-23 11:40:49 +02:00
Mark McDowall
7284ef50eb Fixed: Manual Import not scrolling after using file browser
Closes #745
2016-04-17 16:07:08 -07:00
Mark McDowall
e9248e284e Return decisions when catching exceptions during decision making
Fixed: Manual Import not showing files that failed to process
Closes #1131
2016-04-17 14:17:46 -07:00
Sam Holmes
aff6af1806 Update package.json license expression (#1242) 2016-04-13 08:08:20 -07:00
Taloth Saldono
c0c35a0eba Updated NzbGet tests. 2016-04-09 20:45:11 +02:00
Taloth Saldono
072ca459bd Fixed: NzbGet DUPE/COPY status should be considered failure.
fixes #919
closes #693
closes #505
2016-04-09 20:28:37 +02:00
Taloth Saldono
0865306064 Fixed: Adding Nzb with {{password}} in name to NzbGet failed. 2016-04-09 20:13:58 +02:00
Taloth Saldono
ac14444d34 Removed redundant logging. 2016-04-09 18:05:33 +02:00
Mark McDowall
8a6d1ef373 Release scoring 2016-04-08 13:25:50 -07:00
Mark McDowall
dc694b0f34 Don't throw after catching the exception during TearDown 2016-04-08 10:16:29 -07:00
Mark McDowall
76f8cc81da Fixed: Don't force testing when updating connections, indexers or download clients 2016-04-07 17:40:52 -07:00
Mark McDowall
14f737bd60 Fixed: Set permissions on series metadata images when they are created
Closes #871
2016-04-07 17:37:16 -07:00
Mark McDowall
5942ddf9f1 Implement mono logic to not set owner/group with chown
New: Allow Owner or Group to be left blank to not set it when changing owner (mono only)
Closes #1220
2016-04-07 15:52:12 -07:00
Mark McDowall
ab7b427241 Fixed: Default display time for Kodi notifications 2016-04-07 15:52:12 -07:00
Taloth Saldono
15120270b4 Disabled unreliable lookup test. 2016-04-07 00:07:49 +02:00
Taloth Saldono
cc0406653a Readded logging Download Client responses. 2016-04-06 22:53:14 +02:00
Taloth Saldono
9f34127565 Better error handling in the Deluge ConnectDaemon code. 2016-04-06 22:07:25 +02:00
Taloth Saldono
71ecc96c70 Refactored IntegrationTests to work with Nunit3 VS adapter. 2016-04-06 22:06:40 +02:00
Taloth Saldono
2fa3873503 Give a couple of timing-based tests a bit more breathing room. 2016-04-06 21:35:00 +02:00
Taloth Saldono
96b7bd3b2b Merge branch 'http-uri-combine-path' into develop 2016-04-06 21:34:20 +02:00
Taloth Saldono
e1ea17cabf Fixed: uTorrent api proxy would fail on specific Win10 configurations. (The Phoenix Rises)
Moved token queryparam to start since uTorrent requires it.
Fixed handling response missing an expected Set-Cookie header.
Force Cache-Control: no-cache for uTorrent.
Added Connection: KeepAlive to fix inexplicable uTorrent api failure.
2016-04-05 23:49:28 +02:00
Taloth Saldono
3a162be265 CombinePath now simple, uri resolve done via operator and CombineRelativePath. 2016-04-05 23:42:10 +02:00
Mark McDowall
502298aab9 Cleanup HttpUri.PathCombine 2016-04-03 18:47:43 -07:00
Mark McDowall
edea488dbe Upgrade to NUnit3 2016-04-01 19:19:32 -07:00
vawen
2fabe2d198 New: Prevent grabbing season packs if full season hasn't aired yet
Closes #743
2016-03-29 19:44:33 -07:00
Mark McDowall
f2c8156c00 ParsingService.GetEpisodes will use TVDB season number when available 2016-03-28 19:32:58 -07:00
Mark McDowall
942be364dc Treat XEM aliases as SceneSeasonNumber
Fixed: Aliases used incorrectly when TVDB season number matched the seaon number of the alias
Closes #1140
2016-03-28 19:32:25 -07:00
Keivan Beigi
44e09e2220 build.sh uses msbuild 14 2016-03-28 11:45:06 -07:00
Keivan Beigi
0fcd20ec4a use npm-cache if installed 2016-03-28 11:37:29 -07:00
Taloth Saldono
4c5707bba8 Fixed: Newznab/Torznab used wrong query if tvrageid was unknown in combination with a specific indexer capability profile. 2016-03-28 20:15:31 +02:00
Taloth Saldono
947f494e72 Fixed: Release Group detection didn't handle RLSGRP_English properly.
fixes #1198
2016-03-26 21:42:51 +01:00
Taloth Saldono
3f74a87b45 Fixed: Removed TrollHD from the RawHD detection regex since they now also release other sources.
fixes #1193
2016-03-26 20:45:52 +01:00
Taloth Saldono
da0bdc5750 New: Added RERIP as REPACK (Proper). 2016-03-26 20:41:27 +01:00
Taloth Saldono
3ea59cd91b Don't set ACL if already set. 2016-03-26 19:31:12 +01:00
Taloth Saldono
9b42dc7082 Reconfigure Logging early in the process to set the correct log level. 2016-03-26 19:31:11 +01:00
Taloth Saldono
8b1c022244 Updated NLog to 4.3.0-rc1. 2016-03-26 19:31:09 +01:00
Mark McDowall
e5cb8bb0bd Fixed: Some releases with date and season/episode numbers with multiple episodes on a single day
Closes #1192
2016-03-25 19:13:24 -07:00
Mark McDowall
d37343bb7d Fixed: Prevent root folders from being added under the startup folder 2016-03-25 19:03:28 -07:00
Nathan
9c91f11cdc New: Safari Pinned tab icon
Closes #1122
2016-03-24 15:47:08 -07:00
Mark McDowall
444fcf5ae5 Fixed: Use new rTorrent commands when resolving magnets
Closes #1199
2016-03-24 14:35:36 -07:00
Mark McDowall
31f8e0a47a New: Windows Phone theme 2016-03-24 12:25:51 -07:00
Mark McDowall
1e0fcc877b New: Mobile Chrome theme (Android 5.0+) 2016-03-24 12:25:51 -07:00
Björn Dahlgren
1293bab868 Run gulp using npm Simplifies usage of gulp and makes sure everyone is using same version 2016-03-24 10:43:54 -07:00
GΛVĪN
9de92d18e1 Updated OS X startup script to work with macports mono 2016-03-23 22:56:45 -07:00
Mark McDowall
5a877cbd62 Fixed: RSS Sync failing due to one broken indexer 2016-03-23 19:04:35 -07:00
Taloth Saldono
99aa25bf83 New: Light green background color in Season Pass for seasons with all episodes downloaded. 2016-03-22 23:09:38 +01:00
Iain Nicol
5f66c15b91 Fixed: Allow underscore when validating hostnames
This is particularly useful on FreeNAS.  It uses underscores in the hostnames when creating plugin jails.
2016-03-22 20:06:41 +00:00
Mark McDowall
af220c7f7b ItemViewContainer didn't exist sometimes for root folders
Fixed: Error displaying existing root folders in some cases
Closes #1170
2016-03-21 15:02:09 -07:00
Mark McDowall
59e71a4cd9 Include series type for CustomScript 2016-03-19 19:35:02 -07:00
Mark McDowall
6b1a4c4198 Always validate settings when testing thingies
Fixed: Validation skipped when saving connections
2016-03-18 15:42:19 -07:00
Mark McDowall
1072c5247c On grab for custom scripts
New: On Grab handling for Custom Scripts
2016-03-17 18:40:58 -07:00
Taloth Saldono
6508e920fe New: Added (fairly strict) regex for the new scene WEB quality = WEB-DL. 2016-03-17 21:03:01 +01:00
Taloth Saldono
1154e0eeb3 Add WebException handlers to prevent them reaching the UI. 2016-03-17 20:53:11 +01:00
Taloth Saldono
2d96914bfa Send Http auth without waiting for challenge. 2016-03-17 20:15:53 +01:00
Taloth Saldono
70494c3674 Adding magnet to qbit should use FormData not QueryParam. 2016-03-17 19:49:05 +01:00
Taloth Saldono
d68ad98176 Fixed: UsenetBlackhole not importing since latest develop. 2016-03-17 08:01:07 +01:00
Taloth Saldono
eb70a6419c Fixed: Not uploading nzbs to Nzbget on linux since previous develop. 2016-03-17 07:53:23 +01:00
Taloth Saldono
22aa759abc Fixed: Rarbg indexer broken on develop. 2016-03-17 07:32:45 +01:00
Taloth Saldono
19b8fb6d8b Merge branch 'blackhole-delay' into develop 2016-03-15 21:47:18 +01:00
Taloth Saldono
d4bc835b1c New: Delaying Blackhole imports while they're still being updated. 2016-03-15 21:46:40 +01:00
Taloth Saldono
b99d82cccc Ensure auto-generated mocks are also registered in the test container. 2016-03-15 21:46:39 +01:00
Taloth Saldono
25d481d5d9 Migrated all Download client proxies from RestSharp to HttpClient. 2016-03-11 20:36:03 +01:00
Taloth Saldono
23871503a2 Replaced Uri with HttpUri. 2016-03-11 20:36:01 +01:00
Taloth Saldono
7c54fa70d7 Added support for FormData (AddFormParameter and AddFormUpload), which automatically gets converted to multipart/form-data or application/x-www-form-urlencoded. 2016-03-11 20:35:59 +01:00
Taloth Saldono
2ffbbb0e71 Refactored HttpRequest and HttpRequestBuilder, moving most of the logic to the HttpRequestBuilder.
Added ContentSummary to be able to describe the ContentData in a human readable form. (Useful for JsonRpc and FormData).
2016-03-11 20:35:58 +01:00
Taloth Saldono
7818f0c59b Fixed: Don't purge xem scene mapping cache when new series gets added. 2016-03-11 17:31:06 +01:00
Taloth Saldono
03e2adc332 Sort episodes in calendar by ep nr if airdate is the same. 2016-03-11 16:54:41 +01:00
Taloth Saldono
e6ab4196de Revert "Fixed: Sort episodes on the api by episode number when they air at the same time."
This reverts commit 9ffc0ec521.
2016-03-11 16:53:22 +01:00
Mark McDowall
f2784d3ec2 New: Trakt links on series details 2016-03-10 20:48:24 -08:00
Mark McDowall
ef3d508b31 Fixed: Anime season search won't search for missing episodes 2016-03-10 20:24:07 -08:00
Taloth Saldono
9ffc0ec521 Fixed: Sort episodes on the api by episode number when they air at the same time. 2016-03-06 00:43:04 +01:00
Mark McDowall
b598add64e Updated FluentValidation 2016-03-04 00:39:17 -08:00
Mark McDowall
47446515d1 Update CONTRIBUTING.md 2016-03-02 10:03:37 -08:00
Taloth Saldono
e5de7fb8cf Fixed: Don't trigger SceneMapping update and Housekeeping right on the startup event. 2016-03-01 23:50:09 +01:00
Taloth Saldono
55e870f295 Added version to logged exceptions. 2016-03-01 22:05:34 +01:00
Taloth Saldono
1485c83ab6 Don't hammer thexem, kthxbai. 2016-03-01 22:05:23 +01:00
Mark McDowall
e8d1623e96 Default Plex Media Server "Update Library" to true 2016-02-25 19:19:31 -08:00
Taloth Saldono
3bc6bf9e99 Don't die in MonoTorrent if nodes is an empty string. 2016-02-25 21:40:55 +01:00
Taloth Saldono
949d8bf49b Fixed: Warn if user has movie/date sorting enabled in Sabnzbd for the Sonarr category. 2016-02-25 20:39:42 +01:00
Taloth Saldono
c29e49da95 Clarified error message in MatchesFolderSpecification. 2016-02-25 19:44:29 +01:00
Taloth Saldono
79c565911c New: Changed the default of 'Use Hardlinks instead of Copy' to true. Most ppl seem to want that anyway. 2016-02-25 19:19:02 +01:00
Taloth Saldono
bb9a0371c5 Added TorrentRss test for ExtraTorrents, no other changes. 2016-02-25 19:18:46 +01:00
Taloth Saldono
e945231ab3 Fixed: Newznab should reject a Torznab feed. 2016-02-21 11:37:01 +01:00
Mark McDowall
c1298d162e Womble's has size parsing now 2016-02-18 18:39:23 -08:00
Taloth Saldono
f005edfcf0 Don't use Sonarr as ReleaseGroup if the pattern contains an advanced prefix/suffix. 2016-02-18 23:32:38 +01:00
Taloth Saldono
59c68ec6cc Write debug/trace log files separately to prevent trace from quickly rolling over debug. 2016-02-18 23:32:37 +01:00
Taloth Saldono
a5077b0b1b Replaced <removed> with (removed) for the log cleanser so it doesn't mess with forums. 2016-02-18 23:32:36 +01:00
Mark McDowall
a22c0499d5 Couple more anime version test cases 2016-02-17 23:06:44 -08:00
Mark McDowall
c38608e3cf Fixed Protocol returned for release/push endpoint 2016-02-17 20:26:37 -08:00
Taloth Saldono
3b57194d47 Fixed: Parses size in Wombles Description field so min/maxsize checks works on Wombles feed. 2016-02-17 23:22:22 +01:00
Taloth Saldono
21c901eab4 fixed failing torznab test 2016-02-17 21:52:55 +01:00
Taloth Saldono
9ad8311dd6 New: Use PageSize reported by newznab/torznab caps instead of hardcoded 100.
ref Jackett/Jackett#27
2016-02-17 21:23:27 +01:00
Taloth Saldono
df84028c90 Added DrunkenSlug and SimplyNZBs as Newznab presets. 2016-02-17 21:23:26 +01:00
Mark McDowall
7cb1e91ba1 Handle 1.1x version from Sabnzbd 2016-02-16 23:49:13 -08:00
Mark McDowall
974a7276c3 New: Explicitly enforce SABnzbd minimum version of 0.7.0 2016-02-16 22:40:12 -08:00
Mark McDowall
f0ca2bc11e Fixed: Don't collapse episode titles when episode titles contain Part x only 2016-02-16 21:28:32 -08:00
Mark McDowall
cb43888496 Fixed: Use Protocol over DownloadProtocol for ReleasePushModule
DownloadProtocol is still supported for backwards compatibility
2016-02-16 20:21:20 -08:00
Taloth Saldono
34d5fb1aa0 Fiddled with the Back to the Top button a bit so it's better visible on the white background, also only on widescreen now. 2016-02-15 22:56:10 +01:00
Taloth Saldono
72f0085ef7 Fixed: DownloadedEpisodesScan API command couldn't be used to process individual files. 2016-02-15 21:55:53 +01:00
Taloth Saldono
f25f5abced Cleaned up 2160p changes and added migration and tests.
Also reserved the quality ids for WEBRip etc.
2016-02-14 00:08:42 +01:00
Björn Dahlgren
94323f79e7 New: Added support for UltraHD (2160p) quality 2016-02-14 00:08:15 +01:00
Taloth Saldono
bdb1076100 Updated db migration testing framework so we only run migrations up to the one we're testing.
fixes #902
2016-02-13 23:21:32 +01:00
Mark McDowall
8818e39c63 Fixed: Daily + Standard with 3 digit episode numbers
Closes #1145
2016-02-11 18:46:32 -08:00
Taloth Saldono
6a90035a4c Updated NLog to v4.2.3. 2016-02-11 22:15:12 +01:00
Taloth Saldono
e01b2ef25c Fixed some compile warnings. 2016-02-11 22:11:53 +01:00
Taloth Saldono
91d91bc673 Fixed: Sample files of daily episodes should also be deleted after import. 2016-02-11 21:27:41 +01:00
Taloth Saldono
1c92ea58da Fixed: Replaced mono symlink resolve logic to better handle errors. 2016-02-11 21:12:42 +01:00
Taloth Saldono
bd6a38173e Add another nn preset. 2016-02-11 20:11:59 +01:00
Mark McDowall
5d05a85411 Delete the subfolder not the parent folder 2016-02-11 00:54:52 -08:00
Mark McDowall
1a5eafd2b1 New: Remove empty subfolders after renaming FileSetLastWriteTime
Closes #490
2016-02-11 00:38:44 -08:00
Mark McDowall
1603b06431 New: Prefer regular episodes over specials when absolute numbers conflict
Closes #676
2016-02-11 00:09:29 -08:00
Mark McDowall
2396af4589 New: Pushover Silent and Emergency priorities
Closes #878
2016-02-10 23:43:40 -08:00
Taloth Saldono
262b8daec1 Revert "Fixed regression, mono should resolve symlinks while trying to find out the available/total space."
This reverts commit d33efe59fc.
2016-02-11 01:52:47 +01:00
Taloth Saldono
d33efe59fc Fixed regression, mono should resolve symlinks while trying to find out the available/total space. 2016-02-11 01:14:16 +01:00
Taloth Saldono
5550565d6a Fixed: Manual Import didn't revert to parent folder when trying to parse series leading to issues with obfuscated releases. 2016-02-10 00:15:01 +01:00
Taloth Saldono
68540cb479 Certain log messages didn't include the exception. 2016-02-07 00:23:13 +01:00
Taloth Saldono
4038fa6907 Ignore -Obfuscated while parsing. 2016-02-06 10:43:56 +01:00
Taloth Saldono
f96f997506 Fixed: Handling xml responses containing invalid html entities.
fixes #1123
2016-02-05 20:08:54 +01:00
Taloth Saldono
4e84d1a17c Fixed: Throw more specific error when there's an issue with the curl root certificate bundle. 2016-02-02 22:11:39 +01:00
Taloth Saldono
97cdb6a4a5 Fixed: ZFS and other mounts now listed in the System page.
Will now also automatically revert to a fully transactional move/copy if the move is in our out of a cifs mount. (assuming the cifs mount can be detected)
2016-02-02 22:11:37 +01:00
Mark McDowall
f5b3d70641 Merge pull request #1112 from cturra/nzbplanet-api
updating nzbplanet.net api url to reflect recent change
2016-01-30 23:33:06 -08:00
cturra
db66d3da9e updating nzbplanet.net api url to reflect recent change 2016-01-30 21:27:18 -08:00
Taloth Saldono
c20e0667d4 Added additional tier to search for daily series type on BTN to find faux-daily series with SxxExx groups instead of date groups.
fixes #1111
2016-01-30 21:16:45 +01:00
Mark McDowall
4771b1c1b2 New: Parsing of XofY mini series format
Closes #1091
2016-01-30 11:16:59 -08:00
Mark McDowall
8e07a39ec0 Merge pull request #1095 from ta264/fix-build-sh
xbuild doesn't support /m parameter
2016-01-28 14:52:19 -08:00
Mark McDowall
9895b5bc1d Merge pull request #1100 from IvanBrazza/develop
Pushbullet: Source device support
2016-01-28 14:49:47 -08:00
Mark McDowall
e89a1bc0fb Fixed: Delete confirmation message for Restriction
Closes #1102
2016-01-28 14:04:10 -08:00
Ivan Brazza
9b0654c7f2 New: Setting Pushbullet source device 2016-01-28 21:33:11 +00:00
Mark McDowall
56da824e98 AutoComplete and file browser will show files when appropriate
Fixed: File browser for Custom Script shows files
Closes #1084
2016-01-27 19:24:41 -08:00
ta264
f84b7904e6 Fix: xbuild doesn't support /m parameter 2016-01-27 14:11:29 +00:00
Mark McDowall
9f523bb167 New: Prevent automatic update if UI folder is not writable 2016-01-24 19:22:07 -08:00
Taloth Saldono
f38d5de946 Fixed: Regression in parser incorrectly parsing S2015Exx.2015-01-01 notation.
fixes #1080
2016-01-21 22:43:48 +01:00
Taloth Saldono
de379b2e47 Do or do not, there is no try. 2016-01-21 21:10:22 +01:00
Taloth Saldono
64e90f35c8 Ensure rTorrent download is started even if the user doesn't have schedule=...,start_tied= in their rtorrent.rc. 2016-01-21 08:40:10 +01:00
Taloth Saldono
bbfe8c27c6 Fixed: Misleading error message when Kickass/Torrent Rss indexer returned invalid xml.
fixes #1058
2016-01-20 21:58:23 +01:00
Taloth Saldono
2f50074123 Fixed: Incorrect api error when calling /api/episode without seriesId queryparam.
fixes #1070
2016-01-20 21:58:02 +01:00
Taloth Saldono
5cfaed7b26 Fixed: Added support for Sabnzbd 0.8 history category queryparam.
fixes #1077
2016-01-20 21:57:40 +01:00
Taloth Saldono
0d19f645e8 Fixed: Don't apply indexer backoff on DNS and connection issues.
Fixes #751
2016-01-20 21:57:39 +01:00
Taloth Saldono
45d4371328 Fixed: Additional log cleanse Regex to keep even more sensitive information out of the logs.
fixes #1051
2016-01-20 21:57:10 +01:00
Taloth Saldono
889933cb41 New: Set full Download Directory in Transmission instead of just a Category.
fixes #744
2016-01-20 21:26:59 +01:00
Taloth Saldono
958b294152 Updated URL rewriter to handle torcache Referer weirdness. 2016-01-20 21:26:58 +01:00
Taloth Saldono
cf25097cd1 Fixed: Magnet downloads weren't being started on RTorrent. 2016-01-20 21:26:57 +01:00
Taloth Saldono
902e0dd5d6 Updated SharpZipLib to include patches made since the last official release. 2016-01-20 21:16:02 +01:00
Keivan Beigi
d943551a7f fixed build.sh 2016-01-16 16:39:45 -08:00
Keivan Beigi
46304b8a71 use build config to exclude xml doc rather than deleting them later 2016-01-16 16:36:40 -08:00
Keivan Beigi
6e2fc186ca added nuget.exe to tools 2016-01-16 16:19:28 -08:00
Keivan Beigi
845689401d removed msbuild integerated nuget restore 2016-01-16 16:17:36 -08:00
Keivan Beigi
4fb9cc5e8d cleanup app.manifest for Service helpers, upgraded compat to windows 8.1 2016-01-16 15:52:00 -08:00
Keivan Beigi
487581a01a apparently new compilers alraedy embed the app.manifest into the app, no need for mt.exe anymore 2016-01-16 15:51:26 -08:00
Keivan Beigi
2bc771d91e Merge pull request #1066 from pra85/2016
Update year range to 2016
2016-01-16 00:37:43 -08:00
Keivan Beigi
8bd7969328 cleanup 2016-01-16 00:36:43 -08:00
Keivan Beigi
5876ab487c fixed gulp build 2016-01-15 22:13:00 -08:00
Keivan Beigi
9c14ca0f39 Replaced build.ps1 with warning 2016-01-15 22:06:33 -08:00
Keivan Beigi
81ca352b2f smarted mdb generation 2016-01-15 21:50:09 -08:00
Keivan Beigi
0edfed5b95 upgraded pdb2mdb.exe to mono 4.2 Stable (4.2.1.102) 2016-01-15 21:50:09 -08:00
Prayag Verma
0ff053415c Update year range to 2016 2016-01-16 09:40:24 +05:30
Mark McDowall
a0ee607ae6 Remove double slash in NZBVortex add URL 2016-01-15 09:04:18 -08:00
Keivan Beigi
2723e2a7b8 faster test packaging in build.sh 2016-01-15 00:27:59 -08:00
Keivan Beigi
6e105ce2c6 upgraded nuget packages 2016-01-14 23:07:39 -08:00
Keivan Beigi
9fc7fceda4 updated npm packages 2016-01-14 18:56:14 -08:00
Mark McDowall
2b72c0e328 Fixed: Manual Import Series selection
Closes #996
2016-01-09 13:16:34 -08:00
Mark McDowall
536aa350f0 Merge pull request #960 from Sonarr/nzb-vortex
NZBVortex Download Client
2016-01-07 15:53:57 -08:00
Mark McDowall
7c382c0e0c NZBVortex Download Client
New: NZBVortex Download Client
Closes #360
2016-01-07 15:50:52 -08:00
Mark McDowall
dda0d3259f Fixed broken test 2016-01-07 15:49:51 -08:00
Mark McDowall
a96718f7b3 Fixed Twitter notifications
New: Twitter notifications now require a Twitter (see settings for details)

Closes #1049
2016-01-06 22:32:12 -08:00
Mark McDowall
7ca67fe57a New: Special searching on RARBG 2016-01-05 23:07:49 -08:00
Mark McDowall
8373024f9d Fixed: Parsing of queued specials from download client queue 2016-01-05 22:56:34 -08:00
Mark McDowall
b62ef0c40c Fixed: Use folder quality when better than file quality (regression)
Closes #1022
2016-01-04 23:12:14 -08:00
Mark McDowall
376481eda5 Merge pull request #981 from Sonarr/ical-parameters
iCal parameters
2016-01-02 10:31:12 -08:00
Mark McDowall
800fa42982 Selectable range for iCal
New: Support for pastDays and fututeDays query parameters on iCal requests
Closes #974
2016-01-02 10:21:06 -08:00
Taloth Saldono
4e728c3a02 Increased timeout for Deluge to prevent timeout errors when posting large torrent files. 2015-12-30 22:50:17 +01:00
Taloth Saldono
663d254ced Fixed Ospath incorrectly detecting arbitrary colon as windows path. 2015-12-30 21:01:29 +01:00
vawen
8753c232c7 Fix: Paths with colons prevent Sonarr from communicating with Transmission
Issue #954
2015-12-29 13:25:36 +01:00
Taloth Saldono
221f3ef08c Safety net to handle MaxSize=0. Some users still have 0 = unlimited in their db and migration failed for them. 2015-12-28 20:24:24 +01:00
Taloth Saldono
b59175a87c Fixed: Indexer sites returning date as Retry-After header.
fixes #994
2015-12-28 20:24:23 +01:00
Taloth Saldono
37c621dcdb Fixed: Health Check produced warning if Sonarr binaries folder was not writable even when the external script update mechanism was selected.
fixes #964
2015-12-28 20:24:22 +01:00
Taloth Saldono
eaf3228bb7 Fixed Regex mistake in CleanLogMessage. 2015-12-28 20:24:21 +01:00
Jake Pusateri
c8debbf470 New: Better resolution posters on retina screens. 2015-12-28 11:12:12 -08:00
Mark McDowall
8dcd8d17b5 Fixed: Username must not be null or empty when logging in 2015-12-27 00:59:28 -08:00
Mark McDowall
cfe121c777 Don't return series as subtype for /api/episode
Fixed: Sped up loading episodes from server
2015-12-27 00:45:20 -08:00
Mark McDowall
b4f83d8a4e New: Media file extension .webm 2015-12-25 18:35:42 -08:00
Mark McDowall
9039d7e694 Fixed: Show a better error message when no episodes are parsed in a release 2015-12-25 18:32:03 -08:00
Taloth Saldono
7a25717da6 Fixed donate button. 2015-12-24 19:51:36 +01:00
Taloth Saldono
7e1c444c02 Fixed: Curl Fallback should ignore invalid cookies. 2015-12-24 19:30:16 +01:00
Mark McDowall
dc3f7c9bda Fixed: Improved parsing for single digit multi-episode titles
Closes #965
2015-12-20 00:11:41 -08:00
Mark McDowall
de754169fb Fixed: RSS Sync Interval validation 2015-12-19 18:02:38 -08:00
Mark McDowall
2d3c3bbb0c Changed torrent blackhole message 2015-12-19 17:49:54 -08:00
Mark McDowall
15cefe4a43 New: Option to Hardlink or Copy instead of move for Torrent Blackhole
Closes #1011
2015-12-19 17:18:22 -08:00
Mark McDowall
95da301975 A few UI Fixes
Closes #1009
Closes #1010
2015-12-18 23:41:30 -08:00
Mark McDowall
e03906b294 Fixed: Hardlink/Copy files from QBittorrent 2015-12-17 22:16:38 -08:00
Mark McDowall
7921dd3f96 Fixed: Removed Titans of TV tracker
Closes #992
2015-12-17 00:46:02 -08:00
Mark McDowall
9f066f7a6b New: Newznab preset for Usenet Crawler 2015-12-17 00:24:51 -08:00
Mark McDowall
81d131e732 Merge pull request #779 from cbodley/qbittorrent
Download client for qBittorrent
2015-12-15 23:10:20 -08:00
Casey Bodley
0552b56b71 qbittorrent: client plugin based heavily on uTorrent
supports a minimum qBittorrent version of 3.2.4, and uses labels for
v3.3.0 and later

Signed-off-by: Casey Bodley <cbodley@gmail.com>
2015-12-14 00:20:14 -05:00
Keivan Beigi
3952ee402b Update readme.md 2015-12-12 11:24:46 -08:00
Mark McDowall
0b3e27cb44 Don't keep dylibs for WIndows and Linux builds 2015-12-09 23:24:50 -08:00
Mark McDowall
4fa4b3507e Fixed: Force grabbing some delayed releases
Closes #984
2015-12-08 22:50:34 -08:00
Mark McDowall
8c211364e2 Fixed: Improved parsing of some multi-episode filenames 2015-12-08 15:26:52 -08:00
Mark McDowall
2d9917d074 Re-order regex to prefer [1x01] over 101 2015-12-06 11:03:11 -08:00
Mark McDowall
d514699ab7 Fixed: Prevent series from being added with an invalid Profile ID
Closes #977
2015-12-05 02:22:22 -08:00
Mark McDowall
dc176a83b3 Update CONTRIBUTING.md 2015-12-01 08:48:41 -08:00
Mark McDowall
69e3516a89 New: Allow Uppercase in Transmission category
Closes #934
2015-11-29 22:01:20 -08:00
Mark McDowall
c8a0f9fa7a Fixed: Saving settings changes 2015-11-26 12:05:37 -08:00
Mark McDowall
c2b9504b15 Merge pull request #931 from Dahlgren/osx-development
Include mediainfo and sqlite3 libraries for Mac
2015-11-24 18:35:07 -08:00
Mark McDowall
2693a3df2e Merge pull request #959 from roguecode/develop
Fixed: Indexer failure log message with local time
2015-11-24 15:41:57 -08:00
Matt
8062466ab8 Changing Indexer failure log message to local from UTC. 2015-11-24 23:42:20 +02:00
Björn Dahlgren
6cde1dd5ae Include mediainfo and sqlite3 libraries for Mac
Enables usage within MonoDevelop and Xamarin Studio including NUnit
2015-11-24 10:21:42 +01:00
Mark McDowall
b6c4a97675 Merge pull request #889 from Sonarr/quality-source
Folder quality when file quality determined by its extension
2015-11-23 23:01:10 -08:00
Mark McDowall
a9444cef30 Fixed: Folder quality when file quality determined by its extension
Closes #603
2015-11-23 23:00:51 -08:00
Mark McDowall
bf217a7093 Merge pull request #754 from Sonarr/real-releases
Support for REAL releases
2015-11-23 22:59:41 -08:00
Mark McDowall
b6b5355261 New: support for REAL releases
Closes #453

New: Added `Quality Real` naming Token
New: Quality Full will add real to file name when applicable
2015-11-23 22:58:53 -08:00
Mark McDowall
bc37084ec4 Merge pull request #928 from Dahlgren/mono-tests
Fixed tests for Mono
2015-11-23 22:50:34 -08:00
Mark McDowall
0a1a30f2af Merge pull request #953 from zetas/nn_preset_nzbcat
New: Newznab Preset for NZBCat
2015-11-23 22:50:15 -08:00
Keivan Beigi
7e023a7944 ConfigServiceFixture shouldn't be touching the DB. 2015-11-23 21:57:01 -08:00
zetas
91f68de8a7 Adding new newznab preset for NZBCat 2015-11-22 07:09:57 -05:00
Björn Dahlgren
994e2a6c57 Fixed failing tests on Mono
Test case unicode characters in escaped format
2015-11-22 01:11:43 +01:00
Mark McDowall
04da2d845a Merge pull request #941 from uzegonemad/hotfix/calendar-legend-width
Give calendar legend ul max width of 100%. Fixes #922
2015-11-18 22:12:39 -08:00
Benjamin Uzelac
d3b87bc3e8 give legend ul max width of 100%
give legend ul max width of 100%
2015-11-18 22:17:05 -06:00
Mark McDowall
554c81f251 Merge pull request #901 from brgaulin/jquery_upgrade
Update jQuery to 1.11.3
2015-11-16 13:44:42 -08:00
Mark McDowall
6de3f9dd0b Merge pull request #942 from uzegonemad/hotfix/calendar-tooltip
Fixed: Hidden calendar tooltips
2015-11-16 13:38:30 -08:00
Mark McDowall
e9692d5b9c Merge pull request #940 from uzegonemad/hotfix/fix-long-path-label
Fixed: Add wrapping to fix long paths in labels
2015-11-16 13:37:26 -08:00
Benjamin Uzelac
1a74990e9b alter calendar tooltip container. fixes #857 2015-11-15 20:50:17 -06:00
Benjamin Uzelac
3b9ac8699d Add wrapping to fix long paths in labels. Fixes #875 2015-11-15 18:25:30 -06:00
Mark McDowall
ea6ae85f7a Fixed: Logging invalid version when failing to connect to Kodi
Closes #927
2015-11-14 22:35:45 -08:00
Mark McDowall
b02b9f026f Fixed: Failing missing episode search when one search fails
Closes #917
2015-11-14 22:35:28 -08:00
Mark McDowall
c419e7b710 Merge pull request #915 from uzegonemad/hotfix/scroll-up-zindex
Fix z-index on scroll to top button
2015-11-14 21:43:37 -08:00
Benjamin Uzelac
cd9132520d fix z-index on scroll to top button 2015-11-05 19:43:53 -06:00
Mark McDowall
08d19df3f7 Fixed: Manual import when quality was not available after failed parsing
Closes #911
2015-11-03 15:12:56 -08:00
Mark McDowall
b34879b4f6 New: Manual search shows error when download fails 2015-11-02 22:46:06 -08:00
Mark McDowall
6b9c4af591 Fixed: Magnet links with torrent blackhole 2015-11-02 22:21:27 -08:00
Mark McDowall
c00c207517 Prevent regrab for all grabs
Fixed: Prevent incorrectly grabbing a similar or identical release for 12 hours
2015-11-01 21:54:49 -08:00
Mark McDowall
6f7fea3591 PFMonkey Newznab preset 2015-11-01 21:35:44 -08:00
Mark McDowall
83eebfe153 Fixed: Stricter parsing of some release filenames 2015-10-29 23:58:56 -07:00
Gaulin, Brendan
fce3f86be7 UI: Update jQuery to 1.11.3 2015-10-29 08:38:21 -04:00
Mark McDowall
2d42c59d70 Fixed: Log download client name when communication fails 2015-10-27 22:19:24 -07:00
Mark McDowall
f0933b9786 Fixed: Test messaging when indexer API returns an error with a message 2015-10-27 22:04:20 -07:00
Mark McDowall
e4e687c2a4 Fixed: Parsing anime series with number in title
Closes #898
2015-10-26 14:56:28 -07:00
Taloth Saldono
44de353b8b Sanitize dognzb apikey in nzb fetch url. 2015-10-25 23:15:21 +01:00
Taloth Saldono
aac4938598 Fixed handling cookies in different system languages.
fixes #896... hopefully
2015-10-25 22:57:37 +01:00
Mark McDowall
d37b24cd0b Better UI messaging when searching for all specials in a series
Fixed: Specials season search UI messaging
Closes #881
2015-10-25 10:10:57 -07:00
Taloth Saldono
c9a36fe4b2 Fixed sorting on Progress in Queue.
Fixes #882
2015-10-22 23:19:24 +02:00
Taloth Saldono
f01a21ce43 Degraded 101 regex to favour S01 regex to match prevent matching 3 digit series title.
Fixes #885
2015-10-22 23:19:22 +02:00
Taloth Saldono
cc72699b8a Fixed: Added verified file transfer mode that doesn't revert to copy. 2015-10-22 23:19:21 +02:00
Mark McDowall
04de0049fe Don't try to process a download client item with an invalid path for the OS 2015-10-21 15:06:54 -07:00
Taloth Saldono
330554edb0 Fixed: External links again open in new windows. 2015-10-20 20:58:56 +02:00
Taloth Saldono
a06a3fa5d6 Fixed: Removal of common suffixes such as [ettv] while parsing.
Fixes #874
2015-10-20 20:12:35 +02:00
Taloth Saldono
e8d6d62fba Warning message when BTN API throw internal server error 2015-10-20 19:31:40 +02:00
Mark McDowall
9cc8ed545f History Spec handles both blackhole and CDH disabled scenarios
Fixed: History will always be used to determine upgrade eligibility when CDH is disabled
2015-10-19 11:42:05 -07:00
Mark McDowall
8bf969983b Tests passing for the wrong reason 2015-10-18 11:01:26 -07:00
Mark McDowall
4ee7d57b7d lrn2spell 2015-10-18 10:54:16 -07:00
Mark McDowall
6ff754eec0 Extend Blackhole grace period to 12 hours 2015-10-18 10:52:26 -07:00
Mark McDowall
862f8024e3 Debug log when release is accepted 2015-10-16 21:54:36 -07:00
Mark McDowall
d170c9ad07 Fixed: Torrent Blackhole client will not track torrents by hash 2015-10-15 23:11:48 -07:00
Mark McDowall
20df619ddd HistorySpecification checks cutoff as well 2015-10-15 00:23:14 -07:00
Taloth Saldono
f7859c8eb5 Fixed: SeasonPass didn't update Series monitored flag if only those were changed. 2015-10-13 22:51:04 +02:00
Taloth Saldono
97cdcb8b19 Bind SignalR to root SeriesCollection so typeahead gets the newest data. 2015-10-13 22:51:02 +02:00
Taloth Saldono
e3c4070924 Fixed: Don't produce scene mapping warnings if TheXEM only maps the second half of a season. 2015-10-13 22:51:01 +02:00
Taloth Saldono
74403815d9 Fixed torznab searching without any id or q.
Fixes #849
2015-10-11 21:39:02 +02:00
Taloth Saldono
897937a778 Fixed indeterministic test. 2015-10-11 12:56:47 +02:00
Taloth Saldono
b6ddc8756b Fixed typo in nn caps and apikey error message. 2015-10-11 02:18:51 +02:00
Taloth Saldono
25aa3b60b0 Don't be so strict about dupe attr values. 2015-10-11 00:26:00 +02:00
Taloth Saldono
fe76d0f98f Refactored the HttpDispatchers. 2015-10-10 22:20:17 +02:00
Taloth Saldono
e13c89521d Merge branch 'nn-tvdbid' into develop 2015-10-10 20:38:03 +02:00
Taloth Saldono
828071c1a5 Merge branch 'pr/n721_ta264' into develop 2015-10-10 20:37:53 +02:00
Mark McDowall
408d86245e Merge pull request #844 from Sonarr/history-spec-improvements
Improvements to History Specification
2015-10-10 11:25:22 -07:00
Mark McDowall
e67de6aae8 New: Blackhole won't grab another release if release in last hour meets the cutoff
Fixed: Invalid season packs preventing future releases from being grabbed when using SAB as download client

Closes #837
Fixes #625
2015-10-09 21:50:04 -07:00
Taloth Saldono
45cdb98c58 Fixed namespace detection for EZRSS now DOCTYPE is gone. 2015-10-10 00:04:58 +02:00
Taloth Saldono
6585aed0a9 Removed doctype from ezrss test. 2015-10-09 23:16:07 +02:00
Taloth Saldono
ef305b8d25 Updated Selenium to 2.48 2015-10-09 22:52:59 +02:00
Taloth Saldono
84c7f4cd8c Added support for tvmaze. 2015-10-09 22:36:10 +02:00
Taloth Saldono
9162e97dd5 Added support for querying newznab with multiple ids in one query. 2015-10-09 22:22:50 +02:00
Taloth Saldono
1ad1d73c91 Added tiered indexer requests to support fallback to wildcard queries. 2015-10-09 22:22:48 +02:00
Taloth Saldono
88ce0ec487 Missing TvdbId on ReleaseResource. 2015-10-09 22:22:47 +02:00
Taloth Saldono
99f452e299 New: Added support for newznab indexers using tvdbid for searching. 2015-10-09 22:22:46 +02:00
Taloth Saldono
7af7c2003e Show Specials in Wanted. 2015-10-09 00:01:32 +02:00
Taloth Saldono
bb482047b1 Fixed removing partials before trying to copy files. 2015-10-09 00:01:31 +02:00
Mark McDowall
a39b36d157 Fixed rTorrent test 2015-10-07 21:37:13 -07:00
Mark McDowall
0841bf1d2a Merge pull request #824 from larsjohnsen/rtorrent-misc
rTorrent fixes

Fixed: Adding label to torrents in rTorrent
2015-10-07 21:14:44 -07:00
Mark McDowall
97f1761092 Log description for invalid API key response
Closes #838
2015-10-07 00:09:03 -07:00
Mark McDowall
0e90bf5227 Fixed: Don't import single files that start with ._ 2015-10-04 13:47:02 -07:00
Mark McDowall
192d001b61 New: Option to remove illegal characters
Closes #809
2015-10-04 13:13:14 -07:00
Mark McDowall
68cd9ab8c8 Don't error out if PMS returns no ID for a specific series
Closes #813
2015-10-04 12:12:07 -07:00
ta264
4be0fe1b76 Add tests for CurlHttpClient and fix the failures 2015-10-04 11:11:58 +01:00
Mark McDowall
9ffa28f17c New: Show time instead of date if event occurs/occurred today
Closes #808
2015-10-03 13:27:37 -07:00
Taloth Saldono
0b219e1169 Fixed nullables. 2015-10-03 21:19:25 +02:00
Taloth Saldono
ccfa13e383 Replaced built-in valuetypes with language keywords. 2015-10-03 21:14:06 +02:00
Taloth Saldono
d6a135857d Clarified error message when parsed episode doesn't exist in the database. 2015-10-03 21:14:04 +02:00
Lars
6ed7a8b471 rTorrent: Url Path displayed by default, misc 2015-10-03 15:30:46 +02:00
Lars
7426efd423 rTorrent: Fixed label bug 2015-10-03 15:26:16 +02:00
Lars
95017884d7 rTorrent: Fixed race condition 2015-10-03 15:26:16 +02:00
Mark McDowall
db5494e7ac Fixed: Tooltips for series and season searches 2015-10-02 21:11:32 -07:00
Mark McDowall
2d7774c018 Use X-Api-Key header in integration tests 2015-10-01 13:53:55 -07:00
Mark McDowall
986dae590b Terminate Sonarr instance created during integration tests by Process ID 2015-10-01 13:52:33 -07:00
Taloth Saldono
99f6c65b76 Removed Trakt to Tvdb migration workaround, so it actually removes the tvrageid when skyhook says so. 2015-09-27 11:38:39 +02:00
Mark McDowall
0c7d8c2d38 Fixed: TV Directory is not required for local rTorrent 2015-09-24 13:55:45 -07:00
Taloth Saldono
c63b65eba1 Only apply kat peers fix for recent releases. 2015-09-24 22:33:01 +02:00
Taloth Saldono
3fc348d045 Fixed: Removed deferrer from external links, instead relying solely on the rel=noreferrer attribute (supported by Chrome and Firefox, but not all browser)
fixes #811
2015-09-24 21:53:08 +02:00
Mark McDowall
5dae0b24d3 Merge pull request #768 from kmcc049/fix-bug-709
Change to using 1024 over 1000
2015-09-23 11:32:27 -07:00
kmcc049
07b70f9d3f Fixed: Consistent display of sizes
Closes #709
2015-09-24 06:30:49 +12:00
Taloth Saldono
4060a24eec Fixed: Missing Episode Search command wasn't stored properly in the db causing it to search for all series, instead of one. 2015-09-22 23:48:19 +02:00
Taloth Saldono
d637ee1a2d Disable kickass seeds/peers info since they only report 0 on the rss. 2015-09-22 22:46:49 +02:00
Taloth Saldono
30bcc662bc Fixed composition. 2015-09-21 23:22:34 +02:00
Taloth Saldono
57afa668e1 Fixed: Removing torcache url query params to avoid redirect.
fixes #799
Removing query param was cleaner coz it avoids spoofing the referrer.
2015-09-21 22:01:42 +02:00
Mark McDowall
d7eae958b7 Fixed: Parse TVRip releases as SDTV 2015-09-20 11:28:15 -07:00
Mark McDowall
c591a86b02 Fixed: Parsing 4-digit season packs
Closes #805
2015-09-20 11:21:04 -07:00
Mark McDowall
49dea2cd7f Fixed: Log error message when moving file to recycling bin fails 2015-09-20 10:41:50 -07:00
Mark McDowall
fa527d7820 New: Custom Script Download contains SourcePath and SourceFolder
Closes #793
2015-09-10 21:12:48 -07:00
Mark McDowall
81778cb0b0 New: Custom Script environment variables use underscores instead of periods 2015-09-10 20:11:16 -07:00
Mark McDowall
e1afd89aae Extremely long titles
Fixed: Extremely long series titles causing display issues on main page

Fixes: #769
2015-09-10 20:08:14 -07:00
Mark McDowall
a2f62a5dcd Hide completed downloads when CDH is disabled
New: Only show completed downloads in queue when Completed Download Handling is enabled
2015-09-03 18:38:10 -07:00
Mark McDowall
19f09fdb86 Path and Arguments were set to the same number for CustomScript 2015-09-03 14:57:38 -07:00
Mark McDowall
68e12f1c5e Merge pull request #774 from Sonarr/preserve-startup-args
Preserve startup arguments during restart
2015-09-02 23:13:21 -07:00
Mark McDowall
5acaf9d60b Fixed: Preserve startup arguments during restart
Closes #325
2015-09-02 23:12:27 -07:00
Mark McDowall
741dc8f50b Fixed: Only run a complete section update in Plex if all partial updates fail
Closes #773
2015-09-01 23:46:26 -07:00
Mark McDowall
28a70a0cf1 Fixed: Import episodes in ascending numerical order
Closes #772
2015-09-01 23:29:49 -07:00
Mark McDowall
bf10d420ec Show implementationName for metadata
Closes #770
2015-09-01 00:20:17 -07:00
Mark McDowall
7286ccdd56 return early for existing files in UnverifiedSceneNumberingSpecification 2015-09-01 00:15:15 -07:00
Gavin Mogan
c5b25bcfee New: Add Webhook support to sonarr
Add Form type url (type=url input field)
Add isValidUrl input type validation

Only allow absolute urls when checking if a url is valid

String => string as per comments that sonarr is standarizing on the lowercase primative

Remove this before function calls

Refactored everything so OnGrab is supported

Don't double submit the webhook

Wrappers around Series, EpisodeFile, Episode so the entire data structure isn't exposed

Add Braces as per style guide

Series.ID and Series.TvdbId should be integers

Reorder webhook payload as per style guide

Upgrade to use ongrab as json instead of string

Add method selection to webhook settings

include episode directly in download event

QualityVersion should be an int and not a string (don't convert it int=>string)

Remove the list of episodes

Add season number to episode data structure

Code Review Fixes:

* Remove episodefile from payload, move everything to episode
* Change episode to a list

convert to var as per code review / style guide

Down with internals

Everything now uses webhookpayload. None of that payload.Message stuff

{"EventType":"Test","Series":{"Id":1,"Title":"Test Title","Path":"C:\\testpath","TvdbId":1234},"Episodes":[{"Id":123,"EpisodeNumber":1,"SeasonNumber":1,"Title":"Test title","AirDate":null,"AirDateUtc":null,"Quality":null,"QualityVersion":0,"ReleaseGroup":null,"SceneName":null}]}

Remove logger and processProvider

Remove unused constructor
2015-08-29 22:45:14 -07:00
Keivan Beigi
187064101c Phantom: screen less files are defined in sonarr.less 2015-08-29 15:19:45 -07:00
Keivan Beigi
66e829f71e upgraded postcss, webpack 2015-08-26 23:33:08 -07:00
Keivan Beigi
a28dd6269a switched web pack watch to poll mode 2015-08-26 23:32:38 -07:00
Mark McDowall
53985a282d Succeeded instead of completed for testing
Closes #758
2015-08-25 23:34:25 -07:00
Mark McDowall
ffffd8ca69 New: Warning message that Torrent Blackhole will move files, not copy or hard link 2015-08-25 23:33:09 -07:00
Gavin Mogan
d3b9ebf86c Convert onGrab from passing a string to passing an object with series and episode information
Use object initalizer instead of creation of OnGrab/grabmessage
2015-08-25 21:13:08 -07:00
ta264
d41dd05d00 Fix build on linux and add build.sh 2015-08-24 09:57:15 -07:00
Mark McDowall
8f9e076325 Fixed: Don't log all daily episodes parsing as unknown episodes 2015-08-21 17:54:50 -07:00
Mark McDowall
ac587168cd Merge pull request #747 from Sonarr/release-pushing
Release pushing
2015-08-17 22:20:26 -07:00
Mark McDowall
bb144a6df6 New: Ability to push releases to Sonarr via API for processing
Closes #419
2015-08-16 23:09:11 -07:00
bitPhex
4f38454825 Inital work for release pushing 2015-08-16 22:53:57 -07:00
Mark McDowall
3a59b38037 Fix theme less file 2015-08-16 14:25:58 -07:00
Mark McDowall
f032cc8cf6 Support for not adding a hash to some index elements 2015-08-16 01:50:46 -07:00
Keivan Beigi
1a872035e7 external less source maps, autoprefixer 2015-08-15 23:52:45 -07:00
Mark McDowall
026e05dcee Fixed: Better parsing of full season x265 releases 2015-08-15 22:42:15 -07:00
Keivan Beigi
99fd1fd4c1 Added lazy load 2015-08-15 18:07:50 -07:00
Taloth Saldono
d6bfa561ad mono and .net handle Uri escapes differently messing up the tests. 2015-08-16 00:17:55 +02:00
Taloth Saldono
8d0dab6578 Fixed tests after Uri cleanup logic. 2015-08-15 21:35:09 +02:00
Taloth Saldono
1a402a9cf4 MediaInfo should use ParseSpeed > 0.2 for .ts files to get accurate readings.
Fixes #742
2015-08-15 16:55:59 +02:00
Taloth Saldono
211863d55d Fixed: Indexers returning relative urls for grabs. 2015-08-15 13:36:40 +02:00
Mark McDowall
38c57ce73a Fixed: Emby metadata added date will use series added date 2015-08-13 22:33:42 -07:00
Taloth Saldono
372ba13fd2 Fixed SkyHookSearch tests. 2015-08-12 22:53:51 +02:00
Taloth Saldono
9bcb6ff19a New: Sonarr can now update series to use another tvdbid in case when tvdb removes a duplicate and Skyhook detects it. 2015-08-12 22:07:47 +02:00
Taloth Saldono
2627072aab Fixed log message for rss sync gap warning. 2015-08-12 18:53:14 +02:00
Taloth Saldono
7991a3f1c3 Fixed series refresh repeated too often if Sonarr is killed before Scheduled task finishes.
Fixes #735
2015-08-11 22:25:37 +02:00
Taloth Saldono
408991e03c Fixed negative NzbGet DownloadLimit
Fixes #700
2015-08-11 21:52:26 +02:00
Taloth Saldono
5ea954695e Ignore duplicates when using history to identify an existing downloaditem. 2015-08-11 21:46:07 +02:00
Taloth Saldono
648a16c1bb Fixed: Don't check for missing TheXEM numbering when importing existing series. 2015-08-11 21:46:06 +02:00
Keivan Beigi
8090c853ba Added source map to css files 2015-08-11 10:44:21 -07:00
Mark McDowall
809c8a7f37 Log number of episodes, not type 2015-08-10 23:06:19 -07:00
Keivan Beigi
608cb296e6 Fixed phantom build 2015-08-09 12:02:18 -07:00
Mark McDowall
7cf400975e Merge pull request #731 from Mirx/develop
Add Hungarian Language
2015-08-07 23:55:43 -07:00
Mirx
4faf7ed959 New: Hungarian language support
Closes #729
2015-08-08 08:41:22 +02:00
Mark McDowall
25493654ff Removed semi-colon 2015-08-04 16:36:34 -07:00
Mark McDowall
48f70815a3 Fixed: rTorrent category is optional
Fixes: #726
2015-08-04 15:13:57 -07:00
Mark McDowall
a720e5f3b5 Fixed paths for phantom 2015-08-03 15:41:33 -07:00
Taloth Saldono
a84f39bb48 Fixed: Should ignore indexer provided tvrageid when scene naming exception exists. 2015-08-03 23:09:33 +02:00
Keivan Beigi
c56cf8860e Cleaned up project root. 2015-08-02 22:22:22 -07:00
Taloth Saldono
2d968a725c Only list the matching ignored terms in the rejection. 2015-08-02 21:27:19 +02:00
Mark McDowall
b1d0d422e9 New: Support 5-digit multi-episode releases 2015-08-01 23:12:15 -07:00
Mark McDowall
86b748b9eb New: Sonarr logo is optional for Pushalot notifications 2015-08-01 00:51:57 -07:00
Mark McDowall
129d7c9338 Fixed: Series failing to load when there were no seasons 2015-08-01 00:02:52 -07:00
Mark McDowall
7f23d25fcf Merge pull request #644 from Sonarr/twitter-notifications
Twitter notifications
2015-07-31 22:38:29 -07:00
Mark McDowall
b82e830e86 Cleanup and refactoring of Twitter notifications
Closes #301
New: Twitter Notifications
2015-07-31 22:25:05 -07:00
Gavin Mogan
2fbf7a4114 Inital work on Twitter notifications 2015-07-31 22:25:01 -07:00
Taloth Saldono
e05365a669 Added missing property to CommandResource. 2015-08-01 02:41:48 +02:00
Taloth Saldono
44e6c46337 Fixed: Refreshing individual series incorrectly delayed the schedule task.
fixes #720
2015-08-01 01:53:39 +02:00
Taloth Saldono
ecb4835a16 minor pageable code error. 2015-08-01 01:53:37 +02:00
Mark McDowall
8c31af608b Merge pull request #698 from srod/boxcar2
Added Boxcar 2
2015-07-31 11:45:06 -07:00
Rodolphe Stoclin
9b1915a187 New: Boxcar 2 notifications 2015-07-31 20:30:37 +02:00
Mark McDowall
db879426db Fixed backbone.collectionview shim 2015-07-28 23:25:48 -07:00
Taloth Saldono
c274c7d589 Icon now completely hidden if spinner overlay is shown.
Fixed season action margin.
2015-07-28 22:16:22 +02:00
Taloth Saldono
8bd675f9f4 Include indexers name in back-off healthcheck warning. 2015-07-28 22:06:43 +02:00
Taloth Saldono
0a12989a70 Actually added deepmodel shim. 2015-07-28 22:06:41 +02:00
Mark McDowall
5b58bd504d Shim for deepmodel 2015-07-27 22:56:44 -07:00
Keivan Beigi
f4d9e3495a Added shim for _ 2015-07-27 22:34:55 -07:00
Mark McDowall
fcfbfae4c1 Merge pull request #690 from Sonarr/backgrid-pageable-reset
Alter backbone.pageable to stay on same page during fetch
2015-07-27 21:36:12 -07:00
Mark McDowall
3f7ae250c7 AsPageableMixin to make backbone.pageable to stay on same page during fetch
Closes #670
2015-07-27 00:50:20 -07:00
Taloth Saldono
645c9c25d1 Updated spinner visualization. 2015-07-26 22:05:12 +02:00
Taloth Saldono
c8b7446f7c Fixed: Readded series monitoring flag to Season Pass view. 2015-07-26 22:05:11 +02:00
Taloth Saldono
293bc55e58 Added link to existing series in add series view. 2015-07-26 22:05:09 +02:00
Taloth Saldono
7eeabd7ca3 Fixed: Updated libcurl version mappings to use libcurl.4 instead of libcurl.3. 2015-07-26 22:05:08 +02:00
Taloth Saldono
c16d02fc1d Fixed: indexer returning an empty page during the rss sync. 2015-07-26 22:05:06 +02:00
Taloth Saldono
fc75783fbe Rewrote the RequestGenerator to support paging and other refactorings. 2015-07-26 22:04:02 +02:00
Mark McDowall
58b01b91d5 New: Titans of TV tracker 2015-07-24 21:45:09 +02:00
Taloth Saldono
c6c68c0c75 Incorrect number of parameters. 2015-07-23 06:28:20 +02:00
Taloth Saldono
9fe8477a40 Now logging nzb&torrent response sizes. 2015-07-22 20:33:47 +02:00
Taloth Saldono
794a7957ef Show thexem outdated mappings message on the calendar as well. 2015-07-22 19:56:20 +02:00
Taloth Saldono
5c1d683e71 Tooltips are now properly hidden if the element is removed from the dom. 2015-07-22 19:56:19 +02:00
Keivan Beigi
0789ace879 Use IsProduction instead of IsDebug to toggle caching on/off 2015-07-21 20:38:23 -07:00
Keivan Beigi
9b16e3b538 _output folder is considered a non-prodction folder 2015-07-21 19:43:06 -07:00
Keivan Beigi
98acd0d886 Added support for custom UI folder 2015-07-21 19:42:38 -07:00
Keivan Beigi
760469fc5f Added support for live reload 2015-07-21 19:38:46 -07:00
Taloth Saldono
5af12b67be Revert "Fixed: Disabled transactional file transfers since we don't want that feature in master yet."
This reverts commit ada5919136.
2015-07-21 21:26:15 +02:00
Taloth Saldono
a1bfecedcd Removed duplicate test. 2015-07-20 21:29:51 +02:00
Taloth Saldono
f2a70677e4 New: Will now temporarily stop using an indexer if the indexer reported an error. 2015-07-20 21:09:16 +02:00
Taloth Saldono
6d046a8df8 Fixed: Extrapolate scene numbering but won't auto import. 2015-07-20 21:05:48 +02:00
Taloth Saldono
23bd9440b3 Removed duplicate file. 2015-07-20 21:04:55 +02:00
Mark McDowall
0f2bba0615 Custom scripts
New: Run custom scripts (Connection)

Closes #439
2015-07-20 10:49:54 -07:00
Taloth Saldono
492b114510 Added rarbg error code for unknown series. 2015-07-20 18:37:43 +02:00
Taloth Saldono
55412968e0 New: Added auto-detection of indexer capabilities to torznab. 2015-07-20 16:46:40 +02:00
Keivan Beigi
dba359cafe reverted handlebars version 2015-07-18 21:20:32 -07:00
Keivan Beigi
6682266cc9 gulp getSonarr --branch=develop 2015-07-18 18:14:13 -07:00
Keivan Beigi
05dc68d689 Download and start Sonarr using gulp (Can work on UI without VS) 2015-07-18 17:48:59 -07:00
Keivan Beigi
8fede1efc9 updated npm packages 2015-07-18 17:48:10 -07:00
Keivan Beigi
8d85fb15c4 Removed yargs dependency since it fails to install in windows 2015-07-18 12:52:02 -07:00
Keivan Beigi
32d7da91b7 added phantom support in gulp 2015-07-18 11:50:16 -07:00
Taloth Saldono
08ebc8d292 Don't list drives that aren't available. 2015-07-17 23:51:33 +02:00
Taloth Saldono
ada5919136 Fixed: Disabled transactional file transfers since we don't want that feature in master yet. 2015-07-17 20:17:46 +02:00
Taloth Saldono
bfa629f431 Refactored VerifiedFile transfer to have a verified and transactional mode. 2015-07-17 20:16:49 +02:00
Mark McDowall
2a42ad8970 learning to spell 2015-07-17 08:06:41 -07:00
Mark McDowall
08714f79da Renamed Activity to History in episode details modal
Closes #624
2015-07-17 00:15:49 -07:00
Mark McDowall
6983f36f4d New: Show series ratings on series details
Closes #634
2015-07-16 23:41:51 -07:00
Mark McDowall
03cf9a44cf New: Show download client name in GUI notifications
Closes: #642
2015-07-16 23:19:59 -07:00
Mark McDowall
c4fe645c31 Fixes Release restriction validation
Closes #691
2015-07-16 23:08:32 -07:00
Mark McDowall
ea19020015 Fixed: Sorting by timeleft on Activity: Queue 2015-07-16 22:57:10 -07:00
Mark McDowall
346d7f3cf4 Merge pull request #674 from Sonarr/rtorrent-directory
Choose download folder for rTorrent
2015-07-15 22:45:40 -07:00
Mark McDowall
1b65ead75d New: Choose download folder for rTorrent
Closes #626
2015-07-15 22:26:46 -07:00
Mark McDowall
889d3d1207 Formatting 2015-07-13 22:31:20 -07:00
Mark McDowall
3c88f6c452 Double clicking test and save won't retrigger button
Fixed: Double clicking test and save
2015-07-13 21:38:05 -07:00
Mark McDowall
cc6ab0ade1 Fixed: Do not monitor specials when monitoring missing 2015-07-13 18:09:32 -07:00
Taloth Saldono
3ad7673d69 Fixed: Doki rss feed now uses correct url for torrent. 2015-07-13 20:26:00 +02:00
Taloth Saldono
51155ba909 Applied workaround for CurlSharp GC handling. 2015-07-12 23:17:23 +02:00
Taloth Saldono
786e0b825a Fixed curl multithreaded access. 2015-07-12 21:45:22 +02:00
Taloth Saldono
7bc4249ede Fixed regression in QueueService caused by pr650. 2015-07-11 22:49:38 +02:00
Mark McDowall
fd3dda2b16 Fixed: Removing pending releases 2015-07-10 00:18:32 -07:00
Mark McDowall
fa0401fa89 Fixed broken unit test 2015-07-08 23:58:12 -07:00
Mark McDowall
15b215f9c2 Merge pull request #664 from Sonarr/plex-auth-fix
Plex Server Authentication Improvements
2015-07-08 23:41:43 -07:00
Mark McDowall
61de750e05 Update plex token cache when password is changed
Fixed: New plex.tv password not taking effect immediately
Fixed: Prevent an incorrect plex.tv password from locking out account
2015-07-08 23:40:54 -07:00
Keivan Beigi
84ae81efe3 Merge pull request #650 from Kayomani/develop
Allow downloads to be tracked by the source name in addition to the download name
2015-07-08 20:56:23 -07:00
Taloth Saldono
5c6ac2ae8b Removed trello from CONTRIBUTING as well. 2015-07-08 23:23:12 +02:00
Taloth Saldono
265821c9de Removed link to trello. 2015-07-08 22:58:19 +02:00
Taloth Saldono
1eb6629088 Fixed: Updater occasionally killed Sonarr twice before allowing it to be restarted by upstart.
Fixed: Updater killed itself during update on debian jessie.
2015-07-08 20:54:47 +02:00
Taloth Saldono
103de770c3 Fixed thread concurrency issue on http cookie handling. 2015-07-08 20:05:03 +02:00
Taloth Saldono
bf3d0ed2d1 Removed dupe tests. 2015-07-08 20:01:48 +02:00
Mark McDowall
3a84e0fafc Actually commented out now... 2015-07-08 01:21:28 -07:00
Mark McDowall
4b9ec94fcc Broken test that we can use once we have better parsing 2015-07-08 01:19:44 -07:00
Taloth Saldono
067f450486 Fixed: BTN Anime Season search. 2015-07-07 23:06:01 +02:00
Taloth Saldono
dbb3eb0e54 Series is already available in model. 2015-07-07 23:06:00 +02:00
Taloth Saldono
30ab5bc17f New: Added missing absolute episode number warning for anime to calendar view as well.
Fixes #486
2015-07-07 22:51:44 +02:00
Taloth Saldono
8917ea9cc9 Don't log invalid date in rss as Error.
Fixes #635
2015-07-07 22:20:16 +02:00
Taloth Saldono
c5684439f4 Added robots.txt
Fixes #667
2015-07-07 22:13:01 +02:00
Taloth Saldono
d46c170b70 Fixed: Matching anime using full series title instead of cleaned title to be able to detect subtle!! differences`!! in titles!!! 2015-07-07 21:43:34 +02:00
Kayomani
de8deffbd2 New: Downloads can be tracked by the source name in addition to the download name 2015-07-07 00:34:25 +01:00
Taloth Saldono
0578e68a51 Fixed: Sonarr didn't clear scene mappings if a series was removed from TheXEM. 2015-07-04 20:28:46 +02:00
Taloth Saldono
1ac27002e5 Fixed project files. 2015-07-03 22:01:25 +02:00
Taloth Saldono
2f3e444394 Unsaved file. 2015-07-03 21:24:39 +02:00
Taloth Saldono
c02d6c426c Fixed: TorrentRssParser incorrectly detected description element. 2015-07-03 21:21:49 +02:00
Keivan Beigi
102f2e39be Merge pull request #653 from Sonarr/kickass-url-update
Update the kickass url to https://kat.cr
2015-07-02 16:06:17 -07:00
Keivan Beigi
a78381db7d Merge pull request #654 from Sonarr/remove-pending
Fix: When removing pending items from the queue remove all releases for that episode
2015-07-02 11:51:49 -07:00
Keivan Beigi
a143c0b75e Updated migration number to 90 2015-07-01 11:44:43 -07:00
Keivan Beigi
36f97329ff Update the kickass url to https://kat.cr 2015-07-01 11:40:05 -07:00
Keivan Beigi
b5b15b623a Updated FluentAssertion to 3.4.0 2015-07-01 11:39:43 -07:00
Keivan Beigi
724a3eee45 Fix: When removing pending items from the queue remove all releases for that episode 2015-07-01 01:50:55 -07:00
Keivan Beigi
80403a4021 Updated readme.md
Switched from VS Express to community
Added steps for grabbing submodules.
2015-07-01 01:24:54 -07:00
Mark McDowall
14b9a031bb Show warning message for rTorrent that it doesn't support torrent removal 2015-06-28 14:06:03 -07:00
Mark McDowall
873fadbcaa Fix the build 2015-06-28 14:04:51 -07:00
Mark McDowall
370406c3de Use a list for ChannelTags and DeviceIds in Pushbullet settings 2015-06-28 12:45:15 -07:00
Taloth Saldono
461be2b388 Removed eztv migration tests. 2015-06-28 20:15:17 +02:00
Taloth Saldono
dc75c44a50 Removed HDAccess.net torznab preset since the site has stopped. 2015-06-28 18:09:37 +02:00
Taloth Saldono
c9d0bc7148 Fixed: Removed Eztv-like api support entirely since TorrentRss is now available. 2015-06-28 18:09:37 +02:00
Mark McDowall
77e9493ccf Improved PushBullet implementation (v2 API, multiple devices, channels)
New: PushBullet supports multiple devices
New: PushBullet channels

Closes #641
2015-06-28 01:50:19 -07:00
Mark McDowall
120be567d3 Merge pull request #647 from mike-tesch/patch-1
Fix spelling mistake in UpdateApp.cs
2015-06-27 20:21:28 -07:00
Michael Tesch
cce82d38c0 Update UpdateApp.cs
Spelling fix
2015-06-27 19:20:51 -06:00
Taloth Saldono
527122452c New: Fallback to libcurl/libssl on mono for https connections. 2015-06-27 01:44:23 +02:00
Taloth Saldono
c4430ab4de MediaInfo Dispose only when handle was created. 2015-06-27 01:03:08 +02:00
Taloth Saldono
c9f720885e Fixed: Renaming episodes on OSX with case-insensitive filesystem. 2015-06-27 01:03:07 +02:00
Mark McDowall
bd222dbd95 Fixed: Updating empty Kodi library 2015-06-24 20:58:56 -07:00
Mark McDowall
c9ef0951bc Clear scrollbars on window resize 2015-06-21 23:42:55 -07:00
Mark McDowall
6f8cbc22be Upgrade to Bootstrap 3.3.5 2015-06-21 23:19:24 -07:00
Mark McDowall
2b6bac8104 Remove calendar header padding for scrollbar 2015-06-21 23:08:35 -07:00
Mark McDowall
a9ada8fcf1 Cleanup tabs 2015-06-21 22:56:00 -07:00
Mark McDowall
c7f56c1091 Fix ambiguous calls when compiling under mono 2015-06-20 14:58:49 -07:00
Mark McDowall
7d0ba9dd2b Fixed: Series poster controls 2015-06-18 22:52:52 -07:00
Taloth Saldono
f3d31c3ea1 Fixed btn tests. 2015-06-18 09:18:25 +02:00
Taloth Saldono
2c472d6e3e Fixed: BTN will now use http/https for grabbing downloads as specified by the settings instead of by the feed. 2015-06-18 09:09:58 +02:00
Mark McDowall
54a6f7c05b Ignore OS X metadata files in repo 2015-06-17 22:28:02 -07:00
Mark McDowall
754237c57b Remove scrollbar from calendar 2015-06-16 23:40:54 -07:00
Mark McDowall
0c56fddecf Upgrade FullCalendar and MomentJS
Close #469
2015-06-16 19:17:46 -07:00
Mark McDowall
a7523ed462 Upgraded bootstrap to 3.3.4 2015-06-16 18:25:51 -07:00
Taloth
51f705d89a Merge pull request #139 from Sonarr/verified-file-transfer
Verified file transfer
2015-06-16 22:36:18 +02:00
Taloth Saldono
569ef09f39 Updated Rarbg to api v2.
fixes #752
ref rarbg/torrentapi#1
2015-06-16 21:38:52 +02:00
Mark McDowall
71f3435026 Fixed: Downloading progress won't cutoff series title prematurely
Closes #620
2015-06-14 21:15:22 -07:00
Mark McDowall
7e89bcca38 Clean up some warnings 2015-06-14 21:08:30 -07:00
Mark McDowall
92cff8c4cc OS Agnostic Paths 2015-06-13 00:53:34 -07:00
Mark McDowall
4c1e211675 Fixed: Speed up disk rescaning during series refresh 2015-06-13 00:42:16 -07:00
Mark McDowall
3df5d9444b Fixed: Next airing on series list 2015-06-09 00:32:17 -07:00
Mark McDowall
c42e322949 seasonNumber not season 2015-06-07 23:45:37 -07:00
Mark McDowall
963f1a168e Refresh using sort order 2015-06-07 23:33:08 -07:00
Mark McDowall
36629242d1 Fixed: Size on disk display 2015-06-07 23:32:22 -07:00
Mark McDowall
408ff983cf Use protocol agnostic URLs for images on add series
Closes #583
2015-06-07 21:28:21 -07:00
Mark McDowall
92b87b9d21 Fixed: Improved error messaging for manual import 2015-06-07 14:09:49 -07:00
Mark McDowall
c9f1039ab4 Poster x-class 2015-06-07 11:15:54 -07:00
Mark McDowall
3c52a9066c New: Reload fanart and poster on series details after images are downloaded 2015-06-07 09:51:29 -07:00
Mark McDowall
4c3c705517 Fix error when season stats are missing 2015-06-07 02:14:40 -07:00
Mark McDowall
5a2fa41af7 New: Search for newly added past episodes after series is refreshed
Closes #503
2015-06-07 01:15:41 -07:00
Mark McDowall
27980b2cd6 Merge pull request #546 from Sonarr/season-pass
Season pass supports multi-select and new toggling options
2015-06-06 23:58:29 -07:00
Taloth Saldono
fc572500e4 Improved season pass styling 2015-06-06 23:55:32 -07:00
Mark McDowall
155c82c199 Season pass overhaul
New: Season Pass supports multi-select
New: Improved Season Pass toggling

Closes #396
2015-06-06 23:55:21 -07:00
Taloth Saldono
28e2cf97da Fixed typo in UI. 2015-06-06 16:05:41 +02:00
Mark McDowall
acaa07c69d Fixed: Calendar not showing some items on the last day of the week 2015-06-06 00:09:22 -07:00
Mark McDowall
6fd7a64330 GetCurrentProcessId for PidFileProvider 2015-06-05 23:12:41 -07:00
Taloth Saldono
546f4ab577 Disabled verified file transfer on windows. 2015-06-05 22:51:16 +02:00
Taloth Saldono
5effca92b8 New: Now checks the file size of moved episodes to verify if the transfer was completed successfully to be able to detect errors with mounted network storage. 2015-06-05 21:59:41 +02:00
Taloth Saldono
aa4fca7177 Fixed: Torznab advanced setting 'Enable RageID Lookup' had wrong UI type.
fixes #599
2015-06-05 19:05:21 +02:00
Mark McDowall
860d7ed079 New: Support for SSL connections to Plex Media Server 2015-06-04 14:10:38 -07:00
Mark McDowall
eb8af60029 Strict parsing of anime releases that have a number at the end of the episode title 2015-06-04 13:58:25 -07:00
Mark McDowall
225489738d Suppress warnings for free space check on fixed disks 2015-06-04 13:58:24 -07:00
Taloth Saldono
ccff4fe142 Fixed: Size Parsing in TorrentRss was a bit too tolerant.
fixes #590
2015-06-04 21:08:44 +02:00
Taloth Saldono
cd5b00afa8 Disabled unstable CI integration tests. 2015-06-03 22:13:13 +02:00
Taloth Saldono
866f971d41 Prevent ProgressMessageTarget from ever reading the command from the database. 2015-06-03 20:34:33 +02:00
Mark McDowall
6d18b37a94 Fixed: Exiting from tray icon 2015-06-02 22:43:45 -07:00
Mark McDowall
de3ba041f2 Fixed: Editing episode file quality 2015-06-02 22:12:41 -07:00
Mark McDowall
a2d8413b2a Fixed: Early cleanup of completed tasks 2015-06-02 21:37:28 -07:00
Taloth Saldono
1fbbfb3317 Fixed: A bug caused way too much data being read during MediaInfo discovery (often the entire file).
Fixed: Further optimized the MediaInfo discovery to reduce the read data to a couple of dozen kbytes, but less detailed.
2015-06-02 22:03:47 +02:00
Taloth Saldono
724981db57 Fixed: Added x/h265 to renamer. 2015-06-02 21:43:41 +02:00
Mark McDowall
aae3970865 More logging for CommandExecutor 2015-06-02 00:18:34 -07:00
Mark McDowall
49718fbfbe Merge pull request #563 from Sonarr/plex-partial-updates
Support for updating single series in Plex Library
2015-05-31 22:30:47 -07:00
Mark McDowall
587ad5beb5 New: Support for updating single series in Plex Library 2015-05-31 22:29:37 -07:00
Mark McDowall
4de20b09a8 Better validation messaging for Newznab Categories 2015-05-31 00:35:25 -07:00
Mark McDowall
f7adb19474 Ignore more signalr non-errors 2015-05-31 00:10:45 -07:00
Taloth Saldono
a1ff7cbef0 And added a test for it. 2015-05-29 20:55:38 +02:00
Taloth Saldono
1cc6ad0d5f Fixed transmission returning -1 as Eta. 2015-05-29 20:50:35 +02:00
Taloth Saldono
aa78807ee2 Fixed transmission returning -1 as Eta. 2015-05-29 20:48:11 +02:00
Mark McDowall
5fda64de66 Shift select range on Missing/Cutoff Unmet 2015-05-28 16:46:52 -07:00
Taloth Saldono
75a50b83fb Updated Rarbg to use ratelimit service. 2015-05-29 01:10:50 +02:00
Taloth Saldono
78ade3250c Added RateLimit service to globally manager short duration ratelimits. 2015-05-29 01:10:49 +02:00
Mark McDowall
fac6b05bb4 Updated MediaInfo to 0.7.74 (Windows and OS X)
Closes #495
2015-05-27 00:34:46 -07:00
Taloth Saldono
39aef8bed5 Merge branch 'torrentrss' into develop 2015-05-27 08:03:04 +02:00
Taloth Saldono
99e9e4f5fd Merge branch 'rarbg-support' into develop 2015-05-27 08:02:38 +02:00
Taloth Saldono
70544738ed Merge branch 'metadata-creation' into develop 2015-05-27 08:01:01 +02:00
Lars
90469630d1 rTorrent: Fix load commands 2015-05-27 07:09:43 +02:00
Taloth
7a74327761 Merge pull request #565 from larsjohnsen/rtorrent-fixes
rTorrent: Update method names, enable compression on XMLRPC
2015-05-26 19:48:15 +02:00
Taloth Saldono
ba2da07c2f Added tests and refactored TorrentRss code. 2015-05-26 19:42:22 +02:00
Lars
5363a9e8d7 rTorrent: Update method names, enable compression on XMLRPC 2015-05-26 09:32:44 +02:00
Mark McDowall
4010a5336c Version and product for MyPlex Authentication 2015-05-25 22:08:35 -07:00
Michel Zehnder
9d7522cc15 New: Add generic TorrentRssIndexer support.
Add support for generic RSS feeds. Parses the feed and tests if it is
EZTV compatible, or if it has all required fields for the generic
TorrentRssParser
2015-05-25 22:49:58 +02:00
Mark McDowall
a090ed8b5e Support for Season xx Episode yy multi-episode format 2015-05-25 11:25:03 -07:00
Taloth Saldono
6b9c686390 Fixed tests. 2015-05-25 14:31:53 +02:00
Taloth Saldono
6744e0d506 New: Added support for Rarbg as replacement for Eztv. 2015-05-25 14:28:32 +02:00
Mark McDowall
bbcabf0632 Fixed: Don't use folder quality when it is unknown and file quality is
Closes #560
2015-05-24 23:18:57 -07:00
Taloth Saldono
b540307dbd Fixed: Series/season metadata also created on episode import. 2015-05-25 01:36:29 +02:00
Taloth Saldono
4a6778c609 HDBits fixup. 2015-05-25 00:55:30 +02:00
scherzo
3ae2883eb5 New: Add support for the HDBits torrent tracker.
The indexer implementation borrows heavily from the BroadcastTheNet
implementation as HDBits also provides a JSON API that can be used
to query both the recent torrents and the catalog.
2015-05-25 00:00:50 +02:00
Taloth Saldono
dc91fa0206 Fixed: Added /transmission/ part to UrlBase in Transmission settings making it configurable.
fixes #556
2015-05-24 12:54:50 +02:00
Mark McDowall
fb02499823 Fixed: Parsing of season and episode inside square brackets
Closes: #501
2015-05-23 22:12:30 -07:00
Mark McDowall
f4b9d0336d Log signalR errors as trace when they are network connection aborted
Closes #498
2015-05-23 21:38:53 -07:00
Mark McDowall
49acae0fbb Make sure URL base doesn't start with http or https
Closes #532
2015-05-21 17:12:33 -07:00
Mark McDowall
f547cfd0c9 Merge pull request #553 from larsjohnsen/settings-bind-address-fix
Settings: Remove misleading placeholder, fix error-message
2015-05-21 16:47:24 -07:00
Taloth Saldono
1bdc1acddd Fixed tiny cosmetic in rTorrent settings. 2015-05-21 22:10:06 +02:00
Taloth Saldono
267b54fd8b Merge branch 'qualitysize' into develop 2015-05-21 21:57:34 +02:00
Taloth Saldono
527663e27e Merge branch 'upstart-update' into develop 2015-05-21 21:57:30 +02:00
Taloth Saldono
310b788352 Merge branch 'pr/n222_larsjohnsen' into develop 2015-05-21 21:56:19 +02:00
Taloth Saldono
7d23f24854 New: Hand-off update logic to handle upstart/systemd and other auto-restart mechanisms. 2015-05-21 21:54:08 +02:00
Taloth Saldono
ab1e82414b Fixed: Unlimited MaxSize and increased granularity.
fixes #337
2015-05-21 20:44:45 +02:00
Lars
00ba19d683 Settings: Remove misleading placeholder, fix error-message 2015-05-21 04:31:01 +02:00
Taloth Saldono
e5278a0243 Added advanced torznab option to disable rageid lookups for trackers only supporting title queries. 2015-05-19 21:29:57 +02:00
Mark McDowall
7c246abc88 Fix torrent blacklisting when InfoHash is available 2015-05-17 16:20:51 -07:00
Mark McDowall
475f4244c4 Recent folders for add series now show clickable cursor 2015-05-17 16:10:10 -07:00
Mark McDowall
f57dea7f1f New: Store last 5 used folders from manual import 2015-05-17 16:07:27 -07:00
Taloth Saldono
f1a5261e0a Properly dispose filestream after getting mediainfo. 2015-05-17 18:48:00 +02:00
Taloth Saldono
fe5cb9503c Updated kickass url... again 2015-05-16 01:11:39 +02:00
Your Name
4b9664d82a Download clients: New client rTorrent 2015-05-15 21:45:12 +02:00
Taloth
944a775625 Merge pull request #540 from larsjohnsen/source-misc-xbuild-support
Compilation: Misc changes to support XBuild
2015-05-15 19:34:46 +02:00
Lars Johnsen
c8c17bce7e Compilation: Misc changes to support XBuild 2015-05-15 19:07:52 +02:00
Mark McDowall
366e3ed0be Merge pull request #539 from larsjohnsen/source-case-inconistancies
Compilation: Fix case inconsistencies
2015-05-15 09:10:05 -07:00
Taloth
cef6eb7509 Merge pull request #544 from Sonarr/mediainfo-unicode
Integrated MediaInfo wrapper to be able to properly handle Unicode
2015-05-15 10:40:45 +02:00
Mark McDowall
f88e2e2b79 Fix tests 2015-05-14 18:35:13 -07:00
Mark McDowall
57bcc9f4c1 Don't filter excluded files twice 2015-05-14 18:33:44 -07:00
Mark McDowall
69dd1c6ec4 Test to make sure we scan files in root of series folder (no season folders) 2015-05-14 18:23:57 -07:00
Mark McDowall
761a106fa9 Use HTTPS for piwik when loading via HTTPS 2015-05-14 13:24:24 -07:00
Taloth Saldono
5cd2d71e6f Integrated MediaInfo wrapper to be able to properly handle Unicode on Linux. 2015-05-14 13:31:05 +02:00
Mark McDowall
96578ca59b Stricter rejection of series subfolders
Fixed: Exclude .@__thumb folders from series disk scans

Fixes #538
2015-05-13 21:13:13 -07:00
Mark McDowall
213f905767 Only make manual import cells clickable when previous steps have been done 2015-05-13 08:45:40 -07:00
Mark McDowall
9d980a8ac7 Manual Import sends progress messages 2015-05-13 08:05:23 -07:00
Mark McDowall
c4e1a732dd Remove Kodi specific settings from PHT Settings 2015-05-13 08:01:39 -07:00
Mark McDowall
9f73b2b7f0 DotSolutions update 2015-05-12 17:08:10 -07:00
Mark McDowall
149c149094 Select input for select series in manual import 2015-05-12 17:07:56 -07:00
Mark McDowall
ee224cb422 Modal Regions inherit from a common base 2015-05-12 16:57:30 -07:00
Mark McDowall
335be1c85d Interval for RSS is minutes 2015-05-12 14:40:52 -07:00
Lars Johnsen
a79fc94a54 Compilation: Fix case inconsistencies 2015-05-12 23:17:51 +02:00
Mark McDowall
c3acfe34fe Fixed: Exclude OS X Metadata files when scanning for files
Fixes #533
2015-05-12 11:05:11 -07:00
Taloth Saldono
6e7a2af86b Ignore unicode test for now, fails on tc. 2015-05-12 01:42:11 +02:00
Keivan Beigi
cce280d260 HashAlgorithm.ComputerHash isn't thread safe, 2015-05-11 16:07:09 -07:00
Taloth Saldono
852f97012f Fixed broken test. 2015-05-12 01:05:15 +02:00
Taloth Saldono
f221b00795 Kickass Verified Only flag no longer an Advanced option to increase visibility. 2015-05-12 00:30:49 +02:00
Taloth Saldono
429298c68c Fixed manual import of unknown episodes. 2015-05-12 00:30:47 +02:00
Taloth Saldono
af060d73cc Updated MediaInfo code for syno/linux. 2015-05-12 00:30:45 +02:00
Taloth Saldono
e98a174884 Fixed: Fetching multiple pages for kickass to get more releases on the recent/rss feed due to small page size. 2015-05-12 00:30:43 +02:00
Mark McDowall
92a23d0f8b Casing for button text 2015-05-11 10:04:55 -07:00
Mark McDowall
d5ba11bd51 Merge pull request #245 from Sonarr/skyhook-search
Use skyhook for searching
2015-05-10 17:33:22 -07:00
Mark McDowall
a8aac36379 Use skyhook for searching 2015-05-10 17:32:52 -07:00
Thirrian
23c6da4746 Title case for buttons 2015-05-10 11:07:04 +02:00
Taloth Saldono
cf9391a7a3 Updated Container to handle Singleton Implementations instead of Singleton Interfaces. 2015-05-09 21:36:48 +02:00
Taloth Saldono
d0bf539a73 Fixed: A season pack import taking a long time should no longer cause the download to be deleted prematurely. 2015-05-09 10:10:16 +02:00
Mark McDowall
95bd82778f Transform buttons to title case 2015-05-08 07:50:46 -07:00
Mark McDowall
b73413f189 Prefix relative dates with "in" where appropriate 2015-05-07 16:39:48 -07:00
Mark McDowall
df4604057e Releases instead of reports (but no results found) 2015-05-07 10:17:26 -07:00
Taloth Saldono
1e2ba691ed Don't run DownloadCompletedEvent if DownloadItem not Completed. 2015-05-05 21:53:20 +02:00
Taloth Saldono
6abda8adef New: Added HD4Free.xyz to Torznab presets since that site now supports it. 2015-05-05 21:49:16 +02:00
Mark McDowall
84128482f4 Its a good idea to remove testing elements before merging 2015-05-05 12:45:35 -07:00
Mark McDowall
a184021621 Merge pull request #244 from Thirrian/sort-exception-fix
Fix for #242
2015-05-05 09:44:50 -07:00
Thirrian
c4f8e44f55 Fix for #242
Missing comma!
2015-05-05 18:04:44 +02:00
Mark McDowall
b359e1c175 Merge pull request #215 from Sonarr/manual-import
Manual Import
2015-05-05 08:42:24 -07:00
Mark McDowall
6dd22e7dcb New: Manual Import episodes 2015-05-05 08:41:39 -07:00
Mark McDowall
29ca1bc9da Merge pull request #238 from Sonarr/blacklisting-v2
Improved Blacklisting
2015-05-05 08:40:36 -07:00
Mark McDowall
bc03ad2a18 Blacklisting torrents and using more info to evaluate matches
New: Blacklisting torrents manually
New: Details on why a release was blacklisted in the UI
New: Blacklist matching take into account indexer, size, date and name
2015-05-05 08:39:41 -07:00
Mark McDowall
14f49489a7 Merge pull request #243 from Thirrian/tiny-ui-fix
Move error div inside body tag
2015-05-05 08:38:07 -07:00
Mark McDowall
4356da039f Merge pull request #242 from Thirrian/sort-exception
Add sort key for series "A.D. The Bible Continues"
2015-05-05 08:37:49 -07:00
Mark McDowall
587aff602a Fixed: Don't delete downloads unless a file was imported 2015-05-05 08:37:11 -07:00
Mark McDowall
1275d8098d New: Limit grabs to 1 per second to reduce rapid API calls 2015-05-05 08:15:38 -07:00
Mark McDowall
0c6ca6971d Fixed: Do not replace a file unless it contains the same episodes 2015-05-05 07:29:38 -07:00
Thirrian
f5fde97f68 Move error div inside body tag 2015-05-05 14:13:22 +02:00
Thirrian
50dc4c4f3d Add sort key for series "A.D. The Bible Continues" 2015-05-05 13:55:50 +02:00
Taloth Saldono
c08d8252ff Fixed some tests. 2015-05-04 01:30:16 +02:00
Taloth Saldono
2a83088045 Changed the way the Database is registered with TinyIoC to make Logdb and future cachedb more accessible. 2015-05-04 00:50:10 +02:00
Taloth Saldono
4ca8178ca8 Add db name to Vacuum log message. 2015-05-03 20:52:07 +02:00
Mark McDowall
bb48491eb2 Merge pull request #230 from Chao-Man/develop
Fixed scrolling performance issues on Webkit based browsers.
2015-05-02 10:25:51 -07:00
Chao Man
0534fb4330 Fixed scrolling performance issues on Webkit based browsers. (Opera, Chrome, Safari)
Update theme.less

Rebased and added markus101's changes.
2015-05-02 18:40:05 +10:00
Mark McDowall
8b7eedf6f9 Actually make it lower case... 2015-05-02 01:23:04 -07:00
Mark McDowall
6ab629ea98 Partial updates for command updates 2015-05-01 22:03:20 -07:00
Taloth Saldono
97cbdfdc5c Fixed: Nzbget will now properly remove data from original directory if Remove option is enabled. (nzbToMedia transcoding) 2015-05-02 00:28:47 +02:00
Taloth Saldono
25c77711cd Log partial indexer response on parser error. 2015-05-01 23:51:31 +02:00
Mark McDowall
2e6cf2b7f6 Fixed: Parsing some anime releases with multiple absolute episode numbers 2015-04-30 07:08:55 -07:00
Mark McDowall
6592310f2b Permissions can cause OWIN port registration to fail 2015-04-28 07:31:22 -07:00
Mark McDowall
918fcac2aa Fixed: Generic SignalR messages no longer treated as errors 2015-04-28 07:28:05 -07:00
Mark McDowall
4b7ee3cb9e Fixed: Monitoring options not be applied when adding a new series to an empty root folder 2015-04-28 07:13:11 -07:00
Mark McDowall
27246de623 Fixed: Ignore @eaDir inside Series folders 2015-04-27 17:07:22 -07:00
Mark McDowall
b1a0e759ef Fixed: Long sets of required/ignored words would overflow the view in Manual Search 2015-04-27 16:57:38 -07:00
Mark McDowall
f90fdef50d Couple name fixes 2015-04-26 01:21:54 -07:00
Mark McDowall
702b4429ac Order provider based settings by name 2015-04-26 00:25:40 -07:00
Mark McDowall
4eff8d88d1 New: Show age in minutes when less than 2 hours old (manual search/history) 2015-04-26 00:11:23 -07:00
Mark McDowall
235a986679 Display names for Download clients 2015-04-25 09:25:33 -07:00
Mark McDowall
c3e0dbc173 Display names for Indexers 2015-04-25 09:25:18 -07:00
Mark McDowall
e296d94417 Set default Metadata name 2015-04-25 09:10:43 -07:00
Mark McDowall
0e865fff8c No longer titlecases notifications, indexers, etc 2015-04-25 09:03:07 -07:00
Mark McDowall
9a629c2fc6 Display names for Notifications 2015-04-25 09:02:17 -07:00
Mark McDowall
ecd941a6e5 Fixing scene mappings 2015-04-23 06:36:51 -07:00
Mark McDowall
2feb583e45 Show reload when already on updates page 2015-04-22 14:49:34 -07:00
Taloth Saldono
23daae05cc Remove invalid scene mappings. 2015-04-22 20:18:04 +02:00
Taloth Saldono
b4e8a39c2c New: Added Color-Impaired mode to UI settings. 2015-04-22 19:10:07 +02:00
Mark McDowall
2f7e3c1c3c Merge pull request #240 from Royal2000H/develop
Pushbullet settings typo
2015-04-22 09:21:13 -07:00
Mark McDowall
8a0e873eb5 Fixed: URL Base for favicon and Apple Touch icons 2015-04-22 07:52:19 -07:00
Mark McDowall
10214bff42 Cleanse some names 2015-04-22 07:52:07 -07:00
Roy Handelsman
1fc99fd24e Fixed: Pushbullet settings typo 2015-04-22 00:03:42 -04:00
Mark McDowall
e40508e5e9 Fixed: Don't save invalid scene mappings into database 2015-04-21 16:53:32 -07:00
Mark McDowall
65f1dbde00 Fixed: Torznab parsing when enclosure is magent link 2015-04-19 13:13:14 -07:00
Mark McDowall
4c9f13cb26 Fixed: Testing indexers, connections and download clients 2015-04-18 22:56:36 -07:00
Mark McDowall
f831dbd789 Merge pull request #237 from Sonarr/osx-package-execute
Set permissions on Sonarr.app (OS X)
2015-04-18 11:14:55 -07:00
Mark McDowall
f18ad21b48 Fixed: Set permissions on Sonarr.app (OS X) 2015-04-18 11:12:53 -07:00
Mark McDowall
61ae7dc189 Merge pull request #236 from Sonarr/db-locks
DB locking due to Progress Messaging
2015-04-18 11:09:16 -07:00
Mark McDowall
e304a615d0 Fixed: DB locking due to Progress Messaging 2015-04-18 11:08:07 -07:00
Mark McDowall
c12f16b6d3 Mapped Network Drive Validator
New: Prevent adding Mapped Network Drives when Running as a Windows Services
2015-04-15 23:50:19 -07:00
Mark McDowall
c43296ffe9 Merge pull request #231 from Sonarr/unmonitored-calendar
Unmonitored episodes on calendar
2015-04-14 20:37:02 -07:00
Mark McDowall
ab6233dd3f New: Option to show unmonitored episodes on calendar 2015-04-14 20:35:55 -07:00
Mark McDowall
2a4fd2bbde Fixed: Better error messaging when import fails due to inaccessible path 2015-04-14 20:35:07 -07:00
Mark McDowall
c3d15015fe Fixed: Table pagers show correct loading icon 2015-04-14 20:35:06 -07:00
Mark McDowall
f30e7bc701 jshint in WebStorm 10 2015-04-14 20:35:05 -07:00
Taloth Saldono
ee87537848 Response cookies not stored by default. 2015-04-13 23:44:24 +02:00
Taloth Saldono
d4532c3856 Fixed: MediaInfo now also works on linux with unicode filenames. 2015-04-11 13:28:37 +02:00
Taloth Saldono
20e40f73b3 Made optional resource properties nullable. 2015-04-11 09:15:15 +02:00
Taloth Saldono
923488bc02 Hard test on dev nzbget version as requested. 2015-04-11 09:07:35 +02:00
Taloth Saldono
b62d36bdbe Fixed: If Nzbget failed to add an nzb, Sonarr will try another but not blacklist it. 2015-04-11 09:03:35 +02:00
Mark McDowall
62f4fc5e58 Fixed: Some anime season 1 parsing 2015-04-10 07:32:34 -07:00
Mark McDowall
cfefed34fc API endpoint to parse a release title 2015-04-10 07:30:06 -07:00
Mark McDowall
c58d607349 Don't throw error when episode title matching doesn't find a match 2015-04-09 16:48:13 -07:00
Mark McDowall
f13a4b5aa5 New: Sort queue by series, episode and episode title 2015-04-08 16:43:51 -07:00
Mark McDowall
9cf575c096 New: Toggle selected on Wanted: Missing to change monitored status 2015-04-07 16:49:36 -07:00
Mark McDowall
2c52ac1a7b Fixed: Rename preview for Specials 2015-04-07 16:19:06 -07:00
Mark McDowall
7e0c833ad0 New: Show quality in dropdowns with best at top (same as profiles) 2015-04-07 16:18:56 -07:00
Mark McDowall
7f38617d76 Fixed: Wrap long release names in history details 2015-04-07 15:54:40 -07:00
Mark McDowall
8aa6969aee Fixed: Improved special episode parsing for multiple matching titles 2015-04-06 18:43:29 -07:00
Mark McDowall
0adea0ded6 Search all missing fixes
Fixed: Searching for missing episodes excludes unmonitored episodes
Fixed: Searching for missing episodes episodes with files
2015-04-06 17:05:12 -07:00
Taloth Saldono
ccfd66260d Fixed: BitMeTv cookie will now also be used for the fetching the torrent file. 2015-04-02 21:06:05 +02:00
Taloth Saldono
a6d2283be8 New: Added Advanced option to Nyaa to change query parameters for category and filter. 2015-04-02 19:52:38 +02:00
Taloth Saldono
b92cc6fb15 Fixed: No longer possible to add protocol to a Host field (that's what Url fields are for) 2015-04-02 19:52:37 +02:00
Taloth Saldono
f2ec02876b Fixed notification enable logic and test when On Upgrade is disabled. 2015-04-02 19:52:37 +02:00
Mark McDowall
7378a98e07 Fixed icon colours 2015-03-30 00:02:47 -07:00
Taloth
42a3ff2625 Merge pull request #206 from Sonarr/osxfullfsync
Changed sqlite to use full fsync on osx
2015-03-28 12:23:24 +01:00
Taloth Saldono
4448e87e28 Fixed: NzbGet development version no longer fails validation check. 2015-03-26 20:09:03 +01:00
Mark McDowall
90b047f0d4 Fixed: Searching for unmonitored anime episodes during season/all missing searches 2015-03-26 09:06:20 -07:00
Mark McDowall
adfaa00ce1 Toggle cell use spinForPromise 2015-03-26 08:03:31 -07:00
Mark McDowall
755a42ea45 Use cache to check for running or started commands 2015-03-25 16:47:05 -07:00
Mark McDowall
210524b51a Fixed: Scene numbered season searches when some episode weren't monitored 2015-03-25 16:47:04 -07:00
Mark McDowall
a1a91878ad New: Choose the latest season when adding a new series 2015-03-25 16:47:03 -07:00
Mark McDowall
216286db5e Fixed: navbar hover mobile styling 2015-03-25 16:47:01 -07:00
Taloth Saldono
061c40c8f4 It is Not an Error Message 2015-03-25 01:39:40 +01:00
Taloth Saldono
15eeb19cd5 New: Synology Media Indexer support in Connect. 2015-03-24 20:09:12 +01:00
Taloth Saldono
93c6047cd5 Added Nzbget version check for 12.0 or higher. 2015-03-23 20:56:35 +01:00
Taloth Saldono
db4746bef7 Failed DeleteStatus now only a Warning, also added null check to handle older NzbGet version. 2015-03-23 20:56:32 +01:00
Taloth Saldono
971e159fa4 Replaced a couple more NzbDrone with Sonarr. Left a couple that implied process name. 2015-03-23 20:56:28 +01:00
Mark McDowall
a4deea2333 Merge pull request #229 from BrendenCA/fixtypo
Fixed a typo
2015-03-22 21:37:44 -07:00
BrendenCA
6114952012 Fixed a typo 2015-03-23 09:33:53 +05:30
Taloth Saldono
fcc1439754 Ugly indexer release name cleaned up before sending to Sab. 2015-03-21 00:55:30 +01:00
Mark McDowall
06a2cb0de4 New: Restrict ports that Sonarr will allow for its webserver 2015-03-18 23:15:20 -07:00
Taloth Saldono
9dd66879a2 Fixed: Better handling for Remote NAS errors. 2015-03-19 01:17:52 +01:00
Taloth Saldono
5d03c94b26 Fixed typo 2015-03-19 01:17:51 +01:00
Mark McDowall
679455713e Fixed: sorting on episode list when new episodes are added during refresh 2015-03-18 16:14:44 -07:00
Mark McDowall
9aeda7aaba Fixed: Legitimate API redirects 2015-03-18 15:27:36 -07:00
Mark McDowall
ca8e16a5be Merge pull request #227 from c0unt0/develop
Allow startup on case sensitive file systems
2015-03-18 15:00:32 -07:00
Alex
52ec1cf1b1 Allow startup on case sensitive file systems
Fixed EXE_PATH to match NzbDrone.exe’s capitalisation.
2015-03-18 21:03:19 +00:00
Mark McDowall
1efb7446c9 Log full path when moving or copying 2015-03-18 13:51:21 -07:00
Mark McDowall
c5f2c2823e Separate log messages for hardlinking and copying 2015-03-18 13:18:34 -07:00
Mark McDowall
beb4aee4c9 Merge pull request #190 from Sonarr/command-queue
Command queue
2015-03-16 22:20:53 -07:00
Mark McDowall
638e3ca898 Command queue
New: Adding multiple series will queue them instead of running all at once
New: Slower scheduled tasks won't be block others from running
2015-03-16 22:07:02 -07:00
Taloth Saldono
dea58ed663 Fixed: Changed sqlite to use full fsync on osx to reduce the chance of corruption at the cost of some performance. 2015-02-18 19:28:10 +01:00
2100 changed files with 90479 additions and 47957 deletions

25
.editorconfig Normal file
View File

@@ -0,0 +1,25 @@
# This file is for unifying the coding style for different editors and IDEs
# editorconfig.org
root = true
[*.{cs,html,js,hbs}]
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 4
[*.less]
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 2
# They have troubles with TABS. Use 2 spaces
[{package.json,.travis.yml}]
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 2

7
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,7 @@
Provide a description of the feature request or bug, the more details the better.
When possible include a log!
Please use our [Discord server](https://discord.gg/NWYch8M) for support or longer discussions.

14
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,14 @@
#### Database Migration
YES | NO
#### Description
A few sentences describing the overall goals of the pull request's commits.
#### Todos
- [ ] Tests
- [ ] Documentation
#### Issues Fixed or Closed by this PR
*

29
.gitignore vendored
View File

@@ -10,6 +10,7 @@ src/**/[Oo]bj/
*.suo
*.user
*.sln.docstates
.vs/
# Build results
*_i.c
@@ -41,6 +42,9 @@ src/**/[Oo]bj/
_ReSharper*
_dotCover*
# DevExpress CodeRush
src/.cr/
# NCrunch
*.ncrunch*
.*crunch*.local.xml
@@ -97,7 +101,7 @@ App_Data/*.ldf
_NCrunch_*
_TeamCity*
# NzbDrone
# Sonarr
config.xml
nzbdrone.log*txt
UpdateLogs/
@@ -105,7 +109,7 @@ UpdateLogs/
*.test-cache
*.userprefs
*/test-results/*
.idea/*
src/UI/.idea/*
*log.txt
node_modules/
_output*
@@ -113,13 +117,28 @@ _rawPackage/
_dotTrace*
_tests/
*.Result.xml
wix/*.msi
wix/*.wixobj
wix/*.wixpdb
setup/Output/
*.~is
UI.Phantom/
#VS outout folders
bin
obj
output/*
#Packages
Radarr_*/
Radarr_*.zip
Radarr_*.gz
#OS X metadata files
._*
.DS_Store
_start
_temp_*/**/*
#AppVeyor
/tools-cake/
/_artifacts/

4
.gitmodules vendored Normal file
View File

@@ -0,0 +1,4 @@
[submodule "src/ExternalModules/CurlSharp"]
path = src/ExternalModules/CurlSharp
url = https://github.com/Sonarr/CurlSharp.git
branch = master

1
.idea/.name generated Normal file
View File

@@ -0,0 +1 @@
Sonarr

25
.idea/Sonarr.iml generated Normal file
View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.idea" />
<excludeFolder url="file://$MODULE_DIR$/Logo" />
<excludeFolder url="file://$MODULE_DIR$/_output" />
<excludeFolder url="file://$MODULE_DIR$/_output_mono" />
<excludeFolder url="file://$MODULE_DIR$/_output_osx" />
<excludeFolder url="file://$MODULE_DIR$/_output_osx_app" />
<excludeFolder url="file://$MODULE_DIR$/_start" />
<excludeFolder url="file://$MODULE_DIR$/_tests" />
<excludeFolder url="file://$MODULE_DIR$/debian" />
<excludeFolder url="file://$MODULE_DIR$/node_modules" />
<excludeFolder url="file://$MODULE_DIR$/osx" />
<excludeFolder url="file://$MODULE_DIR$/schemas" />
<excludeFolder url="file://$MODULE_DIR$/setup" />
<excludeFolder url="file://$MODULE_DIR$/src" />
<excludeFolder url="file://$MODULE_DIR$/tools" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Sonarr node_modules" level="project" />
</component>
</module>

59
.idea/codeStyleSettings.xml generated Normal file
View File

@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectCodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS">
<value>
<option name="LINE_SEPARATOR" value="&#13;&#10;" />
<option name="RIGHT_MARGIN" value="190" />
<option name="HTML_ATTRIBUTE_WRAP" value="0" />
<option name="HTML_KEEP_LINE_BREAKS" value="false" />
<option name="HTML_KEEP_BLANK_LINES" value="1" />
<option name="HTML_ALIGN_ATTRIBUTES" value="false" />
<option name="HTML_INLINE_ELEMENTS" value="" />
<option name="HTML_DONT_ADD_BREAKS_IF_INLINE_CONTENT" value="" />
<CssCodeStyleSettings>
<option name="HEX_COLOR_LOWER_CASE" value="true" />
<option name="HEX_COLOR_LONG_FORMAT" value="true" />
<option name="VALUE_ALIGNMENT" value="1" />
</CssCodeStyleSettings>
<JSCodeStyleSettings>
<option name="SPACE_BEFORE_PROPERTY_COLON" value="true" />
<option name="ALIGN_OBJECT_PROPERTIES" value="2" />
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
<option name="OBJECT_LITERAL_WRAP" value="2" />
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
</JSCodeStyleSettings>
<XML>
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
</XML>
<codeStyleSettings language="CSS">
<indentOptions>
<option name="SMART_TABS" value="true" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="JavaScript">
<option name="LINE_COMMENT_AT_FIRST_COLUMN" value="true" />
<option name="KEEP_LINE_BREAKS" value="false" />
<option name="KEEP_FIRST_COLUMN_COMMENT" value="false" />
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
<option name="CATCH_ON_NEW_LINE" value="true" />
<option name="FINALLY_ON_NEW_LINE" value="true" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
<option name="SPACE_BEFORE_METHOD_PARENTHESES" value="true" />
<option name="CALL_PARAMETERS_WRAP" value="1" />
<option name="BINARY_OPERATION_WRAP" value="1" />
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
<option name="ARRAY_INITIALIZER_WRAP" value="2" />
<option name="ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE" value="true" />
<option name="ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE" value="true" />
<option name="IF_BRACE_FORCE" value="3" />
<option name="DOWHILE_BRACE_FORCE" value="3" />
<option name="WHILE_BRACE_FORCE" value="3" />
<option name="FOR_BRACE_FORCE" value="3" />
</codeStyleSettings>
</value>
</option>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</component>
</project>

6
.idea/encodings.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="PROJECT" charset="UTF-8" />
</component>
</project>

6
.idea/jsLibraryMappings.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptLibraryMappings">
<includedPredefinedLibrary name="ECMAScript 6" />
</component>
</project>

14
.idea/libraries/Sonarr_node_modules.xml generated Normal file
View File

@@ -0,0 +1,14 @@
<component name="libraryTable">
<library name="Sonarr node_modules" type="javaScript">
<properties>
<option name="frameworkName" value="node_modules" />
<sourceFilesUrls>
<item url="file://$PROJECT_DIR$/node_modules" />
</sourceFilesUrls>
</properties>
<CLASSES>
<root url="file://$PROJECT_DIR$/node_modules" />
</CLASSES>
<SOURCES />
</library>
</component>

14
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
<OptionsSetting value="true" id="Add" />
<OptionsSetting value="true" id="Remove" />
<OptionsSetting value="true" id="Checkout" />
<OptionsSetting value="true" id="Update" />
<OptionsSetting value="true" id="Status" />
<OptionsSetting value="true" id="Edit" />
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectRootManager" version="2" />
</project>

8
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/Sonarr.iml" filepath="$PROJECT_DIR$/.idea/Sonarr.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

14
.travis.yml Normal file
View File

@@ -0,0 +1,14 @@
language: csharp
solution: src/NzbDrone.sln
script: # the following commands are just examples, use whatever your build process requires
- ./build.sh
- chmod +x test.sh
# - ./test.sh Linux Unit Takes far too long, maybe even crashes travis :/
install:
- sudo apt-get install nodejs
- sudo apt-get install npm
after_success:
- chmod +x package.sh
- ./package.sh
notifications:
- webhooks: https://discordapp.com/api/webhooks/266910310219251712/V-QvCcnYkg3O8PMevcAJOJyCgrYkZQoF2pupLDGbaISNUECmYPd6LRwl3avKHsPyfgWP

BIN
7za.dll Normal file

Binary file not shown.

BIN
7za.exe Normal file

Binary file not shown.

BIN
7zxa.dll Normal file

Binary file not shown.

4
CLA.md
View File

@@ -1,6 +1,6 @@
# NzbDrone Individual Contributor License Agreement #
# Radarr Individual Contributor License Agreement #
Thank you for your interest in contributing to NzbDrone ("We" or "Us").
Thank you for your interest in contributing to Radarr ("We" or "Us").
This contributor agreement ("Agreement") documents the rights granted by contributors to Us. To make this document effective, please complete the form below. This is a legally binding document, so please read it carefully before agreeing to it. The Agreement may cover more than one software project managed by Us.
## 1. Definitions ##

View File

@@ -1,6 +1,6 @@
# How to Contribute #
We're always looking for people to help make NzbDrone even better, there are a number of ways to contribute. To get started, <a href="http://www.clahub.com/agreements/NzbDrone/NzbDrone">sign the Contributor License Agreement</a>.
We're always looking for people to help make Radarr even better, there are a number of ways to contribute.
## Documentation ##
Setup guides, FAQ, the more information we have on the wiki the better.
@@ -8,22 +8,24 @@ Setup guides, FAQ, the more information we have on the wiki the better.
## Development ##
### Tools required ###
- Visual Studio 2013
- HTML/Javascript editor of choice (Sublime Text/Webstorm/etc)
- Visual Studio 2015
- HTML/Javascript editor of choice (Sublime Text/Webstorm/Atom/etc)
- npm (node package manager)
- git
### Getting started ###
1. Fork NzbDrone
2. Clone (develop branch)
1. Fork Radarr
2. Clone (develop branch) *you may need pull in submodules separately if you client doesn't clone them automatically (CurlSharp)*
3. Run `npm install`
4. Run `gulp watch` - Used to compile the UI components and copy them (leave this window open)
4. Run `npm start` - Used to compile the UI components and copy them.
Leave this window open.
If you have gulp globally installed you can use `gulp watch` instead
5. Compile in Visual Studio
### Contributing Code ###
- If you're adding a new, already requested feature, please comment on [Trello](https://trello.sonarr.tv "Trello") so work is not duplicated (If you want to add something not already on there, please talk to us first)
- Rebase from NzbDrone's develop branch, don't merge
- If you're adding a new, already requested feature, please comment on [Github Issues](https://github.com/Radarr/Radarr/issues "Github Issues") so work is not duplicated (If you want to add something not already on there, please talk to us first)
- Rebase from Radarr's develop branch, don't merge
- Make meaningful commits, or squash them
- Feel free to make a pull request before work is complete, this will let us see where its at and make comments/suggest improvements
- Reach out to us on the forums or on IRC if you have any questions

View File

@@ -1,720 +0,0 @@
<Config xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:b="http://schemas.datacontract.org/2004/07/System.Drawing" xmlns:d="http://schemas.datacontract.org/2004/07/Prosa.Log4View.Db" xmlns:f="http://schemas.datacontract.org/2004/07/Prosa.Log4View.Receiver.File" xmlns:l="http://schemas.datacontract.org/2004/07/Prosa.Log4View.Level" xmlns:m="http://schemas.datacontract.org/2004/07/Prosa.Log4View.Receiver.Msg" xmlns:n="http://schemas.datacontract.org/2004/07/Prosa.Log4View.Receiver.Net" xmlns:t="http://schemas.datacontract.org/2004/07/Prosa.Log4View.LoggerTree" xmlns:u="http://schemas.datacontract.org/2004/07/Prosa.Log4View.Utils" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" z:Id="1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/" xmlns="http://schemas.datacontract.org/2004/07/Prosa.Log4View.Configuration">
<Id>
<u:Value>1</u:Value>
</Id>
<Data z:Id="2">
<Id>
<u:Value>2</u:Value>
</Id>
<Version>17</Version>
<_receivers z:Id="3" z:Size="1">
<ReceiverConfig z:Id="4" i:type="n:NetReceiverConfig">
<Id>
<u:Value>16</u:Value>
</Id>
<BackColor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>2</b:state>
<b:value>4293654015</b:value>
</BackColor>
<BufferSize>500000</BufferSize>
<Encoding z:Id="5">Windows-1252</Encoding>
<LevelFilter z:Id="6" i:type="LogLevelSurrogated">
<LevelName z:Id="7">ALL</LevelName>
</LevelFilter>
<LoggingFrameworkId z:Id="8">Log4net</LoggingFrameworkId>
<Name z:Id="9">NzbDrone</Name>
<ParserType>XML</ParserType>
<ReadAdjacentMessages>0</ReadAdjacentMessages>
<ReadFrom>0001-01-01T00:00:00</ReadFrom>
<ReadUntil>0001-01-01T00:00:00</ReadUntil>
<SourceId>0</SourceId>
<TimeOffset>0</TimeOffset>
<TimeZone z:Id="10">Pacific Standard Time</TimeZone>
<UseFilter>false</UseFilter>
<Window>18</Window>
<n:HostName z:Id="11">localhost</n:HostName>
<n:Port>20480</n:Port>
<n:Protocol>Udp</n:Protocol>
</ReceiverConfig>
</_receivers>
<_sources z:Id="12" z:Size="0" />
</Data>
<Presentation z:Id="13">
<Id>
<u:Value>3</u:Value>
</Id>
<DefaultLogLevel z:Ref="6" i:nil="true" />
<ShowCodeDetails>false</ShowCodeDetails>
<ShowMessageDetails>true</ShowMessageDetails>
<ShowMultiField>true</ShowMultiField>
<ShowOutputOnDebug>true</ShowOutputOnDebug>
<ShowProcessDetails>false</ShowProcessDetails>
<ToolTipLogLevel z:Id="14" i:type="LogLevelSurrogated">
<LevelName z:Id="15">OFF</LevelName>
</ToolTipLogLevel>
<Version>17</Version>
<_charts z:Id="16" z:Size="0" />
<_columns z:Id="17" z:Size="29">
<ColumnConfig z:Id="18">
<Id>
<u:Value>78</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="19">Id</FieldName>
<Name z:Ref="19" i:nil="true" />
<Position>-1</Position>
<Width>45</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="20">
<Id>
<u:Value>79</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="21">OriginalTime</FieldName>
<Name z:Ref="21" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="22">
<Id>
<u:Value>80</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="23">Time</FieldName>
<Name z:Ref="23" i:nil="true" />
<Position>1</Position>
<Width>80</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="24">
<Id>
<u:Value>81</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="25">LocalTime</FieldName>
<Name z:Ref="25" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="26">
<Id>
<u:Value>82</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="27">UtcTime</FieldName>
<Name z:Ref="27" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="28">
<Id>
<u:Value>83</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="29">Date</FieldName>
<Name z:Ref="29" i:nil="true" />
<Position>-1</Position>
<Width>70</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="30">
<Id>
<u:Value>84</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="31">Key</FieldName>
<Name z:Ref="31" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="32">
<Id>
<u:Value>85</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="33">Level</FieldName>
<Name z:Ref="33" i:nil="true" />
<Position>-1</Position>
<Width>85</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="34">
<Id>
<u:Value>86</u:Value>
</Id>
<ClipMode>ClipMiddle</ClipMode>
<FieldName z:Id="35">Logger</FieldName>
<Name z:Ref="35" i:nil="true" />
<Position>2</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="36">
<Id>
<u:Value>87</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="37">Source</FieldName>
<Name z:Ref="37" i:nil="true" />
<Position>-1</Position>
<Width>90</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="38">
<Id>
<u:Value>88</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="39">Message</FieldName>
<Name z:Ref="39" i:nil="true" />
<Position>3</Position>
<Width>874</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="40">
<Id>
<u:Value>89</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="41">Thread</FieldName>
<Name z:Ref="41" i:nil="true" />
<Position>-1</Position>
<Width>95</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="42">
<Id>
<u:Value>90</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="43">Host</FieldName>
<Name z:Ref="43" i:nil="true" />
<Position>-1</Position>
<Width>90</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="44">
<Id>
<u:Value>91</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="45">Exception</FieldName>
<Name z:Ref="45" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="46">
<Id>
<u:Value>92</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="47">Domain</FieldName>
<Name z:Ref="47" i:nil="true" />
<Position>-1</Position>
<Width>90</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="48">
<Id>
<u:Value>93</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="49">Identity</FieldName>
<Name z:Ref="49" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="50">
<Id>
<u:Value>94</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="51">User</FieldName>
<Name z:Ref="51" i:nil="true" />
<Position>-1</Position>
<Width>90</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="52">
<Id>
<u:Value>95</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="53">Class</FieldName>
<Name z:Ref="53" i:nil="true" />
<Position>-1</Position>
<Width>90</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="54">
<Id>
<u:Value>96</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="55">Method</FieldName>
<Name z:Ref="55" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="56">
<Id>
<u:Value>97</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="57">File</FieldName>
<Name z:Ref="57" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="58">
<Id>
<u:Value>98</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="59">Line</FieldName>
<Name z:Ref="59" i:nil="true" />
<Position>-1</Position>
<Width>45</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="60">
<Id>
<u:Value>99</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="61">NDC</FieldName>
<Name z:Ref="61" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="62">
<Id>
<u:Value>100</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="63">MDC</FieldName>
<Name z:Ref="63" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="64">
<Id>
<u:Value>101</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="65">Comment</FieldName>
<Name z:Ref="65" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="66">
<Id>
<u:Value>102</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="67">StackTrace</FieldName>
<Name z:Ref="67" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="68">
<Id>
<u:Value>103</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="69">ProcessId</FieldName>
<Name z:Ref="69" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="70">
<Id>
<u:Value>104</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="71">ThreadId</FieldName>
<Name z:Ref="71" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="72">
<Id>
<u:Value>105</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="73">CallStack</FieldName>
<Name z:Ref="73" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
<ColumnConfig z:Id="74">
<Id>
<u:Value>106</u:Value>
</Id>
<ClipMode>ClipRight</ClipMode>
<FieldName z:Id="75">assembly</FieldName>
<Name z:Ref="75" i:nil="true" />
<Position>-1</Position>
<Width>120</Width>
<WindowId>18</WindowId>
</ColumnConfig>
</_columns>
<_filters z:Id="76" z:Size="0" />
<_formats z:Id="77" z:Size="1">
<FormatConfig z:Id="78">
<Id>
<u:Value>0</u:Value>
</Id>
<ConditionFieldName z:Ref="39" i:nil="true" />
<ConditionRelation z:Id="79"></ConditionRelation>
<ConditionText z:Ref="79" i:nil="true" />
<Formats z:Id="80" z:Size="12">
<a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:Key z:Id="81" i:type="LogLevelSurrogated">
<LevelName z:Id="82">VERBOSE</LevelName>
</a:Key>
<a:Value z:Id="83">
<Id>
<u:Value>4</u:Value>
</Id>
<Backcolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>0</b:state>
<b:value>0</b:value>
</Backcolor>
<FontName z:Id="84">Tahoma</FontName>
<Forecolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>2</b:state>
<b:value>4290032820</b:value>
</Forecolor>
<Loglevel z:Ref="81" i:nil="true" />
<Size>8.25</Size>
<Style>Regular</Style>
</a:Value>
</a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:Key z:Id="85" i:type="LogLevelSurrogated">
<LevelName z:Id="86">TRACE</LevelName>
</a:Key>
<a:Value z:Id="87">
<Id>
<u:Value>5</u:Value>
</Id>
<Backcolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>0</b:state>
<b:value>0</b:value>
</Backcolor>
<FontName z:Id="88">Tahoma</FontName>
<Forecolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>2</b:state>
<b:value>4288716960</b:value>
</Forecolor>
<Loglevel z:Ref="85" i:nil="true" />
<Size>8.25</Size>
<Style>Regular</Style>
</a:Value>
</a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:Key z:Id="89" i:type="LogLevelSurrogated">
<LevelName z:Id="90">DEBUG</LevelName>
</a:Key>
<a:Value z:Id="91">
<Id>
<u:Value>6</u:Value>
</Id>
<Backcolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>0</b:state>
<b:value>0</b:value>
</Backcolor>
<FontName z:Id="92">Tahoma</FontName>
<Forecolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>2</b:state>
<b:value>4286743170</b:value>
</Forecolor>
<Loglevel z:Ref="89" i:nil="true" />
<Size>8.25</Size>
<Style>Regular</Style>
</a:Value>
</a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:Key z:Id="93" i:type="LogLevelSurrogated">
<LevelName z:Id="94">INFO</LevelName>
</a:Key>
<a:Value z:Id="95">
<Id>
<u:Value>7</u:Value>
</Id>
<Backcolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>0</b:state>
<b:value>0</b:value>
</Backcolor>
<FontName z:Id="96">Tahoma</FontName>
<Forecolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>2</b:state>
<b:value>4278190080</b:value>
</Forecolor>
<Loglevel z:Ref="93" i:nil="true" />
<Size>8.25</Size>
<Style>Regular</Style>
</a:Value>
</a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:Key z:Id="97" i:type="LogLevelSurrogated">
<LevelName z:Id="98">NOTICE</LevelName>
</a:Key>
<a:Value z:Id="99">
<Id>
<u:Value>8</u:Value>
</Id>
<Backcolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>0</b:state>
<b:value>0</b:value>
</Backcolor>
<FontName z:Id="100">Tahoma</FontName>
<Forecolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>2</b:state>
<b:value>4281957177</b:value>
</Forecolor>
<Loglevel z:Ref="97" i:nil="true" />
<Size>8.25</Size>
<Style>Regular</Style>
</a:Value>
</a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:Key z:Id="101" i:type="LogLevelSurrogated">
<LevelName z:Id="102">WARN</LevelName>
</a:Key>
<a:Value z:Id="103">
<Id>
<u:Value>9</u:Value>
</Id>
<Backcolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>0</b:state>
<b:value>0</b:value>
</Backcolor>
<FontName z:Id="104">Tahoma</FontName>
<Forecolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>2</b:state>
<b:value>4294934528</b:value>
</Forecolor>
<Loglevel z:Ref="101" i:nil="true" />
<Size>8.25</Size>
<Style>Regular</Style>
</a:Value>
</a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:Key z:Id="105" i:type="LogLevelSurrogated">
<LevelName z:Id="106">ERROR</LevelName>
</a:Key>
<a:Value z:Id="107">
<Id>
<u:Value>10</u:Value>
</Id>
<Backcolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>0</b:state>
<b:value>0</b:value>
</Backcolor>
<FontName z:Id="108">Tahoma</FontName>
<Forecolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>2</b:state>
<b:value>4294901760</b:value>
</Forecolor>
<Loglevel z:Ref="105" i:nil="true" />
<Size>8.25</Size>
<Style>Regular</Style>
</a:Value>
</a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:Key z:Id="109" i:type="LogLevelSurrogated">
<LevelName z:Id="110">SEVERE</LevelName>
</a:Key>
<a:Value z:Id="111">
<Id>
<u:Value>11</u:Value>
</Id>
<Backcolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>0</b:state>
<b:value>0</b:value>
</Backcolor>
<FontName z:Id="112">Tahoma</FontName>
<Forecolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>2</b:state>
<b:value>4293067295</b:value>
</Forecolor>
<Loglevel z:Ref="109" i:nil="true" />
<Size>8.25</Size>
<Style>Regular</Style>
</a:Value>
</a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:Key z:Id="113" i:type="LogLevelSurrogated">
<LevelName z:Id="114">CRITICAL</LevelName>
</a:Key>
<a:Value z:Id="115">
<Id>
<u:Value>12</u:Value>
</Id>
<Backcolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>0</b:state>
<b:value>0</b:value>
</Backcolor>
<FontName z:Id="116">Tahoma</FontName>
<Forecolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>2</b:state>
<b:value>4289400377</b:value>
</Forecolor>
<Loglevel z:Ref="113" i:nil="true" />
<Size>8.25</Size>
<Style>Regular</Style>
</a:Value>
</a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:Key z:Id="117" i:type="LogLevelSurrogated">
<LevelName z:Id="118">ALERT</LevelName>
</a:Key>
<a:Value z:Id="119">
<Id>
<u:Value>13</u:Value>
</Id>
<Backcolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>0</b:state>
<b:value>0</b:value>
</Backcolor>
<FontName z:Id="120">Tahoma</FontName>
<Forecolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>2</b:state>
<b:value>4294902015</b:value>
</Forecolor>
<Loglevel z:Ref="117" i:nil="true" />
<Size>8.25</Size>
<Style>Regular</Style>
</a:Value>
</a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:Key z:Id="121" i:type="LogLevelSurrogated">
<LevelName z:Id="122">FATAL</LevelName>
</a:Key>
<a:Value z:Id="123">
<Id>
<u:Value>14</u:Value>
</Id>
<Backcolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>0</b:state>
<b:value>0</b:value>
</Backcolor>
<FontName z:Id="124">Tahoma</FontName>
<Forecolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>2</b:state>
<b:value>4287309977</b:value>
</Forecolor>
<Loglevel z:Ref="121" i:nil="true" />
<Size>8.25</Size>
<Style>Regular</Style>
</a:Value>
</a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
<a:Key z:Id="125" i:type="LogLevelSurrogated">
<LevelName z:Id="126">EMERGENCY</LevelName>
</a:Key>
<a:Value z:Id="127">
<Id>
<u:Value>15</u:Value>
</Id>
<Backcolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>0</b:state>
<b:value>0</b:value>
</Backcolor>
<FontName z:Id="128">Tahoma</FontName>
<Forecolor>
<b:knownColor>0</b:knownColor>
<b:name i:nil="true" />
<b:state>2</b:state>
<b:value>4285932413</b:value>
</Forecolor>
<Loglevel z:Ref="125" i:nil="true" />
<Size>8.25</Size>
<Style>Regular</Style>
</a:Value>
</a:KeyValueOfLogLevelLoggerFormatConfigxIppDzWS>
</Formats>
<IgnoreCase>false</IgnoreCase>
<Name z:Id="129">Default Format Settings</Name>
</FormatConfig>
</_formats>
<_logLevels z:Id="130" z:Size="0" />
<_loggers z:Id="131" z:Size="1">
<LoggerConfig z:Id="132">
<Id>
<u:Value>77</u:Value>
</Id>
<LogLevel z:Ref="6" i:nil="true" />
<LoggerPath z:Ref="79" i:nil="true" />
<ReceiverId>16</ReceiverId>
</LoggerConfig>
</_loggers>
</Presentation>
<Version>17</Version>
</Config>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 707 B

After

Width:  |  Height:  |  Size: 811 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 115 KiB

572
Logo/Radarr.svg Normal file
View File

@@ -0,0 +1,572 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1024px" height="1024px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 41.2 (35397) - http://www.bohemiancoding.com/sketch -->
<title>SVG</title>
<desc>Created with Sketch.</desc>
<defs>
<ellipse id="path-1" cx="512" cy="512" rx="512" ry="512"></ellipse>
<mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="0" y="0" width="1024" height="1024" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<mask id="mask-4" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="0" y="0" width="1024" height="1024" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<polygon id="path-5" points="0 0 1007.8334 0 1007.8334 1181.7303 0 1181.7303"></polygon>
<polygon id="path-7" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-9" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-11" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-13" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-15" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-17" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-19" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-21" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-23" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-25" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-27" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-29" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-31" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-33" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-35" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-37" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-39" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-41" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-43" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<polygon id="path-45" points="0 0.308593451 979.971467 0.308593451 979.971467 66.8717453 0 66.8717453"></polygon>
<path d="M211.257613,211.421878 C134.335253,288.344238 86.7577838,394.611489 86.7577838,511.991053 C86.7577838,629.370617 134.335253,735.637868 211.257613,812.560228 L511.826788,511.991053 L211.257613,211.421878 Z" id="path-47"></path>
<path d="M639.447177,208.78225 C562.524817,285.704609 514.947349,391.97186 514.947349,509.351425 C514.947349,626.730989 562.524817,732.99824 639.447177,809.9206 L940.016353,509.351425 L639.447177,208.78225 Z" id="path-49"></path>
<ellipse id="path-51" cx="512" cy="512" rx="512" ry="512"></ellipse>
<mask id="mask-52" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="0" y="0" width="1024" height="1024" fill="white">
<use xlink:href="#path-51"></use>
</mask>
</defs>
<g id="Logo" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="SVG">
<mask id="mask-3" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="Mask" stroke="#FFC231" mask="url(#mask-2)" stroke-width="40" fill="#050808">
<use mask="url(#mask-4)" xlink:href="#path-1"></use>
</g>
<g id="Grid" mask="url(#mask-3)">
<g transform="translate(23.843025, 1.692150)">
<mask id="mask-6" fill="white">
<use xlink:href="#path-5"></use>
</mask>
<g id="Duplicate-control" stroke="none" fill="none"></g>
<g id="Group-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" mask="url(#mask-6)">
<g id="Group" transform="translate(0.000000, 0.924454)">
<mask id="mask-8" fill="white">
<use xlink:href="#path-7"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-8)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
<g id="Group" transform="translate(27.861934, 50.883783)">
<mask id="mask-10" fill="white">
<use xlink:href="#path-9"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-10)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
</g>
<g id="Group-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" mask="url(#mask-6)">
<g transform="translate(0.000000, 901.189447)" id="Group">
<g transform="translate(0.000000, 0.924454)">
<mask id="mask-12" fill="white">
<use xlink:href="#path-11"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-12)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
<g transform="translate(27.861934, 50.883783)">
<mask id="mask-14" fill="white">
<use xlink:href="#path-13"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-14)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
</g>
</g>
<g id="Group-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" mask="url(#mask-6)">
<g transform="translate(0.000000, 801.270788)" id="Group">
<g transform="translate(0.000000, 0.924454)">
<mask id="mask-16" fill="white">
<use xlink:href="#path-15"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-16)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
<g transform="translate(27.861934, 50.883783)">
<mask id="mask-18" fill="white">
<use xlink:href="#path-17"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-18)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
</g>
</g>
<g id="Group-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" mask="url(#mask-6)">
<g transform="translate(0.000000, 700.391372)" id="Group">
<g transform="translate(0.000000, 0.924454)">
<mask id="mask-20" fill="white">
<use xlink:href="#path-19"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-20)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
<g transform="translate(27.861934, 50.883783)">
<mask id="mask-22" fill="white">
<use xlink:href="#path-21"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-22)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
</g>
</g>
<g id="Group-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" mask="url(#mask-6)">
<g transform="translate(0.000000, 600.472713)" id="Group">
<g transform="translate(0.000000, 0.924454)">
<mask id="mask-24" fill="white">
<use xlink:href="#path-23"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-24)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
<g transform="translate(27.861934, 50.883783)">
<mask id="mask-26" fill="white">
<use xlink:href="#path-25"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-26)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
</g>
</g>
<g id="Group-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" mask="url(#mask-6)">
<g transform="translate(0.000000, 500.554053)" id="Group">
<g transform="translate(0.000000, 0.924454)">
<mask id="mask-28" fill="white">
<use xlink:href="#path-27"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-28)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
<g transform="translate(27.861934, 50.883783)">
<mask id="mask-30" fill="white">
<use xlink:href="#path-29"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-30)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
</g>
</g>
<g id="Group-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" mask="url(#mask-6)">
<g transform="translate(0.000000, 400.635394)" id="Group">
<g transform="translate(0.000000, 0.924454)">
<mask id="mask-32" fill="white">
<use xlink:href="#path-31"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-32)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
<g transform="translate(27.861934, 50.883783)">
<mask id="mask-34" fill="white">
<use xlink:href="#path-33"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-34)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
</g>
</g>
<g id="Group-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" mask="url(#mask-6)">
<g transform="translate(0.000000, 299.755978)" id="Group">
<g transform="translate(0.000000, 0.924454)">
<mask id="mask-36" fill="white">
<use xlink:href="#path-35"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-36)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
<g transform="translate(27.861934, 50.883783)">
<mask id="mask-38" fill="white">
<use xlink:href="#path-37"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-38)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
</g>
</g>
<g id="Group-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" mask="url(#mask-6)">
<g transform="translate(0.000000, 199.837319)" id="Group">
<g transform="translate(0.000000, 0.924454)">
<mask id="mask-40" fill="white">
<use xlink:href="#path-39"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.91846539e-13 50.2309573 1.73194792e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-40)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
<g transform="translate(27.861934, 50.883783)">
<mask id="mask-42" fill="white">
<use xlink:href="#path-41"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-42)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
</g>
</g>
<g id="Group-2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" mask="url(#mask-6)">
<g transform="translate(0.000000, 99.918659)" id="Group">
<g transform="translate(0.000000, 0.924454)">
<mask id="mask-44" fill="white">
<use xlink:href="#path-43"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-44)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
<g transform="translate(27.861934, 50.883783)">
<mask id="mask-46" fill="white">
<use xlink:href="#path-45"></use>
</mask>
<g id="Duplicate-control"></g>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="28.8226902 0.308593451 57.6453804 16.9493814 57.6453804 50.2309573 28.8226902 66.8717453 1.95399252e-13 50.2309573 1.76747506e-13 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="951.148777 0.308593451 979.971467 16.9493814 979.971467 50.2309573 951.148777 66.8717453 922.326087 50.2309573 922.326087 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="893.503397 0.308593451 922.326087 16.9493814 922.326087 50.2309573 893.503397 66.8717453 864.680706 50.2309573 864.680706 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="835.858016 0.308593451 864.680706 16.9493814 864.680706 50.2309573 835.858016 66.8717453 807.035326 50.2309573 807.035326 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="778.212636 0.308593451 807.035326 16.9493814 807.035326 50.2309573 778.212636 66.8717453 749.389945 50.2309573 749.389945 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="720.567255 0.308593451 749.389945 16.9493814 749.389945 50.2309573 720.567255 66.8717453 691.744565 50.2309573 691.744565 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="662.921875 0.308593451 691.744565 16.9493814 691.744565 50.2309573 662.921875 66.8717453 634.099185 50.2309573 634.099185 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="605.276494 0.308593451 634.099185 16.9493814 634.099185 50.2309573 605.276494 66.8717453 576.453804 50.2309573 576.453804 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="547.631114 0.308593451 576.453804 16.9493814 576.453804 50.2309573 547.631114 66.8717453 518.808424 50.2309573 518.808424 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="489.985734 0.308593451 518.808424 16.9493814 518.808424 50.2309573 489.985734 66.8717453 461.163043 50.2309573 461.163043 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="432.340353 0.308593451 461.163043 16.9493814 461.163043 50.2309573 432.340353 66.8717453 403.517663 50.2309573 403.517663 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="374.694973 0.308593451 403.517663 16.9493814 403.517663 50.2309573 374.694973 66.8717453 345.872283 50.2309573 345.872283 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="317.049592 0.308593451 345.872283 16.9493814 345.872283 50.2309573 317.049592 66.8717453 288.226902 50.2309573 288.226902 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="259.404212 0.308593451 288.226902 16.9493814 288.226902 50.2309573 259.404212 66.8717453 230.581522 50.2309573 230.581522 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="201.758831 0.308593451 230.581522 16.9493814 230.581522 50.2309573 201.758831 66.8717453 172.936141 50.2309573 172.936141 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="144.113451 0.308593451 172.936141 16.9493814 172.936141 50.2309573 144.113451 66.8717453 115.290761 50.2309573 115.290761 16.9493814"></polygon>
<polygon id="Polygon" stroke="#999999" mask="url(#mask-46)" points="86.4680706 0.308593451 115.290761 16.9493814 115.290761 50.2309573 86.4680706 66.8717453 57.6453804 50.2309573 57.6453804 16.9493814"></polygon>
</g>
</g>
</g>
</g>
</g>
<mask id="mask-48" fill="white">
<use xlink:href="#path-47"></use>
</mask>
<use id="Combined-Shape" fill="#F1F1F1" xlink:href="#path-47"></use>
<mask id="mask-50" fill="white">
<use xlink:href="#path-49"></use>
</mask>
<use id="Combined-Shape" fill="#F1F1F1" transform="translate(727.481851, 509.351425) rotate(-180.000000) translate(-727.481851, -509.351425) " xlink:href="#path-49"></use>
<circle id="Oval-2" fill="#FFC231" cx="512.387624" cy="512.387624" r="135.118088"></circle>
<path d="M691.584224,554.79626 L741.584224,554.79626 L741.584224,848.113106 L691.584224,848.113106 L691.584224,554.79626 Z M691.584224,668.27622 L707.760695,668.27622 L707.760695,848.113106 L691.584224,848.113106 L691.584224,668.27622 Z M725.407754,668.27622 L741.584224,668.27622 L741.584224,848.113106 L725.407754,848.113106 L725.407754,668.27622 Z" id="Combined-Shape" fill="#FFC231" transform="translate(716.584224, 701.454683) rotate(133.000000) translate(-716.584224, -701.454683) "></path>
<path d="M288.802242,169.956176 L338.802242,169.956176 L338.802242,463.273022 L288.802242,463.273022 L288.802242,169.956176 Z M288.802242,283.436136 L304.978713,283.436136 L304.978713,463.273022 L288.802242,463.273022 L288.802242,283.436136 Z M322.625772,283.436136 L338.802242,283.436136 L338.802242,463.273022 L322.625772,463.273022 L322.625772,283.436136 Z" id="Combined-Shape" fill="#FFC231" transform="translate(313.802242, 316.614599) scale(-1, -1) rotate(133.000000) translate(-313.802242, -316.614599) "></path>
<path d="M816.093378,100.047294 C731.060203,37.1735645 625.871277,0 512,0 C398.30327,0 293.262295,37.0596891 208.297793,99.7583476 L404.58707,301.155391 C436.776006,284.750117 473.221118,275.499672 511.826788,275.499672 C550.704585,275.499672 587.391258,284.880988 619.746562,301.503373 L816.093378,100.047294 Z" id="Combined-Shape" fill="#F1F1F1"></path>
<path d="M816.093378,823.047294 C731.060203,760.173564 625.871277,723 512,723 C398.30327,723 293.262295,760.059689 208.297793,822.758348 L404.58707,1024.15539 C436.776006,1007.75012 473.221118,998.499672 511.826788,998.499672 C550.704585,998.499672 587.391258,1007.88099 619.746562,1024.50337 L816.093378,823.047294 Z" id="Combined-Shape" fill="#F1F1F1" transform="translate(512.195585, 873.751687) scale(1, -1) translate(-512.195585, -873.751687) "></path>
<use id="Grid-Mask" stroke="#FFC231" mask="url(#mask-52)" stroke-width="40" xlink:href="#path-51"></use>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 98 KiB

View File

@@ -1,240 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="218px"
height="218px" viewBox="0 0 218 218" enable-background="new 0 0 218 218" xml:space="preserve">
<symbol id="hex_grid" viewBox="-114.25 -98.617 228.55 197.233">
<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#989898" stroke-width="0.5" stroke-linecap="square" stroke-miterlimit="1" d="
M72.15,90.3l4.7-2.7l4.65,2.7v5.4l-4.65,2.7l-4.7-2.7V90.3z M62.85,95.7l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7V95.7l4.65,2.7
l4.65-2.7 M62.85,90.3l4.65-2.7l4.65,2.7 M62.85,79.55v-5.4l4.65-2.7l4.65,2.7v5.4L67.5,82.2L62.85,79.55L58.2,82.2l-4.65-2.65
M72.15,74.15l4.7-2.7l4.65,2.7v5.4l-4.65,2.65l-4.7-2.65 M76.85,87.6v-5.4 M67.5,87.6v-5.4 M81.5,95.7l4.65,2.7l4.65-2.7l4.65,2.7
l4.65-2.7l4.65,2.7l4.65-2.7v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4l4.65-2.7v-5.4l-4.65-2.7v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4
l4.65-2.7v-5.4L109.4,31v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4l4.65-2.7v-5.4l-4.65-2.7v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4l4.65-2.7
V-31l-4.65-2.7v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4l4.65-2.7v-5.4l-4.65-2.7v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4l4.65-2.7v-5.4
l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.7-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7
l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.7-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7L7-98.4l-4.65,2.7l-4.65-2.7
l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.7-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7
l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.7-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7v5.4l-4.65,2.7
v5.4l4.65,2.65v5.4l-4.65,2.7v5.4l4.65,2.7v5.4l-4.65,2.7v5.4l4.65,2.65v5.4l-4.65,2.7v5.4l4.65,2.7v5.4l-4.65,2.7v5.4l4.65,2.65
v5.4l-4.65,2.7v5.4l4.65,2.7v5.4l-4.65,2.7v5.4l4.65,2.65v5.4l-4.65,2.7V31l4.65,2.7v5.4l-4.65,2.7v5.4l4.65,2.65v5.4l-4.65,2.7
v5.4l4.65,2.7v5.4l-4.65,2.7v5.4l4.65,2.65v5.4l-4.65,2.7v5.4l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.7,2.7
l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.7,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7
l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7L7,95.7l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.7,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7
l4.65-2.7 M44.25,95.7v-5.4l4.65-2.7l4.65,2.7 M44.25,79.55v-5.4l4.65-2.7l4.65,2.7v5.4L48.9,82.2L44.25,79.55L39.6,82.2
l-4.65-2.65 M58.2,87.6v-5.4 M48.9,87.6v-5.4 M53.55,63.35v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7L53.55,63.35l-4.65,2.7l-4.65-2.7
v-5.4l4.65-2.7l4.65,2.7 M62.85,74.15l-4.65-2.7v-5.4 M53.55,74.15l4.65-2.7 M48.9,71.45v-5.4 M48.9,55.25v-5.4l4.65-2.65
l4.65,2.65v5.4 M67.5,71.45v-5.4l4.65-2.7l4.7,2.7v5.4 M67.5,66.05l-4.65-2.7 M58.2,49.85l4.65-2.65l4.65,2.65v5.4l-4.65,2.7
M72.15,63.35v-5.4l4.7-2.7l4.65,2.7v5.4l-4.65,2.7 M76.85,55.25v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M67.5,55.25l4.65,2.7
M34.95,95.7v-5.4l4.65-2.7l4.65,2.7 M16.3,95.7v-5.4l4.65-2.7l4.65,2.7v5.4 M25.6,90.3l4.7-2.7l4.65,2.7 M25.6,79.55v-5.4l4.7-2.7
l4.65,2.7v5.4L30.3,82.2L25.6,79.55l-4.65,2.65l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M20.95,87.6v-5.4 M39.6,87.6v-5.4 M30.3,87.6
v-5.4 M7,95.7v-5.4l4.65-2.7l4.65,2.7 M-2.3,95.7v-5.4l4.65-2.7L7,90.3 M2.35,82.2l-4.65-2.65v-5.4l4.65-2.7L7,74.15v5.4L2.35,82.2
z M16.3,79.55l-4.65,2.65L7,79.55 M2.35,87.6v-5.4 M11.65,87.6v-5.4 M16.3,74.15l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M2.35,71.45
v-5.4L7,63.35l4.65,2.7 M2.35,49.85L7,47.2l4.65,2.65v5.4L7,57.95l-4.65-2.7V49.85L-2.3,47.2v-5.4l4.65-2.7L7,41.8v5.4
M11.65,55.25l4.65,2.7v5.4 M7,74.15l4.65-2.7 M7,57.95v5.4 M30.3,71.45v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M16.3,57.95
l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M30.3,66.05l-4.7-2.7 M30.3,49.85l4.65-2.65l4.65,2.65v5.4l-4.65,2.7l-4.65-2.7V49.85l-4.7-2.65
v-5.4l-4.65-2.7v-5.4L25.6,31l4.7,2.7v5.4l-4.7,2.7 M11.65,49.85l4.65-2.65l4.65,2.65v5.4 M25.6,57.95l4.7-2.7 M34.95,57.95v5.4
M34.95,47.2v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65 M25.6,31v-5.4l4.7-2.7l4.65,2.7V31l-4.65,2.7 M34.95,25.6l4.65-2.7l4.65,2.7
V31l-4.65,2.7L34.95,31 M30.3,39.1l4.65,2.7 M39.6,39.1v-5.4 M20.95,39.1l-4.65,2.7l-4.65-2.7v-5.4L16.3,31l4.65,2.7 M16.3,41.8
v5.4 M2.35,33.7L-2.3,31v-5.4l4.65-2.7L7,25.6V31L2.35,33.7z M7,25.6l4.65-2.7l4.65,2.7V31 M2.35,39.1v-5.4 M11.65,33.7L7,31
M7,41.8l4.65-2.7 M11.65,17.5L7,14.85v-5.4l4.65-2.7l4.65,2.7v5.4L11.65,17.5z M11.65,22.9v-5.4 M2.35,22.9v-5.4L7,14.85 M7,9.45
l-4.65-2.7v-5.4L7-1.35l4.65,2.7v5.4 M34.95,14.85v-5.4l4.65-2.7l4.65,2.7v5.4L39.6,17.5L34.95,14.85z M39.6,22.9v-5.4 M25.6,25.6
l-4.65-2.7v-5.4l4.65-2.65l4.7,2.65v5.4 M16.3,9.45l4.65-2.7l4.65,2.7v5.4 M34.95,9.45l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4
M11.65,1.35l4.65-2.7l4.65,2.7v5.4 M25.6,9.45l4.7-2.7 M30.3,17.5l4.65-2.65 M16.3,25.6l4.65-2.7 M20.95,17.5l-4.65-2.65
M76.85,49.85l-4.7-2.65v-5.4l4.7-2.7l4.65,2.7v5.4 M62.85,47.2v-5.4l4.65-2.7l4.65,2.7 M62.85,25.6l4.65-2.7l4.65,2.7V31
l-4.65,2.7L62.85,31V25.6l-4.65-2.7v-5.4 M72.15,25.6l4.7-2.7l4.65,2.7V31l-4.65,2.7l-4.7-2.7 M76.85,39.1v-5.4 M67.5,39.1v-5.4
M53.55,47.2v-5.4l4.65-2.7l4.65,2.7 M44.25,41.8l4.65-2.7l4.65,2.7 M44.25,25.6l4.65-2.7l4.65,2.7V31l-4.65,2.7L44.25,31
M62.85,31l-4.65,2.7L53.55,31 M58.2,39.1v-5.4 M48.9,39.1v-5.4 M53.55,14.85v-5.4l4.65-2.7l4.65,2.7v5.4L58.2,17.5L53.55,14.85
L48.9,17.5l-4.65-2.65 M48.9,22.9v-5.4 M53.55,9.45l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M44.25,9.45l4.65-2.7 M76.85,22.9v-5.4
l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M76.85,17.5l-4.7-2.65v-5.4l4.7-2.7l4.65,2.7v5.4 M67.5,22.9v-5.4l4.65-2.65 M67.5,17.5
l-4.65-2.65 M72.15,9.45l-4.65-2.7v-5.4l4.65-2.7l4.7,2.7v5.4 M62.85,9.45l4.65-2.7 M53.55,25.6l4.65-2.7 M44.25,63.35l-4.65,2.7
M39.6,55.25l4.65,2.7 M39.6,71.45l4.65,2.7 M67.5,49.85l4.65-2.65 M48.9,49.85l-4.65-2.65 M25.6,47.2l-4.65,2.65 M104.75,87.6
l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65V87.6l4.65,2.7 M109.4,79.55l-4.65,2.65 M100.1,95.7v-5.4 M81.5,90.3l4.65-2.7
l4.65,2.7v5.4 M81.5,74.15l4.65-2.7l4.65,2.7v5.4l-4.65,2.65l-4.65-2.65 M90.8,79.55l4.65,2.65 M86.15,87.6v-5.4 M90.8,90.3
l4.65-2.7 M95.45,71.45v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7L95.45,71.45l-4.65,2.7 M86.15,55.25l4.65,2.7v5.4l-4.65,2.7
l-4.65-2.7 M86.15,71.45v-5.4 M95.45,55.25v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7L95.45,55.25l-4.65,2.7 M100.1,63.35v-5.4
M90.8,63.35l4.65,2.7 M109.4,63.35l-4.65,2.7 M104.75,71.45l4.65,2.7 M104.75,55.25l4.65,2.7 M100.1,79.55v-5.4 M100.1,47.2v-5.4
l4.65-2.7l4.65,2.7 M100.1,41.8l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M109.4,31l-4.65,2.7 M81.5,41.8l4.65-2.7l4.65,2.7v5.4
l-4.65,2.65 M86.15,22.9l4.65,2.7V31l-4.65,2.7L81.5,31 M100.1,31v-5.4l4.65-2.7l4.65,2.7 M90.8,31l4.65,2.7 M86.15,39.1v-5.4
M90.8,41.8l4.65-2.7 M86.15,17.5l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M90.8,14.85v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65
M81.5,9.45l4.65-2.7l4.65,2.7 M86.15,6.75v-5.4l4.65-2.7l4.65,2.7v5.4 M100.1,14.85l4.65,2.65v5.4 M109.4,14.85l-4.65,2.65
M100.1,9.45l4.65-2.7l4.65,2.7 M95.45,1.35l4.65-2.7l4.65,2.7v5.4 M95.45,22.9l4.65,2.7 M109.4,47.2l-4.65,2.65 M90.8,47.2
l4.65,2.65 M104.75-9.45l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65V-9.45l4.65,2.7 M109.4-17.5l-4.65,2.65 M100.1-1.35v-5.4
M90.8-1.35v-5.4l4.65-2.7 M81.5-6.75l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4L81.5-6.75v5.4l-4.65,2.7 M90.8-6.75l-4.65-2.7
M95.45-14.85L90.8-17.5v-5.4l4.65-2.7l4.65,2.7v5.4 M76.85-14.85l-4.7-2.65v-5.4l4.7-2.7l4.65,2.7v5.4 M86.15-14.85l4.65-2.65
M95.45-31l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4L95.45-31z M95.45-25.6V-31 M90.8-22.9l-4.65-2.7V-31l4.65-2.7 M86.15-31
l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M86.15-41.8v-5.4l4.65-2.65l4.65,2.65v5.4 M100.1-33.7l4.65,2.7v5.4l-4.65,2.7 M109.4-33.7
l-4.65,2.7 M95.45-47.2l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M104.75-41.8l4.65,2.7 M81.5-22.9l4.65-2.7 M104.75-25.6l4.65,2.7
M100.1-49.85v-5.4l4.65-2.7l4.65,2.7 M109.4-66.05l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M104.75-63.35v5.4 M100.1-55.25
l-4.65-2.7v-5.4l4.65-2.7 M86.15-47.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4 M86.15-74.15l4.65,2.7v5.4l-4.65,2.7l-4.65-2.7v-5.4
L86.15-74.15v-5.4l4.65-2.65l4.65,2.65 M90.8-71.45l4.65-2.7l4.65,2.7 M95.45-63.35l-4.65-2.7 M90.8-55.25l4.65-2.7 M86.15-57.95
v-5.4 M95.45-74.15v-5.4l4.65-2.65l4.65,2.65v5.4 M81.5-71.45l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65 M81.5-82.2v-5.4l4.65-2.7
l4.65,2.7v5.4 M86.15-90.3v-5.4 M104.75-95.7v5.4l-4.65,2.7l-4.65-2.7v-5.4 M100.1-82.2v-5.4 M95.45-90.3l-4.65,2.7 M109.4-82.2
l-4.65,2.65 M104.75-90.3l4.65,2.7 M109.4-49.85l-4.65,2.65 M72.15-1.35v-5.4l4.7-2.7 M67.5,1.35l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7
M72.15-17.5l-4.65,2.65l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M67.5-14.85v5.4 M53.55-1.35v-5.4l4.65-2.7l4.65,2.7 M48.9,1.35
l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M44.25-22.9l4.65-2.7l4.65,2.7v5.4l-4.65,2.65l-4.65-2.65V-22.9l-4.65-2.7V-31 M53.55-17.5
l4.65,2.65v5.4 M48.9-9.45v-5.4 M53.55-33.7v-5.4l4.65-2.7l4.65,2.7v5.4L58.2-31L53.55-33.7z M62.85-22.9l-4.65-2.7V-31 M48.9-25.6
V-31l4.65-2.7 M48.9-31l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M48.9-41.8v-5.4l4.65-2.65l4.65,2.65v5.4 M76.85-25.6V-31l4.65-2.7
M76.85-31l-4.7-2.7v-5.4l4.7-2.7l4.65,2.7 M62.85-33.7L67.5-31v5.4 M72.15-39.1l-4.65-2.7v-5.4l4.65-2.65l4.7,2.65v5.4
M62.85-39.1l4.65-2.7 M72.15-33.7L67.5-31 M53.55-22.9l4.65-2.7 M58.2-14.85l4.65-2.65 M30.3,1.35l-4.7-2.7v-5.4l4.7-2.7l4.65,2.7
v5.4 M30.3-9.45v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M16.3-1.35v-5.4l4.65-2.7l4.65,2.7 M30.3-14.85l-4.7-2.65v-5.4l4.7-2.7
l4.65,2.7v5.4 M25.6-17.5l-4.65,2.65L16.3-17.5v-5.4l4.65-2.7l4.65,2.7 M20.95-14.85v5.4 M16.3-6.75l-4.65-2.7v-5.4l4.65-2.65
M2.35,1.35l-4.65-2.7v-5.4l4.65-2.7L7-6.75v5.4 M7-17.5l-4.65,2.65L-2.3-17.5v-5.4l4.65-2.7L7-22.9V-17.5l4.65,2.65 M11.65-9.45
L7-6.75 M2.35-9.45v-5.4 M11.65-31L7-33.7v-5.4l4.65-2.7l4.65,2.7v5.4L11.65-31z M16.3-22.9l-4.65-2.7V-31 M2.35-25.6V-31L7-33.7
M7-39.1l-4.65-2.7v-5.4L7-49.85l4.65,2.65v5.4 M44.25-33.7L39.6-31l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M20.95-25.6V-31l4.65-2.7
l4.7,2.7v5.4 M20.95-47.2l4.65-2.65l4.7,2.65v5.4l-4.7,2.7l-4.65-2.7V-47.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M30.3-47.2
l4.65-2.65l4.65,2.65v5.4 M30.3-41.8l4.65,2.7 M25.6-33.7v-5.4 M34.95-33.7L30.3-31 M34.95-22.9l4.65-2.7 M20.95-31l-4.65-2.7
M16.3-39.1l4.65-2.7 M7-22.9l4.65-2.7 M34.95-55.25l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4L34.95-55.25v5.4 M25.6-49.85v-5.4
l4.7-2.7 M30.3-63.35l-4.7-2.7v-5.4l4.7-2.7l4.65,2.7v5.4 M25.6-66.05l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M30.3-74.15
v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M20.95-63.35v5.4 M7-49.85v-5.4l4.65-2.7l4.65,2.7 M2.35-47.2l-4.65-2.65v-5.4l4.65-2.7
L7-55.25 M2.35-63.35l-4.65-2.7v-5.4l4.65-2.7L7-71.45v5.4L2.35-63.35z M16.3-71.45l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4
M11.65-57.95v-5.4l4.65-2.7 M2.35-57.95v-5.4 M7-66.05l4.65,2.7 M11.65-74.15L7-71.45 M2.35-74.15v-5.4L7-82.2l4.65,2.65
M11.65-95.7v5.4L7-87.6l-4.65-2.7v-5.4 M20.95-95.7v5.4l-4.65,2.7l-4.65-2.7 M7-87.6v5.4 M16.3-87.6v5.4 M20.95-90.3l4.65,2.7v5.4
l-4.65,2.65 M30.3-79.55l-4.7-2.65 M30.3-95.7v5.4l-4.7,2.7 M48.9-95.7v5.4l-4.65,2.7l-4.65-2.7v-5.4 M34.95-82.2v-5.4l4.65-2.7
M30.3-90.3l4.65,2.7 M72.15-49.85v-5.4l4.7-2.7l4.65,2.7 M67.5-47.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M67.5-74.15l4.65,2.7v5.4
l-4.65,2.7l-4.65-2.7v-5.4L67.5-74.15v-5.4l4.65-2.65l4.7,2.65 M81.5-66.05l-4.65,2.7l-4.7-2.7 M72.15-71.45l4.7-2.7 M76.85-63.35
v5.4 M67.5-57.95v-5.4 M53.55-49.85v-5.4l4.65-2.7l4.65,2.7 M48.9-47.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M44.25-66.05v-5.4
l4.65-2.7l4.65,2.7v5.4l-4.65,2.7L44.25-66.05l-4.65,2.7 M62.85-66.05l-4.65,2.7l-4.65-2.7 M53.55-71.45l4.65-2.7l4.65,2.7
M58.2-57.95v-5.4 M48.9-57.95v-5.4 M48.9-74.15v-5.4l4.65-2.65l4.65,2.65v5.4 M48.9-79.55l-4.65-2.65v-5.4 M58.2-95.7v5.4
l-4.65,2.7l-4.65-2.7 M53.55-87.6v5.4 M58.2-79.55l4.65-2.65l4.65,2.65 M62.85-82.2v-5.4l4.65-2.7l4.65,2.7v5.4 M67.5-90.3v-5.4
M76.85-95.7v5.4l-4.7,2.7 M58.2-90.3l4.65,2.7 M44.25-17.5l-4.65,2.65 M39.6-9.45l4.65,2.7 M39.6-74.15l4.65,2.7 M39.6-57.95
l4.65,2.7 M44.25-49.85L39.6-47.2 M62.85-49.85L58.2-47.2 M16.3-49.85l-4.65,2.65 M44.25-82.2l-4.65,2.65 M76.85-90.3l4.65,2.7
M81.5-49.85l-4.65,2.65 M86.15,1.35l-4.65-2.7 M44.25-1.35l-4.65,2.7 M62.85-1.35l-4.65,2.7 M109.4-1.35l-4.65,2.7 M25.6-1.35
l-4.65,2.7 M-95.4,95.7v-5.4l4.65-2.7l4.65,2.7v5.4 M-86.1,90.3l4.7-2.7l4.65,2.7v5.4 M-104.7,95.7v-5.4l4.65-2.7l4.65,2.7
M-100.05,82.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4L-100.05,82.2z M-95.4,74.15l4.65-2.7l4.65,2.7v5.4l-4.65,2.65l-4.65-2.65
M-86.1,74.15l4.7-2.7l4.65,2.7v5.4l-4.65,2.65l-4.7-2.65 M-100.05,87.6v-5.4 M-90.75,87.6v-5.4 M-81.4,87.6v-5.4 M-109.35,87.6
l4.65,2.7 M-104.7,79.55l-4.65,2.65 M-109.35,55.25l4.65,2.7v5.4l-4.65,2.7 M-109.35,71.45l4.65,2.7 M-90.75,66.05l-4.65-2.7v-5.4
l4.65-2.7l4.65,2.7v5.4L-90.75,66.05v5.4 M-86.1,57.95l4.7-2.7l4.65,2.7v5.4l-4.65,2.7l-4.7-2.7 M-81.4,71.45v-5.4 M-100.05,71.45
v-5.4l4.65-2.7 M-95.4,57.95l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4 M-81.4,55.25v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7
M-100.05,66.05l-4.65-2.7 M-104.7,57.95l4.65-2.7 M-86.1,41.8l-4.65-2.7v-5.4l4.65-2.7l4.7,2.7v5.4L-86.1,41.8z M-81.4,49.85
l-4.7-2.65v-5.4 M-100.05,49.85l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4 M-95.4,31l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7V31
l4.65,2.7 M-86.1,31v-5.4l4.7-2.7l4.65,2.7V31l-4.65,2.7 M-100.05,39.1v-5.4 M-90.75,39.1l-4.65,2.7 M-109.35,39.1l4.65,2.7
M-104.7,31l-4.65,2.7 M-109.35,6.75l4.65,2.7v5.4l-4.65,2.65 M-86.1,14.85v-5.4l4.7-2.7l4.65,2.7v5.4l-4.65,2.65L-86.1,14.85z
M-81.4,22.9v-5.4 M-86.1,25.6l-4.65-2.7v-5.4l4.65-2.65 M-100.05,22.9v-5.4l4.65-2.65l4.65,2.65 M-100.05,6.75v-5.4l4.65-2.7
l4.65,2.7v5.4l-4.65,2.7L-100.05,6.75z M-81.4,6.75v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M-90.75,6.75l4.65,2.7 M-95.4,14.85v-5.4
M-95.4,25.6l4.65-2.7 M-100.05,17.5l-4.65-2.65 M-104.7,9.45l4.65-2.7 M-109.35,22.9l4.65,2.7 M-86.1,47.2l-4.65,2.65
M-104.7,47.2l-4.65,2.65 M-11.6,95.7v-5.4l4.65-2.7l4.65,2.7 M-20.9,95.7v-5.4l4.65-2.7l4.65,2.7 M-16.25,82.2l-4.65-2.65v-5.4
l4.65-2.7l4.65,2.7v5.4L-16.25,82.2v5.4 M-2.3,79.55l-4.65,2.65l-4.65-2.65 M-6.95,82.2v5.4 M-30.2,95.7v-5.4l4.65-2.7l4.65,2.7
M-39.55,95.7v-5.4l4.7-2.7l4.65,2.7 M-39.55,79.55v-5.4l4.7-2.7l4.65,2.7v5.4l-4.65,2.65L-39.55,79.55l-4.65,2.65l-4.65-2.65
M-20.9,79.55l-4.65,2.65l-4.65-2.65 M-34.85,87.6v-5.4 M-25.55,87.6v-5.4 M-20.9,74.15l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4
M-30.2,74.15l4.65-2.7 M-25.55,66.05l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M-39.55,74.15l-4.65-2.7v-5.4l4.65-2.7l4.7,2.7v5.4
M-30.2,57.95l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4 M-39.55,63.35v-5.4l4.7-2.7 M-30.2,63.35l-4.65,2.7 M-11.6,74.15l4.65-2.7
l4.65,2.7 M-6.95,66.05l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4L-6.95,66.05v5.4 M-16.25,66.05l4.65-2.7 M-11.6,57.95l-4.65-2.7v-5.4
l4.65-2.65l4.65,2.65v5.4 M-16.25,55.25l-4.65,2.7 M-48.85,95.7v-5.4l4.65-2.7l4.65,2.7 M-58.15,95.7v-5.4l4.65-2.7l4.65,2.7
M-58.15,79.55v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65L-58.15,79.55l-4.65,2.65l-4.65-2.65 M-44.2,87.6v-5.4 M-53.5,87.6v-5.4
M-67.45,95.7v-5.4l4.65-2.7l4.65,2.7 M-76.75,90.3l4.65-2.7l4.65,2.7 M-76.75,74.15l4.65-2.7l4.65,2.7v5.4l-4.65,2.65l-4.65-2.65
M-62.8,87.6v-5.4 M-72.1,87.6v-5.4 M-67.45,74.15l4.65-2.7l4.65,2.7 M-62.8,71.45v-5.4l4.65-2.7l4.65,2.7v5.4 M-62.8,66.05
l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M-76.75,63.35l4.65,2.7v5.4 M-62.8,55.25v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7
M-67.45,63.35l-4.65,2.7 M-72.1,55.25l4.65,2.7 M-48.85,74.15l4.65-2.7 M-44.2,66.05l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7
M-53.5,49.85l4.65-2.65l4.65,2.65v5.4 M-53.5,66.05l4.65-2.7 M-53.5,55.25l4.65,2.7 M-48.85,47.2v-5.4l4.65-2.7l4.65,2.7v5.4
l-4.65,2.65 M-58.15,47.2v-5.4l4.65-2.7l4.65,2.7 M-58.15,25.6l4.65-2.7l4.65,2.7V31l-4.65,2.7l-4.65-2.7V25.6l-4.65-2.7v-5.4
M-48.85,25.6l4.65-2.7l4.65,2.7V31l-4.65,2.7l-4.65-2.7 M-44.2,39.1v-5.4 M-53.5,39.1v-5.4 M-62.8,49.85l-4.65-2.65v-5.4l4.65-2.7
l4.65,2.7 M-76.75,47.2v-5.4l4.65-2.7l4.65,2.7 M-76.75,25.6l4.65-2.7l4.65,2.7V31l-4.65,2.7l-4.65-2.7 M-58.15,31l-4.65,2.7
l-4.65-2.7 M-72.1,39.1v-5.4 M-62.8,39.1v-5.4 M-67.45,14.85v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65L-67.45,14.85l-4.65,2.65
l-4.65-2.65 M-72.1,22.9v-5.4 M-62.8,6.75v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M-72.1,6.75l4.65,2.7 M-44.2,22.9v-5.4l4.65-2.65
l4.7,2.65v5.4l-4.7,2.7 M-44.2,17.5l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4 M-48.85,14.85l-4.65,2.65l-4.65-2.65 M-53.5,22.9v-5.4
M-44.2,6.75v-5.4l4.65-2.7l4.7,2.7v5.4l-4.7,2.7 M-53.5,6.75l4.65,2.7 M-67.45,25.6l4.65-2.7 M-11.6,47.2v-5.4l4.65-2.7l4.65,2.7
M-11.6,41.8l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M-16.25,33.7L-20.9,31v-5.4l4.65-2.7l4.65,2.7V31 M-2.3,31l-4.65,2.7
M-30.2,47.2v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65 M-39.55,41.8l4.7-2.7l4.65,2.7 M-34.85,22.9l4.65,2.7V31l-4.65,2.7l-4.7-2.7
M-20.9,31l-4.65,2.7L-30.2,31 M-34.85,39.1v-5.4 M-25.55,39.1v-5.4 M-20.9,25.6l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4
M-25.55,17.5l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4 M-25.55,6.75v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M-30.2,14.85l-4.65,2.65
M-34.85,6.75l4.65,2.7 M-6.95,17.5l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4L-6.95,17.5v5.4l-4.65,2.7 M-11.6,14.85l-4.65,2.65
M-16.25,6.75l4.65,2.7 M-16.25,1.35l4.65-2.7l4.65,2.7v5.4 M-6.95,22.9l4.65,2.7 M-30.2,25.6l4.65-2.7 M-16.25,39.1l-4.65,2.7
M-67.45,47.2l-4.65,2.65 M-2.3,47.2l-4.65,2.65 M-34.85,49.85l-4.7-2.65 M-16.25,49.85l-4.65-2.65 M-81.4,39.1l4.65,2.7
M-11.6-1.35v-5.4l4.65-2.7l4.65,2.7 M-11.6-6.75l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4 M-16.25-14.85l-4.65-2.65v-5.4l4.65-2.7
l4.65,2.7v5.4 M-2.3-17.5l-4.65,2.65 M-20.9-1.35v-5.4l4.65-2.7 M-20.9-6.75l-4.65-2.7v-5.4l4.65-2.65 M-25.55-9.45l-4.65,2.7
l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65 M-30.2-6.75v5.4l-4.65,2.7 M-39.55-1.35v-5.4l4.7-2.7 M-34.85-14.85l-4.7-2.65v-5.4l4.7-2.7
l4.65,2.7v5.4 M-30.2-33.7v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7L-30.2-33.7l-4.65,2.7l-4.7-2.7v-5.4l4.7-2.7l4.65,2.7 M-20.9-22.9
l-4.65-2.7V-31 M-34.85-25.6V-31 M-39.55-39.1l-4.65-2.7v-5.4l4.65-2.65l4.7,2.65v5.4 M-25.55-41.8v-5.4l4.65-2.65l4.65,2.65v5.4
l-4.65,2.7 M-6.95-31l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4L-6.95-31v5.4l-4.65,2.7 M-16.25-25.6V-31l4.65-2.7 M-16.25-41.8
l4.65,2.7 M-16.25-47.2l4.65-2.65l4.65,2.65v5.4 M-30.2-22.9l4.65-2.7 M-16.25-31l-4.65-2.7 M-6.95-25.6l4.65,2.7 M-44.2,1.35
l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M-58.15-1.35v-5.4l4.65-2.7l4.65,2.7 M-58.15-6.75l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4
M-62.8-14.85l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4 M-39.55-17.5l-4.65,2.65l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M-44.2-9.45v-5.4
M-53.5-14.85l4.65-2.65 M-62.8,1.35l-4.65-2.7v-5.4l4.65-2.7 M-76.75-6.75l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4L-76.75-6.75
v5.4 M-76.75-17.5v-5.4l4.65-2.7l4.65,2.7 M-67.45-17.5l-4.65,2.65 M-72.1-9.45l4.65,2.7 M-67.45-33.7v-5.4l4.65-2.7l4.65,2.7v5.4
L-62.8-31L-67.45-33.7z M-62.8-25.6V-31 M-72.1-25.6V-31l4.65-2.7 M-72.1-31l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M-76.75-39.1
l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4 M-62.8-41.8v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M-44.2-25.6V-31l4.65-2.7 M-44.2-31
l-4.65-2.7v-5.4l4.65-2.7 M-48.85-33.7L-53.5-31l-4.65-2.7 M-48.85-22.9l-4.65-2.7V-31 M-53.5-41.8l4.65,2.7 M-58.15-22.9l4.65-2.7
M-58.15-49.85v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65 M-48.85-55.25l4.65-2.7l4.65,2.7v5.4 M-58.15-71.45l4.65-2.7l4.65,2.7v5.4
l-4.65,2.7l-4.65-2.7V-71.45z M-48.85-71.45l4.65-2.7l4.65,2.7v5.4l-4.65,2.7l-4.65-2.7 M-44.2-57.95v-5.4 M-53.5-57.95v-5.4
M-76.75-49.85v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65 M-67.45-55.25l4.65-2.7l4.65,2.7 M-76.75-55.25l-4.65-2.7v-5.4l4.65-2.7
l4.65,2.7v5.4 M-81.4-63.35l-4.7-2.7v-5.4l4.7-2.7l4.65,2.7v5.4 M-81.4-74.15v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7
M-58.15-66.05l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M-62.8-57.95v-5.4 M-72.1-74.15l4.65,2.7 M-67.45-66.05l-4.65,2.7
M-67.45-82.2v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65L-67.45-82.2l-4.65,2.65 M-76.75-82.2v-5.4l4.65-2.7l4.65,2.7 M-72.1-90.3
v-5.4 M-62.8-90.3v-5.4 M-53.5-74.15v-5.4l4.65-2.65l4.65,2.65v5.4 M-58.15-82.2l4.65,2.65 M-58.15-87.6l4.65-2.7l4.65,2.7v5.4
M-53.5-90.3v-5.4 M-44.2-95.7v5.4l-4.65,2.7 M-62.8-74.15v-5.4 M-11.6-49.85v-5.4l4.65-2.7l4.65,2.7 M-20.9-49.85v-5.4l4.65-2.7
l4.65,2.7 M-16.25-63.35l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4L-16.25-63.35v5.4 M-2.3-66.05l-4.65,2.7l-4.65-2.7 M-11.6-71.45
l4.65-2.7l4.65,2.7 M-6.95-63.35v5.4 M-25.55-47.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M-39.55-55.25l4.7-2.7l4.65,2.7
M-39.55-71.45l4.7-2.7l4.65,2.7v5.4l-4.65,2.7l-4.7-2.7 M-20.9-71.45l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4 M-20.9-66.05
l-4.65,2.7l-4.65-2.7 M-25.55-74.15l-4.65,2.7 M-34.85-63.35v5.4 M-25.55-57.95v-5.4 M-34.85-74.15v-5.4l4.65-2.65l4.65,2.65
M-44.2-79.55l4.65-2.65l4.7,2.65 M-39.55-82.2v-5.4l4.7-2.7l4.65,2.7v5.4 M-34.85-90.3v-5.4 M-16.25-95.7v5.4l-4.65,2.7l-4.65-2.7
v-5.4 M-25.55-90.3l-4.65,2.7 M-20.9-82.2v-5.4 M-6.95-79.55l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4L-6.95-79.55v5.4 M-16.25-79.55
l4.65-2.65 M-11.6-87.6l-4.65-2.7 M-6.95-95.7v5.4 M-44.2-90.3l4.65,2.7 M-62.8-47.2l-4.65-2.65 M-44.2-47.2l-4.65-2.65
M-30.2-49.85l-4.65,2.65 M-2.3-49.85l-4.65,2.65 M-95.4-1.35v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M-86.1-6.75l4.7-2.7
M-100.05,1.35l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M-95.4-17.5l-4.65,2.65l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7V-17.5z M-95.4-22.9
l4.65-2.7l4.65,2.7v5.4l-4.65,2.65l-4.65-2.65 M-81.4-14.85l-4.7-2.65 M-100.05-9.45v-5.4 M-90.75-14.85v5.4 M-109.35-9.45
l4.65,2.7 M-104.7-17.5l-4.65,2.65 M-109.35-41.8l4.65,2.7v5.4l-4.65,2.7 M-90.75-25.6V-31l4.65-2.7l4.7,2.7v5.4l-4.7,2.7
M-100.05-25.6V-31l4.65-2.7l4.65,2.7 M-100.05-47.2l4.65-2.65l4.65,2.65v5.4l-4.65,2.7l-4.65-2.7V-47.2l-4.65-2.65 M-90.75-41.8
l4.65,2.7v5.4 M-86.1-39.1l4.7-2.7 M-95.4-33.7v-5.4 M-109.35-25.6l4.65,2.7 M-100.05-31l-4.65-2.7 M-104.7-39.1l4.65-2.7
M-95.4-49.85v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65 M-86.1-55.25l4.7-2.7 M-95.4-55.25l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4
M-100.05-63.35l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M-95.4-71.45l4.65-2.7l4.65,2.7 M-86.1-66.05l-4.65,2.7 M-109.35-57.95
l4.65,2.7v5.4l-4.65,2.65 M-109.35-74.15l4.65,2.7 M-104.7-66.05l-4.65,2.7 M-109.35-90.3l4.65,2.7v5.4l-4.65,2.65 M-81.4-79.55
l-4.7-2.65v-5.4l4.7-2.7l4.65,2.7 M-86.1-82.2l-4.65,2.65l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M-100.05-74.15v-5.4l4.65-2.65
M-95.4-87.6l-4.65-2.7v-5.4 M-81.4-95.7v5.4 M-90.75-95.7v5.4 M-90.75-79.55v5.4 M-104.7-55.25l4.65-2.7 M-100.05-79.55
l-4.65-2.65 M-104.7-87.6l4.65-2.7 M-81.4-47.2l-4.7-2.65 M-76.75-33.7L-81.4-31 M-81.4-25.6l4.65,2.7 M-67.45-1.35l-4.65,2.7
M-104.7-1.35l-4.65,2.7 M-81.4,1.35l-4.7-2.7 M-25.55,1.35l-4.65-2.7 M-53.5,1.35l4.65-2.7 M-2.3-1.35l-4.65,2.7 M-2.3,57.95
l4.65-2.7 M2.35,66.05l-4.65-2.7 M-2.3-39.1l4.65-2.7 M2.35-31l-4.65-2.7 M2.35-79.55L-2.3-82.2 M-2.3-87.6l4.65-2.7 M-2.3,9.45
l4.65-2.7 M2.35,17.5l-4.65-2.65"/>
</symbol>
<g id="Layer_1">
</g>
<g id="Layer_6">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#EFEEEE" d="M217.5,108.95c0,29.833-10.533,55.399-31.6,76.7
c-0.7,0.833-1.484,1.6-2.351,2.3c-3.466,3.399-7.134,6.483-11,9.25c-18.267,13.467-39.366,20.2-63.3,20.2
c-23.967,0-45.033-6.733-63.2-20.2c-4.8-3.4-9.3-7.25-13.5-11.55c-16.367-16.267-26.417-35.167-30.15-56.7
c-0.733-4.2-1.217-8.467-1.45-12.8c-0.1-2.4-0.15-4.801-0.15-7.2c0-2.534,0.05-4.95,0.15-7.25c0-0.233,0.066-0.467,0.2-0.7
c1.567-26.6,12.033-49.583,31.4-68.95C53.85,11.017,79.417,0.5,109.25,0.5c29.934,0,55.483,10.517,76.65,31.55
C206.967,53.483,217.5,79.117,217.5,108.95z"/>
</g>
<g id="Layer_5">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#010101" d="M195.45,43l-22.4,22.4c-8.833,13-13.25,27.867-13.25,44.6
c0,17.934,5.067,33.833,15.2,47.7l19,18.95c-2.5,3.066-5.2,6.066-8.1,9c-0.7,0.833-1.484,1.6-2.351,2.3
c-2.533,2.5-5.167,4.816-7.899,6.95L158.1,177.35c-13.934-10.733-30.133-16.1-48.6-16.1c-17.933,0-33.833,5.1-47.7,15.3
L43.25,195.15c-3.767-2.867-7.333-6.034-10.7-9.5c-2.8-2.801-5.417-5.667-7.85-8.601l19.15-19.2
c10.066-13.966,15.1-29.916,15.1-47.85c0-17.5-4.867-33.017-14.6-46.55l-21.05-21c2.833-3.6,5.917-7.067,9.25-10.4
c2.934-2.867,5.934-5.55,9-8.05L61.9,44.35C75.7,54.583,91.567,59.7,109.5,59.7c18.467,0,34.666-5.367,48.6-16.1L177.4,24.35
c2.899,2.367,5.732,4.933,8.5,7.7C189.367,35.583,192.55,39.233,195.45,43z"/>
</g>
<g id="Layer_4">
<defs>
<path id="SVGID_1_" d="M159.8,110c0-16.733,4.417-31.6,13.25-44.6l22.4-22.4c-2.9-3.767-6.083-7.417-9.55-10.95
c-2.768-2.767-5.601-5.333-8.5-7.7L158.1,43.6c-13.934,10.733-30.133,16.1-48.6,16.1c-17.933,0-33.8-5.117-47.6-15.35L41.55,24
c-3.066,2.5-6.066,5.183-9,8.05c-3.333,3.333-6.417,6.8-9.25,10.4l21.05,21c9.733,13.533,14.6,29.05,14.6,46.55
c0,17.934-5.034,33.884-15.1,47.85l-19.15,19.2c2.433,2.934,5.05,5.8,7.85,8.601c3.367,3.466,6.934,6.633,10.7,9.5L61.8,176.55
c13.867-10.2,29.767-15.3,47.7-15.3c18.467,0,34.666,5.366,48.6,16.1L175.65,194.9c2.732-2.134,5.366-4.45,7.899-6.95
c0.866-0.7,1.65-1.467,2.351-2.3c2.899-2.934,5.6-5.934,8.1-9l-19-18.95C164.867,143.833,159.8,127.934,159.8,110z"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="visible"/>
</clipPath>
<g clip-path="url(#SVGID_2_)">
<use xlink:href="#hex_grid" width="228.55" height="197.233" x="-114.25" y="-98.617" transform="matrix(1.1415 0 0 -1.1415 105.5 107.75)" overflow="visible"/>
</g>
</g>
<g id="Layer_2">
<g>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#35C6F4" d="M79.1,110.95c-0.033-0.667-0.05-1.333-0.05-2
c0-0.7,0.017-1.366,0.05-2c0-0.067,0.017-0.134,0.05-0.2c0.434-7.367,3.333-13.733,8.7-19.1c5.9-5.833,12.983-8.75,21.25-8.75
c8.301,0,15.384,2.917,21.25,8.75c5.834,5.934,8.75,13.033,8.75,21.3c0,8.267-2.916,15.35-8.75,21.25
c-0.199,0.233-0.416,0.45-0.649,0.649c-0.967,0.934-1.983,1.784-3.05,2.551c-5.066,3.733-10.917,5.6-17.551,5.6
c-6.633,0-12.466-1.866-17.5-5.6c-1.333-0.934-2.583-2-3.75-3.2c-4.533-4.5-7.317-9.733-8.35-15.7
C79.3,113.334,79.167,112.15,79.1,110.95z M126.1,127.25l3.601,3.6L126.1,127.25z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#35C6F4" stroke-width="2" stroke-miterlimit="1" d="
M158.6,60.25l-15,14.65 M31.7,33.1l40.75,40.65 M126.1,127.25l3.601,3.6 M157.05,158l27.65,28.6 M153.05,153.95l-10.75-11.2
M186.6,33l-28,27.25 M33.15,186.25l27.35-27.4"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#35C6F4" stroke-width="7" stroke-miterlimit="1" d="
M158.6,60.25l-16.949,17.2 M59.4,61.35L76.6,78.5 M60.5,158.85l16.75-17.399 M153.05,153.95l4,4.05 M139.45,140.4l13.6,13.55"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 26 KiB

BIN
Logo/Thumbs.db Normal file

Binary file not shown.

View File

@@ -1,2 +0,0 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/Environment/ExternalSources/Decompiler/DecompileMethodBodies/@EntryValue">True</s:Boolean></wpf:ResourceDictionary>

45
appveyor.yml Normal file
View File

@@ -0,0 +1,45 @@
version: '0.2.0.{build}'
branches:
only:
- develop
assembly_info:
patch: true
file: 'src\NzbDrone.Common\Properties\SharedAssemblyInfo.cs'
assembly_version: '{version}'
assembly_file_version: '{version}'
assembly_informational_version: '{version}-rc1'
environment:
DOTNET_CLI_TELEMETRY_OPTOUT: 1
install:
- git submodule update --init --recursive
build_script:
- ps: ./build-appveyor.ps1
test: off
# test:
# assemblies:
# - '_tests\*Test.dll'
# categories:
# except:
# - IntegrationTest
# - AutomationTest
artifacts:
- path: '_artifacts\*.zip'
- path: '_artifacts\*.tar.gz'
cache:
- '%USERPROFILE%\.nuget\packages'
- node_modules
only_commits:
files:
- src/
- osx/
- gulp/
- logo/

303
build-appveyor.cake Normal file
View File

@@ -0,0 +1,303 @@
#addin "Cake.Npm"
#addin "SharpZipLib"
#addin "Cake.Compression"
// Build variables
var outputFolder = "./_output";
var outputFolderMono = outputFolder + "_mono";
var outputFolderOsx = outputFolder + "_osx";
var outputFolderOsxApp = outputFolderOsx + "_app";
var testPackageFolder = "./_tests";
var testSearchPattern = "*.Test/bin/x86/Release";
var sourceFolder = "./src";
var solutionFile = sourceFolder + "/NzbDrone.sln";
var updateFolder = outputFolder + "/NzbDrone.Update";
var updateFolderMono = outputFolderMono + "/NzbDrone.Update";
// Artifact variables
var artifactsFolder = "./_artifacts";
var artifactsFolderWindows = artifactsFolder + "/windows";
var artifactsFolderLinux = artifactsFolder + "/linux";
var artifactsFolderOsx = artifactsFolder + "/osx";
var artifactsFolderOsxApp = artifactsFolder + "/osx-app";
// Utility methods
public void RemoveEmptyFolders(string startLocation) {
foreach (var directory in System.IO.Directory.GetDirectories(startLocation))
{
RemoveEmptyFolders(directory);
if (System.IO.Directory.GetFiles(directory).Length == 0 &&
System.IO.Directory.GetDirectories(directory).Length == 0)
{
DeleteDirectory(directory, false);
}
}
}
public void CleanFolder(string path, bool keepConfigFiles) {
DeleteFiles(path + "/**/*.transform");
if (!keepConfigFiles) {
DeleteFiles(path + "/**/*.dll.config");
}
DeleteFiles(path + "/**/FluentValidation.resources.dll");
DeleteFiles(path + "/**/App.config");
DeleteFiles(path + "/**/*.less");
DeleteFiles(path + "/**/*.vshost.exe");
DeleteFiles(path + "/**/*.dylib");
RemoveEmptyFolders(path);
}
public void CreateMdbs(string path) {
foreach (var file in System.IO.Directory.EnumerateFiles(path, "*.pdb", System.IO.SearchOption.AllDirectories)) {
var actualFile = file.Substring(0, file.Length - 4);
if (FileExists(actualFile + ".exe")) {
StartProcess("./tools/pdb2mdb/pdb2mdb.exe", new ProcessSettings()
.WithArguments(args => args.Append(actualFile + ".exe")));
}
if (FileExists(actualFile + ".dll")) {
StartProcess("./tools/pdb2mdb/pdb2mdb.exe", new ProcessSettings()
.WithArguments(args => args.Append(actualFile + ".dll")));
}
}
}
// Build Tasks
Task("Compile").Does(() => {
// Build
if (DirectoryExists(outputFolder)) {
DeleteDirectory(outputFolder, true);
}
MSBuild(solutionFile, config =>
config.UseToolVersion(MSBuildToolVersion.VS2015)
.WithTarget("Clean")
.SetVerbosity(Verbosity.Minimal));
NuGetRestore(solutionFile);
MSBuild(solutionFile, config =>
config.UseToolVersion(MSBuildToolVersion.VS2015)
.SetPlatformTarget(PlatformTarget.x86)
.SetConfiguration("Release")
.WithProperty("AllowedReferenceRelatedFileExtensions", new string[] { ".pdb" })
.WithTarget("Build")
.SetVerbosity(Verbosity.Minimal));
CleanFolder(outputFolder, false);
// Add JsonNet
DeleteFiles(outputFolder + "/Newtonsoft.Json.*");
CopyFiles(sourceFolder + "/packages/Newtonsoft.Json.*/lib/net35/*.dll", outputFolder);
CopyFiles(sourceFolder + "/packages/Newtonsoft.Json.*/lib/net35/*.dll", updateFolder);
// Remove Mono stuff
DeleteFile(outputFolder + "/Mono.Posix.dll");
});
Task("Gulp").Does(() => {
Npm
.WithLogLevel(NpmLogLevel.Silent)
.FromPath(".")
.Install()
.RunScript("build");
});
Task("PackageMono").Does(() => {
// Start mono package
if (DirectoryExists(outputFolderMono)) {
DeleteDirectory(outputFolderMono, true);
}
CopyDirectory(outputFolder, outputFolderMono);
// Create MDBs
CreateMdbs(outputFolderMono);
// Remove PDBs
DeleteFiles(outputFolderMono + "/**/*.pdb");
// Remove service helpers
DeleteFiles(outputFolderMono + "/ServiceUninstall.*");
DeleteFiles(outputFolderMono + "/ServiceInstall.*");
// Remove native windows binaries
DeleteFiles(outputFolderMono + "/sqlite3.*");
DeleteFiles(outputFolderMono + "/MediaInfo.*");
// Adding NzbDrone.Core.dll.config (for dllmap)
CopyFile(sourceFolder + "/NzbDrone.Core/NzbDrone.Core.dll.config", outputFolderMono + "/NzbDrone.Core.dll.config");
// Adding CurlSharp.dll.config (for dllmap)
CopyFile(sourceFolder + "/NzbDrone.Common/CurlSharp.dll.config", outputFolderMono + "/CurlSharp.dll.config");
// Renaming Radarr.Console.exe to Radarr.exe
DeleteFiles(outputFolderMono + "/Radarr.exe*");
MoveFile(outputFolderMono + "/Radarr.Console.exe", outputFolderMono + "/Radarr.exe");
MoveFile(outputFolderMono + "/Radarr.Console.exe.config", outputFolderMono + "/Radarr.exe.config");
MoveFile(outputFolderMono + "/Radarr.Console.exe.mdb", outputFolderMono + "/Radarr.exe.mdb");
// Remove NzbDrone.Windows.*
DeleteFiles(outputFolderMono + "/NzbDrone.Windows.*");
// Adding NzbDrone.Mono to updatePackage
CopyFiles(outputFolderMono + "/NzbDrone.Mono.*", updateFolderMono);
});
Task("PackageOsx").Does(() => {
// Start osx package
if (DirectoryExists(outputFolderOsx)) {
DeleteDirectory(outputFolderOsx, true);
}
CopyDirectory(outputFolderMono, outputFolderOsx);
// Adding sqlite dylibs
CopyFiles(sourceFolder + "/Libraries/Sqlite/*.dylib", outputFolderOsx);
// Adding MediaInfo dylib
CopyFiles(sourceFolder + "/Libraries/MediaInfo/*.dylib", outputFolderOsx);
// Adding Startup script
CopyFile("./osx/Sonarr", outputFolderOsx + "/Sonarr");
});
Task("PackageOsxApp").Does(() => {
// Start osx app package
if (DirectoryExists(outputFolderOsxApp)) {
DeleteDirectory(outputFolderOsxApp, true);
}
CreateDirectory(outputFolderOsxApp);
// Copy osx package files
CopyDirectory("./osx/Radarr.app", outputFolderOsxApp + "/Radarr.app");
CopyDirectory(outputFolderOsx, outputFolderOsxApp + "/Radarr.app/Contents/MacOS");
});
Task("PackageTests").Does(() => {
// Start tests package
if (DirectoryExists(testPackageFolder)) {
DeleteDirectory(testPackageFolder, true);
}
CreateDirectory(testPackageFolder);
// Copy tests
CopyFiles(sourceFolder + "/" + testSearchPattern + "/*", testPackageFolder);
foreach (var directory in System.IO.Directory.GetDirectories(sourceFolder, "*.Test")) {
var releaseDirectory = directory + "/bin/x86/Release";
if (DirectoryExists(releaseDirectory)) {
foreach (var releaseSubDirectory in System.IO.Directory.GetDirectories(releaseDirectory)) {
Information(System.IO.Path.GetDirectoryName(releaseSubDirectory));
CopyDirectory(releaseSubDirectory, testPackageFolder + "/" + System.IO.Path.GetFileName(releaseSubDirectory));
}
}
}
// Install NUnit.ConsoleRunner
NuGetInstall("NUnit.ConsoleRunner", new NuGetInstallSettings {
Version = "3.2.0",
OutputDirectory = testPackageFolder
});
// Copy dlls
CopyFiles(outputFolder + "/*.dll", testPackageFolder);
// Copy scripts
CopyFiles("./*.sh", testPackageFolder);
// Create MDBs for tests
CreateMdbs(testPackageFolder);
// Remove config
DeleteFiles(testPackageFolder + "/*.log.config");
// Clean
CleanFolder(testPackageFolder, true);
// Adding NzbDrone.Core.dll.config (for dllmap)
CopyFile(sourceFolder + "/NzbDrone.Core/NzbDrone.Core.dll.config", testPackageFolder + "/NzbDrone.Core.dll.config");
// Adding CurlSharp.dll.config (for dllmap)
CopyFile(sourceFolder + "/NzbDrone.Common/CurlSharp.dll.config", testPackageFolder + "/CurlSharp.dll.config");
// Adding CurlSharp libraries
CopyFiles(sourceFolder + "/ExternalModules/CurlSharp/libs/i386/*", testPackageFolder);
});
Task("CleanupWindowsPackage").Does(() => {
// Remove mono
DeleteFiles(outputFolder + "/NzbDrone.Mono.*");
// Adding NzbDrone.Windows to updatePackage
CopyFiles(outputFolder + "/NzbDrone.Windows.*", updateFolder);
});
Task("Build")
.IsDependentOn("Compile")
.IsDependentOn("Gulp")
.IsDependentOn("PackageMono")
.IsDependentOn("PackageOsx")
.IsDependentOn("PackageOsxApp")
.IsDependentOn("PackageTests")
.IsDependentOn("CleanupWindowsPackage");
// Build Artifacts
Task("CleanArtifacts").Does(() => {
if (DirectoryExists(artifactsFolder)) {
DeleteDirectory(artifactsFolder, true);
}
CreateDirectory(artifactsFolder);
});
Task("ArtifactsWindows").Does(() => {
CopyDirectory(outputFolder, artifactsFolderWindows + "/Radarr");
});
Task("ArtifactsLinux").Does(() => {
CopyDirectory(outputFolderMono, artifactsFolderLinux + "/Radarr");
});
Task("ArtifactsOsx").Does(() => {
CopyDirectory(outputFolderOsx, artifactsFolderOsx + "/Radarr");
});
Task("ArtifactsOsxApp").Does(() => {
CopyDirectory(outputFolderOsxApp, artifactsFolderOsxApp);
});
Task("CompressArtifacts").Does(() => {
var prefix = "";
if (AppVeyor.IsRunningOnAppVeyor) {
prefix += AppVeyor.Environment.Repository.Branch + ".";
prefix += AppVeyor.Environment.Build.Version + ".";
}
Zip(artifactsFolderWindows, artifactsFolder + "/Radarr." + prefix + "windows.zip");
GZipCompress(artifactsFolderLinux, artifactsFolder + "/Radarr." + prefix + "linux.tar.gz");
GZipCompress(artifactsFolderOsx, artifactsFolder + "/Radarr." + prefix + "osx.tar.gz");
Zip(artifactsFolderOsxApp, artifactsFolder + "/Radarr." + prefix + "osx-app.zip");
});
Task("Artifacts")
.IsDependentOn("CleanArtifacts")
.IsDependentOn("ArtifactsWindows")
.IsDependentOn("ArtifactsLinux")
.IsDependentOn("ArtifactsOsx")
.IsDependentOn("ArtifactsOsxApp")
.IsDependentOn("CompressArtifacts");
// Run
RunTarget("Build");
RunTarget("Artifacts");

184
build-appveyor.ps1 Normal file
View File

@@ -0,0 +1,184 @@
##########################################################################
# This is the Cake bootstrapper script for PowerShell.
# This file was downloaded from https://github.com/cake-build/resources
# Feel free to change this file to fit your needs.
##########################################################################
<#
.SYNOPSIS
This is a Powershell script to bootstrap a Cake build.
.DESCRIPTION
This Powershell script will download NuGet if missing, restore NuGet tools (including Cake)
and execute your Cake build script with the parameters you provide.
.PARAMETER Script
The build script to execute.
.PARAMETER Target
The build script target to run.
.PARAMETER Configuration
The build configuration to use.
.PARAMETER Verbosity
Specifies the amount of information to be displayed.
.PARAMETER Experimental
Tells Cake to use the latest Roslyn release.
.PARAMETER WhatIf
Performs a dry run of the build script.
No tasks will be executed.
.PARAMETER Mono
Tells Cake to use the Mono scripting engine.
.PARAMETER SkipToolPackageRestore
Skips restoring of packages.
.PARAMETER ScriptArgs
Remaining arguments are added here.
.LINK
http://cakebuild.net
#>
[CmdletBinding()]
Param(
[string]$Script = "build-appveyor.cake",
[string]$Target = "Default",
[ValidateSet("Release", "Debug")]
[string]$Configuration = "Release",
[ValidateSet("Quiet", "Minimal", "Normal", "Verbose", "Diagnostic")]
[string]$Verbosity = "Verbose",
[switch]$Experimental,
[Alias("DryRun","Noop")]
[switch]$WhatIf,
[switch]$Mono,
[switch]$SkipToolPackageRestore,
[Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
[string[]]$ScriptArgs
)
[Reflection.Assembly]::LoadWithPartialName("System.Security") | Out-Null
function MD5HashFile([string] $filePath)
{
if ([string]::IsNullOrEmpty($filePath) -or !(Test-Path $filePath -PathType Leaf))
{
return $null
}
[System.IO.Stream] $file = $null;
[System.Security.Cryptography.MD5] $md5 = $null;
try
{
$md5 = [System.Security.Cryptography.MD5]::Create()
$file = [System.IO.File]::OpenRead($filePath)
return [System.BitConverter]::ToString($md5.ComputeHash($file))
}
finally
{
if ($file -ne $null)
{
$file.Dispose()
}
}
}
Write-Host "Preparing to run build script..."
if(!$PSScriptRoot){
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
}
$TOOLS_DIR = Join-Path $PSScriptRoot "tools-cake"
$NUGET_EXE = Join-Path $TOOLS_DIR "nuget.exe"
$CAKE_EXE = Join-Path $TOOLS_DIR "Cake/Cake.exe"
$NUGET_URL = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
$PACKAGES_CONFIG = Join-Path $TOOLS_DIR "packages.config"
$PACKAGES_CONFIG_MD5 = Join-Path $TOOLS_DIR "packages.config.md5sum"
# Should we use mono?
$UseMono = "";
if($Mono.IsPresent) {
Write-Verbose -Message "Using the Mono based scripting engine."
$UseMono = "-mono"
}
# Should we use the new Roslyn?
$UseExperimental = "";
if($Experimental.IsPresent -and !($Mono.IsPresent)) {
Write-Verbose -Message "Using experimental version of Roslyn."
$UseExperimental = "-experimental"
}
# Is this a dry run?
$UseDryRun = "";
if($WhatIf.IsPresent) {
$UseDryRun = "-dryrun"
}
# Make sure tools folder exists
if ((Test-Path $PSScriptRoot) -and !(Test-Path $TOOLS_DIR)) {
Write-Verbose -Message "Creating tools directory..."
New-Item -Path $TOOLS_DIR -Type directory | out-null
}
# Make sure that packages.config exist.
if (!(Test-Path $PACKAGES_CONFIG)) {
Write-Verbose -Message "Downloading packages.config..."
try { (New-Object System.Net.WebClient).DownloadFile("http://cakebuild.net/download/bootstrapper/packages", $PACKAGES_CONFIG) } catch {
Throw "Could not download packages.config."
}
}
# Try find NuGet.exe in path if not exists
if (!(Test-Path $NUGET_EXE)) {
Write-Verbose -Message "Trying to find nuget.exe in PATH..."
$existingPaths = $Env:Path -Split ';' | Where-Object { (![string]::IsNullOrEmpty($_)) -and (Test-Path $_) }
$NUGET_EXE_IN_PATH = Get-ChildItem -Path $existingPaths -Filter "nuget.exe" | Select -First 1
if ($NUGET_EXE_IN_PATH -ne $null -and (Test-Path $NUGET_EXE_IN_PATH.FullName)) {
Write-Verbose -Message "Found in PATH at $($NUGET_EXE_IN_PATH.FullName)."
$NUGET_EXE = $NUGET_EXE_IN_PATH.FullName
}
}
# Try download NuGet.exe if not exists
if (!(Test-Path $NUGET_EXE)) {
Write-Verbose -Message "Downloading NuGet.exe..."
try {
(New-Object System.Net.WebClient).DownloadFile($NUGET_URL, $NUGET_EXE)
} catch {
Throw "Could not download NuGet.exe."
}
}
# Save nuget.exe path to environment to be available to child processed
$ENV:NUGET_EXE = $NUGET_EXE
# Restore tools from NuGet?
if(-Not $SkipToolPackageRestore.IsPresent) {
Push-Location
Set-Location $TOOLS_DIR
# Check for changes in packages.config and remove installed tools if true.
[string] $md5Hash = MD5HashFile($PACKAGES_CONFIG)
if((!(Test-Path $PACKAGES_CONFIG_MD5)) -Or
($md5Hash -ne (Get-Content $PACKAGES_CONFIG_MD5 ))) {
Write-Verbose -Message "Missing or changed package.config hash..."
Remove-Item * -Recurse -Exclude packages.config,nuget.exe
}
Write-Verbose -Message "Restoring tools from NuGet..."
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$TOOLS_DIR`""
if ($LASTEXITCODE -ne 0) {
Throw "An error occured while restoring NuGet tools."
}
else
{
$md5Hash | Out-File $PACKAGES_CONFIG_MD5 -Encoding "ASCII"
}
Write-Verbose -Message ($NuGetOutput | out-string)
Pop-Location
}
# Make sure that Cake has been installed.
if (!(Test-Path $CAKE_EXE)) {
Throw "Could not find Cake.exe at $CAKE_EXE"
}
# Start Cake
Write-Host "Running build script..."
Invoke-Expression "& `"$CAKE_EXE`" `"$Script`" -target=`"$Target`" -configuration=`"$Configuration`" -verbosity=`"$Verbosity`" $UseMono $UseDryRun $UseExperimental $ScriptArgs"
exit $LASTEXITCODE

258
build.ps1
View File

@@ -1,257 +1 @@
$msBuild = 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe'
$outputFolder = '.\_output'
$outputFolderMono = '.\_output_mono'
$outputFolderOsx = '.\_output_osx'
$outputFolderOsxApp = '.\_output_osx_app'
$testPackageFolder = '.\_tests\'
$testSearchPattern = '*.Test\bin\x86\Release'
$sourceFolder = '.\src'
$updateFolder = $outputFolder + '\NzbDrone.Update'
$updateFolderMono = $outputFolderMono + '\NzbDrone.Update'
Function Build()
{
Write-Host "##teamcity[progressStart 'Build']"
$clean = $msbuild + " src\nzbdrone.sln /t:Clean /m"
$build = $msbuild + " src\nzbdrone.sln /p:Configuration=Release /p:Platform=x86 /t:Build /m"
if(Test-Path $outputFolder)
{
Remove-Item -Recurse -Force $outputFolder -ErrorAction Continue
}
Invoke-Expression $clean
CheckExitCode
Invoke-Expression $build
CheckExitCode
CleanFolder $outputFolder
AddJsonNet
Write-Host "Removing Mono.Posix.dll"
Remove-Item "$outputFolder\Mono.Posix.dll"
Write-Host "##teamcity[progressFinish 'Build']"
}
Function CleanFolder($path, $keepConfigFiles)
{
Write-Host Removing XMLDoc files
get-childitem $path -File -Filter *.xml -Recurse | foreach ($_) {
$filename = $_.FullName
$exeFilename = $filename -replace "xml", "exe"
$dllFilename = $filename -replace "xml", "dll"
if (Test-Path $exeFilename) {
remove-item $_.fullname
}
if (Test-Path $dllFilename) {
remove-item $_.fullname
}
}
get-childitem $path -File -Filter *.transform -Recurse | foreach ($_) {remove-item $_.fullname}
if($keepConfigFiles -ne $true)
{
get-childitem $path -File -Filter *.dll.config -Recurse | foreach ($_) {remove-item $_.fullname}
}
Write-Host Removing FluentValidation.Resources files
get-childitem $path -File -Filter FluentValidation.resources.dll -recurse | foreach ($_) {remove-item $_.fullname}
get-childitem $path -File -Filter app.config -Recurse | foreach ($_) {remove-item $_.fullname}
Write-Host Removing .less files
get-childitem $path -File -Filter *.less -Recurse | foreach ($_) {remove-item $_.fullname}
Write-Host Removing vshost files
get-childitem $path -File -Filter *.vshost.exe -Recurse | foreach ($_) {remove-item $_.fullname}
if(Test-Path $$path\NuGet)
{
Write-Host Removing NuGet
Remove-Item -Recurse -Force "$path\NuGet"
}
Write-Host Removing Empty folders
while (Get-ChildItem $path -recurse | where {!@(Get-ChildItem -force $_.fullname)} | Test-Path)
{
Get-ChildItem $path -Directory -recurse | where {!@(Get-ChildItem -force $_.fullname)} | Remove-Item
}
}
Function PackageMono()
{
Write-Host "##teamcity[progressStart 'Creating Mono Package']"
if(Test-Path $outputFolderMono)
{
Remove-Item -Recurse -Force $outputFolderMono -ErrorAction Continue
}
Copy-Item $outputFolder $outputFolderMono -recurse
Write-Host Creating MDBs
get-childitem $outputFolderMono -File -Include @("*.exe", "*.dll") -Exclude @("MediaInfo.dll", "sqlite3.dll") -Recurse | foreach ($_) {
Write-Host "Creating .mdb for $_"
& "tools\pdb2mdb\pdb2mdb.exe" $_.fullname
}
Write-Host Removing PDBs
get-childitem $outputFolderMono -File -Filter *.pdb -Recurse | foreach ($_) {remove-item $_.fullname}
Write-Host Removing Service helpers
get-childitem $outputFolderMono -File -Filter ServiceUninstall.* -Recurse | foreach ($_) {remove-item $_.fullname}
get-childitem $outputFolderMono -File -Filter ServiceInstall.* -Recurse | foreach ($_) {remove-item $_.fullname}
Write-Host Removing native windows binaries Sqlite, MediaInfo
get-childitem $outputFolderMono -File -Filter sqlite3.* -Recurse | foreach ($_) {remove-item $_.fullname}
get-childitem $outputFolderMono -File -Filter MediaInfo.* -Recurse | foreach ($_) {remove-item $_.fullname}
Write-Host "Adding MediaInfoDotNet.dll.config (for dllmap)"
Copy-Item "$sourceFolder\MediaInfoDotNet.dll.config" $outputFolderMono
Write-Host Renaming NzbDrone.Console.exe to NzbDrone.exe
Get-ChildItem $outputFolderMono -File -Filter "NzbDrone.exe*" -Recurse | foreach ($_) {remove-item $_.fullname}
Write-Host Removing NzbDrone.Windows
get-childitem $outputFolderMono -File -Filter NzbDrone.Windows.* -Recurse | foreach ($_) {remove-item $_.fullname}
Get-ChildItem $outputFolderMono -File -Filter "NzbDrone.Console.exe*" -Recurse | foreach ($_) {
$newName = $_.fullname -Replace ".Console",""
Rename-Item $_.fullname $newName
}
Write-Host Adding NzbDrone.Mono to UpdatePackage
Copy-Item $outputFolderMono\* $updateFolderMono -Filter NzbDrone.Mono.*
Write-Host "##teamcity[progressFinish 'Creating Mono Package']"
}
Function PackageOsx()
{
Write-Host "##teamcity[progressStart 'Creating OS X Package']"
if(Test-Path $outputFolderOsx)
{
Remove-Item -Recurse -Force $outputFolderOsx -ErrorAction Continue
}
Copy-Item $outputFolderMono $outputFolderOsx -recurse
Write-Host "Adding sqlite dylibs"
Copy-Item "$sourceFolder\Libraries\sqlite\*.dylib" "$outputFolderOsx"
Write-Host "Adding MediaInfo dylib"
Copy-Item "$sourceFolder\Libraries\MediaInfo\*.dylib" "$outputFolderOsx"
Write-Host "Adding Startup script"
Copy-Item .\osx\Sonarr "$outputFolderOsx"
Write-Host "##teamcity[progressFinish 'Creating OS X Package']"
}
Function PackageOsxApp()
{
Write-Host "##teamcity[progressStart 'Creating OS X App Package']"
if(Test-Path $outputFolderOsxApp)
{
Remove-Item -Recurse -Force $outputFolderOsxApp -ErrorAction Continue
}
Copy-Item .\osx\Sonarr.app $outputFolderOsxApp\Sonarr.app -recurse
Copy-Item $outputFolderOsx $outputFolderOsxApp\Sonarr.app\Contents\MacOS -recurse
Write-Host "##teamcity[progressFinish 'Creating OS X App Package']"
}
Function AddJsonNet()
{
get-childitem $outputFolder -File -Filter Newtonsoft.Json.* -Recurse | foreach ($_) {remove-item $_.fullname}
Copy-Item .\src\packages\Newtonsoft.Json.*.*\lib\net35\*.dll -Destination $outputFolder
Copy-Item .\src\packages\Newtonsoft.Json.*.*\lib\net35\*.dll -Destination $outputFolder\NzbDrone.Update
}
Function PackageTests()
{
Write-Host Packaging Tests
Write-Host "##teamcity[progressStart 'Creating Test Package']"
if(Test-Path $testPackageFolder)
{
Remove-Item -Recurse -Force $testPackageFolder -ErrorAction Continue
}
Get-ChildItem -Recurse -Directory | Where-Object {$_.FullName -like $testSearchPattern} | foreach($_){
Copy-Item -Recurse ($_.FullName + "\*") $testPackageFolder -ErrorAction Ignore
}
.\src\.nuget\NuGet.exe install NUnit.Runners -Version 2.6.1 -Output $testPackageFolder
Copy-Item $outputFolder\*.dll -Destination $testPackageFolder -Force
Copy-Item $outputFolder\*.pdb -Destination $testPackageFolder -Force
Copy-Item .\*.sh -Destination $testPackageFolder -Force
Write-Host Creating MDBs for tests
get-childitem $testPackageFolder -File -Include @("*.exe", "*.dll") -Exclude @("MediaInfo.dll", "sqlite3.dll") -Recurse | foreach ($_) {
Write-Host "Creating .mdb for $_"
& "tools\pdb2mdb\pdb2mdb.exe" $_.fullname
}
get-childitem $testPackageFolder -File -Filter *log.config | foreach ($_) {remove-item $_.fullname}
CleanFolder $testPackageFolder $true
Write-Host "Adding MediaInfoDotNet.dll.config (for dllmap)"
Copy-Item "$sourceFolder\MediaInfoDotNet.dll.config" -Destination $testPackageFolder -Force
Write-Host "##teamcity[progressFinish 'Creating Test Package']"
}
Function RunGulp()
{
Write-Host "##teamcity[progressStart 'Running Gulp']"
Invoke-Expression 'npm install'
CheckExitCode
Invoke-Expression 'gulp build' -ErrorAction Continue -Verbose
CheckExitCode
Write-Host "##teamcity[progressFinish 'Running Gulp']"
}
Function CheckExitCode()
{
if ($lastexitcode -ne 0)
{
Write-Host $errorMessage
exit 1
}
}
Function CleanupWindowsPackage()
{
Write-Host Removing NzbDrone.Mono
get-childitem $outputFolder -File -Filter NzbDrone.Mono.* -Recurse | foreach ($_) {remove-item $_.fullname}
Write-Host Adding NzbDrone.Windows to UpdatePackage
Copy-Item $outputFolder\* $updateFolder -Filter NzbDrone.Windows.*
}
Build
RunGulp
PackageMono
PackageOsx
PackageOsxApp
PackageTests
CleanupWindowsPackage
Write-Warning "DEPRECATED -- Please use build.sh instead."

265
build.sh Executable file
View File

@@ -0,0 +1,265 @@
#! /bin/bash
msBuild='/c/Program Files (x86)/MSBuild/14.0/Bin'
outputFolder='./_output'
outputFolderMono='./_output_mono'
outputFolderOsx='./_output_osx'
outputFolderOsxApp='./_output_osx_app'
testPackageFolder='./_tests/'
testSearchPattern='*.Test/bin/x86/Release'
sourceFolder='./src'
slnFile=$sourceFolder/NzbDrone.sln
updateFolder=$outputFolder/NzbDrone.Update
updateFolderMono=$outputFolderMono/NzbDrone.Update
nuget='tools/nuget/nuget.exe';
CheckExitCode()
{
"$@"
local status=$?
if [ $status -ne 0 ]; then
echo "error with $1" >&2
exit 1
fi
return $status
}
CleanFolder()
{
local path=$1
local keepConfigFiles=$2
find $path -name "*.transform" -exec rm "{}" \;
if [ $keepConfigFiles != true ] ; then
find $path -name "*.dll.config" -exec rm "{}" \;
fi
echo "Removing FluentValidation.Resources files"
find $path -name "FluentValidation.resources.dll" -exec rm "{}" \;
find $path -name "App.config" -exec rm "{}" \;
echo "Removing .less files"
find $path -name "*.less" -exec rm "{}" \;
echo "Removing vshost files"
find $path -name "*.vshost.exe" -exec rm "{}" \;
echo "Removing dylib files"
find $path -name "*.dylib" -exec rm "{}" \;
echo "Removing Empty folders"
find $path -depth -empty -type d -exec rm -r "{}" \;
}
AddJsonNet()
{
rm $outputFolder/Newtonsoft.Json.*
cp $sourceFolder/packages/Newtonsoft.Json.*/lib/net35/*.dll $outputFolder
cp $sourceFolder/packages/Newtonsoft.Json.*/lib/net35/*.dll $outputFolder/NzbDrone.Update
}
BuildWithMSBuild()
{
export PATH=$msBuild:$PATH
CheckExitCode MSBuild.exe $slnFile //t:Clean //m
$nuget restore $slnFile
CheckExitCode MSBuild.exe $slnFile //p:Configuration=Release //p:Platform=x86 //t:Build //m //p:AllowedReferenceRelatedFileExtensions=.pdb
}
BuildWithXbuild()
{
export MONO_IOMAP=case
CheckExitCode xbuild /t:Clean $slnFile
mono $nuget restore $slnFile
CheckExitCode xbuild /p:Configuration=Release /p:Platform=x86 /t:Build /p:AllowedReferenceRelatedFileExtensions=.pdb $slnFile
}
Build()
{
echo "##teamcity[progressStart 'Build']"
rm -rf $outputFolder
if [ $runtime = "dotnet" ] ; then
BuildWithMSBuild
else
BuildWithXbuild
fi
CleanFolder $outputFolder false
AddJsonNet
echo "Removing Mono.Posix.dll"
rm $outputFolder/Mono.Posix.dll
echo "##teamcity[progressFinish 'Build']"
}
RunGulp()
{
echo "##teamcity[progressStart 'npm install']"
npm-cache install npm || CheckExitCode npm install
echo "##teamcity[progressFinish 'npm install']"
echo "##teamcity[progressStart 'Running gulp']"
CheckExitCode npm run build
echo "##teamcity[progressFinish 'Running gulp']"
}
CreateMdbs()
{
local path=$1
if [ $runtime = "dotnet" ] ; then
local pdbFiles=( $(find $path -name "*.pdb") )
for filename in "${pdbFiles[@]}"
do
if [ -e ${filename%.pdb}.dll ] ; then
tools/pdb2mdb/pdb2mdb.exe ${filename%.pdb}.dll
fi
if [ -e ${filename%.pdb}.exe ] ; then
tools/pdb2mdb/pdb2mdb.exe ${filename%.pdb}.exe
fi
done
fi
}
PackageMono()
{
echo "##teamcity[progressStart 'Creating Mono Package']"
rm -rf $outputFolderMono
cp -r $outputFolder $outputFolderMono
echo "Creating MDBs"
CreateMdbs $outputFolderMono
echo "Removing PDBs"
find $outputFolderMono -name "*.pdb" -exec rm "{}" \;
echo "Removing Service helpers"
rm -f $outputFolderMono/ServiceUninstall.*
rm -f $outputFolderMono/ServiceInstall.*
echo "Removing native windows binaries Sqlite, MediaInfo"
rm -f $outputFolderMono/sqlite3.*
rm -f $outputFolderMono/MediaInfo.*
echo "Adding NzbDrone.Core.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Core/NzbDrone.Core.dll.config $outputFolderMono
echo "Adding CurlSharp.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Common/CurlSharp.dll.config $outputFolderMono
echo "Renaming NzbDrone.Console.exe to NzbDrone.exe"
rm $outputFolderMono/Radarr.exe*
for file in $outputFolderMono/Radarr.Console.exe*; do
mv "$file" "${file//.Console/}"
done
echo "Removing NzbDrone.Windows"
rm $outputFolderMono/NzbDrone.Windows.*
echo "Adding NzbDrone.Mono to UpdatePackage"
cp $outputFolderMono/NzbDrone.Mono.* $updateFolderMono
echo "##teamcity[progressFinish 'Creating Mono Package']"
}
PackageOsx()
{
echo "##teamcity[progressStart 'Creating OS X Package']"
rm -rf $outputFolderOsx
cp -r $outputFolderMono $outputFolderOsx
echo "Adding sqlite dylibs"
cp $sourceFolder/Libraries/Sqlite/*.dylib $outputFolderOsx
echo "Adding MediaInfo dylib"
cp $sourceFolder/Libraries/MediaInfo/*.dylib $outputFolderOsx
echo "Adding Startup script"
cp ./osx/Sonarr $outputFolderOsx
echo "##teamcity[progressFinish 'Creating OS X Package']"
}
PackageOsxApp()
{
echo "##teamcity[progressStart 'Creating OS X App Package']"
rm -rf $outputFolderOsxApp
mkdir $outputFolderOsxApp
cp -r ./osx/Radarr.app $outputFolderOsxApp
cp -r $outputFolderOsx $outputFolderOsxApp/Radarr.app/Contents/MacOS
echo "##teamcity[progressFinish 'Creating OS X App Package']"
}
PackageTests()
{
echo "Packaging Tests"
echo "##teamcity[progressStart 'Creating Test Package']"
rm -rf $testPackageFolder
mkdir $testPackageFolder
find $sourceFolder -path $testSearchPattern -exec cp -r -u -T "{}" $testPackageFolder \;
if [ $runtime = "dotnet" ] ; then
$nuget install NUnit.ConsoleRunner -Version 3.2.0 -Output $testPackageFolder
else
mono $nuget install NUnit.ConsoleRunner -Version 3.2.0 -Output $testPackageFolder
fi
cp $outputFolder/*.dll $testPackageFolder
cp ./*.sh $testPackageFolder
echo "Creating MDBs for tests"
CreateMdbs $testPackageFolder
rm -f $testPackageFolder/*.log.config
CleanFolder $testPackageFolder true
echo "Adding NzbDrone.Core.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Core/NzbDrone.Core.dll.config $testPackageFolder
echo "Adding CurlSharp.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Common/CurlSharp.dll.config $testPackageFolder
echo "Copying CurlSharp libraries"
cp $sourceFolder/ExternalModules/CurlSharp/libs/i386/* $testPackageFolder
echo "##teamcity[progressFinish 'Creating Test Package']"
}
CleanupWindowsPackage()
{
echo "Removing NzbDrone.Mono"
rm -f $outputFolder/NzbDrone.Mono.*
echo "Adding NzbDrone.Windows to UpdatePackage"
cp $outputFolder/NzbDrone.Windows.* $updateFolder
}
# Use mono or .net depending on OS
case "$(uname -s)" in
CYGWIN*|MINGW32*|MINGW64*|MSYS*)
# on windows, use dotnet
runtime="dotnet"
;;
*)
# otherwise use mono
runtime="mono"
;;
esac
Build
RunGulp
PackageMono
PackageOsx
PackageOsxApp
PackageTests
CleanupWindowsPackage

View File

@@ -1,50 +0,0 @@
<Query Kind="Program" />
void Main()
{
var files = Directory.GetFiles("c:\\git\\sonarr\\src\\UI","*.js", SearchOption.AllDirectories);
var moduleRegex = new Regex(@"module.exports\s*=\s*\(function\s*\(\)\s*{\n\s*return\s*(\w|\W)*\)\.call\(this\);$");
var functionHead = new Regex(@"\s*\(function\s*\(\)\s*{\n\s*return\s*");
var functionTail = new Regex(@"\}\).call\(this\);$");
var multiVar = new Regex(@"^(?<d>var\s*\w*\s*=\s*require\(.*\)),");
var seperateDeclearatuin = new Regex(@"^((\w|\$|_)*\s=\srequire\(.*\))(,|;)", RegexOptions.Multiline);
foreach (var filePath in files)
{
var text = File.ReadAllText(filePath);
var newContent = text.Replace("// Generated by uRequire v0.7.0-beta.14 template: 'nodejs'","");
newContent = newContent.Replace("var __isAMD = !!(typeof define === 'function' && define.amd),","");
newContent = newContent.Replace("__isNode = (typeof exports === 'object'),","");
newContent = newContent.Replace("__isWeb = !__isNode;","");
newContent = newContent.Replace("\"use strict\";","'use strict';");
newContent = newContent.Trim();
if(moduleRegex.IsMatch(newContent))
{
filePath.Dump();
newContent = functionHead.Replace(newContent," ");
newContent = functionTail.Replace(newContent,"");
}
if(multiVar.IsMatch(newContent))
{
newContent = multiVar.Replace(newContent,"$1;"); //first one
}
newContent = seperateDeclearatuin.Replace(newContent,"var $1;"); //ones after
newContent.Replace("var $ = require('jquery'), var","var $ = require('jquery');");
File.WriteAllText(filePath,newContent.Trim());
}
}
// Define other methods and classes here

2
debian/copyright vendored
View File

@@ -3,7 +3,7 @@ Upstream-Name: nzbdrone
Source: https://github.com/Sonarr/Sonarr
Files: *
Copyright: 2010-2014 Sonarr <hello@sonarr.tv>
Copyright: 2010-2016 Sonarr <hello@sonarr.tv>
License: GPL-3.0+

View File

@@ -6,7 +6,13 @@ require('./less');
require('./handlebars');
require('./copy');
gulp.task('build', function () {
return runSequence('clean',
['webpack', 'less', 'handlebars', 'copyHtml', 'copyContent', 'copyJs']);
gulp.task('build', function() {
return runSequence('clean', [
'webpack',
'less',
'handlebars',
'copyHtml',
'copyContent',
'copyJs'
]);
});

View File

@@ -3,6 +3,6 @@ var del = require('del');
var paths = require('./paths');
gulp.task('clean', function (cb) {
del([paths.dest.root], cb);
gulp.task('clean', function(cb) {
del([paths.dest.root], cb);
});

View File

@@ -1,27 +1,31 @@
var gulp = require('gulp');
var print = require('gulp-print');
var cache = require('gulp-cached');
var livereload = require('gulp-livereload');
var paths = require('./paths.js');
gulp.task('copyJs', function () {
return gulp.src(
[
paths.src.root + "polyfills.js",
paths.src.root + "JsLibraries\\handlebars.runtime.js",
])
.pipe(cache('copyJs'))
.pipe(print())
.pipe(gulp.dest(paths.dest.root));
return gulp.src(
[
paths.src.root + 'polyfills.js',
paths.src.root + 'JsLibraries/handlebars.runtime.js'
])
.pipe(cache('copyJs'))
.pipe(print())
.pipe(gulp.dest(paths.dest.root))
.pipe(livereload());
});
gulp.task('copyHtml', function () {
return gulp.src(paths.src.html)
.pipe(cache('copyHtml'))
.pipe(gulp.dest(paths.dest.root));
return gulp.src(paths.src.html)
.pipe(cache('copyHtml'))
.pipe(gulp.dest(paths.dest.root))
.pipe(livereload());
});
gulp.task('copyContent', function () {
return gulp.src([paths.src.content + '**/*.*', '!**/*.less'])
.pipe(gulp.dest(paths.dest.content));
return gulp.src([paths.src.content + '**/*.*', '!**/*.less'])
.pipe(gulp.dest(paths.dest.content))
.pipe(livereload());
});

View File

@@ -1,7 +1,7 @@
module.exports = {
onError:function (error) {
onError : function(error) {
//If you want details of the error in the console
console.log(error.toString());
this.emit('end');
}
}
};

View File

@@ -8,5 +8,4 @@ require('./less.js');
require('./stripBom.js');
require('./imageMin.js');
require('./webpack.js');
require('./start.js');

View File

@@ -3,21 +3,25 @@ var handlebars = require('gulp-handlebars');
var declare = require('gulp-declare');
var concat = require('gulp-concat');
var wrap = require("gulp-wrap");
var livereload = require('gulp-livereload');
var path = require('path');
var streamqueue = require('streamqueue');
var stripbom = require('gulp-stripbom');
var paths = require('./paths.js');
gulp.task('handlebars', function () {
gulp.task('handlebars', function() {
var coreStream = gulp.src([paths.src.templates, '!*/**/*Partial.*'])
.pipe(stripbom({ showLog: false }))
var coreStream = gulp.src([
paths.src.templates,
'!*/**/*Partial.*'
])
.pipe(stripbom({ showLog : false }))
.pipe(handlebars())
.pipe(declare({
namespace: 'T',
noRedeclare: true,
processName: function (filePath) {
namespace : 'T',
noRedeclare : true,
processName : function(filePath) {
filePath = path.relative(paths.src.root, filePath);
@@ -29,12 +33,12 @@ gulp.task('handlebars', function () {
}));
var partialStream = gulp.src([paths.src.partials])
.pipe(stripbom({ showLog: false }))
.pipe(stripbom({ showLog : false }))
.pipe(handlebars())
.pipe(wrap('Handlebars.template(<%= contents %>)'))
.pipe(wrap('Handlebars.registerPartial(<%= processPartialName(file.relative) %>, <%= contents %>)', {}, {
imports: {
processPartialName: function (fileName) {
imports : {
processPartialName : function(fileName) {
return JSON.stringify(
path.basename(fileName, '.js')
);
@@ -42,11 +46,10 @@ gulp.task('handlebars', function () {
}
}));
return streamqueue({ objectMode: true },
return streamqueue({ objectMode : true },
partialStream,
coreStream
).pipe(concat('templates.js'))
.pipe(gulp.dest(paths.dest.root));
.pipe(gulp.dest(paths.dest.root))
.pipe(livereload());
});

View File

@@ -2,14 +2,13 @@ var gulp = require('gulp');
var print = require('gulp-print');
var paths = require('./paths.js');
gulp.task('imageMin', function () {
gulp.task('imageMin', function() {
var imagemin = require('gulp-imagemin');
return gulp.src(paths.src.images)
.pipe(imagemin({
progressive: false,
optimizationLevel :4,
svgoPlugins: [{removeViewBox: false}]
progressive : false,
optimizationLevel : 4,
svgoPlugins : [{ removeViewBox : false }]
}))
.pipe(print())
.pipe(gulp.dest(paths.src.content + 'Images/'));

View File

@@ -4,9 +4,11 @@ var stylish = require('jshint-stylish');
var cache = require('gulp-cached');
var paths = require('./paths.js');
gulp.task('jshint', function () {
return gulp.src([paths.src.scripts, paths.src.exclude.libs])
gulp.task('jshint', function() {
return gulp.src([
paths.src.scripts,
paths.src.exclude.libs
])
.pipe(cache('jshint'))
.pipe(jshint())
.pipe(jshint.reporter(stylish));

View File

@@ -1,33 +1,49 @@
var gulp = require('gulp');
var less = require('gulp-less');
var print = require('gulp-print');
var less = require('gulp-less');
var postcss = require('gulp-postcss');
var sourcemaps = require('gulp-sourcemaps');
var autoprefixer = require('autoprefixer-core');
var livereload = require('gulp-livereload');
var print = require('gulp-print');
var paths = require('./paths');
var errorHandler = require('./errorHandler');
gulp.task('less', function () {
return gulp.src([
paths.src.content + 'bootstrap.less',
paths.src.content + 'theme.less',
paths.src.content + 'overrides.less',
paths.src.root + 'Series/series.less',
paths.src.root + 'Activity/activity.less',
paths.src.root + 'AddSeries/addSeries.less',
paths.src.root + 'Calendar/calendar.less',
paths.src.root + 'Cells/cells.less',
paths.src.root + 'Settings/settings.less',
paths.src.root + 'System/Logs/logs.less',
paths.src.root + 'System/Update/update.less',
paths.src.root + 'System/Info/info.less',
])
gulp.task('less', function() {
var src = [
paths.src.content + 'bootstrap.less',
paths.src.content + 'theme.less',
paths.src.content + 'overrides.less',
paths.src.root + 'Series/series.less',
paths.src.root + 'Activity/activity.less',
paths.src.root + 'AddSeries/addSeries.less',
paths.src.root + 'AddMovies/addMovies.less',
paths.src.root + 'Calendar/calendar.less',
paths.src.root + 'Cells/cells.less',
paths.src.root + 'ManualImport/manualimport.less',
paths.src.root + 'Settings/settings.less',
paths.src.root + 'System/Logs/logs.less',
paths.src.root + 'System/Update/update.less',
paths.src.root + 'System/Info/info.less',
paths.src.root + 'Movies/movies.less',
];
return gulp.src(src)
.pipe(print())
.pipe(sourcemaps.init())
.pipe(less({
dumpLineNumbers: 'false',
compress: true,
yuicompress: true,
ieCompat: true,
strictImports: true
dumpLineNumbers : 'false',
compress : true,
yuicompress : true,
ieCompat : true,
strictImports : true
}))
.pipe(postcss([ autoprefixer({ browsers: ['last 2 versions'] }) ]))
.on('error', errorHandler.onError)
.pipe(gulp.dest(paths.dest.content));
.pipe(sourcemaps.write(paths.dest.content))
.pipe(gulp.dest(paths.dest.content))
.pipe(livereload());
});

View File

@@ -1,19 +1,21 @@
module.exports = {
src: {
root: './src/UI/',
templates: './src/UI/**/*.hbs',
html: './src/UI/*.html',
partials: './src/UI/**/*Partial.hbs',
scripts: './src/UI/**/*.js',
less: ['./src/UI/**/*.less'],
content: './src/UI/Content/',
images: './src/UI/Content/Images/**/*',
exclude :{
libs:'!./src/UI/JsLibraries/**'
var paths = {
src : {
root : './src/UI/',
templates : './src/UI/**/*.hbs',
html : './src/UI/*.html',
partials : './src/UI/**/*Partial.hbs',
scripts : './src/UI/**/*.js',
less : ['./src/UI/**/*.less'],
content : './src/UI/Content/',
images : './src/UI/Content/Images/**/*',
exclude : {
libs : '!./src/UI/JsLibraries/**'
}
},
dest: {
root: './_output/UI/',
content: './_output/UI/Content/'
dest : {
root : './_output/UI/',
content : './_output/UI/Content/'
}
};
module.exports = paths;

112
gulp/start.js Normal file
View File

@@ -0,0 +1,112 @@
// will download and run sonarr (server) in a non-windows enviroment
// you can use this if you don't care about the server code and just want to work
// with the web code.
var http = require('http');
var gulp = require('gulp');
var fs = require('fs');
var targz = require('tar.gz');
var del = require('del');
var print = require('gulp-print');
var spawn = require('child_process').spawn;
function download(url, dest, cb) {
console.log('Downloading ' + url + ' to ' + dest);
var file = fs.createWriteStream(dest);
var request = http.get(url, function (response) {
response.pipe(file);
file.on('finish', function () {
console.log('Download completed');
file.close(cb);
});
});
}
function getLatest(cb) {
var branch = 'develop';
process.argv.forEach(function (val) {
var branchMatch = /branch=([\S]*)/.exec(val);
if (branchMatch && branchMatch.length > 1) {
branch = branchMatch[1];
}
});
var url = 'http://services.sonarr.tv/v1/update/' + branch + '?os=osx';
console.log('Checking for latest version:', url);
http.get(url, function (res) {
var data = '';
res.on('data', function (chunk) {
data += chunk;
});
res.on('end', function () {
var updatePackage = JSON.parse(data).updatePackage;
console.log('Latest version available: ' + updatePackage.version + ' Release Date: ' + updatePackage.releaseDate);
cb(updatePackage);
});
}).on('error', function (e) {
console.log('problem with request: ' + e.message);
});
}
function extract(source, dest, cb) {
console.log('extracting download page to ' + dest);
new targz().extract(source, dest, function (err) {
if (err) {
console.log(err);
}
console.log('Update package extracted.');
cb();
});
}
gulp.task('getSonarr', function () {
//gulp.src('/Users/kayone/git/Sonarr/_start/2.0.0.3288/NzbDrone/*.*')
// .pipe(print())
// .pipe(gulp.dest('./_output
//return;
try {
fs.mkdirSync('./_start/');
} catch (e) {
if (e.code != 'EEXIST') {
throw e;
}
}
getLatest(function (package) {
var packagePath = "./_start/" + package.filename;
var dirName = "./_start/" + package.version;
download(package.url, packagePath, function () {
extract(packagePath, dirName, function () {
// clean old binaries
console.log('Cleaning old binaries');
del.sync(['./_output/*', '!./_output/UI/']);
console.log('copying binaries to target');
gulp.src(dirName + '/NzbDrone/*.*')
.pipe(gulp.dest('./_output/'));
});
});
});
});
gulp.task('startSonarr', function () {
var ls = spawn('mono', ['--debug', './_output/NzbDrone.exe']);
ls.stdout.on('data', function (data) {
process.stdout.write('' + data);
});
ls.stderr.on('data', function (data) {
process.stdout.write('' + data);
});
ls.on('close', function (code) {
console.log('child process exited with code ' + code);
});
});

View File

@@ -7,6 +7,10 @@ var stripBom = function (dest) {
.pipe(stripbom({ showLog: false }))
.pipe(gulp.dest(dest));
gulp.src(paths.src.less)
.pipe(stripbom({ showLog: false }))
.pipe(gulp.dest(dest));
gulp.src(paths.src.templates)
.pipe(stripbom({ showLog: false }))
.pipe(gulp.dest(dest));

View File

@@ -1,6 +1,5 @@
var gulp = require('gulp');
//var livereload = require('gulp-livereload');
var livereload = require('gulp-livereload');
var paths = require('./paths.js');
@@ -10,24 +9,12 @@ require('./less.js');
require('./copy.js');
require('./webpack.js');
gulp.task('watch', ['jshint', 'handlebars', 'less','copyHtml', 'copyContent','copyJs'], function () {
gulp.start('webpackWatch');
gulp.watch([paths.src.scripts, paths.src.exclude.libs], ['jshint','copyJs']);
gulp.watch(paths.src.templates, ['handlebars']);
gulp.watch([paths.src.less, paths.src.exclude.libs], ['less']);
gulp.watch([paths.src.html], ['copyHtml']);
gulp.watch([paths.src.content + '**/*.*', '!**/*.less'], ['copyContent']);
});
gulp.task('liveReload', ['jshint', 'handlebars', 'less', 'webPack'], function () {
var server = livereload();
gulp.watch([
'app/**/*.js',
'app/**/*.css',
'app/index.html',
'app/login.html'
]).on('change', function (file) {
server.changed(file.path);
});
});
gulp.task('watch', ['jshint', 'handlebars', 'less', 'copyHtml', 'copyContent', 'copyJs'], function () {
livereload.listen();
gulp.start('webpackWatch');
gulp.watch([paths.src.scripts, paths.src.exclude.libs], ['jshint', 'copyJs']);
gulp.watch(paths.src.templates, ['handlebars']);
gulp.watch([paths.src.less, paths.src.exclude.libs], ['less']);
gulp.watch([paths.src.html], ['copyHtml']);
gulp.watch([paths.src.content + '**/*.*', '!**/*.less'], ['copyContent']);
});

View File

@@ -1,20 +1,13 @@
var gulp = require('gulp');
var gulpWebpack = require('gulp-webpack');
var webpack = require('webpack');
var webpackStream = require('webpack-stream');
var livereload = require('gulp-livereload');
var webpackConfig = require('../webpack.config');
webpackConfig.devtool = "#source-map";
gulp.task('webpack', function() {
return gulp.src('main.js')
.pipe(gulpWebpack(webpackConfig, webpack))
.pipe(gulp.dest(''));
return gulp.src('main.js').pipe(webpackStream(webpackConfig)).pipe(gulp.dest(''));
});
gulp.task('webpackWatch', function() {
webpackConfig.watch = true;
return gulp.src('main.js')
.pipe(gulpWebpack(webpackConfig, webpack))
.pipe(gulp.dest(''));
webpackConfig.watch = true;
return gulp.src('main.js').pipe(webpackStream(webpackConfig)).pipe(gulp.dest('')).pipe(livereload());
});

View File

@@ -1 +1 @@
require('./gulp/gulpfile.js');
require('./gulp/gulpFile.js');

View File

@@ -1,7 +0,0 @@
EXCLUDE="-exclude:Windows -include:IntegrationTest"
TESTDIR="."
NUNIT="$TESTDIR/NUnit.Runners.2.6.1/tools/nunit-console-x86.exe"
mono --debug --runtime=v4.0 $NUNIT $EXCLUDE -xml:NzbDrone.Api.Result.xml $TESTDIR/NzbDrone.Api.Test.dll
mono --debug --runtime=v4.0 $NUNIT $EXCLUDE -xml:NzbDrone.Core.Result.xml $TESTDIR/NzbDrone.Core.Test.dll
mono --debug --runtime=v4.0 $NUNIT $EXCLUDE -xml:NzbDrone.Integration.Result.xml $TESTDIR/NzbDrone.Integration.Test.dll

View File

@@ -13,7 +13,7 @@
<key>CFBundleExecutable</key>
<string>Sonarr</string>
<key>CFBundleIconFile</key>
<string>sonarr.icns</string>
<string>radarr.icns</string>
<key>CFBundleIdentifier</key>
<string>com.osx.sonarr.tv</string>
<key>CFBundleInfoDictionaryVersion</key>

Binary file not shown.

View File

@@ -1,31 +1,48 @@
#!/bin/sh
#get the bundle's MacOS directory full path
DIR=$(cd "$(dirname "$0")"; pwd)
#change these values to match your app
EXE_PATH="$DIR/nzbdrone.exe"
EXE_PATH="$DIR/Radarr.exe"
APPNAME="Sonarr"
#set up environment
MONO_FRAMEWORK_PATH=/Library/Frameworks/Mono.framework/Versions/Current
export DYLD_FALLBACK_LIBRARY_PATH="$DIR:$MONO_FRAMEWORK_PATH/lib:/lib:/usr/lib"
export PATH="$MONO_FRAMEWORK_PATH/bin:$PATH"
if [[ -x '/opt/local/bin/mono' ]]; then
export PATH="/opt/local/bin:$PATH"
fi
export DYLD_FALLBACK_LIBRARY_PATH="$DIR"
if [ -e /Library/Frameworks/Mono.framework ]; then
MONO_FRAMEWORK_PATH=/Library/Frameworks/Mono.framework/Versions/Current
export PATH="$MONO_FRAMEWORK_PATH/bin:$PATH"
export DYLD_FALLBACK_LIBRARY_PATH="$DYLD_FALLBACK_LIBRARY_PATH:$MONO_FRAMEWORK_PATH/lib"
fi
if [[ -f '/opt/local/lib/libsqlite3.0.dylib' ]]; then
export DYLD_FALLBACK_LIBRARY_PATH="/opt/local/lib:$DYLD_FALLBACK_LIBRARY_PATH"
fi
export DYLD_FALLBACK_LIBRARY_PATH="$DYLD_FALLBACK_LIBRARY_PATH:$HOME/lib:/usr/local/lib:/lib:/usr/lib"
#mono version check
REQUIRED_MAJOR=3
REQUIRED_MINOR=10
VERSION_TITLE="Cannot launch $APPNAME"
VERSION_MSG="$APPNAME requires Mono Runtime Environment(MRE) $REQUIRED_MAJOR.$REQUIRED_MINOR or later."
DOWNLOAD_URL="http://www.mono-project.com/download/#download-mac"
MONO_VERSION="$(mono --version | grep 'Mono JIT compiler version ' | cut -f5 -d\ )"
# if [[ -o DEBUG ]]; then osascript -e "display dialog \"MONO_VERSION: $MONO_VERSION\""; fi
MONO_VERSION_MAJOR="$(echo $MONO_VERSION | cut -f1 -d.)"
MONO_VERSION_MINOR="$(echo $MONO_VERSION | cut -f2 -d.)"
if [ -z "$MONO_VERSION" ] \
|| [ $MONO_VERSION_MAJOR -lt $REQUIRED_MAJOR ] \
|| [ $MONO_VERSION_MAJOR -eq $REQUIRED_MAJOR -a $MONO_VERSION_MINOR -lt $REQUIRED_MINOR ]
|| [ $MONO_VERSION_MAJOR -eq $REQUIRED_MAJOR -a $MONO_VERSION_MINOR -lt $REQUIRED_MINOR ]
then
osascript \
-e "set question to display dialog \"$VERSION_MSG\" with title \"$VERSION_TITLE\" buttons {\"Cancel\", \"Download...\"} default button 2" \
@@ -34,8 +51,8 @@ then
echo "$VERSION_MSG"
exit 1
fi
MONO_EXEC="exec mono --debug"
#run app using mono
$MONO_EXEC "$EXE_PATH"
$MONO_EXEC "$EXE_PATH"

View File

@@ -4,36 +4,43 @@
"description": "Sonarr",
"main": "main.js",
"scripts": {
"preinstall": ""
"build": "gulp build",
"start": "gulp watch"
},
"repository": {
"type": "git",
"url": "git://github.com/Sonarr/Sonarr.git"
},
"author": "",
"license": "BSD",
"license": "GPL-3.0",
"gitHead": "9ff7aa1bf7fe38c4c5bdb92f56c8ad556916ed67",
"readmeFilename": "readme.md",
"dependencies": {
"del": "1.1.1",
"gulp": "3.8.10",
"gulp-cached": "1.0.2",
"gulp-concat": "2.4.3",
"autoprefixer-core": "5.2.1",
"del": "1.2.0",
"gulp": "3.9.0",
"gulp-cached": "1.1.0",
"gulp-concat": "2.6.0",
"gulp-declare": "0.3.0",
"gulp-handlebars": "3.0.1",
"gulp-jshint": "1.9.2",
"gulp-less": "2.0.1",
"gulp-jshint": "1.11.2",
"gulp-less": "3.0.3",
"gulp-livereload": "3.8.0",
"gulp-postcss": "6.0.0",
"gulp-print": "1.1.0",
"gulp-replace": "0.5.2",
"gulp-replace": "0.5.3",
"gulp-run": "1.6.8",
"gulp-sourcemaps": "1.5.2",
"gulp-stripbom": "1.0.4",
"gulp-run": "1.6.6",
"gulp-webpack": "1.2.0",
"gulp-wrap": "0.10.1",
"handlebars": "2.0.0",
"jshint-loader": "0.8.1",
"jshint-stylish": "1.0.0",
"run-sequence": "1.0.2",
"streamqueue": "0.1.1",
"webpack": "1.5.3"
"gulp-webpack": "1.5.0",
"gulp-wrap": "0.11.0",
"handlebars": "3.0.3",
"jshint-loader": "0.8.3",
"jshint-stylish": "2.0.1",
"run-sequence": "1.1.1",
"streamqueue": "1.1.0",
"tar.gz": "0.1.1",
"webpack": "1.12.0",
"webpack-stream": "2.1.0"
}
}

68
package.sh Normal file
View File

@@ -0,0 +1,68 @@
if [ $# -eq 0 ]; then
if [ "$TRAVIS_PULL_REQUEST" != false ]; then
echo "Need to supply version argument" && exit;
fi
fi
# Use mono or .net depending on OS
case "$(uname -s)" in
CYGWIN*|MINGW32*|MINGW64*|MSYS*)
# on windows, use dotnet
runtime="dotnet"
;;
*)
# otherwise use mono
runtime="mono"
;;
esac
if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then
VERSION="`date +%H:%M:%S`"
YEAR="`date +%Y`"
MONTH="`date +%m`"
DAY="`date +%d`"
else
VERSION=$1
fi
outputFolder='./_output'
outputFolderMono='./_output_mono'
outputFolderOsx='./_output_osx'
outputFolderOsxApp='./_output_osx_app'
tr -d "\r" < $outputFolderOsxApp/Radarr.app/Contents/MacOS/Sonarr > $outputFolderOsxApp/Radarr.app/Contents/MacOS/Sonarr2
rm $outputFolderOsxApp/Radarr.app/Contents/MacOS/Sonarr
chmod +x $outputFolderOsxApp/Radarr.app/Contents/MacOS/Sonarr2
mv $outputFolderOsxApp/Radarr.app/Contents/MacOS/Sonarr2 $outputFolderOsxApp/Radarr.app/Contents/MacOS/Sonarr >& error.log
cp -r $outputFolder/ Radarr_Windows_$VERSION
cp -r $outputFolderMono/ Radarr_Mono_$VERSION
cp -r $outputFolderOsxApp/ Radarr_OSX_$VERSION
if [ $runtime = "dotnet" ] ; then
./7za.exe a Radarr_Windows_$VERSION.zip ./Radarr_Windows_$VERSION/*
./7za.exe a -ttar -so Radarr_Mono_$VERSION.tar ./Radarr_Mono_$VERSION/* | ./7za.exe a -si Radarr_Mono_$VERSION.tar.gz
./7za.exe a -ttar -so Radarr_OSX_$VERSION.tar ./_output_osx/* | ./7za.exe a -si Radarr_OSX_$VERSION.tar.gz
./7za.exe a -ttar -so Radarr_OSX_App_$VERSION.tar ./_output_osx_app/* | ./7za.exe a -si Radarr_OSX_App_$VERSION.tar.gz
else
zip -r Radarr_Windows_$VERSION.zip Radarr_Windows_$VERSION/* >& /dev/null
zip -r Radarr_Mono_$VERSION.zip Radarr_Mono_$VERSION/* >& /dev/null #TODO update for tar.gz
zip -r Radarr_OSX_$VERSION_App.zip Radarr_OSX_$VERSION/* >& /dev/null
fi
ftp -n ftp.leonardogalli.ch << END_SCRIPT
passive
quote USER $FTP_USER
quote PASS $FTP_PASS
mkdir builds
cd builds
mkdir $YEAR
cd $YEAR
mkdir $MONTH
cd $MONTH
mkdir $DAY
cd $DAY
binary
put Radarr_Windows_$VERSION.zip
put Radarr_Mono_$VERSION.zip
put Radarr_OSX_$VERSION.zip
quit
END_SCRIPT

View File

@@ -1,50 +1,77 @@
# Sonarr #
# Radarr
| Service | Master | Develop |
|----------|:---------------------------:|:----------------------------:|
| AppVeyor | [![AppVeyor](https://img.shields.io/appveyor/ci/galli-leo/Radarr/master.svg?maxAge=60&style=flat-square)](https://ci.appveyor.com/project/galli-leo/Radarr) | [![AppVeyor](https://img.shields.io/appveyor/ci/galli-leo/Radarr-usby1/develop.svg?maxAge=60&style=flat-square)](https://ci.appveyor.com/project/galli-leo/Radarr-usby1) |
| Travis | [![Travis](https://img.shields.io/travis/galli-leo/Radarr/master.svg?maxAge=60&style=flat-square)](https://travis-ci.org/galli-leo/Radarr) | [![Travis](https://img.shields.io/travis/galli-leo/Radarr/develop.svg?maxAge=60&style=flat-square)](https://travis-ci.org/galli-leo/Radarr) |
Sonarr is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.
This fork of Sonarr aims to turn it into something like Couchpotato.
## Currently working:
* Adding new movies
* Manually searching for releases of movies.
* Automatically searching for releases.
* Automatically importing downloaded movies.
* Recognizing Special Editions, Director's Cut, etc.
* Identifying releases with hardcoded subs.
* Rarbg.to, Torznab and Newznab Indexer.
* QBittorrent and Deluge download client (Other clients are coming)
* New TorrentPotato Indexer (Works well with [Jackett](https://github.com/Jackett/Jackett))
## Planned Features:
* Scanning PreDB to know when a new release is available.
* Fixing the other Indexers and download clients.
* Importing of Sonarr config.
## Download
The latest precompiled binary versions can be found here: https://github.com/galli-leo/Radarr/releases.
Docker containers from [linuxserver.io](https://linuxserver.io) can be found here.
* [Radarr (x64)](https://hub.docker.com/r/linuxserver/radarr/)
* [Radarr (armhf)](https://hub.docker.com/r/lsioarmhf/radarr/)
* [Radarr (aarch64)](https://hub.docker.com/r/lsioarmhf/radarr-aarch64/)
For more up to date versions (but also sometimes broken), daily builds can be found here:
* [OSX](https://leonardogalli.ch/radarr/builds/latest.php?os=osx)
* [Windows](https://leonardogalli.ch/radarr/builds/latest.php?os=windows)
* [Linux](https://leonardogalli.ch/radarr/builds/latest.php?os=mono)
## Major Features Include: ##
* Support for major platforms: Windows, Linux, OSX, Raspberry Pi, etc.
* Automatically detects new episodes
* Can scan your existing library and download any missing episodes
* Can watch for better quality of the episodes you already have and do an automatic upgrade. *eg. from DVD to Blu-Ray*
* Support for major platforms: Windows, Linux, OSX, Raspberry Pi, etc.
* Can watch for better quality of the movies you have and do an upgrade.
* Automatic failed download handling will try another release if one fails
* Manual search so you can pick any release or to see why a release was not downloaded automatically
* Fully configurable episode renaming
* Full integration with SABNzbd and NzbGet
* Full integration with XBMC, Plex (notification, library update, metadata)
* Full support for specials and multi-episode releases
* Manual search so you can pick any release or to see why a release was not downloaded automatically.
* Full integration with SABNzbd and NzbGet.
* Full integration with XBMC, Plex (notification, library update, metadata).
* And a beautiful UI
## Configuring Development Environment: ##
### Requirements ###
- Visual Studio 2013 ([Express Edition](http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-for-web "Express Edition") might work but not tested.)
- Visual Studio 2015 [Free Community Edition](https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx) or Mono
- [Git](http://git-scm.com/downloads)
- [NodeJS](http://nodejs.org/download/)
- [Gulp](http://gulpjs.com)
### Setup ###
- Make sure all the required software mentioned above are installed.
- Clone the repository into your development machine. [*info*](https://help.github.com/articles/working-with-repositories)
- Grab the submodules `git submodule init && git submodule update`
- install the required Node Packages `npm install`
- install gulp `npm install gulp -g`
- start gulp to monitor your dev environment for any changes that need post processing using `gulp watch` command.
- start gulp to monitor your dev environment for any changes that need post processing using `npm start` command.
*Please note gulp must be running at all times while you are working with NzbDrone client source files.*
*Please note gulp must be running at all times while you are working with Sonarr client source files.*
### Development ###
- Open `NzbDrone.sln` in Visual Studio
- Open `NzbDrone.sln` in Visual Studio or run the build.sh script, if Mono is installed.
- Make sure `NzbDrone.Console` is set as the startup project
### License ###
* [GNU GPL v3](http://www.gnu.org/licenses/gpl.html)
Copyright 2010-2014
Copyright 2010-2016
### Sponsors ###

View File

@@ -1,17 +0,0 @@
Param(
[Parameter(Mandatory=$true, Position=0, HelpMessage="A branch name is #requires required")]
[string]$branch,
[Parameter(Mandatory=$true, Position=1, HelpMessage="A version is required")]
[string]$version
)
if ($branch -eq "<default>")
{
$branch = "teamcity";
}
Write-Host $branch;
Write-Host $version;
Write-Host "NzbDrone.$branch.$version.zip";
Rename-Item "nzbdrone.zip" "NzbDrone.$branch.$version.zip"

View File

@@ -75,6 +75,8 @@
<xs:enumeration value="seedtype" /> <!-- TBD, which criteria must be met. was going for 'ratio,seedtime,both' but afaik it's always 'either' -->
<xs:enumeration value="minimumratio" />
<xs:enumeration value="minimumseedtime" />
<xs:enumeration value="downloadvolumefactor" /> <!-- factor for the download volume, in most cases it should be set to 1, if a torrent is set to freeleech set it to 0, if only 50% is counted set it to 0.5 -->
<xs:enumeration value="uploadvolumefactor" /> <!-- factor for the upload volume, in most cases it should be set to 1, if a torrent is set to neutral leech (upload is not counted) set it to 0, if it's set to double upload set it to 2 -->
</xs:restriction>
</xs:simpleType>
<xs:element name="attr">

BIN
sonarr.icns Normal file

Binary file not shown.

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>

Binary file not shown.

View File

@@ -1,136 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
<!-- Enable the restore command to run before builds -->
<RestorePackages Condition=" '$(RestorePackages)' == '' ">false</RestorePackages>
<!-- Property that enables building a package from a project -->
<BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>
<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
<!-- Download NuGet.exe if it does not already exist -->
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
</PropertyGroup>
<ItemGroup Condition=" '$(PackageSources)' == '' ">
<!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
<!-- The official NuGet package source (https://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
<!--
<PackageSource Include="https://www.nuget.org/api/v2/" />
<PackageSource Include="https://my-nuget-source/nuget/" />
-->
</ItemGroup>
<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
<!-- Windows specific commands -->
<NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
<PackagesConfig>$([System.IO.Path]::Combine($(ProjectDir), "packages.config"))</PackagesConfig>
</PropertyGroup>
<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
<!-- We need to launch nuget.exe with the mono command if we're not on windows -->
<NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
<PackagesConfig>packages.config</PackagesConfig>
</PropertyGroup>
<PropertyGroup>
<!-- NuGet command -->
<NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\NuGet.exe</NuGetExePath>
<PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
<NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
<NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 $(NuGetExePath)</NuGetCommand>
<PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
<RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
<NonInteractiveSwitch Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' ">-NonInteractive</NonInteractiveSwitch>
<PaddedSolutionDir Condition=" '$(OS)' == 'Windows_NT'">"$(SolutionDir) "</PaddedSolutionDir>
<PaddedSolutionDir Condition=" '$(OS)' != 'Windows_NT' ">"$(SolutionDir)"</PaddedSolutionDir>
<!-- Commands -->
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols</BuildCommand>
<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'true'">
RestorePackages;
$(BuildDependsOn);
</BuildDependsOn>
<!-- Make the build depend on restore packages -->
<BuildDependsOn Condition="$(BuildPackage) == 'true'">
$(BuildDependsOn);
BuildPackage;
</BuildDependsOn>
</PropertyGroup>
<Target Name="CheckPrerequisites">
<!-- Raise an error if we're unable to locate nuget.exe -->
<Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
<!--
Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
This effectively acts as a lock that makes sure that the download operation will only happen once and all
parallel builds will have to wait for it to complete.
-->
<MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT;DownloadNuGetExe=$(DownloadNuGetExe)" />
</Target>
<Target Name="_DownloadNuGet">
<DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
</Target>
<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(RestoreCommand)"
Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
<Exec Command="$(RestoreCommand)"
LogStandardErrorAsError="true"
Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
</Target>
<Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(BuildCommand)"
Condition=" '$(OS)' != 'Windows_NT' " />
<Exec Command="$(BuildCommand)"
LogStandardErrorAsError="true"
Condition=" '$(OS)' == 'Windows_NT' " />
</Target>
<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<OutputFilename ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Reference Include="System.Core" />
<Using Namespace="System" />
<Using Namespace="System.IO" />
<Using Namespace="System.Net" />
<Using Namespace="Microsoft.Build.Framework" />
<Using Namespace="Microsoft.Build.Utilities" />
<Code Type="Fragment" Language="cs">
<![CDATA[
try {
OutputFilename = Path.GetFullPath(OutputFilename);
Log.LogMessage("Downloading latest version of NuGet.exe...");
WebClient webClient = new WebClient();
webClient.DownloadFile("https://www.nuget.org/nuget.exe", OutputFilename);
return true;
}
catch (Exception ex) {
Log.LogErrorFromException(ex);
return false;
}
]]>
</Code>
</Task>
</UsingTask>
</Project>

View File

@@ -2,4 +2,4 @@
using System.Reflection;
[assembly: AssemblyVersion("10.0.0.*")]
[assembly: AssemblyVersion("0.1.0.*")]

Binary file not shown.

View File

@@ -1,9 +0,0 @@
<?xml version ="1.0"?>
<!-- This allows mt.exe to run on machines with the CLR v4 installed but not 1.1 or 2.0 -->
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v1.1.4322"/>
</startup>
</configuration>

View File

@@ -296,7 +296,7 @@ namespace LogentriesCore
WriteDebugMessages("HostName parameter is not defined - trying to get it from System.Environment.MachineName");
m_HostName = "HostName=" + System.Environment.MachineName + " ";
}
catch (InvalidOperationException ex)
catch (InvalidOperationException)
{
// Cannot get host name automatically, so assume that HostName is not used
// and log message is sent without it.

View File

@@ -73,13 +73,6 @@
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

View File

@@ -1,5 +1,4 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following

View File

@@ -51,8 +51,9 @@
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="NLog">
<HintPath>..\packages\NLog.2.1.0\lib\net40\NLog.dll</HintPath>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.3.11\lib\net40\NLog.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
@@ -79,19 +80,13 @@
</ItemGroup>
<ItemGroup>
<None Include="fastJSON\license.txt" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

View File

@@ -1,5 +1,4 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following

View File

@@ -24,6 +24,7 @@ namespace LogentriesNLog.fastJSON
SerializeNullValues = false;
UseOptimizedDatasetSchema = false;
UsingGlobalTypes = false;
UseUTCDateTime = true;
}
public bool UseOptimizedDatasetSchema = true;
public bool UseFastGuid = true;
@@ -39,7 +40,7 @@ namespace LogentriesNLog.fastJSON
return ToJSON(obj, UseSerializerExtension, UseFastGuid, UseOptimizedDatasetSchema, SerializeNullValues);
}
public string ToJSON(object obj,
bool enableSerializerExtensions,
bool enableFastGuid,
@@ -49,13 +50,13 @@ namespace LogentriesNLog.fastJSON
return new JSONSerializer(enableOptimizedDatasetSchema, enableFastGuid, enableSerializerExtensions, serializeNullValues, IndentOutput).ConvertToJSON(obj);
}
public T ToObject<T>(string json)
{
return (T)ToObject(json, typeof(T));
}
public object ToObject(string json, Type type)
{
var ht = new JsonParser(json).Decode() as Dictionary<string, object>;
@@ -320,7 +321,7 @@ namespace LogentriesNLog.fastJSON
}
}
_getterscache.Add(type, getters);
return getters;
}
@@ -448,7 +449,7 @@ namespace LogentriesNLog.fastJSON
#if !SILVERLIGHT
else if (pi.isDictionary || pi.isHashtable)
oset = CreateDictionary((ArrayList)v, pi.pt, pi.GenericTypes, globaltypes);
#else
#else
else if (pi.isDictionary)
oset = CreateDictionary((List<object>)v, pi.pt, pi.GenericTypes, globaltypes);
#endif
@@ -817,4 +818,4 @@ namespace LogentriesNLog.fastJSON
}
#endif
}
}
}

View File

@@ -170,6 +170,8 @@ namespace LogentriesNLog.fastJSON
_output.Append(dt.Minute.ToString("00", NumberFormatInfo.InvariantInfo));
_output.Append(":");
_output.Append(dt.Second.ToString("00", NumberFormatInfo.InvariantInfo));
_output.Append(".");
_output.Append(dt.Millisecond.ToString("000", NumberFormatInfo.InvariantInfo));
if (JSON.Instance.UseUTCDateTime)
_output.Append("Z");

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NLog" version="4.3.11" targetFramework="net40" />
</packages>

View File

@@ -198,7 +198,8 @@ namespace Marr.Data.Mapping
{
return AutoMapPropertiesWhere(m =>
m.MemberType == MemberTypes.Property &&
!DataHelper.IsSimpleType((m as PropertyInfo).PropertyType));
!DataHelper.IsSimpleType((m as PropertyInfo).PropertyType) &&
!MapRepository.Instance.TypeConverters.ContainsKey((m as PropertyInfo).PropertyType));
}
/// <summary>

View File

@@ -144,7 +144,6 @@
<PreBuildEvent>
</PreBuildEvent>
</PropertyGroup>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<dllmap os="osx" dll="MediaInfo.dll" target="libmediainfo.0.dylib"/>
<dllmap os="linux" dll="MediaInfo.dll" target="libmediainfo.so.0" />
<dllmap os="freebsd" dll="MediaInfo.dll" target="libmediainfo.so.0" />
<dllmap os="solaris" dll="MediaInfo.dll" target="libmediainfo.so.0.0.0" />
</configuration>

View File

@@ -1,9 +1,6 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.md in the project root for license information.
using System;
using System.Diagnostics.CodeAnalysis;
using System.Linq.Expressions;
using System.Reflection;
using System.Threading;
namespace Microsoft.AspNet.SignalR.Infrastructure

View File

@@ -4,7 +4,7 @@ using System.Diagnostics;
namespace Microsoft.AspNet.SignalR.Infrastructure
{
internal class NoOpPerformanceCounter : IPerformanceCounter
public class NoOpPerformanceCounter : IPerformanceCounter
{
public string CounterName
{

View File

@@ -56,7 +56,7 @@ namespace Microsoft.AspNet.SignalR.Infrastructure
}
catch(NotImplementedException)
{
// This happens on mono
// This happens on mono
}
}

View File

@@ -276,10 +276,9 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="AfterBuild">
</Target>
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
</Target>
-->
</Project>

View File

@@ -6,7 +6,6 @@ using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNet.SignalR.Configuration;
using Microsoft.AspNet.SignalR.Hosting;

View File

@@ -1,13 +1,9 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.md in the project root for license information.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNet.SignalR.Infrastructure;

View File

@@ -3,7 +3,6 @@
using System;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNet.SignalR.Hosting;
using Microsoft.AspNet.SignalR.Infrastructure;

View File

@@ -102,7 +102,6 @@
</ItemGroup>
<Import Project="..\Common\Microsoft.AspNet.SignalR.targets" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
@@ -110,4 +109,4 @@
<Target Name="AfterBuild">
</Target>
-->
</Project>
</Project>

View File

@@ -7,11 +7,9 @@ using System.Security.Principal;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNet.SignalR.Owin.Infrastructure;
using Microsoft.AspNet.SignalR.Hosting;
namespace Microsoft.AspNet.SignalR.Owin
{
using WebSocketFunc = Func<IDictionary<string, object>, Task>;
public partial class ServerRequest :
#if NET45
IWebSocketRequest

View File

@@ -774,7 +774,8 @@ namespace MonoTorrent
break;
case ("nodes"):
this.nodes = (BEncodedList)keypair.Value;
if (keypair.Value.ToString().Length != 0)
this.nodes = (BEncodedList)keypair.Value;
break;
case ("comment.utf-8"):

View File

@@ -1,170 +0,0 @@
using System;
using System.Collections.Generic;
using FizzWare.NBuilder;
using FluentAssertions;
using Marr.Data;
using NUnit.Framework;
using NzbDrone.Api.Commands;
using NzbDrone.Api.Config;
using NzbDrone.Api.Episodes;
using NzbDrone.Api.History;
using NzbDrone.Api.Indexers;
using NzbDrone.Api.Logs;
using NzbDrone.Api.Mapping;
using NzbDrone.Api.Profiles;
using NzbDrone.Api.RootFolders;
using NzbDrone.Api.Series;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Instrumentation;
using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Organizer;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.RootFolders;
using NzbDrone.Core.Tv;
using NzbDrone.Core.Update.Commands;
using NzbDrone.Test.Common;
using System.Linq;
namespace NzbDrone.Api.Test.MappingTests
{
[TestFixture]
public class ResourceMappingFixture : TestBase
{
[TestCase(typeof(Core.Tv.Series), typeof(SeriesResource))]
[TestCase(typeof(Episode), typeof(EpisodeResource))]
[TestCase(typeof(RootFolder), typeof(RootFolderResource))]
[TestCase(typeof(NamingConfig), typeof(NamingConfigResource))]
// [TestCase(typeof(IndexerDefinition), typeof(IndexerResource))] //TODO: Ignoring because we don't have a good way to ignore properties with value injector
[TestCase(typeof(ReleaseInfo), typeof(ReleaseResource))]
[TestCase(typeof(ParsedEpisodeInfo), typeof(ReleaseResource))]
[TestCase(typeof(DownloadDecision), typeof(ReleaseResource))]
[TestCase(typeof(Core.History.History), typeof(HistoryResource))]
[TestCase(typeof(Profile), typeof(ProfileResource))]
[TestCase(typeof(ProfileQualityItem), typeof(ProfileQualityItemResource))]
[TestCase(typeof(Log), typeof(LogResource))]
[TestCase(typeof(Command), typeof(CommandResource))]
public void matching_fields(Type modelType, Type resourceType)
{
MappingValidation.ValidateMapping(modelType, resourceType);
}
[Test]
public void should_map_lazy_loaded_values_should_not_be_inject_if_not_loaded()
{
var modelWithLazy = new ModelWithLazy()
{
Guid = new TestLazyLoaded<Guid>()
};
modelWithLazy.InjectTo<ModelWithNoLazy>().Guid.Should().BeEmpty();
modelWithLazy.Guid.IsLoaded.Should().BeFalse();
}
[Test]
public void should_map_lay_loaded_values_should_be_inject_if_loaded()
{
var guid = Guid.NewGuid();
var modelWithLazy = new ModelWithLazy()
{
Guid = new LazyLoaded<Guid>(guid)
};
modelWithLazy.InjectTo<ModelWithNoLazy>().Guid.Should().Be(guid);
modelWithLazy.Guid.IsLoaded.Should().BeTrue();
}
[Test]
public void should_be_able_to_map_lists()
{
var modelList = Builder<TestModel>.CreateListOfSize(10).Build();
var resourceList = modelList.InjectTo<List<TestResource>>();
resourceList.Should().HaveSameCount(modelList);
}
[Test]
public void should_map_wrapped_models()
{
var modelList = Builder<TestModel>.CreateListOfSize(10).Build().ToList();
var wrapper = new TestModelWrapper
{
TestlList = modelList
};
wrapper.InjectTo<TestResourceWrapper>();
}
[Test]
public void should_map_profile()
{
var profileResource = new ProfileResource
{
Cutoff = Quality.WEBDL1080p,
Items = new List<ProfileQualityItemResource> { new ProfileQualityItemResource { Quality = Quality.WEBDL1080p, Allowed = true } }
};
profileResource.InjectTo<Profile>();
}
[Test]
public void should_map_tracked_command()
{
var profileResource = new ApplicationUpdateCommand();
profileResource.InjectTo<CommandResource>();
}
}
public class ModelWithLazy
{
public LazyLoaded<Guid> Guid { get; set; }
}
public class ModelWithNoLazy
{
public Guid Guid { get; set; }
}
public class TestLazyLoaded<T> : LazyLoaded<T>
{
public override void Prepare(Func<IDataMapper> dataMapperFactory, object parent)
{
throw new InvalidOperationException();
}
}
public class TestModelWrapper
{
public List<TestModel> TestlList { get; set; }
}
public class TestResourceWrapper
{
public List<TestResource> TestList { get; set; }
}
public class TestModel
{
public string Field1 { get; set; }
public string Field2 { get; set; }
}
public class TestResource
{
public string Field1 { get; set; }
public string Field2 { get; set; }
}
}

View File

@@ -38,17 +38,21 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="FluentAssertions, Version=3.2.1.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\FluentAssertions.3.2.1\lib\net40\FluentAssertions.dll</HintPath>
<Reference Include="FizzWare.NBuilder, Version=4.0.0.115, Culture=neutral, PublicKeyToken=5651b03e12e42c12, processorArchitecture=MSIL">
<HintPath>..\packages\NBuilder.4.0.0\lib\net40\FizzWare.NBuilder.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FluentAssertions.Core, Version=3.2.1.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\FluentAssertions.3.2.1\lib\net40\FluentAssertions.Core.dll</HintPath>
<Reference Include="FluentAssertions, Version=4.18.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\packages\FluentAssertions.4.18.0\lib\net40\FluentAssertions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="nunit.framework, Version=2.6.3.13283, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\NUnit.2.6.3\lib\nunit.framework.dll</HintPath>
<Reference Include="FluentAssertions.Core, Version=4.18.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\packages\FluentAssertions.4.18.0\lib\net40\FluentAssertions.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="nunit.framework, Version=3.5.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.3.5.0\lib\net40\nunit.framework.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
@@ -57,19 +61,12 @@
<Reference Include="System.Xml" />
<Reference Include="System.Xml.Linq" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="FizzWare.NBuilder">
<HintPath>..\packages\NBuilder.3.0.1.1\lib\FizzWare.NBuilder.dll</HintPath>
</Reference>
<Reference Include="Moq">
<HintPath>..\packages\Moq.4.0.10827\lib\NET40\Moq.dll</HintPath>
</Reference>
<Reference Include="Omu.ValueInjecter">
<HintPath>..\packages\valueinjecter.2.3.3\lib\net35\Omu.ValueInjecter.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="ClientSchemaTests\SchemaBuilderFixture.cs" />
<Compile Include="MappingTests\ResourceMappingFixture.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
@@ -104,7 +101,6 @@
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

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