diff --git a/.github/site-list.py b/.github/site-list.py deleted file mode 100644 index 362aa157..00000000 --- a/.github/site-list.py +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/python3 - -from glob import glob -from re import findall, compile, DOTALL -from json import dump, load -from typing import List, Dict - -# Globals -JSON_PATH = "docs/providers.json" -GLOB_ANIME = "app/src/main/java/com/lagradost/cloudstream3/animeproviders/*Provider.kt" -GLOB_MOVIE = "app/src/main/java/com/lagradost/cloudstream3/movieproviders/*Provider.kt" -URL_REGEX = compile("override\sva[lr]\smainUrl[^\"']+[\"'](https?://[a-zA-Z0-9\.-/]+)[\"']") -FILENAME_REGEX = compile("([A-Za-z0-9]+)(?:.kt)$") -PROVIDER_CLASSNAME_REGEX = compile("(?<=class\s)([a-zA-Z]+)(?=\s:\sMainAPI\(\))") -NAME_REGEX = compile("override\sva[lr]\sname[^\"']+[\"']([a-zA-Z-.\s]+)") -LANG_REGEX = compile("override\sva[lr]\slang[^\"']+[\"']([a-zA-Z]+)") - -old_sites: Dict[str, Dict] = load(open(JSON_PATH, "r", encoding="utf-8")) -sites: Dict[str, Dict] = {} - -animelist = glob(GLOB_ANIME) -movielist = glob(GLOB_MOVIE) -allProvidersList = animelist + movielist - -# parse all *Provider.kt files -for path in allProvidersList: - with open(path, "r", encoding='utf-8') as file: - try: - site_text: str = file.read() - filename: str = findall(FILENAME_REGEX, path)[0] - name: str = [*findall(PROVIDER_CLASSNAME_REGEX, site_text), filename][0] - provider_url: str = [*findall(URL_REGEX, site_text), ""][0] - lang: str = [*findall(LANG_REGEX, site_text), "en"][0] - - if name in old_sites.keys(): # if already in previous list use old status and name - sites[name] = { - "name": old_sites[name]['name'], - "url": provider_url if provider_url else old_sites[name]['url'], - "status": old_sites[name]['status'], - "language": lang - } - else: # if not in previous list add with new data - display_name: str = [*findall(NAME_REGEX, site_text), name][0] - if display_name.endswith("Provider"): - display_name = display_name[:-len("Provider")] - sites[name] = { - "name": display_name, - "url": provider_url if provider_url else "", - "status": 1, - "language": lang - } - - except Exception as ex: - print("Error => {0}: {1}".format(path, ex)) - -# add sites from old_sites that are missing in new list -for name in old_sites.keys(): - if name not in sites.keys(): - sites[name] = { - "name": old_sites[name]['name'], - "url": old_sites[name]['url'], - "status": old_sites[name]['status'] - } - -dump(sites, open(JSON_PATH, "w+", encoding="utf-8"), indent=4, sort_keys=True) diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 94207a1c..84251969 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -31,25 +31,25 @@ jobs: run: | COMMIT_HASH="$(git log -1 --format='%H')" sed -i "s/unknown_prerelease<\/string>/$COMMIT_HASH<\/string>/g" app/src/main/res/values/strings.xml - - name: Decode Keystore - env: - ENCODED_STRING: ${{ secrets.KEYSTORE }} - run: | - TMP_KEYSTORE_FILE_PATH="${RUNNER_TEMP}"/keystore - mkdir -p "${TMP_KEYSTORE_FILE_PATH}" - echo $ENCODED_STRING | base64 -di > "${TMP_KEYSTORE_FILE_PATH}"/prerelease_keystore.keystore + # - name: Decode Keystore + # env: + # ENCODED_STRING: ${{ secrets.KEYSTORE }} + # run: | + # TMP_KEYSTORE_FILE_PATH="${RUNNER_TEMP}"/keystore + # mkdir -p "${TMP_KEYSTORE_FILE_PATH}" + # echo $ENCODED_STRING | base64 -di > "${TMP_KEYSTORE_FILE_PATH}"/prerelease_keystore.keystore - name: Run Gradle - run: ./gradlew app:assemblePrerelease + run: ./gradlew app:assembleDebug env: SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }} SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }} SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }} - #- name: Create pre-release - # uses: "marvinpinto/action-automatic-releases@latest" - # with: - # repo_token: "${{ secrets.GITHUB_TOKEN }}" - # automatic_release_tag: "pre-release" - # prerelease: true - # title: "Pre-release Build" - # files: | - # app/build/outputs/apk/prerelease/*.apk + - name: Create pre-release + uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "pre-release" + prerelease: true + title: "Pre-release Build" + files: | + app/build/outputs/apk/prerelease/*.apk diff --git a/.github/workflows/site_list.yml b/.github/workflows/site_list.yml deleted file mode 100644 index ab2d30dd..00000000 --- a/.github/workflows/site_list.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: Create site list - -on: - push: - branches: [ master ] - paths: - - 'app/src/main/java/com/lagradost/cloudstream3/*providers/*Provider.kt' - - '.github/workflows/site_list.yml' - - '.github/site-list.py' - - 'docs/providers.json' - - 'app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt' - -concurrency: - group: "site-list" - cancel-in-progress: true - -jobs: - create: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Edit providers.json - run: | - python3 .github/site-list.py - - name: Commit to the repo - run: | - git config user.name "GitHub Actions" - git config user.email "actions@github.com" - git add . - # "echo" returns true so the build succeeds, even if no changed files - git commit -m 'chore(docs): update list of sites' || echo - git push diff --git a/docs/_config.yml b/docs/_config.yml deleted file mode 100644 index cc35c1df..00000000 --- a/docs/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-modernist \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index deaa29a8..00000000 --- a/docs/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - CloudStream-3 Supported Sites - - - - -
-

