From dbb3d9b341e1c8e4bf021807b056ce8846513b88 Mon Sep 17 00:00:00 2001 From: minoplhy Date: Tue, 18 Apr 2023 17:18:15 +0700 Subject: [PATCH] crappy-reverie : init --- .ruby-version | 2 +- 404.md | 2 +- README.md | 16 +- _config.yml | 37 +- _includes/svg-icons.html | 1 + _layouts/default.html | 22 +- _layouts/post.html | 2 +- _pages/archive.md | 25 +- _pages/projects.md | 7 + _pages/search.md | 2 +- ...-02-13-introducing-reverie-jekyll-theme.md | 87 - _posts/2019-08-08-no-title-posts.md | 6 - _posts/2019-12-11-pullquotes.md | 14 - _posts/2019-7-27-super-long-article.md | 11 - ...s-post-demonstrates-post-content-styles.md | 95 - _posts/2019-7-28-super-short-article.md | 7 - _posts/2019-8-12-code-snippets.md | 42 - _posts/2021-06-07-Crappy-blog-again.markdown | 19 + .../2021-12-25-Moved-from-cloudflare.markdown | 25 + .../2022-03-30-Back-to-Self-Hosting.markdown | 15 + _posts/2022-09-19-v4-crappy.markdown | 25 + _posts/2023-04-16-big-migration-2023.md | 9 + _sass/_svg-icons.scss | 1 + assets/{ => css}/style.scss | 2 +- .../fonts}/EBGaramond-Regular.ttf | Bin {fonts => assets/fonts}/aramisi.ttf | Bin assets/images/404.png | Bin 0 -> 110233 bytes {images => assets/images}/categories.png | Bin {images => assets/images}/favicon-32x32.png | Bin {images => assets/images}/galaxy.jpg | Bin {images => assets/images}/mobile-demo.png | Bin {images => assets/images}/reverie-demo.png | Bin {images => assets/images}/reverie-text.png | Bin {images => assets/images}/reverie.png | Bin {images => assets/images}/search.png | Bin assets/js/darkreader.js | 7575 +++++++++++++++++ assets/js/darkreader.min.js | 8 + assets/js/lightning.js | 28 + assets/{ => js}/simple-jekyll-search.min.js | 0 images/404.jpg | Bin 54799 -> 0 bytes index.html | 2 + 41 files changed, 7775 insertions(+), 312 deletions(-) create mode 100644 _pages/projects.md delete mode 100644 _posts/2019-02-13-introducing-reverie-jekyll-theme.md delete mode 100644 _posts/2019-08-08-no-title-posts.md delete mode 100644 _posts/2019-12-11-pullquotes.md delete mode 100644 _posts/2019-7-27-super-long-article.md delete mode 100644 _posts/2019-7-27-this-post-demonstrates-post-content-styles.md delete mode 100644 _posts/2019-7-28-super-short-article.md delete mode 100644 _posts/2019-8-12-code-snippets.md create mode 100644 _posts/2021-06-07-Crappy-blog-again.markdown create mode 100644 _posts/2021-12-25-Moved-from-cloudflare.markdown create mode 100644 _posts/2022-03-30-Back-to-Self-Hosting.markdown create mode 100644 _posts/2022-09-19-v4-crappy.markdown create mode 100644 _posts/2023-04-16-big-migration-2023.md rename assets/{ => css}/style.scss (99%) rename {fonts => assets/fonts}/EBGaramond-Regular.ttf (100%) rename {fonts => assets/fonts}/aramisi.ttf (100%) create mode 100644 assets/images/404.png rename {images => assets/images}/categories.png (100%) rename {images => assets/images}/favicon-32x32.png (100%) rename {images => assets/images}/galaxy.jpg (100%) rename {images => assets/images}/mobile-demo.png (100%) rename {images => assets/images}/reverie-demo.png (100%) rename {images => assets/images}/reverie-text.png (100%) rename {images => assets/images}/reverie.png (100%) rename {images => assets/images}/search.png (100%) create mode 100644 assets/js/darkreader.js create mode 100644 assets/js/darkreader.min.js create mode 100644 assets/js/lightning.js rename assets/{ => js}/simple-jekyll-search.min.js (100%) delete mode 100644 images/404.jpg diff --git a/.ruby-version b/.ruby-version index 6550da6..7e961f9 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.4.3 \ No newline at end of file +4.3.2 \ No newline at end of file diff --git a/404.md b/404.md index 4547823..7dee28f 100644 --- a/404.md +++ b/404.md @@ -6,4 +6,4 @@ permalink: /404 Sorry, we can't find that page that you're looking for. You can try again by going [back to the homepage]({{ site.baseurl }}/). -[Constructocat by https://github.com/jasoncostello]({{ site.baseurl }}/) +[Constructocat by https://github.com/jasoncostello]({{ site.baseurl }}/) diff --git a/README.md b/README.md index 1f3dcc2..0934ad2 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

- Reverie + Reverie

Support my work via Paypal @@ -11,17 +11,27 @@ --- +Reverie-Crappy is a fork of [amitmerchant1990/reverie](https://github.com/amitmerchant1990/reverie) with some adjustment. +The following has been add/edited from the original : + - Dark Theme toggle (don't respect browser preferance) with DarkReader + - Remove . when post author doesn't present + - change file strcture + - Post 'visiblity' when not set to public, will not be listed on site. It still appear on sitemap though. + - More expand friendly navbar. + - add gitea icon svg. + + Reverie is a [Jekyll](https://jekyllrb.com/)-powered theme which is simple and opinionated. It's actually a fork of [jekyll-now](https://github.com/barryclark/jekyll-now) with some additional features and personal touches which I've implemented to suit my needs for my blog. > [Theme demo](https://reverie.pages.dev/) This is a plug-and-play Jekyll theme best suited to use on [GitHub Pages](https://pages.github.com) (or [Cloudflare Pages](https://pages.cloudflare.com/) if you want to have your repository private) without even setting up a local environment. -![](/images/reverie-demo.png) +![](/assets/images/reverie-demo.png) | Responsiveness | Search | Categories | |---------------------|----------------------|----------------------| -|![Responsiveness](/images/mobile-demo.png) | ![search](/images/search.png) | ![categories](/images/categories.png) | +|![Responsiveness](/assets/images/mobile-demo.png) | ![search](/assets/images/search.png) | ![categories](/assets/images/categories.png) | # Table of Contents - [Features overview](#features-overview) diff --git a/_config.yml b/_config.yml index 321142f..add1fb1 100644 --- a/_config.yml +++ b/_config.yml @@ -3,16 +3,16 @@ # # Name of your site (displayed in the header) -name: Reverie +name: Wa-ii # Name of the author -author: Amit Merchant +author: # Short bio or description (displayed in the header) -description: An elegant Jekyll theme +description: Don't know what to describe # URL of your avatar or profile pic (you could use your GitHub profile pic) -avatar: /images/reverie.png +avatar: /assets/images/reverie.png # # Flags below are optional @@ -21,50 +21,51 @@ avatar: /images/reverie.png # Includes an icon in the footer for each username you enter footer-links: dribbble: - email: amit.d.merchant@gmail.com + email: facebook: flickr: - github: amitmerchant1990/reverie + github: minoplhy/crappy-reverie instagram: linkedin: pinterest: - rss: rss - twitter: amit_merchant + rss: + twitter: stackoverflow: youtube: # channel/ or user/ googleplus: # anything in your profile username that comes after plus.google.com/ playconsole: mastodon: # /@ eg. fosstodon.org/@username + gitea: waii.ch/p-p/minoplhy/crappy-reverie # // # Enter your Disqus shortname (not your username) to enable commenting on posts # You can find your shortname on the Settings page of your Disqus account disqus: # Enter your Google Analytics web tracking code (e.g. UA-2110908-2) to activate tracking -google_analytics: UA-43339302-11 +google_analytics: # For newer "GA4" analytics, use the following instead of the "UA" entry above #google_analytics_ga4: G-GABC1DEFG # Your website URL (e.g. http://amitmerchant1990.github.io or http://www.amitmerchant.com) # Used for Sitemap.xml and your RSS feed -url: http://www.amitmerchant.com/reverie -enforce_ssl: https://www.amitmerchant.com/reverie +url: http://waii.ch +enforce_ssl: https://waii.ch # If you're hosting your site at a Project repository on GitHub pages # (http://yourusername.github.io/repository-name) # and NOT your User repository (http://yourusername.github.io) # then add in the baseurl here, like this: "/repository-name" -baseurl: "/reverie" +baseurl: "" # # !! You don't need to change any of the configuration flags below !! # -permalink: /:title/ +permalink: /blog/:title/ # The release of Jekyll Now that you're using -version: v1.2.0 +version: v4.3.2 # Jekyll 3 now only supports Kramdown for Markdown kramdown: @@ -83,7 +84,7 @@ sass: # Use the following plug-ins plugins: - jekyll-sitemap # Create a sitemap using the official Jekyll sitemap gem - - jekyll-feed # Create an Atom feed using the official Jekyll feed gem + # - jekyll-feed # Create an Atom feed using the official Jekyll feed gem - jekyll-seo-tag - jekyll-paginate @@ -92,6 +93,12 @@ include: ['_pages'] paginate: 6 paginate_path: /page:num/ +header_pages: + - _pages/projects.md + - _pages/search.md + - _pages/archive.md + - _pages/about.md + # Exclude these files from your production _site exclude: - Gemfile diff --git a/_includes/svg-icons.html b/_includes/svg-icons.html index be731be..6f7816f 100644 --- a/_includes/svg-icons.html +++ b/_includes/svg-icons.html @@ -13,3 +13,4 @@ {% if site.footer-links.googleplus %}{% endif %} {% if site.footer-links.playconsole %}{% endif %} {% if site.footer-links.mastodon %}{% endif %} +{% if site.footer-links.gitea %}{% endif %} diff --git a/_layouts/default.html b/_layouts/default.html index caa5862..fe60e7b 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -3,14 +3,16 @@ {% if page.title %}{{ page.title }} – {% endif %}{{ site.name }} – {{ site.description }} {% seo title=false %} + {%- assign page_paths = site.header_pages | default: default_paths -%} {% include meta.html %} - + + + - - + {% include analytics_head.html %} @@ -28,11 +30,15 @@

diff --git a/_layouts/post.html b/_layouts/post.html index 1f21920..e92d57f 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -6,7 +6,7 @@ layout: default

{{ page.title }}

-

{{site.author}} · {{ page.date | date: "%B %e, %Y" }}

+

{% if site.author %} {{site.author}} · {% endif %}{{ page.date | date: "%B %e, %Y" }}

{% if page.last_modified_at %}

(Updated: {{ page.last_modified_at | date: "%b %-d, %Y" }})

{% endif %} diff --git a/_pages/archive.md b/_pages/archive.md index c29b9f5..388a14e 100644 --- a/_pages/archive.md +++ b/_pages/archive.md @@ -1,32 +1,19 @@ --- layout: page permalink: /archive/ -title: Posts Archive +title: Archive ---
+

    Most Recent Posts

    - {%for post in site.posts %} - {% unless post.next %} -
      - {% else %} - {% capture month %}{{ post.date | date: '%B %Y' }}{% endcapture %} - {% capture nmonth %}{{ post.next.date | date: '%B %Y' }}{% endcapture %} - {% capture year %}{{ post.date | date: '%Y' }}{% endcapture %} - {% capture nyear %}{{ post.next.date | date: '%Y' }}{% endcapture %} - {% if year != nyear %} -
    -

    {{ post.date | date: '%Y' }}

    -

    Oldest Posts

diff --git a/_pages/projects.md b/_pages/projects.md new file mode 100644 index 0000000..b1f86f9 --- /dev/null +++ b/_pages/projects.md @@ -0,0 +1,7 @@ +--- +layout: page +title: Projects +permalink: /projects/ +--- + +`placeholder` \ No newline at end of file diff --git a/_pages/search.md b/_pages/search.md index b89ec6a..e2474fc 100644 --- a/_pages/search.md +++ b/_pages/search.md @@ -9,7 +9,7 @@ permalink: /search/
    - + -
    - -## Using Reverie on GitHub Pages - -### Step 1) Fork Reverie to your User Repository - -Fork [this repository](https://github.com/amitmerchant1990/reverie), then rename the repository to `yourgithubusername.github.io`. - -Alternatively, you can use [Use this template](https://github.com/amitmerchant1990/reverie/generate) button if you want to create a repository with a clean commit history which will use Reverie as a template. - -Your Jekyll blog will often be viewable immediately at (if it's not, you can often force it to build by completing step 2) - -### Step 2) Customize and view your site - -Enter your site name, description, avatar and many other options by editing the `_config.yml` file. You can easily turn on Google Analytics tracking, Disqus commenting and social icons here. - -Making a change to `_config.yml` (or any file in your repository) will force GitHub Pages to rebuild your site with jekyll. Your rebuilt site will be viewable a few seconds later at - if not, give it ten minutes as GitHub suggests and it'll appear soon. - -### Step 3) Publish your first blog post - -Create a new file called `/_posts/2019-2-13-Hello-World.md` to publish your first blog post. That's all you need to do to publish your first blog post! This [Markdown Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) might come in handy while writing the posts. - -> You can add additional posts in the browser on GitHub.com too! Just hit the Create new file button in `/_posts/` to create new content. Just make sure to include the [front-matter](http://jekyllrb.com/docs/frontmatter/) block at the top of each new blog post and make sure the post's filename is in this format: year-month-day-title.md - -## Using Categories in Reverie - -You can categorize your content based on `categories` in Reverie. For this, you just need to add `categories` in front matter like below: - -For adding single category: - -```md -categories: JavaScript -``` - -For adding multiple categories: - -```md -categories: [PHP, Laravel] -``` - -The contegorized content can be shown over this URL: - -## RSS - -The generated [RSS feed](https://en.wikipedia.org/wiki/RSS) of your blog can be found at . You can see the example RSS feed over [here](https://www.amitmerchant.com/reverie/feed). - -## Sitemap - -The generated sitemap of your blog can be found at . You can see the example sitemap feed over [here](https://www.amitmerchant.com/reverie/sitemap). - -## License - -MIT - - diff --git a/_posts/2019-08-08-no-title-posts.md b/_posts/2019-08-08-no-title-posts.md deleted file mode 100644 index d14509e..0000000 --- a/_posts/2019-08-08-no-title-posts.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: post -title: "" -categories: Miscellaneous ---- -Sometimes, your post just stands for itself and doesn't need a title. And that's fine, too! \ No newline at end of file diff --git a/_posts/2019-12-11-pullquotes.md b/_posts/2019-12-11-pullquotes.md deleted file mode 100644 index 647f4ed..0000000 --- a/_posts/2019-12-11-pullquotes.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: post -title: Pullquotes -categories: [HTML,Code] -excerpt: In graphic design, a pull quote (also known as a lift-out pull quote) is a key phrase, quotation, or excerpt that has been pulled from an article and used as a page layout graphic element, serving to entice readers into the article or to highlight a key topic. ---- - -In graphic design, a pull quote (also known as a lift-out pull quote) is a key phrase, quotation, or excerpt that has been pulled from an article and used as a page layout graphic element, serving to entice readers into the article or to highlight a key topic. {% include pullquote.html quote="It is typically placed in a larger or distinctive typeface and on the same page." %} Pull quotes are often used in magazine and newspaper articles, annual reports, and brochures, as well as on the web. They can add visual interest to text-heavy pages with few images or illustrations. - -Placement of a pull quote on a page may be defined in a publication's or website's style guide. Such a typographic device may or may not be aligned with a column on the page. Some designers, for example, choose not to align the quote. In that case, the quotation cuts into two or more columns, as in the example shown. Because the pull quote invites the reader to read about the highlighted material, the pull quote should appear before the text it cites and, generally, fairly close to it. - -Pull quotes need not be a verbatim copy of the text being quoted; depending on a publication's house style, pull quotes may be abbreviated for space or paraphrased for clarity, with or without indication. - -A disadvantage of pull quotes as a design element is that they can disrupt the reading process of readers invested in reading the text sequentially by drawing attention to ghost fragments out of context. At the other extreme, when pull quotes are used to break up what would otherwise be a formless wall of text, pull quote can serve as visual landmarks to help the reader maintain a sense of sequence and place. \ No newline at end of file diff --git a/_posts/2019-7-27-super-long-article.md b/_posts/2019-7-27-super-long-article.md deleted file mode 100644 index d148630..0000000 --- a/_posts/2019-7-27-super-long-article.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: post -title: Some articles are just so long they deserve a really long title to see if things will break well -categories: Miscellaneous ---- - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum neque eget nunc mattis eu sollicitudin enim tincidunt. Vestibulum lacus tortor, ultricies id dignissim ac, bibendum in velit. Proin convallis mi ac felis pharetra aliquam. Curabitur dignissim accumsan rutrum. In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. Proin eget nibh a massa vestibulum pretium. Suspendisse eu nisl a ante aliquet bibendum quis a nunc. Praesent varius interdum vehicula. Aenean risus libero, placerat at vestibulum eget, ultricies eu enim. Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est. - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum neque eget nunc mattis eu sollicitudin enim tincidunt. Vestibulum lacus tortor, ultricies id dignissim ac, bibendum in velit. Proin convallis mi ac felis pharetra aliquam. Curabitur dignissim accumsan rutrum. In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. Proin eget nibh a massa vestibulum pretium. Suspendisse eu nisl a ante aliquet bibendum quis a nunc. Praesent varius interdum vehicula. Aenean risus libero, placerat at vestibulum eget, ultricies eu enim. Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est. - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum neque eget nunc mattis eu sollicitudin enim tincidunt. Vestibulum lacus tortor, ultricies id dignissim ac, bibendum in velit. Proin convallis mi ac felis pharetra aliquam. Curabitur dignissim accumsan rutrum. In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. Proin eget nibh a massa vestibulum pretium. Suspendisse eu nisl a ante aliquet bibendum quis a nunc. Praesent varius interdum vehicula. Aenean risus libero, placerat at vestibulum eget, ultricies eu enim. Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est. diff --git a/_posts/2019-7-27-this-post-demonstrates-post-content-styles.md b/_posts/2019-7-27-this-post-demonstrates-post-content-styles.md deleted file mode 100644 index 99e68c5..0000000 --- a/_posts/2019-7-27-this-post-demonstrates-post-content-styles.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -layout: post -title: This post demonstrates post content styles -categories: Miscellaneous ---- - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum neque eget nunc mattis eu sollicitudin enim tincidunt. Vestibulum lacus tortor, ultricies id dignissim ac, bibendum in velit. Praesent varius interdum vehicula. Aenean risus libero, placerat at vestibulum eget, ultricies eu enim. Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est. - -## Some great heading (h2) - -Proin convallis mi ac felis pharetra aliquam. Curabitur dignissim accumsan rutrum. In arcu magna, aliquet vel pretium et, molestie et arcu. - -Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. Proin eget nibh a massa vestibulum pretium. Suspendisse eu nisl a ante aliquet bibendum quis a nunc. Praesent varius interdum vehicula. Aenean risus libero, placerat at vestibulum eget, ultricies eu enim. Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est. - -## Another great heading (h2) - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum neque eget nunc mattis eu sollicitudin enim tincidunt. Vestibulum lacus tortor, ultricies id dignissim ac, bibendum in velit. - -### Some great subheading (h3) - -Proin convallis mi ac felis pharetra aliquam. Curabitur dignissim accumsan rutrum. In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. - -Phasellus et hendrerit mauris. Proin eget nibh a massa vestibulum pretium. Suspendisse eu nisl a ante aliquet bibendum quis a nunc. - -### Some great subheading (h3) - -Praesent varius interdum vehicula. Aenean risus libero, placerat at vestibulum eget, ultricies eu enim. Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est. - -> This quote will change your life. It will reveal the secrets of the universe, and all the wonders of humanity. Don't misuse it. - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum neque eget nunc mattis eu sollicitudin enim tincidunt. - -### Some great subheading (h3) - -Vestibulum lacus tortor, ultricies id dignissim ac, bibendum in velit. Proin convallis mi ac felis pharetra aliquam. Curabitur dignissim accumsan rutrum. - -```html - - - - -

    Hello, World!

    - - -``` - - -In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. - -#### You might want a sub-subheading (h4) - -In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. - -In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. - -#### But it's probably overkill (h4) - -In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. - -### Oh hai, an unordered list!! - -In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. - -- First item, yo -- Second item, dawg -- Third item, what what?! -- Fourth item, fo sheezy my neezy - -### Oh hai, an ordered list!! - -In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. - -1. First item, yo -2. Second item, dawg -3. Third item, what what?! -4. Fourth item, fo sheezy my neezy - - - -## Headings are cool! (h2) - -Proin eget nibh a massa vestibulum pretium. Suspendisse eu nisl a ante aliquet bibendum quis a nunc. Praesent varius interdum vehicula. Aenean risus libero, placerat at vestibulum eget, ultricies eu enim. Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est. - -Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est. - -Proin eget nibh a massa vestibulum pretium. Suspendisse eu nisl a ante aliquet bibendum quis a nunc. - -### Tables - -|Title 1 | Title 2 | Title 3 | Title 4 | -|--------------------- | --------------------- | --------------------- | ---------------------| -|lorem | lorem ipsum | lorem ipsum dolor | lorem ipsum dolor sit| -|lorem ipsum dolor sit | lorem ipsum dolor sit | lorem ipsum dolor sit | lorem ipsum dolor sit| -|lorem ipsum dolor sit | lorem ipsum dolor sit | lorem ipsum dolor sit | lorem ipsum dolor sit| -|lorem ipsum dolor sit | lorem ipsum dolor sit | lorem ipsum dolor sit | lorem ipsum dolor sit| diff --git a/_posts/2019-7-28-super-short-article.md b/_posts/2019-7-28-super-short-article.md deleted file mode 100644 index ddb155b..0000000 --- a/_posts/2019-7-28-super-short-article.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: post -title: Some articles are just so short that we've to make the footer stick -categories: Miscellaneous ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \ No newline at end of file diff --git a/_posts/2019-8-12-code-snippets.md b/_posts/2019-8-12-code-snippets.md deleted file mode 100644 index 6605910..0000000 --- a/_posts/2019-8-12-code-snippets.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: post -title: Code snippets in a blog post -categories: [HTML,Code] ---- - -This post demonstrate the use of code snippets in the theme. The code snippets are powered by [Pygments](http://pygments.org/) and the code theme that is been used in Reverie is called [Draula](https://draculatheme.com/). - -This is a raw snippet: - -``` -hello world -123 -This is a text snippet -``` - -This is a PHP snippet: - -```php - -``` - -This is a JavaScript snippet: - -```js -const add = (a, b) => a + b -const minus = (a, b) => a - b - -console.log(add(100,200)) // 300 -console.log(minus(100,200)) // -100 -``` - -This is a Python snippet: - -```python -def say_hello(): - print("hello world!") - -say_hello() // "hello world!" -``` diff --git a/_posts/2021-06-07-Crappy-blog-again.markdown b/_posts/2021-06-07-Crappy-blog-again.markdown new file mode 100644 index 0000000..43a8a10 --- /dev/null +++ b/_posts/2021-06-07-Crappy-blog-again.markdown @@ -0,0 +1,19 @@ +--- +layout: post +title: "Crappy's Blog but this is Jekyll" +date: 2021-06-07 12:00:00 +0000 +last_modified_at: 2022-02-12 12:00:00 +0000 +visiblity: public +categories: Blog +--- +Hello, This is Crappy's Blog as usual, but this time with Jekyll. + +But this time with Jekyll, these ideas came from "subpath," which writefreely had a problem with these things. + +I know this will be a bit silent, but I'll keep this blog updated as much as possible. + +Not Promises.LOL + +##### And as usual, the testing image below vv + +![Test wowowowowowo](/assets/blog/mouse_bottr.png) diff --git a/_posts/2021-12-25-Moved-from-cloudflare.markdown b/_posts/2021-12-25-Moved-from-cloudflare.markdown new file mode 100644 index 0000000..ac67a5f --- /dev/null +++ b/_posts/2021-12-25-Moved-from-cloudflare.markdown @@ -0,0 +1,25 @@ +--- +layout: post +title: "Crappy's Blog but moved from Cloudflare" +date: 2021-12-25 12:00:00 +0000 +last_modified_at: 2022-02-12 12:00:00 +0000 +visiblity: public +categories: Blog +--- +Hello, this is Crappy’s Blog as usual. I wrote this blog to say that I have moved from Cloudflare to another DNS provider now. + +### Why? + +Mainly, useless for my position and part of my **de-cloudflare** project + +### New Provider + +1984.is FreeDNS, + +My only criteria is support for DNSSEC. + +Unfortunately, my registrar doesn't support it yet and I've had problems adding multiple MX Records to the same domain in desec so I moved to 1984 FreeDNS. This decision might be forever or until i find another great provider. + +### Moving of Landing Page Builder + +Actually, I moved from Cloudflare Pages to Surge. But, they don't yet support IPV6 and their certificate provision seems a bit confusing, so I moved to Netlify instead. \ No newline at end of file diff --git a/_posts/2022-03-30-Back-to-Self-Hosting.markdown b/_posts/2022-03-30-Back-to-Self-Hosting.markdown new file mode 100644 index 0000000..19cbf78 --- /dev/null +++ b/_posts/2022-03-30-Back-to-Self-Hosting.markdown @@ -0,0 +1,15 @@ +--- +layout: post +title: "Back to Self Hosting" +date: 2022-03-30 12:00:00 +0000 +visiblity: public +categories: Blog +--- +Hello, I wrote this blog just to check if my script is working. Let's short this thing. I'm back to self-hosting now! + +
    since VM collapsed on August, 2021, I moved a lot of service to Free Hosting like Netlify, GitHub Pages and now I'm back to this thing.
    + +This time, I think things will be more stable from now on and possibly not face the same fate as the old Blog and Gitea Server. + +





    +I Hope \ No newline at end of file diff --git a/_posts/2022-09-19-v4-crappy.markdown b/_posts/2022-09-19-v4-crappy.markdown new file mode 100644 index 0000000..7d8132d --- /dev/null +++ b/_posts/2022-09-19-v4-crappy.markdown @@ -0,0 +1,25 @@ +--- +layout: post +title: "Crappy's v4(or 3?) a new Project in a while" +date: 2022-09-19 12:00:00 +0000 +visiblity: public +categories: Blog +--- + + +From the first Crappy Blog with WriteFreely, Ghost and ends here with Simple Jekyll. +And I'm kinda Proud to say that this refined Jekyll Page will be the v4 Version of Jekyll. + +### Why v4 still being Jekyll? +Jekyll consumes low resources, compared to WriteFreely Drupal and Ghost. +And the important reasons Jekyll is kinda challenge to setup for a new comer like me. + +### Point of marking refined Jekyll Page as v4 +Point of refining Jekyll Page because I want to merge most of my Public Access things (Homepage, Blog, Gitea) to the same subdomain (1w1.one) and using subpath to all these things. So I rewrite the Homepage and try to merge them with Blog. + +### why refine? +speak directly, Crappy's Blog Jekyll code is fucked up, since Jun 2021 and being like that until now! + +### Why need Blog when you write a useless Blog once a Year? +it's a trend. + diff --git a/_posts/2023-04-16-big-migration-2023.md b/_posts/2023-04-16-big-migration-2023.md new file mode 100644 index 0000000..c6a2486 --- /dev/null +++ b/_posts/2023-04-16-big-migration-2023.md @@ -0,0 +1,9 @@ +--- +layout: post +title: "farewall .one, I'm not gonna pay 15.99" +date: 2023-04-16 12:00:00 +0000 +visiblity: hidden +categories: Blog +--- + +I don't want to say weeby word here. But sayonara 1w1.one. \ No newline at end of file diff --git a/_sass/_svg-icons.scss b/_sass/_svg-icons.scss index 92a3b20..318b88d 100644 --- a/_sass/_svg-icons.scss +++ b/_sass/_svg-icons.scss @@ -18,4 +18,5 @@ &.googleplus { background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjQwcHgiIGhlaWdodD0iNDBweCIgdmlld0JveD0iMCAwIDYwIDYwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zOnNrZXRjaD0iaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zIj4KICAgIDx0aXRsZT5Hb29nbGUgKzwvdGl0bGU+CiAgICA8ZGVzY3JpcHRpb24+Q3JlYXRlZCB3aXRoIFNrZXRjaCAoaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoKTwvZGVzY3JpcHRpb24+CiAgICA8ZGVmcz48L2RlZnM+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBza2V0Y2g6dHlwZT0iTVNQYWdlIj4KICAgICAgICA8ZyBpZD0iR29vZ2xlLSsiIHNrZXRjaDp0eXBlPSJNU0FydGJvYXJkR3JvdXAiPgogICAgICAgICAgICA8ZyBza2V0Y2g6dHlwZT0iTVNMYXllckdyb3VwIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0wLjExMjI5MDM0NCwyOS41MDgxOTY3IEMwLjExMjI5MDM0NCwxMy4yMTEyNjg5IDEzLjM0MjY1MDYsMCAyOS42NjMxMjksMCBDNDUuOTgzNjA3MywwIDU5LjIxMzk2NzYsMTMuMjExMjY4OSA1OS4yMTM5Njc2LDI5LjUwODE5NjcgQzU5LjIxMzk2NzYsNDUuODA1MTI0NiA0NS45ODM2MDczLDU5LjAxNjM5MzQgMjkuNjYzMTI5LDU5LjAxNjM5MzQgQzEzLjM0MjY1MDYsNTkuMDE2MzkzNCAwLjExMjI5MDM0NCw0NS44MDUxMjQ2IDAuMTEyMjkwMzQ0LDI5LjUwODE5NjcgWiBNMC4xMTIyOTAzNDQsMjkuNTA4MTk2NyIgZmlsbD0iI0QzNDgzNiIgc2tldGNoOnR5cGU9Ik1TU2hhcGVHcm91cCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU4LjI5NTc2NzIsMjIuNzE1NzA0OSBMNTEuMzA3NTkxNSwyMi43MTU3MDQ5IEw1MS4zMDc1OTE1LDMwLjQ2OTIwNzkgTDQ4LjAxMzY2MjMsMzAuNDY5MjA3OSBMNDguMDEzNjYyMywyMi43MTU3MDQ5IEw0MC4zMjc4Njg5LDIyLjcxNTcwNDkgTDQwLjMyNzg2ODksMTkuNDg4NjU5IEw0OC4wMTM2NjIzLDE5LjQ4ODY1OSBMNDguMDEzNjYyMywxMS44MDMyNzg3IEw1MS4zMDc1OTE1LDExLjgwMzI3ODcgTDUxLjMwNzU5MTUsMTkuNDg4NjU5IEw1Ny4xNzUyNDk2LDE5LjQ4ODY1OSBDNTcuNjA4NjI1NiwyMC41MzUzODMzIDU3Ljk4MzUwNDMsMjEuNjEyNDcyNiA1OC4yOTU3NjcyLDIyLjcxNTcwNDkgWiBNNTguMjk1NzY3MiwyMi43MTU3MDQ5IiBpZD0iU2hhcGUiIGZpbGw9IiNGRkZGRkYiIHNrZXRjaDp0eXBlPSJNU1NoYXBlR3JvdXAiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjIzMDMzODgzLDQ4LjYwNTA4MTEgQzkuMDU2NjMyNTQsNDcuMjE3NTUzNiAxMC4zMzc4NjM5LDQ1Ljg1MzQgMTIuMjM1OTMwOCw0NC43MzIzODI4IEMxNi41MTg2MjMxLDQyLjExMjA5MjEgMjIuMjg2NjQyMSw0MS43NjYwMTU5IDI1LjQwNTgyODMsNDEuNTY4MjU4MSBDMjQuNDQwMzY1OSw0MC4zMzIyNzE5IDIzLjMyNjM3MDgsMzkuMDIyMTI2NSAyMy4zMjYzNzA4LDM2Ljg3MTUxMDUgQzIzLjMyNjM3MDgsMzUuNzA5NjgzNSAyMy42NzI5NDcxLDM1LjAxNzUzMTIgMjQuMDE5NTIzMywzNC4yMDE3ODAzIEMyMy4yNTIxMDQ1LDM0LjI3NTkzOTUgMjIuNTA5NDQxMSwzNC4zNTAwOTg2IDIxLjgxNjI4ODYsMzQuMzUwMDk4NiBDMTQuNTEzNDMxOSwzNC4zNTAwOTg2IDEwLjM3OTI3MjMsMjguOTExNzU5MyAxMC4zNzkyNzIzLDIzLjU0NzU3OTEgQzEwLjM3OTI3MjMsMjAuMzgzNDU0NCAxMS44Mzk4NDM3LDE2Ljg2ODMwOTYgMTQuNzg1NzQxOCwxNC4zMjQ2NSBDMTguNzIxODU3OCwxMS4wOTM3ODIgMjMuNDAwNjM3MiwxMC41NDI1MzIxIDI3LjExMzk1NDIsMTAuNTQyNTMyMSBMNDEuMjk4ODI1LDEwLjU0MjUzMjEgTDM2Ljg5MjM1NTUsMTMuMDE2OTc2NSBMMzIuNjM0NDE4NywxMy4wMTY5NzY1IEMzNC4yMTg3NjczLDE0LjMyNDY1IDM3LjUxMTI0MTcsMTcuMDc1OTU1MyAzNy41MTEyNDE3LDIyLjMxMTU5MjkgQzM3LjUxMTI0MTcsMjcuNDAzODU2MSAzNC42MTQ4NTQ0LDI5LjgwMTY2OTQgMzEuNzQzMjIyNiwzMi4wNzU4ODQgQzMwLjgyNzI3MTEsMzIuOTY1Nzk0MSAyOS44MTIyOTc4LDMzLjkyOTg2MzMgMjkuODEyMjk3OCwzNS40Mzc3NjY1IEMyOS44MTIyOTc4LDM2Ljk0NTY2OTcgMzAuODI3MjcxMSwzNy43ODYxNDAzIDMxLjU5NDY5LDM4LjQwNDEzMzQgTDM0LjA3MDIzNDYsNDAuMzMyMjcxOSBDMzcuMTE1MTU0NSw0Mi44NTM2ODM4IDM5Ljg2MzAwOTEsNDUuMjAyMDU3NiAzOS44NjMwMDkxLDQ5Ljk0ODI0NDcgQzM5Ljg2MzAwOTEsNTMuMDc4MTc5MiAzOC40MDAyNTI5LDU2LjIxOTY2MDMgMzUuNTUwMTgxMSw1OC42MzA1MzAyIEMzNC4wMTY3MDEyLDU4Ljg4MDE3NzUgMzIuNDQzNTc1Myw1OS4wMTE5NjcxIDMwLjg0MDQzMjQsNTkuMDE2MjgzOSBDMzMuNzM0NDYwMyw1Ny43NDg2MzExIDM1LjIzMzc0MDYsNTUuNDI5MjU1NiAzNS4yMzM3NDA2LDUyLjY0MjY5NDYgQzM1LjIzMzc0MDYsNDkuMTMyNDkzOCAzMi45ODA5OTUsNDcuMjc4NTE0NSAyNy43MzI4NDAzLDQzLjU0NTgzNjEgQzI3LjE4ODIyMDUsNDMuNDk2Mzk2NiAyNi44NDE2NDQyLDQzLjQ5NjM5NjYgMjYuMTQ4NDkxNyw0My40OTYzOTY2IEMyNS41Mjk2MDU2LDQzLjQ5NjM5NjYgMjEuODE2Mjg4Niw0My42MTk5OTUzIDE4LjkxOTkwMTQsNDQuNTg0MDY0NSBDMTcuNDA5ODE5MSw0NS4xMjc4OTg0IDEzLjAwMzM0OTcsNDYuNzg0MTIgMTMuMDAzMzQ5Nyw1MS42Nzg2MjU0IEMxMy4wMDMzNDk3LDUyLjIxMDUzODQgMTMuMDYwMDU2Myw1Mi43MjYyMzA4IDEzLjE3MDY5NTEsNTMuMjIyOTAwMSBDNS45MTIzMTMsNDcuODQ2Mjg5OCA5LjA1NjYzMjU5LDQ4LjYwNTA4MjQgOC4yMzAzMzg4Myw0OC42MDUwODExIFogTTMxLjQ0NjE1NzMsMjUuNDc1NzE3NiBDMzEuNDQ2MTU3MywyMC41MDcwNTMgMjguNTAwMjU5MiwxMi44MTE4MDI4IDIyLjc4MTc1MSwxMi44MTE4MDI4IEMyMC45OTkzNTg5LDEyLjgxMTgwMjggMTkuMDY4NDM0LDEzLjcwNjY1NjggMTcuOTU0NDM5LDE1LjA4MzU0NTUgQzE2Ljc5MDkzMywxNi41MjcxNzc0IDE2LjQ0NDM1NjcsMTguMzgxMTU2NyAxNi40NDQzNTY3LDIwLjE2MDk3NjkgQzE2LjQ0NDM1NjcsMjQuNzgzNTY1MyAxOS4xMTc5NDQ5LDMyLjQyMTk2MDEgMjUuMDU5MjUyMSwzMi40MjE5NjAxIEMyNi43NjczNzc5LDMyLjQyMTk2MDEgMjguNjI0MDM2NCwzMS41ODE0ODk1IDI5LjczODAzMTUsMzAuNDkzODIxNiBDMzEuMzIyMzgwMSwyOC45MTE3NTkzIDMxLjQ0NjE1NzMsMjYuNzExNzAzOCAzMS40NDYxNTczLDI1LjQ3NTcxNzYgWiBNMzEuNDQ2MTU3MywyNS40NzU3MTc2IiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgc2tldGNoOnR5cGU9Ik1TU2hhcGVHcm91cCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU5LjI3OTM3MzcsMjkuNjg1ODI1MiBDNTkuMjc5MzczNyw0NS45ODI3NTMxIDQ2LjA0OTAxMzQsNTkuMTk0MDIxOSAyOS43Mjg1MzUxLDU5LjE5NDAyMTkgQzIzLjY3NTY1NjMsNTkuMTk0MDIxOSAxOC4wNDc4MjA4LDU3LjM3NjgyMiAxMy4zNjI0NDAyLDU0LjI1OTA0NjkgTDQ3LjIyMjY2MTUsNS45MDE2MzkzNCBDNTQuNTM0NTU5NSwxMS4yNzMzNTAxIDU5LjI3OTM3MzcsMTkuOTI2MjgxNiA1OS4yNzkzNzM3LDI5LjY4NTgyNTIgWiBNNTkuMjc5MzczNywyOS42ODU4MjUyIiBpZD0icmVmbGVjIiBmaWxsLW9wYWNpdHk9IjAuMDgiIGZpbGw9IiMwMDAwMDAiIHNrZXRjaDp0eXBlPSJNU1NoYXBlR3JvdXAiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+); } &.playconsole { background-image: url(data:image/png;base64,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)} &.mastodon { background-size: cover; background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzUiIGhlaWdodD0iNzkiIHZpZXdCb3g9IjAgMCA3NSA3OSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTczLjgzOTMgMTcuNDg5OEM3Mi42OTczIDkuMDAxNjUgNjUuMjk5NCAyLjMxMjM1IDU2LjUyOTYgMS4wMTYxNEM1NS4wNSAwLjc5NzExNSA0OS40NDQxIDAgMzYuNDU4MiAwSDM2LjM2MTJDMjMuMzcxNyAwIDIwLjU4NSAwLjc5NzExNSAxOS4xMDU0IDEuMDE2MTRDMTAuNTc5OCAyLjI3NjQ0IDIuNzkzOTkgOC4yODcxMiAwLjkwNDk5NyAxNi44NzU4Qy0wLjAwMzU4NTI0IDIxLjEwNTYgLTAuMTAwNTQ5IDI1Ljc5NDkgMC4wNjgyMzk0IDMwLjA5NjVDMC4zMDg4NTIgMzYuMjY1MSAwLjM1NTUzOCA0Mi40MjMgMC45MTU3NyA0OC41NjY1QzEuMzAzMDcgNTIuNjQ3NCAxLjk3ODcyIDU2LjY5NTcgMi45Mzc2MyA2MC42ODEyQzQuNzMzMjUgNjguMDQyIDEyLjAwMTkgNzQuMTY3NiAxOS4xMjMzIDc2LjY2NjZDMjYuNzQ3OCA3OS4yNzI4IDM0Ljk0NzQgNzkuNzA1NSA0Mi44MDM5IDc3LjkxNjJDNDMuNjY4MiA3Ny43MTUxIDQ0LjUyMTcgNzcuNDgxNyA0NS4zNjQ1IDc3LjIxNkM0Ny4yNzUgNzYuNjA5MiA0OS41MTIzIDc1LjkzMDUgNTEuMTU3MSA3NC43Mzg1QzUxLjE3OTcgNzQuNzIxNyA1MS4xOTgyIDc0LjcwMDEgNTEuMjExMiA3NC42NzUzQzUxLjIyNDMgNzQuNjUwNCA1MS4yMzE2IDc0LjYyMjkgNTEuMjMyNSA3NC41OTQ4VjY4LjY0MTZDNTEuMjMyMSA2OC42MTU0IDUxLjIyNTkgNjguNTg5NiA1MS4yMTQyIDY4LjU2NjFDNTEuMjAyNSA2OC41NDI2IDUxLjE4NTggNjguNTIyIDUxLjE2NTEgNjguNTA1OEM1MS4xNDQ0IDY4LjQ4OTYgNTEuMTIwNCA2OC40NzgzIDUxLjA5NDggNjguNDcyNkM1MS4wNjkyIDY4LjQ2NjkgNTEuMDQyNiA2OC40NjcgNTEuMDE3MSA2OC40NzI5QzQ1Ljk4MzUgNjkuNjc1IDQwLjgyNTQgNzAuMjc3NyAzNS42NTAyIDcwLjI2ODJDMjYuNzQzOSA3MC4yNjgyIDI0LjM0ODYgNjYuMDQyIDIzLjY2MjYgNjQuMjgyNkMyMy4xMTEzIDYyLjc2MiAyMi43NjEyIDYxLjE3NTkgMjIuNjIxMiA1OS41NjQ2QzIyLjYxOTcgNTkuNTM3NSAyMi42MjQ3IDU5LjUxMDUgMjIuNjM1NyA1OS40ODU3QzIyLjY0NjYgNTkuNDYwOSAyMi42NjMzIDU5LjQzOTEgMjIuNjg0MyA1OS40MjJDMjIuNzA1MyA1OS40MDQ4IDIyLjczIDU5LjM5MjkgMjIuNzU2NSA1OS4zODcxQzIyLjc4MyA1OS4zODEzIDIyLjgxMDQgNTkuMzgxOCAyMi44MzY3IDU5LjM4ODZDMjcuNzg2NCA2MC41ODI2IDMyLjg2MDQgNjEuMTg1MyAzNy45NTIyIDYxLjE4MzlDMzkuMTc2OCA2MS4xODM5IDQwLjM5NzggNjEuMTgzOSA0MS42MjI0IDYxLjE1MTZDNDYuNzQzNSA2MS4wMDggNTIuMTQxMSA2MC43NDU5IDU3LjE3OTYgNTkuNzYyMUM1Ny4zMDUzIDU5LjczNjkgNTcuNDMxIDU5LjcxNTQgNTcuNTM4NyA1OS42ODMxQzY1LjQ4NjEgNTguMTU3IDczLjA0OTMgNTMuMzY3MiA3My44MTc4IDQxLjIzODFDNzMuODQ2NSA0MC43NjA2IDczLjkxODQgMzYuMjM2NCA3My45MTg0IDM1Ljc0MDlDNzMuOTIxOSAzNC4wNTY5IDc0LjQ2MDYgMjMuNzk0OSA3My44MzkzIDE3LjQ4OThaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfNTQ5XzM0KSIvPgo8cGF0aCBkPSJNNjEuMjQ4NCAyNy4wMjYzVjQ4LjExNEg1Mi44OTE2VjI3LjY0NzVDNTIuODkxNiAyMy4zMzg4IDUxLjA5NiAyMS4xNDEzIDQ3LjQ0MzcgMjEuMTQxM0M0My40Mjg3IDIxLjE0MTMgNDEuNDE3NyAyMy43NDA5IDQxLjQxNzcgMjguODc1NVY0MC4wNzgySDMzLjExMTFWMjguODc1NUMzMy4xMTExIDIzLjc0MDkgMzEuMDk2NSAyMS4xNDEzIDI3LjA4MTUgMjEuMTQxM0MyMy40NTA3IDIxLjE0MTMgMjEuNjM3MSAyMy4zMzg4IDIxLjYzNzEgMjcuNjQ3NVY0OC4xMTRIMTMuMjgzOVYyNy4wMjYzQzEzLjI4MzkgMjIuNzE3NiAxNC4zODQgMTkuMjk0NiAxNi41ODQzIDE2Ljc1NzJDMTguODUzOSAxNC4yMjU4IDIxLjgzMTEgMTIuOTI2IDI1LjUyNjQgMTIuOTI2QzI5LjgwMzYgMTIuOTI2IDMzLjAzNTcgMTQuNTcwNSAzNS4xOTA1IDE3Ljg1NTlMMzcuMjY5OCAyMS4zNDZMMzkuMzUyNyAxNy44NTU5QzQxLjUwNzQgMTQuNTcwNSA0NC43Mzk1IDEyLjkyNiA0OS4wMDk1IDEyLjkyNkM1Mi43MDEzIDEyLjkyNiA1NS42Nzg0IDE0LjIyNTggNTcuOTU1MyAxNi43NTcyQzYwLjE1MzEgMTkuMjkyMiA2MS4yNTA4IDIyLjcxNTIgNjEuMjQ4NCAyNy4wMjYzWiIgZmlsbD0id2hpdGUiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl81NDlfMzQiIHgxPSIzNy4wNjkyIiB5MT0iMCIgeDI9IjM3LjA2OTIiIHkyPSI3OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjNjM2NEZGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzU2M0FDQyIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo=")} + &.gitea { background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0ibWFpbl9vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDY0MCA2NDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDY0MCA2NDA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGlkPSJ0ZWFiYWciIHN0eWxlPSJmaWxsOiNGRkZGRkYiIGQ9Ik0zOTUuOSw0ODQuMmwtMTI2LjktNjFjLTEyLjUtNi0xNy45LTIxLjItMTEuOC0zMy44bDYxLTEyNi45YzYtMTIuNSwyMS4yLTE3LjksMzMuOC0xMS44ICAgYzE3LjIsOC4zLDI3LjEsMTMsMjcuMSwxM2wtMC4xLTEwOS4ybDE2LjctMC4xbDAuMSwxMTcuMWMwLDAsNTcuNCwyNC4yLDgzLjEsNDAuMWMzLjcsMi4zLDEwLjIsNi44LDEyLjksMTQuNCAgIGMyLjEsNi4xLDIsMTMuMS0xLDE5LjNsLTYxLDEyNi45QzQyMy42LDQ4NC45LDQwOC40LDQ5MC4zLDM5NS45LDQ4NC4yeiIvPg0KCTxnPg0KCQk8Zz4NCgkJCTxwYXRoIHN0eWxlPSJmaWxsOiM2MDk5MjYiIGQ9Ik02MjIuNywxNDkuOGMtNC4xLTQuMS05LjYtNC05LjYtNHMtMTE3LjIsNi42LTE3Ny45LDhjLTEzLjMsMC4zLTI2LjUsMC42LTM5LjYsMC43YzAsMzkuMSwwLDc4LjIsMCwxMTcuMiAgICAgYy01LjUtMi42LTExLjEtNS4zLTE2LjYtNy45YzAtMzYuNC0wLjEtMTA5LjItMC4xLTEwOS4yYy0yOSwwLjQtODkuMi0yLjItODkuMi0yLjJzLTE0MS40LTcuMS0xNTYuOC04LjUgICAgIGMtOS44LTAuNi0yMi41LTIuMS0zOSwxLjVjLTguNywxLjgtMzMuNSw3LjQtNTMuOCwyNi45Qy00LjksMjEyLjQsNi42LDI3Ni4yLDgsMjg1LjhjMS43LDExLjcsNi45LDQ0LjIsMzEuNyw3Mi41ICAgICBjNDUuOCw1Ni4xLDE0NC40LDU0LjgsMTQ0LjQsNTQuOHMxMi4xLDI4LjksMzAuNiw1NS41YzI1LDMzLjEsNTAuNyw1OC45LDc1LjcsNjJjNjMsMCwxODguOS0wLjEsMTg4LjktMC4xczEyLDAuMSwyOC4zLTEwLjMgICAgIGMxNC04LjUsMjYuNS0yMy40LDI2LjUtMjMuNHMxMi45LTEzLjgsMzAuOS00NS4zYzUuNS05LjcsMTAuMS0xOS4xLDE0LjEtMjhjMCwwLDU1LjItMTE3LjEsNTUuMi0yMzEuMSAgICAgQzYzMy4yLDE1Ny45LDYyNC43LDE1MS44LDYyMi43LDE0OS44eiBNMTI1LjYsMzUzLjljLTI1LjktOC41LTM2LjktMTguNy0zNi45LTE4LjdTNjkuNiwzMjEuOCw2MCwyOTUuNCAgICAgYy0xNi41LTQ0LjItMS40LTcxLjItMS40LTcxLjJzOC40LTIyLjUsMzguNS0zMGMxMy44LTMuNywzMS0zLjEsMzEtMy4xczcuMSw1OS40LDE1LjcsOTQuMmM3LjIsMjkuMiwyNC44LDc3LjcsMjQuOCw3Ny43ICAgICBTMTQyLjUsMzU5LjksMTI1LjYsMzUzLjl6IE00MjUuOSw0NjEuNWMwLDAtNi4xLDE0LjUtMTkuNiwxNS40Yy01LjgsMC40LTEwLjMtMS4yLTEwLjMtMS4ycy0wLjMtMC4xLTUuMy0yLjFsLTExMi45LTU1ICAgICBjMCwwLTEwLjktNS43LTEyLjgtMTUuNmMtMi4yLTguMSwyLjctMTguMSwyLjctMTguMUwzMjIsMjczYzAsMCw0LjgtOS43LDEyLjItMTNjMC42LTAuMywyLjMtMSw0LjUtMS41YzguMS0yLjEsMTgsMi44LDE4LDIuOCAgICAgbDExMC43LDUzLjdjMCwwLDEyLjYsNS43LDE1LjMsMTYuMmMxLjksNy40LTAuNSwxNC0xLjgsMTcuMkM0NzQuNiwzNjMuOCw0MjUuOSw0NjEuNSw0MjUuOSw0NjEuNXoiLz4NCgkJCTxwYXRoIHN0eWxlPSJmaWxsOiM2MDk5MjYiIGQ9Ik0zMjYuOCwzODAuMWMtOC4yLDAuMS0xNS40LDUuOC0xNy4zLDEzLjhjLTEuOSw4LDIsMTYuMyw5LjEsMjBjNy43LDQsMTcuNSwxLjgsMjIuNy01LjQgICAgIGM1LjEtNy4xLDQuMy0xNi45LTEuOC0yMy4xbDI0LTQ5LjFjMS41LDAuMSwzLjcsMC4yLDYuMi0wLjVjNC4xLTAuOSw3LjEtMy42LDcuMS0zLjZjNC4yLDEuOCw4LjYsMy44LDEzLjIsNi4xICAgICBjNC44LDIuNCw5LjMsNC45LDEzLjQsNy4zYzAuOSwwLjUsMS44LDEuMSwyLjgsMS45YzEuNiwxLjMsMy40LDMuMSw0LjcsNS41YzEuOSw1LjUtMS45LDE0LjktMS45LDE0LjkgICAgIGMtMi4zLDcuNi0xOC40LDQwLjYtMTguNCw0MC42Yy04LjEtMC4yLTE1LjMsNS0xNy43LDEyLjVjLTIuNiw4LjEsMS4xLDE3LjMsOC45LDIxLjNjNy44LDQsMTcuNCwxLjcsMjIuNS01LjMgICAgIGM1LTYuOCw0LjYtMTYuMy0xLjEtMjIuNmMxLjktMy43LDMuNy03LjQsNS42LTExLjNjNS0xMC40LDEzLjUtMzAuNCwxMy41LTMwLjRjMC45LTEuNyw1LjctMTAuMywyLjctMjEuMyAgICAgYy0yLjUtMTEuNC0xMi42LTE2LjctMTIuNi0xNi43Yy0xMi4yLTcuOS0yOS4yLTE1LjItMjkuMi0xNS4yczAtNC4xLTEuMS03LjFjLTEuMS0zLjEtMi44LTUuMS0zLjktNi4zYzQuNy05LjcsOS40LTE5LjMsMTQuMS0yOSAgICAgYy00LjEtMi04LjEtNC0xMi4yLTYuMWMtNC44LDkuOC05LjcsMTkuNy0xNC41LDI5LjVjLTYuNy0wLjEtMTIuOSwzLjUtMTYuMSw5LjRjLTMuNCw2LjMtMi43LDE0LjEsMS45LDE5LjggICAgIEMzNDMuMiwzNDYuNSwzMzUsMzYzLjMsMzI2LjgsMzgwLjF6Ii8+DQoJCTwvZz4NCgk8L2c+DQo8L2c+DQo8L3N2Zz4=); } } diff --git a/assets/style.scss b/assets/css/style.scss similarity index 99% rename from assets/style.scss rename to assets/css/style.scss index f54b5b4..bf15d87 100644 --- a/assets/style.scss +++ b/assets/css/style.scss @@ -13,7 +13,7 @@ /* BASE RULES */ /**************/ -@import url('https://fonts.googleapis.com/css?family=Roboto'); +//@import url('https://fonts.bunny.net/css?family=roboto'); html { font-size: 100%; diff --git a/fonts/EBGaramond-Regular.ttf b/assets/fonts/EBGaramond-Regular.ttf similarity index 100% rename from fonts/EBGaramond-Regular.ttf rename to assets/fonts/EBGaramond-Regular.ttf diff --git a/fonts/aramisi.ttf b/assets/fonts/aramisi.ttf similarity index 100% rename from fonts/aramisi.ttf rename to assets/fonts/aramisi.ttf diff --git a/assets/images/404.png b/assets/images/404.png new file mode 100644 index 0000000000000000000000000000000000000000..619c053822e93d20477ba4fe524a42ae3c4fa589 GIT binary patch literal 110233 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

    5I>UY()zX;lj{Ow|#4?yJS}qtJ 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%0DQ@bNL%OMYe9flzh4%eKj3h$a+!D zNjTh4I4TBh#gBQGr;+uNiM^(=dQ+=MOX`0s7LHXkn(mOm2SNeCNedau-QhYlJdB*s zJ(FSI#YB=h`ZDSHj*2;)wMzTW)70=rUXZ4`~2u#!Kk9LDqcE70yue= z|3@{9?Rzy$);RE7GNbYpaUxpQr0W!}_o`J6b3+?J4T_Fhe;Xx?;dt4$Tc#$qTsTfB zc`1n<(i*Su!+H|1{+03od(EBp%Wqs}n6z^waEvWngu2(x3QIQhV@Kjkll?tVcc6U= z;^j$#JpIX}{V56$@TIMM2bONTH&rrc=WzcdCE%CgKYZ_#!l8XfUDFV8@=AH%L_up? zYyEQ2-d8BdM&BB=PlnkDQx?w_el=X?&F-^Pe9sM&LP&97VksdNE`p)3EAT|Cuwl;^ z+3jwu-wYlNAoy(@a~#Je?OiKGs;j&F8fBD?!%G#E$4T<2uN#(w?I{OKu-!94tB9V0 z8&`AjL(Qx5q|160e-cjPZPG~!8OudA5XXfmz81eTEU2yyu>aRB1rvD0YrEug4=t}0 zqawyJA;)P7^X@>oY0~xd{S)``ks~`Bt|DgNO&AK!l@#y7A;A0>CME0d?=Rk1j@kd# z_50{38)5G)p)K9l>}*}cwXdje?$vnBnaQJ< zL#2#mKbLn@opfe2{u7)}r)qC$$GJO^g#hS^2n$GaQL{+6N*KB2OzIdNQ!ZG(I%X|! zP0iM8HhZgPEJ@XVS@PAm(W|~~ZZz&$tvnkkgNA1_$h}*JEsCS&S{QDA$RaR8qoDAj z5RMvp^qUiuP7e}e6MXj7vo&?66)*3j8Lk}37J~)F1Iwvfpgpn0$fofnzex*>J^_ux zOD@})0J)4w=}1=i^jOo9F?hIb4st1l@lFA7Y%xVwH7l61fVtwomWi%|1)c~|)>Fi( zcse829#t4QiCmOTEuu#8Hrkk{s}3 Jos4<-{{XCT81VoA literal 0 HcmV?d00001 diff --git a/images/categories.png b/assets/images/categories.png similarity index 100% rename from images/categories.png rename to assets/images/categories.png diff --git a/images/favicon-32x32.png b/assets/images/favicon-32x32.png similarity index 100% rename from images/favicon-32x32.png rename to assets/images/favicon-32x32.png diff --git a/images/galaxy.jpg b/assets/images/galaxy.jpg similarity index 100% rename from images/galaxy.jpg rename to assets/images/galaxy.jpg diff --git a/images/mobile-demo.png b/assets/images/mobile-demo.png similarity index 100% rename from images/mobile-demo.png rename to assets/images/mobile-demo.png diff --git a/images/reverie-demo.png b/assets/images/reverie-demo.png similarity index 100% rename from images/reverie-demo.png rename to assets/images/reverie-demo.png diff --git a/images/reverie-text.png b/assets/images/reverie-text.png similarity index 100% rename from images/reverie-text.png rename to assets/images/reverie-text.png diff --git a/images/reverie.png b/assets/images/reverie.png similarity index 100% rename from images/reverie.png rename to assets/images/reverie.png diff --git a/images/search.png b/assets/images/search.png similarity index 100% rename from images/search.png rename to assets/images/search.png diff --git a/assets/js/darkreader.js b/assets/js/darkreader.js new file mode 100644 index 0000000..af51d57 --- /dev/null +++ b/assets/js/darkreader.js @@ -0,0 +1,7575 @@ +/** + * Dark Reader v4.9.58 + * https://darkreader.org/ + */ + +(function (global, factory) { + typeof exports === "object" && typeof module !== "undefined" + ? factory(exports) + : typeof define === "function" && define.amd + ? define(["exports"], factory) + : ((global = + typeof globalThis !== "undefined" ? globalThis : global || self), + factory((global.DarkReader = {}))); +})(this, function (exports) { + "use strict"; + + /****************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + + var __assign = function () { + __assign = + Object.assign || + function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done + ? resolve(result.value) + : adopt(result.value).then(fulfilled, rejected); + } + step( + (generator = generator.apply(thisArg, _arguments || [])).next() + ); + }); + } + + function __generator(thisArg, body) { + var _ = { + label: 0, + sent: function () { + if (t[0] & 1) throw t[1]; + return t[1]; + }, + trys: [], + ops: [] + }, + f, + y, + t, + g; + return ( + (g = {next: verb(0), throw: verb(1), return: verb(2)}), + typeof Symbol === "function" && + (g[Symbol.iterator] = function () { + return this; + }), + g + ); + function verb(n) { + return function (v) { + return step([n, v]); + }; + } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) + try { + if ( + ((f = 1), + y && + (t = + op[0] & 2 + ? y["return"] + : op[0] + ? y["throw"] || + ((t = y["return"]) && t.call(y), 0) + : y.next) && + !(t = t.call(y, op[1])).done) + ) + return t; + if (((y = 0), t)) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return {value: op[1], done: false}; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if ( + !((t = _.trys), + (t = t.length > 0 && t[t.length - 1])) && + (op[0] === 6 || op[0] === 2) + ) { + _ = 0; + continue; + } + if ( + op[0] === 3 && + (!t || (op[1] > t[0] && op[1] < t[3])) + ) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } catch (e) { + op = [6, e]; + y = 0; + } finally { + f = t = 0; + } + if (op[0] & 5) throw op[1]; + return {value: op[0] ? op[1] : void 0, done: true}; + } + } + + function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, + m = s && o[s], + i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") + return { + next: function () { + if (o && i >= o.length) o = void 0; + return {value: o && o[i++], done: !o}; + } + }; + throw new TypeError( + s ? "Object is not iterable." : "Symbol.iterator is not defined." + ); + } + + function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), + r, + ar = [], + e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) + ar.push(r.value); + } catch (error) { + e = {error: error}; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + } + + function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) + for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + } + + var MessageType; + (function (MessageType) { + MessageType["UI_GET_DATA"] = "ui-get-data"; + MessageType["UI_SUBSCRIBE_TO_CHANGES"] = "ui-subscribe-to-changes"; + MessageType["UI_UNSUBSCRIBE_FROM_CHANGES"] = + "ui-unsubscribe-from-changes"; + MessageType["UI_CHANGE_SETTINGS"] = "ui-change-settings"; + MessageType["UI_SET_THEME"] = "ui-set-theme"; + MessageType["UI_SET_SHORTCUT"] = "ui-set-shortcut"; + MessageType["UI_TOGGLE_ACTIVE_TAB"] = "ui-toggle-active-tab"; + MessageType["UI_MARK_NEWS_AS_READ"] = "ui-mark-news-as-read"; + MessageType["UI_MARK_NEWS_AS_DISPLAYED"] = "ui-mark-news-as-displayed"; + MessageType["UI_LOAD_CONFIG"] = "ui-load-config"; + MessageType["UI_APPLY_DEV_DYNAMIC_THEME_FIXES"] = + "ui-apply-dev-dynamic-theme-fixes"; + MessageType["UI_RESET_DEV_DYNAMIC_THEME_FIXES"] = + "ui-reset-dev-dynamic-theme-fixes"; + MessageType["UI_APPLY_DEV_INVERSION_FIXES"] = + "ui-apply-dev-inversion-fixes"; + MessageType["UI_RESET_DEV_INVERSION_FIXES"] = + "ui-reset-dev-inversion-fixes"; + MessageType["UI_APPLY_DEV_STATIC_THEMES"] = + "ui-apply-dev-static-themes"; + MessageType["UI_RESET_DEV_STATIC_THEMES"] = + "ui-reset-dev-static-themes"; + MessageType["UI_SAVE_FILE"] = "ui-save-file"; + MessageType["UI_REQUEST_EXPORT_CSS"] = "ui-request-export-css"; + MessageType["UI_COLOR_SCHEME_CHANGE"] = "ui-color-scheme-change"; + MessageType["BG_CHANGES"] = "bg-changes"; + MessageType["BG_ADD_CSS_FILTER"] = "bg-add-css-filter"; + MessageType["BG_ADD_STATIC_THEME"] = "bg-add-static-theme"; + MessageType["BG_ADD_SVG_FILTER"] = "bg-add-svg-filter"; + MessageType["BG_ADD_DYNAMIC_THEME"] = "bg-add-dynamic-theme"; + MessageType["BG_EXPORT_CSS"] = "bg-export-css"; + MessageType["BG_UNSUPPORTED_SENDER"] = "bg-unsupported-sender"; + MessageType["BG_CLEAN_UP"] = "bg-clean-up"; + MessageType["BG_RELOAD"] = "bg-reload"; + MessageType["BG_FETCH_RESPONSE"] = "bg-fetch-response"; + MessageType["BG_UI_UPDATE"] = "bg-ui-update"; + MessageType["BG_CSS_UPDATE"] = "bg-css-update"; + MessageType["CS_COLOR_SCHEME_CHANGE"] = "cs-color-scheme-change"; + MessageType["CS_FRAME_CONNECT"] = "cs-frame-connect"; + MessageType["CS_FRAME_FORGET"] = "cs-frame-forget"; + MessageType["CS_FRAME_FREEZE"] = "cs-frame-freeze"; + MessageType["CS_FRAME_RESUME"] = "cs-frame-resume"; + MessageType["CS_EXPORT_CSS_RESPONSE"] = "cs-export-css-response"; + MessageType["CS_FETCH"] = "cs-fetch"; + MessageType["CS_DARK_THEME_DETECTED"] = "cs-dark-theme-detected"; + MessageType["CS_DARK_THEME_NOT_DETECTED"] = + "cs-dark-theme-not-detected"; + MessageType["CS_LOG"] = "cs-log"; + })(MessageType || (MessageType = {})); + + var isNavigatorDefined = typeof navigator !== "undefined"; + var userAgent = isNavigatorDefined + ? navigator.userAgentData && + Array.isArray(navigator.userAgentData.brands) + ? navigator.userAgentData.brands + .map(function (brand) { + return "" + .concat(brand.brand.toLowerCase(), " ") + .concat(brand.version); + }) + .join(" ") + : navigator.userAgent.toLowerCase() + : "some useragent"; + var platform = isNavigatorDefined + ? navigator.userAgentData && + typeof navigator.userAgentData.platform === "string" + ? navigator.userAgentData.platform.toLowerCase() + : navigator.platform.toLowerCase() + : "some platform"; + var isChromium = + userAgent.includes("chrome") || userAgent.includes("chromium"); + var isThunderbird = userAgent.includes("thunderbird"); + var isFirefox = + userAgent.includes("firefox") || + userAgent.includes("librewolf") || + isThunderbird; + userAgent.includes("vivaldi"); + userAgent.includes("yabrowser"); + userAgent.includes("opr") || userAgent.includes("opera"); + userAgent.includes("edg"); + var isSafari = userAgent.includes("safari") && !isChromium; + var isWindows = platform.startsWith("win"); + var isMacOS = platform.startsWith("mac"); + isNavigatorDefined && navigator.userAgentData + ? navigator.userAgentData.mobile + : userAgent.includes("mobile"); + var isShadowDomSupported = typeof ShadowRoot === "function"; + var isMatchMediaChangeEventListenerSupported = + typeof MediaQueryList === "function" && + typeof MediaQueryList.prototype.addEventListener === "function"; + (function () { + var m = userAgent.match(/chrom(?:e|ium)(?:\/| )([^ ]+)/); + if (m && m[1]) { + return m[1]; + } + return ""; + })(); + (function () { + var m = userAgent.match(/(?:firefox|librewolf)(?:\/| )([^ ]+)/); + if (m && m[1]) { + return m[1]; + } + return ""; + })(); + var isDefinedSelectorSupported = (function () { + try { + document.querySelector(":defined"); + return true; + } catch (err) { + return false; + } + })(); + var isCSSColorSchemePropSupported = (function () { + if (typeof document === "undefined") { + return false; + } + var el = document.createElement("div"); + el.setAttribute("style", "color-scheme: dark"); + return el.style && el.style.colorScheme === "dark"; + })(); + + function getOKResponse(url, mimeType, origin) { + return __awaiter(this, void 0, void 0, function () { + var response; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + return [ + 4, + fetch(url, { + cache: "force-cache", + credentials: "omit", + referrer: origin + }) + ]; + case 1: + response = _a.sent(); + if ( + isFirefox && + mimeType === "text/css" && + url.startsWith("moz-extension://") && + url.endsWith(".css") + ) { + return [2, response]; + } + if ( + mimeType && + !response.headers + .get("Content-Type") + .startsWith(mimeType) + ) { + throw new Error( + "Mime type mismatch when loading ".concat(url) + ); + } + if (!response.ok) { + throw new Error( + "Unable to load " + .concat(url, " ") + .concat(response.status, " ") + .concat(response.statusText) + ); + } + return [2, response]; + } + }); + }); + } + function loadAsDataURL(url, mimeType) { + return __awaiter(this, void 0, void 0, function () { + var response; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + return [4, getOKResponse(url, mimeType)]; + case 1: + response = _a.sent(); + return [4, readResponseAsDataURL(response)]; + case 2: + return [2, _a.sent()]; + } + }); + }); + } + function readResponseAsDataURL(response) { + return __awaiter(this, void 0, void 0, function () { + var blob, dataURL; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + return [4, response.blob()]; + case 1: + blob = _a.sent(); + return [ + 4, + new Promise(function (resolve) { + var reader = new FileReader(); + reader.onloadend = function () { + return resolve(reader.result); + }; + reader.readAsDataURL(blob); + }) + ]; + case 2: + dataURL = _a.sent(); + return [2, dataURL]; + } + }); + }); + } + + var throwCORSError = function (url) { + return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + return [ + 2, + Promise.reject( + new Error( + [ + "Embedded Dark Reader cannot access a cross-origin resource", + url, + "Overview your URLs and CORS policies or use", + "`DarkReader.setFetchMethod(fetch: (url) => Promise))`.", + "See if using `DarkReader.setFetchMethod(window.fetch)`", + "before `DarkReader.enable()` works." + ].join(" ") + ) + ) + ]; + }); + }); + }; + var fetcher = throwCORSError; + function setFetchMethod$1(fetch) { + if (fetch) { + fetcher = fetch; + } else { + fetcher = throwCORSError; + } + } + function callFetchMethod(url) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + return [4, fetcher(url)]; + case 1: + return [2, _a.sent()]; + } + }); + }); + } + + if (!window.chrome) { + window.chrome = {}; + } + if (!chrome.runtime) { + chrome.runtime = {}; + } + var messageListeners = new Set(); + function sendMessage() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return __awaiter(this, void 0, void 0, function () { + var id_1, _a, url, responseType, response, text_1, error_1; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + if (!(args[0] && args[0].type === MessageType.CS_FETCH)) + return [3, 8]; + id_1 = args[0].id; + _b.label = 1; + case 1: + _b.trys.push([1, 7, , 8]); + (_a = args[0].data), + (url = _a.url), + (responseType = _a.responseType); + return [4, callFetchMethod(url)]; + case 2: + response = _b.sent(); + if (!(responseType === "data-url")) return [3, 4]; + return [4, readResponseAsDataURL(response)]; + case 3: + text_1 = _b.sent(); + return [3, 6]; + case 4: + return [4, response.text()]; + case 5: + text_1 = _b.sent(); + _b.label = 6; + case 6: + messageListeners.forEach(function (cb) { + return cb({ + type: MessageType.BG_FETCH_RESPONSE, + data: text_1, + error: null, + id: id_1 + }); + }); + return [3, 8]; + case 7: + error_1 = _b.sent(); + console.error(error_1); + messageListeners.forEach(function (cb) { + return cb({ + type: MessageType.BG_FETCH_RESPONSE, + data: null, + error: error_1, + id: id_1 + }); + }); + return [3, 8]; + case 8: + return [2]; + } + }); + }); + } + function addMessageListener(callback) { + messageListeners.add(callback); + } + if (typeof chrome.runtime.sendMessage === "function") { + var nativeSendMessage_1 = chrome.runtime.sendMessage; + chrome.runtime.sendMessage = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + sendMessage.apply(void 0, __spreadArray([], __read(args), false)); + nativeSendMessage_1.apply(chrome.runtime, args); + }; + } else { + chrome.runtime.sendMessage = sendMessage; + } + if (!chrome.runtime.onMessage) { + chrome.runtime.onMessage = {}; + } + if (typeof chrome.runtime.onMessage.addListener === "function") { + var nativeAddListener_1 = chrome.runtime.onMessage.addListener; + chrome.runtime.onMessage.addListener = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + addMessageListener(args[0]); + nativeAddListener_1.apply(chrome.runtime.onMessage, args); + }; + } else { + chrome.runtime.onMessage.addListener = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return addMessageListener(args[0]); + }; + } + + var ThemeEngine; + (function (ThemeEngine) { + ThemeEngine["cssFilter"] = "cssFilter"; + ThemeEngine["svgFilter"] = "svgFilter"; + ThemeEngine["staticTheme"] = "staticTheme"; + ThemeEngine["dynamicTheme"] = "dynamicTheme"; + })(ThemeEngine || (ThemeEngine = {})); + + var AutomationMode; + (function (AutomationMode) { + AutomationMode["NONE"] = ""; + AutomationMode["TIME"] = "time"; + AutomationMode["SYSTEM"] = "system"; + AutomationMode["LOCATION"] = "location"; + })(AutomationMode || (AutomationMode = {})); + + var DEFAULT_COLORS = { + darkScheme: { + background: "#181a1b", + text: "#e8e6e3" + }, + lightScheme: { + background: "#dcdad7", + text: "#181a1b" + } + }; + var DEFAULT_THEME = { + mode: 1, + brightness: 100, + contrast: 100, + grayscale: 0, + sepia: 0, + useFont: false, + fontFamily: isMacOS + ? "Helvetica Neue" + : isWindows + ? "Segoe UI" + : "Open Sans", + textStroke: 0, + engine: ThemeEngine.dynamicTheme, + stylesheet: "", + darkSchemeBackgroundColor: DEFAULT_COLORS.darkScheme.background, + darkSchemeTextColor: DEFAULT_COLORS.darkScheme.text, + lightSchemeBackgroundColor: DEFAULT_COLORS.lightScheme.background, + lightSchemeTextColor: DEFAULT_COLORS.lightScheme.text, + scrollbarColor: isMacOS ? "" : "auto", + selectionColor: "auto", + styleSystemControls: !isCSSColorSchemePropSupported, + lightColorScheme: "Default", + darkColorScheme: "Default", + immediateModify: false + }; + ({ + enabled: true, + fetchNews: true, + theme: DEFAULT_THEME, + presets: [], + customThemes: [], + siteList: [], + siteListEnabled: [], + applyToListedOnly: false, + changeBrowserTheme: false, + syncSettings: true, + syncSitesFixes: false, + automation: { + enabled: false, + mode: AutomationMode.NONE, + behavior: "OnOff" + }, + time: { + activation: "18:00", + deactivation: "9:00" + }, + location: { + latitude: null, + longitude: null + }, + previewNewDesign: false, + enableForPDF: true, + enableForProtectedPages: false, + enableContextMenus: false, + detectDarkTheme: false + }); + + function isArrayLike(items) { + return items.length != null; + } + function forEach(items, iterator) { + var e_1, _a; + if (isArrayLike(items)) { + for (var i = 0, len = items.length; i < len; i++) { + iterator(items[i]); + } + } else { + try { + for ( + var items_1 = __values(items), items_1_1 = items_1.next(); + !items_1_1.done; + items_1_1 = items_1.next() + ) { + var item = items_1_1.value; + iterator(item); + } + } catch (e_1_1) { + e_1 = {error: e_1_1}; + } finally { + try { + if (items_1_1 && !items_1_1.done && (_a = items_1.return)) + _a.call(items_1); + } finally { + if (e_1) throw e_1.error; + } + } + } + } + function push(array, addition) { + forEach(addition, function (a) { + return array.push(a); + }); + } + function toArray(items) { + var results = []; + for (var i = 0, len = items.length; i < len; i++) { + results.push(items[i]); + } + return results; + } + + function logInfo() {} + function logWarn() {} + + function throttle(callback) { + var pending = false; + var frameId = null; + var lastArgs; + var throttled = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + lastArgs = args; + if (frameId) { + pending = true; + } else { + callback.apply( + void 0, + __spreadArray([], __read(lastArgs), false) + ); + frameId = requestAnimationFrame(function () { + frameId = null; + if (pending) { + callback.apply( + void 0, + __spreadArray([], __read(lastArgs), false) + ); + pending = false; + } + }); + } + }; + var cancel = function () { + cancelAnimationFrame(frameId); + pending = false; + frameId = null; + }; + return Object.assign(throttled, {cancel: cancel}); + } + function createAsyncTasksQueue() { + var tasks = []; + var frameId = null; + function runTasks() { + var task; + while ((task = tasks.shift())) { + task(); + } + frameId = null; + } + function add(task) { + tasks.push(task); + if (!frameId) { + frameId = requestAnimationFrame(runTasks); + } + } + function cancel() { + tasks.splice(0); + cancelAnimationFrame(frameId); + frameId = null; + } + return {add: add, cancel: cancel}; + } + + function getDuration(time) { + var duration = 0; + if (time.seconds) { + duration += time.seconds * 1000; + } + if (time.minutes) { + duration += time.minutes * 60 * 1000; + } + if (time.hours) { + duration += time.hours * 60 * 60 * 1000; + } + if (time.days) { + duration += time.days * 24 * 60 * 60 * 1000; + } + return duration; + } + + function removeNode(node) { + node && node.parentNode && node.parentNode.removeChild(node); + } + function watchForNodePosition(node, mode, onRestore) { + if (onRestore === void 0) { + onRestore = Function.prototype; + } + var MAX_ATTEMPTS_COUNT = 10; + var RETRY_TIMEOUT = getDuration({seconds: 2}); + var ATTEMPTS_INTERVAL = getDuration({seconds: 10}); + var prevSibling = node.previousSibling; + var parent = node.parentNode; + if (!parent) { + throw new Error( + "Unable to watch for node position: parent element not found" + ); + } + if (mode === "prev-sibling" && !prevSibling) { + throw new Error( + "Unable to watch for node position: there is no previous sibling" + ); + } + var attempts = 0; + var start = null; + var timeoutId = null; + var restore = throttle(function () { + if (timeoutId) { + return; + } + attempts++; + var now = Date.now(); + if (start == null) { + start = now; + } else if (attempts >= MAX_ATTEMPTS_COUNT) { + if (now - start < ATTEMPTS_INTERVAL) { + timeoutId = setTimeout(function () { + start = null; + attempts = 0; + timeoutId = null; + restore(); + }, RETRY_TIMEOUT); + return; + } + start = now; + attempts = 1; + } + if (mode === "parent") { + if (prevSibling && prevSibling.parentNode !== parent) { + stop(); + return; + } + } + if (mode === "prev-sibling") { + if (prevSibling.parentNode == null) { + stop(); + return; + } + if (prevSibling.parentNode !== parent) { + updateParent(prevSibling.parentNode); + } + } + parent.insertBefore( + node, + prevSibling ? prevSibling.nextSibling : parent.firstChild + ); + observer.takeRecords(); + onRestore && onRestore(); + }); + var observer = new MutationObserver(function () { + if ( + (mode === "parent" && node.parentNode !== parent) || + (mode === "prev-sibling" && + node.previousSibling !== prevSibling) + ) { + restore(); + } + }); + var run = function () { + observer.observe(parent, {childList: true}); + }; + var stop = function () { + clearTimeout(timeoutId); + observer.disconnect(); + restore.cancel(); + }; + var skip = function () { + observer.takeRecords(); + }; + var updateParent = function (parentNode) { + parent = parentNode; + stop(); + run(); + }; + run(); + return {run: run, stop: stop, skip: skip}; + } + function iterateShadowHosts(root, iterator) { + if (root == null) { + return; + } + var walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, { + acceptNode: function (node) { + return node.shadowRoot == null + ? NodeFilter.FILTER_SKIP + : NodeFilter.FILTER_ACCEPT; + } + }); + for ( + var node = root.shadowRoot ? walker.currentNode : walker.nextNode(); + node != null; + node = walker.nextNode() + ) { + if (node.classList.contains("surfingkeys_hints_host")) { + continue; + } + iterator(node); + iterateShadowHosts(node.shadowRoot, iterator); + } + } + var isDOMReady = function () { + return ( + document.readyState === "complete" || + document.readyState === "interactive" + ); + }; + function setIsDOMReady(newFunc) { + isDOMReady = newFunc; + } + var readyStateListeners = new Set(); + function addDOMReadyListener(listener) { + isDOMReady() ? listener() : readyStateListeners.add(listener); + } + function removeDOMReadyListener(listener) { + readyStateListeners.delete(listener); + } + function isReadyStateComplete() { + return document.readyState === "complete"; + } + var readyStateCompleteListeners = new Set(); + function addReadyStateCompleteListener(listener) { + isReadyStateComplete() + ? listener() + : readyStateCompleteListeners.add(listener); + } + function cleanReadyStateCompleteListeners() { + readyStateCompleteListeners.clear(); + } + if (!isDOMReady()) { + var onReadyStateChange_1 = function () { + if (isDOMReady()) { + readyStateListeners.forEach(function (listener) { + return listener(); + }); + readyStateListeners.clear(); + if (isReadyStateComplete()) { + document.removeEventListener( + "readystatechange", + onReadyStateChange_1 + ); + readyStateCompleteListeners.forEach(function (listener) { + return listener(); + }); + readyStateCompleteListeners.clear(); + } + } + }; + document.addEventListener("readystatechange", onReadyStateChange_1); + } + var HUGE_MUTATIONS_COUNT = 1000; + function isHugeMutation(mutations) { + if (mutations.length > HUGE_MUTATIONS_COUNT) { + return true; + } + var addedNodesCount = 0; + for (var i = 0; i < mutations.length; i++) { + addedNodesCount += mutations[i].addedNodes.length; + if (addedNodesCount > HUGE_MUTATIONS_COUNT) { + return true; + } + } + return false; + } + function getElementsTreeOperations(mutations) { + var additions = new Set(); + var deletions = new Set(); + var moves = new Set(); + mutations.forEach(function (m) { + forEach(m.addedNodes, function (n) { + if (n instanceof Element && n.isConnected) { + additions.add(n); + } + }); + forEach(m.removedNodes, function (n) { + if (n instanceof Element) { + if (n.isConnected) { + moves.add(n); + additions.delete(n); + } else { + deletions.add(n); + } + } + }); + }); + var duplicateAdditions = []; + var duplicateDeletions = []; + additions.forEach(function (node) { + if (additions.has(node.parentElement)) { + duplicateAdditions.push(node); + } + }); + deletions.forEach(function (node) { + if (deletions.has(node.parentElement)) { + duplicateDeletions.push(node); + } + }); + duplicateAdditions.forEach(function (node) { + return additions.delete(node); + }); + duplicateDeletions.forEach(function (node) { + return deletions.delete(node); + }); + return {additions: additions, moves: moves, deletions: deletions}; + } + var optimizedTreeObservers = new Map(); + var optimizedTreeCallbacks = new WeakMap(); + function createOptimizedTreeObserver(root, callbacks) { + var observer; + var observerCallbacks; + var domReadyListener; + if (optimizedTreeObservers.has(root)) { + observer = optimizedTreeObservers.get(root); + observerCallbacks = optimizedTreeCallbacks.get(observer); + } else { + var hadHugeMutationsBefore_1 = false; + var subscribedForReadyState_1 = false; + observer = new MutationObserver(function (mutations) { + if (isHugeMutation(mutations)) { + if (!hadHugeMutationsBefore_1 || isDOMReady()) { + observerCallbacks.forEach(function (_a) { + var onHugeMutations = _a.onHugeMutations; + return onHugeMutations(root); + }); + } else if (!subscribedForReadyState_1) { + domReadyListener = function () { + return observerCallbacks.forEach(function (_a) { + var onHugeMutations = _a.onHugeMutations; + return onHugeMutations(root); + }); + }; + addDOMReadyListener(domReadyListener); + subscribedForReadyState_1 = true; + } + hadHugeMutationsBefore_1 = true; + } else { + var elementsOperations_1 = + getElementsTreeOperations(mutations); + observerCallbacks.forEach(function (_a) { + var onMinorMutations = _a.onMinorMutations; + return onMinorMutations(elementsOperations_1); + }); + } + }); + observer.observe(root, {childList: true, subtree: true}); + optimizedTreeObservers.set(root, observer); + observerCallbacks = new Set(); + optimizedTreeCallbacks.set(observer, observerCallbacks); + } + observerCallbacks.add(callbacks); + return { + disconnect: function () { + observerCallbacks.delete(callbacks); + if (domReadyListener) { + removeDOMReadyListener(domReadyListener); + } + if (observerCallbacks.size === 0) { + observer.disconnect(); + optimizedTreeCallbacks.delete(observer); + optimizedTreeObservers.delete(root); + } + } + }; + } + + var anchor; + var parsedURLCache = new Map(); + function fixBaseURL($url) { + if (!anchor) { + anchor = document.createElement("a"); + } + anchor.href = $url; + return anchor.href; + } + function parseURL($url, $base) { + if ($base === void 0) { + $base = null; + } + var key = "".concat($url).concat($base ? ";".concat($base) : ""); + if (parsedURLCache.has(key)) { + return parsedURLCache.get(key); + } + if ($base) { + var parsedURL_1 = new URL($url, fixBaseURL($base)); + parsedURLCache.set(key, parsedURL_1); + return parsedURL_1; + } + var parsedURL = new URL(fixBaseURL($url)); + parsedURLCache.set($url, parsedURL); + return parsedURL; + } + function getAbsoluteURL($base, $relative) { + if ($relative.match(/^data\\?\:/)) { + return $relative; + } + if (/^\/\//.test($relative)) { + return "".concat(location.protocol).concat($relative); + } + var b = parseURL($base); + var a = parseURL($relative, b.href); + return a.href; + } + function isRelativeHrefOnAbsolutePath(href) { + if (href.startsWith("data:")) { + return true; + } + var url = parseURL(href); + if (url.protocol !== location.protocol) { + return false; + } + if (url.hostname !== location.hostname) { + return false; + } + if (url.port !== location.port) { + return false; + } + return url.pathname === location.pathname; + } + + function iterateCSSRules(rules, iterate, onMediaRuleError) { + forEach(rules, function (rule) { + if (rule.selectorText) { + iterate(rule); + } else if (rule.href) { + try { + iterateCSSRules( + rule.styleSheet.cssRules, + iterate, + onMediaRuleError + ); + } catch (err) { + logInfo("Found a non-loaded link."); + onMediaRuleError && onMediaRuleError(); + } + } else if (rule.media) { + var media = Array.from(rule.media); + var isScreenOrAllOrQuery = media.some(function (m) { + return ( + m.startsWith("screen") || + m.startsWith("all") || + m.startsWith("(") + ); + }); + var isPrintOrSpeech = media.some(function (m) { + return m.startsWith("print") || m.startsWith("speech"); + }); + if (isScreenOrAllOrQuery || !isPrintOrSpeech) { + iterateCSSRules(rule.cssRules, iterate, onMediaRuleError); + } + } else if (rule.conditionText) { + if (CSS.supports(rule.conditionText)) { + iterateCSSRules(rule.cssRules, iterate, onMediaRuleError); + } + } else { + logWarn("CSSRule type not supported", rule); + } + }); + } + var shorthandVarDependantProperties = [ + "background", + "border", + "border-color", + "border-bottom", + "border-left", + "border-right", + "border-top", + "outline", + "outline-color" + ]; + var shorthandVarDepPropRegexps = isSafari + ? shorthandVarDependantProperties.map(function (prop) { + var regexp = new RegExp("".concat(prop, ":\\s*(.*?)\\s*;")); + return [prop, regexp]; + }) + : null; + function iterateCSSDeclarations(style, iterate) { + forEach(style, function (property) { + var value = style.getPropertyValue(property).trim(); + if (!value) { + return; + } + iterate(property, value); + }); + var cssText = style.cssText; + if (cssText.includes("var(")) { + if (isSafari) { + shorthandVarDepPropRegexps.forEach(function (_a) { + var _b = __read(_a, 2), + prop = _b[0], + regexp = _b[1]; + var match = cssText.match(regexp); + if (match && match[1]) { + var val = match[1].trim(); + iterate(prop, val); + } + }); + } else { + shorthandVarDependantProperties.forEach(function (prop) { + var val = style.getPropertyValue(prop); + if (val && val.includes("var(")) { + iterate(prop, val); + } + }); + } + } + } + var cssURLRegex = /url\((('.*?')|(".*?")|([^\)]*?))\)/g; + var cssImportRegex = + /@import\s*(url\()?(('.+?')|(".+?")|([^\)]*?))\)? ?(screen)?;?/gi; + function getCSSURLValue(cssURL) { + return cssURL + .trim() + .replace(/[\n\r\\]+/g, "") + .replace(/^url\((.*)\)$/, "$1") + .trim() + .replace(/^"(.*)"$/, "$1") + .replace(/^'(.*)'$/, "$1") + .replace(/(?:\\(.))/g, "$1"); + } + function getCSSBaseBath(url) { + var cssURL = parseURL(url); + return "" + .concat(cssURL.origin) + .concat( + cssURL.pathname + .replace(/\?.*$/, "") + .replace(/(\/)([^\/]+)$/i, "$1") + ); + } + function replaceCSSRelativeURLsWithAbsolute($css, cssBasePath) { + return $css.replace(cssURLRegex, function (match) { + var pathValue = getCSSURLValue(match); + try { + return "url('".concat( + getAbsoluteURL(cssBasePath, pathValue), + "')" + ); + } catch (err) { + return match; + } + }); + } + var cssCommentsRegex = /\/\*[\s\S]*?\*\//g; + function removeCSSComments($css) { + return $css.replace(cssCommentsRegex, ""); + } + var fontFaceRegex = /@font-face\s*{[^}]*}/g; + function replaceCSSFontFace($css) { + return $css.replace(fontFaceRegex, ""); + } + + function evalMath(expression) { + var rpnStack = []; + var workingStack = []; + var lastToken; + for (var i = 0, len = expression.length; i < len; i++) { + var token = expression[i]; + if (!token || token === " ") { + continue; + } + if (operators.has(token)) { + var op = operators.get(token); + while (workingStack.length) { + var currentOp = operators.get(workingStack[0]); + if (!currentOp) { + break; + } + if (op.lessOrEqualThan(currentOp)) { + rpnStack.push(workingStack.shift()); + } else { + break; + } + } + workingStack.unshift(token); + } else if (!lastToken || operators.has(lastToken)) { + rpnStack.push(token); + } else { + rpnStack[rpnStack.length - 1] += token; + } + lastToken = token; + } + rpnStack.push.apply( + rpnStack, + __spreadArray([], __read(workingStack), false) + ); + var stack = []; + for (var i = 0, len = rpnStack.length; i < len; i++) { + var op = operators.get(rpnStack[i]); + if (op) { + var args = stack.splice(0, 2); + stack.push(op.exec(args[1], args[0])); + } else { + stack.unshift(parseFloat(rpnStack[i])); + } + } + return stack[0]; + } + var Operator = (function () { + function Operator(precedence, method) { + this.precendce = precedence; + this.execMethod = method; + } + Operator.prototype.exec = function (left, right) { + return this.execMethod(left, right); + }; + Operator.prototype.lessOrEqualThan = function (op) { + return this.precendce <= op.precendce; + }; + return Operator; + })(); + var operators = new Map([ + [ + "+", + new Operator(1, function (left, right) { + return left + right; + }) + ], + [ + "-", + new Operator(1, function (left, right) { + return left - right; + }) + ], + [ + "*", + new Operator(2, function (left, right) { + return left * right; + }) + ], + [ + "/", + new Operator(2, function (left, right) { + return left / right; + }) + ] + ]); + + function getMatches(regex, input, group) { + if (group === void 0) { + group = 0; + } + var matches = []; + var m; + while ((m = regex.exec(input))) { + matches.push(m[group]); + } + return matches; + } + function formatCSS(text) { + function trimLeft(text) { + return text.replace(/^\s+/, ""); + } + function getIndent(depth) { + if (depth === 0) { + return ""; + } + return " ".repeat(4 * depth); + } + if (text.length < 50000) { + var emptyRuleRegexp = /[^{}]+{\s*}/; + while (emptyRuleRegexp.test(text)) { + text = text.replace(emptyRuleRegexp, ""); + } + } + var css = text + .replace(/\s{2,}/g, " ") + .replace(/\{/g, "{\n") + .replace(/\}/g, "\n}\n") + .replace(/\;(?![^\(|\"]*(\)|\"))/g, ";\n") + .replace(/\,(?![^\(|\"]*(\)|\"))/g, ",\n") + .replace(/\n\s*\n/g, "\n") + .split("\n"); + var depth = 0; + var formatted = []; + for (var x = 0, len = css.length; x < len; x++) { + var line = "".concat(css[x], "\n"); + if (line.includes("{")) { + formatted.push(getIndent(depth++) + trimLeft(line)); + } else if (line.includes("}")) { + formatted.push(getIndent(--depth) + trimLeft(line)); + } else { + formatted.push(getIndent(depth) + trimLeft(line)); + } + } + return formatted.join("").trim(); + } + function getParenthesesRange(input, searchStartIndex) { + if (searchStartIndex === void 0) { + searchStartIndex = 0; + } + var length = input.length; + var depth = 0; + var firstOpenIndex = -1; + for (var i = searchStartIndex; i < length; i++) { + if (depth === 0) { + var openIndex = input.indexOf("(", i); + if (openIndex < 0) { + break; + } + firstOpenIndex = openIndex; + depth++; + i = openIndex; + } else { + var closingIndex = input.indexOf(")", i); + if (closingIndex < 0) { + break; + } + var openIndex = input.indexOf("(", i); + if (openIndex < 0 || closingIndex < openIndex) { + depth--; + if (depth === 0) { + return {start: firstOpenIndex, end: closingIndex + 1}; + } + i = closingIndex; + } else { + depth++; + i = openIndex; + } + } + } + return null; + } + + var hslaParseCache = new Map(); + var rgbaParseCache = new Map(); + function parseColorWithCache($color) { + $color = $color.trim(); + if (rgbaParseCache.has($color)) { + return rgbaParseCache.get($color); + } + if ($color.includes("calc(")) { + $color = lowerCalcExpression($color); + } + var color = parse($color); + color && rgbaParseCache.set($color, color); + return color; + } + function parseToHSLWithCache(color) { + if (hslaParseCache.has(color)) { + return hslaParseCache.get(color); + } + var rgb = parseColorWithCache(color); + if (!rgb) { + return null; + } + var hsl = rgbToHSL(rgb); + hslaParseCache.set(color, hsl); + return hsl; + } + function clearColorCache() { + hslaParseCache.clear(); + rgbaParseCache.clear(); + } + function hslToRGB(_a) { + var h = _a.h, + s = _a.s, + l = _a.l, + _b = _a.a, + a = _b === void 0 ? 1 : _b; + if (s === 0) { + var _c = __read( + [l, l, l].map(function (x) { + return Math.round(x * 255); + }), + 3 + ), + r_1 = _c[0], + b_1 = _c[1], + g_1 = _c[2]; + return {r: r_1, g: g_1, b: b_1, a: a}; + } + var c = (1 - Math.abs(2 * l - 1)) * s; + var x = c * (1 - Math.abs(((h / 60) % 2) - 1)); + var m = l - c / 2; + var _d = __read( + (h < 60 + ? [c, x, 0] + : h < 120 + ? [x, c, 0] + : h < 180 + ? [0, c, x] + : h < 240 + ? [0, x, c] + : h < 300 + ? [x, 0, c] + : [c, 0, x] + ).map(function (n) { + return Math.round((n + m) * 255); + }), + 3 + ), + r = _d[0], + g = _d[1], + b = _d[2]; + return {r: r, g: g, b: b, a: a}; + } + function rgbToHSL(_a) { + var r255 = _a.r, + g255 = _a.g, + b255 = _a.b, + _b = _a.a, + a = _b === void 0 ? 1 : _b; + var r = r255 / 255; + var g = g255 / 255; + var b = b255 / 255; + var max = Math.max(r, g, b); + var min = Math.min(r, g, b); + var c = max - min; + var l = (max + min) / 2; + if (c === 0) { + return {h: 0, s: 0, l: l, a: a}; + } + var h = + (max === r + ? ((g - b) / c) % 6 + : max === g + ? (b - r) / c + 2 + : (r - g) / c + 4) * 60; + if (h < 0) { + h += 360; + } + var s = c / (1 - Math.abs(2 * l - 1)); + return {h: h, s: s, l: l, a: a}; + } + function toFixed(n, digits) { + if (digits === void 0) { + digits = 0; + } + var fixed = n.toFixed(digits); + if (digits === 0) { + return fixed; + } + var dot = fixed.indexOf("."); + if (dot >= 0) { + var zerosMatch = fixed.match(/0+$/); + if (zerosMatch) { + if (zerosMatch.index === dot + 1) { + return fixed.substring(0, dot); + } + return fixed.substring(0, zerosMatch.index); + } + } + return fixed; + } + function rgbToString(rgb) { + var r = rgb.r, + g = rgb.g, + b = rgb.b, + a = rgb.a; + if (a != null && a < 1) { + return "rgba(" + .concat(toFixed(r), ", ") + .concat(toFixed(g), ", ") + .concat(toFixed(b), ", ") + .concat(toFixed(a, 2), ")"); + } + return "rgb(" + .concat(toFixed(r), ", ") + .concat(toFixed(g), ", ") + .concat(toFixed(b), ")"); + } + function rgbToHexString(_a) { + var r = _a.r, + g = _a.g, + b = _a.b, + a = _a.a; + return "#".concat( + (a != null && a < 1 ? [r, g, b, Math.round(a * 255)] : [r, g, b]) + .map(function (x) { + return "".concat(x < 16 ? "0" : "").concat(x.toString(16)); + }) + .join("") + ); + } + function hslToString(hsl) { + var h = hsl.h, + s = hsl.s, + l = hsl.l, + a = hsl.a; + if (a != null && a < 1) { + return "hsla(" + .concat(toFixed(h), ", ") + .concat(toFixed(s * 100), "%, ") + .concat(toFixed(l * 100), "%, ") + .concat(toFixed(a, 2), ")"); + } + return "hsl(" + .concat(toFixed(h), ", ") + .concat(toFixed(s * 100), "%, ") + .concat(toFixed(l * 100), "%)"); + } + var rgbMatch = /^rgba?\([^\(\)]+\)$/; + var hslMatch = /^hsla?\([^\(\)]+\)$/; + var hexMatch = /^#[0-9a-f]+$/i; + function parse($color) { + var c = $color.trim().toLowerCase(); + if (c.match(rgbMatch)) { + return parseRGB(c); + } + if (c.match(hslMatch)) { + return parseHSL(c); + } + if (c.match(hexMatch)) { + return parseHex(c); + } + if (knownColors.has(c)) { + return getColorByName(c); + } + if (systemColors.has(c)) { + return getSystemColor(c); + } + if ($color === "transparent") { + return {r: 0, g: 0, b: 0, a: 0}; + } + return null; + } + function getNumbers($color) { + var numbers = []; + var prevPos = 0; + var isMining = false; + var startIndex = $color.indexOf("("); + $color = $color.substring(startIndex + 1, $color.length - 1); + for (var i = 0; i < $color.length; i++) { + var c = $color[i]; + if ((c >= "0" && c <= "9") || c === "." || c === "+" || c === "-") { + isMining = true; + } else if (isMining && (c === " " || c === ",")) { + numbers.push($color.substring(prevPos, i)); + isMining = false; + prevPos = i + 1; + } else if (!isMining) { + prevPos = i + 1; + } + } + if (isMining) { + numbers.push($color.substring(prevPos, $color.length)); + } + return numbers; + } + function getNumbersFromString(str, range, units) { + var raw = getNumbers(str); + var unitsList = Object.entries(units); + var numbers = raw + .map(function (r) { + return r.trim(); + }) + .map(function (r, i) { + var n; + var unit = unitsList.find(function (_a) { + var _b = __read(_a, 1), + u = _b[0]; + return r.endsWith(u); + }); + if (unit) { + n = + (parseFloat(r.substring(0, r.length - unit[0].length)) / + unit[1]) * + range[i]; + } else { + n = parseFloat(r); + } + if (range[i] > 1) { + return Math.round(n); + } + return n; + }); + return numbers; + } + var rgbRange = [255, 255, 255, 1]; + var rgbUnits = {"%": 100}; + function parseRGB($rgb) { + var _a = __read(getNumbersFromString($rgb, rgbRange, rgbUnits), 4), + r = _a[0], + g = _a[1], + b = _a[2], + _b = _a[3], + a = _b === void 0 ? 1 : _b; + return {r: r, g: g, b: b, a: a}; + } + var hslRange = [360, 1, 1, 1]; + var hslUnits = {"%": 100, "deg": 360, "rad": 2 * Math.PI, "turn": 1}; + function parseHSL($hsl) { + var _a = __read(getNumbersFromString($hsl, hslRange, hslUnits), 4), + h = _a[0], + s = _a[1], + l = _a[2], + _b = _a[3], + a = _b === void 0 ? 1 : _b; + return hslToRGB({h: h, s: s, l: l, a: a}); + } + function parseHex($hex) { + var h = $hex.substring(1); + switch (h.length) { + case 3: + case 4: { + var _a = __read( + [0, 1, 2].map(function (i) { + return parseInt("".concat(h[i]).concat(h[i]), 16); + }), + 3 + ), + r = _a[0], + g = _a[1], + b = _a[2]; + var a = + h.length === 3 + ? 1 + : parseInt("".concat(h[3]).concat(h[3]), 16) / 255; + return {r: r, g: g, b: b, a: a}; + } + case 6: + case 8: { + var _b = __read( + [0, 2, 4].map(function (i) { + return parseInt(h.substring(i, i + 2), 16); + }), + 3 + ), + r = _b[0], + g = _b[1], + b = _b[2]; + var a = + h.length === 6 ? 1 : parseInt(h.substring(6, 8), 16) / 255; + return {r: r, g: g, b: b, a: a}; + } + } + return null; + } + function getColorByName($color) { + var n = knownColors.get($color); + return { + r: (n >> 16) & 255, + g: (n >> 8) & 255, + b: (n >> 0) & 255, + a: 1 + }; + } + function getSystemColor($color) { + var n = systemColors.get($color); + return { + r: (n >> 16) & 255, + g: (n >> 8) & 255, + b: (n >> 0) & 255, + a: 1 + }; + } + function lowerCalcExpression(color) { + var searchIndex = 0; + var replaceBetweenIndices = function (start, end, replacement) { + color = + color.substring(0, start) + replacement + color.substring(end); + }; + while ((searchIndex = color.indexOf("calc(")) !== -1) { + var range = getParenthesesRange(color, searchIndex); + if (!range) { + break; + } + var slice = color.slice(range.start + 1, range.end - 1); + var includesPercentage = slice.includes("%"); + slice = slice.split("%").join(""); + var output = Math.round(evalMath(slice)); + replaceBetweenIndices( + range.start - 4, + range.end, + output + (includesPercentage ? "%" : "") + ); + } + return color; + } + var knownColors = new Map( + Object.entries({ + aliceblue: 0xf0f8ff, + antiquewhite: 0xfaebd7, + aqua: 0x00ffff, + aquamarine: 0x7fffd4, + azure: 0xf0ffff, + beige: 0xf5f5dc, + bisque: 0xffe4c4, + black: 0x000000, + blanchedalmond: 0xffebcd, + blue: 0x0000ff, + blueviolet: 0x8a2be2, + brown: 0xa52a2a, + burlywood: 0xdeb887, + cadetblue: 0x5f9ea0, + chartreuse: 0x7fff00, + chocolate: 0xd2691e, + coral: 0xff7f50, + cornflowerblue: 0x6495ed, + cornsilk: 0xfff8dc, + crimson: 0xdc143c, + cyan: 0x00ffff, + darkblue: 0x00008b, + darkcyan: 0x008b8b, + darkgoldenrod: 0xb8860b, + darkgray: 0xa9a9a9, + darkgrey: 0xa9a9a9, + darkgreen: 0x006400, + darkkhaki: 0xbdb76b, + darkmagenta: 0x8b008b, + darkolivegreen: 0x556b2f, + darkorange: 0xff8c00, + darkorchid: 0x9932cc, + darkred: 0x8b0000, + darksalmon: 0xe9967a, + darkseagreen: 0x8fbc8f, + darkslateblue: 0x483d8b, + darkslategray: 0x2f4f4f, + darkslategrey: 0x2f4f4f, + darkturquoise: 0x00ced1, + darkviolet: 0x9400d3, + deeppink: 0xff1493, + deepskyblue: 0x00bfff, + dimgray: 0x696969, + dimgrey: 0x696969, + dodgerblue: 0x1e90ff, + firebrick: 0xb22222, + floralwhite: 0xfffaf0, + forestgreen: 0x228b22, + fuchsia: 0xff00ff, + gainsboro: 0xdcdcdc, + ghostwhite: 0xf8f8ff, + gold: 0xffd700, + goldenrod: 0xdaa520, + gray: 0x808080, + grey: 0x808080, + green: 0x008000, + greenyellow: 0xadff2f, + honeydew: 0xf0fff0, + hotpink: 0xff69b4, + indianred: 0xcd5c5c, + indigo: 0x4b0082, + ivory: 0xfffff0, + khaki: 0xf0e68c, + lavender: 0xe6e6fa, + lavenderblush: 0xfff0f5, + lawngreen: 0x7cfc00, + lemonchiffon: 0xfffacd, + lightblue: 0xadd8e6, + lightcoral: 0xf08080, + lightcyan: 0xe0ffff, + lightgoldenrodyellow: 0xfafad2, + lightgray: 0xd3d3d3, + lightgrey: 0xd3d3d3, + lightgreen: 0x90ee90, + lightpink: 0xffb6c1, + lightsalmon: 0xffa07a, + lightseagreen: 0x20b2aa, + lightskyblue: 0x87cefa, + lightslategray: 0x778899, + lightslategrey: 0x778899, + lightsteelblue: 0xb0c4de, + lightyellow: 0xffffe0, + lime: 0x00ff00, + limegreen: 0x32cd32, + linen: 0xfaf0e6, + magenta: 0xff00ff, + maroon: 0x800000, + mediumaquamarine: 0x66cdaa, + mediumblue: 0x0000cd, + mediumorchid: 0xba55d3, + mediumpurple: 0x9370db, + mediumseagreen: 0x3cb371, + mediumslateblue: 0x7b68ee, + mediumspringgreen: 0x00fa9a, + mediumturquoise: 0x48d1cc, + mediumvioletred: 0xc71585, + midnightblue: 0x191970, + mintcream: 0xf5fffa, + mistyrose: 0xffe4e1, + moccasin: 0xffe4b5, + navajowhite: 0xffdead, + navy: 0x000080, + oldlace: 0xfdf5e6, + olive: 0x808000, + olivedrab: 0x6b8e23, + orange: 0xffa500, + orangered: 0xff4500, + orchid: 0xda70d6, + palegoldenrod: 0xeee8aa, + palegreen: 0x98fb98, + paleturquoise: 0xafeeee, + palevioletred: 0xdb7093, + papayawhip: 0xffefd5, + peachpuff: 0xffdab9, + peru: 0xcd853f, + pink: 0xffc0cb, + plum: 0xdda0dd, + powderblue: 0xb0e0e6, + purple: 0x800080, + rebeccapurple: 0x663399, + red: 0xff0000, + rosybrown: 0xbc8f8f, + royalblue: 0x4169e1, + saddlebrown: 0x8b4513, + salmon: 0xfa8072, + sandybrown: 0xf4a460, + seagreen: 0x2e8b57, + seashell: 0xfff5ee, + sienna: 0xa0522d, + silver: 0xc0c0c0, + skyblue: 0x87ceeb, + slateblue: 0x6a5acd, + slategray: 0x708090, + slategrey: 0x708090, + snow: 0xfffafa, + springgreen: 0x00ff7f, + steelblue: 0x4682b4, + tan: 0xd2b48c, + teal: 0x008080, + thistle: 0xd8bfd8, + tomato: 0xff6347, + turquoise: 0x40e0d0, + violet: 0xee82ee, + wheat: 0xf5deb3, + white: 0xffffff, + whitesmoke: 0xf5f5f5, + yellow: 0xffff00, + yellowgreen: 0x9acd32 + }) + ); + var systemColors = new Map( + Object.entries({ + "ActiveBorder": 0x3b99fc, + "ActiveCaption": 0x000000, + "AppWorkspace": 0xaaaaaa, + "Background": 0x6363ce, + "ButtonFace": 0xffffff, + "ButtonHighlight": 0xe9e9e9, + "ButtonShadow": 0x9fa09f, + "ButtonText": 0x000000, + "CaptionText": 0x000000, + "GrayText": 0x7f7f7f, + "Highlight": 0xb2d7ff, + "HighlightText": 0x000000, + "InactiveBorder": 0xffffff, + "InactiveCaption": 0xffffff, + "InactiveCaptionText": 0x000000, + "InfoBackground": 0xfbfcc5, + "InfoText": 0x000000, + "Menu": 0xf6f6f6, + "MenuText": 0xffffff, + "Scrollbar": 0xaaaaaa, + "ThreeDDarkShadow": 0x000000, + "ThreeDFace": 0xc0c0c0, + "ThreeDHighlight": 0xffffff, + "ThreeDLightShadow": 0xffffff, + "ThreeDShadow": 0x000000, + "Window": 0xececec, + "WindowFrame": 0xaaaaaa, + "WindowText": 0x000000, + "-webkit-focus-ring-color": 0xe59700 + }).map(function (_a) { + var _b = __read(_a, 2), + key = _b[0], + value = _b[1]; + return [key.toLowerCase(), value]; + }) + ); + function getSRGBLightness(r, g, b) { + return (0.2126 * r + 0.7152 * g + 0.0722 * b) / 255; + } + + function scale(x, inLow, inHigh, outLow, outHigh) { + return ((x - inLow) * (outHigh - outLow)) / (inHigh - inLow) + outLow; + } + function clamp(x, min, max) { + return Math.min(max, Math.max(min, x)); + } + function multiplyMatrices(m1, m2) { + var result = []; + for (var i = 0, len = m1.length; i < len; i++) { + result[i] = []; + for (var j = 0, len2 = m2[0].length; j < len2; j++) { + var sum = 0; + for (var k = 0, len3 = m1[0].length; k < len3; k++) { + sum += m1[i][k] * m2[k][j]; + } + result[i][j] = sum; + } + } + return result; + } + + function createFilterMatrix(config) { + var m = Matrix.identity(); + if (config.sepia !== 0) { + m = multiplyMatrices(m, Matrix.sepia(config.sepia / 100)); + } + if (config.grayscale !== 0) { + m = multiplyMatrices(m, Matrix.grayscale(config.grayscale / 100)); + } + if (config.contrast !== 100) { + m = multiplyMatrices(m, Matrix.contrast(config.contrast / 100)); + } + if (config.brightness !== 100) { + m = multiplyMatrices(m, Matrix.brightness(config.brightness / 100)); + } + if (config.mode === 1) { + m = multiplyMatrices(m, Matrix.invertNHue()); + } + return m; + } + function applyColorMatrix(_a, matrix) { + var _b = __read(_a, 3), + r = _b[0], + g = _b[1], + b = _b[2]; + var rgb = [[r / 255], [g / 255], [b / 255], [1], [1]]; + var result = multiplyMatrices(matrix, rgb); + return [0, 1, 2].map(function (i) { + return clamp(Math.round(result[i][0] * 255), 0, 255); + }); + } + var Matrix = { + identity: function () { + return [ + [1, 0, 0, 0, 0], + [0, 1, 0, 0, 0], + [0, 0, 1, 0, 0], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 1] + ]; + }, + invertNHue: function () { + return [ + [0.333, -0.667, -0.667, 0, 1], + [-0.667, 0.333, -0.667, 0, 1], + [-0.667, -0.667, 0.333, 0, 1], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 1] + ]; + }, + brightness: function (v) { + return [ + [v, 0, 0, 0, 0], + [0, v, 0, 0, 0], + [0, 0, v, 0, 0], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 1] + ]; + }, + contrast: function (v) { + var t = (1 - v) / 2; + return [ + [v, 0, 0, 0, t], + [0, v, 0, 0, t], + [0, 0, v, 0, t], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 1] + ]; + }, + sepia: function (v) { + return [ + [ + 0.393 + 0.607 * (1 - v), + 0.769 - 0.769 * (1 - v), + 0.189 - 0.189 * (1 - v), + 0, + 0 + ], + [ + 0.349 - 0.349 * (1 - v), + 0.686 + 0.314 * (1 - v), + 0.168 - 0.168 * (1 - v), + 0, + 0 + ], + [ + 0.272 - 0.272 * (1 - v), + 0.534 - 0.534 * (1 - v), + 0.131 + 0.869 * (1 - v), + 0, + 0 + ], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 1] + ]; + }, + grayscale: function (v) { + return [ + [ + 0.2126 + 0.7874 * (1 - v), + 0.7152 - 0.7152 * (1 - v), + 0.0722 - 0.0722 * (1 - v), + 0, + 0 + ], + [ + 0.2126 - 0.2126 * (1 - v), + 0.7152 + 0.2848 * (1 - v), + 0.0722 - 0.0722 * (1 - v), + 0, + 0 + ], + [ + 0.2126 - 0.2126 * (1 - v), + 0.7152 - 0.7152 * (1 - v), + 0.0722 + 0.9278 * (1 - v), + 0, + 0 + ], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 1] + ]; + } + }; + + function getBgPole(theme) { + var isDarkScheme = theme.mode === 1; + var prop = isDarkScheme + ? "darkSchemeBackgroundColor" + : "lightSchemeBackgroundColor"; + return theme[prop]; + } + function getFgPole(theme) { + var isDarkScheme = theme.mode === 1; + var prop = isDarkScheme + ? "darkSchemeTextColor" + : "lightSchemeTextColor"; + return theme[prop]; + } + var colorModificationCache = new Map(); + function clearColorModificationCache() { + colorModificationCache.clear(); + } + var rgbCacheKeys = ["r", "g", "b", "a"]; + var themeCacheKeys$1 = [ + "mode", + "brightness", + "contrast", + "grayscale", + "sepia", + "darkSchemeBackgroundColor", + "darkSchemeTextColor", + "lightSchemeBackgroundColor", + "lightSchemeTextColor" + ]; + function getCacheId(rgb, theme) { + var resultId = ""; + rgbCacheKeys.forEach(function (key) { + resultId += "".concat(rgb[key], ";"); + }); + themeCacheKeys$1.forEach(function (key) { + resultId += "".concat(theme[key], ";"); + }); + return resultId; + } + function modifyColorWithCache( + rgb, + theme, + modifyHSL, + poleColor, + anotherPoleColor + ) { + var fnCache; + if (colorModificationCache.has(modifyHSL)) { + fnCache = colorModificationCache.get(modifyHSL); + } else { + fnCache = new Map(); + colorModificationCache.set(modifyHSL, fnCache); + } + var id = getCacheId(rgb, theme); + if (fnCache.has(id)) { + return fnCache.get(id); + } + var hsl = rgbToHSL(rgb); + var pole = poleColor == null ? null : parseToHSLWithCache(poleColor); + var anotherPole = + anotherPoleColor == null + ? null + : parseToHSLWithCache(anotherPoleColor); + var modified = modifyHSL(hsl, pole, anotherPole); + var _a = hslToRGB(modified), + r = _a.r, + g = _a.g, + b = _a.b, + a = _a.a; + var matrix = createFilterMatrix(theme); + var _b = __read(applyColorMatrix([r, g, b], matrix), 3), + rf = _b[0], + gf = _b[1], + bf = _b[2]; + var color = + a === 1 + ? rgbToHexString({r: rf, g: gf, b: bf}) + : rgbToString({r: rf, g: gf, b: bf, a: a}); + fnCache.set(id, color); + return color; + } + function noopHSL(hsl) { + return hsl; + } + function modifyColor(rgb, theme) { + return modifyColorWithCache(rgb, theme, noopHSL); + } + function modifyLightSchemeColor(rgb, theme) { + var poleBg = getBgPole(theme); + var poleFg = getFgPole(theme); + return modifyColorWithCache( + rgb, + theme, + modifyLightModeHSL, + poleFg, + poleBg + ); + } + function modifyLightModeHSL(_a, poleFg, poleBg) { + var h = _a.h, + s = _a.s, + l = _a.l, + a = _a.a; + var isDark = l < 0.5; + var isNeutral; + if (isDark) { + isNeutral = l < 0.2 || s < 0.12; + } else { + var isBlue = h > 200 && h < 280; + isNeutral = s < 0.24 || (l > 0.8 && isBlue); + } + var hx = h; + var sx = l; + if (isNeutral) { + if (isDark) { + hx = poleFg.h; + sx = poleFg.s; + } else { + hx = poleBg.h; + sx = poleBg.s; + } + } + var lx = scale(l, 0, 1, poleFg.l, poleBg.l); + return {h: hx, s: sx, l: lx, a: a}; + } + var MAX_BG_LIGHTNESS = 0.4; + function modifyBgHSL(_a, pole) { + var h = _a.h, + s = _a.s, + l = _a.l, + a = _a.a; + var isDark = l < 0.5; + var isBlue = h > 200 && h < 280; + var isNeutral = s < 0.12 || (l > 0.8 && isBlue); + if (isDark) { + var lx_1 = scale(l, 0, 0.5, 0, MAX_BG_LIGHTNESS); + if (isNeutral) { + var hx_1 = pole.h; + var sx = pole.s; + return {h: hx_1, s: sx, l: lx_1, a: a}; + } + return {h: h, s: s, l: lx_1, a: a}; + } + var lx = scale(l, 0.5, 1, MAX_BG_LIGHTNESS, pole.l); + if (isNeutral) { + var hx_2 = pole.h; + var sx = pole.s; + return {h: hx_2, s: sx, l: lx, a: a}; + } + var hx = h; + var isYellow = h > 60 && h < 180; + if (isYellow) { + var isCloserToGreen = h > 120; + if (isCloserToGreen) { + hx = scale(h, 120, 180, 135, 180); + } else { + hx = scale(h, 60, 120, 60, 105); + } + } + if (hx > 40 && hx < 80) { + lx *= 0.75; + } + return {h: hx, s: s, l: lx, a: a}; + } + function modifyBackgroundColor(rgb, theme) { + if (theme.mode === 0) { + return modifyLightSchemeColor(rgb, theme); + } + var pole = getBgPole(theme); + return modifyColorWithCache( + rgb, + __assign(__assign({}, theme), {mode: 0}), + modifyBgHSL, + pole + ); + } + var MIN_FG_LIGHTNESS = 0.55; + function modifyBlueFgHue(hue) { + return scale(hue, 205, 245, 205, 220); + } + function modifyFgHSL(_a, pole) { + var h = _a.h, + s = _a.s, + l = _a.l, + a = _a.a; + var isLight = l > 0.5; + var isNeutral = l < 0.2 || s < 0.24; + var isBlue = !isNeutral && h > 205 && h < 245; + if (isLight) { + var lx_2 = scale(l, 0.5, 1, MIN_FG_LIGHTNESS, pole.l); + if (isNeutral) { + var hx_3 = pole.h; + var sx = pole.s; + return {h: hx_3, s: sx, l: lx_2, a: a}; + } + var hx_4 = h; + if (isBlue) { + hx_4 = modifyBlueFgHue(h); + } + return {h: hx_4, s: s, l: lx_2, a: a}; + } + if (isNeutral) { + var hx_5 = pole.h; + var sx = pole.s; + var lx_3 = scale(l, 0, 0.5, pole.l, MIN_FG_LIGHTNESS); + return {h: hx_5, s: sx, l: lx_3, a: a}; + } + var hx = h; + var lx; + if (isBlue) { + hx = modifyBlueFgHue(h); + lx = scale(l, 0, 0.5, pole.l, Math.min(1, MIN_FG_LIGHTNESS + 0.05)); + } else { + lx = scale(l, 0, 0.5, pole.l, MIN_FG_LIGHTNESS); + } + return {h: hx, s: s, l: lx, a: a}; + } + function modifyForegroundColor(rgb, theme) { + if (theme.mode === 0) { + return modifyLightSchemeColor(rgb, theme); + } + var pole = getFgPole(theme); + return modifyColorWithCache( + rgb, + __assign(__assign({}, theme), {mode: 0}), + modifyFgHSL, + pole + ); + } + function modifyBorderHSL(_a, poleFg, poleBg) { + var h = _a.h, + s = _a.s, + l = _a.l, + a = _a.a; + var isDark = l < 0.5; + var isNeutral = l < 0.2 || s < 0.24; + var hx = h; + var sx = s; + if (isNeutral) { + if (isDark) { + hx = poleFg.h; + sx = poleFg.s; + } else { + hx = poleBg.h; + sx = poleBg.s; + } + } + var lx = scale(l, 0, 1, 0.5, 0.2); + return {h: hx, s: sx, l: lx, a: a}; + } + function modifyBorderColor(rgb, theme) { + if (theme.mode === 0) { + return modifyLightSchemeColor(rgb, theme); + } + var poleFg = getFgPole(theme); + var poleBg = getBgPole(theme); + return modifyColorWithCache( + rgb, + __assign(__assign({}, theme), {mode: 0}), + modifyBorderHSL, + poleFg, + poleBg + ); + } + function modifyShadowColor(rgb, filter) { + return modifyBackgroundColor(rgb, filter); + } + function modifyGradientColor(rgb, filter) { + return modifyBackgroundColor(rgb, filter); + } + + function createTextStyle(config) { + var lines = []; + lines.push( + '*:not(pre, pre *, code, .far, .fa, .glyphicon, [class*="vjs-"], .fab, .fa-github, .fas, .material-icons, .icofont, .typcn, mu, [class*="mu-"], .glyphicon, .icon) {' + ); + if (config.useFont && config.fontFamily) { + lines.push( + " font-family: ".concat(config.fontFamily, " !important;") + ); + } + if (config.textStroke > 0) { + lines.push( + " -webkit-text-stroke: ".concat( + config.textStroke, + "px !important;" + ) + ); + lines.push( + " text-stroke: ".concat(config.textStroke, "px !important;") + ); + } + lines.push("}"); + return lines.join("\n"); + } + + var FilterMode; + (function (FilterMode) { + FilterMode[(FilterMode["light"] = 0)] = "light"; + FilterMode[(FilterMode["dark"] = 1)] = "dark"; + })(FilterMode || (FilterMode = {})); + function getCSSFilterValue(config) { + var filters = []; + if (config.mode === FilterMode.dark) { + filters.push("invert(100%) hue-rotate(180deg)"); + } + if (config.brightness !== 100) { + filters.push("brightness(".concat(config.brightness, "%)")); + } + if (config.contrast !== 100) { + filters.push("contrast(".concat(config.contrast, "%)")); + } + if (config.grayscale !== 0) { + filters.push("grayscale(".concat(config.grayscale, "%)")); + } + if (config.sepia !== 0) { + filters.push("sepia(".concat(config.sepia, "%)")); + } + if (filters.length === 0) { + return null; + } + return filters.join(" "); + } + + function toSVGMatrix(matrix) { + return matrix + .slice(0, 4) + .map(function (m) { + return m + .map(function (m) { + return m.toFixed(3); + }) + .join(" "); + }) + .join(" "); + } + function getSVGFilterMatrixValue(config) { + return toSVGMatrix(createFilterMatrix(config)); + } + + var counter = 0; + var resolvers$1 = new Map(); + var rejectors = new Map(); + function bgFetch(request) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [ + 2, + new Promise(function (resolve, reject) { + var id = ++counter; + resolvers$1.set(id, resolve); + rejectors.set(id, reject); + chrome.runtime.sendMessage({ + type: MessageType.CS_FETCH, + data: request, + id: id + }); + }) + ]; + }); + }); + } + chrome.runtime.onMessage.addListener(function (_a) { + var type = _a.type, + data = _a.data, + error = _a.error, + id = _a.id; + if (type === MessageType.BG_FETCH_RESPONSE) { + var resolve = resolvers$1.get(id); + var reject = rejectors.get(id); + resolvers$1.delete(id); + rejectors.delete(id); + if (error) { + reject && reject(error); + } else { + resolve && resolve(data); + } + } + }); + + var AsyncQueue = (function () { + function AsyncQueue() { + this.queue = []; + this.timerId = null; + this.frameDuration = 1000 / 60; + } + AsyncQueue.prototype.addToQueue = function (entry) { + this.queue.push(entry); + this.startQueue(); + }; + AsyncQueue.prototype.stopQueue = function () { + if (this.timerId !== null) { + cancelAnimationFrame(this.timerId); + this.timerId = null; + } + this.queue = []; + }; + AsyncQueue.prototype.startQueue = function () { + var _this = this; + if (this.timerId) { + return; + } + this.timerId = requestAnimationFrame(function () { + _this.timerId = null; + var start = Date.now(); + var cb; + while ((cb = _this.queue.shift())) { + cb(); + if (Date.now() - start >= _this.frameDuration) { + _this.startQueue(); + break; + } + } + }); + }; + return AsyncQueue; + })(); + + var imageManager = new AsyncQueue(); + function getImageDetails(url) { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + return [ + 2, + new Promise(function (resolve, reject) { + return __awaiter(_this, void 0, void 0, function () { + var dataURL, error_1, image_1, error_2; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!url.startsWith("data:")) + return [3, 1]; + dataURL = url; + return [3, 4]; + case 1: + _a.trys.push([1, 3, , 4]); + return [4, getImageDataURL(url)]; + case 2: + dataURL = _a.sent(); + return [3, 4]; + case 3: + error_1 = _a.sent(); + reject(error_1); + return [2]; + case 4: + _a.trys.push([4, 6, , 7]); + return [4, urlToImage(dataURL)]; + case 5: + image_1 = _a.sent(); + imageManager.addToQueue(function () { + resolve( + __assign( + { + src: url, + dataURL: dataURL, + width: image_1.naturalWidth, + height: image_1.naturalHeight + }, + analyzeImage(image_1) + ) + ); + }); + return [3, 7]; + case 6: + error_2 = _a.sent(); + reject(error_2); + return [3, 7]; + case 7: + return [2]; + } + }); + }); + }) + ]; + }); + }); + } + function getImageDataURL(url) { + return __awaiter(this, void 0, void 0, function () { + var parsedURL; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + parsedURL = new URL(url); + if (!(parsedURL.origin === location.origin)) + return [3, 2]; + return [4, loadAsDataURL(url)]; + case 1: + return [2, _a.sent()]; + case 2: + return [ + 4, + bgFetch({url: url, responseType: "data-url"}) + ]; + case 3: + return [2, _a.sent()]; + } + }); + }); + } + function urlToImage(url) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [ + 2, + new Promise(function (resolve, reject) { + var image = new Image(); + image.onload = function () { + return resolve(image); + }; + image.onerror = function () { + return reject("Unable to load image ".concat(url)); + }; + image.src = url; + }) + ]; + }); + }); + } + var MAX_ANALIZE_PIXELS_COUNT = 32 * 32; + var canvas; + var context; + function createCanvas() { + var maxWidth = MAX_ANALIZE_PIXELS_COUNT; + var maxHeight = MAX_ANALIZE_PIXELS_COUNT; + canvas = document.createElement("canvas"); + canvas.width = maxWidth; + canvas.height = maxHeight; + context = canvas.getContext("2d"); + context.imageSmoothingEnabled = false; + } + function removeCanvas() { + canvas = null; + context = null; + } + var MAX_IMAGE_SIZE = 5 * 1024 * 1024; + function analyzeImage(image) { + if (!canvas) { + createCanvas(); + } + var naturalWidth = image.naturalWidth, + naturalHeight = image.naturalHeight; + if (naturalHeight === 0 || naturalWidth === 0) { + logWarn("logWarn(Image is empty ".concat(image.currentSrc, ")")); + return null; + } + var size = naturalWidth * naturalHeight * 4; + if (size > MAX_IMAGE_SIZE) { + return { + isDark: false, + isLight: false, + isTransparent: false, + isLarge: false, + isTooLarge: true + }; + } + var naturalPixelsCount = naturalWidth * naturalHeight; + var k = Math.min( + 1, + Math.sqrt(MAX_ANALIZE_PIXELS_COUNT / naturalPixelsCount) + ); + var width = Math.ceil(naturalWidth * k); + var height = Math.ceil(naturalHeight * k); + context.clearRect(0, 0, width, height); + context.drawImage( + image, + 0, + 0, + naturalWidth, + naturalHeight, + 0, + 0, + width, + height + ); + var imageData = context.getImageData(0, 0, width, height); + var d = imageData.data; + var TRANSPARENT_ALPHA_THRESHOLD = 0.05; + var DARK_LIGHTNESS_THRESHOLD = 0.4; + var LIGHT_LIGHTNESS_THRESHOLD = 0.7; + var transparentPixelsCount = 0; + var darkPixelsCount = 0; + var lightPixelsCount = 0; + var i, x, y; + var r, g, b, a; + var l; + for (y = 0; y < height; y++) { + for (x = 0; x < width; x++) { + i = 4 * (y * width + x); + r = d[i + 0]; + g = d[i + 1]; + b = d[i + 2]; + a = d[i + 3]; + if (a / 255 < TRANSPARENT_ALPHA_THRESHOLD) { + transparentPixelsCount++; + } else { + l = getSRGBLightness(r, g, b); + if (l < DARK_LIGHTNESS_THRESHOLD) { + darkPixelsCount++; + } + if (l > LIGHT_LIGHTNESS_THRESHOLD) { + lightPixelsCount++; + } + } + } + } + var totalPixelsCount = width * height; + var opaquePixelsCount = totalPixelsCount - transparentPixelsCount; + var DARK_IMAGE_THRESHOLD = 0.7; + var LIGHT_IMAGE_THRESHOLD = 0.7; + var TRANSPARENT_IMAGE_THRESHOLD = 0.1; + var LARGE_IMAGE_PIXELS_COUNT = 800 * 600; + return { + isDark: darkPixelsCount / opaquePixelsCount >= DARK_IMAGE_THRESHOLD, + isLight: + lightPixelsCount / opaquePixelsCount >= LIGHT_IMAGE_THRESHOLD, + isTransparent: + transparentPixelsCount / totalPixelsCount >= + TRANSPARENT_IMAGE_THRESHOLD, + isLarge: naturalPixelsCount >= LARGE_IMAGE_PIXELS_COUNT, + isTooLarge: false + }; + } + function getFilteredImageDataURL(_a, theme) { + var dataURL = _a.dataURL, + width = _a.width, + height = _a.height; + var matrix = getSVGFilterMatrixValue(theme); + var svg = [ + ''), + "", + '', + ''), + "", + "", + ''), + "" + ].join(""); + return "data:image/svg+xml;base64,".concat(btoa(svg)); + } + function cleanImageProcessingCache() { + imageManager && imageManager.stopQueue(); + removeCanvas(); + } + + var gradientLength = "gradient".length; + var conicGradient = "conic-"; + var conicGradientLength = conicGradient.length; + var radialGradient = "radial-"; + var linearGradient = "linear-"; + function parseGradient(value) { + var result = []; + var index = 0; + var startIndex = conicGradient.length; + var _loop_1 = function () { + var typeGradient; + [linearGradient, radialGradient, conicGradient].find(function ( + possibleType + ) { + if (index - possibleType.length >= 0) { + var possibleGradient = value.substring( + index - possibleType.length, + index + ); + if (possibleGradient === possibleType) { + if ( + value.slice( + index - possibleType.length - 10, + index - possibleType.length - 1 + ) === "repeating" + ) { + typeGradient = "repeating-".concat( + possibleType, + "gradient" + ); + return true; + } + if ( + value.slice( + index - possibleType.length - 8, + index - possibleType.length - 1 + ) === "-webkit" + ) { + typeGradient = "-webkit-".concat( + possibleType, + "gradient" + ); + return true; + } + typeGradient = "".concat(possibleType, "gradient"); + return true; + } + } + }); + if (!typeGradient) { + return "break"; + } + var _a = getParenthesesRange(value, index + gradientLength), + start = _a.start, + end = _a.end; + var match = value.substring(start + 1, end - 1); + startIndex = end + 1 + conicGradientLength; + result.push({ + typeGradient: typeGradient, + match: match, + offset: typeGradient.length + 2, + index: index - typeGradient.length + gradientLength, + hasComma: true + }); + }; + while ((index = value.indexOf("gradient", startIndex)) !== -1) { + var state_1 = _loop_1(); + if (state_1 === "break") break; + } + if (result.length) { + result[result.length - 1].hasComma = false; + } + return result; + } + + function getPriority(ruleStyle, property) { + return Boolean(ruleStyle && ruleStyle.getPropertyPriority(property)); + } + function getModifiableCSSDeclaration( + property, + value, + rule, + variablesStore, + ignoreImageSelectors, + isCancelled + ) { + if (property.startsWith("--")) { + var modifier = getVariableModifier( + variablesStore, + property, + value, + rule, + ignoreImageSelectors, + isCancelled + ); + if (modifier) { + return { + property: property, + value: modifier, + important: getPriority(rule.style, property), + sourceValue: value + }; + } + } else if (value.includes("var(")) { + var modifier = getVariableDependantModifier( + variablesStore, + property, + value + ); + if (modifier) { + return { + property: property, + value: modifier, + important: getPriority(rule.style, property), + sourceValue: value + }; + } + } else if (property === "color-scheme") { + return null; + } else if ( + (property.includes("color") && + property !== "-webkit-print-color-adjust") || + property === "fill" || + property === "stroke" || + property === "stop-color" + ) { + var modifier = getColorModifier(property, value, rule); + if (modifier) { + return { + property: property, + value: modifier, + important: getPriority(rule.style, property), + sourceValue: value + }; + } + } else if ( + property === "background-image" || + property === "list-style-image" + ) { + var modifier = getBgImageModifier( + value, + rule, + ignoreImageSelectors, + isCancelled + ); + if (modifier) { + return { + property: property, + value: modifier, + important: getPriority(rule.style, property), + sourceValue: value + }; + } + } else if (property.includes("shadow")) { + var modifier = getShadowModifier(value); + if (modifier) { + return { + property: property, + value: modifier, + important: getPriority(rule.style, property), + sourceValue: value + }; + } + } + return null; + } + function joinSelectors() { + var selectors = []; + for (var _i = 0; _i < arguments.length; _i++) { + selectors[_i] = arguments[_i]; + } + return selectors.filter(Boolean).join(", "); + } + function getModifiedUserAgentStyle(theme, isIFrame, styleSystemControls) { + var lines = []; + if (!isIFrame) { + lines.push("html {"); + lines.push( + " background-color: ".concat( + modifyBackgroundColor({r: 255, g: 255, b: 255}, theme), + " !important;" + ) + ); + lines.push("}"); + } + if (isCSSColorSchemePropSupported) { + lines.push("html {"); + lines.push( + " color-scheme: ".concat( + theme.mode === 1 ? "dark" : "dark light", + " !important;" + ) + ); + lines.push("}"); + } + var bgSelectors = joinSelectors( + isIFrame ? "" : "html, body", + styleSystemControls ? "input, textarea, select, button, dialog" : "" + ); + if (bgSelectors) { + lines.push("".concat(bgSelectors, " {")); + lines.push( + " background-color: ".concat( + modifyBackgroundColor({r: 255, g: 255, b: 255}, theme), + ";" + ) + ); + lines.push("}"); + } + lines.push( + "".concat( + joinSelectors( + "html, body", + styleSystemControls ? "input, textarea, select, button" : "" + ), + " {" + ) + ); + lines.push( + " border-color: ".concat( + modifyBorderColor({r: 76, g: 76, b: 76}, theme), + ";" + ) + ); + lines.push( + " color: ".concat( + modifyForegroundColor({r: 0, g: 0, b: 0}, theme), + ";" + ) + ); + lines.push("}"); + lines.push("a {"); + lines.push( + " color: ".concat( + modifyForegroundColor({r: 0, g: 64, b: 255}, theme), + ";" + ) + ); + lines.push("}"); + lines.push("table {"); + lines.push( + " border-color: ".concat( + modifyBorderColor({r: 128, g: 128, b: 128}, theme), + ";" + ) + ); + lines.push("}"); + lines.push("::placeholder {"); + lines.push( + " color: ".concat( + modifyForegroundColor({r: 169, g: 169, b: 169}, theme), + ";" + ) + ); + lines.push("}"); + lines.push("input:-webkit-autofill,"); + lines.push("textarea:-webkit-autofill,"); + lines.push("select:-webkit-autofill {"); + lines.push( + " background-color: ".concat( + modifyBackgroundColor({r: 250, g: 255, b: 189}, theme), + " !important;" + ) + ); + lines.push( + " color: ".concat( + modifyForegroundColor({r: 0, g: 0, b: 0}, theme), + " !important;" + ) + ); + lines.push("}"); + if (theme.scrollbarColor) { + lines.push(getModifiedScrollbarStyle(theme)); + } + if (theme.selectionColor) { + lines.push(getModifiedSelectionStyle(theme)); + } + return lines.join("\n"); + } + function getSelectionColor(theme) { + var backgroundColorSelection; + var foregroundColorSelection; + if (theme.selectionColor === "auto") { + backgroundColorSelection = modifyBackgroundColor( + {r: 0, g: 96, b: 212}, + __assign(__assign({}, theme), {grayscale: 0}) + ); + foregroundColorSelection = modifyForegroundColor( + {r: 255, g: 255, b: 255}, + __assign(__assign({}, theme), {grayscale: 0}) + ); + } else { + var rgb = parseColorWithCache(theme.selectionColor); + var hsl = rgbToHSL(rgb); + backgroundColorSelection = theme.selectionColor; + if (hsl.l < 0.5) { + foregroundColorSelection = "#FFF"; + } else { + foregroundColorSelection = "#000"; + } + } + return { + backgroundColorSelection: backgroundColorSelection, + foregroundColorSelection: foregroundColorSelection + }; + } + function getModifiedSelectionStyle(theme) { + var lines = []; + var modifiedSelectionColor = getSelectionColor(theme); + var backgroundColorSelection = + modifiedSelectionColor.backgroundColorSelection; + var foregroundColorSelection = + modifiedSelectionColor.foregroundColorSelection; + ["::selection", "::-moz-selection"].forEach(function (selection) { + lines.push("".concat(selection, " {")); + lines.push( + " background-color: ".concat( + backgroundColorSelection, + " !important;" + ) + ); + lines.push( + " color: ".concat(foregroundColorSelection, " !important;") + ); + lines.push("}"); + }); + return lines.join("\n"); + } + function getModifiedScrollbarStyle(theme) { + var lines = []; + var colorTrack; + var colorIcons; + var colorThumb; + var colorThumbHover; + var colorThumbActive; + var colorCorner; + if (theme.scrollbarColor === "auto") { + colorTrack = modifyBackgroundColor({r: 241, g: 241, b: 241}, theme); + colorIcons = modifyForegroundColor({r: 96, g: 96, b: 96}, theme); + colorThumb = modifyBackgroundColor({r: 176, g: 176, b: 176}, theme); + colorThumbHover = modifyBackgroundColor( + {r: 144, g: 144, b: 144}, + theme + ); + colorThumbActive = modifyBackgroundColor( + {r: 96, g: 96, b: 96}, + theme + ); + colorCorner = modifyBackgroundColor( + {r: 255, g: 255, b: 255}, + theme + ); + } else { + var rgb = parseColorWithCache(theme.scrollbarColor); + var hsl_1 = rgbToHSL(rgb); + var isLight = hsl_1.l > 0.5; + var lighten = function (lighter) { + return __assign(__assign({}, hsl_1), { + l: clamp(hsl_1.l + lighter, 0, 1) + }); + }; + var darken = function (darker) { + return __assign(__assign({}, hsl_1), { + l: clamp(hsl_1.l - darker, 0, 1) + }); + }; + colorTrack = hslToString(darken(0.4)); + colorIcons = hslToString(isLight ? darken(0.4) : lighten(0.4)); + colorThumb = hslToString(hsl_1); + colorThumbHover = hslToString(lighten(0.1)); + colorThumbActive = hslToString(lighten(0.2)); + } + lines.push("::-webkit-scrollbar {"); + lines.push(" background-color: ".concat(colorTrack, ";")); + lines.push(" color: ".concat(colorIcons, ";")); + lines.push("}"); + lines.push("::-webkit-scrollbar-thumb {"); + lines.push(" background-color: ".concat(colorThumb, ";")); + lines.push("}"); + lines.push("::-webkit-scrollbar-thumb:hover {"); + lines.push(" background-color: ".concat(colorThumbHover, ";")); + lines.push("}"); + lines.push("::-webkit-scrollbar-thumb:active {"); + lines.push(" background-color: ".concat(colorThumbActive, ";")); + lines.push("}"); + lines.push("::-webkit-scrollbar-corner {"); + lines.push(" background-color: ".concat(colorCorner, ";")); + lines.push("}"); + if (isFirefox) { + lines.push("* {"); + lines.push( + " scrollbar-color: " + .concat(colorThumb, " ") + .concat(colorTrack, ";") + ); + lines.push("}"); + } + return lines.join("\n"); + } + function getModifiedFallbackStyle(filter, _a) { + var strict = _a.strict; + var lines = []; + var isMicrosoft = ["microsoft.com", "docs.microsoft.com"].includes( + location.hostname + ); + lines.push( + "html, body, ".concat( + strict + ? "body :not(iframe)".concat( + isMicrosoft + ? ':not(div[style^="position:absolute;top:0;left:-"]' + : "" + ) + : "body > :not(iframe)", + " {" + ) + ); + lines.push( + " background-color: ".concat( + modifyBackgroundColor({r: 255, g: 255, b: 255}, filter), + " !important;" + ) + ); + lines.push( + " border-color: ".concat( + modifyBorderColor({r: 64, g: 64, b: 64}, filter), + " !important;" + ) + ); + lines.push( + " color: ".concat( + modifyForegroundColor({r: 0, g: 0, b: 0}, filter), + " !important;" + ) + ); + lines.push("}"); + return lines.join("\n"); + } + var unparsableColors = new Set([ + "inherit", + "transparent", + "initial", + "currentcolor", + "none", + "unset" + ]); + function getColorModifier(prop, value, rule) { + if (unparsableColors.has(value.toLowerCase())) { + return value; + } + var rgb = parseColorWithCache(value); + if (!rgb) { + return null; + } + if (prop.includes("background")) { + if ( + (rule.style.webkitMaskImage && + rule.style.webkitMaskImage !== "none") || + (rule.style.webkitMask && + !rule.style.webkitMask.startsWith("none")) || + (rule.style.mask && rule.style.mask !== "none") || + (rule.style.getPropertyValue("mask-image") && + rule.style.getPropertyValue("mask-image") !== "none") + ) { + return function (filter) { + return modifyForegroundColor(rgb, filter); + }; + } + return function (filter) { + return modifyBackgroundColor(rgb, filter); + }; + } + if (prop.includes("border") || prop.includes("outline")) { + return function (filter) { + return modifyBorderColor(rgb, filter); + }; + } + return function (filter) { + return modifyForegroundColor(rgb, filter); + }; + } + var imageDetailsCache = new Map(); + var awaitingForImageLoading = new Map(); + function shouldIgnoreImage(selectorText, selectors) { + if (!selectorText || selectors.length === 0) { + return false; + } + if ( + selectors.some(function (s) { + return s === "*"; + }) + ) { + return true; + } + var ruleSelectors = selectorText.split(/,\s*/g); + var _loop_1 = function (i) { + var ignoredSelector = selectors[i]; + if ( + ruleSelectors.some(function (s) { + return s === ignoredSelector; + }) + ) { + return {value: true}; + } + }; + for (var i = 0; i < selectors.length; i++) { + var state_1 = _loop_1(i); + if (typeof state_1 === "object") return state_1.value; + } + return false; + } + function getBgImageModifier( + value, + rule, + ignoreImageSelectors, + isCancelled + ) { + var _this = this; + try { + var gradients = parseGradient(value); + var urls = getMatches(cssURLRegex, value); + if (urls.length === 0 && gradients.length === 0) { + return value; + } + var getIndices = function (matches) { + var index = 0; + return matches.map(function (match) { + var valueIndex = value.indexOf(match, index); + index = valueIndex + match.length; + return {match: match, index: valueIndex}; + }); + }; + var matches_1 = gradients + .map(function (i) { + return __assign({type: "gradient"}, i); + }) + .concat( + getIndices(urls).map(function (i) { + return __assign({type: "url", offset: 0}, i); + }) + ) + .sort(function (a, b) { + return a.index > b.index ? 1 : -1; + }); + var getGradientModifier_1 = function (gradient) { + var typeGradient = gradient.typeGradient, + match = gradient.match, + hasComma = gradient.hasComma; + var partsRegex = + /([^\(\),]+(\([^\(\)]*(\([^\(\)]*\)*[^\(\)]*)?\))?([^\(\), ]|( (?!calc)))*),?/g; + var colorStopRegex = + /^(from|color-stop|to)\(([^\(\)]*?,\s*)?(.*?)\)$/; + var parts = getMatches(partsRegex, match, 1).map(function ( + part + ) { + part = part.trim(); + var rgb = parseColorWithCache(part); + if (rgb) { + return function (filter) { + return modifyGradientColor(rgb, filter); + }; + } + var space = part.lastIndexOf(" "); + rgb = parseColorWithCache(part.substring(0, space)); + if (rgb) { + return function (filter) { + return "" + .concat(modifyGradientColor(rgb, filter), " ") + .concat(part.substring(space + 1)); + }; + } + var colorStopMatch = part.match(colorStopRegex); + if (colorStopMatch) { + rgb = parseColorWithCache(colorStopMatch[3]); + if (rgb) { + return function (filter) { + return "" + .concat(colorStopMatch[1], "(") + .concat( + colorStopMatch[2] + ? "".concat(colorStopMatch[2], ", ") + : "" + ) + .concat( + modifyGradientColor(rgb, filter), + ")" + ); + }; + } + } + return function () { + return part; + }; + }); + return function (filter) { + return "" + .concat(typeGradient, "(") + .concat( + parts + .map(function (modify) { + return modify(filter); + }) + .join(", "), + ")" + ) + .concat(hasComma ? ", " : ""); + }; + }; + var getURLModifier_1 = function (urlValue) { + var _a; + if ( + shouldIgnoreImage(rule.selectorText, ignoreImageSelectors) + ) { + return null; + } + var url = getCSSURLValue(urlValue); + var isURLEmpty = url.length === 0; + var parentStyleSheet = rule.parentStyleSheet; + var baseURL = + parentStyleSheet && parentStyleSheet.href + ? getCSSBaseBath(parentStyleSheet.href) + : ((_a = parentStyleSheet.ownerNode) === null || + _a === void 0 + ? void 0 + : _a.baseURI) || location.origin; + url = getAbsoluteURL(baseURL, url); + var absoluteValue = 'url("'.concat(url, '")'); + return function (filter) { + return __awaiter(_this, void 0, void 0, function () { + var imageDetails, awaiters_1, err_1, bgImageValue; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (isURLEmpty) { + return [2, "url('')"]; + } + if (!imageDetailsCache.has(url)) + return [3, 1]; + imageDetails = imageDetailsCache.get(url); + return [3, 7]; + case 1: + _a.trys.push([1, 6, , 7]); + if (!awaitingForImageLoading.has(url)) + return [3, 3]; + awaiters_1 = + awaitingForImageLoading.get(url); + return [ + 4, + new Promise(function (resolve) { + return awaiters_1.push(resolve); + }) + ]; + case 2: + imageDetails = _a.sent(); + if (!imageDetails) { + return [2, null]; + } + return [3, 5]; + case 3: + awaitingForImageLoading.set(url, []); + return [4, getImageDetails(url)]; + case 4: + imageDetails = _a.sent(); + imageDetailsCache.set(url, imageDetails); + awaitingForImageLoading + .get(url) + .forEach(function (resolve) { + return resolve(imageDetails); + }); + awaitingForImageLoading.delete(url); + _a.label = 5; + case 5: + if (isCancelled()) { + return [2, null]; + } + return [3, 7]; + case 6: + err_1 = _a.sent(); + logWarn(err_1); + if (awaitingForImageLoading.has(url)) { + awaitingForImageLoading + .get(url) + .forEach(function (resolve) { + return resolve(null); + }); + awaitingForImageLoading.delete(url); + } + return [2, absoluteValue]; + case 7: + bgImageValue = + getBgImageValue_1( + imageDetails, + filter + ) || absoluteValue; + return [2, bgImageValue]; + } + }); + }); + }; + }; + var getBgImageValue_1 = function (imageDetails, filter) { + var isDark = imageDetails.isDark, + isLight = imageDetails.isLight, + isTransparent = imageDetails.isTransparent, + isLarge = imageDetails.isLarge, + isTooLarge = imageDetails.isTooLarge, + width = imageDetails.width; + var result; + if (isTooLarge) { + result = 'url("'.concat(imageDetails.src, '")'); + } else if ( + isDark && + isTransparent && + filter.mode === 1 && + !isLarge && + width > 2 + ) { + logInfo("Inverting dark image ".concat(imageDetails.src)); + var inverted = getFilteredImageDataURL( + imageDetails, + __assign(__assign({}, filter), { + sepia: clamp(filter.sepia + 10, 0, 100) + }) + ); + result = 'url("'.concat(inverted, '")'); + } else if (isLight && !isTransparent && filter.mode === 1) { + if (isLarge) { + result = "none"; + } else { + logInfo( + "Dimming light image ".concat(imageDetails.src) + ); + var dimmed = getFilteredImageDataURL( + imageDetails, + filter + ); + result = 'url("'.concat(dimmed, '")'); + } + } else if (filter.mode === 0 && isLight && !isLarge) { + logInfo( + "Applying filter to image ".concat(imageDetails.src) + ); + var filtered = getFilteredImageDataURL( + imageDetails, + __assign(__assign({}, filter), { + brightness: clamp(filter.brightness - 10, 5, 200), + sepia: clamp(filter.sepia + 10, 0, 100) + }) + ); + result = 'url("'.concat(filtered, '")'); + } else { + result = null; + } + return result; + }; + var modifiers_1 = []; + var matchIndex_1 = 0; + var prevHasComma_1 = false; + matches_1.forEach(function (_a, i) { + var type = _a.type, + match = _a.match, + index = _a.index, + typeGradient = _a.typeGradient, + hasComma = _a.hasComma, + offset = _a.offset; + var matchStart = index; + var prefixStart = matchIndex_1; + var matchEnd = matchStart + match.length + offset; + matchIndex_1 = matchEnd; + if (prefixStart !== matchStart) { + if (prevHasComma_1) { + modifiers_1.push(function () { + var betweenValue = value.substring( + prefixStart, + matchStart + ); + if (betweenValue[0] === ",") { + betweenValue = betweenValue.substring(1); + } + return betweenValue; + }); + } else { + modifiers_1.push(function () { + return value.substring(prefixStart, matchStart); + }); + } + } + prevHasComma_1 = hasComma || false; + if (type === "url") { + modifiers_1.push(getURLModifier_1(match)); + } else if (type === "gradient") { + modifiers_1.push( + getGradientModifier_1({ + match: match, + index: index, + typeGradient: typeGradient, + hasComma: hasComma, + offset: offset + }) + ); + } + if (i === matches_1.length - 1) { + modifiers_1.push(function () { + return value.substring(matchEnd); + }); + } + }); + return function (filter) { + var results = modifiers_1 + .filter(Boolean) + .map(function (modify) { + return modify(filter); + }); + if ( + results.some(function (r) { + return r instanceof Promise; + }) + ) { + return Promise.all(results).then(function (asyncResults) { + return asyncResults.filter(Boolean).join(""); + }); + } + var combinedResult = results.join(""); + if (combinedResult.endsWith(", initial")) { + return combinedResult.slice(0, -9); + } + return combinedResult; + }; + } catch (err) { + return null; + } + } + function getShadowModifierWithInfo(value) { + try { + var index_1 = 0; + var colorMatches_1 = getMatches( + /(^|\s)(?!calc)([a-z]+\(.+?\)|#[0-9a-f]+|[a-z]+)(.*?(inset|outset)?($|,))/gi, + value, + 2 + ); + var notParsed_1 = 0; + var modifiers_2 = colorMatches_1.map(function (match, i) { + var prefixIndex = index_1; + var matchIndex = value.indexOf(match, index_1); + var matchEnd = matchIndex + match.length; + index_1 = matchEnd; + var rgb = parseColorWithCache(match); + if (!rgb) { + notParsed_1++; + return function () { + return value.substring(prefixIndex, matchEnd); + }; + } + return function (filter) { + return "" + .concat(value.substring(prefixIndex, matchIndex)) + .concat(modifyShadowColor(rgb, filter)) + .concat( + i === colorMatches_1.length - 1 + ? value.substring(matchEnd) + : "" + ); + }; + }); + return function (filter) { + var modified = modifiers_2 + .map(function (modify) { + return modify(filter); + }) + .join(""); + return { + matchesLength: colorMatches_1.length, + unparseableMatchesLength: notParsed_1, + result: modified + }; + }; + } catch (err) { + return null; + } + } + function getShadowModifier(value) { + var shadowModifier = getShadowModifierWithInfo(value); + if (!shadowModifier) { + return null; + } + return function (theme) { + return shadowModifier(theme).result; + }; + } + function getVariableModifier( + variablesStore, + prop, + value, + rule, + ignoredImgSelectors, + isCancelled + ) { + return variablesStore.getModifierForVariable({ + varName: prop, + sourceValue: value, + rule: rule, + ignoredImgSelectors: ignoredImgSelectors, + isCancelled: isCancelled + }); + } + function getVariableDependantModifier(variablesStore, prop, value) { + return variablesStore.getModifierForVarDependant(prop, value); + } + function cleanModificationCache() { + clearColorModificationCache(); + imageDetailsCache.clear(); + cleanImageProcessingCache(); + awaitingForImageLoading.clear(); + } + + var VAR_TYPE_BGCOLOR = 1 << 0; + var VAR_TYPE_TEXTCOLOR = 1 << 1; + var VAR_TYPE_BORDERCOLOR = 1 << 2; + var VAR_TYPE_BGIMG = 1 << 3; + var VariablesStore = (function () { + function VariablesStore() { + this.varTypes = new Map(); + this.rulesQueue = []; + this.definedVars = new Set(); + this.varRefs = new Map(); + this.unknownColorVars = new Set(); + this.unknownBgVars = new Set(); + this.undefinedVars = new Set(); + this.initialVarTypes = new Map(); + this.changedTypeVars = new Set(); + this.typeChangeSubscriptions = new Map(); + this.unstableVarValues = new Map(); + } + VariablesStore.prototype.clear = function () { + this.varTypes.clear(); + this.rulesQueue.splice(0); + this.definedVars.clear(); + this.varRefs.clear(); + this.unknownColorVars.clear(); + this.unknownBgVars.clear(); + this.undefinedVars.clear(); + this.initialVarTypes.clear(); + this.changedTypeVars.clear(); + this.typeChangeSubscriptions.clear(); + this.unstableVarValues.clear(); + }; + VariablesStore.prototype.isVarType = function (varName, typeNum) { + return ( + this.varTypes.has(varName) && + (this.varTypes.get(varName) & typeNum) > 0 + ); + }; + VariablesStore.prototype.addRulesForMatching = function (rules) { + this.rulesQueue.push(rules); + }; + VariablesStore.prototype.matchVariablesAndDependants = function () { + var _this = this; + this.changedTypeVars.clear(); + this.initialVarTypes = new Map(this.varTypes); + this.collectRootVariables(); + this.collectVariablesAndVarDep(this.rulesQueue); + this.rulesQueue.splice(0); + this.collectRootVarDependants(); + this.varRefs.forEach(function (refs, v) { + refs.forEach(function (r) { + if (_this.varTypes.has(v)) { + _this.resolveVariableType(r, _this.varTypes.get(v)); + } + }); + }); + this.unknownColorVars.forEach(function (v) { + if (_this.unknownBgVars.has(v)) { + _this.unknownColorVars.delete(v); + _this.unknownBgVars.delete(v); + _this.resolveVariableType(v, VAR_TYPE_BGCOLOR); + } else if ( + _this.isVarType( + v, + VAR_TYPE_BGCOLOR | + VAR_TYPE_TEXTCOLOR | + VAR_TYPE_BORDERCOLOR + ) + ) { + _this.unknownColorVars.delete(v); + } else { + _this.undefinedVars.add(v); + } + }); + this.unknownBgVars.forEach(function (v) { + var hasColor = + _this.findVarRef(v, function (ref) { + return ( + _this.unknownColorVars.has(ref) || + _this.isVarType( + ref, + VAR_TYPE_TEXTCOLOR | VAR_TYPE_BORDERCOLOR + ) + ); + }) != null; + if (hasColor) { + _this.itarateVarRefs(v, function (ref) { + _this.resolveVariableType(ref, VAR_TYPE_BGCOLOR); + }); + } else if ( + _this.isVarType(v, VAR_TYPE_BGCOLOR | VAR_TYPE_BGIMG) + ) { + _this.unknownBgVars.delete(v); + } else { + _this.undefinedVars.add(v); + } + }); + this.changedTypeVars.forEach(function (varName) { + if (_this.typeChangeSubscriptions.has(varName)) { + _this.typeChangeSubscriptions + .get(varName) + .forEach(function (callback) { + callback(); + }); + } + }); + this.changedTypeVars.clear(); + }; + VariablesStore.prototype.getModifierForVariable = function (options) { + var _this = this; + return function (theme) { + var varName = options.varName, + sourceValue = options.sourceValue, + rule = options.rule, + ignoredImgSelectors = options.ignoredImgSelectors, + isCancelled = options.isCancelled; + var getDeclarations = function () { + var declarations = []; + var addModifiedValue = function ( + typeNum, + varNameWrapper, + colorModifier + ) { + if (!_this.isVarType(varName, typeNum)) { + return; + } + var property = varNameWrapper(varName); + var modifiedValue; + if (isVarDependant(sourceValue)) { + if (isConstructedColorVar(sourceValue)) { + var value = insertVarValues( + sourceValue, + _this.unstableVarValues + ); + if (!value) { + value = + typeNum === VAR_TYPE_BGCOLOR + ? "#ffffff" + : "#000000"; + } + modifiedValue = colorModifier(value, theme); + } else { + modifiedValue = replaceCSSVariablesNames( + sourceValue, + function (v) { + return varNameWrapper(v); + }, + function (fallback) { + return colorModifier(fallback, theme); + } + ); + } + } else { + modifiedValue = colorModifier(sourceValue, theme); + } + declarations.push({ + property: property, + value: modifiedValue + }); + }; + addModifiedValue( + VAR_TYPE_BGCOLOR, + wrapBgColorVariableName, + tryModifyBgColor + ); + addModifiedValue( + VAR_TYPE_TEXTCOLOR, + wrapTextColorVariableName, + tryModifyTextColor + ); + addModifiedValue( + VAR_TYPE_BORDERCOLOR, + wrapBorderColorVariableName, + tryModifyBorderColor + ); + if (_this.isVarType(varName, VAR_TYPE_BGIMG)) { + var property = wrapBgImgVariableName(varName); + var modifiedValue = sourceValue; + if (isVarDependant(sourceValue)) { + modifiedValue = replaceCSSVariablesNames( + sourceValue, + function (v) { + return wrapBgColorVariableName(v); + }, + function (fallback) { + return tryModifyBgColor(fallback, theme); + } + ); + } + var bgModifier = getBgImageModifier( + modifiedValue, + rule, + ignoredImgSelectors, + isCancelled + ); + modifiedValue = + typeof bgModifier === "function" + ? bgModifier(theme) + : bgModifier; + declarations.push({ + property: property, + value: modifiedValue + }); + } + return declarations; + }; + var callbacks = new Set(); + var addListener = function (onTypeChange) { + var callback = function () { + var decs = getDeclarations(); + onTypeChange(decs); + }; + callbacks.add(callback); + _this.subscribeForVarTypeChange(varName, callback); + }; + var removeListeners = function () { + callbacks.forEach(function (callback) { + _this.unsubscribeFromVariableTypeChanges( + varName, + callback + ); + }); + }; + return { + declarations: getDeclarations(), + onTypeChange: { + addListener: addListener, + removeListeners: removeListeners + } + }; + }; + }; + VariablesStore.prototype.getModifierForVarDependant = function ( + property, + sourceValue + ) { + var _this = this; + if (sourceValue.match(/^\s*(rgb|hsl)a?\(/)) { + var isBg_1 = property.startsWith("background"); + var isText_1 = isTextColorProperty(property); + return function (theme) { + var value = insertVarValues( + sourceValue, + _this.unstableVarValues + ); + if (!value) { + value = isBg_1 ? "#ffffff" : "#000000"; + } + var modifier = isBg_1 + ? tryModifyBgColor + : isText_1 + ? tryModifyTextColor + : tryModifyBorderColor; + return modifier(value, theme); + }; + } + if (property === "background-color") { + return function (theme) { + return replaceCSSVariablesNames( + sourceValue, + function (v) { + return wrapBgColorVariableName(v); + }, + function (fallback) { + return tryModifyBgColor(fallback, theme); + } + ); + }; + } + if (isTextColorProperty(property)) { + return function (theme) { + return replaceCSSVariablesNames( + sourceValue, + function (v) { + return wrapTextColorVariableName(v); + }, + function (fallback) { + return tryModifyTextColor(fallback, theme); + } + ); + }; + } + if ( + property === "background" || + property === "background-image" || + property === "box-shadow" + ) { + return function (theme) { + var unknownVars = new Set(); + var modify = function () { + var variableReplaced = replaceCSSVariablesNames( + sourceValue, + function (v) { + if (_this.isVarType(v, VAR_TYPE_BGCOLOR)) { + return wrapBgColorVariableName(v); + } + if (_this.isVarType(v, VAR_TYPE_BGIMG)) { + return wrapBgImgVariableName(v); + } + unknownVars.add(v); + return v; + }, + function (fallback) { + return tryModifyBgColor(fallback, theme); + } + ); + if (property === "box-shadow") { + var shadowModifier = + getShadowModifierWithInfo(variableReplaced); + var modifiedShadow = shadowModifier(theme); + if ( + modifiedShadow.unparseableMatchesLength !== + modifiedShadow.matchesLength + ) { + return modifiedShadow.result; + } + } + return variableReplaced; + }; + var modified = modify(); + if (unknownVars.size > 0) { + return new Promise(function (resolve) { + var firstUnknownVar = unknownVars + .values() + .next().value; + var callback = function () { + _this.unsubscribeFromVariableTypeChanges( + firstUnknownVar, + callback + ); + var newValue = modify(); + resolve(newValue); + }; + _this.subscribeForVarTypeChange( + firstUnknownVar, + callback + ); + }); + } + return modified; + }; + } + if ( + property.startsWith("border") || + property.startsWith("outline") + ) { + return function (theme) { + return replaceCSSVariablesNames( + sourceValue, + function (v) { + return wrapBorderColorVariableName(v); + }, + function (fallback) { + return tryModifyBorderColor(fallback, theme); + } + ); + }; + } + return null; + }; + VariablesStore.prototype.subscribeForVarTypeChange = function ( + varName, + callback + ) { + if (!this.typeChangeSubscriptions.has(varName)) { + this.typeChangeSubscriptions.set(varName, new Set()); + } + var rootStore = this.typeChangeSubscriptions.get(varName); + if (!rootStore.has(callback)) { + rootStore.add(callback); + } + }; + VariablesStore.prototype.unsubscribeFromVariableTypeChanges = function ( + varName, + callback + ) { + if (this.typeChangeSubscriptions.has(varName)) { + this.typeChangeSubscriptions.get(varName).delete(callback); + } + }; + VariablesStore.prototype.collectVariablesAndVarDep = function ( + ruleList + ) { + var _this = this; + ruleList.forEach(function (rules) { + iterateCSSRules(rules, function (rule) { + rule.style && + iterateCSSDeclarations( + rule.style, + function (property, value) { + if (isVariable(property)) { + _this.inspectVariable(property, value); + } + if (isVarDependant(value)) { + _this.inspectVarDependant(property, value); + } + } + ); + }); + }); + }; + VariablesStore.prototype.collectRootVariables = function () { + var _this = this; + iterateCSSDeclarations( + document.documentElement.style, + function (property, value) { + if (isVariable(property)) { + _this.inspectVariable(property, value); + } + } + ); + }; + VariablesStore.prototype.inspectVariable = function (varName, value) { + this.unstableVarValues.set(varName, value); + if (isVarDependant(value) && isConstructedColorVar(value)) { + this.unknownColorVars.add(varName); + this.definedVars.add(varName); + } + if (this.definedVars.has(varName)) { + return; + } + this.definedVars.add(varName); + var color = parseColorWithCache(value); + if (color) { + this.unknownColorVars.add(varName); + } else if ( + value.includes("url(") || + value.includes("linear-gradient(") || + value.includes("radial-gradient(") + ) { + this.resolveVariableType(varName, VAR_TYPE_BGIMG); + } + }; + VariablesStore.prototype.resolveVariableType = function ( + varName, + typeNum + ) { + var initialType = this.initialVarTypes.get(varName) || 0; + var currentType = this.varTypes.get(varName) || 0; + var newType = currentType | typeNum; + this.varTypes.set(varName, newType); + if (newType !== initialType || this.undefinedVars.has(varName)) { + this.changedTypeVars.add(varName); + this.undefinedVars.delete(varName); + } + this.unknownColorVars.delete(varName); + this.unknownBgVars.delete(varName); + }; + VariablesStore.prototype.collectRootVarDependants = function () { + var _this = this; + iterateCSSDeclarations( + document.documentElement.style, + function (property, value) { + if (isVarDependant(value)) { + _this.inspectVarDependant(property, value); + } + } + ); + }; + VariablesStore.prototype.inspectVarDependant = function ( + property, + value + ) { + var _this = this; + if (isVariable(property)) { + this.iterateVarDeps(value, function (ref) { + if (!_this.varRefs.has(property)) { + _this.varRefs.set(property, new Set()); + } + _this.varRefs.get(property).add(ref); + }); + } else if ( + property === "background-color" || + property === "box-shadow" + ) { + this.iterateVarDeps(value, function (v) { + return _this.resolveVariableType(v, VAR_TYPE_BGCOLOR); + }); + } else if (isTextColorProperty(property)) { + this.iterateVarDeps(value, function (v) { + return _this.resolveVariableType(v, VAR_TYPE_TEXTCOLOR); + }); + } else if ( + property.startsWith("border") || + property.startsWith("outline") + ) { + this.iterateVarDeps(value, function (v) { + return _this.resolveVariableType(v, VAR_TYPE_BORDERCOLOR); + }); + } else if ( + property === "background" || + property === "background-image" + ) { + this.iterateVarDeps(value, function (v) { + if (_this.isVarType(v, VAR_TYPE_BGCOLOR | VAR_TYPE_BGIMG)) { + return; + } + var isBgColor = + _this.findVarRef(v, function (ref) { + return ( + _this.unknownColorVars.has(ref) || + _this.isVarType( + ref, + VAR_TYPE_TEXTCOLOR | VAR_TYPE_BORDERCOLOR + ) + ); + }) != null; + _this.itarateVarRefs(v, function (ref) { + if (isBgColor) { + _this.resolveVariableType(ref, VAR_TYPE_BGCOLOR); + } else { + _this.unknownBgVars.add(ref); + } + }); + }); + } + }; + VariablesStore.prototype.iterateVarDeps = function (value, iterator) { + var varDeps = new Set(); + iterateVarDependencies(value, function (v) { + return varDeps.add(v); + }); + varDeps.forEach(function (v) { + return iterator(v); + }); + }; + VariablesStore.prototype.findVarRef = function ( + varName, + iterator, + stack + ) { + var e_1, _a; + if (stack === void 0) { + stack = new Set(); + } + if (stack.has(varName)) { + return null; + } + stack.add(varName); + var result = iterator(varName); + if (result) { + return varName; + } + var refs = this.varRefs.get(varName); + if (!refs || refs.size === 0) { + return null; + } + try { + for ( + var refs_1 = __values(refs), refs_1_1 = refs_1.next(); + !refs_1_1.done; + refs_1_1 = refs_1.next() + ) { + var ref = refs_1_1.value; + var found = this.findVarRef(ref, iterator, stack); + if (found) { + return found; + } + } + } catch (e_1_1) { + e_1 = {error: e_1_1}; + } finally { + try { + if (refs_1_1 && !refs_1_1.done && (_a = refs_1.return)) + _a.call(refs_1); + } finally { + if (e_1) throw e_1.error; + } + } + return null; + }; + VariablesStore.prototype.itarateVarRefs = function (varName, iterator) { + this.findVarRef(varName, function (ref) { + iterator(ref); + return false; + }); + }; + VariablesStore.prototype.setOnRootVariableChange = function (callback) { + this.onRootVariableDefined = callback; + }; + VariablesStore.prototype.putRootVars = function (styleElement, theme) { + var e_2, _a; + var _this = this; + var sheet = styleElement.sheet; + if (sheet.cssRules.length > 0) { + sheet.deleteRule(0); + } + var declarations = new Map(); + iterateCSSDeclarations( + document.documentElement.style, + function (property, value) { + if (isVariable(property)) { + if (_this.isVarType(property, VAR_TYPE_BGCOLOR)) { + declarations.set( + wrapBgColorVariableName(property), + tryModifyBgColor(value, theme) + ); + } + if (_this.isVarType(property, VAR_TYPE_TEXTCOLOR)) { + declarations.set( + wrapTextColorVariableName(property), + tryModifyTextColor(value, theme) + ); + } + if (_this.isVarType(property, VAR_TYPE_BORDERCOLOR)) { + declarations.set( + wrapBorderColorVariableName(property), + tryModifyBorderColor(value, theme) + ); + } + _this.subscribeForVarTypeChange( + property, + _this.onRootVariableDefined + ); + } + } + ); + var cssLines = []; + cssLines.push(":root {"); + try { + for ( + var declarations_1 = __values(declarations), + declarations_1_1 = declarations_1.next(); + !declarations_1_1.done; + declarations_1_1 = declarations_1.next() + ) { + var _b = __read(declarations_1_1.value, 2), + property = _b[0], + value = _b[1]; + cssLines.push( + " ".concat(property, ": ").concat(value, ";") + ); + } + } catch (e_2_1) { + e_2 = {error: e_2_1}; + } finally { + try { + if ( + declarations_1_1 && + !declarations_1_1.done && + (_a = declarations_1.return) + ) + _a.call(declarations_1); + } finally { + if (e_2) throw e_2.error; + } + } + cssLines.push("}"); + var cssText = cssLines.join("\n"); + sheet.insertRule(cssText); + }; + return VariablesStore; + })(); + var variablesStore = new VariablesStore(); + function getVariableRange(input, searchStart) { + if (searchStart === void 0) { + searchStart = 0; + } + var start = input.indexOf("var(", searchStart); + if (start >= 0) { + var range = getParenthesesRange(input, start + 3); + if (range) { + return {start: start, end: range.end}; + } + return null; + } + } + function getVariablesMatches(input) { + var ranges = []; + var i = 0; + var range; + while ((range = getVariableRange(input, i))) { + var start = range.start, + end = range.end; + ranges.push({ + start: start, + end: end, + value: input.substring(start, end) + }); + i = range.end + 1; + } + return ranges; + } + function replaceVariablesMatches(input, replacer) { + var matches = getVariablesMatches(input); + var matchesCount = matches.length; + if (matchesCount === 0) { + return input; + } + var inputLength = input.length; + var replacements = matches.map(function (m) { + return replacer(m.value); + }); + var parts = []; + parts.push(input.substring(0, matches[0].start)); + for (var i = 0; i < matchesCount; i++) { + parts.push(replacements[i]); + var start = matches[i].end; + var end = i < matchesCount - 1 ? matches[i + 1].start : inputLength; + parts.push(input.substring(start, end)); + } + return parts.join(""); + } + function getVariableNameAndFallback(match) { + var commaIndex = match.indexOf(","); + var name; + var fallback; + if (commaIndex >= 0) { + name = match.substring(4, commaIndex).trim(); + fallback = match.substring(commaIndex + 1, match.length - 1).trim(); + } else { + name = match.substring(4, match.length - 1).trim(); + fallback = ""; + } + return {name: name, fallback: fallback}; + } + function replaceCSSVariablesNames(value, nameReplacer, fallbackReplacer) { + var matchReplacer = function (match) { + var _a = getVariableNameAndFallback(match), + name = _a.name, + fallback = _a.fallback; + var newName = nameReplacer(name); + if (!fallback) { + return "var(".concat(newName, ")"); + } + var newFallback; + if (isVarDependant(fallback)) { + newFallback = replaceCSSVariablesNames( + fallback, + nameReplacer, + fallbackReplacer + ); + } else if (fallbackReplacer) { + newFallback = fallbackReplacer(fallback); + } else { + newFallback = fallback; + } + return "var(".concat(newName, ", ").concat(newFallback, ")"); + }; + return replaceVariablesMatches(value, matchReplacer); + } + function iterateVarDependencies(value, iterator) { + replaceCSSVariablesNames(value, function (varName) { + iterator(varName); + return varName; + }); + } + function wrapBgColorVariableName(name) { + return "--darkreader-bg".concat(name); + } + function wrapTextColorVariableName(name) { + return "--darkreader-text".concat(name); + } + function wrapBorderColorVariableName(name) { + return "--darkreader-border".concat(name); + } + function wrapBgImgVariableName(name) { + return "--darkreader-bgimg".concat(name); + } + function isVariable(property) { + return property.startsWith("--"); + } + function isVarDependant(value) { + return value.includes("var("); + } + function isConstructedColorVar(value) { + return value.match(/^\s*(rgb|hsl)a?\(/); + } + function isTextColorProperty(property) { + return ( + property === "color" || + property === "caret-color" || + property === "-webkit-text-fill-color" + ); + } + var rawValueRegex = /^\d{1,3}, ?\d{1,3}, ?\d{1,3}$/; + function parseRawValue(color) { + if (rawValueRegex.test(color)) { + var splitted = color.split(","); + var resultInRGB_1 = "rgb("; + splitted.forEach(function (number) { + resultInRGB_1 += "".concat(number.trim(), ", "); + }); + resultInRGB_1 = resultInRGB_1.substring( + 0, + resultInRGB_1.length - 2 + ); + resultInRGB_1 += ")"; + return {isRaw: true, color: resultInRGB_1}; + } + return {isRaw: false, color: color}; + } + function handleRawValue(color, theme, modifyFunction) { + var _a = parseRawValue(color), + isRaw = _a.isRaw, + newColor = _a.color; + var rgb = parseColorWithCache(newColor); + if (rgb) { + var outputColor = modifyFunction(rgb, theme); + if (isRaw) { + var outputInRGB = parseColorWithCache(outputColor); + return outputInRGB + ? "" + .concat(outputInRGB.r, ", ") + .concat(outputInRGB.g, ", ") + .concat(outputInRGB.b) + : outputColor; + } + return outputColor; + } + return newColor; + } + function tryModifyBgColor(color, theme) { + return handleRawValue(color, theme, modifyBackgroundColor); + } + function tryModifyTextColor(color, theme) { + return handleRawValue(color, theme, modifyForegroundColor); + } + function tryModifyBorderColor(color, theme) { + return handleRawValue(color, theme, modifyBorderColor); + } + function insertVarValues(source, varValues, stack) { + if (stack === void 0) { + stack = new Set(); + } + var containsUnresolvedVar = false; + var matchReplacer = function (match) { + var _a = getVariableNameAndFallback(match), + name = _a.name, + fallback = _a.fallback; + if (stack.has(name)) { + containsUnresolvedVar = true; + return null; + } + stack.add(name); + var varValue = varValues.get(name) || fallback; + var inserted = null; + if (varValue) { + if (isVarDependant(varValue)) { + inserted = insertVarValues(varValue, varValues, stack); + } else { + inserted = varValue; + } + } + if (!inserted) { + containsUnresolvedVar = true; + return null; + } + return inserted; + }; + var replaced = replaceVariablesMatches(source, matchReplacer); + if (containsUnresolvedVar) { + return null; + } + return replaced; + } + + var overrides = { + "background-color": { + customProp: "--darkreader-inline-bgcolor", + cssProp: "background-color", + dataAttr: "data-darkreader-inline-bgcolor" + }, + "background-image": { + customProp: "--darkreader-inline-bgimage", + cssProp: "background-image", + dataAttr: "data-darkreader-inline-bgimage" + }, + "border-color": { + customProp: "--darkreader-inline-border", + cssProp: "border-color", + dataAttr: "data-darkreader-inline-border" + }, + "border-bottom-color": { + customProp: "--darkreader-inline-border-bottom", + cssProp: "border-bottom-color", + dataAttr: "data-darkreader-inline-border-bottom" + }, + "border-left-color": { + customProp: "--darkreader-inline-border-left", + cssProp: "border-left-color", + dataAttr: "data-darkreader-inline-border-left" + }, + "border-right-color": { + customProp: "--darkreader-inline-border-right", + cssProp: "border-right-color", + dataAttr: "data-darkreader-inline-border-right" + }, + "border-top-color": { + customProp: "--darkreader-inline-border-top", + cssProp: "border-top-color", + dataAttr: "data-darkreader-inline-border-top" + }, + "box-shadow": { + customProp: "--darkreader-inline-boxshadow", + cssProp: "box-shadow", + dataAttr: "data-darkreader-inline-boxshadow" + }, + "color": { + customProp: "--darkreader-inline-color", + cssProp: "color", + dataAttr: "data-darkreader-inline-color" + }, + "fill": { + customProp: "--darkreader-inline-fill", + cssProp: "fill", + dataAttr: "data-darkreader-inline-fill" + }, + "stroke": { + customProp: "--darkreader-inline-stroke", + cssProp: "stroke", + dataAttr: "data-darkreader-inline-stroke" + }, + "outline-color": { + customProp: "--darkreader-inline-outline", + cssProp: "outline-color", + dataAttr: "data-darkreader-inline-outline" + }, + "stop-color": { + customProp: "--darkreader-inline-stopcolor", + cssProp: "stop-color", + dataAttr: "data-darkreader-inline-stopcolor" + } + }; + var overridesList = Object.values(overrides); + var normalizedPropList = {}; + overridesList.forEach(function (_a) { + var cssProp = _a.cssProp, + customProp = _a.customProp; + return (normalizedPropList[customProp] = cssProp); + }); + var INLINE_STYLE_ATTRS = [ + "style", + "fill", + "stop-color", + "stroke", + "bgcolor", + "color" + ]; + var INLINE_STYLE_SELECTOR = INLINE_STYLE_ATTRS.map(function (attr) { + return "[".concat(attr, "]"); + }).join(", "); + function getInlineOverrideStyle() { + return overridesList + .map(function (_a) { + var dataAttr = _a.dataAttr, + customProp = _a.customProp, + cssProp = _a.cssProp; + return [ + "[".concat(dataAttr, "] {"), + " " + .concat(cssProp, ": var(") + .concat(customProp, ") !important;"), + "}" + ].join("\n"); + }) + .join("\n"); + } + function getInlineStyleElements(root) { + var results = []; + if (root instanceof Element && root.matches(INLINE_STYLE_SELECTOR)) { + results.push(root); + } + if ( + root instanceof Element || + (isShadowDomSupported && root instanceof ShadowRoot) || + root instanceof Document + ) { + push(results, root.querySelectorAll(INLINE_STYLE_SELECTOR)); + } + return results; + } + var treeObservers = new Map(); + var attrObservers = new Map(); + function watchForInlineStyles(elementStyleDidChange, shadowRootDiscovered) { + deepWatchForInlineStyles( + document, + elementStyleDidChange, + shadowRootDiscovered + ); + iterateShadowHosts(document.documentElement, function (host) { + deepWatchForInlineStyles( + host.shadowRoot, + elementStyleDidChange, + shadowRootDiscovered + ); + }); + } + function deepWatchForInlineStyles( + root, + elementStyleDidChange, + shadowRootDiscovered + ) { + if (treeObservers.has(root)) { + treeObservers.get(root).disconnect(); + attrObservers.get(root).disconnect(); + } + var discoveredNodes = new WeakSet(); + function discoverNodes(node) { + getInlineStyleElements(node).forEach(function (el) { + if (discoveredNodes.has(el)) { + return; + } + discoveredNodes.add(el); + elementStyleDidChange(el); + }); + iterateShadowHosts(node, function (n) { + if (discoveredNodes.has(node)) { + return; + } + discoveredNodes.add(node); + shadowRootDiscovered(n.shadowRoot); + deepWatchForInlineStyles( + n.shadowRoot, + elementStyleDidChange, + shadowRootDiscovered + ); + }); + } + var treeObserver = createOptimizedTreeObserver(root, { + onMinorMutations: function (_a) { + var additions = _a.additions; + additions.forEach(function (added) { + return discoverNodes(added); + }); + }, + onHugeMutations: function () { + discoverNodes(root); + } + }); + treeObservers.set(root, treeObserver); + var attemptCount = 0; + var start = null; + var ATTEMPTS_INTERVAL = getDuration({seconds: 10}); + var RETRY_TIMEOUT = getDuration({seconds: 2}); + var MAX_ATTEMPTS_COUNT = 50; + var cache = []; + var timeoutId = null; + var handleAttributeMutations = throttle(function (mutations) { + mutations.forEach(function (m) { + if (INLINE_STYLE_ATTRS.includes(m.attributeName)) { + elementStyleDidChange(m.target); + } + }); + }); + var attrObserver = new MutationObserver(function (mutations) { + if (timeoutId) { + cache.push.apply( + cache, + __spreadArray([], __read(mutations), false) + ); + return; + } + attemptCount++; + var now = Date.now(); + if (start == null) { + start = now; + } else if (attemptCount >= MAX_ATTEMPTS_COUNT) { + if (now - start < ATTEMPTS_INTERVAL) { + timeoutId = setTimeout(function () { + start = null; + attemptCount = 0; + timeoutId = null; + var attributeCache = cache; + cache = []; + handleAttributeMutations(attributeCache); + }, RETRY_TIMEOUT); + cache.push.apply( + cache, + __spreadArray([], __read(mutations), false) + ); + return; + } + start = now; + attemptCount = 1; + } + handleAttributeMutations(mutations); + }); + attrObserver.observe(root, { + attributes: true, + attributeFilter: INLINE_STYLE_ATTRS.concat( + overridesList.map(function (_a) { + var dataAttr = _a.dataAttr; + return dataAttr; + }) + ), + subtree: true + }); + attrObservers.set(root, attrObserver); + } + function stopWatchingForInlineStyles() { + treeObservers.forEach(function (o) { + return o.disconnect(); + }); + attrObservers.forEach(function (o) { + return o.disconnect(); + }); + treeObservers.clear(); + attrObservers.clear(); + } + var inlineStyleCache = new WeakMap(); + var filterProps = ["brightness", "contrast", "grayscale", "sepia", "mode"]; + function getInlineStyleCacheKey(el, theme) { + return INLINE_STYLE_ATTRS.map(function (attr) { + return "".concat(attr, '="').concat(el.getAttribute(attr), '"'); + }) + .concat( + filterProps.map(function (prop) { + return "".concat(prop, '="').concat(theme[prop], '"'); + }) + ) + .join(" "); + } + function shouldIgnoreInlineStyle(element, selectors) { + for (var i = 0, len = selectors.length; i < len; i++) { + var ingnoredSelector = selectors[i]; + if (element.matches(ingnoredSelector)) { + return true; + } + } + return false; + } + function overrideInlineStyle( + element, + theme, + ignoreInlineSelectors, + ignoreImageSelectors + ) { + var cacheKey = getInlineStyleCacheKey(element, theme); + if (cacheKey === inlineStyleCache.get(element)) { + return; + } + var unsetProps = new Set(Object.keys(overrides)); + function setCustomProp(targetCSSProp, modifierCSSProp, cssVal) { + var isPropertyVariable = targetCSSProp.startsWith("--"); + var _a = isPropertyVariable ? {} : overrides[targetCSSProp], + customProp = _a.customProp, + dataAttr = _a.dataAttr; + var mod = getModifiableCSSDeclaration( + modifierCSSProp, + cssVal, + {style: element.style}, + variablesStore, + ignoreImageSelectors, + null + ); + if (!mod) { + return; + } + var value = mod.value; + if (typeof value === "function") { + value = value(theme); + } + if (isPropertyVariable && typeof value === "object") { + var typedValue = value; + typedValue.declarations.forEach(function (_a) { + var property = _a.property, + value = _a.value; + !(value instanceof Promise) && + element.style.setProperty(property, value); + }); + } else { + element.style.setProperty(customProp, value); + if (!element.hasAttribute(dataAttr)) { + element.setAttribute(dataAttr, ""); + } + unsetProps.delete(targetCSSProp); + } + } + if (ignoreInlineSelectors.length > 0) { + if (shouldIgnoreInlineStyle(element, ignoreInlineSelectors)) { + unsetProps.forEach(function (cssProp) { + element.removeAttribute(overrides[cssProp].dataAttr); + }); + return; + } + } + if (element.hasAttribute("bgcolor")) { + var value = element.getAttribute("bgcolor"); + if ( + value.match(/^[0-9a-f]{3}$/i) || + value.match(/^[0-9a-f]{6}$/i) + ) { + value = "#".concat(value); + } + setCustomProp("background-color", "background-color", value); + } + if (element.hasAttribute("color") && element.rel !== "mask-icon") { + var value = element.getAttribute("color"); + if ( + value.match(/^[0-9a-f]{3}$/i) || + value.match(/^[0-9a-f]{6}$/i) + ) { + value = "#".concat(value); + } + setCustomProp("color", "color", value); + } + if (element instanceof SVGElement) { + if (element.hasAttribute("fill")) { + var SMALL_SVG_LIMIT_1 = 32; + var value_1 = element.getAttribute("fill"); + if (value_1 !== "none") { + if (!(element instanceof SVGTextElement)) { + var handleSVGElement = function () { + var _a = element.getBoundingClientRect(), + width = _a.width, + height = _a.height; + var isBg = + width > SMALL_SVG_LIMIT_1 || + height > SMALL_SVG_LIMIT_1; + setCustomProp( + "fill", + isBg ? "background-color" : "color", + value_1 + ); + }; + if (isReadyStateComplete()) { + handleSVGElement(); + } else { + addReadyStateCompleteListener(handleSVGElement); + } + } else { + setCustomProp("fill", "color", value_1); + } + } + } + if (element.hasAttribute("stop-color")) { + setCustomProp( + "stop-color", + "background-color", + element.getAttribute("stop-color") + ); + } + } + if (element.hasAttribute("stroke")) { + var value = element.getAttribute("stroke"); + setCustomProp( + "stroke", + element instanceof SVGLineElement || + element instanceof SVGTextElement + ? "border-color" + : "color", + value + ); + } + element.style && + iterateCSSDeclarations(element.style, function (property, value) { + if (property === "background-image" && value.includes("url")) { + return; + } + if ( + overrides.hasOwnProperty(property) || + (property.startsWith("--") && !normalizedPropList[property]) + ) { + setCustomProp(property, property, value); + } else { + var overridenProp = normalizedPropList[property]; + if ( + overridenProp && + !element.style.getPropertyValue(overridenProp) && + !element.hasAttribute(overridenProp) + ) { + if ( + overridenProp === "background-color" && + element.hasAttribute("bgcolor") + ) { + return; + } + element.style.setProperty(property, ""); + } + } + }); + if ( + element.style && + element instanceof SVGTextElement && + element.style.fill + ) { + setCustomProp( + "fill", + "color", + element.style.getPropertyValue("fill") + ); + } + forEach(unsetProps, function (cssProp) { + element.removeAttribute(overrides[cssProp].dataAttr); + }); + inlineStyleCache.set(element, getInlineStyleCacheKey(element, theme)); + } + + var metaThemeColorName = "theme-color"; + var metaThemeColorSelector = 'meta[name="'.concat(metaThemeColorName, '"]'); + var srcMetaThemeColor = null; + var observer = null; + function changeMetaThemeColor(meta, theme) { + srcMetaThemeColor = srcMetaThemeColor || meta.content; + var color = parseColorWithCache(srcMetaThemeColor); + if (!color) { + return; + } + meta.content = modifyBackgroundColor(color, theme); + } + function changeMetaThemeColorWhenAvailable(theme) { + var meta = document.querySelector(metaThemeColorSelector); + if (meta) { + changeMetaThemeColor(meta, theme); + } else { + if (observer) { + observer.disconnect(); + } + observer = new MutationObserver(function (mutations) { + loop: for (var i = 0; i < mutations.length; i++) { + var addedNodes = mutations[i].addedNodes; + for (var j = 0; j < addedNodes.length; j++) { + var node = addedNodes[j]; + if ( + node instanceof HTMLMetaElement && + node.name === metaThemeColorName + ) { + observer.disconnect(); + observer = null; + changeMetaThemeColor(node, theme); + break loop; + } + } + } + }); + observer.observe(document.head, {childList: true}); + } + } + function restoreMetaThemeColor() { + if (observer) { + observer.disconnect(); + observer = null; + } + var meta = document.querySelector(metaThemeColorSelector); + if (meta && srcMetaThemeColor) { + meta.content = srcMetaThemeColor; + } + } + + var themeCacheKeys = [ + "mode", + "brightness", + "contrast", + "grayscale", + "sepia", + "darkSchemeBackgroundColor", + "darkSchemeTextColor", + "lightSchemeBackgroundColor", + "lightSchemeTextColor" + ]; + function getThemeKey(theme) { + var resultKey = ""; + themeCacheKeys.forEach(function (key) { + resultKey += "".concat(key, ":").concat(theme[key], ";"); + }); + return resultKey; + } + var asyncQueue = createAsyncTasksQueue(); + function createStyleSheetModifier() { + var renderId = 0; + var rulesTextCache = new Set(); + var rulesModCache = new Map(); + var varTypeChangeCleaners = new Set(); + var prevFilterKey = null; + var hasNonLoadedLink = false; + var wasRebuilt = false; + function shouldRebuildStyle() { + return hasNonLoadedLink && !wasRebuilt; + } + function modifySheet(options) { + var rules = options.sourceCSSRules; + var theme = options.theme, + ignoreImageAnalysis = options.ignoreImageAnalysis, + force = options.force, + prepareSheet = options.prepareSheet, + isAsyncCancelled = options.isAsyncCancelled; + var rulesChanged = rulesModCache.size === 0; + var notFoundCacheKeys = new Set(rulesModCache.keys()); + var themeKey = getThemeKey(theme); + var themeChanged = themeKey !== prevFilterKey; + if (hasNonLoadedLink) { + wasRebuilt = true; + } + var modRules = []; + iterateCSSRules( + rules, + function (rule) { + var cssText = rule.cssText; + var textDiffersFromPrev = false; + notFoundCacheKeys.delete(cssText); + if (rule.parentRule instanceof CSSMediaRule) { + cssText += ";".concat(rule.parentRule.media.mediaText); + } + if (!rulesTextCache.has(cssText)) { + rulesTextCache.add(cssText); + textDiffersFromPrev = true; + } + if (textDiffersFromPrev) { + rulesChanged = true; + } else { + modRules.push(rulesModCache.get(cssText)); + return; + } + var modDecs = []; + rule.style && + iterateCSSDeclarations( + rule.style, + function (property, value) { + var mod = getModifiableCSSDeclaration( + property, + value, + rule, + variablesStore, + ignoreImageAnalysis, + isAsyncCancelled + ); + if (mod) { + modDecs.push(mod); + } + } + ); + var modRule = null; + if (modDecs.length > 0) { + var parentRule = rule.parentRule; + modRule = { + selector: rule.selectorText, + declarations: modDecs, + parentRule: parentRule + }; + modRules.push(modRule); + } + rulesModCache.set(cssText, modRule); + }, + function () { + hasNonLoadedLink = true; + } + ); + notFoundCacheKeys.forEach(function (key) { + rulesTextCache.delete(key); + rulesModCache.delete(key); + }); + prevFilterKey = themeKey; + if (!force && !rulesChanged && !themeChanged) { + return; + } + renderId++; + function setRule(target, index, rule) { + var selector = rule.selector, + declarations = rule.declarations; + var getDeclarationText = function (dec) { + var property = dec.property, + value = dec.value, + important = dec.important, + sourceValue = dec.sourceValue; + return "" + .concat(property, ": ") + .concat(value == null ? sourceValue : value) + .concat(important ? " !important" : "", ";"); + }; + var cssRulesText = ""; + declarations.forEach(function (declarations) { + cssRulesText += "".concat( + getDeclarationText(declarations), + " " + ); + }); + var ruleText = "" + .concat(selector, " { ") + .concat(cssRulesText, " }"); + target.insertRule(ruleText, index); + } + var asyncDeclarations = new Map(); + var varDeclarations = new Map(); + var asyncDeclarationCounter = 0; + var varDeclarationCounter = 0; + var rootReadyGroup = {rule: null, rules: [], isGroup: true}; + var groupRefs = new WeakMap(); + function getGroup(rule) { + if (rule == null) { + return rootReadyGroup; + } + if (groupRefs.has(rule)) { + return groupRefs.get(rule); + } + var group = {rule: rule, rules: [], isGroup: true}; + groupRefs.set(rule, group); + var parentGroup = getGroup(rule.parentRule); + parentGroup.rules.push(group); + return group; + } + varTypeChangeCleaners.forEach(function (clear) { + return clear(); + }); + varTypeChangeCleaners.clear(); + modRules + .filter(function (r) { + return r; + }) + .forEach(function (_a) { + var selector = _a.selector, + declarations = _a.declarations, + parentRule = _a.parentRule; + var group = getGroup(parentRule); + var readyStyleRule = { + selector: selector, + declarations: [], + isGroup: false + }; + var readyDeclarations = readyStyleRule.declarations; + group.rules.push(readyStyleRule); + function handleAsyncDeclaration( + property, + modified, + important, + sourceValue + ) { + var asyncKey = ++asyncDeclarationCounter; + var asyncDeclaration = { + property: property, + value: null, + important: important, + asyncKey: asyncKey, + sourceValue: sourceValue + }; + readyDeclarations.push(asyncDeclaration); + var currentRenderId = renderId; + modified.then(function (asyncValue) { + if ( + !asyncValue || + isAsyncCancelled() || + currentRenderId !== renderId + ) { + return; + } + asyncDeclaration.value = asyncValue; + asyncQueue.add(function () { + if ( + isAsyncCancelled() || + currentRenderId !== renderId + ) { + return; + } + rebuildAsyncRule(asyncKey); + }); + }); + } + function handleVarDeclarations( + property, + modified, + important, + sourceValue + ) { + var _a = modified, + varDecs = _a.declarations, + onTypeChange = _a.onTypeChange; + var varKey = ++varDeclarationCounter; + var currentRenderId = renderId; + var initialIndex = readyDeclarations.length; + var oldDecs = []; + if (varDecs.length === 0) { + var tempDec = { + property: property, + value: sourceValue, + important: important, + sourceValue: sourceValue, + varKey: varKey + }; + readyDeclarations.push(tempDec); + oldDecs = [tempDec]; + } + varDecs.forEach(function (mod) { + if (mod.value instanceof Promise) { + handleAsyncDeclaration( + mod.property, + mod.value, + important, + sourceValue + ); + } else { + var readyDec = { + property: mod.property, + value: mod.value, + important: important, + sourceValue: sourceValue, + varKey: varKey + }; + readyDeclarations.push(readyDec); + oldDecs.push(readyDec); + } + }); + onTypeChange.addListener(function (newDecs) { + if ( + isAsyncCancelled() || + currentRenderId !== renderId + ) { + return; + } + var readyVarDecs = newDecs.map(function (mod) { + return { + property: mod.property, + value: mod.value, + important: important, + sourceValue: sourceValue, + varKey: varKey + }; + }); + var index = readyDeclarations.indexOf( + oldDecs[0], + initialIndex + ); + readyDeclarations.splice.apply( + readyDeclarations, + __spreadArray( + [index, oldDecs.length], + __read(readyVarDecs), + false + ) + ); + oldDecs = readyVarDecs; + rebuildVarRule(varKey); + }); + varTypeChangeCleaners.add(function () { + return onTypeChange.removeListeners(); + }); + } + declarations.forEach(function (_a) { + var property = _a.property, + value = _a.value, + important = _a.important, + sourceValue = _a.sourceValue; + if (typeof value === "function") { + var modified = value(theme); + if (modified instanceof Promise) { + handleAsyncDeclaration( + property, + modified, + important, + sourceValue + ); + } else if (property.startsWith("--")) { + handleVarDeclarations( + property, + modified, + important, + sourceValue + ); + } else { + readyDeclarations.push({ + property: property, + value: modified, + important: important, + sourceValue: sourceValue + }); + } + } else { + readyDeclarations.push({ + property: property, + value: value, + important: important, + sourceValue: sourceValue + }); + } + }); + }); + var sheet = prepareSheet(); + function buildStyleSheet() { + function createTarget(group, parent) { + var rule = group.rule; + if (rule instanceof CSSMediaRule) { + var media = rule.media; + var index = parent.cssRules.length; + parent.insertRule( + "@media ".concat(media.mediaText, " {}"), + index + ); + return parent.cssRules[index]; + } + return parent; + } + function iterateReadyRules(group, target, styleIterator) { + group.rules.forEach(function (r) { + if (r.isGroup) { + var t = createTarget(r, target); + iterateReadyRules(r, t, styleIterator); + } else { + styleIterator(r, target); + } + }); + } + iterateReadyRules( + rootReadyGroup, + sheet, + function (rule, target) { + var index = target.cssRules.length; + rule.declarations.forEach(function (_a) { + var asyncKey = _a.asyncKey, + varKey = _a.varKey; + if (asyncKey != null) { + asyncDeclarations.set(asyncKey, { + rule: rule, + target: target, + index: index + }); + } + if (varKey != null) { + varDeclarations.set(varKey, { + rule: rule, + target: target, + index: index + }); + } + }); + setRule(target, index, rule); + } + ); + } + function rebuildAsyncRule(key) { + var _a = asyncDeclarations.get(key), + rule = _a.rule, + target = _a.target, + index = _a.index; + target.deleteRule(index); + setRule(target, index, rule); + asyncDeclarations.delete(key); + } + function rebuildVarRule(key) { + var _a = varDeclarations.get(key), + rule = _a.rule, + target = _a.target, + index = _a.index; + target.deleteRule(index); + setRule(target, index, rule); + } + buildStyleSheet(); + } + return { + modifySheet: modifySheet, + shouldRebuildStyle: shouldRebuildStyle + }; + } + + var STYLE_SELECTOR = 'style, link[rel*="stylesheet" i]:not([disabled])'; + function isFontsGoogleApiStyle(element) { + if (!element.href) { + return false; + } + try { + var elementURL = new URL(element.href); + return elementURL.hostname === "fonts.googleapis.com"; + } catch (err) { + logInfo("Couldn't construct ".concat(element.href, " as URL")); + return false; + } + } + function shouldManageStyle(element) { + return ( + (element instanceof HTMLStyleElement || + element instanceof SVGStyleElement || + (element instanceof HTMLLinkElement && + element.rel && + element.rel.toLowerCase().includes("stylesheet") && + element.href && + !element.disabled && + (isFirefox + ? !element.href.startsWith("moz-extension://") + : true) && + !isFontsGoogleApiStyle(element))) && + !element.classList.contains("darkreader") && + element.media.toLowerCase() !== "print" && + !element.classList.contains("stylus") + ); + } + function getManageableStyles(node, results, deep) { + if (results === void 0) { + results = []; + } + if (deep === void 0) { + deep = true; + } + if (shouldManageStyle(node)) { + results.push(node); + } else if ( + node instanceof Element || + (isShadowDomSupported && node instanceof ShadowRoot) || + node === document + ) { + forEach(node.querySelectorAll(STYLE_SELECTOR), function (style) { + return getManageableStyles(style, results, false); + }); + if (deep) { + iterateShadowHosts(node, function (host) { + return getManageableStyles(host.shadowRoot, results, false); + }); + } + } + return results; + } + var syncStyleSet = new WeakSet(); + var corsStyleSet = new WeakSet(); + var canOptimizeUsingProxy$1 = false; + document.addEventListener( + "__darkreader__inlineScriptsAllowed", + function () { + canOptimizeUsingProxy$1 = true; + } + ); + var loadingLinkCounter = 0; + var rejectorsForLoadingLinks = new Map(); + function cleanLoadingLinks() { + rejectorsForLoadingLinks.clear(); + } + function manageStyle(element, _a) { + var update = _a.update, + loadingStart = _a.loadingStart, + loadingEnd = _a.loadingEnd; + var prevStyles = []; + var next = element; + while ( + (next = next.nextElementSibling) && + next.matches(".darkreader") + ) { + prevStyles.push(next); + } + var corsCopy = + prevStyles.find(function (el) { + return el.matches(".darkreader--cors") && !corsStyleSet.has(el); + }) || null; + var syncStyle = + prevStyles.find(function (el) { + return el.matches(".darkreader--sync") && !syncStyleSet.has(el); + }) || null; + var corsCopyPositionWatcher = null; + var syncStylePositionWatcher = null; + var cancelAsyncOperations = false; + var isOverrideEmpty = true; + var sheetModifier = createStyleSheetModifier(); + var observer = new MutationObserver(function () { + update(); + }); + var observerOptions = { + attributes: true, + childList: true, + subtree: true, + characterData: true + }; + function containsCSSImport() { + return ( + element instanceof HTMLStyleElement && + element.textContent.trim().match(cssImportRegex) + ); + } + function hasImports(cssRules, checkCrossOrigin) { + var result = false; + if (cssRules) { + var rule = void 0; + cssRulesLoop: for ( + var i = 0, len = cssRules.length; + i < len; + i++ + ) { + rule = cssRules[i]; + if (rule.href) { + if (checkCrossOrigin) { + if ( + rule.href.startsWith("http") && + !rule.href.startsWith(location.origin) + ) { + result = true; + break cssRulesLoop; + } + } else { + result = true; + break cssRulesLoop; + } + } + } + } + return result; + } + function getRulesSync() { + if (corsCopy) { + return corsCopy.sheet.cssRules; + } + if (containsCSSImport()) { + return null; + } + var cssRules = safeGetSheetRules(); + if ( + element instanceof HTMLLinkElement && + !isRelativeHrefOnAbsolutePath(element.href) && + hasImports(cssRules, false) + ) { + return null; + } + if (hasImports(cssRules, true)) { + return null; + } + return cssRules; + } + function insertStyle() { + if (corsCopy) { + if (element.nextSibling !== corsCopy) { + element.parentNode.insertBefore( + corsCopy, + element.nextSibling + ); + } + if (corsCopy.nextSibling !== syncStyle) { + element.parentNode.insertBefore( + syncStyle, + corsCopy.nextSibling + ); + } + } else if (element.nextSibling !== syncStyle) { + element.parentNode.insertBefore(syncStyle, element.nextSibling); + } + } + function createSyncStyle() { + syncStyle = + element instanceof SVGStyleElement + ? document.createElementNS( + "http://www.w3.org/2000/svg", + "style" + ) + : document.createElement("style"); + syncStyle.classList.add("darkreader"); + syncStyle.classList.add("darkreader--sync"); + syncStyle.media = "screen"; + if (element.title) { + syncStyle.title = element.title; + } + syncStyleSet.add(syncStyle); + } + var isLoadingRules = false; + var wasLoadingError = false; + var loadingLinkId = ++loadingLinkCounter; + function getRulesAsync() { + return __awaiter(this, void 0, void 0, function () { + var cssText, + cssBasePath, + _a, + cssRules, + accessError, + fullCSSText; + var _b; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + if (!(element instanceof HTMLLinkElement)) + return [3, 7]; + (_a = __read(getRulesOrError(), 2)), + (cssRules = _a[0]), + (accessError = _a[1]); + if ( + !( + (!cssRules && !accessError && !isSafari) || + (isSafari && !element.sheet) || + isStillLoadingError(accessError) + ) + ) + return [3, 5]; + _c.label = 1; + case 1: + _c.trys.push([1, 3, , 4]); + return [4, linkLoading(element, loadingLinkId)]; + case 2: + _c.sent(); + return [3, 4]; + case 3: + _c.sent(); + wasLoadingError = true; + return [3, 4]; + case 4: + if (cancelAsyncOperations) { + return [2, null]; + } + (_b = __read(getRulesOrError(), 2)), + (cssRules = _b[0]), + (accessError = _b[1]); + _c.label = 5; + case 5: + if (cssRules) { + if (!hasImports(cssRules, false)) { + return [2, cssRules]; + } + } + return [4, loadText(element.href)]; + case 6: + cssText = _c.sent(); + cssBasePath = getCSSBaseBath(element.href); + if (cancelAsyncOperations) { + return [2, null]; + } + return [3, 8]; + case 7: + if (containsCSSImport()) { + cssText = element.textContent.trim(); + cssBasePath = getCSSBaseBath(location.href); + } else { + return [2, null]; + } + _c.label = 8; + case 8: + if (!cssText) return [3, 13]; + _c.label = 9; + case 9: + _c.trys.push([9, 11, , 12]); + return [4, replaceCSSImports(cssText, cssBasePath)]; + case 10: + fullCSSText = _c.sent(); + corsCopy = createCORSCopy(element, fullCSSText); + return [3, 12]; + case 11: + _c.sent(); + return [3, 12]; + case 12: + if (corsCopy) { + corsCopyPositionWatcher = watchForNodePosition( + corsCopy, + "prev-sibling" + ); + return [2, corsCopy.sheet.cssRules]; + } + _c.label = 13; + case 13: + return [2, null]; + } + }); + }); + } + function details(options) { + var rules = getRulesSync(); + if (!rules) { + if (options.secondRound) { + return null; + } + if (isLoadingRules || wasLoadingError) { + return null; + } + isLoadingRules = true; + loadingStart(); + getRulesAsync() + .then(function (results) { + isLoadingRules = false; + loadingEnd(); + if (results) { + update(); + } + }) + .catch(function (err) { + isLoadingRules = false; + loadingEnd(); + }); + return null; + } + return {rules: rules}; + } + var forceRenderStyle = false; + function render(theme, ignoreImageAnalysis) { + var rules = getRulesSync(); + if (!rules) { + return; + } + cancelAsyncOperations = false; + function removeCSSRulesFromSheet(sheet) { + for (var i = sheet.cssRules.length - 1; i >= 0; i--) { + sheet.deleteRule(i); + } + } + function prepareOverridesSheet() { + if (!syncStyle) { + createSyncStyle(); + } + syncStylePositionWatcher && syncStylePositionWatcher.stop(); + insertStyle(); + if (syncStyle.sheet == null) { + syncStyle.textContent = ""; + } + var sheet = syncStyle.sheet; + removeCSSRulesFromSheet(sheet); + if (syncStylePositionWatcher) { + syncStylePositionWatcher.run(); + } else { + syncStylePositionWatcher = watchForNodePosition( + syncStyle, + "prev-sibling", + function () { + forceRenderStyle = true; + buildOverrides(); + } + ); + } + return syncStyle.sheet; + } + function buildOverrides() { + var force = forceRenderStyle; + forceRenderStyle = false; + sheetModifier.modifySheet({ + prepareSheet: prepareOverridesSheet, + sourceCSSRules: rules, + theme: theme, + ignoreImageAnalysis: ignoreImageAnalysis, + force: force, + isAsyncCancelled: function () { + return cancelAsyncOperations; + } + }); + isOverrideEmpty = syncStyle.sheet.cssRules.length === 0; + if (sheetModifier.shouldRebuildStyle()) { + addReadyStateCompleteListener(function () { + return update(); + }); + } + } + buildOverrides(); + } + function getRulesOrError() { + try { + if (element.sheet == null) { + return [null, null]; + } + return [element.sheet.cssRules, null]; + } catch (err) { + return [null, err]; + } + } + function isStillLoadingError(error) { + return error && error.message && error.message.includes("loading"); + } + function safeGetSheetRules() { + var _a = __read(getRulesOrError(), 2), + cssRules = _a[0], + err = _a[1]; + if (err) { + return null; + } + return cssRules; + } + function watchForSheetChanges() { + watchForSheetChangesUsingProxy(); + if (!(canOptimizeUsingProxy$1 && element.sheet)) { + watchForSheetChangesUsingRAF(); + } + } + var rulesChangeKey = null; + var rulesCheckFrameId = null; + function getRulesChangeKey() { + var rules = safeGetSheetRules(); + return rules ? rules.length : null; + } + function didRulesKeyChange() { + return getRulesChangeKey() !== rulesChangeKey; + } + function watchForSheetChangesUsingRAF() { + rulesChangeKey = getRulesChangeKey(); + stopWatchingForSheetChangesUsingRAF(); + var checkForUpdate = function () { + if (didRulesKeyChange()) { + rulesChangeKey = getRulesChangeKey(); + update(); + } + if (canOptimizeUsingProxy$1 && element.sheet) { + stopWatchingForSheetChangesUsingRAF(); + return; + } + rulesCheckFrameId = requestAnimationFrame(checkForUpdate); + }; + checkForUpdate(); + } + function stopWatchingForSheetChangesUsingRAF() { + cancelAnimationFrame(rulesCheckFrameId); + } + var areSheetChangesPending = false; + function onSheetChange() { + canOptimizeUsingProxy$1 = true; + stopWatchingForSheetChangesUsingRAF(); + if (areSheetChangesPending) { + return; + } + function handleSheetChanges() { + areSheetChangesPending = false; + if (cancelAsyncOperations) { + return; + } + update(); + } + areSheetChangesPending = true; + if (typeof queueMicrotask === "function") { + queueMicrotask(handleSheetChanges); + } else { + requestAnimationFrame(handleSheetChanges); + } + } + function watchForSheetChangesUsingProxy() { + element.addEventListener( + "__darkreader__updateSheet", + onSheetChange + ); + } + function stopWatchingForSheetChangesUsingProxy() { + element.removeEventListener( + "__darkreader__updateSheet", + onSheetChange + ); + } + function stopWatchingForSheetChanges() { + stopWatchingForSheetChangesUsingProxy(); + stopWatchingForSheetChangesUsingRAF(); + } + function pause() { + observer.disconnect(); + cancelAsyncOperations = true; + corsCopyPositionWatcher && corsCopyPositionWatcher.stop(); + syncStylePositionWatcher && syncStylePositionWatcher.stop(); + stopWatchingForSheetChanges(); + } + function destroy() { + pause(); + removeNode(corsCopy); + removeNode(syncStyle); + loadingEnd(); + if (rejectorsForLoadingLinks.has(loadingLinkId)) { + var reject = rejectorsForLoadingLinks.get(loadingLinkId); + rejectorsForLoadingLinks.delete(loadingLinkId); + reject && reject(); + } + } + function watch() { + observer.observe(element, observerOptions); + if (element instanceof HTMLStyleElement) { + watchForSheetChanges(); + } + } + var maxMoveCount = 10; + var moveCount = 0; + function restore() { + if (!syncStyle) { + return; + } + moveCount++; + if (moveCount > maxMoveCount) { + return; + } + insertStyle(); + corsCopyPositionWatcher && corsCopyPositionWatcher.skip(); + syncStylePositionWatcher && syncStylePositionWatcher.skip(); + if (!isOverrideEmpty) { + forceRenderStyle = true; + update(); + } + } + return { + details: details, + render: render, + pause: pause, + destroy: destroy, + watch: watch, + restore: restore + }; + } + function linkLoading(link, loadingId) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [ + 2, + new Promise(function (resolve, reject) { + var cleanUp = function () { + link.removeEventListener("load", onLoad); + link.removeEventListener("error", onError); + rejectorsForLoadingLinks.delete(loadingId); + }; + var onLoad = function () { + cleanUp(); + resolve(); + }; + var onError = function () { + cleanUp(); + reject( + "Linkelement " + .concat(loadingId, " couldn't be loaded. ") + .concat(link.href) + ); + }; + rejectorsForLoadingLinks.set(loadingId, function () { + cleanUp(); + reject(); + }); + link.addEventListener("load", onLoad); + link.addEventListener("error", onError); + if (!link.href) { + onError(); + } + }) + ]; + }); + }); + } + function getCSSImportURL(importDeclaration) { + return getCSSURLValue( + importDeclaration + .substring(7) + .trim() + .replace(/;$/, "") + .replace(/screen$/, "") + ); + } + function loadText(url) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!url.startsWith("data:")) return [3, 3]; + return [4, fetch(url)]; + case 1: + return [4, _a.sent().text()]; + case 2: + return [2, _a.sent()]; + case 3: + return [ + 4, + bgFetch({ + url: url, + responseType: "text", + mimeType: "text/css", + origin: window.location.origin + }) + ]; + case 4: + return [2, _a.sent()]; + } + }); + }); + } + function replaceCSSImports(cssText, basePath, cache) { + if (cache === void 0) { + cache = new Map(); + } + return __awaiter(this, void 0, void 0, function () { + var importMatches, + importMatches_1, + importMatches_1_1, + match, + importURL, + absoluteURL, + importedCSS, + e_1_1; + var e_1, _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + cssText = removeCSSComments(cssText); + cssText = replaceCSSFontFace(cssText); + cssText = replaceCSSRelativeURLsWithAbsolute( + cssText, + basePath + ); + importMatches = getMatches(cssImportRegex, cssText); + _b.label = 1; + case 1: + _b.trys.push([1, 10, 11, 12]); + (importMatches_1 = __values(importMatches)), + (importMatches_1_1 = importMatches_1.next()); + _b.label = 2; + case 2: + if (!!importMatches_1_1.done) return [3, 9]; + match = importMatches_1_1.value; + importURL = getCSSImportURL(match); + absoluteURL = getAbsoluteURL(basePath, importURL); + importedCSS = void 0; + if (!cache.has(absoluteURL)) return [3, 3]; + importedCSS = cache.get(absoluteURL); + return [3, 7]; + case 3: + _b.trys.push([3, 6, , 7]); + return [4, loadText(absoluteURL)]; + case 4: + importedCSS = _b.sent(); + cache.set(absoluteURL, importedCSS); + return [ + 4, + replaceCSSImports( + importedCSS, + getCSSBaseBath(absoluteURL), + cache + ) + ]; + case 5: + importedCSS = _b.sent(); + return [3, 7]; + case 6: + _b.sent(); + importedCSS = ""; + return [3, 7]; + case 7: + cssText = cssText.split(match).join(importedCSS); + _b.label = 8; + case 8: + importMatches_1_1 = importMatches_1.next(); + return [3, 2]; + case 9: + return [3, 12]; + case 10: + e_1_1 = _b.sent(); + e_1 = {error: e_1_1}; + return [3, 12]; + case 11: + try { + if ( + importMatches_1_1 && + !importMatches_1_1.done && + (_a = importMatches_1.return) + ) + _a.call(importMatches_1); + } finally { + if (e_1) throw e_1.error; + } + return [7]; + case 12: + cssText = cssText.trim(); + return [2, cssText]; + } + }); + }); + } + function createCORSCopy(srcElement, cssText) { + if (!cssText) { + return null; + } + var cors = document.createElement("style"); + cors.classList.add("darkreader"); + cors.classList.add("darkreader--cors"); + cors.media = "screen"; + cors.textContent = cssText; + srcElement.parentNode.insertBefore(cors, srcElement.nextSibling); + cors.sheet.disabled = true; + corsStyleSet.add(cors); + return cors; + } + + var observers = []; + var observedRoots; + var undefinedGroups = new Map(); + var elementsDefinitionCallback; + function collectUndefinedElements(root) { + if (!isDefinedSelectorSupported) { + return; + } + forEach(root.querySelectorAll(":not(:defined)"), function (el) { + var tag = el.tagName.toLowerCase(); + if (!tag.includes("-")) { + var extendedTag = el.getAttribute("is"); + if (extendedTag) { + tag = extendedTag; + } else { + return; + } + } + if (!undefinedGroups.has(tag)) { + undefinedGroups.set(tag, new Set()); + customElementsWhenDefined(tag).then(function () { + if (elementsDefinitionCallback) { + var elements = undefinedGroups.get(tag); + undefinedGroups.delete(tag); + elementsDefinitionCallback(Array.from(elements)); + } + }); + } + undefinedGroups.get(tag).add(el); + }); + } + var canOptimizeUsingProxy = false; + document.addEventListener( + "__darkreader__inlineScriptsAllowed", + function () { + canOptimizeUsingProxy = true; + } + ); + var resolvers = new Map(); + function handleIsDefined(e) { + canOptimizeUsingProxy = true; + if (resolvers.has(e.detail.tag)) { + var resolve = resolvers.get(e.detail.tag); + resolve(); + } + } + function customElementsWhenDefined(tag) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [ + 2, + new Promise(function (resolve) { + if ( + window.customElements && + typeof customElements.whenDefined === "function" + ) { + customElements.whenDefined(tag).then(function () { + return resolve(); + }); + } else if (canOptimizeUsingProxy) { + resolvers.set(tag, resolve); + document.dispatchEvent( + new CustomEvent( + "__darkreader__addUndefinedResolver", + {detail: {tag: tag}} + ) + ); + } else { + var checkIfDefined_1 = function () { + var elements = undefinedGroups.get(tag); + if (elements && elements.size > 0) { + if ( + elements + .values() + .next() + .value.matches(":defined") + ) { + resolve(); + } else { + requestAnimationFrame(checkIfDefined_1); + } + } + }; + requestAnimationFrame(checkIfDefined_1); + } + }) + ]; + }); + }); + } + function watchWhenCustomElementsDefined(callback) { + elementsDefinitionCallback = callback; + } + function unsubscribeFromDefineCustomElements() { + elementsDefinitionCallback = null; + undefinedGroups.clear(); + document.removeEventListener( + "__darkreader__isDefined", + handleIsDefined + ); + } + function watchForStyleChanges(currentStyles, update, shadowRootDiscovered) { + stopWatchingForStyleChanges(); + var prevStyles = new Set(currentStyles); + var prevStyleSiblings = new WeakMap(); + var nextStyleSiblings = new WeakMap(); + function saveStylePosition(style) { + prevStyleSiblings.set(style, style.previousElementSibling); + nextStyleSiblings.set(style, style.nextElementSibling); + } + function forgetStylePosition(style) { + prevStyleSiblings.delete(style); + nextStyleSiblings.delete(style); + } + function didStylePositionChange(style) { + return ( + style.previousElementSibling !== prevStyleSiblings.get(style) || + style.nextElementSibling !== nextStyleSiblings.get(style) + ); + } + currentStyles.forEach(saveStylePosition); + function handleStyleOperations(operations) { + var createdStyles = operations.createdStyles, + removedStyles = operations.removedStyles, + movedStyles = operations.movedStyles; + createdStyles.forEach(function (s) { + return saveStylePosition(s); + }); + movedStyles.forEach(function (s) { + return saveStylePosition(s); + }); + removedStyles.forEach(function (s) { + return forgetStylePosition(s); + }); + createdStyles.forEach(function (s) { + return prevStyles.add(s); + }); + removedStyles.forEach(function (s) { + return prevStyles.delete(s); + }); + if ( + createdStyles.size + removedStyles.size + movedStyles.size > + 0 + ) { + update({ + created: Array.from(createdStyles), + removed: Array.from(removedStyles), + moved: Array.from(movedStyles), + updated: [] + }); + } + } + function handleMinorTreeMutations(_a) { + var additions = _a.additions, + moves = _a.moves, + deletions = _a.deletions; + var createdStyles = new Set(); + var removedStyles = new Set(); + var movedStyles = new Set(); + additions.forEach(function (node) { + return getManageableStyles(node).forEach(function (style) { + return createdStyles.add(style); + }); + }); + deletions.forEach(function (node) { + return getManageableStyles(node).forEach(function (style) { + return removedStyles.add(style); + }); + }); + moves.forEach(function (node) { + return getManageableStyles(node).forEach(function (style) { + return movedStyles.add(style); + }); + }); + handleStyleOperations({ + createdStyles: createdStyles, + removedStyles: removedStyles, + movedStyles: movedStyles + }); + additions.forEach(function (n) { + iterateShadowHosts(n, subscribeForShadowRootChanges); + collectUndefinedElements(n); + }); + } + function handleHugeTreeMutations(root) { + var styles = new Set(getManageableStyles(root)); + var createdStyles = new Set(); + var removedStyles = new Set(); + var movedStyles = new Set(); + styles.forEach(function (s) { + if (!prevStyles.has(s)) { + createdStyles.add(s); + } + }); + prevStyles.forEach(function (s) { + if (!styles.has(s)) { + removedStyles.add(s); + } + }); + styles.forEach(function (s) { + if ( + !createdStyles.has(s) && + !removedStyles.has(s) && + didStylePositionChange(s) + ) { + movedStyles.add(s); + } + }); + handleStyleOperations({ + createdStyles: createdStyles, + removedStyles: removedStyles, + movedStyles: movedStyles + }); + iterateShadowHosts(root, subscribeForShadowRootChanges); + collectUndefinedElements(root); + } + function handleAttributeMutations(mutations) { + var updatedStyles = new Set(); + var removedStyles = new Set(); + mutations.forEach(function (m) { + var target = m.target; + if (target.isConnected) { + if (shouldManageStyle(target)) { + updatedStyles.add(target); + } else if ( + target instanceof HTMLLinkElement && + target.disabled + ) { + removedStyles.add(target); + } + } + }); + if (updatedStyles.size + removedStyles.size > 0) { + update({ + updated: Array.from(updatedStyles), + created: [], + removed: Array.from(removedStyles), + moved: [] + }); + } + } + function observe(root) { + var treeObserver = createOptimizedTreeObserver(root, { + onMinorMutations: handleMinorTreeMutations, + onHugeMutations: handleHugeTreeMutations + }); + var attrObserver = new MutationObserver(handleAttributeMutations); + attrObserver.observe(root, { + attributes: true, + attributeFilter: ["rel", "disabled", "media", "href"], + subtree: true + }); + observers.push(treeObserver, attrObserver); + observedRoots.add(root); + } + function subscribeForShadowRootChanges(node) { + var shadowRoot = node.shadowRoot; + if (shadowRoot == null || observedRoots.has(shadowRoot)) { + return; + } + observe(shadowRoot); + shadowRootDiscovered(shadowRoot); + } + observe(document); + iterateShadowHosts( + document.documentElement, + subscribeForShadowRootChanges + ); + watchWhenCustomElementsDefined(function (hosts) { + var newStyles = []; + hosts.forEach(function (host) { + return push(newStyles, getManageableStyles(host.shadowRoot)); + }); + update({created: newStyles, updated: [], removed: [], moved: []}); + hosts.forEach(function (host) { + var shadowRoot = host.shadowRoot; + if (shadowRoot == null) { + return; + } + subscribeForShadowRootChanges(host); + iterateShadowHosts(shadowRoot, subscribeForShadowRootChanges); + collectUndefinedElements(shadowRoot); + }); + }); + document.addEventListener("__darkreader__isDefined", handleIsDefined); + collectUndefinedElements(document); + } + function resetObservers() { + observers.forEach(function (o) { + return o.disconnect(); + }); + observers.splice(0, observers.length); + observedRoots = new WeakSet(); + } + function stopWatchingForStyleChanges() { + resetObservers(); + unsubscribeFromDefineCustomElements(); + } + + function hexify(number) { + return (number < 16 ? "0" : "") + number.toString(16); + } + function generateUID() { + if ("randomUUID" in crypto) { + var uuid = crypto.randomUUID(); + return ( + uuid.substring(0, 8) + + uuid.substring(9, 13) + + uuid.substring(14, 18) + + uuid.substring(19, 23) + + uuid.substring(24) + ); + } + return Array.from(crypto.getRandomValues(new Uint8Array(16))) + .map(function (x) { + return hexify(x); + }) + .join(""); + } + + var adoptedStyleOverrides = new WeakMap(); + var overrideList = new WeakSet(); + function createAdoptedStyleSheetOverride(node) { + var cancelAsyncOperations = false; + function injectSheet(sheet, override) { + var newSheets = __spreadArray( + [], + __read(node.adoptedStyleSheets), + false + ); + var sheetIndex = newSheets.indexOf(sheet); + var existingIndex = newSheets.indexOf(override); + if (sheetIndex === existingIndex - 1) { + return; + } + if (existingIndex >= 0) { + newSheets.splice(existingIndex, 1); + } + newSheets.splice(sheetIndex + 1, 0, override); + node.adoptedStyleSheets = newSheets; + } + function destroy() { + cancelAsyncOperations = true; + var newSheets = __spreadArray( + [], + __read(node.adoptedStyleSheets), + false + ); + node.adoptedStyleSheets.forEach(function (adoptedStyleSheet) { + if (overrideList.has(adoptedStyleSheet)) { + var existingIndex = newSheets.indexOf(adoptedStyleSheet); + if (existingIndex >= 0) { + newSheets.splice(existingIndex, 1); + } + adoptedStyleOverrides.delete(adoptedStyleSheet); + overrideList.delete(adoptedStyleSheet); + } + }); + node.adoptedStyleSheets = newSheets; + } + function render(theme, ignoreImageAnalysis) { + node.adoptedStyleSheets.forEach(function (sheet) { + if (overrideList.has(sheet)) { + return; + } + var rules = sheet.rules; + var override = new CSSStyleSheet(); + function prepareOverridesSheet() { + for (var i = override.cssRules.length - 1; i >= 0; i--) { + override.deleteRule(i); + } + injectSheet(sheet, override); + adoptedStyleOverrides.set(sheet, override); + overrideList.add(override); + return override; + } + var sheetModifier = createStyleSheetModifier(); + sheetModifier.modifySheet({ + prepareSheet: prepareOverridesSheet, + sourceCSSRules: rules, + theme: theme, + ignoreImageAnalysis: ignoreImageAnalysis, + force: false, + isAsyncCancelled: function () { + return cancelAsyncOperations; + } + }); + }); + } + return { + render: render, + destroy: destroy + }; + } + + function injectProxy(enableStyleSheetsProxy) { + document.dispatchEvent( + new CustomEvent("__darkreader__inlineScriptsAllowed") + ); + var addRuleDescriptor = Object.getOwnPropertyDescriptor( + CSSStyleSheet.prototype, + "addRule" + ); + var insertRuleDescriptor = Object.getOwnPropertyDescriptor( + CSSStyleSheet.prototype, + "insertRule" + ); + var deleteRuleDescriptor = Object.getOwnPropertyDescriptor( + CSSStyleSheet.prototype, + "deleteRule" + ); + var removeRuleDescriptor = Object.getOwnPropertyDescriptor( + CSSStyleSheet.prototype, + "removeRule" + ); + var documentStyleSheetsDescriptor = enableStyleSheetsProxy + ? Object.getOwnPropertyDescriptor(Document.prototype, "styleSheets") + : null; + var shouldWrapHTMLElement = [ + "baidu.com", + "baike.baidu.com", + "ditu.baidu.com", + "map.baidu.com", + "maps.baidu.com", + "haokan.baidu.com", + "pan.baidu.com", + "passport.baidu.com", + "tieba.baidu.com", + "www.baidu.com" + ].includes(location.hostname); + var getElementsByTagNameDescriptor = shouldWrapHTMLElement + ? Object.getOwnPropertyDescriptor( + Element.prototype, + "getElementsByTagName" + ) + : null; + var cleanUp = function () { + Object.defineProperty( + CSSStyleSheet.prototype, + "addRule", + addRuleDescriptor + ); + Object.defineProperty( + CSSStyleSheet.prototype, + "insertRule", + insertRuleDescriptor + ); + Object.defineProperty( + CSSStyleSheet.prototype, + "deleteRule", + deleteRuleDescriptor + ); + Object.defineProperty( + CSSStyleSheet.prototype, + "removeRule", + removeRuleDescriptor + ); + document.removeEventListener("__darkreader__cleanUp", cleanUp); + document.removeEventListener( + "__darkreader__addUndefinedResolver", + addUndefinedResolver + ); + if (enableStyleSheetsProxy) { + Object.defineProperty( + Document.prototype, + "styleSheets", + documentStyleSheetsDescriptor + ); + } + if (shouldWrapHTMLElement) { + Object.defineProperty( + Element.prototype, + "getElementsByTagName", + getElementsByTagNameDescriptor + ); + } + }; + var addUndefinedResolver = function (e) { + customElements.whenDefined(e.detail.tag).then(function () { + document.dispatchEvent( + new CustomEvent("__darkreader__isDefined", { + detail: {tag: e.detail.tag} + }) + ); + }); + }; + document.addEventListener("__darkreader__cleanUp", cleanUp); + document.addEventListener( + "__darkreader__addUndefinedResolver", + addUndefinedResolver + ); + var updateSheetEvent = new Event("__darkreader__updateSheet"); + function proxyAddRule(selector, style, index) { + addRuleDescriptor.value.call(this, selector, style, index); + if ( + this.ownerNode && + !this.ownerNode.classList.contains("darkreader") + ) { + this.ownerNode.dispatchEvent(updateSheetEvent); + } + return -1; + } + function proxyInsertRule(rule, index) { + var returnValue = insertRuleDescriptor.value.call( + this, + rule, + index + ); + if ( + this.ownerNode && + !this.ownerNode.classList.contains("darkreader") + ) { + this.ownerNode.dispatchEvent(updateSheetEvent); + } + return returnValue; + } + function proxyDeleteRule(index) { + deleteRuleDescriptor.value.call(this, index); + if ( + this.ownerNode && + !this.ownerNode.classList.contains("darkreader") + ) { + this.ownerNode.dispatchEvent(updateSheetEvent); + } + } + function proxyRemoveRule(index) { + removeRuleDescriptor.value.call(this, index); + if ( + this.ownerNode && + !this.ownerNode.classList.contains("darkreader") + ) { + this.ownerNode.dispatchEvent(updateSheetEvent); + } + } + function proxyDocumentStyleSheets() { + var _this = this; + var getCurrentValue = function () { + var docSheets = documentStyleSheetsDescriptor.get.call(_this); + var filteredSheets = __spreadArray( + [], + __read(docSheets), + false + ).filter(function (styleSheet) { + return !styleSheet.ownerNode.classList.contains( + "darkreader" + ); + }); + filteredSheets.item = function (item) { + return filteredSheets[item]; + }; + return Object.setPrototypeOf( + filteredSheets, + StyleSheetList.prototype + ); + }; + var elements = getCurrentValue(); + var styleSheetListBehavior = { + get: function (_, property) { + return getCurrentValue()[property]; + } + }; + elements = new Proxy(elements, styleSheetListBehavior); + return elements; + } + function proxyGetElementsByTagName(tagName) { + var _this = this; + if (tagName !== "style") { + return getElementsByTagNameDescriptor.value.call(this, tagName); + } + var getCurrentElementValue = function () { + var elements = getElementsByTagNameDescriptor.value.call( + _this, + tagName + ); + return Object.setPrototypeOf( + __spreadArray([], __read(elements), false).filter(function ( + element + ) { + return !element.classList.contains("darkreader"); + }), + NodeList.prototype + ); + }; + var elements = getCurrentElementValue(); + var nodeListBehavior = { + get: function (_, property) { + return getCurrentElementValue()[ + Number(property) || property + ]; + } + }; + elements = new Proxy(elements, nodeListBehavior); + return elements; + } + Object.defineProperty( + CSSStyleSheet.prototype, + "addRule", + Object.assign({}, addRuleDescriptor, {value: proxyAddRule}) + ); + Object.defineProperty( + CSSStyleSheet.prototype, + "insertRule", + Object.assign({}, insertRuleDescriptor, {value: proxyInsertRule}) + ); + Object.defineProperty( + CSSStyleSheet.prototype, + "deleteRule", + Object.assign({}, deleteRuleDescriptor, {value: proxyDeleteRule}) + ); + Object.defineProperty( + CSSStyleSheet.prototype, + "removeRule", + Object.assign({}, removeRuleDescriptor, {value: proxyRemoveRule}) + ); + if (enableStyleSheetsProxy) { + Object.defineProperty( + Document.prototype, + "styleSheets", + Object.assign({}, documentStyleSheetsDescriptor, { + get: proxyDocumentStyleSheets + }) + ); + } + if (shouldWrapHTMLElement) { + Object.defineProperty( + Element.prototype, + "getElementsByTagName", + Object.assign({}, getElementsByTagNameDescriptor, { + value: proxyGetElementsByTagName + }) + ); + } + } + + var INSTANCE_ID = generateUID(); + var styleManagers = new Map(); + var adoptedStyleManagers = []; + var filter = null; + var fixes = null; + var isIFrame$1 = null; + var ignoredImageAnalysisSelectors = null; + var ignoredInlineSelectors = null; + function createOrUpdateStyle(className, root) { + if (root === void 0) { + root = document.head || document; + } + var element = root.querySelector(".".concat(className)); + if (!element) { + element = document.createElement("style"); + element.classList.add("darkreader"); + element.classList.add(className); + element.media = "screen"; + element.textContent = ""; + } + return element; + } + function createOrUpdateScript(className, root) { + if (root === void 0) { + root = document.head || document; + } + var element = root.querySelector(".".concat(className)); + if (!element) { + element = document.createElement("script"); + element.classList.add("darkreader"); + element.classList.add(className); + } + return element; + } + var nodePositionWatchers = new Map(); + function setupNodePositionWatcher(node, alias) { + nodePositionWatchers.has(alias) && + nodePositionWatchers.get(alias).stop(); + nodePositionWatchers.set(alias, watchForNodePosition(node, "parent")); + } + function stopStylePositionWatchers() { + forEach(nodePositionWatchers.values(), function (watcher) { + return watcher.stop(); + }); + nodePositionWatchers.clear(); + } + function createStaticStyleOverrides() { + var fallbackStyle = createOrUpdateStyle( + "darkreader--fallback", + document + ); + fallbackStyle.textContent = getModifiedFallbackStyle(filter, { + strict: true + }); + document.head.insertBefore(fallbackStyle, document.head.firstChild); + setupNodePositionWatcher(fallbackStyle, "fallback"); + var userAgentStyle = createOrUpdateStyle("darkreader--user-agent"); + userAgentStyle.textContent = getModifiedUserAgentStyle( + filter, + isIFrame$1, + filter.styleSystemControls + ); + document.head.insertBefore(userAgentStyle, fallbackStyle.nextSibling); + setupNodePositionWatcher(userAgentStyle, "user-agent"); + var textStyle = createOrUpdateStyle("darkreader--text"); + if (filter.useFont || filter.textStroke > 0) { + textStyle.textContent = createTextStyle(filter); + } else { + textStyle.textContent = ""; + } + document.head.insertBefore(textStyle, fallbackStyle.nextSibling); + setupNodePositionWatcher(textStyle, "text"); + var invertStyle = createOrUpdateStyle("darkreader--invert"); + if (fixes && Array.isArray(fixes.invert) && fixes.invert.length > 0) { + invertStyle.textContent = [ + "".concat(fixes.invert.join(", "), " {"), + " filter: ".concat( + getCSSFilterValue( + __assign(__assign({}, filter), { + contrast: + filter.mode === 0 + ? filter.contrast + : clamp(filter.contrast - 10, 0, 100) + }) + ), + " !important;" + ), + "}" + ].join("\n"); + } else { + invertStyle.textContent = ""; + } + document.head.insertBefore(invertStyle, textStyle.nextSibling); + setupNodePositionWatcher(invertStyle, "invert"); + var inlineStyle = createOrUpdateStyle("darkreader--inline"); + inlineStyle.textContent = getInlineOverrideStyle(); + document.head.insertBefore(inlineStyle, invertStyle.nextSibling); + setupNodePositionWatcher(inlineStyle, "inline"); + var overrideStyle = createOrUpdateStyle("darkreader--override"); + overrideStyle.textContent = + fixes && fixes.css ? replaceCSSTemplates(fixes.css) : ""; + document.head.appendChild(overrideStyle); + setupNodePositionWatcher(overrideStyle, "override"); + var variableStyle = createOrUpdateStyle("darkreader--variables"); + var selectionColors = getSelectionColor(filter); + var darkSchemeBackgroundColor = filter.darkSchemeBackgroundColor, + darkSchemeTextColor = filter.darkSchemeTextColor, + lightSchemeBackgroundColor = filter.lightSchemeBackgroundColor, + lightSchemeTextColor = filter.lightSchemeTextColor, + mode = filter.mode; + var schemeBackgroundColor = + mode === 0 ? lightSchemeBackgroundColor : darkSchemeBackgroundColor; + var schemeTextColor = + mode === 0 ? lightSchemeTextColor : darkSchemeTextColor; + schemeBackgroundColor = modifyBackgroundColor( + parseColorWithCache(schemeBackgroundColor), + filter + ); + schemeTextColor = modifyForegroundColor( + parseColorWithCache(schemeTextColor), + filter + ); + variableStyle.textContent = [ + ":root {", + " --darkreader-neutral-background: ".concat( + schemeBackgroundColor, + ";" + ), + " --darkreader-neutral-text: ".concat(schemeTextColor, ";"), + " --darkreader-selection-background: ".concat( + selectionColors.backgroundColorSelection, + ";" + ), + " --darkreader-selection-text: ".concat( + selectionColors.foregroundColorSelection, + ";" + ), + "}" + ].join("\n"); + document.head.insertBefore(variableStyle, inlineStyle.nextSibling); + setupNodePositionWatcher(variableStyle, "variables"); + var rootVarsStyle = createOrUpdateStyle("darkreader--root-vars"); + document.head.insertBefore(rootVarsStyle, variableStyle.nextSibling); + var injectProxyArg = !(fixes && fixes.disableStyleSheetsProxy); + { + var proxyScript = createOrUpdateScript("darkreader--proxy"); + proxyScript.append( + "(".concat(injectProxy, ")(").concat(injectProxyArg, ")") + ); + document.head.insertBefore(proxyScript, rootVarsStyle.nextSibling); + proxyScript.remove(); + } + } + var shadowRootsWithOverrides = new Set(); + function createShadowStaticStyleOverrides(root) { + var inlineStyle = createOrUpdateStyle("darkreader--inline", root); + inlineStyle.textContent = getInlineOverrideStyle(); + root.insertBefore(inlineStyle, root.firstChild); + var overrideStyle = createOrUpdateStyle("darkreader--override", root); + overrideStyle.textContent = + fixes && fixes.css ? replaceCSSTemplates(fixes.css) : ""; + root.insertBefore(overrideStyle, inlineStyle.nextSibling); + var invertStyle = createOrUpdateStyle("darkreader--invert", root); + if (fixes && Array.isArray(fixes.invert) && fixes.invert.length > 0) { + invertStyle.textContent = [ + "".concat(fixes.invert.join(", "), " {"), + " filter: ".concat( + getCSSFilterValue( + __assign(__assign({}, filter), { + contrast: + filter.mode === 0 + ? filter.contrast + : clamp(filter.contrast - 10, 0, 100) + }) + ), + " !important;" + ), + "}" + ].join("\n"); + } else { + invertStyle.textContent = ""; + } + root.insertBefore(invertStyle, overrideStyle.nextSibling); + shadowRootsWithOverrides.add(root); + } + function replaceCSSTemplates($cssText) { + return $cssText.replace(/\${(.+?)}/g, function (_, $color) { + var color = parseColorWithCache($color); + if (color) { + return modifyColor(color, filter); + } + return $color; + }); + } + function cleanFallbackStyle() { + var fallback = document.querySelector(".darkreader--fallback"); + if (fallback) { + fallback.textContent = ""; + } + } + function createDynamicStyleOverrides() { + cancelRendering(); + var allStyles = getManageableStyles(document); + var newManagers = allStyles + .filter(function (style) { + return !styleManagers.has(style); + }) + .map(function (style) { + return createManager(style); + }); + newManagers + .map(function (manager) { + return manager.details({secondRound: false}); + }) + .filter(function (detail) { + return detail && detail.rules.length > 0; + }) + .forEach(function (detail) { + variablesStore.addRulesForMatching(detail.rules); + }); + variablesStore.matchVariablesAndDependants(); + variablesStore.setOnRootVariableChange(function () { + variablesStore.putRootVars( + document.head.querySelector(".darkreader--root-vars"), + filter + ); + }); + variablesStore.putRootVars( + document.head.querySelector(".darkreader--root-vars"), + filter + ); + styleManagers.forEach(function (manager) { + return manager.render(filter, ignoredImageAnalysisSelectors); + }); + if (loadingStyles.size === 0) { + cleanFallbackStyle(); + } + newManagers.forEach(function (manager) { + return manager.watch(); + }); + var inlineStyleElements = toArray( + document.querySelectorAll(INLINE_STYLE_SELECTOR) + ); + iterateShadowHosts(document.documentElement, function (host) { + createShadowStaticStyleOverrides(host.shadowRoot); + var elements = host.shadowRoot.querySelectorAll( + INLINE_STYLE_SELECTOR + ); + if (elements.length > 0) { + push(inlineStyleElements, elements); + } + }); + inlineStyleElements.forEach(function (el) { + return overrideInlineStyle( + el, + filter, + ignoredInlineSelectors, + ignoredImageAnalysisSelectors + ); + }); + handleAdoptedStyleSheets(document); + } + var loadingStylesCounter = 0; + var loadingStyles = new Set(); + function createManager(element) { + var loadingStyleId = ++loadingStylesCounter; + function loadingStart() { + if (!isDOMReady() || !didDocumentShowUp) { + loadingStyles.add(loadingStyleId); + logInfo( + "Current amount of styles loading: ".concat( + loadingStyles.size + ) + ); + var fallbackStyle = document.querySelector( + ".darkreader--fallback" + ); + if (!fallbackStyle.textContent) { + fallbackStyle.textContent = getModifiedFallbackStyle( + filter, + {strict: false} + ); + } + } + } + function loadingEnd() { + loadingStyles.delete(loadingStyleId); + logInfo( + "Removed loadingStyle " + .concat(loadingStyleId, ", now awaiting: ") + .concat(loadingStyles.size) + ); + if (loadingStyles.size === 0 && isDOMReady()) { + cleanFallbackStyle(); + } + } + function update() { + var details = manager.details({secondRound: true}); + if (!details) { + return; + } + variablesStore.addRulesForMatching(details.rules); + variablesStore.matchVariablesAndDependants(); + manager.render(filter, ignoredImageAnalysisSelectors); + } + var manager = manageStyle(element, { + update: update, + loadingStart: loadingStart, + loadingEnd: loadingEnd + }); + styleManagers.set(element, manager); + return manager; + } + function removeManager(element) { + var manager = styleManagers.get(element); + if (manager) { + manager.destroy(); + styleManagers.delete(element); + } + } + var throttledRenderAllStyles = throttle(function (callback) { + styleManagers.forEach(function (manager) { + return manager.render(filter, ignoredImageAnalysisSelectors); + }); + adoptedStyleManagers.forEach(function (manager) { + return manager.render(filter, ignoredImageAnalysisSelectors); + }); + callback && callback(); + }); + var cancelRendering = function () { + throttledRenderAllStyles.cancel(); + }; + function onDOMReady() { + if (loadingStyles.size === 0) { + cleanFallbackStyle(); + return; + } + } + var documentVisibilityListener = null; + var didDocumentShowUp = !document.hidden; + function watchForDocumentVisibility(callback) { + var alreadyWatching = Boolean(documentVisibilityListener); + documentVisibilityListener = function () { + if (!document.hidden) { + stopWatchingForDocumentVisibility(); + callback(); + didDocumentShowUp = true; + } + }; + if (!alreadyWatching) { + document.addEventListener( + "visibilitychange", + documentVisibilityListener + ); + } + } + function stopWatchingForDocumentVisibility() { + document.removeEventListener( + "visibilitychange", + documentVisibilityListener + ); + documentVisibilityListener = null; + } + function createThemeAndWatchForUpdates() { + createStaticStyleOverrides(); + function runDynamicStyle() { + createDynamicStyleOverrides(); + watchForUpdates(); + } + if (document.hidden && !filter.immediateModify) { + watchForDocumentVisibility(runDynamicStyle); + } else { + runDynamicStyle(); + } + changeMetaThemeColorWhenAvailable(filter); + } + function handleAdoptedStyleSheets(node) { + try { + if (Array.isArray(node.adoptedStyleSheets)) { + if (node.adoptedStyleSheets.length > 0) { + var newManger = createAdoptedStyleSheetOverride(node); + adoptedStyleManagers.push(newManger); + newManger.render(filter, ignoredImageAnalysisSelectors); + } + } + } catch (err) {} + } + function watchForUpdates() { + var managedStyles = Array.from(styleManagers.keys()); + watchForStyleChanges( + managedStyles, + function (_a) { + var created = _a.created, + updated = _a.updated, + removed = _a.removed, + moved = _a.moved; + var stylesToRemove = removed; + var stylesToManage = created + .concat(updated) + .concat(moved) + .filter(function (style) { + return !styleManagers.has(style); + }); + var stylesToRestore = moved.filter(function (style) { + return styleManagers.has(style); + }); + stylesToRemove.forEach(function (style) { + return removeManager(style); + }); + var newManagers = stylesToManage.map(function (style) { + return createManager(style); + }); + newManagers + .map(function (manager) { + return manager.details({secondRound: false}); + }) + .filter(function (detail) { + return detail && detail.rules.length > 0; + }) + .forEach(function (detail) { + variablesStore.addRulesForMatching(detail.rules); + }); + variablesStore.matchVariablesAndDependants(); + newManagers.forEach(function (manager) { + return manager.render( + filter, + ignoredImageAnalysisSelectors + ); + }); + newManagers.forEach(function (manager) { + return manager.watch(); + }); + stylesToRestore.forEach(function (style) { + return styleManagers.get(style).restore(); + }); + }, + function (shadowRoot) { + createShadowStaticStyleOverrides(shadowRoot); + handleAdoptedStyleSheets(shadowRoot); + } + ); + watchForInlineStyles( + function (element) { + overrideInlineStyle( + element, + filter, + ignoredInlineSelectors, + ignoredImageAnalysisSelectors + ); + if (element === document.documentElement) { + var styleAttr = element.getAttribute("style") || ""; + if (styleAttr.includes("--")) { + variablesStore.matchVariablesAndDependants(); + variablesStore.putRootVars( + document.head.querySelector( + ".darkreader--root-vars" + ), + filter + ); + } + } + }, + function (root) { + createShadowStaticStyleOverrides(root); + var inlineStyleElements = root.querySelectorAll( + INLINE_STYLE_SELECTOR + ); + if (inlineStyleElements.length > 0) { + forEach(inlineStyleElements, function (el) { + return overrideInlineStyle( + el, + filter, + ignoredInlineSelectors, + ignoredImageAnalysisSelectors + ); + }); + } + } + ); + addDOMReadyListener(onDOMReady); + } + function stopWatchingForUpdates() { + styleManagers.forEach(function (manager) { + return manager.pause(); + }); + stopStylePositionWatchers(); + stopWatchingForStyleChanges(); + stopWatchingForInlineStyles(); + removeDOMReadyListener(onDOMReady); + cleanReadyStateCompleteListeners(); + } + var metaObserver; + function addMetaListener() { + metaObserver = new MutationObserver(function () { + if (document.querySelector('meta[name="darkreader-lock"]')) { + metaObserver.disconnect(); + removeDynamicTheme(); + } + }); + metaObserver.observe(document.head, {childList: true, subtree: true}); + } + function createDarkReaderInstanceMarker() { + var metaElement = document.createElement("meta"); + metaElement.name = "darkreader"; + metaElement.content = INSTANCE_ID; + document.head.appendChild(metaElement); + } + function isAnotherDarkReaderInstanceActive() { + if (document.querySelector('meta[name="darkreader-lock"]')) { + return true; + } + var meta = document.querySelector('meta[name="darkreader"]'); + if (meta) { + if (meta.content !== INSTANCE_ID) { + return true; + } + return false; + } + createDarkReaderInstanceMarker(); + addMetaListener(); + return false; + } + function createOrUpdateDynamicTheme( + filterConfig, + dynamicThemeFixes, + iframe + ) { + filter = filterConfig; + fixes = dynamicThemeFixes; + if (fixes) { + ignoredImageAnalysisSelectors = Array.isArray( + fixes.ignoreImageAnalysis + ) + ? fixes.ignoreImageAnalysis + : []; + ignoredInlineSelectors = Array.isArray(fixes.ignoreInlineStyle) + ? fixes.ignoreInlineStyle + : []; + } else { + ignoredImageAnalysisSelectors = []; + ignoredInlineSelectors = []; + } + if (filter.immediateModify) { + setIsDOMReady(function () { + return true; + }); + } + isIFrame$1 = iframe; + if (document.head) { + if (isAnotherDarkReaderInstanceActive()) { + return; + } + document.documentElement.setAttribute( + "data-darkreader-mode", + "dynamic" + ); + document.documentElement.setAttribute( + "data-darkreader-scheme", + filter.mode ? "dark" : "dimmed" + ); + createThemeAndWatchForUpdates(); + } else { + if (!isFirefox) { + var fallbackStyle = createOrUpdateStyle("darkreader--fallback"); + document.documentElement.appendChild(fallbackStyle); + fallbackStyle.textContent = getModifiedFallbackStyle(filter, { + strict: true + }); + } + var headObserver_1 = new MutationObserver(function () { + if (document.head) { + headObserver_1.disconnect(); + if (isAnotherDarkReaderInstanceActive()) { + removeDynamicTheme(); + return; + } + createThemeAndWatchForUpdates(); + } + }); + headObserver_1.observe(document, {childList: true, subtree: true}); + } + } + function removeProxy() { + document.dispatchEvent(new CustomEvent("__darkreader__cleanUp")); + removeNode(document.head.querySelector(".darkreader--proxy")); + } + function removeDynamicTheme() { + document.documentElement.removeAttribute("data-darkreader-mode"); + document.documentElement.removeAttribute("data-darkreader-scheme"); + cleanDynamicThemeCache(); + removeNode(document.querySelector(".darkreader--fallback")); + if (document.head) { + restoreMetaThemeColor(); + removeNode(document.head.querySelector(".darkreader--user-agent")); + removeNode(document.head.querySelector(".darkreader--text")); + removeNode(document.head.querySelector(".darkreader--invert")); + removeNode(document.head.querySelector(".darkreader--inline")); + removeNode(document.head.querySelector(".darkreader--override")); + removeNode(document.head.querySelector(".darkreader--variables")); + removeNode(document.head.querySelector(".darkreader--root-vars")); + removeNode(document.head.querySelector('meta[name="darkreader"]')); + removeProxy(); + } + shadowRootsWithOverrides.forEach(function (root) { + removeNode(root.querySelector(".darkreader--inline")); + removeNode(root.querySelector(".darkreader--override")); + }); + shadowRootsWithOverrides.clear(); + forEach(styleManagers.keys(), function (el) { + return removeManager(el); + }); + loadingStyles.clear(); + cleanLoadingLinks(); + forEach(document.querySelectorAll(".darkreader"), removeNode); + adoptedStyleManagers.forEach(function (manager) { + manager.destroy(); + }); + adoptedStyleManagers.splice(0); + metaObserver && metaObserver.disconnect(); + } + function cleanDynamicThemeCache() { + variablesStore.clear(); + parsedURLCache.clear(); + stopWatchingForDocumentVisibility(); + cancelRendering(); + stopWatchingForUpdates(); + cleanModificationCache(); + clearColorCache(); + } + + var blobRegex = /url\(\"(blob\:.*?)\"\)/g; + function replaceBlobs(text) { + return __awaiter(this, void 0, void 0, function () { + var promises, data; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + promises = []; + getMatches(blobRegex, text, 1).forEach(function (url) { + var promise = loadAsDataURL(url); + promises.push(promise); + }); + return [4, Promise.all(promises)]; + case 1: + data = _a.sent(); + return [ + 2, + text.replace(blobRegex, function () { + return 'url("'.concat(data.shift(), '")'); + }) + ]; + } + }); + }); + } + var banner = + '/*\n _______\n / \\\n .==. .==.\n (( ))==(( ))\n / "==" "=="\\\n /____|| || ||___\\\n ________ ____ ________ ___ ___\n | ___ \\ / \\ | ___ \\ | | / /\n | | \\ \\ / /\\ \\ | | \\ \\| |_/ /\n | | ) / /__\\ \\ | |__/ /| ___ \\\n | |__/ / ______ \\| ____ \\| | \\ \\\n_______|_______/__/ ____ \\__\\__|___\\__\\__|___\\__\\____\n| ___ \\ | ____/ / \\ | ___ \\ | ____| ___ \\\n| | \\ \\| |___ / /\\ \\ | | \\ \\| |___| | \\ \\\n| |__/ /| ____/ /__\\ \\ | | ) | ____| |__/ /\n| ____ \\| |__/ ______ \\| |__/ /| |___| ____ \\\n|__| \\__\\____/__/ \\__\\_______/ |______|__| \\__\\\n https://darkreader.org\n*/\n\n/*! Dark reader generated CSS | Licensed under MIT https://github.com/darkreader/darkreader/blob/main/LICENSE */\n'; + function collectCSS() { + return __awaiter(this, void 0, void 0, function () { + function addStaticCSS(selector, comment) { + var staticStyle = document.querySelector(selector); + if (staticStyle && staticStyle.textContent) { + css.push("/* ".concat(comment, " */")); + css.push(staticStyle.textContent); + css.push(""); + } + } + var css, modifiedCSS, formattedCSS, _a, _b; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + css = [banner]; + addStaticCSS(".darkreader--fallback", "Fallback Style"); + addStaticCSS( + ".darkreader--user-agent", + "User-Agent Style" + ); + addStaticCSS(".darkreader--text", "Text Style"); + addStaticCSS(".darkreader--invert", "Invert Style"); + addStaticCSS( + ".darkreader--variables", + "Variables Style" + ); + modifiedCSS = []; + document + .querySelectorAll(".darkreader--sync") + .forEach(function (element) { + forEach( + element.sheet.cssRules, + function (rule) { + rule && + rule.cssText && + modifiedCSS.push(rule.cssText); + } + ); + }); + if (!modifiedCSS.length) return [3, 2]; + formattedCSS = formatCSS(modifiedCSS.join("\n")); + css.push("/* Modified CSS */"); + _b = (_a = css).push; + return [4, replaceBlobs(formattedCSS)]; + case 1: + _b.apply(_a, [_c.sent()]); + css.push(""); + _c.label = 2; + case 2: + addStaticCSS(".darkreader--override", "Override Style"); + return [2, css.join("\n")]; + } + }); + }); + } + + var isDarkReaderEnabled = false; + var isIFrame = (function () { + try { + return window.self !== window.top; + } catch (err) { + console.warn(err); + return true; + } + })(); + function enable(themeOptions, fixes) { + if (themeOptions === void 0) { + themeOptions = {}; + } + if (fixes === void 0) { + fixes = null; + } + var theme = __assign(__assign({}, DEFAULT_THEME), themeOptions); + if (theme.engine !== ThemeEngine.dynamicTheme) { + throw new Error("Theme engine is not supported."); + } + createOrUpdateDynamicTheme(theme, fixes, isIFrame); + isDarkReaderEnabled = true; + } + function isEnabled() { + return isDarkReaderEnabled; + } + function disable() { + removeDynamicTheme(); + isDarkReaderEnabled = false; + } + var darkScheme = matchMedia("(prefers-color-scheme: dark)"); + var store = { + themeOptions: null, + fixes: null + }; + function handleColorScheme() { + if (darkScheme.matches) { + enable(store.themeOptions, store.fixes); + } else { + disable(); + } + } + function auto(themeOptions, fixes) { + if (themeOptions === void 0) { + themeOptions = {}; + } + if (fixes === void 0) { + fixes = null; + } + if (themeOptions) { + store = {themeOptions: themeOptions, fixes: fixes}; + handleColorScheme(); + if (isMatchMediaChangeEventListenerSupported) { + darkScheme.addEventListener("change", handleColorScheme); + } else { + darkScheme.addListener(handleColorScheme); + } + } else { + if (isMatchMediaChangeEventListenerSupported) { + darkScheme.removeEventListener("change", handleColorScheme); + } else { + darkScheme.removeListener(handleColorScheme); + } + disable(); + } + } + function exportGeneratedCSS() { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + return [4, collectCSS()]; + case 1: + return [2, _a.sent()]; + } + }); + }); + } + var setFetchMethod = setFetchMethod$1; + + exports.auto = auto; + exports.disable = disable; + exports.enable = enable; + exports.exportGeneratedCSS = exportGeneratedCSS; + exports.isEnabled = isEnabled; + exports.setFetchMethod = setFetchMethod; + + Object.defineProperty(exports, "__esModule", {value: true}); +}); diff --git a/assets/js/darkreader.min.js b/assets/js/darkreader.min.js new file mode 100644 index 0000000..621e9eb --- /dev/null +++ b/assets/js/darkreader.min.js @@ -0,0 +1,8 @@ +/** + * Minified by jsDelivr using Terser v5.15.0. + * Original file: /npm/darkreader@4.9.58/darkreader.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).DarkReader={})}(this,(function(e){"use strict";var t,r=function(){return r=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&a[a.length-1])||6!==o[0]&&2!==o[0])){i=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function i(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i}function u(e,t,r){if(r||2===arguments.length)for(var n,a=0,o=t.length;a Promise))`.","See if using `DarkReader.setFetchMethod(window.fetch)`","before `DarkReader.enable()` works."].join(" ")))]}))}))},x=C;function T(e){return n(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return[4,x(e)];case 1:return[2,t.sent()]}}))}))}window.chrome||(window.chrome={}),chrome.runtime||(chrome.runtime={});var R,V,A=new Set;function M(){for(var e=[],r=0;r=10){if(f-c1e3)return!0;for(var t=0,r=0;r1e3)return!0;return!1}(t))!o||H()?n.forEach((function(t){return(0,t.onHugeMutations)(e)})):i||(z(a=function(){return n.forEach((function(t){return(0,t.onHugeMutations)(e)}))}),i=!0),o=!0;else{var r=function(e){var t=new Set,r=new Set,n=new Set;e.forEach((function(e){F(e.addedNodes,(function(e){e instanceof Element&&e.isConnected&&t.add(e)})),F(e.removedNodes,(function(e){e instanceof Element&&(e.isConnected?(n.add(e),t.delete(e)):r.add(e))}))}));var a=[],o=[];return t.forEach((function(e){t.has(e.parentElement)&&a.push(e)})),r.forEach((function(e){r.has(e.parentElement)&&o.push(e)})),a.forEach((function(e){return t.delete(e)})),o.forEach((function(e){return r.delete(e)})),{additions:t,moves:n,deletions:r}}(t);n.forEach((function(e){return(0,e.onMinorMutations)(r)}))}})),r.observe(e,{childList:!0,subtree:!0}),ee.set(e,r),n=new Set,te.set(r,n)}return n.add(t),{disconnect:function(){n.delete(t),a&&Q(a),0===n.size&&(r.disconnect(),te.delete(r),ee.delete(e))}}}var ne=new Map;function ae(e){return J||(J=document.createElement("a")),J.href=e,J.href}function oe(e,t){void 0===t&&(t=null);var r="".concat(e).concat(t?";".concat(t):"");if(ne.has(r))return ne.get(r);if(t){var n=new URL(e,ae(t));return ne.set(r,n),n}var a=new URL(ae(e));return ne.set(e,a),a}function ie(e,t){if(t.match(/^data\\?\:/))return t;if(/^\/\//.test(t))return"".concat(location.protocol).concat(t);var r=oe(e);return oe(t,r.href).href}function ue(e,t,r){F(e,(function(e){if(e.selectorText)t(e);else if(e.href)try{ue(e.styleSheet.cssRules,t,r)}catch(e){r&&r()}else if(e.media){var n=Array.from(e.media),a=n.some((function(e){return e.startsWith("screen")||e.startsWith("all")||e.startsWith("(")})),o=n.some((function(e){return e.startsWith("print")||e.startsWith("speech")}));!a&&o||ue(e.cssRules,t,r)}else e.conditionText&&CSS.supports(e.conditionText)&&ue(e.cssRules,t,r)}))}var ce=["background","border","border-color","border-bottom","border-left","border-right","border-top","outline","outline-color"],se=p?ce.map((function(e){return[e,new RegExp("".concat(e,":\\s*(.*?)\\s*;"))]})):null;function le(e,t){F(e,(function(r){var n=e.getPropertyValue(r).trim();n&&t(r,n)}));var r=e.cssText;r.includes("var(")&&(p?se.forEach((function(e){var n=i(e,2),a=n[0],o=n[1],u=r.match(o);if(u&&u[1]){var c=u[1].trim();t(a,c)}})):ce.forEach((function(r){var n=e.getPropertyValue(r);n&&n.includes("var(")&&t(r,n)})))}var de=/url\((('.*?')|(".*?")|([^\)]*?))\)/g,fe=/@import\s*(url\()?(('.+?')|(".+?")|([^\)]*?))\)? ?(screen)?;?/gi;function he(e){return e.trim().replace(/[\n\r\\]+/g,"").replace(/^url\((.*)\)$/,"$1").trim().replace(/^"(.*)"$/,"$1").replace(/^'(.*)'$/,"$1").replace(/(?:\\(.))/g,"$1")}function pe(e){var t=oe(e);return"".concat(t.origin).concat(t.pathname.replace(/\?.*$/,"").replace(/(\/)([^\/]+)$/i,"$1"))}var ve=/\/\*[\s\S]*?\*\//g;var me=/@font-face\s*{[^}]*}/g;function ge(e){for(var t,r=[],n=[],a=0,o=e.length;a>16&255,g:t>>8&255,b:t>>0&255,a:1}}(t);if(je.has(t))return function(e){var t=je.get(e);return{r:t>>16&255,g:t>>8&255,b:t>>0&255,a:1}}(t);if("transparent"===e)return{r:0,g:0,b:0,a:0};return null}(e);return t&&we.set(e,t),t}function Ce(e){if(ke.has(e))return ke.get(e);var t=Ee(e);if(!t)return null;var r=Te(t);return ke.set(e,r),r}function xe(e){var t=e.h,r=e.s,n=e.l,a=e.a,o=void 0===a?1:a;if(0===r){var u=i([n,n,n].map((function(e){return Math.round(255*e)})),3),c=u[0],s=u[1];return{r:c,g:u[2],b:s,a:o}}var l=(1-Math.abs(2*n-1))*r,d=l*(1-Math.abs(t/60%2-1)),f=n-l/2,h=i((t<60?[l,d,0]:t<120?[d,l,0]:t<180?[0,l,d]:t<240?[0,d,l]:t<300?[d,0,l]:[l,0,d]).map((function(e){return Math.round(255*(e+f))})),3);return{r:h[0],g:h[1],b:h[2],a:o}}function Te(e){var t=e.r,r=e.g,n=e.b,a=e.a,o=void 0===a?1:a,i=t/255,u=r/255,c=n/255,s=Math.max(i,u,c),l=Math.min(i,u,c),d=s-l,f=(s+l)/2;if(0===d)return{h:0,s:0,l:f,a:o};var h=60*(s===i?(u-c)/d%6:s===u?(c-i)/d+2:(i-u)/d+4);return h<0&&(h+=360),{h:h,s:d/(1-Math.abs(2*f-1)),l:f,a:o}}function Re(e,t){void 0===t&&(t=0);var r=e.toFixed(t);if(0===t)return r;var n=r.indexOf(".");if(n>=0){var a=r.match(/0+$/);if(a)return a.index===n+1?r.substring(0,n):r.substring(0,a.index)}return r}function Ve(e){var t=e.h,r=e.s,n=e.l,a=e.a;return null!=a&&a<1?"hsla(".concat(Re(t),", ").concat(Re(100*r),"%, ").concat(Re(100*n),"%, ").concat(Re(a,2),")"):"hsl(".concat(Re(t),", ").concat(Re(100*r),"%, ").concat(Re(100*n),"%)")}var Ae=/^rgba?\([^\(\)]+\)$/,Me=/^hsla?\([^\(\)]+\)$/,Le=/^#[0-9a-f]+$/i;function Oe(e,t,r){var n=function(e){var t=[],r=0,n=!1,a=e.indexOf("(");e=e.substring(a+1,e.length-1);for(var o=0;o="0"&&i<="9"||"."===i||"+"===i||"-"===i?n=!0:!n||" "!==i&&","!==i?n||(r=o+1):(t.push(e.substring(r,o)),n=!1,r=o+1)}return n&&t.push(e.substring(r,e.length)),t}(e),a=Object.entries(r);return n.map((function(e){return e.trim()})).map((function(e,r){var n,o=a.find((function(t){var r=i(t,1)[0];return e.endsWith(r)}));return n=o?parseFloat(e.substring(0,e.length-o[0].length))/o[1]*t[r]:parseFloat(e),t[r]>1?Math.round(n):n}))}var De=[255,255,255,1],Pe={"%":100};var Ie=[360,1,1,1],Ne={"%":100,deg:360,rad:2*Math.PI,turn:1};var Fe=new Map(Object.entries({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgrey:11119017,darkgreen:25600,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,grey:8421504,green:32768,greenyellow:11403055,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgrey:13882323,lightgreen:9498256,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074})),je=new Map(Object.entries({ActiveBorder:3906044,ActiveCaption:0,AppWorkspace:11184810,Background:6513614,ButtonFace:16777215,ButtonHighlight:15329769,ButtonShadow:10461343,ButtonText:0,CaptionText:0,GrayText:8355711,Highlight:11720703,HighlightText:0,InactiveBorder:16777215,InactiveCaption:16777215,InactiveCaptionText:0,InfoBackground:16514245,InfoText:0,Menu:16185078,MenuText:16777215,Scrollbar:11184810,ThreeDDarkShadow:0,ThreeDFace:12632256,ThreeDHighlight:16777215,ThreeDLightShadow:16777215,ThreeDShadow:0,Window:15527148,WindowFrame:11184810,WindowText:0,"-webkit-focus-ring-color":15046400}).map((function(e){var t=i(e,2),r=t[0],n=t[1];return[r.toLowerCase(),n]})));function Be(e,t,r){return(.2126*e+.7152*t+.0722*r)/255}function qe(e,t,r,n,a){return(e-t)*(a-n)/(r-t)+n}function Ue(e,t,r){return Math.min(r,Math.max(t,e))}function We(e,t){for(var r=[],n=0,a=e.length;n.8&&(a>200&&a<280);var s=a,l=i;return n&&(c?(s=t.h,l=t.s):(s=r.h,l=r.s)),{h:s,s:l,l:qe(i,0,1,t.l,r.l),a:u}}function tt(e,t){var r=e.h,n=e.s,a=e.l,o=e.a,i=n<.12||a>.8&&(r>200&&r<280);if(a<.5){var u=qe(a,0,.5,0,.4);return i?{h:t.h,s:t.s,l:u,a:o}:{h:r,s:n,l:u,a:o}}var c=qe(a,.5,1,.4,t.l);if(i)return{h:t.h,s:t.s,l:c,a:o};var s=r;r>60&&r<180&&(s=r>120?qe(r,120,180,135,180):qe(r,60,120,60,105));return s>40&&s<80&&(c*=.75),{h:s,s:n,l:c,a:o}}function rt(e,t){if(0===t.mode)return Je(e,t);var n=$e(t);return Xe(e,r(r({},t),{mode:0}),tt,n)}var nt,at=.55;function ot(e){return qe(e,205,245,205,220)}function it(e,t){var r=e.h,n=e.s,a=e.l,o=e.a,i=a<.2||n<.24,u=!i&&r>205&&r<245;if(a>.5){var c=qe(a,.5,1,at,t.l);if(i)return{h:t.h,s:t.s,l:c,a:o};var s=r;return u&&(s=ot(r)),{h:s,s:n,l:c,a:o}}if(i)return{h:t.h,s:t.s,l:qe(a,0,.5,t.l,at),a:o};var l,d=r;return u?(d=ot(r),l=qe(a,0,.5,t.l,Math.min(1,.6000000000000001))):l=qe(a,0,.5,t.l,at),{h:d,s:n,l:l,a:o}}function ut(e,t){if(0===t.mode)return Je(e,t);var n=ze(t);return Xe(e,r(r({},t),{mode:0}),it,n)}function ct(e,t,r){var n=e.h,a=e.s,o=e.l,i=e.a,u=n,c=a;return(o<.2||a<.24)&&(o<.5?(u=t.h,c=t.s):(u=r.h,c=r.s)),{h:u,s:c,l:qe(o,0,1,.5,.2),a:i}}function st(e,t){if(0===t.mode)return Je(e,t);var n=ze(t),a=$e(t);return Xe(e,r(r({},t),{mode:0}),ct,n,a)}function lt(e,t){return rt(e,t)}function dt(e){var t=[];return e.mode===nt.dark&&t.push("invert(100%) hue-rotate(180deg)"),100!==e.brightness&&t.push("brightness(".concat(e.brightness,"%)")),100!==e.contrast&&t.push("contrast(".concat(e.contrast,"%)")),0!==e.grayscale&&t.push("grayscale(".concat(e.grayscale,"%)")),0!==e.sepia&&t.push("sepia(".concat(e.sepia,"%)")),0===t.length?null:t.join(" ")}!function(e){e[e.light=0]="light",e[e.dark=1]="dark"}(nt||(nt={}));var ft=0,ht=new Map,pt=new Map;function vt(e){return n(this,void 0,void 0,(function(){return a(this,(function(r){return[2,new Promise((function(r,n){var a=++ft;ht.set(a,r),pt.set(a,n),chrome.runtime.sendMessage({type:t.CS_FETCH,data:e,id:a})}))]}))}))}chrome.runtime.onMessage.addListener((function(e){var r=e.type,n=e.data,a=e.error,o=e.id;if(r===t.BG_FETCH_RESPONSE){var i=ht.get(o),u=pt.get(o);ht.delete(o),pt.delete(o),a?u&&u(a):i&&i(n)}}));var mt=new(function(){function e(){this.queue=[],this.timerId=null,this.frameDuration=1e3/60}return e.prototype.addToQueue=function(e){this.queue.push(e),this.startQueue()},e.prototype.stopQueue=function(){null!==this.timerId&&(cancelAnimationFrame(this.timerId),this.timerId=null),this.queue=[]},e.prototype.startQueue=function(){var e=this;this.timerId||(this.timerId=requestAnimationFrame((function(){e.timerId=null;for(var t,r=Date.now();t=e.queue.shift();)if(t(),Date.now()-r>=e.frameDuration){e.startQueue();break}})))},e}());function gt(e){return n(this,void 0,void 0,(function(){var t=this;return a(this,(function(o){return[2,new Promise((function(o,i){return n(t,void 0,void 0,(function(){var t,n,u,c;return a(this,(function(a){switch(a.label){case 0:return e.startsWith("data:")?(t=e,[3,4]):[3,1];case 1:return a.trys.push([1,3,,4]),[4,bt(e)];case 2:return t=a.sent(),[3,4];case 3:return n=a.sent(),i(n),[2];case 4:return a.trys.push([4,6,,7]),[4,yt(t)];case 5:return u=a.sent(),mt.addToQueue((function(){o(r({src:e,dataURL:t,width:u.naturalWidth,height:u.naturalHeight},function(e){St||(t=kt,r=kt,(St=document.createElement("canvas")).width=t,St.height=r,(_t=St.getContext("2d")).imageSmoothingEnabled=!1);var t,r;var n=e.naturalWidth,a=e.naturalHeight;if(0===a||0===n)return"logWarn(Image is empty ".concat(e.currentSrc,")"),null;if(n*a*4>wt)return{isDark:!1,isLight:!1,isTransparent:!1,isLarge:!1,isTooLarge:!0};var o=n*a,i=Math.min(1,Math.sqrt(kt/o)),u=Math.ceil(n*i),c=Math.ceil(a*i);_t.clearRect(0,0,u,c),_t.drawImage(e,0,0,n,a,0,0,u,c);var s,l,d,f,h,p,v,m=_t.getImageData(0,0,u,c).data,g=.05,b=.4,y=.7,S=0,_=0,k=0;for(d=0;dy&&k++);var w=u*c,E=w-S;return{isDark:_/E>=.7,isLight:k/E>=.7,isTransparent:S/w>=.1,isLarge:o>=48e4,isTooLarge:!1}}(u)))})),[3,7];case 6:return c=a.sent(),i(c),[3,7];case 7:return[2]}}))}))}))]}))}))}function bt(e){return n(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return new URL(e).origin!==location.origin?[3,2]:[4,w(e)];case 1:case 3:return[2,t.sent()];case 2:return[4,vt({url:e,responseType:"data-url"})]}}))}))}function yt(e){return n(this,void 0,void 0,(function(){return a(this,(function(t){return[2,new Promise((function(t,r){var n=new Image;n.onload=function(){return t(n)},n.onerror=function(){return r("Unable to load image ".concat(e))},n.src=e}))]}))}))}var St,_t,kt=1024;var wt=5242880;function Et(e,t){var r=e.dataURL,n=e.width,a=e.height,o=Ge(t).slice(0,4).map((function(e){return e.map((function(e){return e.toFixed(3)})).join(" ")})).join(" "),i=[''),"",'',''),"","",''),""].join("");return"data:image/svg+xml;base64,".concat(btoa(i))}function Ct(){mt&&mt.stopQueue(),St=null,_t=null}var xt="gradient".length,Tt="conic-",Rt=Tt.length,Vt="radial-",At="linear-";function Mt(e,t){return Boolean(e&&e.getPropertyPriority(t))}function Lt(e,t,r,n,a,o){if(e.startsWith("--")){var i=function(e,t,r,n,a,o){return e.getModifierForVariable({varName:t,sourceValue:r,rule:n,ignoredImgSelectors:a,isCancelled:o})}(n,e,t,r,a,o);if(i)return{property:e,value:i,important:Mt(r.style,e),sourceValue:t}}else if(t.includes("var(")){i=function(e,t,r){return e.getModifierForVarDependant(t,r)}(n,e,t);if(i)return{property:e,value:i,important:Mt(r.style,e),sourceValue:t}}else{if("color-scheme"===e)return null;if(e.includes("color")&&"-webkit-print-color-adjust"!==e||"fill"===e||"stroke"===e||"stop-color"===e){i=function(e,t,r){if(Nt.has(t.toLowerCase()))return t;var n=Ee(t);if(!n)return null;if(e.includes("background"))return r.style.webkitMaskImage&&"none"!==r.style.webkitMaskImage||r.style.webkitMask&&!r.style.webkitMask.startsWith("none")||r.style.mask&&"none"!==r.style.mask||r.style.getPropertyValue("mask-image")&&"none"!==r.style.getPropertyValue("mask-image")?function(e){return ut(n,e)}:function(e){return rt(n,e)};if(e.includes("border")||e.includes("outline"))return function(e){return st(n,e)};return function(e){return ut(n,e)}}(e,t,r);if(i)return{property:e,value:i,important:Mt(r.style,e),sourceValue:t}}else if("background-image"===e||"list-style-image"===e){if(i=Bt(t,r,a,o))return{property:e,value:i,important:Mt(r.style,e),sourceValue:t}}else if(e.includes("shadow")){i=function(e){var t=qt(e);if(!t)return null;return function(e){return t(e).result}}(t);if(i)return{property:e,value:i,important:Mt(r.style,e),sourceValue:t}}}return null}function Ot(){for(var e=[],t=0;t.5,d=function(e){return r(r({},s),{l:Ue(s.l+e,0,1)})},f=function(e){return r(r({},s),{l:Ue(s.l-e,0,1)})};t=Ve(f(.4)),n=Ve(l?f(.4):d(.4)),a=Ve(s),o=Ve(d(.1)),i=Ve(d(.2))}c.push("::-webkit-scrollbar {"),c.push(" background-color: ".concat(t,";")),c.push(" color: ".concat(n,";")),c.push("}"),c.push("::-webkit-scrollbar-thumb {"),c.push(" background-color: ".concat(a,";")),c.push("}"),c.push("::-webkit-scrollbar-thumb:hover {"),c.push(" background-color: ".concat(o,";")),c.push("}"),c.push("::-webkit-scrollbar-thumb:active {"),c.push(" background-color: ".concat(i,";")),c.push("}"),c.push("::-webkit-scrollbar-corner {"),c.push(" background-color: ".concat(u,";")),c.push("}"),h&&(c.push("* {"),c.push(" scrollbar-color: ".concat(a," ").concat(t,";")),c.push("}"));return c.join("\n")}(e)),e.selectionColor&&a.push(function(e){var t=[],r=Pt(e),n=r.backgroundColorSelection,a=r.foregroundColorSelection;return["::selection","::-moz-selection"].forEach((function(e){t.push("".concat(e," {")),t.push(" background-color: ".concat(n," !important;")),t.push(" color: ".concat(a," !important;")),t.push("}")})),t.join("\n")}(e)),a.join("\n")}function Pt(e){var t,n;if("auto"===e.selectionColor)t=rt({r:0,g:96,b:212},r(r({},e),{grayscale:0})),n=ut({r:255,g:255,b:255},r(r({},e),{grayscale:0}));else{var a=Te(Ee(e.selectionColor));t=e.selectionColor,n=a.l<.5?"#FFF":"#000"}return{backgroundColorSelection:t,foregroundColorSelection:n}}function It(e,t){var r=t.strict,n=[],a=["microsoft.com","docs.microsoft.com"].includes(location.hostname);return n.push("html, body, ".concat(r?"body :not(iframe)".concat(a?':not(div[style^="position:absolute;top:0;left:-"]':""):"body > :not(iframe)"," {")),n.push(" background-color: ".concat(rt({r:255,g:255,b:255},e)," !important;")),n.push(" border-color: ".concat(st({r:64,g:64,b:64},e)," !important;")),n.push(" color: ".concat(ut({r:0,g:0,b:0},e)," !important;")),n.push("}"),n.join("\n")}var Nt=new Set(["inherit","transparent","initial","currentcolor","none","unset"]);var Ft=new Map,jt=new Map;function Bt(e,t,o,i){var u,c,s=this;try{var l=function(e){for(var t=[],r=0,n=Tt.length,a=function(){var a;if([At,Vt,Tt].find((function(t){if(r-t.length>=0&&e.substring(r-t.length,r)===t)return"repeating"===e.slice(r-t.length-10,r-t.length-1)?(a="repeating-".concat(t,"gradient"),!0):"-webkit"===e.slice(r-t.length-8,r-t.length-1)?(a="-webkit-".concat(t,"gradient"),!0):(a="".concat(t,"gradient"),!0)})),!a)return"break";var o=_e(e,r+xt),i=o.start,u=o.end,c=e.substring(i+1,u-1);n=u+1+Rt,t.push({typeGradient:a,match:c,offset:a.length+2,index:r-a.length+xt,hasComma:!0})};-1!==(r=e.indexOf("gradient",n))&&"break"!==a(););return t.length&&(t[t.length-1].hasComma=!1),t}(e),d=Se(de,e);if(0===d.length&&0===l.length)return e;var f=l.map((function(e){return r({type:"gradient"},e)})).concat((u=d,c=0,u.map((function(t){var r=e.indexOf(t,c);return c=r+t.length,{match:t,index:r}}))).map((function(e){return r({type:"url",offset:0},e)}))).sort((function(e,t){return e.index>t.index?1:-1})),h=function(e,t){var n,a=e.isDark,o=e.isLight,i=e.isTransparent,u=e.isLarge,c=e.isTooLarge,s=e.width;if(c)n='url("'.concat(e.src,'")');else if(a&&i&&1===t.mode&&!u&&s>2){"Inverting dark image ".concat(e.src);var l=Et(e,r(r({},t),{sepia:Ue(t.sepia+10,0,100)}));n='url("'.concat(l,'")')}else if(o&&!i&&1===t.mode)if(u)n="none";else{"Dimming light image ".concat(e.src);var d=Et(e,t);n='url("'.concat(d,'")')}else if(0===t.mode&&o&&!u){"Applying filter to image ".concat(e.src);var f=Et(e,r(r({},t),{brightness:Ue(t.brightness-10,5,200),sepia:Ue(t.sepia+10,0,100)}));n='url("'.concat(f,'")')}else n=null;return n},p=[],v=0,m=!1;return f.forEach((function(r,u){var c=r.type,l=r.match,d=r.index,g=r.typeGradient,b=r.hasComma,y=r.offset,S=d,_=v,k=S+l.length+y;v=k,_!==S&&(m?p.push((function(){var t=e.substring(_,S);return","===t[0]&&(t=t.substring(1)),t})):p.push((function(){return e.substring(_,S)}))),m=b||!1,"url"===c?p.push(function(e){var r;if(function(e,t){if(!e||0===t.length)return!1;if(t.some((function(e){return"*"===e})))return!0;for(var r=e.split(/,\s*/g),n=function(e){var n=t[e];if(r.some((function(e){return e===n})))return{value:!0}},a=0;a0},e.prototype.addRulesForMatching=function(e){this.rulesQueue.push(e)},e.prototype.matchVariablesAndDependants=function(){var e=this;this.changedTypeVars.clear(),this.initialVarTypes=new Map(this.varTypes),this.collectRootVariables(),this.collectVariablesAndVarDep(this.rulesQueue),this.rulesQueue.splice(0),this.collectRootVarDependants(),this.varRefs.forEach((function(t,r){t.forEach((function(t){e.varTypes.has(r)&&e.resolveVariableType(t,e.varTypes.get(r))}))})),this.unknownColorVars.forEach((function(t){e.unknownBgVars.has(t)?(e.unknownColorVars.delete(t),e.unknownBgVars.delete(t),e.resolveVariableType(t,1)):e.isVarType(t,7)?e.unknownColorVars.delete(t):e.undefinedVars.add(t)})),this.unknownBgVars.forEach((function(t){null!=e.findVarRef(t,(function(t){return e.unknownColorVars.has(t)||e.isVarType(t,6)}))?e.itarateVarRefs(t,(function(t){e.resolveVariableType(t,1)})):e.isVarType(t,9)?e.unknownBgVars.delete(t):e.undefinedVars.add(t)})),this.changedTypeVars.forEach((function(t){e.typeChangeSubscriptions.has(t)&&e.typeChangeSubscriptions.get(t).forEach((function(e){e()}))})),this.changedTypeVars.clear()},e.prototype.getModifierForVariable=function(e){var t=this;return function(r){var n=e.varName,a=e.sourceValue,o=e.rule,i=e.ignoredImgSelectors,u=e.isCancelled,c=function(){var e=[],c=function(o,i,u){if(t.isVarType(n,o)){var c,s=i(n);if(Jt(a))if(er(a)){var l=ur(a,t.unstableVarValues);l||(l=1===o?"#ffffff":"#000000"),c=u(l,r)}else c=zt(a,(function(e){return i(e)}),(function(e){return u(e,r)}));else c=u(a,r);e.push({property:s,value:c})}};if(c(1,Qt,ar),c(2,Kt,or),c(4,Yt,ir),t.isVarType(n,8)){var s=Xt(n),l=a;Jt(a)&&(l=zt(a,(function(e){return Qt(e)}),(function(e){return ar(e,r)})));var d=Bt(l,o,i,u);l="function"==typeof d?d(r):d,e.push({property:s,value:l})}return e},s=new Set;return{declarations:c(),onTypeChange:{addListener:function(e){var r=function(){var t=c();e(t)};s.add(r),t.subscribeForVarTypeChange(n,r)},removeListeners:function(){s.forEach((function(e){t.unsubscribeFromVariableTypeChanges(n,e)}))}}}}},e.prototype.getModifierForVarDependant=function(e,t){var r=this;if(t.match(/^\s*(rgb|hsl)a?\(/)){var n=e.startsWith("background"),a=tr(e);return function(e){var o=ur(t,r.unstableVarValues);return o||(o=n?"#ffffff":"#000000"),(n?ar:a?or:ir)(o,e)}}return"background-color"===e?function(e){return zt(t,(function(e){return Qt(e)}),(function(t){return ar(t,e)}))}:tr(e)?function(e){return zt(t,(function(e){return Kt(e)}),(function(t){return or(t,e)}))}:"background"===e||"background-image"===e||"box-shadow"===e?function(n){var a=new Set,o=function(){var o=zt(t,(function(e){return r.isVarType(e,1)?Qt(e):r.isVarType(e,8)?Xt(e):(a.add(e),e)}),(function(e){return ar(e,n)}));if("box-shadow"===e){var i=qt(o)(n);if(i.unparseableMatchesLength!==i.matchesLength)return i.result}return o},i=o();return a.size>0?new Promise((function(e){var t=a.values().next().value,n=function(){r.unsubscribeFromVariableTypeChanges(t,n);var a=o();e(a)};r.subscribeForVarTypeChange(t,n)})):i}:e.startsWith("border")||e.startsWith("outline")?function(e){return zt(t,(function(e){return Yt(e)}),(function(t){return ir(t,e)}))}:null},e.prototype.subscribeForVarTypeChange=function(e,t){this.typeChangeSubscriptions.has(e)||this.typeChangeSubscriptions.set(e,new Set);var r=this.typeChangeSubscriptions.get(e);r.has(t)||r.add(t)},e.prototype.unsubscribeFromVariableTypeChanges=function(e,t){this.typeChangeSubscriptions.has(e)&&this.typeChangeSubscriptions.get(e).delete(t)},e.prototype.collectVariablesAndVarDep=function(e){var t=this;e.forEach((function(e){ue(e,(function(e){e.style&&le(e.style,(function(e,r){Zt(e)&&t.inspectVariable(e,r),Jt(r)&&t.inspectVarDependant(e,r)}))}))}))},e.prototype.collectRootVariables=function(){var e=this;le(document.documentElement.style,(function(t,r){Zt(t)&&e.inspectVariable(t,r)}))},e.prototype.inspectVariable=function(e,t){(this.unstableVarValues.set(e,t),Jt(t)&&er(t)&&(this.unknownColorVars.add(e),this.definedVars.add(e)),this.definedVars.has(e))||(this.definedVars.add(e),Ee(t)?this.unknownColorVars.add(e):(t.includes("url(")||t.includes("linear-gradient(")||t.includes("radial-gradient("))&&this.resolveVariableType(e,8))},e.prototype.resolveVariableType=function(e,t){var r=this.initialVarTypes.get(e)||0,n=(this.varTypes.get(e)||0)|t;this.varTypes.set(e,n),(n!==r||this.undefinedVars.has(e))&&(this.changedTypeVars.add(e),this.undefinedVars.delete(e)),this.unknownColorVars.delete(e),this.unknownBgVars.delete(e)},e.prototype.collectRootVarDependants=function(){var e=this;le(document.documentElement.style,(function(t,r){Jt(r)&&e.inspectVarDependant(t,r)}))},e.prototype.inspectVarDependant=function(e,t){var r=this;Zt(e)?this.iterateVarDeps(t,(function(t){r.varRefs.has(e)||r.varRefs.set(e,new Set),r.varRefs.get(e).add(t)})):"background-color"===e||"box-shadow"===e?this.iterateVarDeps(t,(function(e){return r.resolveVariableType(e,1)})):tr(e)?this.iterateVarDeps(t,(function(e){return r.resolveVariableType(e,2)})):e.startsWith("border")||e.startsWith("outline")?this.iterateVarDeps(t,(function(e){return r.resolveVariableType(e,4)})):"background"!==e&&"background-image"!==e||this.iterateVarDeps(t,(function(e){if(!r.isVarType(e,9)){var t=null!=r.findVarRef(e,(function(e){return r.unknownColorVars.has(e)||r.isVarType(e,6)}));r.itarateVarRefs(e,(function(e){t?r.resolveVariableType(e,1):r.unknownBgVars.add(e)}))}}))},e.prototype.iterateVarDeps=function(e,t){var r=new Set;!function(e,t){zt(e,(function(e){return t(e),e}))}(e,(function(e){return r.add(e)})),r.forEach((function(e){return t(e)}))},e.prototype.findVarRef=function(e,t,r){var n,a;if(void 0===r&&(r=new Set),r.has(e))return null;if(r.add(e),t(e))return e;var i=this.varRefs.get(e);if(!i||0===i.size)return null;try{for(var u=o(i),c=u.next();!c.done;c=u.next()){var s=c.value,l=this.findVarRef(s,t,r);if(l)return l}}catch(e){n={error:e}}finally{try{c&&!c.done&&(a=u.return)&&a.call(u)}finally{if(n)throw n.error}}return null},e.prototype.itarateVarRefs=function(e,t){this.findVarRef(e,(function(e){return t(e),!1}))},e.prototype.setOnRootVariableChange=function(e){this.onRootVariableDefined=e},e.prototype.putRootVars=function(e,t){var r,n,a=this,u=e.sheet;u.cssRules.length>0&&u.deleteRule(0);var c=new Map;le(document.documentElement.style,(function(e,r){Zt(e)&&(a.isVarType(e,1)&&c.set(Qt(e),ar(r,t)),a.isVarType(e,2)&&c.set(Kt(e),or(r,t)),a.isVarType(e,4)&&c.set(Yt(e),ir(r,t)),a.subscribeForVarTypeChange(e,a.onRootVariableDefined))}));var s=[];s.push(":root {");try{for(var l=o(c),d=l.next();!d.done;d=l.next()){var f=i(d.value,2),h=f[0],p=f[1];s.push(" ".concat(h,": ").concat(p,";"))}}catch(e){r={error:e}}finally{try{d&&!d.done&&(n=l.return)&&n.call(l)}finally{if(r)throw r.error}}s.push("}");var v=s.join("\n");u.insertRule(v)},e}());function Gt(e,t){void 0===t&&(t=0);var r=e.indexOf("var(",t);if(r>=0){var n=_e(e,r+3);return n?{start:r,end:n.end}:null}}function Ht(e,t){var r=function(e){for(var t,r=[],n=0;t=Gt(e,n);){var a=t.start,o=t.end;r.push({start:a,end:o,value:e.substring(a,o)}),n=t.end+1}return r}(e),n=r.length;if(0===n)return e;var a=e.length,o=r.map((function(e){return t(e.value)})),i=[];i.push(e.substring(0,r[0].start));for(var u=0;u=0?(t=e.substring(4,n).trim(),r=e.substring(n+1,e.length-1).trim()):(t=e.substring(4,e.length-1).trim(),r=""),{name:t,fallback:r}}function zt(e,t,r){return Ht(e,(function(e){var n,a=$t(e),o=a.name,i=a.fallback,u=t(o);return i?(n=Jt(i)?zt(i,t,r):r?r(i):i,"var(".concat(u,", ").concat(n,")")):"var(".concat(u,")")}))}function Qt(e){return"--darkreader-bg".concat(e)}function Kt(e){return"--darkreader-text".concat(e)}function Yt(e){return"--darkreader-border".concat(e)}function Xt(e){return"--darkreader-bgimg".concat(e)}function Zt(e){return e.startsWith("--")}function Jt(e){return e.includes("var(")}function er(e){return e.match(/^\s*(rgb|hsl)a?\(/)}function tr(e){return"color"===e||"caret-color"===e||"-webkit-text-fill-color"===e}var rr=/^\d{1,3}, ?\d{1,3}, ?\d{1,3}$/;function nr(e,t,r){var n=function(e){if(rr.test(e)){var t=e.split(","),r="rgb(";return t.forEach((function(e){r+="".concat(e.trim(),", ")})),r=r.substring(0,r.length-2),{isRaw:!0,color:r+=")"}}return{isRaw:!1,color:e}}(e),a=n.isRaw,o=n.color,i=Ee(o);if(i){var u=r(i,t);if(a){var c=Ee(u);return c?"".concat(c.r,", ").concat(c.g,", ").concat(c.b):u}return u}return o}function ar(e,t){return nr(e,t,rt)}function or(e,t){return nr(e,t,ut)}function ir(e,t){return nr(e,t,st)}function ur(e,t,r){void 0===r&&(r=new Set);var n=!1,a=Ht(e,(function(e){var a=$t(e),o=a.name,i=a.fallback;if(r.has(o))return n=!0,null;r.add(o);var u=t.get(o)||i,c=null;return u&&(c=Jt(u)?ur(u,t,r):u),c||(n=!0,null)}));return n?null:a}var cr={"background-color":{customProp:"--darkreader-inline-bgcolor",cssProp:"background-color",dataAttr:"data-darkreader-inline-bgcolor"},"background-image":{customProp:"--darkreader-inline-bgimage",cssProp:"background-image",dataAttr:"data-darkreader-inline-bgimage"},"border-color":{customProp:"--darkreader-inline-border",cssProp:"border-color",dataAttr:"data-darkreader-inline-border"},"border-bottom-color":{customProp:"--darkreader-inline-border-bottom",cssProp:"border-bottom-color",dataAttr:"data-darkreader-inline-border-bottom"},"border-left-color":{customProp:"--darkreader-inline-border-left",cssProp:"border-left-color",dataAttr:"data-darkreader-inline-border-left"},"border-right-color":{customProp:"--darkreader-inline-border-right",cssProp:"border-right-color",dataAttr:"data-darkreader-inline-border-right"},"border-top-color":{customProp:"--darkreader-inline-border-top",cssProp:"border-top-color",dataAttr:"data-darkreader-inline-border-top"},"box-shadow":{customProp:"--darkreader-inline-boxshadow",cssProp:"box-shadow",dataAttr:"data-darkreader-inline-boxshadow"},color:{customProp:"--darkreader-inline-color",cssProp:"color",dataAttr:"data-darkreader-inline-color"},fill:{customProp:"--darkreader-inline-fill",cssProp:"fill",dataAttr:"data-darkreader-inline-fill"},stroke:{customProp:"--darkreader-inline-stroke",cssProp:"stroke",dataAttr:"data-darkreader-inline-stroke"},"outline-color":{customProp:"--darkreader-inline-outline",cssProp:"outline-color",dataAttr:"data-darkreader-inline-outline"},"stop-color":{customProp:"--darkreader-inline-stopcolor",cssProp:"stop-color",dataAttr:"data-darkreader-inline-stopcolor"}},sr=Object.values(cr),lr={};sr.forEach((function(e){var t=e.cssProp,r=e.customProp;return lr[r]=t}));var dr=["style","fill","stop-color","stroke","bgcolor","color"],fr=dr.map((function(e){return"[".concat(e,"]")})).join(", ");function hr(){return sr.map((function(e){var t=e.dataAttr,r=e.customProp,n=e.cssProp;return["[".concat(t,"] {")," ".concat(n,": var(").concat(r,") !important;"),"}"].join("\n")})).join("\n")}var pr=new Map,vr=new Map;function mr(e,t,r){pr.has(e)&&(pr.get(e).disconnect(),vr.get(e).disconnect());var n=new WeakSet;function a(e){(function(e){var t=[];return e instanceof Element&&e.matches(fr)&&t.push(e),(e instanceof Element||b&&e instanceof ShadowRoot||e instanceof Document)&&j(t,e.querySelectorAll(fr)),t})(e).forEach((function(e){n.has(e)||(n.add(e),t(e))})),G(e,(function(a){n.has(e)||(n.add(e),r(a.shadowRoot),mr(a.shadowRoot,t,r))}))}var o=re(e,{onMinorMutations:function(e){e.additions.forEach((function(e){return a(e)}))},onHugeMutations:function(){a(e)}});pr.set(e,o);var c=0,s=null,l=q({seconds:10}),d=q({seconds:2}),f=[],h=null,p=B((function(e){e.forEach((function(e){dr.includes(e.attributeName)&&t(e.target)}))})),v=new MutationObserver((function(e){if(h)f.push.apply(f,u([],i(e),!1));else{c++;var t=Date.now();if(null==s)s=t;else if(c>=50){if(t-s0&&function(e,t){for(var r=0,n=t.length;r32||n>32?"background-color":"color",o)};K()?i():X(i)}}e.hasAttribute("stop-color")&&c("stop-color","background-color",e.getAttribute("stop-color"))}if(e.hasAttribute("stroke")){var u=e.getAttribute("stroke");c("stroke",e instanceof SVGLineElement||e instanceof SVGTextElement?"border-color":"color",u)}e.style&&le(e.style,(function(t,r){if("background-image"!==t||!r.includes("url"))if(cr.hasOwnProperty(t)||t.startsWith("--")&&!lr[t])c(t,t,r);else{var n=lr[t];if(n&&!e.style.getPropertyValue(n)&&!e.hasAttribute(n)){if("background-color"===n&&e.hasAttribute("bgcolor"))return;e.style.setProperty(t,"")}}})),e.style&&e instanceof SVGTextElement&&e.style.fill&&c("fill","color",e.style.getPropertyValue("fill")),F(a,(function(t){e.removeAttribute(cr[t].dataAttr)})),gr.set(e,yr(e,t))}}function c(r,o,i){var u=r.startsWith("--"),c=u?{}:cr[r],s=c.customProp,l=c.dataAttr,d=Lt(o,i,{style:e.style},Wt,n,null);if(d){var f=d.value;if("function"==typeof f&&(f=f(t)),u&&"object"==typeof f)f.declarations.forEach((function(t){var r=t.property,n=t.value;!(n instanceof Promise)&&e.style.setProperty(r,n)}));else e.style.setProperty(s,f),e.hasAttribute(l)||e.setAttribute(l,""),a.delete(r)}}}var _r="theme-color",kr='meta[name="'.concat(_r,'"]'),wr=null,Er=null;function Cr(e,t){var r=Ee(wr=wr||e.content);r&&(e.content=rt(r,t))}var xr=["mode","brightness","contrast","grayscale","sepia","darkSchemeBackgroundColor","darkSchemeTextColor","lightSchemeBackgroundColor","lightSchemeTextColor"];var Tr=function(){var e=[],t=null;function r(){for(var r;r=e.shift();)r();t=null}return{add:function(n){e.push(n),t||(t=requestAnimationFrame(r))},cancel:function(){e.splice(0),cancelAnimationFrame(t),t=null}}}();function Rr(){var e=0,t=new Set,r=new Map,n=new Set,a=null,o=!1,c=!1;return{modifySheet:function(s){var l=s.sourceCSSRules,d=s.theme,f=s.ignoreImageAnalysis,h=s.force,p=s.prepareSheet,v=s.isAsyncCancelled,m=0===r.size,g=new Set(r.keys()),b=function(e){var t="";return xr.forEach((function(r){t+="".concat(r,":").concat(e[r],";")})),t}(d),y=b!==a;o&&(c=!0);var S=[];if(ue(l,(function(e){var n=e.cssText,a=!1;if(g.delete(n),e.parentRule instanceof CSSMediaRule&&(n+=";".concat(e.parentRule.media.mediaText)),t.has(n)||(t.add(n),a=!0),a){m=!0;var o=[];e.style&&le(e.style,(function(t,r){var n=Lt(t,r,e,Wt,f,v);n&&o.push(n)}));var i=null;if(o.length>0){var u=e.parentRule;i={selector:e.selectorText,declarations:o,parentRule:u},S.push(i)}r.set(n,i)}else S.push(r.get(n))}),(function(){o=!0})),g.forEach((function(e){t.delete(e),r.delete(e)})),a=b,h||m||y){e++;var _=new Map,k=new Map,w=0,E=0,C={rule:null,rules:[],isGroup:!0},x=new WeakMap;n.forEach((function(e){return e()})),n.clear(),S.filter((function(e){return e})).forEach((function(t){var r=t.selector,a=t.declarations,o=V(t.parentRule),c={selector:r,declarations:[],isGroup:!1},s=c.declarations;function l(t,r,n,a){var o=++w,i={property:t,value:null,important:n,asyncKey:o,sourceValue:a};s.push(i);var u=e;r.then((function(t){t&&!v()&&u===e&&(i.value=t,Tr.add((function(){v()||u!==e||function(e){var t=_.get(e),r=t.rule,n=t.target,a=t.index;n.deleteRule(a),R(n,a,r),_.delete(e)}(o)})))}))}function f(t,r,a,o){var c=r,d=c.declarations,f=c.onTypeChange,h=++E,p=e,m=s.length,g=[];if(0===d.length){var b={property:t,value:o,important:a,sourceValue:o,varKey:h};s.push(b),g=[b]}d.forEach((function(e){if(e.value instanceof Promise)l(e.property,e.value,a,o);else{var t={property:e.property,value:e.value,important:a,sourceValue:o,varKey:h};s.push(t),g.push(t)}})),f.addListener((function(t){if(!v()&&p===e){var r=t.map((function(e){return{property:e.property,value:e.value,important:a,sourceValue:o,varKey:h}})),n=s.indexOf(g[0],m);s.splice.apply(s,u([n,g.length],i(r),!1)),g=r,function(e){var t=k.get(e),r=t.rule,n=t.target,a=t.index;n.deleteRule(a),R(n,a,r)}(h)}})),n.add((function(){return f.removeListeners()}))}o.rules.push(c),a.forEach((function(e){var t=e.property,r=e.value,n=e.important,a=e.sourceValue;if("function"==typeof r){var o=r(d);o instanceof Promise?l(t,o,n,a):t.startsWith("--")?f(t,o,n,a):s.push({property:t,value:o,important:n,sourceValue:a})}else s.push({property:t,value:r,important:n,sourceValue:a})}))}));var T=p();!function e(t,r,n){t.rules.forEach((function(t){if(t.isGroup){var a=function(e,t){var r=e.rule;if(r instanceof CSSMediaRule){var n=r.media,a=t.cssRules.length;return t.insertRule("@media ".concat(n.mediaText," {}"),a),t.cssRules[a]}return t}(t,r);e(t,a,n)}else n(t,r)}))}(C,T,(function(e,t){var r=t.cssRules.length;e.declarations.forEach((function(n){var a=n.asyncKey,o=n.varKey;null!=a&&_.set(a,{rule:e,target:t,index:r}),null!=o&&k.set(o,{rule:e,target:t,index:r})})),R(t,r,e)}))}function R(e,t,r){var n=r.selector,a=r.declarations,o="";a.forEach((function(e){var t,r,n,a,i;o+="".concat((r=(t=e).property,n=t.value,a=t.important,i=t.sourceValue,"".concat(r,": ").concat(null==n?i:n).concat(a?" !important":"",";"))," ")}));var i="".concat(n," { ").concat(o," }");e.insertRule(i,t)}function V(e){if(null==e)return C;if(x.has(e))return x.get(e);var t={rule:e,rules:[],isGroup:!0};return x.set(e,t),V(e.parentRule).rules.push(t),t}},shouldRebuildStyle:function(){return o&&!c}}}function Vr(e){return(e instanceof HTMLStyleElement||e instanceof SVGStyleElement||e instanceof HTMLLinkElement&&e.rel&&e.rel.toLowerCase().includes("stylesheet")&&e.href&&!e.disabled&&(!h||!e.href.startsWith("moz-extension://"))&&!function(e){if(!e.href)return!1;try{return"fonts.googleapis.com"===new URL(e.href).hostname}catch(t){return"Couldn't construct ".concat(e.href," as URL"),!1}}(e))&&!e.classList.contains("darkreader")&&"print"!==e.media.toLowerCase()&&!e.classList.contains("stylus")}function Ar(e,t,r){return void 0===t&&(t=[]),void 0===r&&(r=!0),Vr(e)?t.push(e):(e instanceof Element||b&&e instanceof ShadowRoot||e===document)&&(F(e.querySelectorAll('style, link[rel*="stylesheet" i]:not([disabled])'),(function(e){return Ar(e,t,!1)})),r&&G(e,(function(e){return Ar(e.shadowRoot,t,!1)}))),t}var Mr=new WeakSet,Lr=new WeakSet,Or=!1;document.addEventListener("__darkreader__inlineScriptsAllowed",(function(){Or=!0}));var Dr=0,Pr=new Map;function Ir(e,t){for(var r=t.update,o=t.loadingStart,u=t.loadingEnd,c=[],s=e;(s=s.nextElementSibling)&&s.matches(".darkreader");)c.push(s);var l=c.find((function(e){return e.matches(".darkreader--cors")&&!Lr.has(e)}))||null,d=c.find((function(e){return e.matches(".darkreader--sync")&&!Mr.has(e)}))||null,f=null,h=null,v=!1,m=!0,g=Rr(),b=new MutationObserver((function(){r()})),y={attributes:!0,childList:!0,subtree:!0,characterData:!0};function S(){return e instanceof HTMLStyleElement&&e.textContent.trim().match(fe)}function _(e,t){var r=!1;if(e){var n=void 0;e:for(var a=0,o=e.length;a=0;t--)e.deleteRule(t)}(d.sheet),h?h.run():h=W(d,"prev-sibling",(function(){R=!0,i()})),d.sheet}function i(){var e=R;R=!1,g.modifySheet({prepareSheet:o,sourceCSSRules:a,theme:t,ignoreImageAnalysis:n,force:e,isAsyncCancelled:function(){return v}}),m=0===d.sheet.cssRules.length,g.shouldRebuildStyle()&&X((function(){return r()}))}a&&(v=!1,i())},pause:j,destroy:function(){if(j(),U(l),U(d),u(),Pr.has(x)){var e=Pr.get(x);Pr.delete(x),e&&e()}},watch:function(){b.observe(e,y),e instanceof HTMLStyleElement&&M()},restore:function(){d&&(++B>10||(w(),f&&f.skip(),h&&h.skip(),m||(R=!0,r())))}}}function Nr(e,t){return n(this,void 0,void 0,(function(){return a(this,(function(r){return[2,new Promise((function(r,n){var a=function(){e.removeEventListener("load",o),e.removeEventListener("error",i),Pr.delete(t)},o=function(){a(),r()},i=function(){a(),n("Linkelement ".concat(t," couldn't be loaded. ").concat(e.href))};Pr.set(t,(function(){a(),n()})),e.addEventListener("load",o),e.addEventListener("error",i),e.href||i()}))]}))}))}function Fr(e){return n(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return e.startsWith("data:")?[4,fetch(e)]:[3,3];case 1:return[4,t.sent().text()];case 2:case 4:return[2,t.sent()];case 3:return[4,vt({url:e,responseType:"text",mimeType:"text/css",origin:window.location.origin})]}}))}))}function jr(e,t,r){return void 0===r&&(r=new Map),n(this,void 0,void 0,(function(){var n,i,u,c,s,l,d,f,h,p;return a(this,(function(a){switch(a.label){case 0:e=function(e,t){return e.replace(de,(function(e){var r=he(e);try{return"url('".concat(ie(t,r),"')")}catch(t){return e}}))}(e=function(e){return e.replace(me,"")}(e=e.replace(ve,"")),t),n=Se(fe,e),a.label=1;case 1:a.trys.push([1,10,11,12]),i=o(n),u=i.next(),a.label=2;case 2:return u.done?[3,9]:(c=u.value,s=he(c.substring(7).trim().replace(/;$/,"").replace(/screen$/,"")),l=ie(t,s),d=void 0,r.has(l)?(d=r.get(l),[3,7]):[3,3]);case 3:return a.trys.push([3,6,,7]),[4,Fr(l)];case 4:return d=a.sent(),r.set(l,d),[4,jr(d,pe(l),r)];case 5:return d=a.sent(),[3,7];case 6:return a.sent(),d="",[3,7];case 7:e=e.split(c).join(d),a.label=8;case 8:return u=i.next(),[3,2];case 9:return[3,12];case 10:return f=a.sent(),h={error:f},[3,12];case 11:try{u&&!u.done&&(p=i.return)&&p.call(i)}finally{if(h)throw h.error}return[7];case 12:return[2,e=e.trim()]}}))}))}var Br,qr,Ur=[],Wr=new Map;function Gr(e){S&&F(e.querySelectorAll(":not(:defined)"),(function(e){var t=e.tagName.toLowerCase();if(!t.includes("-")){var r=e.getAttribute("is");if(!r)return;t=r}Wr.has(t)||(Wr.set(t,new Set),function(e){return n(this,void 0,void 0,(function(){return a(this,(function(t){return[2,new Promise((function(t){if(window.customElements&&"function"==typeof customElements.whenDefined)customElements.whenDefined(e).then((function(){return t()}));else if(Hr)$r.set(e,t),document.dispatchEvent(new CustomEvent("__darkreader__addUndefinedResolver",{detail:{tag:e}}));else{var r=function(){var n=Wr.get(e);n&&n.size>0&&(n.values().next().value.matches(":defined")?t():requestAnimationFrame(r))};requestAnimationFrame(r)}}))]}))}))}(t).then((function(){if(qr){var e=Wr.get(t);Wr.delete(t),qr(Array.from(e))}}))),Wr.get(t).add(e)}))}var Hr=!1;document.addEventListener("__darkreader__inlineScriptsAllowed",(function(){Hr=!0}));var $r=new Map;function zr(e){(Hr=!0,$r.has(e.detail.tag))&&$r.get(e.detail.tag)()}function Qr(e,t,r){Kr();var n=new Set(e),a=new WeakMap,o=new WeakMap;function i(e){a.set(e,e.previousElementSibling),o.set(e,e.nextElementSibling)}function u(e){var r=e.createdStyles,u=e.removedStyles,c=e.movedStyles;r.forEach((function(e){return i(e)})),c.forEach((function(e){return i(e)})),u.forEach((function(e){return t=e,a.delete(t),void o.delete(t);var t})),r.forEach((function(e){return n.add(e)})),u.forEach((function(e){return n.delete(e)})),r.size+u.size+c.size>0&&t({created:Array.from(r),removed:Array.from(u),moved:Array.from(c),updated:[]})}function c(e){var t=e.additions,r=e.moves,n=e.deletions,a=new Set,o=new Set,i=new Set;t.forEach((function(e){return Ar(e).forEach((function(e){return a.add(e)}))})),n.forEach((function(e){return Ar(e).forEach((function(e){return o.add(e)}))})),r.forEach((function(e){return Ar(e).forEach((function(e){return i.add(e)}))})),u({createdStyles:a,removedStyles:o,movedStyles:i}),t.forEach((function(e){G(e,f),Gr(e)}))}function s(e){var t=new Set(Ar(e)),r=new Set,i=new Set,c=new Set;t.forEach((function(e){n.has(e)||r.add(e)})),n.forEach((function(e){t.has(e)||i.add(e)})),t.forEach((function(e){var t;r.has(e)||i.has(e)||(t=e).previousElementSibling===a.get(t)&&t.nextElementSibling===o.get(t)||c.add(e)})),u({createdStyles:r,removedStyles:i,movedStyles:c}),G(e,f),Gr(e)}function l(e){var r=new Set,n=new Set;e.forEach((function(e){var t=e.target;t.isConnected&&(Vr(t)?r.add(t):t instanceof HTMLLinkElement&&t.disabled&&n.add(t))})),r.size+n.size>0&&t({updated:Array.from(r),created:[],removed:Array.from(n),moved:[]})}function d(e){var t=re(e,{onMinorMutations:c,onHugeMutations:s}),r=new MutationObserver(l);r.observe(e,{attributes:!0,attributeFilter:["rel","disabled","media","href"],subtree:!0}),Ur.push(t,r),Br.add(e)}function f(e){var t=e.shadowRoot;null==t||Br.has(t)||(d(t),r(t))}e.forEach(i),d(document),G(document.documentElement,f),qr=function(e){var r=[];e.forEach((function(e){return j(r,Ar(e.shadowRoot))})),t({created:r,updated:[],removed:[],moved:[]}),e.forEach((function(e){var t=e.shadowRoot;null!=t&&(f(e),G(t,f),Gr(t))}))},document.addEventListener("__darkreader__isDefined",zr),Gr(document)}function Kr(){Ur.forEach((function(e){return e.disconnect()})),Ur.splice(0,Ur.length),Br=new WeakSet,qr=null,Wr.clear(),document.removeEventListener("__darkreader__isDefined",zr)}var Yr=new WeakMap,Xr=new WeakSet;function Zr(e){var t=!1;return{render:function(r,n){e.adoptedStyleSheets.forEach((function(a){if(!Xr.has(a)){var o=a.rules,c=new CSSStyleSheet;Rr().modifySheet({prepareSheet:function(){for(var t=c.cssRules.length-1;t>=0;t--)c.deleteRule(t);return function(t,r){var n=u([],i(e.adoptedStyleSheets),!1),a=n.indexOf(t),o=n.indexOf(r);a!==o-1&&(o>=0&&n.splice(o,1),n.splice(a+1,0,r),e.adoptedStyleSheets=n)}(a,c),Yr.set(a,c),Xr.add(c),c},sourceCSSRules:o,theme:r,ignoreImageAnalysis:n,force:!1,isAsyncCancelled:function(){return t}})}}))},destroy:function(){t=!0;var r=u([],i(e.adoptedStyleSheets),!1);e.adoptedStyleSheets.forEach((function(e){if(Xr.has(e)){var t=r.indexOf(e);t>=0&&r.splice(t,1),Yr.delete(e),Xr.delete(e)}})),e.adoptedStyleSheets=r}}}function Jr(e){document.dispatchEvent(new CustomEvent("__darkreader__inlineScriptsAllowed"));var t=Object.getOwnPropertyDescriptor(CSSStyleSheet.prototype,"addRule"),r=Object.getOwnPropertyDescriptor(CSSStyleSheet.prototype,"insertRule"),n=Object.getOwnPropertyDescriptor(CSSStyleSheet.prototype,"deleteRule"),a=Object.getOwnPropertyDescriptor(CSSStyleSheet.prototype,"removeRule"),o=e?Object.getOwnPropertyDescriptor(Document.prototype,"styleSheets"):null,c=["baidu.com","baike.baidu.com","ditu.baidu.com","map.baidu.com","maps.baidu.com","haokan.baidu.com","pan.baidu.com","passport.baidu.com","tieba.baidu.com","www.baidu.com"].includes(location.hostname),s=c?Object.getOwnPropertyDescriptor(Element.prototype,"getElementsByTagName"):null,l=function(){Object.defineProperty(CSSStyleSheet.prototype,"addRule",t),Object.defineProperty(CSSStyleSheet.prototype,"insertRule",r),Object.defineProperty(CSSStyleSheet.prototype,"deleteRule",n),Object.defineProperty(CSSStyleSheet.prototype,"removeRule",a),document.removeEventListener("__darkreader__cleanUp",l),document.removeEventListener("__darkreader__addUndefinedResolver",d),e&&Object.defineProperty(Document.prototype,"styleSheets",o),c&&Object.defineProperty(Element.prototype,"getElementsByTagName",s)},d=function(e){customElements.whenDefined(e.detail.tag).then((function(){document.dispatchEvent(new CustomEvent("__darkreader__isDefined",{detail:{tag:e.detail.tag}}))}))};document.addEventListener("__darkreader__cleanUp",l),document.addEventListener("__darkreader__addUndefinedResolver",d);var f=new Event("__darkreader__updateSheet");Object.defineProperty(CSSStyleSheet.prototype,"addRule",Object.assign({},t,{value:function(e,r,n){return t.value.call(this,e,r,n),this.ownerNode&&!this.ownerNode.classList.contains("darkreader")&&this.ownerNode.dispatchEvent(f),-1}})),Object.defineProperty(CSSStyleSheet.prototype,"insertRule",Object.assign({},r,{value:function(e,t){var n=r.value.call(this,e,t);return this.ownerNode&&!this.ownerNode.classList.contains("darkreader")&&this.ownerNode.dispatchEvent(f),n}})),Object.defineProperty(CSSStyleSheet.prototype,"deleteRule",Object.assign({},n,{value:function(e){n.value.call(this,e),this.ownerNode&&!this.ownerNode.classList.contains("darkreader")&&this.ownerNode.dispatchEvent(f)}})),Object.defineProperty(CSSStyleSheet.prototype,"removeRule",Object.assign({},a,{value:function(e){a.value.call(this,e),this.ownerNode&&!this.ownerNode.classList.contains("darkreader")&&this.ownerNode.dispatchEvent(f)}})),e&&Object.defineProperty(Document.prototype,"styleSheets",Object.assign({},o,{get:function(){var e=this,t=function(){var t=u([],i(o.get.call(e)),!1).filter((function(e){return!e.ownerNode.classList.contains("darkreader")}));return t.item=function(e){return t[e]},Object.setPrototypeOf(t,StyleSheetList.prototype)},r=t();return new Proxy(r,{get:function(e,r){return t()[r]}})}})),c&&Object.defineProperty(Element.prototype,"getElementsByTagName",Object.assign({},s,{value:function(e){var t=this;if("style"!==e)return s.value.call(this,e);var r=function(){var r=s.value.call(t,e);return Object.setPrototypeOf(u([],i(r),!1).filter((function(e){return!e.classList.contains("darkreader")})),NodeList.prototype)},n=r();return new Proxy(n,{get:function(e,t){return r()[Number(t)||t]}})}}))}var en=function(){if("randomUUID"in crypto){var e=crypto.randomUUID();return e.substring(0,8)+e.substring(9,13)+e.substring(14,18)+e.substring(19,23)+e.substring(24)}return Array.from(crypto.getRandomValues(new Uint8Array(16))).map((function(e){return((t=e)<16?"0":"")+t.toString(16);var t})).join("")}(),tn=new Map,rn=[],nn=null,an=null,on=null,un=null,cn=null;function sn(e,t){void 0===t&&(t=document.head||document);var r=t.querySelector(".".concat(e));return r||((r=document.createElement("style")).classList.add("darkreader"),r.classList.add(e),r.media="screen",r.textContent=""),r}var ln=new Map;function dn(e,t){ln.has(t)&&ln.get(t).stop(),ln.set(t,W(e,"parent"))}function fn(){var e=sn("darkreader--fallback",document);e.textContent=It(nn,{strict:!0}),document.head.insertBefore(e,document.head.firstChild),dn(e,"fallback");var t=sn("darkreader--user-agent");t.textContent=Dt(nn,on,nn.styleSystemControls),document.head.insertBefore(t,e.nextSibling),dn(t,"user-agent");var n,a,o=sn("darkreader--text");nn.useFont||nn.textStroke>0?o.textContent=(n=nn,(a=[]).push('*:not(pre, pre *, code, .far, .fa, .glyphicon, [class*="vjs-"], .fab, .fa-github, .fas, .material-icons, .icofont, .typcn, mu, [class*="mu-"], .glyphicon, .icon) {'),n.useFont&&n.fontFamily&&a.push(" font-family: ".concat(n.fontFamily," !important;")),n.textStroke>0&&(a.push(" -webkit-text-stroke: ".concat(n.textStroke,"px !important;")),a.push(" text-stroke: ".concat(n.textStroke,"px !important;"))),a.push("}"),a.join("\n")):o.textContent="",document.head.insertBefore(o,e.nextSibling),dn(o,"text");var i=sn("darkreader--invert");an&&Array.isArray(an.invert)&&an.invert.length>0?i.textContent=["".concat(an.invert.join(", ")," {")," filter: ".concat(dt(r(r({},nn),{contrast:0===nn.mode?nn.contrast:Ue(nn.contrast-10,0,100)}))," !important;"),"}"].join("\n"):i.textContent="",document.head.insertBefore(i,o.nextSibling),dn(i,"invert");var u=sn("darkreader--inline");u.textContent=hr(),document.head.insertBefore(u,i.nextSibling),dn(u,"inline");var c=sn("darkreader--override");c.textContent=an&&an.css?vn(an.css):"",document.head.appendChild(c),dn(c,"override");var s=sn("darkreader--variables"),l=Pt(nn),d=nn.darkSchemeBackgroundColor,f=nn.darkSchemeTextColor,h=nn.lightSchemeBackgroundColor,p=nn.lightSchemeTextColor,v=nn.mode,m=0===v?h:d,g=0===v?p:f;m=rt(Ee(m),nn),g=ut(Ee(g),nn),s.textContent=[":root {"," --darkreader-neutral-background: ".concat(m,";")," --darkreader-neutral-text: ".concat(g,";")," --darkreader-selection-background: ".concat(l.backgroundColorSelection,";")," --darkreader-selection-text: ".concat(l.foregroundColorSelection,";"),"}"].join("\n"),document.head.insertBefore(s,u.nextSibling),dn(s,"variables");var b=sn("darkreader--root-vars");document.head.insertBefore(b,s.nextSibling);var y=!(an&&an.disableStyleSheetsProxy),S=function(e,t){void 0===t&&(t=document.head||document);var r=t.querySelector(".".concat(e));return r||((r=document.createElement("script")).classList.add("darkreader"),r.classList.add(e)),r}("darkreader--proxy");S.append("(".concat(Jr,")(").concat(y,")")),document.head.insertBefore(S,b.nextSibling),S.remove()}var hn=new Set;function pn(e){var t=sn("darkreader--inline",e);t.textContent=hr(),e.insertBefore(t,e.firstChild);var n=sn("darkreader--override",e);n.textContent=an&&an.css?vn(an.css):"",e.insertBefore(n,t.nextSibling);var a=sn("darkreader--invert",e);an&&Array.isArray(an.invert)&&an.invert.length>0?a.textContent=["".concat(an.invert.join(", ")," {")," filter: ".concat(dt(r(r({},nn),{contrast:0===nn.mode?nn.contrast:Ue(nn.contrast-10,0,100)}))," !important;"),"}"].join("\n"):a.textContent="",e.insertBefore(a,n.nextSibling),hn.add(e)}function vn(e){return e.replace(/\${(.+?)}/g,(function(e,t){var r=Ee(t);return r?Xe(r,nn,Ze):t}))}function mn(){var e=document.querySelector(".darkreader--fallback");e&&(e.textContent="")}var gn=0,bn=new Set;function yn(e){var t=++gn;var r=Ir(e,{update:function(){var e=r.details({secondRound:!0});e&&(Wt.addRulesForMatching(e.rules),Wt.matchVariablesAndDependants(),r.render(nn,un))},loadingStart:function(){if(!H()||!xn){bn.add(t),"Current amount of styles loading: ".concat(bn.size);var e=document.querySelector(".darkreader--fallback");e.textContent||(e.textContent=It(nn,{strict:!1}))}},loadingEnd:function(){bn.delete(t),"Removed loadingStyle ".concat(t,", now awaiting: ").concat(bn.size),0===bn.size&&H()&&mn()}});return tn.set(e,r),r}function Sn(e){var t=tn.get(e);t&&(t.destroy(),tn.delete(e))}var _n=B((function(e){tn.forEach((function(e){return e.render(nn,un)})),rn.forEach((function(e){return e.render(nn,un)})),e&&e()})),kn=function(){_n.cancel()};function wn(){0!==bn.size||mn()}var En,Cn=null,xn=!document.hidden;function Tn(){document.removeEventListener("visibilitychange",Cn),Cn=null}function Rn(){function e(){var e,t;!function(){kn();var e=Ar(document).filter((function(e){return!tn.has(e)})).map((function(e){return yn(e)}));e.map((function(e){return e.details({secondRound:!1})})).filter((function(e){return e&&e.rules.length>0})).forEach((function(e){Wt.addRulesForMatching(e.rules)})),Wt.matchVariablesAndDependants(),Wt.setOnRootVariableChange((function(){Wt.putRootVars(document.head.querySelector(".darkreader--root-vars"),nn)})),Wt.putRootVars(document.head.querySelector(".darkreader--root-vars"),nn),tn.forEach((function(e){return e.render(nn,un)})),0===bn.size&&mn(),e.forEach((function(e){return e.watch()}));var t=function(e){for(var t=[],r=0,n=e.length;r0&&j(t,r)})),t.forEach((function(e){return Sr(e,nn,cn,un)})),Vn(document)}(),Qr(Array.from(tn.keys()),(function(e){var t=e.created,r=e.updated,n=e.removed,a=e.moved,o=n,i=t.concat(r).concat(a).filter((function(e){return!tn.has(e)})),u=a.filter((function(e){return tn.has(e)}));o.forEach((function(e){return Sn(e)}));var c=i.map((function(e){return yn(e)}));c.map((function(e){return e.details({secondRound:!1})})).filter((function(e){return e&&e.rules.length>0})).forEach((function(e){Wt.addRulesForMatching(e.rules)})),Wt.matchVariablesAndDependants(),c.forEach((function(e){return e.render(nn,un)})),c.forEach((function(e){return e.watch()})),u.forEach((function(e){return tn.get(e).restore()}))}),(function(e){pn(e),Vn(e)})),e=function(e){Sr(e,nn,cn,un),e===document.documentElement&&(e.getAttribute("style")||"").includes("--")&&(Wt.matchVariablesAndDependants(),Wt.putRootVars(document.head.querySelector(".darkreader--root-vars"),nn))},t=function(e){pn(e);var t=e.querySelectorAll(fr);t.length>0&&F(t,(function(e){return Sr(e,nn,cn,un)}))},mr(document,e,t),G(document.documentElement,(function(r){mr(r.shadowRoot,e,t)})),z(wn)}var t,r,n,a;fn(),document.hidden&&!nn.immediateModify?(t=e,r=Boolean(Cn),Cn=function(){document.hidden||(Tn(),t(),xn=!0)},r||document.addEventListener("visibilitychange",Cn)):e(),n=nn,(a=document.querySelector(kr))?Cr(a,n):(Er&&Er.disconnect(),(Er=new MutationObserver((function(e){e:for(var t=0;t0){var t=Zr(e);rn.push(t),t.render(nn,un)}}catch(e){}}function An(){tn.forEach((function(e){return e.pause()})),F(ln.values(),(function(e){return e.stop()})),ln.clear(),Kr(),pr.forEach((function(e){return e.disconnect()})),vr.forEach((function(e){return e.disconnect()})),pr.clear(),vr.clear(),Q(wn),Y.clear()}function Mn(){if(document.querySelector('meta[name="darkreader-lock"]'))return!0;var e,t=document.querySelector('meta[name="darkreader"]');return t?t.content!==en:((e=document.createElement("meta")).name="darkreader",e.content=en,document.head.appendChild(e),(En=new MutationObserver((function(){document.querySelector('meta[name="darkreader-lock"]')&&(En.disconnect(),On())}))).observe(document.head,{childList:!0,subtree:!0}),!1)}function Ln(e,t,r){if(nn=e,(an=t)?(un=Array.isArray(an.ignoreImageAnalysis)?an.ignoreImageAnalysis:[],cn=Array.isArray(an.ignoreInlineStyle)?an.ignoreInlineStyle:[]):(un=[],cn=[]),nn.immediateModify&&(H=function(){return!0}),on=r,document.head){if(Mn())return;document.documentElement.setAttribute("data-darkreader-mode","dynamic"),document.documentElement.setAttribute("data-darkreader-scheme",nn.mode?"dark":"dimmed"),Rn()}else{if(!h){var n=sn("darkreader--fallback");document.documentElement.appendChild(n),n.textContent=It(nn,{strict:!0})}var a=new MutationObserver((function(){if(document.head){if(a.disconnect(),Mn())return void On();Rn()}}));a.observe(document,{childList:!0,subtree:!0})}}function On(){document.documentElement.removeAttribute("data-darkreader-mode"),document.documentElement.removeAttribute("data-darkreader-scheme"),Wt.clear(),ne.clear(),Tn(),kn(),An(),Ut(),ke.clear(),we.clear(),U(document.querySelector(".darkreader--fallback")),document.head&&(!function(){Er&&(Er.disconnect(),Er=null);var e=document.querySelector(kr);e&&wr&&(e.content=wr)}(),U(document.head.querySelector(".darkreader--user-agent")),U(document.head.querySelector(".darkreader--text")),U(document.head.querySelector(".darkreader--invert")),U(document.head.querySelector(".darkreader--inline")),U(document.head.querySelector(".darkreader--override")),U(document.head.querySelector(".darkreader--variables")),U(document.head.querySelector(".darkreader--root-vars")),U(document.head.querySelector('meta[name="darkreader"]')),document.dispatchEvent(new CustomEvent("__darkreader__cleanUp")),U(document.head.querySelector(".darkreader--proxy"))),hn.forEach((function(e){U(e.querySelector(".darkreader--inline")),U(e.querySelector(".darkreader--override"))})),hn.clear(),F(tn.keys(),(function(e){return Sn(e)})),bn.clear(),Pr.clear(),F(document.querySelectorAll(".darkreader"),U),rn.forEach((function(e){e.destroy()})),rn.splice(0),En&&En.disconnect()}var Dn=/url\(\"(blob\:.*?)\"\)/g;function Pn(e){return n(this,void 0,void 0,(function(){var t,r;return a(this,(function(n){switch(n.label){case 0:return t=[],Se(Dn,e,1).forEach((function(e){var r=w(e);t.push(r)})),[4,Promise.all(t)];case 1:return r=n.sent(),[2,e.replace(Dn,(function(){return'url("'.concat(r.shift(),'")')}))]}}))}))}function In(){return n(this,void 0,void 0,(function(){function e(e,r){var n=document.querySelector(e);n&&n.textContent&&(t.push("/* ".concat(r," */")),t.push(n.textContent),t.push(""))}var t,r,n,o,i;return a(this,(function(a){switch(a.label){case 0:return t=['/*\n _______\n / \\\n .==. .==.\n (( ))==(( ))\n / "==" "=="\\\n /____|| || ||___\\\n ________ ____ ________ ___ ___\n | ___ \\ / \\ | ___ \\ | | / /\n | | \\ \\ / /\\ \\ | | \\ \\| |_/ /\n | | ) / /__\\ \\ | |__/ /| ___ \\\n | |__/ / ______ \\| ____ \\| | \\ \\\n_______|_______/__/ ____ \\__\\__|___\\__\\__|___\\__\\____\n| ___ \\ | ____/ / \\ | ___ \\ | ____| ___ \\\n| | \\ \\| |___ / /\\ \\ | | \\ \\| |___| | \\ \\\n| |__/ /| ____/ /__\\ \\ | | ) | ____| |__/ /\n| ____ \\| |__/ ______ \\| |__/ /| |___| ____ \\\n|__| \\__\\____/__/ \\__\\_______/ |______|__| \\__\\\n https://darkreader.org\n*/\n\n/*! Dark reader generated CSS | Licensed under MIT https://github.com/darkreader/darkreader/blob/main/LICENSE */\n'],e(".darkreader--fallback","Fallback Style"),e(".darkreader--user-agent","User-Agent Style"),e(".darkreader--text","Text Style"),e(".darkreader--invert","Invert Style"),e(".darkreader--variables","Variables Style"),r=[],document.querySelectorAll(".darkreader--sync").forEach((function(e){F(e.sheet.cssRules,(function(e){e&&e.cssText&&r.push(e.cssText)}))})),r.length?(n=function(e){function t(e){return e.replace(/^\s+/,"")}function r(e){return 0===e?"":" ".repeat(4*e)}if(e.length<5e4)for(var n=/[^{}]+{\s*}/;n.test(e);)e=e.replace(n,"");for(var a=e.replace(/\s{2,}/g," ").replace(/\{/g,"{\n").replace(/\}/g,"\n}\n").replace(/\;(?![^\(|\"]*(\)|\"))/g,";\n").replace(/\,(?![^\(|\"]*(\)|\"))/g,",\n").replace(/\n\s*\n/g,"\n").split("\n"),o=0,i=[],u=0,c=a.length;ub#PQo)9=~1yAgMHcXuQ1M%;;e!X_a?Anr!o-95zJfp~~3af2A#4Lr~HzPIZ8 z=T_a`t(}?fU-!tF>6z(0zZZXR02qq03bFtQ1OOn&2l%}LNCD7L&-DBY4IvnKm}f$O zgM)=fLPSDBLPSJFMnOkKMn*?LL`20xL&w0t#Kc5G#m2$L#6gE-pN)W?H6dD%FD5b~ zGKBm8NWc34Oay2!Ir)&l@o9aLKX z!vxVd7~9teJ_Map!)=TE_^j5a z2sDT6dwcm52wWny&l z)kESXUwiaA?P?>|KPMmk#iCMergaLwYaqvbQlc*7`I+>No%H({tZZ&-VmV;(O>?97 z9%ZTLFSfYT8hv|kY z1Ox9#)s<4JOI-k_y3%h)qk5Vf0OkID>mQ5Igy!b}dIQ#&NA#mTySYeVO;?LG?kUwAAm)r1^|foLg}cQ z5HkC=)so8r0DiaS9~m4&9mUUx>*qXzx;SW$n6IWq$Mg1&EWYtX$oueSdpK59_~+Ht zfoLFPsm7XJKKxi%@9vU)cdf(vy}t4p3d4-b2#DqcJYMZjr{nn7&7(?Na+tjU5({FXQMtVNOu)Ka{$1n;o=w1z)xL3-E4n-_U}>& zvbuO!|0L~DeLk`#-73-*_;B<6`&mtnDG>NG;OE`d`1thn#~}9>wG%{+{o(L8PdMOb zQ}BE4B=GB|nj}7pzX4L=N13X@LV57Rb-+&`+VF>b%FWq&`^y*S!_#7*TCseWXBFUa zW%C>@fG`Pbbe;pwI;IufU_wrBV7V5>-<$_GPcCTLy z0AP}iOn4RZ(dl$``R4%tL)nH0dSmW$9iZ`3Wl)MxBTA8*EgS-AyVaXbeKP>1$!MRK z5}QP{y*7&@&!`W&H2d$wMCI6|CsJALu`W~9QVL%_MWcsUdB|ev)_+8uTK*s*Pgpao zCPX*;x0l0W=`(!r)f8s}+h~r^g4ghb%Vq%Wl?m>C8ZVb$omDH(_XXYHp#AptPxlec8>Z)(K5*-o5i^8!8k4AB9A?O|Q(`itdhy!r*dTfZD= z74-m!YdPuAnXWq))E#~w%WdPZpTTG1KAB1m0DJ4Cz4L2>h@GQEDmNy$7c)X<#7i3h zQuwR8BErwx6xV3yL%gjnR|v2R_ZC$EfczS9V_dVS2MRU#J;z6pxV!KBHQhn(HZN3_ ze4K1v1^Zdj)Hv@jMA6b-!la;f*4x6~1+pNCN<=$v)i&^>!tn9geeC}Eu>a*&ay0!V zxeNd(z6wB&77hFn$N5op#1liakb5QaMTNVkzv0slO~#O4UB8kX^%P^hb}UB>^YE`APHW#uY%^w5lL3X!>5rF|;vj}1{N{O=ZI%1C zU)FS%yZeLn+6rb_-jEZlYgVs~-U3yt-3K}gJqeq%JZPmiMgWYkO)&dF&1y>{--Bdb z@^7F~|IG{lhdlQo=Tl0}e!t`EWpCc9n36LB08o;HI7i~^y&gyW1I1DRAa#YSUKHSi zxI$3DPt7xpw2Jf>umy`~-qnWI07##n8Uujqb`26Y&B;UgyZ3-{Tib)Xy@EJ~ z=2ST6uh$j5&lUk3W6_n0FfjcCD*&o_^k{~?`gRihJmmnu?pr75DuF8&v-XV4ag zAQW9^)snk$ zUN8}yTIoh%DKdCd#a#;#a5gWVs(#b`2Lcr_5y;eg{aCjgT?&$4$oA}M)kN2WtTyCO z<~`xfS|XA}@IO#`(@fTtLUs>;2KI9H_(up3+VrufJxR@rBM__3oCBb4 zlDe3GWyHtZYSCSREdcS*4j2Fg*FNX|E1H?2!T)whB*J%*P)63O5s|6 z`RblY)}!%%hjD?YxeJ19S0!uq|B7+eCwSNj7XtTVynh31fEdpr#4eon69f1k1UzD$ z$)!vO^C)Y)NsoTO^$uhJps$OP|CPf2?tZ^|(C3yOD*a0pPBPeSgx{~*^GANviU z>$CrCzt4?8CF%PTusKHj`jdbTz97drG47cLKg;p>LXkYVAP7Fq)l77Ykt7}DJ{y0gi0NZ@k8Ar^HGVE5 zZG_HeqYJ}=Kj%5&4+}CngVBDq!jJ?V>h776#r#+MdAzkdEvv4E+p}Y++pXN;AquS3 zJxAfe5ymH{S`q5)sCOrIa#n)$$t7Q(z<;U%fc%3Lp$q&m(xu~#hGUa}D`I0~pD$gQ zXgLBQL~G4i5lwP>w=1N}81^l<{@wrR0J-+X=p}5%AKDHVstO_;!z*pc+uAEC1hq(T z@1|I1j!Si*5K z+iu7pBqAnuoH6d3au4xH&jg~X_OS<~iss7dhuZDHt?jN=er_b_?mc`&Rsylk(bJ1{ zM?odpIZVlm_$S{3S2zA>!8TQ-AlxbBYdnS;bN3h-^Urq)puKBbB#N%j8g7x@Kh{Ic z7<6+Ku@cG8`J({SO*`OoiMSOk4hB_cn6a{EIhbTc$gb|74lSu#tQ5H4G6Q9++FU0~ zne{S5e^i(Q4VxsxoFo9A&&sfapQ9Z<#~rL>1-Gs+O!#{^2MvN@H4d`KUUzmRvSK_d zuvESXw;CXlOaln(%0jjeyPFP2Je;P)SDljfWLkNr?Rr2*`!&JdHp;!vco<~!{z0Eh z4DoszanQ7*5ht02=HeN=9v%-?`N7{u}B2?+dj1^XMoD-#Alugo8{oxsQ% zZvmPcIYWj%Z=Wk|sqD&Bwrs3va!boyf=J;)M(f)gF^g6%j5k{b%az#qDCG5QSvxB(F+6>Io|Mi3v% z`nl1GIM4yOayI<+7X!2VRRhrWBH~bfRtl)ElVxq{No}$H_*blI#8V5un%MAlD8P*TgJPrLiz zvBMbm%z_OK5mp&BNI3`X$>vbdFzrBkhUexNRKN-Knre?Zo!}V+00t@AHLqt5uA{u; z$Y^M+a+P`_;K*Vreyq2~TMWf=aq$tuOn&z@;!8f`|EmBXaF<(Ae(q1P1w?;}J^@h9 z_n*!lwjBSFLe3jJHCiqJKxTh)^yJl{-&!N^r#*krjZ1>42q43SJ@dbD6)1h8yd_vw)c?92QmVH z`x}r20HMH1$h`{vUFQTO4_)^#l?yWolcqkm_D@Jo%)`^17`VTQj#w@uI)e;JlmIJ2JnJ+k+ue+-grB^*5 zOu+uG+4oYHcR^BTTz}?g_`WAgXBCkJ+ec8_bfIIREs5xJ{lwp@x&|w4 z)~*1)i<>f`AiFsy2p2Scxbk7yaxIo0+S4mf^tJHeEjfh!)%_ibDO+seX9sb`BLROw zW74k0=hcT?d(qsI*(8|8#gj|uxo!;<#%7SJ|%7rBVA$)_s zd6dS#n+t$)yPf-&Wo7uGsOL}ih2o!q2LPr-TsMoqVyHHbdUIqC5h$9(xIJXHXI%FV zGbXnP=>i$(z}YVwds^r*dZsqeYuA(T{B_Og#Wl zT#)_+wB~$qP8z;XLiDU?f&o)~ZwmkpKiACQ{ac57{D?9=VujBx?S7KO^?O5N1W;r` zW%FO4*@||5TghV-S$Cdo=%^eRt)vN*7K ze49DL??eCyP8N~|p%*B9^?jJ(t$jT5mJre%1%phkT+rkshymz=BM;)L_xDx50hTGq z8QX)zS)8y-8P!qkxu-Q!ZHb~AfWx(4w3Rrd>~udF2SDSCRn9#RCvV4LgC*p-$H2%h zx;U5tfYtH|FV__qBH}g}H+QJ59%o`zo-0yJ0}FzJ zgNFa(KA`_s_rZ5_IrGOJyy0t3tsG7HI&;Y_o@WkBb;9lTl)|Uxd!GZvFm;*9zGtpb zcVjHY*$J6(p|6}`lzPCkGN|S2{zuYZ2_6nk4?`;r~aVIK@x=2W@BkbdI# zW?_q0&AGUy%#fpRwNQGdjZ^a!0BSCFjn<3qnL7XgkF`=buPL{YS05~l0Ji{$LAJv? zNQ;4hElB(<5Dn5C01AGh2Y}i?5P;-C{g5pl$euNrjE{pj$xWn&>}m*mh_C+e$BJCH zdsei;_V7y;^Gg$f5eVODQ9<*nwe7$KntSyZ8{3!14G0sji>p8G9%nlH+cbzQ{+>EE z`x?7$&=(?sE^N_MI$hnTnFSZto)S;9&9wRTK=>ZFQKaw7#P5bRpmUA{wQZ)`y?G#! zLjWymSIKI*jQ?XCEXlBW?)E($%kvyU4vHsAy-$kGm}&rFXWqxQOdKB@IhsKv!!368 z;fcO$qDnsJ@M14B(Xz=tK-lb4nI`M;!uyslFFs)0WVt78K%QAulhe!^P#gUHI|i&S zCj`Y&mYsNJW64)H--u2q7y#kGwK~P0iE70<-Hujw2XW+y_duAayw5%V51~M&^D`0J znEgos-{Zw0@jqGav2NMf%D;IY3!%Saf(5V4e^fqOcZAPhj|xdE#D+RO!#K)cR%ZGs zK0T1KcocbMc_sR_nQ-G|fFVtBuC!Jh9nn5pyl^ODYTRyY{5~AU?Gxt-d1h9D*6XUYb!&$PRy zxMiVt%PQFZ(g`nxCPEf~BOGWHlal36^o{%kr^tw|~QI0B-@eaT^ z)+h?6dr-?5uGm)kBGX&xH<5R+h#ITcNhUjswRmG$cb^~6>=$nKXc8UGL>t7ms&{I{ za7aw=RL@u*6s?&um=MpVBhjOm4AU!E6K$@ovGbii{n%jer{_wp1773B@NXbNhZ(+l z&83df$Nj=+r;e8L>(M9K0RdH`0d@lTmeaB+>3+@#sEB}p{2F`?gxn(pejJ?Z(7Ole zfQpe8!rSslI8oOZA~IK&tJG#!V{rYaA*Y7TtTxD)>}RgpG6iiM>aXf=-ZuoDe&s&y zJZ^~T*hRJ=K0>oXp(VY1P2pHm$hSX>0CvS_ZW4RpRP}Pm5Crxi5R`tL!}oy%O(zsu zu3u``<9dYnrz-GBPL}T>nW15;W1cxbCH6d}kJ$&2xqKTP8pc7TB3~*+2O(9bVnU@9 zzQ-g55=N?3%#q?H(YwYdVNvAjr;dgY%uyq~;gAK(ij1~2$`Mjq_XR`Kr4Zlx#Po?q zGPe|x)M21*TeJg5XLTuR-)={B)H+dksd9hxBZI(F82yeuZ(_t(iCAoQ4PGVpWaXVU zRIKDcb%|?|VcWTYe5*MtDb)=jqRJyg>CWgPB8`J$o6V)JhY>8N9b^}j+5n$b1 zwxaIwp-bxwL~S8e4V#$Y&q2PYqtKh`aiYmwpJGG)OF+fL|LY3FcE~6HZza;*FKdca zHO^_cimOaU;mHh@z z$32JbWE9hacm*TWyjNn8G3$n7zC&B~$2>qW_(1iAm;klS%0A|JTow_!fp1|t!Uxp` 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 RE^=W)idpN5{{ZKI|Jj)uHa`FW diff --git a/index.html b/index.html index 80dd4a8..81e8b0e 100644 --- a/index.html +++ b/index.html @@ -4,6 +4,7 @@ layout: default