Sites supported (0):

- - -
-
- - - - diff --git a/docs/keys.json b/docs/keys.json deleted file mode 100644 index 091ff974..00000000 --- a/docs/keys.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "wco_key": "51wJ0FDq/UVCefLopEcmK3ni4WIQztMjZdSYOsbHr9R2h7PvxBGAuglaN8+kXT6y", - "wco_cipher_key": "vZUFFBPxMqDeOfAm" -} \ No newline at end of file diff --git a/docs/providers.json b/docs/providers.json deleted file mode 100644 index 52fbe54d..00000000 --- a/docs/providers.json +++ /dev/null @@ -1,633 +0,0 @@ -{ - "AkwamProvider": { - "language": "ar", - "name": "Akwam", - "status": 1, - "url": "https://akwam.to" - }, - "AllAnimeProvider": { - "language": "en", - "name": "AllAnime", - "status": 1, - "url": "https://allanime.site" - }, - "AllMoviesForYouProvider": { - "language": "en", - "name": "AllMoviesForYou", - "status": 1, - "url": "https://allmoviesforyou.net" - }, - "AltadefinizioneProvider": { - "language": "it", - "name": "Altadefinizione", - "status": 1, - "url": "https://altadefinizione.tienda" - }, - "AniPlayProvider": { - "language": "it", - "name": "AniPlay", - "status": 1, - "url": "https://aniplay.it" - }, - "AniflixProvider": { - "language": "en", - "name": "Aniflix", - "status": 1, - "url": "https://aniflix.pro" - }, - "AnimeFlickProvider": { - "language": "en", - "name": "AnimeFlick", - "status": 1, - "url": "https://animeflick.net" - }, - "AnimeIndoProvider": { - "language": "id", - "name": "AnimeIndo", - "status": 1, - "url": "https://animeindo.sbs" - }, - "AnimePaheProvider": { - "language": "en", - "name": "AnimePahe", - "status": 0, - "url": "https://animepahe.com" - }, - "AnimeSailProvider": { - "language": "id", - "name": "AnimeSail", - "status": 1, - "url": "https://111.90.143.42" - }, - "AnimeSaturnProvider": { - "language": "it", - "name": "AnimeSaturn", - "status": 1, - "url": "https://www.animesaturn.cc" - }, - "AnimeWorldProvider": { - "language": "it", - "name": "AnimeWorld", - "status": 1, - "url": "https://www.animeworld.tv" - }, - "AnimefenixProvider": { - "language": "es", - "name": "Animefenix", - "status": 1, - "url": "https://animefenix.com" - }, - "AnimeflvIOProvider": { - "language": "es", - "name": "Animeflv.io", - "status": 1, - "url": "https://animeflv.io" - }, - "AnimeflvnetProvider": { - "language": "es", - "name": "Animeflv.net", - "status": 1, - "url": "https://www3.animeflv.net" - }, - "AnimekisaProvider": { - "language": "en", - "name": "Animekisa", - "status": 1, - "url": "https://animekisa.in" - }, - "ApiMDBProvider": { - "name": "ApiMDB", - "status": 0, - "url": "https://v2.apimdb.net" - }, - "AsiaFlixProvider": { - "language": "en", - "name": "AsiaFlix", - "status": 0, - "url": "https://asiaflix.app" - }, - "AsianLoadProvider": { - "language": "en", - "name": "AsianLoad", - "status": 1, - "url": "https://asianembed.io" - }, - "BflixProvider": { - "language": "en", - "name": "Bflix", - "status": 1, - "url": "https://bflix.ru" - }, - "CimaNowProvider": { - "language": "ar", - "name": "CimaNow", - "status": 1, - "url": "https://cimanow.cc" - }, - "CineblogProvider": { - "language": "it", - "name": "CineBlog", - "status": 1, - "url": "https://cb01.rip" - }, - "CinecalidadProvider": { - "language": "es", - "name": "Cinecalidad", - "status": 1, - "url": "https://cinecalidad.lol" - }, - "CuevanaProvider": { - "language": "es", - "name": "Cuevana", - "status": 1, - "url": "https://cuevana3.me" - }, - "DopeboxProvider": { - "language": "en", - "name": "Dopebox", - "status": 1, - "url": "https://dopebox.to" - }, - "DoramasYTProvider": { - "language": "es", - "name": "DoramasYT", - "status": 1, - "url": "https://doramasyt.com" - }, - "DramaSeeProvider": { - "language": "en", - "name": "DramaSee", - "status": 1, - "url": "https://dramasee.net" - }, - "DramaidProvider": { - "language": "id", - "name": "DramaId", - "status": 1, - "url": "https://185.224.83.103" - }, - "DreamSubProvider": { - "name": "DreamSub", - "status": 1, - "url": "https://dreamsub.me" - }, - "DubbedAnimeProvider": { - "language": "en", - "name": "DubbedAnime", - "status": 1, - "url": "https://bestdubbedanime.com" - }, - "DubokuProvider": { - "language": "zh", - "name": "Duboku", - "status": 1, - "url": "https://www.duboku.tv" - }, - "EgyBestProvider": { - "language": "ar", - "name": "EgyBest", - "status": 1, - "url": "https://www.egy.best" - }, - "ElifilmsProvider": { - "language": "es", - "name": "Elifilms", - "status": 1, - "url": "https://elifilms.net" - }, - "EntrePeliculasySeriesProvider": { - "name": "EntrePeliculasySeries", - "status": 1, - "url": "https://entrepeliculasyseries.nu" - }, - "EntrepeliculasyseriesProvider": { - "language": "es", - "name": "EntrePeliculasySeries", - "status": 1, - "url": "https://entrepeliculasyseries.nu" - }, - "EstrenosDoramasProvider": { - "language": "es", - "name": "EstrenosDoramas", - "status": 1, - "url": "https://www23.estrenosdoramas.net" - }, - "FaselHDProvider": { - "language": "ar", - "name": "FaselHD", - "status": 0, - "url": "https://faselhd.io" - }, - "FilmanProvider": { - "language": "pl", - "name": "filman.cc", - "status": 1, - "url": "https://filman.cc" - }, - "FilmpertuttiProvider": { - "language": "it", - "name": "Filmpertutti", - "status": 1, - "url": "https://filmpertutti.photo" - }, - "FmoviesToProvider": { - "language": "en", - "name": "Fmovies.to", - "status": 1, - "url": "https://fmovies.to" - }, - "FrenchStreamProvider": { - "language": "fr", - "name": "French Stream", - "status": 1, - "url": "https://french-stream.re" - }, - "GogoanimeProvider": { - "language": "en", - "name": "GogoAnime", - "status": 1, - "url": "https://gogoanime.lu" - }, - "GomunimeProvider": { - "language": "id", - "name": "Gomunime", - "status": 1, - "url": "https://185.231.223.76" - }, - "HDMProvider": { - "language": "en", - "name": "HD Movies", - "status": 0, - "url": "https://hdm.to" - }, - "HDTodayProvider": { - "language": "en", - "name": "HDToday", - "status": 1, - "url": "https://hdtoday.cc" - }, - "HDrezkaProvider": { - "language": "ru", - "name": "HDrezka", - "status": 1, - "url": "https://hdrezka19139.org" - }, - "IHaveNoTvProvider": { - "language": "en", - "name": "I Have No TV", - "status": 1, - "url": "https://ihavenotv.com" - }, - "IdlixProvider": { - "language": "id", - "name": "Idlix", - "status": 1, - "url": "https://94.103.82.88" - }, - "IlGenioDelloStreamingProvider": { - "language": "it", - "name": "IlGenioDelloStreaming", - "status": 1, - "url": "https://ilgeniodellostreaming.quest" - }, - "JKAnimeProvider": { - "language": "es", - "name": "JKAnime", - "status": 1, - "url": "https://jkanime.net" - }, - "KawaiifuProvider": { - "language": "en", - "name": "Kawaiifu", - "status": 1, - "url": "https://kawaiifu.com" - }, - "KdramaHoodProvider": { - "language": "en", - "name": "KDramaHood", - "status": 1, - "url": "https://kdramahood.com" - }, - "KimCartoonProvider": { - "language": "en", - "name": "Kim Cartoon", - "status": 1, - "url": "https://kimcartoon.li" - }, - "KisskhProvider": { - "language": "en", - "name": "Kisskh", - "status": 1, - "url": "https://kisskh.me" - }, - "KuramanimeProvider": { - "language": "id", - "name": "Kuramanime", - "status": 1, - "url": "https://kuramanime.com" - }, - "KuronimeProvider": { - "language": "id", - "name": "Kuronime", - "status": 1, - "url": "https://45.12.2.2" - }, - "LayarKaca21Provider": { - "name": "LayarKaca", - "status": 1, - "url": "https://149.56.24.226/" - }, - "LayarKacaProvider": { - "language": "id", - "name": "LayarKaca", - "status": 1, - "url": "https://149.56.24.226" - }, - "LookMovieProvider": { - "name": "LookMovie", - "status": 0, - "url": "https://lookmovie.io" - }, - "MeloMovieProvider": { - "language": "en", - "name": "MeloMovie", - "status": 0, - "url": "https://melomovie.com" - }, - "MonoschinosProvider": { - "language": "es", - "name": "Monoschinos", - "status": 1, - "url": "https://monoschinos2.com" - }, - "MultiplexProvider": { - "language": "id", - "name": "Multiplex", - "status": 1, - "url": "https://146.19.24.137" - }, - "MundoDonghuaProvider": { - "language": "es", - "name": "MundoDonghua", - "status": 1, - "url": "https://www.mundodonghua.com" - }, - "MyCimaProvider": { - "language": "ar", - "name": "MyCima", - "status": 1, - "url": "https://mycima.tv" - }, - "NeonimeProvider": { - "language": "id", - "name": "Neonime", - "status": 1, - "url": "https://neonime.watch" - }, - "NginxProvider": { - "language": "en", - "name": "Nginx", - "status": 1, - "url": "" - }, - "NineAnimeProvider": { - "language": "en", - "name": "9Anime", - "status": 1, - "url": "https://9anime.id" - }, - "NontonAnimeIDProvider": { - "language": "id", - "name": "NontonAnimeID", - "status": 1, - "url": "https://75.119.159.228" - }, - "OlgplyProvider": { - "language": "en", - "name": "Olgply", - "status": 1, - "url": "https://olgply.com" - }, - "OpenVidsProvider": { - "language": "en", - "name": "OpenVids", - "status": 1, - "url": "https://openvids.io" - }, - "OploverzProvider": { - "language": "id", - "name": "Oploverz", - "status": 1, - "url": "https://65.108.132.145" - }, - "OtakudesuProvider": { - "language": "id", - "name": "Otakudesu", - "status": 1, - "url": "https://otakudesu.watch" - }, - "PeliSmartProvider": { - "language": "es", - "name": "PeliSmart", - "status": 1, - "url": "https://pelismart.com" - }, - "PelisflixProvider": { - "language": "es", - "name": "Pelisflix", - "status": 1, - "url": "https://pelisflix.li" - }, - "PelisplusHDProvider": { - "language": "es", - "name": "PelisplusHD", - "status": 1, - "url": "https://pelisplushd.net" - }, - "PelisplusProvider": { - "language": "en", - "name": "Pelisplus", - "status": 1, - "url": "https://pelisplus.icu" - }, - "PhimmoichillProvider": { - "language": "vi", - "name": "Phimmoichill", - "status": 1, - "url": "https://phimmoichill.net" - }, - "PinoyHDXyzProvider": { - "language": "tl", - "name": "Pinoy-HD", - "status": 1, - "url": "https://www.pinoy-hd.xyz" - }, - "PinoyMoviePediaProvider": { - "language": "tl", - "name": "Pinoy Moviepedia", - "status": 1, - "url": "https://pinoymoviepedia.ru" - }, - "PinoyMoviesEsProvider": { - "language": "tl", - "name": "Pinoy Movies", - "status": 1, - "url": "https://pinoymovies.es" - }, - "RebahinProvider": { - "language": "id", - "name": "Rebahin", - "status": 1, - "url": "http://104.237.198.194" - }, - "SeriesflixProvider": { - "language": "es", - "name": "Seriesflix", - "status": 1, - "url": "https://seriesflix.video" - }, - "SflixProProvider": { - "language": "en", - "name": "Sflix.pro", - "status": 1, - "url": "https://sflix.pro" - }, - "SflixProvider": { - "language": "en", - "name": "Sflix.to", - "status": 1, - "url": "https://sflix.to" - }, - "SoaptwoDayProvider": { - "language": "en", - "name": "Soap2Day", - "status": 0, - "url": "https://secretlink.xyz" - }, - "SolarmovieProvider": { - "language": "en", - "name": "Solarmovie", - "status": 1, - "url": "https://solarmovie.pe" - }, - "StreamingcommunityProvider": { - "language": "it", - "name": "Streamingcommunity", - "status": 1, - "url": "https://streamingcommunity.best" - }, - "TantifilmProvider": { - "language": "it", - "name": "Tantifilm", - "status": 1, - "url": "https://tantifilm.autos" - }, - "TenshiProvider": { - "language": "en", - "name": "Tenshi.moe", - "status": 1, - "url": "https://tenshi.moe" - }, - "TheFlixToProvider": { - "language": "en", - "name": "TheFlix.to", - "status": 0, - "url": "https://theflix.to" - }, - "TocanimeProvider": { - "language": "vi", - "name": "Tocanime", - "status": 1, - "url": "https://tocanime.co" - }, - "TrailersTwoProvider": { - "language": "en", - "name": "Trailers.to", - "status": 1, - "url": "https://trailers.to" - }, - "TwoEmbedProvider": { - "language": "en", - "name": "2Embed", - "status": 1, - "url": "https://www.2embed.to" - }, - "UakinoProvider": { - "language": "uk", - "name": "Uakino", - "status": 1, - "url": "https://uakino.club" - }, - "VMoveeProvider": { - "language": "en", - "name": "VMovee", - "status": 1, - "url": "https://www.vmovee.watch" - }, - "VfFilmProvider": { - "language": "fr", - "name": "vf-film.me", - "status": 1, - "url": "https://vf-film.me" - }, - "VfSerieProvider": { - "language": "fr", - "name": "vf-serie.org", - "status": 1, - "url": "https://vf-serie.org" - }, - "VidEmbedProvider": { - "language": "en", - "name": "VidEmbed", - "status": 1, - "url": "https://membed.net" - }, - "VidSrcProvider": { - "language": "en", - "name": "VidSrc", - "status": 1, - "url": "https://v2.vidsrc.me" - }, - "WatchAsianProvider": { - "language": "en", - "name": "WatchAsian", - "status": 1, - "url": "https://watchasian.cx" - }, - "WatchCartoonOnlineProvider": { - "language": "en", - "name": "WatchCartoonOnline", - "status": 1, - "url": "https://www.wcostream.com" - }, - "WcoProvider": { - "language": "en", - "name": "WCO Stream", - "status": 1, - "url": "https://wcostream.cc" - }, - "WcofunProvider": { - "language": "en", - "name": "WCO Fun", - "status": 1, - "url": "https://www.wcofun.com" - }, - "XcineProvider": { - "language": "de", - "name": "Xcine", - "status": 1, - "url": "https://xcine.me" - }, - "YomoviesProvider": { - "language": "hi", - "name": "Yomovies", - "status": 1, - "url": "https://yomovies.skin" - }, - "ZoroProvider": { - "language": "en", - "name": "Zoro", - "status": 1, - "url": "https://zoro.to" - } -} \ No newline at end of file diff --git a/docs/script.js b/docs/script.js deleted file mode 100644 index feeaebc7..00000000 --- a/docs/script.js +++ /dev/null @@ -1,62 +0,0 @@ -const count = document.getElementById("count") -const mainContainer = document.getElementById("siteList") -const regionNamesInEnglish = new Intl.DisplayNames(['en'], { type: 'language' }); -fetch("providers.json" + "?v=" + Date.now()) - .then(r => r.json()) - .then(function (data) { - count.innerHTML = Object.keys(data).length; - for (var key in data) { - if (data.hasOwnProperty(key)) { - var value = data[key]; - if (value.url == "NONE") { continue; } - - var _status = value.status - var _lang = value.language - - var node = document.createElement("tr"); - node.classList.add("row"); - - var _a = document.createElement("a"); - _a.setAttribute('href', value.url); - _a.innerHTML = value.name - - var _langEl = document.createElement("sup"); - var _langName = "Unknown"; - try { - _langName = regionNamesInEnglish.of(_lang); - } catch (langerr) { - _langName = "Unknown"; - console.log("Error on parsing language code => " + langerr); - } - _langEl.innerHTML = " " + _langName - _a.appendChild(_langEl); - - var _statusText = "Unknown"; - var _buttonText = "yellow"; - switch (_status) { - case 0: - _statusText = "Unavailable"; - _buttonText = "red"; - break; - case 1: - _statusText = "Available"; - _buttonText = "green"; - - break; - case 2: - _statusText = "Slow"; - _buttonText = "yellow"; - break; - case 3: - _statusText = "Beta"; - _buttonText = "blue"; - break; - } - _a.classList.add(_buttonText + "Button"); - _a.classList.add("indicator"); - _a.classList.add("button"); - node.appendChild(_a); - mainContainer.appendChild(node); - } - } - }) diff --git a/docs/style.css b/docs/style.css deleted file mode 100644 index 0f0b6a45..00000000 --- a/docs/style.css +++ /dev/null @@ -1,49 +0,0 @@ -body { - font-family: "Roboto", sans-serif; - background-color: #FFF; -} -.whiteText { - color : #FFF; -} - -.button { - color : #000; - text-decoration: none; -} - -.row { - padding: 0px 10px; - white-space: nowrap; -} -table { - border-spacing: 0.5rem; -} - -.yellowButton::before { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m12 24c6.6274 0 12-5.3726 12-12 0-6.62744-5.3726-12-12-12-6.62744 0-12 5.37256-12 12 0 6.6274 5.37256 12 12 12zm0-17.5c.4141 0 .75.33582.75.75v4.5c0 .4142-.3359.75-.75.75s-.75-.3358-.75-.75v-4.5c0-.41418.3359-.75.75-.75zm.8242 9.5658c.0635-.0919.1118-.195.1416-.3054.0132-.0482.0225-.0979.0283-.1487.0039-.0366.0059-.074.0059-.1117 0-.5522-.4478-1-1-1s-1 .4478-1 1 .4478 1 1 1c.3423 0 .644-.172.8242-.4342z' fill='%23dbab09'/%3E%3C/svg%3e"); -} - -.blueButton::before { - filter: sepia(100%) saturate(300%) brightness(70%) hue-rotate(180deg); - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m12 24c6.6274 0 12-5.3726 12-12 0-6.62744-5.3726-12-12-12-6.62744 0-12 5.37256-12 12 0 6.6274 5.37256 12 12 12zm0-17.5c.4141 0 .75.33582.75.75v4.5c0 .4142-.3359.75-.75.75s-.75-.3358-.75-.75v-4.5c0-.41418.3359-.75.75-.75zm.8242 9.5658c.0635-.0919.1118-.195.1416-.3054.0132-.0482.0225-.0979.0283-.1487.0039-.0366.0059-.074.0059-.1117 0-.5522-.4478-1-1-1s-1 .4478-1 1 .4478 1 1 1c.3423 0 .644-.172.8242-.4342z' fill='%23dbab09'/%3E%3C/svg%3e"); -} - -.redButton::before { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m12 24c6.6274 0 12-5.3726 12-12 0-6.62744-5.3726-12-12-12-6.62744 0-12 5.37256-12 12 0 6.6274 5.37256 12 12 12zm0-17.5c.4141 0 .75.33582.75.75v4.5c0 .4142-.3359.75-.75.75s-.75-.3358-.75-.75v-4.5c0-.41418.3359-.75.75-.75zm.8242 9.5658c.0635-.0919.1118-.195.1416-.3054.0132-.0482.0225-.0979.0283-.1487.0039-.0366.0059-.074.0059-.1117 0-.5522-.4478-1-1-1s-1 .4478-1 1 .4478 1 1 1c.3423 0 .644-.172.8242-.4342z' fill='%23d73a49'/%3E%3C/svg%3e"); -} - -.greenButton::before{ - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg width='15' height='15' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m1 12c0-6.07513 4.92487-11 11-11 6.0751 0 11 4.92487 11 11 0 6.0751-4.9249 11-11 11-6.07513 0-11-4.9249-11-11zm16.2803-2.71967c.2929-.29289.2929-.76777 0-1.06066s-.7677-.29289-1.0606 0l-5.9697 5.96963-2.46967-2.4696c-.29289-.2929-.76777-.2929-1.06066 0s-.29289.7677 0 1.0606l3 3c.29293.2929.76773.2929 1.06063 0z' fill='%2328a745'/%3E%3C/svg%3e");ontent: ''; -} - -.indicator::before { - display: inline-block; - width: 24px; - height: 24px; - content: ""; - vertical-align: text-bottom; - background-size: 100% 100%; - background-repeat: no-repeat; - background-position: center center; - margin-right:10px; -} \ No newline at end of file