From 163e81a3c743094203d719919d3637b8a01c17fc Mon Sep 17 00:00:00 2001 From: Pk11 Date: Sun, 20 Dec 2020 22:18:48 -0600 Subject: [PATCH] Initial site TWiLight wiki + NightScript's DS Index in English and a couple pages in Japanese for testing --- .gitignore | 7 + 404.md | 10 + Gemfile | 30 ++ _config.yml | 18 + _data/en-US/nav.json | 14 + _data/en-US/strings.json | 8 + _data/ja-JP/nav.json | 14 + _data/ja-JP/strings.json | 8 + _includes/anchor-headings.html | 110 ++++++ _includes/common-js.html | 1 + _includes/favicon.html | 17 + _includes/footer.html | 16 + _includes/head.html | 20 + _includes/nav.html | 62 +++ _includes/seo.html | 16 + _layouts/compress.html | 10 + _layouts/default.html | 29 ++ _layouts/wiki.html | 63 +++ assets/css/dark.scss | 35 ++ assets/css/light.scss | 43 ++ assets/css/style.scss | 368 ++++++++++++++++++ .../images/favicon/android-icon-144x144.png | Bin 0 -> 7874 bytes .../images/favicon/android-icon-192x192.png | Bin 0 -> 11308 bytes assets/images/favicon/android-icon-36x36.png | Bin 0 -> 2093 bytes assets/images/favicon/android-icon-48x48.png | Bin 0 -> 2614 bytes assets/images/favicon/android-icon-72x72.png | Bin 0 -> 3717 bytes assets/images/favicon/android-icon-96x96.png | Bin 0 -> 4930 bytes assets/images/favicon/apple-icon-114x114.png | Bin 0 -> 5942 bytes assets/images/favicon/apple-icon-120x120.png | Bin 0 -> 6302 bytes assets/images/favicon/apple-icon-144x144.png | Bin 0 -> 7874 bytes assets/images/favicon/apple-icon-152x152.png | Bin 0 -> 8539 bytes assets/images/favicon/apple-icon-180x180.png | Bin 0 -> 10860 bytes assets/images/favicon/apple-icon-57x57.png | Bin 0 -> 3008 bytes assets/images/favicon/apple-icon-60x60.png | Bin 0 -> 3152 bytes assets/images/favicon/apple-icon-72x72.png | Bin 0 -> 3717 bytes assets/images/favicon/apple-icon-76x76.png | Bin 0 -> 3883 bytes .../images/favicon/apple-icon-precomposed.png | Bin 0 -> 11882 bytes assets/images/favicon/apple-icon.png | Bin 0 -> 11882 bytes assets/images/favicon/browserconfig.xml | 2 + assets/images/favicon/favicon-16x16.png | Bin 0 -> 1272 bytes assets/images/favicon/favicon-32x32.png | Bin 0 -> 1908 bytes assets/images/favicon/favicon-96x96.png | Bin 0 -> 4930 bytes assets/images/favicon/manifest.json | 41 ++ assets/images/favicon/ms-icon-144x144.png | Bin 0 -> 7874 bytes assets/images/favicon/ms-icon-150x150.png | Bin 0 -> 8389 bytes assets/images/favicon/ms-icon-310x310.png | Bin 0 -> 23888 bytes assets/images/favicon/ms-icon-70x70.png | Bin 0 -> 3598 bytes assets/js/relativeTime.js | 19 + assets/js/rescript.js | 12 + assets/js/search.js | 11 + assets/js/sort.js | 37 ++ favicon.ico | Bin 0 -> 1150 bytes pages/_en-US/ds-index/dsi-twl-firm.md | 46 +++ pages/_en-US/ds-index/hardmod.md | 14 + pages/_en-US/ds-index/homebrew.md | 45 +++ pages/_en-US/ds-index/index.md | 11 + pages/_en-US/ds-index/retail-roms.md | 73 ++++ pages/_en-US/ds-index/wifi.md | 24 ++ pages/_en-US/index.md | 9 + .../_en-US/twilightmenu/creating-ram-disks.md | 27 ++ .../twilightmenu/custom-boot-splashes.md | 18 + .../_en-US/twilightmenu/custom-dsi-3ds-sfx.md | 51 +++ .../twilightmenu/custom-dsi-3ds-skins.md | 134 +++++++ .../custom-unlaunch-backgrounds.md | 49 +++ .../twilightmenu/download-play-pictochat.md | 26 ++ pages/_en-US/twilightmenu/faq.md | 40 ++ .../_en-US/twilightmenu/how-to-get-box-art.md | 49 +++ pages/_en-US/twilightmenu/index.md | 11 + .../twilightmenu/installing-3ds-manual.md | 15 + .../installing-3ds-universal-updater.md | 13 + pages/_en-US/twilightmenu/installing-3ds.md | 33 ++ pages/_en-US/twilightmenu/installing-dsi.md | 19 + .../twilightmenu/installing-flashcard.md | 46 +++ .../twilightmenu/playing-in-widescreen.md | 34 ++ .../twilightmenu/updating-3ds-manual.md | 24 ++ .../updating-3ds-universal-updater.md | 24 ++ pages/_en-US/twilightmenu/updating-3ds.md | 23 ++ pages/_en-US/twilightmenu/updating-dsi.md | 23 ++ .../_en-US/twilightmenu/updating-flashcard.md | 22 ++ pages/_ja-JP/index.md | 9 + pages/_ja-JP/twilightmenu/index.md | 11 + .../twilightmenu/installing-flashcard.md | 45 +++ 82 files changed, 1989 insertions(+) create mode 100644 .gitignore create mode 100644 404.md create mode 100644 Gemfile create mode 100644 _config.yml create mode 100644 _data/en-US/nav.json create mode 100644 _data/en-US/strings.json create mode 100644 _data/ja-JP/nav.json create mode 100644 _data/ja-JP/strings.json create mode 100644 _includes/anchor-headings.html create mode 100644 _includes/common-js.html create mode 100644 _includes/favicon.html create mode 100644 _includes/footer.html create mode 100644 _includes/head.html create mode 100644 _includes/nav.html create mode 100644 _includes/seo.html create mode 100644 _layouts/compress.html create mode 100644 _layouts/default.html create mode 100644 _layouts/wiki.html create mode 100755 assets/css/dark.scss create mode 100755 assets/css/light.scss create mode 100644 assets/css/style.scss create mode 100644 assets/images/favicon/android-icon-144x144.png create mode 100644 assets/images/favicon/android-icon-192x192.png create mode 100644 assets/images/favicon/android-icon-36x36.png create mode 100644 assets/images/favicon/android-icon-48x48.png create mode 100644 assets/images/favicon/android-icon-72x72.png create mode 100644 assets/images/favicon/android-icon-96x96.png create mode 100644 assets/images/favicon/apple-icon-114x114.png create mode 100644 assets/images/favicon/apple-icon-120x120.png create mode 100644 assets/images/favicon/apple-icon-144x144.png create mode 100644 assets/images/favicon/apple-icon-152x152.png create mode 100644 assets/images/favicon/apple-icon-180x180.png create mode 100644 assets/images/favicon/apple-icon-57x57.png create mode 100644 assets/images/favicon/apple-icon-60x60.png create mode 100644 assets/images/favicon/apple-icon-72x72.png create mode 100644 assets/images/favicon/apple-icon-76x76.png create mode 100644 assets/images/favicon/apple-icon-precomposed.png create mode 100644 assets/images/favicon/apple-icon.png create mode 100644 assets/images/favicon/browserconfig.xml create mode 100644 assets/images/favicon/favicon-16x16.png create mode 100644 assets/images/favicon/favicon-32x32.png create mode 100644 assets/images/favicon/favicon-96x96.png create mode 100644 assets/images/favicon/manifest.json create mode 100644 assets/images/favicon/ms-icon-144x144.png create mode 100644 assets/images/favicon/ms-icon-150x150.png create mode 100644 assets/images/favicon/ms-icon-310x310.png create mode 100644 assets/images/favicon/ms-icon-70x70.png create mode 100644 assets/js/relativeTime.js create mode 100644 assets/js/rescript.js create mode 100644 assets/js/search.js create mode 100644 assets/js/sort.js create mode 100644 favicon.ico create mode 100644 pages/_en-US/ds-index/dsi-twl-firm.md create mode 100644 pages/_en-US/ds-index/hardmod.md create mode 100644 pages/_en-US/ds-index/homebrew.md create mode 100644 pages/_en-US/ds-index/index.md create mode 100644 pages/_en-US/ds-index/retail-roms.md create mode 100644 pages/_en-US/ds-index/wifi.md create mode 100644 pages/_en-US/index.md create mode 100644 pages/_en-US/twilightmenu/creating-ram-disks.md create mode 100644 pages/_en-US/twilightmenu/custom-boot-splashes.md create mode 100644 pages/_en-US/twilightmenu/custom-dsi-3ds-sfx.md create mode 100644 pages/_en-US/twilightmenu/custom-dsi-3ds-skins.md create mode 100644 pages/_en-US/twilightmenu/custom-unlaunch-backgrounds.md create mode 100644 pages/_en-US/twilightmenu/download-play-pictochat.md create mode 100644 pages/_en-US/twilightmenu/faq.md create mode 100644 pages/_en-US/twilightmenu/how-to-get-box-art.md create mode 100644 pages/_en-US/twilightmenu/index.md create mode 100644 pages/_en-US/twilightmenu/installing-3ds-manual.md create mode 100644 pages/_en-US/twilightmenu/installing-3ds-universal-updater.md create mode 100644 pages/_en-US/twilightmenu/installing-3ds.md create mode 100644 pages/_en-US/twilightmenu/installing-dsi.md create mode 100644 pages/_en-US/twilightmenu/installing-flashcard.md create mode 100644 pages/_en-US/twilightmenu/playing-in-widescreen.md create mode 100644 pages/_en-US/twilightmenu/updating-3ds-manual.md create mode 100644 pages/_en-US/twilightmenu/updating-3ds-universal-updater.md create mode 100644 pages/_en-US/twilightmenu/updating-3ds.md create mode 100644 pages/_en-US/twilightmenu/updating-dsi.md create mode 100644 pages/_en-US/twilightmenu/updating-flashcard.md create mode 100644 pages/_ja-JP/index.md create mode 100644 pages/_ja-JP/twilightmenu/index.md create mode 100644 pages/_ja-JP/twilightmenu/installing-flashcard.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e650b69 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +*.DS_Store + +*_site +*.sass-cache +*.jekyll-cache +*.jekyll-metadata +*Gemfile.lock diff --git a/404.md b/404.md new file mode 100644 index 0000000..feec6cf --- /dev/null +++ b/404.md @@ -0,0 +1,10 @@ +--- +title: Error 404 +description: Oh no! This page doesn't exist! +permalink: /404.html +layout: default +--- + +# Error! 404! + +Return to the [home page](/) or go back to the previous page. diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..5563f1b --- /dev/null +++ b/Gemfile @@ -0,0 +1,30 @@ +source "https://rubygems.org" + +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +gem "jekyll", "~> 4.2.0" + +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +# gem "github-pages", group: :jekyll_plugins + +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.12" +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do + gem "tzinfo", "~> 1.2" + gem "tzinfo-data" +end + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.0", :install_if => Gem.win_platform? diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..aeee232 --- /dev/null +++ b/_config.yml @@ -0,0 +1,18 @@ +title : "DS-Homebrew Wiki" +description : "Wikis for DS-Homebrew projects" +repo : "DS-Homebrew/wiki" +color : "#072f4f" +image : "https://avatars1.githubusercontent.com/u/46971470?s=200&v=4" + +collections_dir: pages + +collections: + en-US: + output: true + permalink: /:path:output_ext + ja-JP: + output: true + +lang-names: + en-US: English + ja-JP: 日本語 \ No newline at end of file diff --git a/_data/en-US/nav.json b/_data/en-US/nav.json new file mode 100644 index 0000000..9a13ed3 --- /dev/null +++ b/_data/en-US/nav.json @@ -0,0 +1,14 @@ +[ + { + "title": "Home", + "url": "/" + }, + { + "title": "TWiLight Menu++", + "url": "/twilightmenu" + }, + { + "title": "DS Index", + "url": "/ds-index" + } +] diff --git a/_data/en-US/strings.json b/_data/en-US/strings.json new file mode 100644 index 0000000..9917ae8 --- /dev/null +++ b/_data/en-US/strings.json @@ -0,0 +1,8 @@ +{ + "title": "DS-Homebrew Wiki", + "description": "Wikis for DS-Homebrew projects", + "discord-server": "Discord server (English only)", + "source": "Source", + "by": "By: $1", + "published-with": "Published with GitHub Pages, view the source on GitHub." +} \ No newline at end of file diff --git a/_data/ja-JP/nav.json b/_data/ja-JP/nav.json new file mode 100644 index 0000000..46a192a --- /dev/null +++ b/_data/ja-JP/nav.json @@ -0,0 +1,14 @@ +[ + { + "title": "ホーム", + "url": "/ja-JP" + }, + { + "title": "TWiLight Menu++", + "url": "/ja-JP/twilightmenu" + }, + { + "title": "DSインデックス", + "url": "/ja-JP/ds-index" + } +] diff --git a/_data/ja-JP/strings.json b/_data/ja-JP/strings.json new file mode 100644 index 0000000..f90153b --- /dev/null +++ b/_data/ja-JP/strings.json @@ -0,0 +1,8 @@ +{ + "title": "DS-Homebrew ウィキ", + "description": "DS-Homebrewのプロジェクトためのウィキ", + "discord-server": "Discordサーバ(英語のみ)", + "source": "ソース", + "by": "$1による", + "published-with": "GitHub Pagesで公開しています、GitHubにソースを表示します。" +} \ No newline at end of file diff --git a/_includes/anchor-headings.html b/_includes/anchor-headings.html new file mode 100644 index 0000000..8fc27f5 --- /dev/null +++ b/_includes/anchor-headings.html @@ -0,0 +1,110 @@ +{% capture headingsWorkspace %} + {% comment %} + Version 1.0.6 + https://github.com/allejo/jekyll-anchor-headings + + "Be the pull request you wish to see in the world." ~Ben Balter + + Usage: + {% include anchor_headings.html html=content %} + + Parameters: + * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll + + Optional Parameters: + * beforeHeading (bool) : false - Set to true if the anchor should be placed _before_ the heading's content + * anchorAttrs (string) : '' - Any custom HTML attributes that will be added to the `` tag; you may NOT use `href`, `class` or `title`; + the `%heading%` placeholder is available + * anchorBody (string) : '' - The content that will be placed inside the anchor; the `%heading%` placeholder is available + * anchorClass (string) : '' - The class(es) that will be used for each anchor. Separate multiple classes with a space + * anchorTitle (string) : '' - The `title` attribute that will be used for anchors + * h_min (int) : 1 - The minimum header level to build an anchor for; any header lower than this value will be ignored + * h_max (int) : 6 - The maximum header level to build an anchor for; any header greater than this value will be ignored + * bodyPrefix (string) : '' - Anything that should be inserted inside of the heading tag _before_ its anchor and content + * bodySuffix (string) : '' - Anything that should be inserted inside of the heading tag _after_ its anchor and content + + Output: + The original HTML with the addition of anchors inside of all of the h1-h6 headings. + {% endcomment %} + + {% assign minHeader = include.h_min | default: 1 %} + {% assign maxHeader = include.h_max | default: 6 %} + {% assign beforeHeading = include.beforeHeading %} + {% assign nodes = include.html | split: ' + {% if headerLevel == 0 %} + + {% assign firstChunk = node | split: '>' | first %} + + + {% unless firstChunk contains '<' %} + {% capture node %}' | first }}>{% endcapture %} + {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} + + + {% capture anchor %}{% endcapture %} + + {% if html_id and headerLevel >= minHeader and headerLevel <= maxHeader %} + {% capture anchor %}href="#{{ html_id }}"{% endcapture %} + + {% if include.anchorClass %} + {% capture anchor %}{{ anchor }} class="{{ include.anchorClass }}"{% endcapture %} + {% endif %} + + {% if include.anchorTitle %} + {% capture anchor %}{{ anchor }} title="{{ include.anchorTitle | replace: '%heading%', header }}"{% endcapture %} + {% endif %} + + {% if include.anchorAttrs %} + {% capture anchor %}{{ anchor }} {{ include.anchorAttrs | replace: '%heading%', header }}{% endcapture %} + {% endif %} + + {% capture anchor %}{{ include.anchorBody | replace: '%heading%', header | default: '' }}{% endcapture %} + + + {% if beforeHeading %} + {% capture anchor %}{{ anchor }} {% endcapture %} + {% else %} + {% capture anchor %} {{ anchor }}{% endcapture %} + {% endif %} + {% endif %} + + {% capture new_heading %} + diff --git a/_includes/favicon.html b/_includes/favicon.html new file mode 100644 index 0000000..34ece3e --- /dev/null +++ b/_includes/favicon.html @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 0000000..61e6568 --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,16 @@ +
+
+

+ {{ site.data[page.lang].strings.by | replace: "$1", 'DS-Homebrew'}} • + + + + + + +
+ + {{ site.data[page.lang].strings.published-with | replace: "$1", site.repo }} +

+
+
diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000..f06cd1e --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,20 @@ + + + + + + + {% if site.data[page.lang].strings.title != page.title %} + {{ page.title }} | + {% endif %} + {{ site.data[page.lang].strings.title }} + + + + + + + + {% include favicon.html %} + {% include seo.html %} + \ No newline at end of file diff --git a/_includes/nav.html b/_includes/nav.html new file mode 100644 index 0000000..725171f --- /dev/null +++ b/_includes/nav.html @@ -0,0 +1,62 @@ + \ No newline at end of file diff --git a/_includes/seo.html b/_includes/seo.html new file mode 100644 index 0000000..ccb5b09 --- /dev/null +++ b/_includes/seo.html @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_layouts/compress.html b/_layouts/compress.html new file mode 100644 index 0000000..bb34487 --- /dev/null +++ b/_layouts/compress.html @@ -0,0 +1,10 @@ +--- +# Jekyll layout that compresses HTML +# v3.1.0 +# http://jch.penibelst.de/ +# © 2014–2015 Anatol Broder +# MIT License +--- + +{% capture _LINE_FEED %} +{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "" %}{% endif %}{% unless _pre_before contains "" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " ;; ;" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %}
Step Bytes
raw {{ content | size }}{% if _profile_endings %}
endings {{ _profile_endings }}{% endif %}{% if _profile_startings %}
startings {{ _profile_startings }}{% endif %}{% if _profile_comments %}
comments {{ _profile_comments }}{% endif %}{% if _profile_collapse %}
collapse {{ _profile_collapse }}{% endif %}{% if _profile_clippings %}
clippings {{ _profile_clippings }}{% endif %}
{% endif %}{% endif %} diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..201d68b --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,29 @@ +--- +layout: compress +--- + + + +{% include head.html%} + + +
+ {% include nav.html %} + +
+
+
+
+
+ {% include anchor-headings.html html=content anchorBody="#" anchorClass="header-anchor" %} +
+
+
+
+
+ + {% include footer.html %} + + {% include common-js.html %} + + \ No newline at end of file diff --git a/_layouts/wiki.html b/_layouts/wiki.html new file mode 100644 index 0000000..db77df6 --- /dev/null +++ b/_layouts/wiki.html @@ -0,0 +1,63 @@ +--- +layout: compress +--- + + + +{% include head.html%} + + +
+ {% include nav.html %} + +
+
+
+
+
+ {% assign items = site[page.collection] | where: "section", page.section | sort: "category" %} +
    + + {% for item in items %} + {% if item.url contains "index.html" %} +
  • {{ item.title }}
  • + {% endif %} + {% endfor %} + {% for item in items %} + {% unless item.url contains "index.html" %} + {% if item.category and category != item.category %} + {% if category %} +
+ + + {% endif %} + {% assign category = item.category %} +
  • +
    + {{ category }} +
      + {% endif %} +
    • {{ item.title }}
    • + {% endunless %} + {% endfor %} + {% if category %} +
    +
    + {% endif %} +

    +
  • +
    +

    {{ page.title }}

    +
    + {% include anchor-headings.html html=content anchorBody="#" anchorClass="header-anchor" %} +
    +
    +
    +
    +
    + + {% include footer.html %} + + {% include common-js.html %} + + \ No newline at end of file diff --git a/assets/css/dark.scss b/assets/css/dark.scss new file mode 100755 index 0000000..d5377d2 --- /dev/null +++ b/assets/css/dark.scss @@ -0,0 +1,35 @@ +--- +--- + +:root { + // Main contents + --main-bg: #333; + --main-color: #ccc; + --header-color: #ddd; + --borders: #555; + --blockquote-color: #999; + --code-bg: #3f3f3f; + --code-color: #ddd; + --a-color: #0366d6; + --small-color: gray; + --carousel-caption-bg: #333b; + --table-alt-bg: #2a2a2a; + + // Cards + --card-background: #444; + --card-edges-background: rgba(0, 0, 0, 0.15); + + // Modal + --modal-borders: 1px solid rgba(0, 0, 0, 0.2); + + // Nav + --nav-link-color: rgba(255, 255, 255, 0.7); + --nav-link-color-hover: rgba(255, 255, 255, 0.5); + --nav-link-color-active: rgba(255, 255, 255, 1); + --dropdown-item-bg-hover: rgba(0, 0, 0, 0.3); + --primary: {{ page.color | default: site.color }}; + --dark: #f8f9fa; + --light: #3f3f3f; + --light-border: #292929; + --light-placeholder: #999; +} diff --git a/assets/css/light.scss b/assets/css/light.scss new file mode 100755 index 0000000..9dd3e67 --- /dev/null +++ b/assets/css/light.scss @@ -0,0 +1,43 @@ +--- +--- + +:root { + // Main contents + --main-bg: #fff; + --main-color: #222; + --header-color: #222; + --borders: #bbb; + --blockquote-color: #666; + --code-bg: #e9e9e9; + --code-color: #333; + --a-color: #0366d6; + --small-color: gray; + --carousel-caption-bg: #fffb; + --table-alt-bg: #f0f0f0; + + // Cards + --card-background: var(--main-bg); + --card-edges-background: rgba(0,0,0,.03); + + // Modal + --modal-borders: 1px solid #dee2e6; + + // Nav + --nav-link-color: rgba(255, 255, 255, 0.7); + --nav-link-color-hover: rgba(255, 255, 255, 0.5); + --nav-link-color-active: rgba(255, 255, 255, 1); + --dropdown-item-bg-hover: rgba(0, 0, 0, 0.3); + --primary: {{ page.color | default: site.color }}; + --dark: #343a40; + --light: #f8f9fa; + --light-border: #ced4da; + --light-placeholder: darkgray; +} + +.carousel-dark-when-light .carousel-control-next-icon, .carousel-dark-when-light .carousel-control-prev-icon { + filter: invert(1) grayscale(100); +} + +.carousel-dark-when-light .carousel-indicators li { + background-color: #000; +} diff --git a/assets/css/style.scss b/assets/css/style.scss new file mode 100644 index 0000000..0e6157c --- /dev/null +++ b/assets/css/style.scss @@ -0,0 +1,368 @@ +--- +--- + +@import url("light.css"); +@import url("dark.css") (prefers-color-scheme: dark); + +// For the bottom aligned footer +html, body { + height: 100%; +} +body { + display: flex; + flex-direction: column; +} +.content { + flex: 1 0 auto; +} +footer { + flex-shrink: 0; + padding-top: 20px; +} + +body { + color: var(--main-color); + background-color: var(--main-bg); +} + +h1, h2, h3, h4, h5, h6 { + color: var(--header-color); +} + +h2 { + border-bottom: 1px solid var(--borders); +} + +blockquote { + color: var(--blockquote-color); + margin-bottom: 20px; + padding: 0 0 0 20px; + border-left: 3px solid var(--borders); +} + +code { + color: var(--code-color); + background-color: var(--code-bg); + padding: 3px; + border-radius: 0.25rem; +} + +// .a is for making other things look like s +a, .a { + text-decoration: none; + text-decoration-thickness: 1px; + color: var(--a-color); + cursor: pointer; +} +a:hover, .a:hover { + text-decoration: underline; +} + +a.clean { + text-decoration: none; +} + +footer a { + color: inherit; + font-weight: bold; + text-decoration: underline; +} +footer a:hover { + color: inherit; + opacity: 50%; +} + +small { + font-size: 75%; + color: var(--small-color); +} + +img { + max-width: 100%; + height: auto; +} + +.btn, .btn a { + text-decoration: none; +} + +div .btn-primary:hover { + background-color: inherit; + opacity: inherit; +} + +// Override bootstraps primary color +.bg-primary { + background-color: var(--primary)!important; +} +.btn-primary, .btn-primary:focus { + color: var(--nav-link-color); + background-color: var(--primary)!important; + border-color: var(--primary)!important; +} +.btn-primary:hover, .btn-primary:active { + color: var(--nav-link-color)!important; + opacity: 0.8; +} +.btn-outline-primary { + color: var(--primary); + border-color: var(--primary); +} +.btn-outline-primary:hover, .btn-outline-primary:active { + background-color: var(--primary)!important; + border-color: var(--primary)!important; +} +.text-primary { + background-color: var(--primary)!important; +} + +// Override the secondary text color +.btn-outline-secondary { + color: var(--main-color); +} + +.alert-secondary { + color: var(--code-color); + background-color: var(--code-bg); + border-color: var(--code-bg); +} + +// Override the dark text too +.text-dark { + color: var(--dark)!important; +} + +// And the light bg +.bg-light { + background-color: var(--light)!important; + border-color: var(--light-border)!important; +} + +.bg-light::placeholder { + color: var(--light-placeholder); +} + +// No underline on navbar links +.navbar a { + text-decoration: none; +} + +// Dim navbar-brand on hover +.navbar a.navbar-brand:hover { + opacity: 0.5; +} + +// Override nav-link color +.navbar .nav-link { + color: var(--nav-link-color)!important; +} +.navbar .nav-link:hover { + color: var(--nav-link-color-hover)!important; +} + +// And the active nav-link color +.navbar .nav-link.active { + color: var(--nav-link-color-active)!important; +} +.navbar .nav-link.active:hover { + color: var(--nav-link-color-hover)!important; +} + +// Make dropdowns site-colored and animated +.dropdown-menu, .dropdown .hover-content { + background-color: var(--primary); + -webkit-transition: 300ms ease; + transition: 300ms ease; + display: block; + height: 0; + padding: 0; + overflow: hidden; + visibility: hidden; + line-height: 0; + margin: 0; +} +.dropdown .hover-content { + display: none; +} +.dropdown-menu.show, .dropdown:hover .hover-content { + display: block; + height: inherit; + line-height: inherit; + padding: 0.5rem 0; + visibility: visible; +} + +.dropdown-item { + color: var(--nav-link-color); +} +.dropdown-item.active { + background-color: unset; +} +.dropdown-item:hover, .dropdown-item:active, .dropdown-item:focus { + background-color: var(--dropdown-item-bg-hover); + color: var(--nav-link-color-hover); +} + +// Make images smaller +.img-small { + max-width: 250px; + max-height: 250px; +} + +.btn-back { + position: absolute; + left: 5px; + margin: 5px 0; + font-size: 8pt; + padding: 5px; + z-index: 10; +} + +// Input box +.input-group-text { + color: var(--light-placeholder); + background-color: var(--light); + border-color: var(--light-border); +} +.form-control, .form-control:focus, .form-control::placeholder { + color: var(--light-placeholder); + background-color: var(--light); + border-color: var(--light-border); +} + +// Cards +.card { + background-color: inherit; +} + +.card a { + text-decoration: none; + font-weight: normal; +} + +.card:hover a h4 { + color: inherit; +} + +.card-footer a { + text-decoration: underline; +} + +.card-image { + max-height: 128px; +} + +.card-image-header { + height: 145px; + display: flex; + align-items: center; + justify-content: center; +} + +.card { + background-color: var(--card-background); +} + +.card-header, .card-footer { + background-color: var(--card-edges-background); +} + +.pointer { + cursor: pointer; +} + +.qr-image { + border-radius: 1rem; +} + +.modal-content { + background-color: var(--main-bg); +} +.modal-header { + border-bottom: var(--modal-borders); +} +.modal-footer { + border-top: var(--modal-borders); +} + +.carousel-label { + background-color: var(--carousel-caption-bg); + border-radius: 10px; +} + +.li-bullet { + list-style: disc; + margin-left: 1em; +} + +// Hide header anchors unless hovering the header +.header-anchor { + text-decoration: none; + display: none; +} + +h1:hover .header-anchor, +h2:hover .header-anchor, +h3:hover .header-anchor, +h4:hover .header-anchor, +h5:hover .header-anchor, +h6:hover .header-anchor { + display: inline; + text-decoration: none; +} + +// Tables +table { + margin-bottom: 1em; +} +table th { + text-align: center; +} +table th, table td { + padding: 6px 13px; + border: 1px solid var(--borders); +} +table tr:nth-child(2n) { + background-color: var(--table-alt-bg); +} + +@media only screen and (min-width: 576px) { + // Only right align language dropdown when sm+ + .language-dropdown { + position: absolute; + right: 5px; + } + .dropdown-menu-end-sm { + --bs-position: end; + right: 0; + left: auto; + } +} + +@media only screen and (min-width: 1024px) { + .main-content { + max-width: 1024px; + } +} +@media only screen and (min-width: 1200px) { + .main-content { + max-width: 1200px; + } +} +@media only screen and (min-width: 1600px) { + .main-content { + max-width: 75%; + } +} + +@media only screen and (max-width: 757px) { + .dropdown-menu { + border: 0; + } + .dropdown-item { + font-weight: bold; + } + .dropdown-item:hover { + background-color: inherit; + } +} diff --git a/assets/images/favicon/android-icon-144x144.png b/assets/images/favicon/android-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..3f8e8cc37961a0c3264d868e2d63bea12d43b819 GIT binary patch literal 7874 zcmbt(1yG#NvhPB02`sQI?hqsa7H5&5iv-u;!6nENWEXeW5c0=81Pc-*$cEsSK(G)j zc!I;?E_ZY4)qCgMs#kTZZhbZ1)J*@Td%9<;r+X$&M@xm2h>i#V0FbJwD(PYB)W3xQ z5A)xEt+rq)97lOgc>v&J3h|9KE~bs;rKh3*sQJ#Yg=w(Zs_JP10RCJ6KxiZYaE0j# z-2?!91Ob5U7XSb>6953ibK7*KF$6rDXDUj7`@dgdd)XUI4E~#Qwm0vr|!)Z+Lqf za;s9L6qgZcc?wYfAg+%6_Bjz}nEKuJ!2|rIDG4p$ zrk8pl2Z+nFUr?P^nKlcELj>u!uls~UfweU0>Vebf!c>G_ZlzQHvS!`3Vw@s8F%~PR zCIowv7-88v#BFlA`A@egg(}aC>%}kk7!h73KtBOdIi3*_ZhnNY46jksh!?h_O)NzZ zcZMuzsfekqahoY%02uIya<#WE`O*9wP?e|8UFx@GS$N4_yf`m^b2jTzQ2S7xR@9i+ z0fQlpg`$$G5T73tbJAsx@uOXzM0VPK0Q!hw-cn zPUtc;zT@sY_0vGdH?Tg=gWPWPYCs+@^OvdOr|OqeV3nJlNBANynU>DBZ~Qz|Jw}on zn^;qg;I;ZIKVfnXkq#ppWz4@;W6+IW9n7xrk(y6{pt^1JCoB{=Ge>YS8sZbf+>UCs{B3Q?cx*nBvbga3>FpGw7`?3F z(jSbPJ0A!GoLLnvShZ=h&vU} zSJER%?i=8Hs$VYA27xh;DT6Pnsh0xU{aF2QXjEvgA5mVF;OM84$@4iG$VjDhnzT^4 zlwK_EXx@Dm|6MYgGUFV@KxVVrOSPzD;DjAFLvK{JVw+euUvsc_4!r;~n7!dx6A#%w zI_zQ6P9D%mBY8bVPl>Cej?sI;H|o09?clcAEHYpCJQwY9*Au|VB+K}5nz5k?cyPLc z{IeFqM5I|*(f$a|h_iC-(cH37^H^FuS@>>6Jm9aP?OVh2bh`9 z{pJ!buF+_n!wofWl*J0ZN7Ds!NB)@eg|tkZ>V(a+A_YoSKIKibBaFJJoVQW)Y7UWB z!NI)(vNCm)uc)$s{U5uimPz#0S6rgdE{#U9oft}?$?3(=ZFSa@Z?XwZwwDjpxC|b| zxMzd9%Mi5jnk>}^i~;6`fibWtGvxZvVWd@{uWI(Q{2t5UNy}btb>fm(|73@Tm4->8 zLvv-9zvMwFl+V8RI_EZQs)Rx!u{hCmbApk2p5Nd(HsP`ppRN+i!Ab650hH(d#;#Ld zpxcLP!MeNP43DFNCtX=wog{+0FZN*02&BUEFaQ`bM_-4co!bn%nH@tMSX4R1eBu8r zQ{FO-#8TnoI|E8jcS$-j1H-yFlwaw3{YW8JVX9N1v>5=G;iWH7MI08Vdou?7B0M7y z_^CmyYmVLZxCXz|^GElTMenxUWXPimp4hoSh#osfR@Q4a;d(ii>K|J$T`JSC=y1x- zoEUHs;&pR3k2-d{9+i3SXPp0Z8UI7i^1p={8Jo+$Z_P-c&1^`7zvg@7R4J!*VSd<`e9fkTJrEm%V*8P-ZvD!Q$a#Gpj}fJ=CpSBZxzUc}6AG!Z4yFE(b4aNq-WjV1oN6kbCUNrSeOI%tR@h=( z;bmm6NA#uH>=BW)>>ND=N=wO@qS{8O5lls8O-#>D^P1K#_`o+{xk`*I*Zrq@m-k^EMz+>u=o|RWX(NWKKXd)$5LXqtm9iLldR;F%f`8V;O zv~fNYd1GfHMOBx-zfmr_T)BE&c%|Ue1<#z#9*B_5v0gWC=Q5=#E*_@-d==cTy|OWNq(YNPmjg_Ifz`PbrPrQe*e9X&QMOJDN0azvIn$ z9p#&c#|de8giB_z^w6l)Urt5nm)f7*kKVVd^AsCMF!cVK{{R<^z1-{~3<>CnKyS4+ z6Ev=(=$V#kP$ZL~cX@Q!cDm}&MB~at7u=C-?S}0Y)Kz#+Mzz;%$NfS2t-Df4I$S!I zNSmpJC`^ffj`eifRAj&DVB7cnnTud+Bjgd~F!v|Dex{3QF}c!0DRpN9y=+j%=sE0{ zb4(z-){~VmsQMsCIRJVS|DgKC)Q&X$wjZ0en{`Lf*dH>hyj0qrwKc*lp5CErb8{^g ztUW2$&*See*SRcZhKvMv|nxH6)Yyp5Tra*?WC5THv#l zthd-|XpdUaKTTMIYxP==7BFaEU;>7l?F8F24T)Xlz)Nqt>M`7c9+P1L4z`xCfuGl? zALu5X8a(zv7OtQlJtQ_pZc`M?@Ko~B==thY)8zwHOpt7V^gI1?cZ^e|~8S0J6(5g?kRNnIL;M_tT z#}LWvBn2xWe*(#b%@UdFZy?-wrNY;MufbAK|*+$3_tbKM#kFV>pF+q)jy zdhT{3inv^A<$_+?5(!%gwXKI3i~amZ8sNTmN}YF&Li#L0A=+H;tj<47wJZzkcM5)` z>8B-{=j!wl$uD^&a4T%d%@UyKEz{YK3Oiz)DJNeD>v<~8wXNJhjr*-TmV85Nf}@Fg zYqrm4DxrnrN66*VfMOZ9yukL@6Kil>eN$G}i;`7y72QKd>}e*eWIbc*+&0=(*D0NR zpEH<>ZL;kABijCHwm@Najtc8E8klZB$M<#B#_#Z^GFDMLeD?aX9`hxW)4F^z-~oej z!?qr=xxy0biHPZ8w_85P(Aa=tt`V-`v2~diYW3C8@>tp?-9X;E?iXo-$->F_koNH_ zZ>KK={MfU1sV8a$hIA}cV!=-C1b&-6$}{CHzvd1qqWB%P=~Va>M!OI{5+vD_bv)zU zFSw1njNWQmO@<&{K`)V8YZ`UUb)LDbG^U~jz6<>VGP3yxCwBFp+ER1&$OiKt9(!2b zQsMBa`Q~&fFpm#ESN5Z__d+%5pSLa$!J8C9JEzX*LcUq9(T7EBtWRv>;+LFc@!c)( zuFqGSNLAQ#(Q?v0Dv6B2XP3QwR&e`<5a8izJX_upc?^wa@o9Q_m{eu?j!2$3{G|Eyf#rIU*d;??-5?AAJ0INukZYE;k2x zV%o`%0&nUDR6?YSEzS?kM>L8Wf@jPR-zTXF^M z5-vRsu2ac!p-M`i<G`Y#b5Xhydw(TUlluU)dThoxlT!1pI5o;M+2O)L!bo z;76IY1RS7CbB=2W62D`eeQ<=)S}fGC=7hDs0xqO=$eJ}v^a*qW-705 zuA8%Q7K^`Aaz<+xkX#;50$wHB0_GJab&gT1`5>z8pWgXebnc4okzQZ zbW&?TP<%wZa=}`3!^5d*ujxRbU}axsq=M6Ef-g5HgHH=p(r6ovGPYp?&7t8Zt_Qgd z7K(lkt;?d%7_Y1tDbKmMOZi6{LADJ~l4BqRAu`KI@?&xIl4)$hqFYqpg;7Gt#RwB- zr^pMiX^pt3rN>+}E-k#jG{WC=?j@LANj=f+puvHPTfWZ@HzHsEI2~3s>x>8Xb-(*P z9%>ad+Y`GCC9>Vs_1yyx2SWvDYh<6Q$ zkjHKpNQu?rA}(m&aT42+m8vEmHRQ-zv67WtKHZ~3NWE=!%rQ)fM+?U5xfDG^q<_95 zlXo3_w&p|sox$D6t@c_?;mR&_EBTl^$&lK(1-sF~!R?GOXHGcB_U_NlTI`x`cnJt| zcvvO(w;uT^qKvR22t>8ut0agjynMw!Nt(I7ZzDnix;H&XkKEQX8dm552q{pb9>W1iG;t1hRl{Qy$6pxakD1mu;EPo8T#A< z<)!rz!bVc!>TBSmLa4^OnI-#5F*E*XASm;lgcPa4Cb@{B@7;ohe-6l>ELofJ<0bOp zHE@0;w9_k9V>3lBaqt&py_IOm=fi$c*75PeuK$K)h!pAE(&GDidyh675)*{NSxbu2 zP`9V)b8OAYurghlub!d2aBO|NNtWs|>iLLD8hWH>0P#*QLX^)QH!&Ps#W}d_rXqTRfal&ns z{NIFmABQa;nO72nZT3O6zNtc5s?5IQx8w-N2Zo-9+gLg1h2r2cwfhwaW+~mu6D5Nd zN_*P3oPV=6sq^vX(N!Zpl`mGV;j}t_BbXhJ-Bn|bn{bR424~B?j4)TvEP)Jh^vu>2 ziDRcbrigZYeCC6Q*z_b5XjV|=t^FAn6fL5)Od+D^g2?&dOOG_X7ZDB0eUaR6r@~&7 zw(y){6Iw(iR6n75$*)!B;^Fc|(Y^{+qHp`n_(HdP*(s9Ve>7F0Y~cKxjp=U%o~Sd- zx&Iau0MzOC)Lx1uf>VcIL=(<-jqwgm_J;FilDQ|!>1$sb-s)qQgRaT`41;~nTuzE9 z!KrHMSLHFXOeNxco4&Z%)BAUoF^dEhVz=g_QZb(g|DiEUUv>SH(-2__r_|gr<{nG# zC#`-*C}r5~n^b7gbvSCEGjxO#pDU4;>Bw9SUcMqsx3ZZ0r3E+C)9~r@jxu4%H!=ts z=vOX_<~HdDzt#R5nn=hqrs(E?5-Zsa!Rau`gkuABU?ZOaMU^Z5o5aVWWp-)8bNQb* zAG|FYOa5N2!7SGmtQyZp9N( zPi}o7tx@}@c6-~O8e61_A5{&f1|4i7>u)5EM*ePW4$cu0lZ64Chk6z#TRbYd9h1ci zl|{vg<7Pt|bR+L5&Ystgzo9G53aVwun=ZEFdfiLFr3Hzg+0qp3>E%6{)|p)HPp$J=mWwLc7N^>!u&lz|1S!V?Y*;0-P zzLrlTq2y&_Er@`8?C`pdlxb)HMoi`UJyKvCtkF9|<**Zb3yj>9gF zm7eRL7p5c3!mTx2c!K>*9$B0zN<2bCM|$DwC!fyQCf19GtPUoQsQ*#Ky7h!6bcpfA z6Hs9Z#|~k3Qc3!WQ=;?^7n|c9MEtj~U4Xn=36(JOZxcHhHBrVtIM5h{$TY3mF~_Gp z8xMEeaC=2)evPi_n5i16YNfUaqGNo`JVf ztfTPF=M^M|oG7lU6iwMm;h~CzbGoYfGU7jGMShrN1rrY?XePx$dmC z{f!f=A6Dj+2s9y0E@N3w@k;!b2)0k!YV%>@%77DDs`DO zp7|5bFl{(@U;lorxS zG`{4ovE^J;2q6uVPZvtG6q#GO(xup>eXcAQh9{=54xW?X|FFi)Jwn&|Q{km_Spu_W-oL3|)F?PgzR9}yu7aA-kD}9o? zN~226(jZ2nZ%)SA<&rHL0$9xzm%0pE_#)3^)~x^rwEt zEjRfRekWSkg2RT`{_`&G*j=3d7`J`K1sQl@8WD1LL&N^*xqTnP$o)mmNZ2IJDWMG`aq_-@SVftDkOYyJhc-v~lJ#hKH-q z>Xj^Iu_k|-tbVP0`$AEgKj3p6PQ49uOGD{`b>w0nc!`5D_|`C`N4{I|s|2l;2O5d{BQT~C{d{37 zo>M=){;fS(dK+A3gMjMllg*8xHBP^$Z^;nSl&7sE(qXDp*Yon^Fcp=nb1H8ByN*&E7fv_=zlS|3dqjB}KMvZwBF?>F^Ctxk^yY+$T6864Oy zEECg9kb(jRyQ^GYGNX{mt9fQq#EJsbgs|m=Th^!d#m~}+RC*%2?1D^Xoh7Pc{dHwe z8VaerqCaMI1@_(e+;l+^_Cx%>q3tf`leQl@Uk@h@jlxjc~3Hq>0E%s#78%3)@{B
      >0`RAucdCI|b5AbtcCbKedv~=w-voJWpL-l8%gs*3M9K zM&AYxg9F$x%T&V6K16~a5g8Gz(dO_w3}m%d)>JSWP}ub8&pN-NM;Zkq4b&%PBzu(m zD<*AVV$vj#(d=uUPzCo+Iv#m%dZt0*MjorW(%82yJQ{KQ68xMe?04%^ltiA9bxO;? zLhKz!so^PsOwxvv5PM?r=P7+%+1I}++?57jsr@LJ;rgt`7436 zeUfE~9jG!o$7b&Jwk@MuL|Sx+#M4DpI1A)rS}$$QTBnC?@x}KQ7umHW8d4q2tB_vy zi;8fAonSXJp`_qR!W5JBX!+(#4}`!^T%YX+d_?cBX8cG>5?h@19$QgVv8Q$ls&75a z!?mBbeA)2w^g%VYSyHI)NRF@%x4lPN3Tm7JZO-r^QBHkUuahjLpI8a_8k{cE7eR{r zw&CT@KW(9K!TUUQ!+17#vQvz|`8{J#y$CbuYQ_Yx z!0>1W_vqo!r;N87<}x(Tj>P6Ue?Ex#W$EDgmh4ib^S+)`=8aqykjdv!WQ|wpUhUCz zB2j9Ag;Ke2$ojlh&39SRg32J7h)k*O{@2zF?S)FMD>e^yh$5bZ3hsD5-CKP?!Zka$ zgVY}eI*ka(M1^BN#3y{TcJjF_Ma1lB!L&VhIp&BM;w!SDY+ppiF(6EgtzSAv&^gEzwZl|4Ys&Dzmk)7sJ5 z_9crLzc|0d6G;{!L5Ro`K~aoU7F~!Ki<7rE94a7yKp^;?|DrJkgXZ^m<@hUl55o{Z z^OvK6laHGX6sqK5>*Hqc?hS?NV4z+ANZCC~;J;!1B@+sDvUhfL@&-U8g~$M}qA(cn zzw!A$7-MHUZ>PVI$q%dq7zpjZK{TD+?7jWq_JDuQN&xQe__W?g>%Z~QG{B$$5HUds zQ6WKb2}n_()i4G^_HTUjo&D_rf(i=h#j?8?lF`4B4E59i4$iLj81)6*+`U~r90eS# zeVuJR+`R<;-@*vkS_?xQ?1k*?gzT&xY$WY%1jWT6wvwU}wstlSf)c{~m=XM#`EfDw SVBVSm05xSTr5c47;r|6)ysUQs literal 0 HcmV?d00001 diff --git a/assets/images/favicon/android-icon-192x192.png b/assets/images/favicon/android-icon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..4f7c12e7a968face7b0182c3608df0c6c57e5000 GIT binary patch literal 11308 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 F`aiuU=wko? literal 0 HcmV?d00001 diff --git a/assets/images/favicon/android-icon-36x36.png b/assets/images/favicon/android-icon-36x36.png new file mode 100644 index 0000000000000000000000000000000000000000..8cbd9eeb97ed095626321af11610d9a7def004b6 GIT binary patch literal 2093 zcmZ{l2T+sC7RNuhp(I=gASg;69h8zv35n7o(i9X(B1T0*3IwD`K8T4(6{TK4TDYKq zASy-?yBAQ3f^son*C+i7N|7QWD(!waZ|3>#%$uFFXLir;{Lk*}&TiT+FIQ#61_S^A z%IfbE?a4lDF=;Z_&%-_;Ib4o3JvsFZa$s>ATj}f zgku2k9hyq`007ZA02m7Z05T-7F0%9w?=4V3K5)CMGqAGS${Ww+K{N13w>^BwyZtbi zN1^rrAXo10>_qiz{V48_Fx;)#?(n{^c;@hgZRiyD+T%%ej=5RETJN~jf&gPj+Kr)< zjYg*znhrEOw6bV@PI}LaZYox3CY>q#RQV>1M|@K0Vmi=TQljew4IZv}_>x|Ez^@yk9 z+*&(^J4ew@>pss>))M6X{SR=LL|F&yUJn%^b@E2yCVyw3 zB3HDDUk8b0e}!s$+T2=L+2&|qu~AKGsv9S28u8K;OM#wQ-V{l{RIrD1cAIo*{B}&9Gs1YVbF2>A6&$uEl)` zRLwPhEh1-Xt*VKd2~MjC)2^jfcrsOl%F&F&oT*aJp~^}WQ}&`5xHq|QaYFZqVmdm_P1uIc+%`>9H31K^ z9T1Idh?8G$l>HreZMWVh6+01OcODw8@;4UjW#{Rq)>O?o5mh|rA{VhFJaM350sF_&Vhflj zc?tJQ_8#!CW}j6nFuK;_MI4sS9n)=i9avv7^LD#Gu86w*(;yMIfTH#w@JL@zXusKw1^+e|GsdJZmH z^=s^~YayC}F|OS@1C5`)hjv}7W4!N0eyJWYOHWlb($AVR*}k0yE=1nMjlm7f&z7Ee zIiM+DY=}m&y7C7&rLXHv31)sFFS_YT*F!d`9+zLE1@1EzcdMh@sU`43DD}e+rskT* z4?6ZbNjG6bnKU;gyQ>VLBH{QxxUxH&H_un?7&uI>ItjaORf|1mZA%ruMVlnm7XcyTw>q$M2oRCKrVNs99shS_h=+zty2@M zlXgGoN*((cp6>RBd^Frq_Oow$Wn;6(lbzMi%x~mm6&&+tT}mL z?rrQ#w5tn6YbU!eBQEXAviJs@DXl_9j(xYN+$m~lLTH=A%Wn8a5$`FdZ~e3AG94~~ zB;HI`vr`;uRAE=Xh6?E+1n4CEs36N>}Io!O~)%patvcD z$^Hw|qsyrZ$ohimDemDl z>}tn^yrg7mfbyjHqdlzIM+vqBeg@j|x0+;TGj4V^Z|p*7V$G0UKu1pL=K=(QG&_mJwlyZu0aX%{sm4W)n3xN50uL3j<~6z??ErW5+zl+)e+i%IY5uL zF}TeSWHUhynH9x>96-PkaA-UMO~6xemSjAMY=t++;mA1L13`Q7|0IM(uz6hJ|4+DX z7H!h3~!Z&45Bd+Q9(V&KSF|l)~X^kI65qlOm>c7MTc?1K{9z4gz^FWxs`hCKbRji z$>d-TFDMuU@FW5fh)RK&bwBC+huO_zgTbrFGl{+;gslGw@#KYZKw%^Y_^~Q%WO$In zRl3(dbUdjL1>kLPw$=n3(H373d!Q3SkU#18@r&Eiq6A X23nuVzf7TT9RS?7c{yLE1SI_p_E3O1 literal 0 HcmV?d00001 diff --git a/assets/images/favicon/android-icon-48x48.png b/assets/images/favicon/android-icon-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..e5aca7fd07b2cd36fb78b8c7b79c976ddfc83307 GIT binary patch literal 2614 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 literal 0 HcmV?d00001 diff --git a/assets/images/favicon/android-icon-96x96.png b/assets/images/favicon/android-icon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..8221f091901acf0e28d07672f6bd862990d89fc7 GIT binary patch literal 4930 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 A3IG5A literal 0 HcmV?d00001 diff --git a/assets/images/favicon/apple-icon-114x114.png b/assets/images/favicon/apple-icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..37fd048fd97e0d362b730c9e515a11da3e7a2d41 GIT binary patch literal 5942 zcmbtYcTiK`mk&sj-a$l~w9tDO1VVt&Ls5!I2qA=CLJ3lo-kSmG(mNucbW}hHNCyFt zqCy0uNfnT``Tk~S_P0B;`_Ims^UmCRKBwIG&VBEk8*gf?OGC*)2><|S^z}ec0{8ug zD98x+)TQW90wY0c8fgLmjj2=@FjB&p$PcQk1$Z^a`HL{%f$Kqy0DxdY0N`m90PvSE z^>hOO@RtGrHXQ%}m23cj%{#xtOpPEQb2QKe0j~eKin=SG6J~CD>sk8|xZb}AJmjVh z05DhUgETFIzU~yD{NOnMn3ubqkGDzmy;+mN!$JJEP3}S|cPd5nGex=WGA~Ll>MTSa zbM^xtwD>}s#D;9d403hs$j<}jc0<|#6lwXqNIhb9cCVSFDk6%bos&Q9>-k~hsQtt6 zkjKpf26XKkM0Gy$51HEe{x6bZyZ02SX>vu(dw=At({FIlZMPUC^YS?U=MF%K*Hf7Lm2gTdYO$ zF7^6YL1Vd5`;TF=Jdhc?`aYf4a-ft4KSpbC#`8T={4KzF3FWS)%+hUJrL1T4bK~Va zccqe8>NP*E3Te~Y5*3OA|FWhQQg0lso_+o6M^IMD!jDyqgL?)P1T;drdsQ2<=0%j5 zL*0tuTeNUmTV8Grm;Hr?TqUc*Slt_i=w2O@1rh_zGHiruo_d}R`MC7yLSXCJez!uoV)%N;r*m_fjxi!=e|#jGv6|?cberXI8gy^{L?P(+@ic!0Wcs!sXegu` zynw}bkNn`!rtG1!Z}9#?dzSi*yYW!~1}*mxFGoxz2n8$%uq|L0YyMu~!~C76-o$v( zo`)P6C6eog#=unO_Ax0vwYJLd!dpjb7uxm3PTJg4LT3-Irs`* zUeoom`r<)N(EQuuoo?Q)#3%1y%Vvy3}tgD{lx^Eqtzi}SyM=FG0j?Ln46$Tn{8m!nb4l_rk+dp*w zCzxz7tNp`@kGYic*s0H*yc`?U@Z4^S`t_H;sp0)F(W3n3``X>NOR!*$m7v8K5Twyt z@=5Wt+@~%O zu|e>|GWwD?vhI?%43swt`s%#?f0B2%h|0YzzmWtLd$Rhm?T0VIKR(bc8>A5Sbhhk{(|n<0+cj$g>EmIox-lyumpTcsZ{p>9!V^OWUdlT+ixAYZ(x)ox4y zA64-RWJb_%P!{UfZ~K19eV?%qXz1x4L~&C%JyUUTwbBeLykb%OW{e^<$5rE~N;?9U z*TzB@-ucwrSNa~+bZh#W7%b`9CE2RfEt7|a38r5c5iKV`WXcg5OTRZ(i%?hPXbSwi zo>_wfkMS8FFJc3sPN0q!e#_jQjA7M4h%Dc)ur&ICgddDYY;98MHf|)us$Q#el+2zl zd>|52GEH-tU|k?eQj1(##c;xmGG41P*Lnf?f&NH5vM5XYFRRG`nfyuH6}%I_7pU>B z|C~#QlrAA@#ia@;cvE)-|dcEd!AD8ZM;Nz1T4xaCLvcmC{Q+nqKLbeCC-(p;X$ zi&Z>-&LE^Q6W+iyfug=?t6kzbsD@uJg!|TR?q7Bymb-FZwnqhMtVK5D9!1oZ!6yCN z*BMbS>>v%6z%J;(>ty$zG>%gP^fNanG=0^oS8ExbzaJaGdqjXWD)6@3En4a!Uw%q{ z6Ekt;C-ufDw(sOn*U(Nb@rlfoX{x=DAs&|=>}-yHm8Pt8eR;;j#ra3sHI^jZ#+dId znJUt}%eL6NGbzW9$E@s_2&H=egb$tXENb8l%ww#~y$l#EsKM!`cDl2=@BYR+t3xRV z^Z3qXsJxS-jk0I=2>b2&91;14XH8$oPAT3yV{r0O;R5jWS@)go404;&4&GmyY%|H( z7xspQv>N&sDD3rI6#JSVg`Eoh!e4bFdB;yA^SCsT zQHQ;f@TE%j1a)xEqRE{1cgbd2-PjAGH)Hry7dAAzCNy>89UEBq5K$f!oWma!K2|f& zlZ*oXoM*pPYr>a!Vt;`X{wOAk0r!a~RJJtOKH_Ldal1WD=@bs0-A``7^elwQ zo|m&%(>o>eiQO0^-@sCyprty#Lo8AZdK$_K4|Ax50X zh)5uHPR>-Mgo@Ri3M6zuEdN49bJhvg?67LXI6Y`s!)(2Xk@%`jU7RkE`svc61Cw_Z zCInwmE`9?B>Opn#U2QJS0tb~9Jv%5y-bnK=ZIw)8x11)^A`-k1fu|dJy`V`BPVy5d zg{wfU>vC@z@i4tRi-%{{BgngWzsY5^Ic?gj_NW4xzofp!u)3<${DSTQ`f&x}K_nEbm*`Qm>3aY6=;rxIv&^y|gT21HQTN>Z{We>(V#(i;$kT zwKJmG-^C*h!v2C0C`Mu^h3~7OKu?x7+u=s@{h;eWatax@N53Ts4Z|yg&DPVhoA8v* z{tV{b*S>O2A3gE3FVw3q-nRV=q5X?mz;lEwILLZ22qr`t%gyr#c<9%=+$HUL()pn~ zH$35^1&YiJ!v45-NQ%D~n?qj1j7rNt7exw;Hg``ko{#drzrx4uH1+k7`p1sEhdOU9 z-DWTJ$MDHolNs7wRAzq>wnRrnDb2hgm#&@#HCC)FWLMyw=YMpoM(608b8xBOIyeh^ z85t1dDxfi^BpxsJMDLpx&?vlh^!w|R5oE+VJE0PJ?osCxD5^~v799ROHa2pEcN28f z>!c1FadKz=%$0V1u2)Q7{@8v*${6#RLNAk0m3g_JvlG92BC65Mc60Bi z=F7*SUyInvC@}hgVh{$+gvFzD47s%^pWIR4LX{8K8A*p`ZtzvS!EFlsa@2eH;1p5(b^tA=u)JJxx=GecUp0`1H*sqc{?iD6dC za%z^^vYvgyaD9wO49hN=K%ZN$E)91$m)vo5|7#6t$VFBaUHTVP-E*B*&ZyP{g2i7O zb@WArU+z8KX)^GD2$+g?2DNDR$V-gA`>m>(}VtS+<0AWK)V=vM8o z?1qB=#UAQLKn4mipj2gHa`h}aCZ~Fn9JmCNK`jQ#H{YmH=ZS|V-6pN;>RUVU{GO#| z^LQryD^W0d76(%;${6p^R(Qft4SoJ9>rYiJA`8Q4hqy9Mbt?CqFTDU~Uex8QTq;hw4AR_Q^QmeNz(oc?!G3xy!4@gWn;&GBV?M# zg*JYrPPL4A#UfBodXqLjyCZ9u*7fuFXYnV5W$=WT#{IC~5EfA0DBip@{2Z|I%09^C zur_!uk@h|gl~uB>!>&r2)MfPRSfssxuYjCps+5bur<zoIWk+Ta+&gLhov4q97e@g^ zea-Y3zkxb^b7#N;jT90UV0A8Zj-M0VsVR8Ossf(+ z(!A#XMB=)PO)&lLi61wezRMp-D{r(v{^6tv{v)g5*T0hMsgb#E9xds(&t zi=bpgW1X%QLg56orb(S1u3w8UKd*8E?w?nyHAafh3!A?ZTMI`ePIy z4X~~I2ZHi=(q9O2SS4+jAj>V8;=@@YbR9VLrcN&1_f4}S2M&j4_r-EQvU;|8OE0r9 z%47a)ywZf!2E`{dfxJ4M`d-B}d28&GWGUWc@J$M@b6A*u)(=A7GZfJC#95}^txOl$ zAiep{!%z%GD5OD;t07)02ia#|L@!bf2Rf%fBK7kgq&Ry~JEIH-;%6udPJ{3B11?Rt z%P2Xsn)R%Gf}7rM+5A~kJnvUI^;ELp1)0j zPck(!Dw$8IzF#vY^e2eddy)6Y1Gib(&XV6_Zf%(wJNkf9${1ppDU9RtK!3J1kv{{d zRO4(S-4IJam|VrL=Aufq?>dDyXs7}L?1qc1K8Z9|On-@?$KIo&$LH4tw@;>mQPr5V z+~XxbkD-7`Ffpa(d~4Ie2?I1Unk{F#2FYJ=XsjlN)zhXl)GqO7ty*<*_2d1%oHEXK z9!lHEtBQz)jPY3>&c7Wr3|sTJiQ$>a-HGt4f!5vTSNjE)3zjC|+523xO**v5MV(0K z0(XX|EEo(3xvSud^X-F-tsqZ6bzP$h#-w^0`5nhhh>e_85(|gMcQdQ;&Og&)3*!2W zKdyp5JogN8Wl>L6QFqhuyE^|Y3=3nVx(fv)+kbo!d!r?hmRoHDI=aBzy~^9&^7D|& z;NZ;u<&u@sNd$CGrp-E_E&MKSlu2BDAu{S)_yU~1938U{%)y^>j7QFz9vQj{oG*T( zcY0FYIhrP1uoRQW3r+A7>&%AsJR*t!?H`+2#Z6H$hMm9ed%RT385qm#UAy92x;;T> zz9K5}{JpT4cA8(3`IuFW9Jl)B>p5D~A9#tunx}`X!G3{TENS*H;eGFw!a{oMA#2%+ z9aJ3SXqakShCYka+Hn!n0c2+NIqqH!Ca=|N%~{Zd(x)cC*UXedePQcxXqBs*r+7Y9 zQfH+Ne5#eW3LL$HCFp&V-n+A!lWShw(--q$^f zm{R({O7uv`$#ZCBIVgLwsAYo^3?+8e$xG$(CzRW8_XOuyYik>9Ty4UZe6?AL(x%-agOb~>5UAy^ zwb2iZY@wy4A}qPXI&3k$9y{%+Mq zIK31=>pVm|!O#d5xG#dh05VcCQsUAw;xf_}QnD)2$|`cwqEb>SQd0eaxSao{;Nj(j za>o4c3U5Th1qce@e?0hkIimw%z6gN62MmcYf+10GHy#BEMF}NwWgZzRX*qEzd4g9S zGie1L7c|;iMN%>_Fi-;Z51K#(w1k&0axrFyU=YCmk3|a?e-B3$6_6L)-vi-^R#7n} zK>YyHmDin;{{!yUsoPp8NW#o;n37BPjp?pwQG%F~stKzloR- zdzW^Q_=aWpj*7a90026f?8cS=JI3)bR96C2jxcXy2W<8lhPnVi5H|quDhdGjjTODx z0s#C#0Kkq7007AZ0O&olTMT5e3PL+=brrzf-&cNHNg7r{;;CWbgXJ3kBDH=Oc>n-N zt*N4D95B0|W8w1%l*78Enr!~l>pH&7+m*$-7DvxXR;o9z%T@u!PB;Z0~78DU-*OMn}ko0B=&Yl zj3ngo@(d3v(X^%DTata@x3DHP_xRm}@}xuD4@l}U!R>Ude~xyTOxFjwvV0rg_Q! zM0F1}d;MqR-&~%t_09BJW?D)`m_29lpHdD{e@emp=Vov>Wcx)V$g__#@C$L^u3nmA z_Gwn~=Nn9w|I_=j>L)fHaZ?GZCtXyo;i!_PT2n4hu8NpZ>oEH?;rVh-`aSl|$Nh#| z$BrJAHHN2`n|U7Wujb8J4k#=>hPQ(7Weh#->mv>yBVAZto(?n3e>Tl(G}n)&jga&Z zKYG@$aI-~I7rp@6%+C{gvszDuZ)sC>fQJ6^LM+L6RCxKXK5FiR26boKqTXGBs3TA% zpUiS-fa?otiHEKAeG0d}2`>CNKY5k2dLQ(WDOQ&}V$#MT4mgEJHXaJ)Jitl5;0z1A zOSzuI3o?+nwuyZe)Qh$KI(;DM6I$$tJD<{Veg+E&~FCbvt@a)Jcn44`F>;ApKJA>r*&|lpC)7{6{bo$35 zO#C5DlaBSvwTs&HU1hm4olkj*aE8ZV^#{6b(+mzFcl60WoH4|FajDsg1?WDJ!P4ro zNA>XuyTmVM!Hajj_J0m!8l6pl9)rs$^59$F7~uGo4k=sB$t%q?0xIC%4(Ri6We_;1 zB6?AF@5sjS6(U0Yn%Xj!y17BLam>3*#VoWpG6$#qwy9gPeT*^fK|nmn(-XmVL>H+t zYT1^6es4VFK@eW%$-R;?3w<$5(g%%sz2POp&A<81u1{eKIOWioMq9%$_(DceKhstn zIL(GHr6tm6@|I*M$A+CZuM~)(o=6~`N_D||^4`VU4bGe|OF0Ode3MJrEMc_JN`;G| zUfqS_59KW3s?TPw_@AU)-HS0Ico!nhcO7x`nHOJyiLCojoBL2(`H0Sn{C{0y|6|Sl z|AJOAd||DmiNP2Gwo9(U1L?F1;5tf(`}il2?${m{S5p#`DNon|O#lQDm3OqWw55rTzGUYEF46Ym zkA+k)yU*f;SxmmgB+3~m{N2wmxl!Im^QF(E0>+`S@X7W34BEp{?>Iz7D09gt%iMB@ z%yKcYhOOmrg41ti^vFVE2xM`=ud?G)1(wv0LC=`25XmE^28N_i*#29zs@&wyL`Ls|`<#OmUa0Y@REHQ< z(051f8E66(uH+f9P zj_H$WA162C?Muq!$MNgC>acf}_gjM-Uw^u4ZD$?-$tp7cFh$+@xJ{I~pD_GTYoTRg z?X$HN#;-W^JCO_?r2EYXh$&-!h-vf@HbX?}Y$9Qz4F9Dzo$(SaH)LeI4S(V_S~F=_ z+{q~QGHP=Ty+}f4km@s|>omFi^02Xa{LGv(c|b&&>+%BH!Q_`w;ldu<&Gk)DEd=zW zq_%V^&9E9O%-A#k+@u7>hI7$Ea(8HBby3kYF6paZ6sj#ZdD8>(;QI~Fd zifg(D%qKP1Lzf%#E}V^Nt=lKEIT+%DF$}j_iSaUz7eTmHc}J7HM|Ap4TEA z=-0~t|F53mI;X^X>`lF8*X5z>gv<4iDX1@xnui}aaWvS_70?I&E2Sf5=@PPCkBzt17Eu394R*uV`mc)Qk}y$~tkB?F;vuH%D}mcX9aS7nVcz{ys@d4wfij?t6C?n}mh=^);| z{MPB4W@vw!4w**g=nc3F_Zr|X8eli@x7o99Q@DHTU*i*e+LAssZDsNMrpg87)mh6v zaqXNbNL0yYOw~!t$|!WKtG!6qjp8KpW<{wVQZd zLnZ%HSXg5Gee#Bu-jb1k&<0oHgLPakUFzY1vo7D-U`FO;jUii=FO%JUSJ7#~Q0+fF zi4kLF=aVJA0Nlm{l?xf~ch6kw`C;IsPi*dSS@)a;^~NJPyL=s`y;SPB z7z;b(T;^5T;)v>~!(EAF=T-=QFpjLqz6k1{=|}yJSKB)2Ur2FB2&XPHb@#K@p|@SL z`Pgj=myN1E9j`tmp4la7nCJ$o9@W}nCzyv)H2LRFd^A1kVwD5y27O;oPQJ!> z&msDZM;Wvoy?a!SE3&8swjQT*Mxrd!NTvU;nBq~Dy6x?{ZlK# zCgyju!>0pVuhPegOnwEvzvhgxsoh?diEj%VV4IBNXvVgGu81G^ty`^vIhv<{Ig<)B zY9FS)A!ZCN&l#lL(4Bsd4!`_Zsm?f=P+<0SlV0i^v2o{t>9=T{XtBX z)C1M7o8t*o1Fbm^M(1)~U0Axv&aPw=TxCaRZ| zeO}wWw}pHNDHsP_UD__S(OvRtVY+HOGo^O&DDW4V-~}Yv+=cM0@Q+Syd=!<~L1p#H z2E=``n_ToHcK=5s%~W3jpEq))+`ODs&fg_`<@ZTlMwZK<{y}5lp}|X6mUHypU~P97 z8`m^pJ&*%0<7kAG!*e?<#QY<}L#8k-Aa$LXB zpangdi{Lkt@{q8^qUq`Q{K@J!8W*Y37YRankzK%136~EW{J8!QijBgyxJAU;#cK9X z>?`QqDZ@ix&#I#0$#dd*(&Ly9K6kG=SKYyJ>dv1Hs||n6JgdzAxJ1v&a`GFVDE#wz zlD^qFU1I!TW!lqYTCbo^GAba-MI0$VUC?5nu3=FALxF{$q9>avB7@X-VAE}BptSAn zn`re|u%`PMp}ZRp`KSz==vbVTdJ$v2sdD{uv0WT)Y=(8odP#Qp-H#q$WSCRN84jz@ z;Vra|KX5c{NfIz}9^~Fk^Zy!%8V3F-KcCYs5Bp%QUfrzd@oRi8)D_-mEh8Dhb3f#1 zQAE+M zb6&IpzF)#s}&3coPK>z5SdWe$N8JnudFYx|WkDT}~cd>Wb==Fl^u!m z%?DKI(4Ekd>n&&)NEs%Y|Dw=h4MRX_%A_OA;5a9{KM0IjQjK)RWQIkM%YBDZSe!b| zTNS?uerH0oq8DZMt9ZI7dD0|j`$}dZ&74gxdXb!1lF1k}y~XAD(~>ksAG zbDr2<8S}P<5{EyLzt-A25p?3#CxFKLvbILqdOC|Z`&E>C%UQ`u8G+ABR| zBZD+PaPO#~go?}5MRh_{;D#80Nzw zD$Or#g}a|(3c(bw5$^fOFkK;6DUj0L9JrlcON{MPB|FbjIdlUv>7ofR+KhSOK1`iC zyd_Ku)&cH7N~2Pb=ZXgDTgAU?_tm)Zoe~~8sD69N)7NAp`Phghohb-k?P-;XMrxsI zZ2$WB1h>AarEBH*Ev<|OxQ&*nNHseI!E}bpx$;c+tUOL8LDt~;QMO(5<}(pjHED%D zp!5pn%h(x>uZ*I)bf8^|7AS|uLA{h+^=+=i%#clCIq#k3;7OjNo^X<$zu_0oXF)tJ zjTxR}`e2yVq+@r_*%k>zGLp7UlFfr>t<5{@#{@A;p7%+;l#xMrnMyOx^p>$|-{x9k z$Tmp>@Pwi2XQJG0X}s2TPoZ@W|2cDiMLJ+H-Ke&HU#}}nfoYL5BX{X)#ZD=GhU53< zXH|2Am#3;ubkH&#r#UIu?N-1j_}&-SYK%LZ<)3#w{L0m-5yM=piw19oiqO?Rb>rP^ zHU*ammeVY5u4}C{i@=i1 z{l&LFWwZQid|f$(CvN%EUcT)^!r9ca-714}v)cH#C!`Rqg)ZCn#AMK0#45Hw27~ z2UmF*U)cnAbVtS&p|pqnzY0s-_~Ig!)EdiML4DpX^XY0p9z~&a}ruoBGxDvh&HFi2Mzi zn-#?jg_k}AFAD~a`n)@=U&0a>LuWUaZHGYP>!`8v7^U&`FFXA1LPR0QL5b%vl71?w z41W&OSh|gUq`vBLody=wKbcH(6(TSSR+1$t92mspoT=E}&|-_f-TZ2({{pmnZw~LE z4n=M_ypcLOC%J1x3iSvmpETQIb!isU#;^RiA;S|_3k@^zQBp?H+<;*I$>KuLAo;l5ovO@TPzK-a6DG?K*H}dmpOn+T%-%|2_7#vPtn(!i(ub2Y(wlj+C&bf zPeHc#!sv0X67l8q;@)Y_sIZTJ1;oU#MFRvpIHbH2A* zS2jIK#^_|$Pm^d;hqfmoW1B!?n-zBfB6G6EmmYck2kRm3h0r?DXDLXn<_2=3Vb+G& zo3*f5D@5&2-H}OD4!zY-e-KX6G!u)q36acOK<);TC|J3sM(IhM9qQOd*sgHfzI^bW zg49~Zz0a-^*c#&QbcVc-u#CUBZIjwuz0It6p(H%8%_TjTQ&2X-VJBf#$NMadFPXyx zH=J`&$RD#o(~J(8P1^32cA=X4PxdwYui2aE2o$&r5 zV;PuB?~}#-a8Yf$=NbsX9#j>S29PeMud=WhX1mD;3Z2Y$iSf*)AepQaTd!2P=z%sY zH)21D4c=_HBa}mo8$@034C5#DsM3#4}%INsFfnzkjJDP7ts)A_XLk%1rbT)Ym=0 zTojR3@v{U)1L~B3kP`LS5v{@5;B$9k*OH`y!B^Q z_|5BnNgOU|NL|a%Aj>8NGM_x6cJi;ozP9IszLD0{H`xL2G;(_8Yads6qMJA_Q&;bB zF1pX~z;&ur*i&LIUsZEo2U}kl#NHc*WdIS72uKhtA}9hj28lwz(hxB)KL`W?fqMNh z@BW*Cn}>rlJn;WEsC)d93u~bE_Y6KBa9@90Zx}$+&DIg7YwPH2@4_Y_Bq<~%D9t7U z0*eWP#Iduo8Gt3&oP2#fA;QA`{{BMFf1|O4MGJX&JI=@KV;uq>{O!@$$ z_j7}}`$8a3u}~iXxa97$@V{aHH75k(1ao$D@&$mUMeYH-qp=wJfB5-NjG428uhZX< ziE?&gEQH}75M5_Cm~Wsb4Dhe0ggxCI6>3cN{>_iBF%|^?OMs-rML?2L;140zLs-bY zfA}$S4uSzdN=k?V`8}-4^dBk{LrnnO*%gLOU)asv*VV&O7;gK*+1|t5NBF-UjIh0} zC>RbCac~fEu!Y-6!|Xtkl3;sjaVdKTJ2*&6R0wM!gpH5;As_ZX0sx??s;5$^WE1fp DNAJ}; literal 0 HcmV?d00001 diff --git a/assets/images/favicon/apple-icon-144x144.png b/assets/images/favicon/apple-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..3f8e8cc37961a0c3264d868e2d63bea12d43b819 GIT binary patch literal 7874 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 SVBVSm05xSTr5c47;r|6)ysUQs literal 0 HcmV?d00001 diff --git a/assets/images/favicon/apple-icon-152x152.png b/assets/images/favicon/apple-icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..f19e3a1d91fa583753c0ddbbe1cab17f24ac3948 GIT binary patch literal 8539 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 Lsxp<*#zFr9Jn2C0 literal 0 HcmV?d00001 diff --git a/assets/images/favicon/apple-icon-180x180.png b/assets/images/favicon/apple-icon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..441b2588fec9d240a3611108e88c449888545838 GIT binary patch literal 10860 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 G68{ZCa!hvs literal 0 HcmV?d00001 diff --git a/assets/images/favicon/apple-icon-60x60.png b/assets/images/favicon/apple-icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c7ff56134f584b9862926bb29a543f0012ae99 GIT binary patch literal 3152 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 literal 0 HcmV?d00001 diff --git a/assets/images/favicon/apple-icon-72x72.png b/assets/images/favicon/apple-icon-72x72.png new file mode 100644 index 0000000000000000000000000000000000000000..35d04ed6d9781d51f5ca3b3e706f2c8f3ccbb9c0 GIT binary patch literal 3717 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 literal 0 HcmV?d00001 diff --git a/assets/images/favicon/apple-icon-76x76.png b/assets/images/favicon/apple-icon-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..ec64c55844aa3fe872ed83a9576ec56086406ceb GIT binary patch literal 3883 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 literal 0 HcmV?d00001 diff --git a/assets/images/favicon/apple-icon-precomposed.png b/assets/images/favicon/apple-icon-precomposed.png new file mode 100644 index 0000000000000000000000000000000000000000..bf9ab0550e5b5d9143de2a1b9a25939f0ed2279d GIT binary patch literal 11882 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 +#ffffff \ No newline at end of file diff --git a/assets/images/favicon/favicon-16x16.png b/assets/images/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..08ad3d048364704437c2af57d69a8f464a3eabf5 GIT binary patch literal 1272 zcmZ{kdrVtZ9LLXiGy@?xbqD@fTa zj3vv4?m?lvVGdS0ff0F@hk`H|qc7xD$Y5hdhQgm15JMa0I+fZPGoC(*uhYzjQc!+8UD4Nq392l_cQYc zxMkzAnrZy{SVX=){r2RLX}rP`T_uEj8g zzN*I>uF$K0T42cgHQkHRs$b&1n~1+Xb+vc7V`5EwYocTPXv=Gv#$$E;hUOIw388x8v9 zs7u4L=Gl@CYt8U#pXJ3jt@DNO>#$zX&2>Ju72Yv16nds|DCXLDO08L3YnC)vs)knY zj;)<7pXO?esa2+yN46V-D~Xkclo}JS-Xg3qR}8E)kFTYwr->?4M!h9XZO}e^t{Gb8 zR2l@;rnCx!W^ko-;yJg{$k!N&DkD#0y#L6io3x#S{`D5T!oaOG6t^!Oo~k{Dv4sS zoj$JB*0b z!To&&`L4UW_I8&phAZtzA$9nZV`Xdu+D1BG=CZv_dg4^d8uxA%uX}8hNG@u1@*KTe zzOy5DR54GEc)BzZtg@5Ojvv37*hFHNsVpu50i&YJ}`H+?o@o06vC zc|E1fGg3Y-B`{tN0TZAiRKy3R`cTmX#1BL1m_Pavf?xjB;J)veAj*?)F)SjBmnR`Ir5F|m(OiK3u-8j@i8<(rVIo2- z6iER}r@Db06=Y5v^7)7PLd=(n_7Riz-J=lkIE2KAC4^L-O@M=4QL;0IpSCB(zT^{= z04ab5BD4T15=2Am^3x_E;&#aAv{*p^BrNPkeaH*Alyqn*F`fkk;tT>FpCZYWW@HH| z0{nuQmz9}I`S)TdJlqcz5L7;&%EtvAMPf>0hkfX3r<1qjX07b<+={=DAthA$KV MEM{zkE{t>WZ}7tx`2YX_ literal 0 HcmV?d00001 diff --git a/assets/images/favicon/favicon-32x32.png b/assets/images/favicon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..4c49c1da4a2073dc1de410764eadb4847cd7c84b GIT binary patch literal 1908 zcmZ{l2~bm67KZPzxIi(sW0yVJ(^h1Z5fQSW7}A!b0a~yd8ZoVm(2|!uDvJ;do3aV* zz5pUwfIzbwg4zN~AT1&=pkOvaRtSq_8z2y6GoZ}F>Z)PXeZPomi_Qx>f`V8dqT@qKUS-WH5#Z! zLltTts?Ei1!z_U;mfsu4?=5UHOif#h#D>6}XW=y(l2A)3?SuGoB3DM_$j;SjRWIMp zEq<7ov5r~h$KTA)%rA6n#);SeO%Ny`kq#>9i{Qv0o{U|s{`u)>z0_1MGc_12!k$-^ zt;Xwj)kMBLf-7SRlux~#9qXfeE=A@k)Y zN|dBZ^;z+dZhWqxe>_wmKg5$BEmMV8t095%gg{B+$r;6pv$b0N>zQWVB%@AG66(lz zw4}0rs8D{YL`f->C)Q}_MT)aRjaV^8h4+UeJyWGVS)xo6X`B1T>BWlffvLC(m2~LM z;Mgq0m8FWb1E$$tqvghs~lEezJO0FczD-tUAFC(@-lmhAiJx(%Poeu z&3KfM!F^UDEWPwY`o{0laqgcp7$-Kn?qg?qWnL2%NzzNw);_oMqeL*i4hzse-FW8y~Pik9wjFvBqc7)XQUUW?n5|l$;|NCqfbZd+_A?QvmNKMe%0`e zktbU>Z7IA_kjKyA=I0mPGIUar+@RRc0jpFyEpnUgPDZTiWz0CieE>U!8Gov5AO;7RX#p~{1#XpSd) zllsy-*CJQP^&Z^6m?Q}o#S6{l&+_X+A8lvMY`k5+$xO6I-2JnV_DZH1c4_j| zH?_=Fh!?8AW=|Hjq^@;1xM>gHK{;LZ;dFwH&xetJxSGx4qP=mcv(5Gn$9DjpwMz0K z#ilLq_VsiJm93LwRywZ^p$bZTZ{>X5R`lgQZ$Ywtt+Au+FwxpG+z#zKke%)PEeQZd zwEbs1_n2U~RkpJHLRl1uMa7Y0sjveW6b9vv#<*k91e7NZ?Ty=sc0-|XC{#PUlk-0b zk zW2oTcs*o{J^nczz67&b1Kmtqwv=<7y3xnE?MVF*RJcp4rpXeNBCQ$(jkIyUJI}T4B z`DE&ckN`kqo}$8^kBp3BorocIZjgonMtaDBA*Gatp-ZGy${{5s1f)w!x&)+C zn&0?aZ>{%zzxCc9Z{4-;Ugzx3-uv8j?>_sk6RD-4NQh634*&oNm6halFxv93;6A|I zSJDx}7=;a!QI`P#(D4ME2{(n}AFR{FOn^g2oc0K~P* zax!{8KX-HNU1@rKdxG>QrcUNMb&Zvq#$3wGDxH~MKc0P^b8jdb8w73kn9&Jmaz^S{VL*bHHM8@G=TT*AnKidEn2JFVvUH5Y_egec{rO z@pp$oSOLkwDh_CFzKr-1zk$BXsf<~LKfVs4wzt9CuzDw<)f}D0)uBvbn`uk-@LiMs!U zKsl9*(UW8G?qxYaCF6787!TQDh9Um$Y5Un`x7lyN8!`fqZuLt~hpC-e?jefkGqDyz z!wwKKd<_jZ#RCTBx~aFJ{@=ok`-RayQ?-4E(b{`uDrmgPmCFdaxOYy;$ExrId=o9XDxR_7 zJWA~ZZ=LHTmN{ma=(MflQK@RA&@@NIo1EchGMIC1nCrL{CgH;GAA^n|mEhTW7H(O)r~8NoTV5xXkCwIDIA1Rb^rB*SqK}|z zk}>6*YnYzohsPC$@P0{IjU>O%AG^IDt5u*Iu=r@@fm*0<2yiL$#a#ZG zx{x=TV&{2^@76qYy#-Fia%w-!XACh#cTg}q^&$09)7>jr+oX(~UxGD7Le8N9u&h=|QG4OT*mdGe<&wF~FYDQVxkwT<|uvMF%~C>FnIuZ2@GRmJ7Q{fW^G zZrpSTwibceCuYhGB?cwGgrjkb-Kz1(&4-j}sXpvj>!<9e@rJllrMQlxSI^YMI%0Ib z@8%_xAa9*==vXpu0wW5Tq^{K8&@H%3G-N-%@d)t9upD80Se|oSU%!5PY+y_0+V=%P*8{G39!3GFT22c;J>~FeB5~ z^)vUU(HRm?>caXB4=uu{Q7oU1OHklxH@1-@9yPOpMVl+bsLJLGLw@I3!S`%~=B`%rU2d-lsi6&Lg zcF=K->a8)#pbM?OEC*R~UKkLyh?#D7_LyLsGUJ&>Ze+^>EImTSsq*xm1Qmqvyg#0m z@I>Xl4C$t5vfy0n)(A>{$+wdLIx5Mr&dY)PNDQC&X^lOVW`1*;DOIai zpjSPiF*3O#h5~uzA~(l4o4OdA12Sj5$(1S9GO6=m%Ub`#C-gmj1xX6g#9$S|R7~?x;pu~P zk8%1Xi+3URCrbk9gU`ULn9>w??UCE^l}Mym7WrU+`}&1DIRCCpqAo73UPFs)HK0a& zd05HQNS9 zuS$`T=W{BS%%C8jwt{(FF-f)6xwrg`L)wnEauU*!6rDX+g)LNmHVH}$R7E0w^I`3* zt8}+JXFr}HT?;w}?ILr$2LgE{?9gV^t57Qk1a(boL*%O1rs2J#w3`cxE%g8|ps6Cg zd|u|wo<;wVVH+6~$VOaRJJ_l7*lwvJKai@Xp*9fEml2 zrn?)%&i@?kKHOf4qvtC0!Cy;}J@QGRP341h7k_J^4UIPOGCYE}h;WYk@1tidMM1&<_SHdOTen9Ey%YC!LRXR~87@x%`?4k&4a^UFLNvdhDWsbN zT@UBX-v%G5^-x_+zDO;r9r#&DA-zN)DmKIqgJe48kBZ$>6O*k|c?;6Nc97QcAW;-V zX)LWw`8Nj!Z`<@h=Sahnm6#LaI@tWMV@YNBzLj4p8OjzzLX(>xTQx$?9-@<@2LamY z@tS`M4solV2YxpetJ{VN5hat(Ii$dom$v6gw7nya7g!uMK8^C=tYxsc-lsBo9Xob{ zv~Q7B6`uQ2Eh{0gYE$KQn?&|TN`ww&u#cNM=CMd}OohIk6-#@iB|#3XzHImV4b`TdwEI_)r3gHCJ+I2TYJb8q}ZE^42P!U>wn2 zl_g?MKsUS>$fuK~)1j@|M7%P6w`c;y{;YF~DCRh25#}4XG_JziI)O*T}lYIZV z{{GUu5#6#0aUJKkJ&6sBjU_X50~^vae=>tTm|(ehtsHDuQOMqQ1Pju5Nd$EUelh&| zb@*fWY0b%DoqBfOc)pc{P83#wyGmrU5IZ_=DRhZpHx}%C;EB`z z1j{OR$0m42KSkmEp3ZS>POW-nuOiI{UebLhzNJlI$~xGyzb@A882_m)%AAtTGlj?T0f-i^vuE}6%thPcyC*vU8b z8x0DPcBM%)&#Y8}_xtQaH9`c>R+M$6Q6S7F2{>PT9^k?cbPrv6eGWWI)Jgn)trMFFfx0vxf*b+tPqIow`Q?vUWMguU!bEyaVE9Q{Sa~*lV z+mUCwblRV*stgEnkIylW+EBV(UB(K!co{v|7&J|FS`7acyX(@S`PHF%UVVnnv{|dO z_3Te%u82&RaMDRsZ##L3mj#>Kuf%1sBe3&4MI~EC%+3NURFOP&MC#5xem`h#=}bl1 zK5n1LPnS4+D5#b0*y8K%!3zB^c|Q>zPq8aTe}%y%*7kA(t!8@Ibxx>Nx3^Hnf?a(s z>Q{sw=yu)EZ=5}2B1%X=b>p>i%Gxdc`i#uLEj_e8?ch@yDbJQOlCM4l8z>OSocFZk zb8bzYXF)dWL=8Lbu2pw+D3zx251RUj)Q&kduS53EA=VPHp_ub|WXkdrnCd64*?DZ{ zZ+dsR2FxPSEHlbpg@Tx$o^eEKWX5AK;g`tjtMS^}wT5sJ3XTU0=eBvI$qCZ~rjdZ5 z0lbm!s##UH9N9FZq4YL^8|YaAP;gr^r7a^aA}z<7Fnt2a=VpTI*7y{OBI*;l#nR~K z758{i9v(XN+a*n6Fc1DB=5c-rj?mx{XZ{}R^ZvovIxM*iUytXUtO~o}-qBwtIi@Je zH;&mwgN8CouFm5-Hbi8Fdqg^CJO^et_`tfKhbD`;r^uqKD{M!GAwn1K;%K+V_d@F} z1iIul#lDAM{XUb4EzB=W{|S}f?xG#=q+ZxgKk(H`mNjd^@@Cc;x(VnOz*6nLyO-=# zS&ct4`5kkT!R#q-xo5h3J9#L?I%g{16T>SQHHILiA+( z4+m#g8+$w7|J$L4J%}0Opzt??hpU|@!phwipzLe~vsJf(*+U)a1-XT|g}FrNdBG5V zF0cS5E4?;Ekp7jYCtQ?=2Z2Cv+yA98f}y!x-C=VPyO@9gs=pESUU@lNi;Bv*LcN@A zT|7lawJ@j$08(<-#Pc7_zjKO;zOuE4z48P=M0kk+?%^1Q@*i>ji!rpf@qG0c882hN z#UM}qfvDR%+j{!KZ2|vY6%X76CRJsi@gH&2^)M6wA_x{1-~|f_L-PDB1~3TGKjP@x zBW(d-S=r=#$sLTz;2$P^9c6%>y^}5G@p+tGJe^!&Ja$&z_E1+B51#*iF+5N!K8T$y zuZ<0_jg_6Xh^;kPNC*NI5fFyjSlfYx`M5D2+?e&TJY~b2bpZg%@)~j#vX&wL0tGr8 A3IG5A literal 0 HcmV?d00001 diff --git a/assets/images/favicon/manifest.json b/assets/images/favicon/manifest.json new file mode 100644 index 0000000..013d4a6 --- /dev/null +++ b/assets/images/favicon/manifest.json @@ -0,0 +1,41 @@ +{ + "name": "App", + "icons": [ + { + "src": "\/android-icon-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "\/android-icon-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "\/android-icon-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "\/android-icon-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "\/android-icon-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "\/android-icon-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ] +} \ No newline at end of file diff --git a/assets/images/favicon/ms-icon-144x144.png b/assets/images/favicon/ms-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..3f8e8cc37961a0c3264d868e2d63bea12d43b819 GIT binary patch literal 7874 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 SVBVSm05xSTr5c47;r|6)ysUQs literal 0 HcmV?d00001 diff --git a/assets/images/favicon/ms-icon-150x150.png b/assets/images/favicon/ms-icon-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..8420afb467c0f40b02aa46a26a10b81367b7431c GIT binary patch literal 8389 zcmch7XHZnZv+sg{WLyL!3n*d9LDG^lNDji1S(db*OU@a|SwNzIh)51AAcB&!WRN8% z$vG`a(p&%as_uQa>V0@$UY(kmn(5zk&z#ezr@POI(a};NA*3Y)001Ovs)~A;HvM10 z$HUZ;SgwCC4UWB>rW^o(Od`60;$r$(?s_WnfU05oZA^y=rmCk20Qj*103qQ3z+cQz z$QA(L$qxYRSOEawOaS1C%ZDaiNeltcT3tmEaR2Z6*j${786j{{HFn3es{bj<{Z7&V z0Hc_iqMU)x?0zmh)vWh@UjE=u(*+ZMX8;aXa+sq2bu?jMO$XGJQ6>I1^`?P-g)Ck8 zo89XKdy4T)a*!hjZ->0cgXULLUJZljsGqOQCl>%sp}ZcHo=edzp=G8eIa!BNz9%12 zon!NFGb|yT2H&mwc3VOTEwv50%J`rBzgIp}fe%i@b8qb1nPkl_qy}j$pIXm6CRHPN zNhk@@(PN=iSBBtxb*_%aQ!TN%~A@#h)D1-C_I? z#-jvPbJvssZL#C3AyftTGaDR4ZwMiN)&y9&O(W+o6O`9hK%tMU;^}0qR=y~Ja0>WJ zB4V|kwL#R=>CO{{yb_hyW_hI=($gU*`7L!syX^ZrvD33NH1wvJ#!q_n7R3Y-94vEvU zhH^}x;}Tx{vGAwoWo4a3oEVtOsbDlcw-cBz3En7w3rr$Yesn!gMoE^R;N$hd>dD}& z1%{Ib7`_mB34O1wgi)8n_i zt(Ptt2TZF6hVjKX+N3J#YE?xn>GkOxXdnM)Y@||kBJ(CmSG!LUrwMc263W23ffXc=)&5dp|+O+WYE^pUvsqY!N_l=sgYqQ{6FKLzJ z>MmkRuQkLP>QitUxHZ)bx;!8}`JgpS)Oq;STmDodP? znB`DLw%%XT-0ym8_Y=OQ2vhnX7azI`9Ufy^)zR-D*z1e#)<#YL3 zRpK1}JD}<9YfwOC1UnTZz!G>#{)RipGk?g-XM+>Q{WQq8Ybg*NFK-&a%8zo*g$nay)1H()EJJVN&x?IHOcNjKT}b=m>uZwM`tWH&?||Y zRyZQ%^<=dGzr|X-q>TmV3lo2`3TUG}K>k zdka5!H_%}e{WFE6IQ8+BR(`!5;LmecMxR(Q^e>8Zc~I!^K8uJG9?@3lhlmq16{7ha zogtrnUa4`0H3t|_-eq)TixpS?Lx6LEg?#dpbo&Jg7&msPKo!Y`0Wd2iY}9??3&kh1 z8t#^E6CZ1WuK1-DU;Ewi3S6nI18(>iq!)9-B-%W6ZB}z)JnEfzb3xL>p}!FEQ%-;nrzgRaXok`cc?N1AAi| zno^`>D!KKEPR#KG55k^lwft!%#BYiXWo`+eF0$w(PS%f{(yyeivl_RgPa%?Uohv*A ze_Jc1rpLOzn_i^_fdZeHqShbxT7F8b|@?Q{dH=D)-$UM4%;-!O~+PC(TaKw z5X31$m6a`*@^2YhQ|n-cTHP=+hBULjHlL5PDh+~aVpmrUJz*U;@_DB{orpgRloRSm zdSJu!E>B)#*DPit*yTPQIeLPVt6D&$Fp3_-zbP$$Pw~21Q8AQdK-l%;_gb1$2WQ3X z-Q9y#AsxN1Go;4OxFJq39vuv(Pd~Of!pltsn|;2#*d~dJrdpdDi(0hVw?JhyF?xzF zoJ)WceZ)dW>6fS&_Be~#X#s85%V&36f%K>e=}?WQD3N`qs%FRiE_;7LBFD4kzEU{o zx*Ny_f>d7rR!Dk2MeRP;Gx$_q47n(Vp8svsgm>7wuraKBJ9ws6wVg!xXjD5l4@G{o za~8eMoz|8VxHG3o+W-!)#HTEynG|wrcYMo3EHXK*pfiNRk9#trV!PxMEeU7Wp^zT~aI@$ZvgTx%mN$$&4vYY9>1IE~`v!1tIs ziQQl8$yVhS(Ow*>YX{Xmmlf?Nm;;()S^fGL3HyLjFpYJIn%B06JHn%k&MH&ASOww2(PqA@{7sb09{4YD?d>4tuCt<_vL z%=yT$G8xuSVK11#u%5X}A<f zI&4*;PC1!XJN8c*4nem{8CrXfqjrdmOj|y$s~?!=E1FgS913g4O)NH-A<24=qIS|$ z4+mM%D&nm-Tc8CwWoHA74WhDPX{EMMtvL2ztn8{=v?y>bPk3?#`Q_5a-$`Gbxr!t4 zE9*n=@z0RKUD-A{8Fo@huxAoqe!}HKC!mk~$ zI|U?r^obmG#@X;k7P8z<+!kwNEe*=oi)A?{95B#Z;%3n;dTZ7Y8|2HPW>~%6C>2cB& z#ZTI!-o{(r-GN$f_oB_{^1L4B(LbL$c-%s07j0Xqgv&V8Fk5#}LGIIZYVA=%ZJM{-FAHOmV_nK@j{T%JosFVjPeXTMME-rsn%^^*Mv zIRBg^kiLNURoJ|81*%|e3x~k;DuXxiDkZoQ#ZcBNxPR5i0$+e#o2c5jpOUx>RyK~s zI4Cj(FVY=b1uH%?n71fDMmZ|}*Z^LgG)hwgUb6g-nXE^B8YtZA!5S=&{FV+a6W=Nd zKuRp1=1Mo~CJLlK7Y*>_w>}gz-!j`ASPorPAB~6HpHrRD?Vmi06Q|de+=iwGK=Fkm zAMtCDU<4ucE{vUV!dpJ)J4y%5Z<1M_9ly#-4r&h^7*(j6eAMD50ESUZ?+eX~=gpNu zQ6}RZX&~B7O$V6xp1tJaQ-MKr2i;sod#C)Za%%m>w`fC0-nJ}?t+zls=Vk0%BE=GT zw3}=mgFQMmOnD9Hmtyh}Un)ib0qBm41c4sGLtiWRMIPStzXvz*qn|PsxbK&ts*+)- zCPhD8NMx2>CKWNcrgIvf=C2LgBiaUuiq_VMC46?SmYXqwZi>oIHvre7Q91B|%|(zhw!tF^2G^ z%jLEZn!`H=J@q`J{e8#hMz(&ELW5K)zmz!3u+2;PqtEPerWljoJlC6^g|-c?KR7zD zThk?@tZ!@nEmq+4rnH zfGT<_%#0Bm-JbmC7&)+Q4lB1vPn0H0P(_XrJ4{M`rg(hc4Uzl!Jd~Z6#;i`qp^HgD ziBYwrdaBevZ1Jsv#<5?_Yplmhd|bpW?9&|DuNEAlFrEr>X&_x>kU!F%RAnpoPCmKJ z{1j4ptudjFPhFI4-|Vr0<4sgC8Hn)s)PFSsQK@T~a-27b+4?QnAzNU9H10@cPaLVF z4s3NV6I`9-XFyz@Y=?~Gp~V?D6kGl*8ossLvxcaBlT_QBIEsB}ZuHo5h$k7_kPfS| z&t3R9m5@_?i-0uh>a*fhYFL6@o1c)Zno60(ZoLrJIG3~DBeQK8Z|~aSi$hN~tZ^C1 zy_4-!X}Zef(bRw|kD4_7!g{Kao$eA{a{Pv}hHo$M&VO&(GGvDAd-W*`xddl~T{sJC z>4B#fk_Uuoi=LZu0q3}YOMd13e8KneO95W8T<5;_pJq`Xo)Ovfs7RnC) zEr~h4jx9ZTgF9<_{)ozB^vEgbhX+oLiT9b_lO_xNZzfpvvI4(I-U?RgEefX5k$#&k zFg+%?99s~PY4X++sij}Izq!MX#_rZ$TIw>noFntz{vC+QW|mOtw{94LgxU4=Tp)Co z9EW2dQ~{P>7m1?-JedbrLkx!ssW`Alk~gx==KAgBJCub!GWt=>9vv7CdOM4bq_L0G zO+u6#+s)wPnoK|868eV2v!x9dX7Jl_d6^=dr}LKUD~rk6jAzq3iXIQe3j+j-6`i=D z#XT5tdUFon6NFFyB3&O+JMmE{*U0KoOR|pjd`c+d$BSX=ClR(BiwUelzJMi>9n_cR z!$>M4EcA{p`B%z2(>g=dQ_XBUZMYOsZ~Md8ciGVS9s-Sx$usEpR?U>h=XQe&?k`hu zM=P#wa-5w{*4m8A&J5cMZ^wQ{?!Jds7Jaj@U-cJ_F|^)%X79HsQP5q)iIa$jd#jkb z5gGNcP;g|k%md*eFUcx^I$3DQp5F@Jd_nHj1Zurm#rm-j-vQa9pZ9f5W65E56ZWE0 z4M_T|yL#D<^*0P_1EZl=L-r{-<-&IxZ*%4?l13`-5YAmUmv@~1g2ywjuG-btUwe;c zbxq<>b6gcI4N9Z(@$8En8AJSVwzK z)+ey;&+-{--F;BBAkg>VTD97Z$37`udwk)D5MinnHN&Mjo7L+EvpkwO20IE%23X{b zaBP_5L-rU*=p%%BBOh*Ae3_`zVxzuQ3SH3YCa=T-1uIUE30^5Q(-HjvPl3L;uMnq^ z>X|&*iZ6xetcU*45u7a7F=I5cw3#)GBf0M7S0BA22j{-~yH3XYtG7A!=Tst&jJZwP z-kD<+zLNVEt<8iczJCuQf>{99MOO$)G zAQPAH%^mt6=n3h+@T_Lg;p>7g9h>d??7HYtZ|y6Ow+RvU&G9cpRhhSv2+#dyy5LVu z+qwK>N}pJ%i2q#yZdk1u2DV^)yYBOc4e-T-@9&+A?S&27#rKN$7+I&?-e=lm=XT=2 z?3(4Z30Rhl1z3A`UN|Gbb>HS8`lk^8;GDC=MJ5NODg@8umP+qdE+a*)_MyBfH?-YN z@0`V@Wgy=Fm9+5cC{7#GqyubeUOMS(YTQGWKDo%*5{0!DQEZX>9Ui=-AM`SkEaKGG zZsxHC_=y7@(yc$oUQAKTYE~8&Nxris4>M+d-&p^!0;|SHINzsM?fQUo%!K%R=?Gd6 zt+litN=-IQL6r@GY0!HzC!gHVFUKI#cvcOKr0$z>R^cl%fC+6~OtRx8$u`Ku+c2iV zl-S#!{{E_MzfVLTXj#g=0kJ zaT#HdR6NVeU%Q$+(@?GBBm7Bi-8r6U3eFRUmS*{%lb`QjWfYE_Gx2<|t>Gh$9h}?I zdj6t9$uGsHS#Fb#?l)>zRXbfNnrcEF)B=_U;RMQg1(Zg6_E$AYr`ZnvwF;-9EUBlS zA%65OiEx2!*{3#i;i;ZJ)jKMR!o7s@vzhTj{m_o;sPJ6cGddo}T~C870c1ow@z=)$ z5kv=}m)YdIJ4a0tZF~I1)Skcs`AXC~E+7l~XqQ=+%bGQ%&rC>?7WnOx+hCrI%ah^Q zJgTo;Y7$lKsYNC_KP}i75f}&0r{EB~1qGII%!Hn+tS5TAmo6N*Yj2wcIZ!<-kj!J` zK3~rf;2i~ufH?B#pOHqDyr;Dm?mcifFSMOxr%-H!mIljy_ zP{=Le{w2H8i#6t`@uvB}fNB@((}#l^t2!c&>{~r~=<5RBnY%`yx~X~<3Fh=}1bdBn zOL;j~!wusCmFSxUW1)upzbtAIl>y`X9L1`HV)VcY6u&6#bav9KO|ra4kG!mDMdxg? z*my(qLb@G=j>mdXimIVH*rm_MQ&pGT_069>f34($l+lIIb8%(Qiv>Gp!u&vAGQd}* zQ=_YyWXSNxM?L|WKT{woCe(z1%|YWYJMAl1eto{UrYYoZ{L~`OoVh6MfTc8~@Q{!$ zV_av@~^B> z=h$$)E9_n+ZJ3>7M3IrJV0_FfK>CD$`;>qorax&~1E!4Ym7Lr9u!1<-MAzh5TDkN( ztJ~G;NdPRj$$G^GJjB#XDzwMp{fBp=)mMo@#>l#P5NK`yvC7<5>+-*Bnpk!Zw*4Tx zhPz<1Q1&`F8u&5EozThr^{!-3#yhtjlm;CKu?SC1X{0=?UMgnM(hv-t{m{Z>0I4J# z32lq{=^2IFHvfX27blMBC1avl!t4aI5+bkqjrXigZq+Gc@Fpd9Dh0OhuUe$-{fC2s zSO{O6{N8?!nwFr`f`y;IQLX(Fwy@>bNz&u@l4n`Atr@Nc(%~?JE)zD5uZGS(d@c2u zVB2d*rrUOxGeAKfxLbep>Fwu5j;fWYh+3_Q*)~3KU=a%nmpMWVG|MHhIDDT0aNW5t zz7L?KL|R}wF%v$|sdV{5s<9kU(;TEMW1b8~`<{2QR#!)#=|Na5$E$qpyOeO!p;g=L zel&%g86CDcM!;QpF}2_iw`+V@Ve+Q2u4-tsp|JnmP9sK84Y%p}CMpQ4w=k@N-~JB- zk`X465DR(ICj7gQmwvvAeW-B}B~D30iR8ucPuY^8><`k9>&Tj%78bY>1T|r9z}rW} zdP5d`&(P~>sKWAPv7pD}*`KPvJVI{O7XPk~F65C1% z6EQ&!M{9H2(~tI#;aJq zE3^aBa7HlCq_#o|Pw61htKF#8;}hH3BvRug>MH2z!lxS0d|1s(i?D>|lJs21q&UO9n-qV{HR3ZosK>Zji}QQoeV8ow!gXHzC`@ zXydr*=TGOIPKWmYHePFAT#Ku8hC#ouyUmZBURu64fZd;c^%*<=9>JatAdM2w-zW8T zs*mhG86oqlbCOPQFoaGUg*{#Hj1s;b7)~zk1*svZ5Uil^oJCPn=B4?>#@1K85}p=` zm{_^}knx=D6~!=%`9h&JPsML36zzy^qwk70&xoJ+0yKyh)I1Z{tJ!2AI<#;@Dl}xT z9YxVI9utW1An7#o$qqb+CD-%Fe|p!p|HyH@s^ddpEv~|j!N|u9$LfJ&LQ}?QKE7L^*sAoH81 z1{}f}^T=;nA4(xSSP<39n?dYH&qcv2jqDI^^1KUb8EMtaBPbaWJ+WKLyqS1u&#j}Y zo5`Ork#6i0*3cvZ-tWiDPE%CA5)mDLiL?TAJZhU{?H1OY02zX+ToM=8@G2x%l$%k?L|;+ zL)D4u(<%v$Vo}h_7_{U5(kGwqLYX^kuw%Caa_Q#WH6pXPc?^A-P1gd}P(4-G&?myS zNAB&(r8$GYO9aZcy{MBaLhD5`=FzjRZ<9)6{OtVTx)JR~xO=b!8~XQPtLGxTaw@4- zZnSPRph;-$J}5|$Z)|P$Xv^irMV6IC<}tEr_3nW-CNbt_c=-F0y>X>qS6+HOfC$SN z>g$u7ycRiRs2Xf=G$6xx(wmD#Hx%M6Vl844I@cH=9L8l7>$=}0l8*7|`0_}6XNP?J zKD?vK4l0}3{-UnV`F+FXZMSiG_MuiM_;%&8uEK0Y3-?o<*^h-ZUBvWjyx%yIlBz!6 z^N+?>rT3=`85-XTPlhoBme<>+!4p%%4r-YC7ycCUr{4x`Bsz_G!PRhy9`({{w-*O; z3Y;!p<(19wPHguJj{&&};V^w7 zqEgJL(|ra*=8R|M;~sxv5B5&W8jmqQP?<5wn4ETusxq+KP?+Ae_lQ!mMOG0aGLS3B zP&dSxjY(#?ROlV;3P`SYLv!bs*55Y4!AZq}D@}zDe$5pP+Eu=;i9R9(w}hhSO`QlH z;;);|UvFrox~fVJC1duSUQR)nCJr332a;Cf+`AYxuG#*a{2@28(rM9JYg9FT(v3&7 zLOy@Hb}~^@&#QC$^H7sJT_in7?_<|xW!$Zvp~Lubs5GSo>GiniB1b$j9$o%A<42dl zC0cCVCE0Q(|7iw^(N8~doJ~H(s=2VCRflY$h@gzh$})UUEc`yg&LB(za&piP{|(Q= z$~xnQZClnWs8U*aFGPLUm`?%Sdnh*THnKcbxl}Ecc$N`)`m41S@i~lj#@Z5kr2{PQ zF#E6S=pGAe7VwgW>u(9>V=}9U62!v>>R}6px!GbGfFQphKaYSQkD!17zYthJ9Q;Cn zi=Q9N&)@CcoArN8c;jpXxAXnKPpIPzX2ncU{wKlR+0Mfo>Sha2djqw%)r8u^VNOgU zyrR5fJmO4(`~oj{_=Pc2nREq2m>fJjT)=#M-rnB4@PBAb!Jv7a-R$Qh_c06s)c-gd zIC#FX27?uyVV-Yn5guT$4hHHD5GcO?!S_Ef|B(p>JJ`bQ9XtR6;(}xVw+Ia8$$#VX zzcEH|8xMznkckRrd<=x>`cM^QmW3j{(C{O^U13bY(|^?U)|knN;Y zr9hyD6s$)J6yO@cOG_RGs+*=d0xsyR6tq-9pa2#SC^QlT`UfU>X8^cs1y2pN%JTL@Vd5#Pe@CW|Uv_K`|q z;3jeh%T2Wh1k%E^XD`VJO-Iy1R6145JMq#^*N7b%N)$@OWu2SF<`p%-W-SL(MyS=$?TCL#ZpA3gv2kSoDx-k-lfdP5j0Z?Vd=)c2 zB0szbF(cFxeU2LGTF4=x$UP{ph?|(fpH6r#x!AJ$tH0|wG$MqEXc%>dtO4tPAAXH| zjK0)B+~!EdU4>gcQsO0!LRrWLL>Gkkr=0~qgDB^KBIa$xU|c`b@~qNd2aLJiy{B!; zOa6DkS2`?gwX$ttGQFEI*kRfIhzFE$bBHqFc|>Rq{z3W3_r~GxrPA}lex=WHAN(kQ zp;}vpN-D;Qz0Dz|xcXtPYfqFLsg*CSDr52G*F&uR-!^iH1yP8HB*I`6$rTwG$)ac| z=uE6%xEM>kb^7vU$sZj#?ZdVe6H3N{h7#R8CaF%0jmwQo7t55SB^UWt8%$7vVZh`H&0{;7MzT!T#T@`|g#3Oh3jcWsKt(-WeXYoQoFuZ*%u;>6vq z7S#!7NUo5HhA$(k?NDlfQ^r6-$Iu*q#MSHO=`u&EU}2YY^{s*(9toavi@9)gUZvtm z;)m_Tp_vLCV8SiENB`uVI!cGJ#;9S9IogEH11J9+b^5`vo0WfwaUSf3=lKYCJGh(A z_Ud}W!Hc2W@8hmjr_djsVpFCijb3-4q16XsE9RXNU?GPS)2LxT!?$KGPP>j$3~ZTj zBg0tLR)q~(-A@}NR^W=@Ry2m+NpoN{!X!O3^3NTokQV(4eOpYoWY5Q=YT@S#p_sdW zvKZ{Ly-EEPRugV2RnT^cQWUOe86h@y-XeRI1akSB^1j|@_b@XxCw+PRaPy45i%HNn z)0WN2z!}X0VUQ^>$w85z{5`4`|L@Pu4%1nASNRc3!YKo6kIxh2&lew&9xo<@ZOfza z!?Sa;mCAo)HYy{#AC2@2k@S>w33Kp%UzPYb6CyF%`&2KvA!40pf`Ud!s8sKm|Mibm zNd63vtMMdN5XKUR`iK5zQOwPn?D}Qxe9R_%T;8JD^>wT8svZ_P!Y{cU z+D)~Ktzh3sH#2oU2!93k(D;lupBP3dt=Cnwb+b&CA{pfT>y}yZkr)#)W|=!wz`j=g z{i#KFOa?p3FM5T6R%y$V&l!j@AF#jTdS>MQRzGd^0@CAFPu{LX(3{b=uN7=w#8j(m zLZcm3EtS>$L?!0`^oSZpu23>jI1=nE6zkp=m{+7DGHywhE(odjw{%cV=E721V=dGaE z%XgO^`Pme`K?1TH0r}iUkKTrZ{^7ddrXS{}hWewmsiD?UXL-QACC%BE=ahEc9eFv4 z62a>a6AeDV@a|4NVm#k1Vvkng^=#oL z7|-X!R55euSiQX`w&KYv1fe=E4V4`|d|6MQ-ia9Dd#iB9y?UFINznwe(mLcUD_wRj z-I`LuqynZp@Sh3eJ0ZI8dTxD}sDY{l<4p6Qt@>9Dlb1W(_K(0zAW5j&v;0%v?R{Z9SV`z=>(_B- zITAdZ1Em(NSkEBCLH58}n^)Qu`pN<|^0~W^j=Iu8W5A_R^@>ugt3O}gQjN22If-X- zzD)#eOJDxsZ>Ag1h$Ld*hx~;W?%xe&zYe@|48I@3MnN))pRH=RJ6*<<=rY@Z&r{HH z8*(`%Ed5I*l~>^Yy=DQ~wIVi>RK-dny~1`&!3=!z40kil%*j4ja!E?r=^xq#`f#@o ztf=K%QXnypB@HnBU3C(PnP!d%$Y!$mW_M?~Lyp|ltf}$p&MCa?e$gUYB1mAgIwBv^ z0cktIxO1P|{@TlR0Zij<;PH0VxIPoBCz75@AzXa*fvvxRWVO3t5aDZwqnk9`=Jpv_ zR`hKvZ7_G%O+7T>=fC?@tO+D=Vk4K_tek8LIA;_~3-l+u;>u~RIJw?MW7!xHI^t&2 zFIB9lHhGlbhk$U09uvD{GA{ik+?RiYD9@v2Gw0bw*@yXOYs3zjBME^NU1zbOonHFE z^?trf<^*{P&uwnRpQ8*pGkW73>dx1M2p>;2z!C)ul}2dvp^Be*zw_%RVLh!u5et)l zKBY&V6w>2oY+I`mM%Vhm(4VlV)L(by!;K$l5K-5VvD8SYpC7LfU-rJ*-JNb=7PiYM zyNdDPk}5jOPYQgpFh@Rn`<>v=*=8-MzW48~n_ZCXm`)iMh#p1zP(ZtdB;>^>YTbQ#*Wildcq8cG!i?d(hGEH*DaF{zJiJ z4`DOp4Tu)NsBTTs!qq4z=6* zLRc|F1CG|YUpK>BXrV1Mk3t1@rHZX?(1nY=Cn3UZk!Yh2#(svA*gqz+AI*dyY7-& z?8LvP%HM$N#F))=(1zH>*hYJP?2438x5HTSfY`ysdNho;*6cPhCE3HOeC`COQufGM zFB&;ry%Z@P-{G&{OLLAL2GNCsL$kzKG$Vg})9=i5RlJo3w>~iBr@`v$+1R5Ky+PkHs&dFN!aOgd0! zc3>ns>(vhW506@FRrVZQb#Bysg&x2nbBR6iU#C^coMr+!N+w?%rQYT-9EOqPk!M;To0NJ@QX$W18N|Lu~#j?aHIwLnev?tw>N!k}{G` zqSINiS8i+14#xZ;_m>wkhktlggfARsM{fUkG2Z2G7aEhsYITd$qbH`1@quiMP zOqji*Zm}ljKOzB+B8+#1R=8$~G+ex02NOuFiQ?J4>7rla$HPaLK`y=PIuVb?&qh%} zN2o=P#6Rj>K`_K*WB(V_`$ZlWTkFPo;rAB0H4;LuK0Nf)6f(dP?RIBMsa9}7zEGsO z)6YiJEx`IOhOVx@NzV7DDh3nyym0$XZ#3QWd-ca0R+9Ew@p$wzt34bx_EaZ~G8CDI z712O-bks~D#3;?N=3gJRpt}44g+zK=?seg@|E#t+e<>V-zwP*Aeq3qJEoGJ~c1P4C zq9rKgMvlzTP=eWG2tS)CqC@W9f1io4)+D%$CxqtbobMoC)BFlAKM=b#mQsCPX)J{i zS`*`fvGg7~%KA@`jhw6L*$Xojj^$*?mXSG7`tE#FT2eAuPt~D3;C0!POyqNpJ%o=_ zAYP?5cgbTJ6QqQa;F^$qfecl5FWi>Wfc<5lfZPo|T|Gu7)!SY;2S`R{bf-!+>MNGf z3A}twjO3@_c$=CVzJLi+RDjTDgldOJadXQ?t}M*a<#ClhWnZ0VWfv1d0LT+XG7IXQ zMreu3vri>D7s{XPj>Vvx2X|52MGWZpD!oYhit!;Np$-?a!^ogGro@hrDt62>~FwU?+ zhiITkV#y6BLM*gz_W(;_(k%nEHUOlD3@djWYi{e`)&GdXr`x4W!gct^|vOFVo2sl>#TXA(JHob3z4McZDQ4{a8)Vf5Qs{ zUkM}!qriZGq>$YNGScdm29kLqliGNLmHk;f#3s)F)%P{F0u>WGsQhlxi_ru6`kam^ zS9ZR^X8VI)fGF~oWFkq<|A6Ne3=J#yUuY|9pC~NXp-Y6#U2G!NZjju4!$F45J8M=S z4<4gX%^dE742MZtD2JF>zAr4SN63DZ(LzUOr+ba_mLkUh*M!2fGut>xBqNY zt-+ZKKx_hCBnU7>o6p5~n3I?ZI(xG}lWf#?4I|Ab+ITVN!=D@t8_N&)R;FcWkOwCG zqusVtJj4Wel}x{->~SC>H!lI$JHNtoRbgj zL6uiPmtW7Msd^n^B;=(sK<{PiN95=OB(!QP-8`u*nPSDS8O3F~U${O;Mpl?U6-F@T zK>92ckE23Agqx|49~ML-Y52oLZ)%Mz+;qQvxa_f1jJ_i zoPAWAx}At9WxejRA<6osNKgiTD!u-%LA4JcTIDk-Icqr=A!e*3%aaOTcB5sZz!WQuVc8U`HKDmSW48WowCmahGf~<~0RQjvnJvby%H5wFwJ;#jzWuDu|oTk+HJdl8t%#>9i ze zd2yiDaK$FUb#-8gWU15L;CNE`|F*8wxMp*V(M9KPkyVW> z^%_gu{a}cm&&{lcTn|*IUKq?nF4daoAVSFbzDyZ?A6po0hNKO@cdpbl#CxM(hkCs+ z%84tar@e<9vP_sA_q>#&avWY=JjN7!`!4$Batfg*=yiV=e>d2a5`rc%>_1T2=od1# z?Y(*({(V9tW;)s)vHW+M$+`Og3FAk4geI0%7#>iA(dm zmSESAi%vSrB%~G+`&C%kG){Qykvbuz=c}9Rjm2Ein+XKEvpItlB`hMkN|=`?gg_Uz z-JN!4<9fbGP(iXzqDY6B0XopyUV}-2`w89i*qg;8yl7fm4znOXYvkITcOvkTAK4tp zGio9z@nMq6Ve9DDa=VLSqc6`V^v`$uRPt|;m}M0@I*!Z{@Ff>T9`8y9zRjafjKDZC z&fa7t$u5fMpSd-!5EhN7ML`b!Xw)zKD?iZ0cs*sof@)g`Ea*z(TN0Fx?ExI+F8jLM zUE+NBFEJy>xmT1%Hrd?U?%?lpGq*QVLanU#++Baf8mG&~R>#BPkyE#%5C9-z&Z}6Y ze=+j$&UX|N0&ig^<%0dT0s`&dsELF{fh&{3xp1^yEGV&-^-W8;DOP?C_|hn@${}+q zDI%01j~nj+sO=x`=*KcDw-lv74`Xvv3KIJD!aRbIr=8Mai4fmpv+3XB|4iF(D<-nC zOV%QX32CREu-3+6_9Duenq>s1(rAgtQdr0EFb@?`iGK)0>NapYLPRO)%V-ObT9RdJ z8;XC1*BIe}hQ3Z26EyUwba}tpxb@*iJ#nrXZS=``N2BHWD@jscfMly^!SBrs?*#E@ z6xPVicXe3x`-1b}Tp}nh&DU20QP=v=fpG$k?2;B^6se{D7Tk?S*)~jNZ3+QOMM-qr zSryNuh`5m*rooHJZTqYpbIbNiD=dWg=zP|J`>H|T-n#Q_vn+i<5-m*cX)6OGfWBS2 z7v;eO`&yxq7_q%cF}PG>_z2JGDzN%@0~+?gAa87a2v8pF57i$)4yC?NLeZfPTnyuw zC|&aZ+rsv-AE~1uv5R}vIXkiSjH<-d|K1|w@amJHJk-P>@U~=xN$>7PCvF{kg34p! zAPVHkoT?nPm&j8!LdXHv6oxG?k6j7|!FTd->l$_tRrD5fRFqY)k_^Ud5-Kdjz-@Kn z53eM`IZ8JEaId=7Pt4MAIqV5VbR62ZgoTYdp3wgi|zyXHI5oLwT`ZaT5+81u@DfN zJe>8c5f9>q+ZgoGf7WxmAy4jM0B>NqRY`Qnwd1^MVPM2P558UAhj<7SaXT|sG^ZkR z>;+6Yn-=>COWk|M|0xa~_v=t}8twz7r9kk*D-C9=qRf1XM{tr~b_4@_;m?fp{UbJu z!dw)|$s}@@=^5yxEyF2xIHpAlyh_`Cj()((3@Mot^6<51uM;m;I?qR5!m}tYYNUgxWk0`}GpSg;>441ntC3Nnk3q04)>2UFtx{1zyvuUfQ|4iqI+-I0_ z7HqOp)FV20RBB^Zja>C}CveeX(bIrfUUxoiMSzysnE{=`e}?|@D77(-Hj}rBieoud zL?0dbFZtKxZ6}gfK$JR>DAXqCC?D-EqJ>>S_t-PYm}e%E#Ya@!9L2opW$uQO1hc{^ zX43$5FthG@B*dena<#@-u17-}nJH}2U|s%9p3-epNaw5kjqJ4JQJyq&IOMUpPvYqW zTcYc$`5P%^)4am3BKh2+`V+39+9KDyff@C~u9RBJIS$d6`$Y3Rcp6md#S``U@dQ&I z9FhCwpUs-j6S5%9+%iHBI*emXtshX|E+)i znu2B87{8V+oo(vW{Eg>jx6_Q}R0jG|3nxnMeQF$fxq<`S8MVCB>)P!%der%-TNI-| ze)NQ}wUP)5c6>2|Rl&*v`G)^|l+NI(nEimQg>lNVw)LZ(5K@Dt19|jE3YiO~z|yBk zrzUpyS8b6PQeZ*=XgoPZYeV{ZY1SoRUG01dyXq@_cQ?3(VcQX&ZrPkcMVm7EtX+i0 z?`eyRg@FLa0JN%*=ToYe%MIb4_r0)rVOL3vfzsBy`;ZFwi z2m;?Vdh*Tx?IV14gY(Yk^K@z2VIa6#%ktUml_Hq%pSR!~QRpEf-Kflt45h5-r^vdL zl=n#i3_b}@9sS?Ci{>LE#gMDgz65fiysqDQD`P9l>x6qx9CBH%#$(I1gWsA^UoHTq z?DEzt@TCXl6oih6knnT&sdV_hO4{kGf~wM={Iw_u%XBziBlqi!uXZ^>KB3=_$v+)v z5nM{gBcNf4RW_W%aSltP&E6e;JNce;xK4xh^QS8^&z>H{_uKx0=yZUdmL&eHNbCAE zM}p4r`DhzqSB|Y%J4!o0eVm{vlZgcF=*q1una?z}j~r^~lE|Z{?jArHCcm8VR6xxP z@HG!-BD$Pq; zvfc_*xyE|8(z`?y-LDkgYaZ5u=(pc!7^MJGS}pS=7C=)&Q^sQufB)Q_In&h_#C5}c zMU_D@Z@gE(kYoMI+yBY<_TcHY>CY55>S@BPmSM&EKD8`Ju%Fq^!!7Z&t_j=sbgKJ0 zkwE=sD0Q4+Jr)>mvSon8%isF5231y0ARk`TZ(;9#6Wo79xS_JOr%+z^%|1P9-rvNn zIws?GlHRB9@wg~srZ4_-sQ1-?GBRe<_t;q{a3@A~21^IKtTo>YzXm9~NlzNK(#&nS zIC=?=`%Up==$COcAxSv8>gX2=farVl{J9O}N#OTMHsbTu)AMQmsQ=>5plm`DGmiv@ zw4?m)jsa<_$L0q{1qe`Znmgy>{-ko4v+-W`1!ct{}8u@@lnT28c_ zGZdt{f5b1`qq^SLS6rY;@v$f?DXZniiQfY^eNEx@e;vW?eRxDmNZ7CYbKLW2UY1a) z*zzB0{lQ;FH2?)am;WQ|pkKLyag|pF>g)Fn zC98MN#8FF-i-~1E&*E_;b)(1~e0Je7-soR)T{t@Or~Z?}cH9Lo;Vh6|6se(zk+t#Y z`R%UhV=scIj!e#F6{_JwGm#qj-qeGWfwc42=jP;5J0|DSUP{F>UjH}4e~zUy+zw_t zc3cTAa={iy4m;{jcUKg_iw(t!poRnPa{Vo(u5Vtd>?KEHzo++#$qX#hW9EmprH|3C z8wX=%`!tjg2o28;@ni4wn-uLaH0@&zP%X5_2585(p~7orMlJSgocyfBfw7O*Cenpd zd=+%g$WCu4j_0Dti~02NV|112V{qGRk87K4tmcGGvy|wUk~W6QN@5Bfy58|OVbAm6 z@;+H6@A@H@?9YB-9O-=%mIYaNm{Oh@xm@x?l)KCdMrNpl!Ns^aOu>MHV^G4E6c%+Z zMmWNpct*KISi@TUE#_9s2R|ty-bdLbf_E14Z2aSlr(~?eU&;$kwMK@GFj6f85 z%UdpWJ%M=Ah>|pXf?;+pV{CLRectCE?(@g3S~RB9%U*OQ%?WPtCh8*k&I9Uh9irsyDtf|RRMEti?(9Rl}1Ye$xb@}sZ{WFvR2 z%e^X6!R<2D&kd{K#>OZxepIv=8=W1wOkK>D@@d;?Jk=CEnqbvDMV${Q7IM$(w{y#A zC7mZKRyE<Sm`W4))ekrCe z!82PUQlsXyKngK-^0yr(Bnq|QB}cg^#pmBCPA%CNSPQ?;ajsLX%m@b8VHkC@l!`dBFBRXa*rG`_y zVBR4uX`i&3jRxhw;qH-;4Qj+hvK|n=jwG_^G7HiV|2dcb0n%#!MYG)?wk1nL9X`(_ zIJYWAfOBkdErnb~_1L)YovbtQc5zPxj!{tjpj3oJO+hl^prnLh9UtVByIZvCxRHkcag!tkCSW3CV|ovfkFJ{QmcwB_R0hext*u@` zmJ zl}0JDRu2fHRFfC=Qiou5(l>vLNyN4oKW`BAbM+ubRc@>3NMcc4!n6j=w z2668J+t-|BSH@LDM5hP!q>Jt_-1P8sER6+@pg}}VmIFDg=2nPO^-Viu`TV*j0{Pfk2rk1+4=|Dd#zFIj21bSr8GV^AcTuzlsTtFC3_*se- z-A9;^7T9Xd_wytkKEc3OG!4@%&M7EFnj$E*kX!&s{5{UjSQ7P@RIO&Z8<)(R`##%c9f(cW$5JNDo2 zT_`oL?p8N6qfgl)+)QYLLNM`h26TOKeb~Z#(aYbGR%;;B{=*pgs6ZZVW@lJx>;p*m zCHTSJLmU@S`(ErtWIKU}g^{eEcDM+<@wJuyC23B>YPQCLBO?(lz{b_p=uX_VQc z`3^?$hB{W=Eq3xOlOqzMWF0fEQpBsb8eqCk+Y|CsPqG`$7Tnrzf!8AmMx1dDpWUH+ zImDQ94afndbk35lOvy?S5n6lOib8orYj2*32)|{9&Pl3)=V3ecj^_t#qY_;O(Q+Rk z!NRoQ-)e*Nh#FLcgF?`eX1Hn8@|e{^zR$D z$4HZ@m6y3Mwa9XG##W&e<=7;Btn^*gL3oSUZyyB=aF|Ov7YC!R5M3M@**0q6%uM|} z#wofZ(M&oKD6geyM|B2`LEI&InG_$40VA46j&j6*2xP-d&7<|VpX95);5KLuJl`m8 zw8u3rM%q08^dhlCo$+eK1;g0r7D_Y!Zjoe{u_Fu0#-Ch4p0bElqDiTR`U-M!KsN|H z?BB)vRh+$Bt)|Kci;XI9S;##qt2CZiIe!n-_9Bm%;y-Zl`1FLSdR!7)oY}WC^tU#J zo5NKmH&5df*EM+jy;of{{UF$>Bq1HigWAr}gZ8KkaKC z|9f`)aqj_LEXIo)-ZMxGlsDJDo@hB;iT3^I8T;N-z+&I80k*)W(xI-|psCZX5R(!| z>h1djZzx|$Jq^Ih)<+F-$L?Wk*8!M{L88!Eg7=>Nhn`=QT+Xe>K~45*Y|jD<)7|Y! z{wa7Nfixz)R2@zhJj(h4kS@R3Mqh5Osm!S1Y>9tF6~!ugk{(75`mD`!?)i9do*&xe zq4{KN%;#-py825bh+M9KgUzKpO69&>Pl=c<%gRkT0mQo9jCMr{zyy&Hf5`u?XvIItRTPB)IPMlG7BjQ0a$9aXs(-0GxfM;}<>5bw!W|ekb9akHkrid- zd8vinu~vo;Ii#pfFlkI|9b^!$Qj$bZ!FIynqgtt;>Ga?7Y{r+h=kxO-7F;Z}Itg6q zkXERj_U=bL!vFXKn~Qlxlr!mY-!C5cfv!5o12Wax0oR&Cl3`b~QBwDSJ;^OuvnLNm zu2w7`t0h6X^lFre=ggBajeV81Irz5^uUa{N_~=iEVS${v<$c9cALP~hO}TY0+9U~1 zX5I;_x}O>hC}4oVF{9bP``6wlHtEvc+;F@JC!T3=?SA~t&UEYcqqm~{wc8;Tq5AeF z$L3s2ngw*)54<9X4kB774DH)l*j^KQ`*_|1TfCgqR8VUa&nIiPXl6*?xtY^YP@gXc zx*2`Hj3##5&To7}BGMqvX+cRik!@LPmY?yL-EPvBp9`0hW%u1&BOY6#){AB9OCAS~ zWww(V*4V-}|IH9{rWw`#e~e;8dYKa+ugAQNj{{i8&&>ti;7FbQ+|C-fI@Csjb&&Mi z3+2HK6>G&enbmBVoYGTBAP4X}kpM=tvN7!t=h3h4KJ3d`uzb}8%gr1np_5os0+l*3(?3Q#D8%&ye=1fRTV1|Oz84akG-2y+aKy0;u#Kx=rM zWkQFIXK4!! zz*uy(0+5fJBgSS=!w2_<9m_}tkzpSHt*bVB#yVRv>G@L0H~ZPb1x1V&67Fs0y+*t@=!+f+hVE%sL^ksurxC)1gj^YNTE$+ba*>tcA# zsNwSjYw(D^pk0Pct`n6SPPPX1{@rf<5GfDlr1Ib*^6tS2$oPvp|I|6K1|I*~#!mwt zNKt!6OoSUD;jLQ6G5n){KwF2`)9VcCA4IH(jCFo$F)e0E| z7t0bT0oR>n{PYIs-r*RVn2~?VzTR+Q`*X`Ii#$#R>2a6W1CJ56rDS=cyW6w#@(3ie{;`7`QbTm-A6a@;F^R2S)xHva0ruaLvJvE#GfQU$(G1Q=nC`9Q)(R~IS%T@W@h~{b!^W?>lsfzp4<{EmhD3qDT{dmD zU$6c95VOgT$8h?@aEckbOv0vkjLL7~|G0MlR`XV}kRVknM#B`*%QQmtON77f)JA2b zvwm^Gd=ePKl17z^K-Wb?V5+>$HdOZW)!ln}nqW_~ZFograbZXbyNez5%Q1kGr9gNzr}@y z>W1oqZP&e0c9RlA%vx|mo^0Z>uK<6&uqo{?-hcnBpgnr3o*QVih7&0^(N{d>MCUW~ z;oVl21m98-J9&9OVDDG6e>S5o4iqrCZS!DYZ_6=jb+^Mg6!U(eLCH+7cloZ$*`->h z9O++dRjm?A{a`aPk-8>b+%*Sm0x7=4JrZB$yt}yeV2+qyXd`v@G+M+Lm>S1wuM^(K zKY0pn&C78Yk2%FUpbE@9WTaj+5~SA8BdWqR--rFPUVPX@R?ndkR2)?PD-qw{$elRE zC6uEMO@S!snl+z>0oLK;8Ra^e`zO9++f`lKhA|?R4%{B$o*lB`fzRckUPWiGntjXs z@Jg5`nWTfo{!@uA7c-t5h7>!PpzK9dVO7baWK72r};G{GwHIr*uvRc*8uk{-#zshHY7hPq7w>q!!Ya{eqQqfR; zS@aKDenMBqb$3~_z$hTMp2t32X70RIZcae`HL%f*_s96jQwv>N%iKV8p`d?m(%dv> zmOEbcJg4U2xpdep*x*0weohvJp{YyD^{8$=ZSy2r2uIkzN4eVYBAm7@_)Rp~I%ZF! zzAT`XX!PU)#IVI@a_zcREm~&V54Xh$EO+yU8rXCuJ9r8M@63iCInRf|lvs#XTa^EV zQI`2`*7%q9xISer6r5chT5^`_9J_b!Iw%#C1)ugevGfF;NwuK;PCokqlcdIsHOA4+ z*)C5gv<5`}=kQ|M=~;;M^v6*f-+pv?ngW}N6%jl{`ejVn&(V7bt*v^s!(ZVzfWg?5 z*6$EzDq?#~E8Az^ll#SkB!O)F?Y;L3Hs3HbvWSO6sJ!^ z{4yD!u{cnqD>mD0)fSJ~xXZCSK2xH6YM4s@Svm?1yV}pfndwX{VA@5l zX3?hMa&%4eGD19Rvf>Yk;J|tbM%fWFawUwIRSkW5T}T%x;~^F{F5qoZf475u{S~Wy z`s(u%?$}*Cf!HT`d;r!0vSQv<`-TeVU43Ap=Fg=7E)JR&A$FqZo_4*nKnQa)&4Jla zS~5dEYeen~{~OfXcU*%pXF)bfbpOe^xmGvV^p}I+9}0eF%Mb)aKnx+pd32y6P|6>S zJ@(cA&%DbkBeP6{HJG@MgUNpi1}ir`R&FHWhx$s+drJ9iy%W(#p7AFR7*3Y?Lo7=y zud*Zd2@*Qs{_1Qjjim(;HCFMyAbZ!%<}cP)<4y<<;N)syU#;MXV5dIt`&y^d0; z_E}}<6aM{BJ#4n#oRLuyH*k<7FIl5byf%7$$i@mO%z?#k4se^P0o-c|l!HELcTddI z_QQ2PsyD%-!$elXcH4?3kcq-B3bNE!^yz3tA1!mjnd)0?_8siyFp4GasRcKGSK6L)qOhT)L4q3dq3X(dZ^MjFZY1z;?Z&% z(uFmxTBae(`wL274|EZZQ`s>1u8r5_L;VKfQ^A|NjuG(>9zv--??*{AH5o8bddf(p zCR1hO5bg`HqhudyJtyeM&;Y(lcckw_a|M(qHD2RqoHJIj-{~JPdhc+5$82g zY{(*Q35#=c+@bSw5!dd0M17dH??%m?)nj*#K!4U{m-mNRwu|46D`C;HwSELfIIn`; z=pXi{QZiWo@^;?2EHF6*!3S5{2p5+N`kVa8!8i9)HsBB^`^q$Oo;pw6>eHVxfnf{xuKL>TpKc@|m>e@?^@RkU_27Y_Z*q?0(qfpynOI9M{ zVHryi-ep%spY#h)nR7amDnNr6-N_CPEa}%V;a^T4xPV*jrc6yp+FrloKnnFaw@ZF< zo4~%T49&O2H?Zg4hKUz#_uPG0e*G(kndPfpr9_R!Q>RQ&V|cCfPf2~ujU~dfvaQD+ z>N?XRS$&iGmYP>d&V^-u--R9SH8D(bHh0wDwHw@aI85L^ciDy*5~iS8M($4oXQ5jE ztm$};rqE1`SQdO?q=SCk?+WD-i1}Q4>OyDg z$LQK82fegN$i*XBcG%F8Y(az@wTujfQ9U_5{Zw7E8&@QVC%AH2b-SDW0 zM62trGiqa`*HE(%{rFBXEA!Z?i^LZE)DrFv1Ycz=zAVBYL((K^)q)GXQRxWiy+xuoaF6 zW}E?zLCdV6BwPOk6DFZ;H(J_1v1Z7pzQ0m6Y#Qj#Fy@liC~x?HYT=hWb7O>MB?W#N zODbY$2L5__9^+ayZnN`tw#k|D@zcz0eaMG;=9`Ef?HEFl@BSKaI!ZK6`{X>5JUgyL z!>)wXr@B`tI%Mts2nH=Vn6NKUCAcA4BTb`eO7bc39`lyMX9- z34>W%Vec;;YNUUJ622+ow-Z=9-LEVNdUu}q9g)wYGM&2gvREkpLEGDBSKmRX6)`pB z_&xxru5e-Asg-cT{BLvemx1kVe_{PtqW)7A^`^Qc^m#YvCRTY1J1)CF zhGpQ@yvi$UwEQ}Y1M+mTC45Qsm zKwi99ar^A+DVlnPzZ5}%)$yB-B`>=&_w?KO4L1`#T}!ASc#KHfA$7{rJdcqT7OY<{ z9Y{pHeu@)EKg`H|y^C~lY~`ER{@kxz-smA_r4ac^bE!V{Pefu?Zmum5ZtJW3;Tm4R zs;j{#NkHoa7EHe8UN9Dpa&vxnyXyfK`RYryf&f|35hKGJjTJ(-c6doP7+l1Kl-)#c_Y z+$^q?N`>H}((fQuP11vjKy99}5>sHR4sb~fR$F~_+@C!p?eX5Gi%0b!faZR>TJFIK zZWj(N`Rf`Dv9^S1nBMXi8=(59B6S?pbvIB*#cJI15!qsWcNrgUPwU5_<@-&}TIOl; zHHJ1?>iyR3?b+As7VAINf;|L9=m`JAk8G@f`T1~@BGRuk6xjV3}}m|0&-u8QnE zJ(&Et@2r!tm6U4dh^oZvxoNqj9r-)a?S+t1WL;&~U&jLZ#Q^Bb(9Ob1z&VY!fBVny zL}Vo-iHU8KX?RB3pNJ29)~o?9{{+$Li#>;vh{}=0q{3$pNTNvD8nY-JZ*bqw=vubF zp3NJM@^NxyGEMEuPn;NUZzfW@{L8~kpAgU>gJn9Z&Lk;f4pT#wOj3DZpXREce+ z@{l`TantoZZ=qHyzKbw(y}S>t=x+iG(#b{p-<>ylfI>U31|>gGce{odzX7ej;ke{pX4;Co>09~D!t4#k67Gt|h-7U<+dA`*=!`$$R5FCwVlpwa z>4h#IQ+9mO)dO+N1Dqi*`>N#!(5wg*4WI-|AB$NxhYvJncF{&c-ihirO`>xCY4nK} z_W+I(z2Es@;qc{GUiq@!!_|niB=f?Yh(xSDp_ZWGsAAi6)Bf>&#}jvVa}jNp9jkNS zHn#(pka>;hmXO=}a1RwN>)EQ|F;(r;X%iEdgcopPia3$NC&OkBnRFbs!fISWyH4hz zfNp@tzinKtGT^lZI7R)~C3Pb{i^Q%8uHk*J>4?UdkU^p26pNoMZlYmn*80uZv?tcs zj@`j-nv`Eu)Ci#mmE?^>T}jCOH89pj(#2a83>`-QpJL+$!m$%CD2$=3@*VlH}rg%)Av zW&Xe{VeVxwK!rAHGD2kHdvnV%N>Ytc8&z06(MWyK(&pOU<)0{s2tQ9b#UJ#Z>Qe*C zQ}s}o=;wy7P*`F(0V*}F2c5>Vo_&H>p2;p>~Q6zp#Z0?c;pw2?#dC64yV8opT%E5a^#mNFt|(M|Zm>?F(c-I$2|yW!?uKxnQR? zDLc?z)X_RwyTl^;Yu&a)Ows_;GEL8j z@qZfm?x3c+?%klg(iAWhkrJc?M0!V>fV2omQHoRp(g_e+=)DLSdXwH!nt%{`hXB$< zlopB*H1sN<(td|`elz#G-^`u4e`GSrS!?Z*owN5@>v^8LMTJvE&a-!5VyhqJ(ydgO zmJSPdcXo3v35kc1H2P4Pv-YFC)Uc0`I8aiN7&v4&B+Zfez!BDgS9eg)WuaJNB>|e(B$7*I$Z#if4)(aa!(-y+nss1%0++C|2S~bPsQ!@17uLCJ>?*Vi_IR z7bH3mujGK;sVKV4XkovvQfk_x2|G26$fd|T^O{bJDe(VP_Y6XPkEbclZK7v74QDkl zxD`-7sGr5C@+@kg?*~CX!@fN$nFENC94)}C7EH|)l5NZ7a1uB38_tY=6Ml}tO?QN- z9Z&(eg-O}&O^HVjLtgeueadj~q=C(V^F~T#e!e9hgT(1RoSHikzQ;C^Zn14@1(_YX z8`iB#HbNd@U!AY^tf%@?h8}bHDU^}KPeWV-AZe|z-A%VT5~$T(9L)VPjq(ot0u)2> z-j+f`YAlbP6^?bix}-x9EV8%1il;sTT8bWc8LzS>UD!m%mcT<+#92?9ZRQpmA^6xh zJ*|L>Ik;ldJmX3`WJQs|Ho1@Ji-7Xy^&5#RZR$wwM&QWV7v_2=9cODd;_qcDjg_ot zE?WGj@%$}tNUQZzMYCcoqXLe=+7XHB3(dh&Dk?PE!JldEDhSv_7uf7^mKp0J5Ict* zWXGRhJiqbkm{>~9bzH1ja$gKMcFmAI?nvt6d^R|`-NOYk8b3cOpF*U*eyeV(0yNxS zm-gWmCm=xqf3M5vX|;Kr(YPU7u)(}2NQ&`_KSzRPET@BU@U#JDn9QoK~ zbokf!!UgA5uXs>HhAqD&VI#*e`^#^%@K$u)o*{)sNP3rqmE$@+5HP7!T}@%*TAS!% ztJC48jV>AhA53cuX*H`gdn7157T)yZ56};ph-zPj`Lp?ymDZy(#q3c7Tf$%l*b)D%^+%%q>Xfs`Zel9CvSX@-AO09_Miu zmns0hZCAC_x}!p?CK&&d$!{-xmD{Pz__Y3+mohNOr_{1fX*>t;Uj!UTcw8=+$T`j` z@k6Vp&sD#Ti_n`Ir~-;GCx?c$3mY=h^C$L8TcKA|s08;}Kcl{mYx5f5{c1P#n$Si} zm(Hq_q&5cY?p3ekrZw(i3{5M%Y?ItD&dA=8?Jhf7LjxSXEm~m_{%S{)`WH+s2(G{G zisTSVQ$SGUAowLuaLZRdw>S*g?V8~3=2+3XYKcm;2H+#hkcU5j1!p0~+-?!blxn`& z(5BP>Fz)eP`A+VPnVBiX2aot5kh-%Comw}qc!FN9LHWc9_C!Um?1nhMw=0)Iv$@~h z^RAs=n?s;0TgGmuH9U?I3;kIa&4f#d;2ah{_Rw zV|n9?h*)x!fiQk@kaxo)88Ng>?sUmb0bu+BH?)zyg(v7(pfwA7S%##fQUdZP3dC=s z^arNoSWQdUswa0L(nVKQn+$pgce8DZwBHbyfZJeyF26iQl(*d30>ZBPemoP4`((dmlZ< zo@$Z;329hqf+HQo?2%C|$P6(nCXh?DNJaRkdj3Fy$#1Lu$X~rX%#R(@^Ru<%Uq}L) zJ=rzxr5rrdy{H@K>)gNlhIX*twDq*F#I6)t8lh?h5H^@RU#lN@-LV`nzs7cjJOQdC z4A7a78f49@nG@q%UTIAZMaUso@RElj^>?{Ok`vnY4=X<@Ti{vyTQIdhz^}CpDrz#> z;558{^JIR5xiR!-?n&d4?>|kO8+?ZM-vCMz=MikgChn7(-C8$giL?lRW5tk?#h~I8 zpadCJqG-ce++}=A9~-5iviA>yP-{2xWKj8Y=0wU?e&_E*BWZ)@c56mqIj?#Nf_HtJJ zYfjXW{84Y`^?mQuw>^r0$PTS!DD#4{EYTtjAP*utA(hLJqFTjLvH4oEfo+XLNf1+j z&=vHaZr(0zpwC_98I@~71B7hNpd|C#Lnq2>*-@U2d5OdrP5{>6Vv+I=z`1KPoA@n1 z0bd(T>1+Esh*olJrV7mVO=)7`A+EQaRxE|4fYU1%8AbzzMSpJ(12fImq~TJZ3NXoh zO~29)&jEGXFA7$2^bOl)q~{XOIELTM<;GFgo8Ng}I8G;qZ$qNZ?`RWm$_-MbF;lI8 zGMzn0I_<5N$s%-rj}BiWH1wZZ$BzAhXR*CZaEvgeA&uExp}iv=jr)F=cxyR^N7`!e zP+mYJS}@-2?5A}|Pk2`kJqhyL!|W=)FO|qt!tSAMo#FkBLzn? z)-)CX$4uW4rbdn7-+k=we5r?=Wu&7@4j7q!GOs zyB{KXcylz1jB#^+(mqUp&$h%gex!sZK<4j)hss~AU+;+&;G7*&BYRPjG;MEfg*J{^ znBzmZAx+>in9nsv4FJ9Efj(OPgQ`>@4YPo37=75zi<0hC{qRRPPxMMZf|cPRG zHozA=-vq0aI@f<3AZyGet(ZDY`iNnBe`l>y&35+B2drd?409(5N`y4@wPM`8@>Wi+ zn)qk%ohQH&w;VL*7Rwp%u}-uflYSuj&+Wn&=p%2`1Uysn_rd)E&SxeF8C6)&Ny{oT zMss;uB`S8VVBM6}UhCQkQn^AIR=ok>4?fu3xZLv%{SbFp<)V~We)N047~856+j6J_ z7dogzzI&Wt%d|9y-=PUjxz_x%zC`mRnx{1g0jdI^dr?!!&_lE1AmB##*(hp~PSDm^ z11M%PKo!{@Y|Ph;3^i=+{%m9;c9j(#OjU++2Fkna1BHUwPnO@L7cnGyYcKr@M~gWL ztWQNEdZV!b0ko0iZinoM@Q_RAALYUZRNdCzv;}WAAHOUSxqksr(3X(8SdU%`ml6@w zVT|b2D;il%h1#?hIC&&EBR={lihL4poZ z<(^V};x-XjK0_T#nJBTYP++-TbD@0O`z^br}DvdJBF(%ffyfMbJ?Z@bHPp2xM-0vOl9!fvJ%DNn+f_IX)=F<~z zD}HfNfGzaOr#`AQiPtwWK=@tv(~L9^wM+qvo;e$S;<9U6R#((Hz?(b7maO$Mhj0gG z@4g|YySC^~TRB4ego6#5-&=ORUa9hyr!Ci3Dl=o7qC(h+G~24*+EB3c)cTJ+XBMn3 z>(rYmn;WAMwo z>V_=Tm~-R#`@39*?E37*Y6ji;Sv60R6CLN+S7y zF>t4^=f?vNg3y!5zsh7qpiQzzxl@A;3Z=vy(gKmR3H*XWwasx)oW|9*T02g4ewS{@ z21>o(Pe<{ddCzsx85q=pQH4)JlS<~-lu;ra#AGcc7kiSTz1bUkw6k{UN z+A+F?uN@_8+J-&oGO(XS(zm3650hBx1X59gqc#ts6t?Y&k?q0`F=_-NB zc>gWY;;zc&i}?-N-kSi)l90OX;?UX=2fn^Zk9#*_J3q$A*5|i-qZi7qj z9gHduC5oLXL<-HZOI~}s0_BN-+OznUBLymQ}<#Dzn_$E`^+;gSbptWV^&^{C2V?B=SCWPqr=}yi5W?_HlWnGU& zP}N@GM7Q5P3eRGIkMio5CrXL}uDMdP6M3suMMx@xsh61*nbD|uvP zO2g2*)OaL9_g&MSoiZicfL?^yT78Sj0A zy6NcS#FjyFWUvp&H>PM+;D+QfqU2nTT>X_spPUOnyUxX4blCJ}L@Ok2KwJ2?c1amW-XSF+bDi zl&op|Pt!5G-mUNWpYraE6+SlhpG4lee`5A=jTtJloe1lpznvW;JW9tESq4KMc4uXN zeJ#H-ltU`Jl?KC#{C3zFI|_PCtSLfP1g)nHsDV#N+0C*`nidDh3QL)JN@ZpS7AB=R zSz|;0db~iW)qD6*5;bPVgoI35M_C9MXYN5INZdR#2i6v>1<0`!+Uo+SM=R6rLEV&?p_xl$ph(4jlfyDs*_?xfTRByz_ zH6Bn^vm|m;79b1F#_%`K)N=4Y%Da)*UV{K%zl+Px<*ebda8yi?$z2+wDIe>O$VKQ^ z3*BO&t6zo2bBB_kVruwJs0pdovHV7eCzJ*zp9GsiYFr8%e#(Atqq?OeSIOG4c5LAK z?zB>7AP4CfTh7$-o>S(}dO|qjItJ5Yd_b?u5ZTz**{_zfB%=H>V6U~IpskW0Ktrm& zMJ`l>x&*|#{~2Plo0$7d@u)3i`Nw30m*^%*hOK{Sm205IP7J*v{KV`#9h=Mrp5dBg$9XU! zy0l!?Cw4>Uv)GU@DFrU1oYVZlVEc^4qo;^?izyZOVSAHjoKlEPWJ-P?kZ8iSy9Sk= zNGaSWBX%35>X+n;v=3eTIAZ$>wt?_$*~Q?SX( z+xE%fh_Kd}9^)s2aqNk1qfruV0zO@lyrO1yjUNqIy!(+W3$pVJzinz4GuZZJ)qCg} z(&G_1J0ZjCkXEBY(}wnfUPoipVnjpTN8S^rTWIQp<6ZY3AMaoq=DPOO+tik3!d(3k zzlM_sn#;;IcWkh_wk5#hkb6SStPgI~om^2h_*bkO6`M7z4Vk*1MrIpH22Ov|R=F zw=?>BY)DGwpA?4H8*Us(BgPSpQAD9^bpy62_*+hIbNyPHQ#15RlU8-l)qrA`Om$d( zBnXkM>zV`q_V9U56mHq5uCJ_XQG_4r#-YnF8{d!fC^)JrSEZT)02vgI8u5PXhw|Z= zcqac9{IL%h6HIFw=A(;b$)9l>72dg-=-txikPAi4d;Jt|?7+9y{+b_u85c;x>3wm+B9zg(nw7RnxH zNV$St2w(r_J@_5M*-MTZs2K`Ub#(5qCh-2bA(iH$e>cDMP~aSikFRY1Ns70({3i4r zt*f%p*ZG^`j;p=xQbcHLMbCoWWwRZ@%^v#0T8V)bA}0HHC-r#MOP5ju|7z}MD*aQ+MA$gmqkN4FRyPS$~1i!`knAKlTGrEJW#$+Noo z%b^g`^@pVWPG5PvUv!LHuaeR?AJeZGZJXji%Y*YkvD<~uJne?In2+MQ!6*HxKb)uS z?w~s~8fW(fe80yY0P>l@5V)Rd5;u{gc0e^wIhNe1D3~Po4|!T;Y9B}1n>T8LDK3k< zEr|B_F0k4YnHoLxRK=d*5$;Cf7vzs{=hTgNY2eR>o>&^bX|4ISLf=uXp`>LtJ>~P% zZ{?>fCZX4jNAwiZ)TZ^My$^gc=KW&!p^_B~Id_4+QM7qt1^q%B1fQzRICGHQ^6IB4RV@RDOTxG1u1r`wKz!-^Fk1suurP71xTkb~pI#=SeE3v-! zyOZBdCGkl14bzOv)X3kc|1x^goB))>XBEPQBvUZPtjeen&x-WENhpwe{s{j#l34Bj z77fu(UdZDHa&me6(+&n->TJia(+2@bqP||hH&K0y1-KO5w+N(d|9?L0UtV`Bac^b4{K>FH*4SxBqAgt#1ACbM1-FUiAoDUlok`_6%vvb66!|{y#2o% z5H7FmZG8UU4)qU$pn!wwRSWJeHXbOrn>7fAfZJMY!ENoW9Pdd8ND4^tKfEU*BrL`+ zBo4HCPghvto}Gt>tF)jX3WXA|zp@5ifVF^&o9%q$HV_cRa24^nohQOlT3Xq~$`fJj z>>(|!1DLvlgv%~l1^>(D-!`SC?X2x>?L0uj4@IazZV`aZo&SjQzcz;UuRQFoOeQPY zNCA_(|6!tKkFfUeakU2h+bcm=XWK`022cMhj@EO)3M4EcBqc5)BndDa{4GWR6RQ7+ z^UU7Y8YHBolu{_a1za-tk4yS`Fp!PClQl4WL4>o1lZ&mO4cyD#%Ej4T@c;ZUf>v-* zVH<0aSFc1~!EG!bT3ZT9N(x&&6qmAkWoaWMB`N@T2mt-#V&MUl&p{xV%2VZPrI(@q E0}*0fO#lD@ literal 0 HcmV?d00001 diff --git a/assets/images/favicon/ms-icon-70x70.png b/assets/images/favicon/ms-icon-70x70.png new file mode 100644 index 0000000000000000000000000000000000000000..cf9ea0d7270b37fbb138a679ab0a6ab3170df5e3 GIT binary patch literal 3598 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 literal 0 HcmV?d00001 diff --git a/assets/js/relativeTime.js b/assets/js/relativeTime.js new file mode 100644 index 0000000..9905f6f --- /dev/null +++ b/assets/js/relativeTime.js @@ -0,0 +1,19 @@ +const lengths = [1, 60, 3600, 86400, 604800, 2592000, 31536000, Infinity]; +const labels = ["", "second", "minute", "hour", "day", "week", "month", "year"]; + +function timeDifference(now, then) { + let dif = Math.round((now - then) / 1000); + + for(let i in lengths) { + if(dif < lengths[i]) { + return Math.round(dif / lengths[i - 1]) + " " + labels[i] + (Math.round(dif / lengths[i - 1]) == 1 ? "" : "s") + " ago"; + } + } +} + +for(let i = 0; i < document.getElementsByTagName("time").length; i++) { + let elem = document.getElementsByTagName("time")[i]; + let date = new Date(elem.dateTime); + elem.innerText = timeDifference(new Date(), date); + elem.title = date.toLocaleString(); +} diff --git a/assets/js/rescript.js b/assets/js/rescript.js new file mode 100644 index 0000000..d949140 --- /dev/null +++ b/assets/js/rescript.js @@ -0,0 +1,12 @@ +Array.from(document.getElementsByClassName("back-link")).forEach(r => { + if(window.history.length > 1) + r.href = "javascript:window.history.back()"; +}); + +Array.from(document.getElementsByClassName("qr-link")).forEach(r => { + r.href = "javascript:void(0);"; +}); + +Array.from(document.getElementsByClassName("script-show")).forEach(r => { + r.classList.remove("d-none"); +}); diff --git a/assets/js/search.js b/assets/js/search.js new file mode 100644 index 0000000..0ea5ac5 --- /dev/null +++ b/assets/js/search.js @@ -0,0 +1,11 @@ +let item +function search(query) { + Array.from(document.getElementById("card-container").children).forEach(function(r) { + let card = r.children[0]; + for(let item in card.dataset) { + if(card.dataset[item].toLowerCase().includes(query.toLowerCase())) + return r.classList.remove("d-none"); + } + r.classList.add("d-none"); + }); +} diff --git a/assets/js/sort.js b/assets/js/sort.js new file mode 100644 index 0000000..a5cb95d --- /dev/null +++ b/assets/js/sort.js @@ -0,0 +1,37 @@ +if(!localStorage.sortDirection) + localStorage.sortDirection = 1; +if(!localStorage.sortProp) + localStorage.sortProp = "updated"; + +document.getElementById("sort-" + localStorage.sortProp).classList.add("btn-secondary"); +document.getElementById("sort-" + localStorage.sortProp).classList.remove("btn-outline-secondary"); +document.getElementById("sort-direction").innerText = parseInt(localStorage.sortDirection) ? "Descending" : "Ascending"; +sort(); + +function toggleSortDirection() { + localStorage.sortDirection ^= 1; + document.getElementById("sort-direction").innerText = parseInt(localStorage.sortDirection) ? "Descending" : "Ascending"; + sort(); +} + +function sort(prop) { + if(prop) { + document.getElementById("sort-" + prop).classList.remove("btn-outline-secondary"); + document.getElementById("sort-" + prop).classList.add("btn-secondary"); + document.getElementById("sort-" + localStorage.sortProp).classList.add("btn-outline-secondary"); + document.getElementById("sort-" + localStorage.sortProp).classList.remove("btn-secondary"); + localStorage.sortProp = prop; + } + + let sorted = Array.from(document.getElementsByClassName("card")).sort(function(l, r) { + return ((l.dataset[localStorage.sortProp].toLowerCase() < r.dataset[localStorage.sortProp].toLowerCase()) ^ localStorage.sortDirection) ? -1 : 1; + }); + let container = document.getElementById("card-container"); + container.innerHTML = ""; + sorted.forEach(function(r) { + let col = document.createElement("div"); + col.classList = "col mb-3"; + col.appendChild(r); + container.appendChild(col); + }); +} diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..63493310d34fdd53361db03623c3eaa9e35111ef GIT binary patch literal 1150 zcmbVMNla5w6#XXd+z=P8U79#-jG~ERl))jWk%-Y)W-v@*5JXTw1zAXdDo_iE3bahd zARtnqr3Ff5>O^U2p|%CY$j~U5==ONut3*x2h50%E-v917_uqSdQ$g57m!F?N_w7RB zW(!|i7iI|dK^XbVq#$~%N3^ia;-v)izY3`9p8bN!X#fqha zYBexPLuv0w@`!wYo<#FU^I2xdA6Hi~%`d~MYZUgDEb{CwJcOM3P_;$V}fV~V_AG<4wWyqPctuU(5}s}3Hu9R2ynp}u{L5D4YX zqZlj*fl+!6_Qq(~>SD>8DEckL)2>}yzv>ym(&PZVjuCh?GHCKbpuXkPYjOk8N4bjn zXbVGNcpL^p2=KOI< zBGwih_+(OI(X8TN`Pv5u#wrpxN1Yq=YyY3~`@9GuKLg0SNLXaKFxTgBuza{wM76`@ b*9O}4K2&Es=0$IYzYmmeq+S0X_}};g7S+_3 literal 0 HcmV?d00001 diff --git a/pages/_en-US/ds-index/dsi-twl-firm.md b/pages/_en-US/ds-index/dsi-twl-firm.md new file mode 100644 index 0000000..bc43c2a --- /dev/null +++ b/pages/_en-US/ds-index/dsi-twl-firm.md @@ -0,0 +1,46 @@ +--- +lang: en-US +layout: wiki +section: ds-index +title: Nintendo DSi / Nintendo 3DS TWL_FIRM +description: The complete guide to modding the Nintendo DS +--- + +### Setting-up CFW +While most of the benefits of Custom Firmware are for the Nintendo DSi and the Nintendo 3DS family of systems, it allows you to unlock your consoles possibilities. Installing Custom Firmware is quite easy, and in most cases, all you need is a (micro)SD Card. We have the best of guides for you to follow, with step-by-step instructions. + +- [3DS Hacking Guide](https://3ds.hacks.guide) + - Lightning command: `mod 3ds` + - Kuriisu command: `guide 3ds` +- [DSi Hacking Guide](https://dsi.cfw.guide) + - Lightning command: `mod dsi cfw` + - Kuriisu command: `guide dsi` + +### CPU Speeds +The Nintendo DS shipped with a 67Mhz processor in 2004. The Nintendo DSi shipped with an 133Mhz processor in 2009. Most games of the Nintendo DS library were made before the Nintendo DSi came out, and as such the only processor available to them was 67Mhz. Some applications tied themselves to that clock speed and as a result, would not work well with a higher clock speed. Most games, however, would outperform the original with a higher clock speed. + +nds-bootstrap has TWL Clock Speed as an option, but it will not try to adjust the ROM to work with the higher clock speed. That's on the application itself, and applications not working with a higher clock speed is NOT a bug on the nds-bootstrap end. + +### Nintendo DSi System Menu +The Nintendo DSi System Menu uses a signed 32-bit integer to determine the free space on the NAND. Using the actual NAND, amount will never go above 128 MB so it was safe. However, when we redirect the NAND to the SD Card, it goes above the 32-bit integer limit, which makes it overflow to a negative number. The negative number of free space will unfortunately cause an "An error has occurred" error message, not letting you boot into the menu. Fortunately, this can be fixed by making a dummy file to put it in a positive number. + +The positive and negative numbers are determined by pairs of two. For example, 1-2 GB of free space is allowed while 3-4 isn't. 5-6 GB of free space is allowed while 7-8 isn't. + +In version 1.4.0, RSA signatures in the DS Cart Whitelist aren't verified.there is an exploit regarding a vulnerability in the Nintendo DSi Flashcart whitelist that allows you to take access over the ARM9 processor, It requires version 1.4.0 (it was patched in future versions and didn't exist in prior versions) and a flashcart with a modified ROM + +### Nintendo DSi Slot-1 Access & Blockout +Slot-1 access is blocked when launching applications from the System Menu, except if said applications is either the Slot-1 launcher itself or System Settings. In order to launch normally unlaunchable slot-1 cartridges, you'll need to either make a System Settings exploit or install Unlaunch. Without either of those, you cannot launch unlaunchable flashcarts and you cannot dump ROMs to your SD card. + +The flashcart white list is checked via RSA signatures are contained via RSA keys on every firmware expect 1.4.0. This means that people can white list their own carts + +Before 1.4.0, the white list used to contain only two sections. In 1.4.0, they've introduced a third section which was made to block flashcarts that got around the first two. The third section loads up to eight different section of the rom and checks them with a hash to see if the rom has been tampered with. However, due to the forgetfullness of putting any sanity check, we can overflow into the exception vector/interrupt address using a large enough value. Best of all, this runs on ARM7 (aka the security processor) so this makes it the first exploit for the ARM7 processor. Since this happens before the lock out of the SFCG registers, we could run advanced homebrew (such as Slot-1 dumpers & external slot-1 dumpers) + +Unfortunately, the requirements are tight. It requires version 1.4.0 and a flashcart with a modified ROM. Also, the expoit never officially came out, due to Unlaunch being much simpler to install and having less requirements (just a way to get into homebrew) with the same advantages. + +### Nintendo DSi Camera +The Nintendo DSi Camera application has the ability to take pictures in the JPEG and save them to either the System Memory or the SD card. The way it's loaded restricts it to only DSi made images, due to lacking the proper HMAC stored inside a custom EXIF tag. Any custom images are not readable on the DSi, wther its PC taken or PC edited. + +A `pit.bin` file is used in order to load images. However, the header size at offset 0x16 is unchecked, so a big enough header size value can exceed boundaries and cause the buffer to overwrite and jump to unsigned code. This is how Memory Pit is powered. + +### Nintendo DSi Bootstage 2 +The second bootstage of the Nintendo DSi loads launcher's "title.tmd" into memory. However, they do not specify a filesize limit check, meaning that the first 80k bytes are loaded into RAM while the rest can be a custom payload. This is the basis of Unlaunch exploit. diff --git a/pages/_en-US/ds-index/hardmod.md b/pages/_en-US/ds-index/hardmod.md new file mode 100644 index 0000000..f69f556 --- /dev/null +++ b/pages/_en-US/ds-index/hardmod.md @@ -0,0 +1,14 @@ +--- +lang: en-US +layout: wiki +section: ds-index +title: Hardmod +description: The complete guide to modding the Nintendo DS +--- + +Hardmodding is when you physically solder the motherboard of the Nintendo DSi to an SD card adapter in order to be read on a computer. This is useful for restoring NAND backups, viewing NAND on your PC, etc... +### Nintendo DS +![](https://media.discordapp.net/attachments/547986366357700620/736370094392999947/mobo_pinout.png?width=893&height=603) + +### Nintendo DSi +Follow the "Hardware NAND Mod Guide" and "Decrypting your NAND" of [this](https://gbatemp.net/threads/dsi-downgrading-the-complete-guide.393682/) guide diff --git a/pages/_en-US/ds-index/homebrew.md b/pages/_en-US/ds-index/homebrew.md new file mode 100644 index 0000000..330afa7 --- /dev/null +++ b/pages/_en-US/ds-index/homebrew.md @@ -0,0 +1,45 @@ +--- +lang: en-US +layout: wiki +section: ds-index +title: Homebrew +description: The complete guide to modding the Nintendo DS +--- + +### Development + +Developing Nintendo DS Homebrew typically uses devKitPro tools, such as devKitARM, libnds, and libfat. However, there is the possibility to branch out and use alternative software: + +- **SD Card libraries:** devKitPro recommends libfat. We recommend using libslim instead, as it allows usage of different partitions, quicker speeds and non-blocking. +- **Graphic Library:** We recommend using easyGL2D, which comes shipped with libnds. However, you could use NightFox Lib. +- **Entire Toolchains:** We recommend using devKitARM and libnds, as it includes DSi compatibility and has a larger ecosystem. However, if your target is exclusively flashcarts on a Nintendo DS, feel free to use ToolchainGenericDS. + +### Flashcards + +DS mode flashcards are a slot-1 method of running Nintendo DS applications. Flashcarts have the advantages of keeping console files and portable files separate, the ability to be used without modding your system and are usable on DS Phat/Lite consoles. However, unlike modding the actual console, there are multiple flashcarts on the market, each with different kernel requirements. The kernel you use is the most important. + +[There is a **work in progress** flashcart index](https://nightyoshi370.github.io/mm-github-pages-starter/), which has kernels, firmware, reviews and purchase links. + +### DLDI + +Different SD card slots have different hardware (most of the time) and code written for one card won't necessarily work for another card. DLDI (short for Dynamically Linked Device Interface) attempts to solve this by having the SD card handling code patched in externally. Loaders like YSMenu, Wood R4 and TWiLight Menu++ can automatically DLDI patch a homebrew, but if you need to manually patch it in, feel free to use a [DLDI Patcher](https://www.chishm.com/DLDI#tools) depending on your device. + +### Time Bomb + +A time bomb is a expiration date on flashcart kernels that manufacturers use to force users to buy a new card. Once your system clock goes beyond a certain date, the kernel will refuse to boot past the expiration screen. Thankfully, a flag is not set anywhere and it's handled in the flashcart firmware, giving us two options for work arounds: + +- Since it relies on the system clock, you could set back the date. This will break any game that uses your system clock, but it will allow you to use the default kernel. +- Since it relies on the kernel and not the firmware, you could switch to an alternative kernel. There are two options available: + - [YSmenu](https://gbatemp.net/threads/retrogamefan-updates-releases.267243/) -- The menu is quite ugly and only displays `.nds` files, but it has far better game support, cheat support and no memory pak requirement. + - [TWiLight Menu++](https://github.com/DS-Homebrew/TWiLightMenu) with B4DS -- This is useful if you'd like to have all your ROMs in the same menu that you could launch NES, GBA and other console titles too. However, it does require a Memory Expansion Pak for extended game compatibility and does not support cheats. + +We recommend YSMenu due to the higher compatibility, cheats and lack of need for a Memory Expansion Pak. If you want to setup YSMenu, DeadSkullzJr has made a [Dropbox repo](https://www.dropbox.com/sh/egadrhxj8gimu5t/AACv2KqWmeXEHkxoYRluobxha?dl=0) with all the primary boot kernels set up for your flashcart. All it requires is a drag and drop to your SD card root and you have completed. + - You could still lanuch into TWiLight Menu++ for an all-in-one menu for emulators, but you can't launch into YSMenu from TWiLight Menu++. + +In order to test whether your flashcart has a timebomb, set the date on your system to the latest value possible and launch the flashcart. + +### ARGV Support +ARGV is an information transmitter between two homebrew Nintendo DS applications. It could be used for forwarders or alternative menus. + +- The homebrew needs to be programmed in order to take advantage of it. For example, GBARunner2, NesDS and GameYob all have ARGV implementation +- There also needs to have a way to set the ARGV variables. TWiLight Menu++ and HBMenu allow setting ARGV arguments diff --git a/pages/_en-US/ds-index/index.md b/pages/_en-US/ds-index/index.md new file mode 100644 index 0000000..a03fe4e --- /dev/null +++ b/pages/_en-US/ds-index/index.md @@ -0,0 +1,11 @@ +--- +lang: en-US +layout: wiki +section: ds-index +title: Nintendo DS Modding Index +description: The complete guide to modding the Nintendo DS +--- + +Welcome to the resources for Nintendo DS modding. This will attempt to explain most things related to Nintendo DS modding as well as be a basic introduction to the NTR firmware of the Nintendo DS, the TWL firmware of the Nintendo DSi and TWL_FIRM of the Nintendo 3DS + +If you need help, ask the DS(i) Mode Hacking! Discord server.' diff --git a/pages/_en-US/ds-index/retail-roms.md b/pages/_en-US/ds-index/retail-roms.md new file mode 100644 index 0000000..cdebf9a --- /dev/null +++ b/pages/_en-US/ds-index/retail-roms.md @@ -0,0 +1,73 @@ +--- +lang: en-US +layout: wiki +section: ds-index +title: Retail ROMs +description: The complete guide to modding the Nintendo DS +--- + +### Anti-Piracy + +AP (short for anti-piracy) is a method used by developers to enforce legitimate purchases and prevent piracy. This can be circumvented either from the loader or the ROM itself. + +- For nds-bootstrap's purposes, you could load a `.IPS` file in order to circumvent said patches. This `.IPS` file will be patched inside nds-bootstrap, so you could keep the ROM files intact. A pack of `.IPS` files are automatically included with TWiLight Menu++. +- For Wood R4 purposes, these patches are included in the software itself. You will not need to modify the ROM itself. + +In case there isn't a `.IPS` file for your ROM or your software didn't patch your ROM, you could try directly modifying the ROM itself using [nds-scene tool](https://gbatemp.net/download/retrogamefan-nds-rom-tool-v1-0_b1215.35735/) + +### CloneBoot + +Cloneboot is when a game sends it's own loaded arm9/arm7 binary to another console. It is used for DS Download Play, for single-card multiplayer. Not all games that have single-card multiplayer uses cloneboot though. + +Currently, nds-bootstrap's cloneboot patches is broken due to arm9/7 binaries being patched, which makes the RSA signatures invalid. + +### Thumb instructions +Instead of the 32-bit regular ARM instructions, THUMB use 16-bit instructions. This is useful when memory bandwidth is a bottleneck. + +### Save Files +Nintendo DS cartridges have 4 known save types: + +- EEPROM - Electrically Erasable Programmable Read-Only Memory +- FLASH +- FRAM - Ferroelectric Random-Access Memory +- NAND - NOT-AND + +Though rare, there are DS Cartridges with NAND based saves: WarioWare DIY & Jam with the Band (USA)/Daigasso Band Brothers + +There are different formats to use depending on the loader, but nds-bootstrap uses the raw `.sav` format. If you use a different format, here is a website you can use to convert it: http://www.shunyweb.info/convert.php + +### Card Read DMA +Card DMA (stands for Direct Memory Access) is a more efficient way to read catridge data than by software. When there isn't any data available, code can still execute. In software catridge data reads, polling the register to see if there is new data wastes times. It is the preferred way of accessing data. + +You can spot a game that uses dma via no$gba by enabling the DMA log on ARM9. A DMA access to the card uses AF000001 as the third parameter. +- For example: `DMA2: 04100010 023C18C0 AF000001` + +### Donor ROM + +In previous nds-bootstrap versions, a Mario Kart DS ROM was needed for SDK3-4 games to work or save. +The ROM acted as a Donor ROM. nds-bootstrap grabs the donor's arm7 binary, replacing the original ROM's arm7 binary, in order for the save patches to work, and there was a few side effects as a result. +In later nds-bootstrap versions, a Donor ROM is needed for certain THUMB or SDK5 games to boot, as well as save. + +### Action Replay Cheats + +Action Replay cheat codes are codes that allow you to make low-level programmable changes in the memory region of your favorite game(s). These changes range from simple value tweaks to extremely advanced ASM tweaks, both of which could alter the experience of the game(s) being played altogether. + +Flashcarts can take advantage of cheat codes by using cheat databases. Cheat functionality is integrated within the flashcart kernel respectively. The following kernels can utilize cheats: +- Wood R4 (`usrcheat.dat`) +- YSMenu (`usrcheat.dat`) + +Homebrew/digital based solutions can also take advantage of the cheat databases, the software currently available can use the following: +- NitroHax (`cheats.xml`) + - The engine used here loads the entire cheats.xml database into the Nintendo DS's limited RAM and trys to manage things from there. This imposes a serious limit on how many cheats you can have, as NitroHax will not load a cheats.xml file past 2.4 MB +- TWiLight Menu++ (`usrcheat.dat`) + - TWiLight Menu++ reads the `usrcheat.dat` and sends off the enabled cheat values to another file, which nds-bootstrap picks up + - The cheat engine used in nds-bootstrap is based on the one used in NitroHax. However, due to the cheat file containing only enabled cheats for that specific title, the cheats file does not have a real limit. + - Bootstrap 4 DS (aka the nds-bootstrap version used on flashcarts) does not support cheats, due to not having enough RAM and the limitations of the Memory Expansion Pack. + +For the most complete cheat database, we recommend using the one made by DeadSkullzJr titled [DeadSkullzJr's Cheat Database](https://gbatemp.net/threads/deadskullzjrs-nds-cheat-databases.488711/page-38#post-9090779) + +Cheat codes generally have types A through E, and here is a description of them: + +- The 0xE code type is a 32-bit code type that allows you to make multiple writes in many consecutives addresses all at once. Essentially, it is like the basic 32-bit RAM write code type (0x0), except this doesn't have addresses listed next the the values you want to write. Instead, the 0xE code type is programmed to automatically branch from a starting address, then determine the addresses to write to. From there, you just have to tack in the amount to write to in order for it to do the job. + +Credits: (`DeadSkullzJr`) diff --git a/pages/_en-US/ds-index/wifi.md b/pages/_en-US/ds-index/wifi.md new file mode 100644 index 0000000..c406b0e --- /dev/null +++ b/pages/_en-US/ds-index/wifi.md @@ -0,0 +1,24 @@ +--- +lang: en-US +layout: wiki +section: ds-index +title: Wi-Fi +description: The complete guide to modding the Nintendo DS +--- + +- On Nintendo DS applications, you could only use WEP and Open WiFi +- On Nintendo DSi enhanced/exclusive applications, you have the addition of WPA2 support. + +Hotspots are usable, so you don't need to change your router configuration + +### Nintendo DS WFC Restoration + +1. Launch the Nintendo WFC settings. +2. Connect to your access point. +3. Set your Primary DNS value as one of the values below, depending on which service you want to use. + * **Wiimmfi** - `164.132.44.106` + * **AltWFC/WFCZwei** - `172.104.88.237` or `104.131.93.87` + * **BenFi** - `24.218.177.103` + * **Twilit WFC** - `34.66.49.81` +4. Set `1.1.1.1` as your secondary DNS. +5. You might need to NoSSL patch your game at this point, depending on the game. diff --git a/pages/_en-US/index.md b/pages/_en-US/index.md new file mode 100644 index 0000000..ba835eb --- /dev/null +++ b/pages/_en-US/index.md @@ -0,0 +1,9 @@ +--- +lang: en-US +layout: default +title: Home +--- + +# Welcome to the DS-Homebrew Wiki! + +TODO: Write an index page... ;P diff --git a/pages/_en-US/twilightmenu/creating-ram-disks.md b/pages/_en-US/twilightmenu/creating-ram-disks.md new file mode 100644 index 0000000..ae1ff05 --- /dev/null +++ b/pages/_en-US/twilightmenu/creating-ram-disks.md @@ -0,0 +1,27 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Creating RAM Disks +category: Other +--- + +NOTE: You do not need to follow this if you're using a flashcard. + +To make a RAM disk, download [this](http://memory.dataram.com/products-and-services/software/ramdisk#freeware) tool (click `Download Software`), and follow the instructions below. + +Instructions by @Dakkon7, modified by me: + +1. Run RAMDisk +1. Click **View** -> **Advanced** +1. For **Disk Size**, type `12` for DSi, or `28` for 3DS, above **Max 1023 MB**. +1. Un-mark **Create TEMP Directory**, if it's already marked. +1. Click **Load/Save** +1. Click `Start RAMDisk`, and a new window for your .img should appear. +1. Place any file and/or folder the homebrew expects there, and/or file(s) you want to use. +1. In the RAMDisk program, click `Save Disk Image Now`. +1. Save `romname.img` to a folder called `ramdisks` in the .nds file location. +1. Click `Stop RAMDisk` when you're done. +1. In TWiLight Menu++, open per-game settings for your homebrew. +1. Set RAM disk to 0. +1. Launch your homebrew, and it should read your RAM disk. diff --git a/pages/_en-US/twilightmenu/custom-boot-splashes.md b/pages/_en-US/twilightmenu/custom-boot-splashes.md new file mode 100644 index 0000000..aa88072 --- /dev/null +++ b/pages/_en-US/twilightmenu/custom-boot-splashes.md @@ -0,0 +1,18 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Custom Boot Splashes +category: Customization +--- + +You can use custom GIF files to have custom splash screens while booting TWiLight Menu++. They need to be named `splashtop.gif` and `splashbottom.gif` and be in `sd:/_nds/TWiLightMenu/extras`, then set `DSi Splash Screen` to `Custom` in TWiLight Menu++ settings. + +Most GIF files up to 256x192 should work, with a few exceptions: +- GIF files over 1MiB (DSi Mode) or 256KiB (DS Mode) may not play at full speed as they will be decompressed on the fly +- Between the two, the GIFs must be less than about 10MB (DSi Mode) or about 2MB (DS Mode) +- If both GIFs are set to loop forever then they will show for 3 seconds, so set a loop count on at least one to control the time +- The user input flag is supported so set it and a long delay on a frame if you want to show a splash and wait like the defaults + - Only the GIF waiting for input will be paused, so the other can continue animating +- If using Local Color Tables the whole frame must be overwritten as it will replace the whole screen's palette, not just the current frame +- Interlaced and text frames will not work diff --git a/pages/_en-US/twilightmenu/custom-dsi-3ds-sfx.md b/pages/_en-US/twilightmenu/custom-dsi-3ds-sfx.md new file mode 100644 index 0000000..4e2a826 --- /dev/null +++ b/pages/_en-US/twilightmenu/custom-dsi-3ds-sfx.md @@ -0,0 +1,51 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: DSi / 3DS skins - Custom SFX +category: Customization +--- + +TWiLightMenu supports custom sound files in themes. Place your sound files under the `sound` subdirectory in your theme folder, for example for the `white` theme, you would place the files at `themes/white/sound/sfx.bin` and `themes/sound/bgm.pcm.raw` respectively. Both files are optional, if one is missing the default music will be used. You should then also set the music option in settings to "Theme". + +These instructions assume you have devkitPro installed with mmutil. You can get devkitPro at the [devkitPro website](https://devkitpro.org/wiki/Getting_Started). + +## Sound Effect Bank +The sound effect bank contains sound effects such as the icon select sound, etc. + +|File |Description| +|----------|-----------| +|startup.wav|Played on startup. See the section on [Startup sound](#startup-sound) for more details| +|back.wav |Back | +|launch.wav|Played when launching a game| +|select.wav|Played when moving the select cursor| +|wrong.wav|Played when reaching the end of the page| +|switch.wav|Played when switching pages| +|stop.wav|Played on the DSi Theme when the select cursor stops moving| +|menu.wav|Not part of the soundbank. See the section on [Menu BGM](#menu-bgm) for more details| + +You can then run `make` to make the sound effect bank. All files listed above, except *menu.wav* are required, but you can make them silent. + +Your resulting *sfx.bin* **must be under 512000B = 512KB**. Any larger will result in either crashes or some sounds not playing fully. + +### Startup sound +While the other sound effects will work with any WAV file, the startup sound must be in a specific format in order to work properly, otherwise there will be a gap between when the startup sound stops and the background music begins. + +The startup.wav file must be **16-bit 16kHz**. You can use [Audacity](https://www.audacityteam.org/download/) for example to convert to this format. Once the file is loaded in Audacity, change the **Project Rate (Hz)** to **16000**, then press **Shift+M**, and change the **Format** to **16-bit PCM**. + +If your file is in Stereo, you should also go to **Tracks > Mix > Mix Stereo down to Mono**. + +You must set `PlayStartupJingle=1` in your `theme.ini` for the startup jingle to play. + + +## Menu BGM + +To create custom menu BGM, you will need to install [SoX](https://sourceforge.net/projects/sox/files/sox/14.4.2/sox-14.4.2-win32.exe/download). + +Menu BGM is created from **menu.wav**, which must be **16-bit 16kHz Mono**. You can use [Audacity](https://www.audacityteam.org/download/) for example to convert to this format. Once the file is loaded in Audacity, change the **Project Rate (Hz)** to **16000**, then press **Shift+M**, and change the **Format** to **16-bit PCM**. + +If your file is in Stereo, you should also go to **Tracks > Mix > Mix Stereo down to Mono**. + +If SoX is installed, once you run `make`, you will get a `bgm.pcm.raw` file, that can be copied to the *sound* subfolder in your theme folder. + +Unlike sfx.bin, *bgm.pcm.raw* can be arbitrarily large. diff --git a/pages/_en-US/twilightmenu/custom-dsi-3ds-skins.md b/pages/_en-US/twilightmenu/custom-dsi-3ds-skins.md new file mode 100644 index 0000000..43b2fad --- /dev/null +++ b/pages/_en-US/twilightmenu/custom-dsi-3ds-skins.md @@ -0,0 +1,134 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: How to create DSi / 3DS skins +category: Customization +--- + +The easiest way of customizing a theme is by editing the png textures in a theme's `ui`, `battery`, and/or `volume` folders. These files can be any png with one minor caveat in that only pixels that are 100% transparent will be rendered transparently, any other opacity will be drawn as fully opaque. Also, any part that is transparent in one of a set (ex. all the battery icons) should be transparent in all since transparent pixels are simply skipped rather than reverted to the background, so any part that is transparent in only some should have the background texture rather than transparency. These textures are allowed to vary in size, but may require tweaking of the theme configuration to render correctly (see below). + +Changes to paletted textures are more involved. Within the `grit` and `background_grit` folders of a theme, the various image files may be edited. You will also require [devkitPro's toolchains](https://devkitpro.org) with GRIT installed. Once you have finished editing your files, you must run +```bash +$ make +``` +in order to compile your themes into Grit RIFF Format. This will compile your paletted textures into **.grf** format in the `grf` folder. Do not make changes to the `.grit` files until you have read the advanced theming section below. + +Be aware the paletted textures come with more restrictions than BMP textures, the primary being an absolute maximum of 16 colors per texture. However, some textures may have even tighter default palette restrictions, which can be modified at the risk of running out of palette memory (see below). + +## Theme file descriptions + +The `volume` and `battery` textures are self explanatory. + +### Background textures (`background_grit` folder) +| Texture | Description | +| ---------------- | ------------------------------------------------------------------------------------------------- | +| bottom | The bottom background texture when not hovering over an icon | +| bottom_bubble | The bottom background texture when hovering over an icon | +| bottom_ds | For the 3DS theme, the bottom background texture when not hovering over an icon when on a DS lite | +| bottom_bubble_ds | For the 3DS theme, the bottom background texture when hovering over an icon when on a DS lite | +| top | The top background | + +### Paletted textures (`grit` folder) +| Texture | Description | Palette Restrictions (if less than 16) | +| ------------- | ---------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | +| bips | The bips displayed on the bottom of the scrollbar (DSi Theme) | | +| box | The box texture, containing both full and empty textures (for DSi Theme) | | +| box_empty | The texture displayed for an empty box (3DS Theme) | On the 3DS theme, the transparent color is `#E0DAD9` by default | +| box_full | The texture displayed for a box with an icon (3DS Theme) | On the 3DS theme, the transparent color is `#E0DAD9` by default | +| brace | The brace texture shown past the first and last icon (DSi theme) | 4 Colors | +| bubble | The bottom bit of the bubble that draws over the start border or icon box | 8 Colors | +| button_arrow | The textures for the arrows on either side of bottom scrollbar (DSi Theme) | | +| cornerbutton | The buttons that are displayed on the SELECT menu (DSi Menu) (The name is based on an old use) | | +| cursor | The border with animation frames that indicate the selected icon (3DS Theme) | | +| dialogbox | The background of the dialog box that slides down | | +| folder | The icon for folders | | +| icon_gb | The icon for Game Boy games | | +| icon_gba | The icon for GBA games (All themes) and the top icon to launch GBARunner2 (3DS Theme) | The default transparent color is `#00FF00` | +| icon_gbamode | The icon for native GBA Mode | | +| icon_gg | The icon for Game Gear games | | +| icon_manual | The icon for the manual | | +| icon_md | The icon for Mega Drive games | | +| icon_nes | The icon for NES games | | +| icon_plg | The icon for DSTWO plugins | | +| icon_settings | The icon for Nintendo DSi Settings | | +| icon_sms | The icon for Sega Master System games | | +| icon_snes | The icon for SNES games | | +| icon_unk | The icon displayed when a game is missing an icon | | +| launch_dot | The dots displayed when a game is launched (DSi Theme) | | +| moving_arrow | The arrow displayed when a game is being moved (DSi Theme) | | +| progress | The progress loading animation with 8 frames | 9 Colors | +| scroll_window | The part of the scrollbar that indicates the icons that are in view | 7 Colors | +| small_cart | The icons displayed along the top (3DS Theme) and in the SELECT menu (DSi Theme) | | +| start_border | The border with animation frames that indicates the selected icon (DSi Theme) | | +| start_text | The text displayed for the start border on the (DSi Theme) | 4 Colors | +| wirelessicons | The icons displayed to indicate a game has wireless support | 7 Colors | + +### UI textures (`ui` folder) +| Texture | Description | +| ---------------- | --------------------------------------------------------| +| date_time_font | The font to display the date and time | +| Lshoulder | The left shoulder | +| Lshoulder_greyed | The left shoulder when there are no pages to the left | +| Rshoulder | The right shoulder | +| Rshoulder_greyed | The right shoulder when there are no pages to the right | + +### Video texture (`video` folder) + +`3dsRotatingCubes.rvid` is a Rocket Video file. For more information on converting videos to rvid, read [Converting a video to .rvid](https://github.com/RocketRobz/Vid2RVID/wiki/Converting-a-video-to-.rvid) on the Vid2RVID wiki. If you don't want this to be drawn you can simply delete it. + +### Fonts (`font` folder) + +You can add custom fonts in NFTR (Nitro FonT Resource) format, these are not in the example themes, but you can download the default fonts from [here](https://github.com/DS-Homebrew/TWiLightMenu/tree/master/romsel_dsimenutheme/nitrofiles/graphics/font). One utility you can use to edit NFTR files is Pk11's [nftr-editor](https://pk11.us/nftr-editor/) (works in any modern browser). + +| File | Description | +| ---------- | ----------------------------------------- | +| large.nftr | The large font used for titles | +| small.nftr | The smaller font used for most other text | + +## Theme configuration + +You may configure various options on how the theme is drawn in the `theme.ini` to accommodate larger sprites or textures. + +| Value | Description | Default (3DS) | Default (DSi) | +| ------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------- | ------------- | +| `StartBorderRenderY` | The initial Y position of the Start Border | 92 | 81 | +| `StartBorderSpriteW` | The width of the start border sprite. Note that the start border texture is exactly half of the full border. | 32 | 32 | +| `StartBorderSpriteH` | The height of the start border sprite | 64 | 80 | +| `TitleboxRenderY` | The initial Y position of the title text drawn | 96 | 85 | +| `BubbleTipRenderY` | The Y position of the tip of the bubble that is drawn over the start border | 98 | 80 | +| `BubbleTipRenderX` | The X position of the tip of the bubble that is drawn over the start border | 125 | 22 | +| `BubbleTipSpriteH` | The height of the bubble tip sprite | 7 | 8 | +| `BubbleTipSpriteW` | The width of the bubble tip sprite | 7 | 11 | +| `RotatingCubesRenderY` | The Y position on the top screen to draw the rotating cubes | 78 | N/A | +| `ShoulderLRenderY` | The Y position on the top screen to draw the left shoulder | 172 | 172 | +| `ShoulderLRenderX` | The X position on the top screen to draw the left shoulder | 0 | 0 | +| `ShoulderRRenderY` | The Y position on the top screen to draw the right shoulder | 172 | 172 | +| `ShoulderRRenderX` | The X position on the top screen to draw the right shoulder | 178 | 178 | +| `VolumeRenderX` | The X position on the top screen to draw the right shoulder | 4 | 4 | +| `VolumeRenderY` | The Y position on the top screen to draw the volume icon | 16 | 16 | +| `BatteryRenderY` | The Y position on the top screen to draw the battery icon | 5 | 5 | +| `BatteryRenderX` | The X position on the top screen to draw the battery icon | 235 | 235 | +| `RenderPhoto` | Whether or not to draw a photo on the top screen | 0 | 1 | +| `StartTextUserPalette` | Assign the DSi Profile Theme to the palette of the start text | N/A | 1 | +| `StartBorderUserPalette` | Assign the DSi Profile Theme Palette to the palette of the start border | N/A | 1 | +| `ButtonArrowUserPalette` | Assign the DSi Profile Theme Palette to the palette of the arrow buttons on the bottom of the screen | N/A | 1 | +| `MovingArrowUserPalette` | Assign the DSi Profile Theme Palette to the palette of the arrow shown when moving icons | N/A | 1 | +| `LaunchDotsUserPalette` | Assign the DSi Profile Theme Palette to the palette of the launch dots | N/A | 1 | +| `DialogBoxUserPalette` | Assign the DSi Profile Theme Palette to the palette of the dialog box | N/A | 1 | + +## Advanced theming + +Occasionally, you may require more than the default number of colors for some paletted textures. In such cases, you may modify the `.grit` compilation file for the texture to increase the size of the palette. + +For example, in `scroll_window.grit`, you may edit `-pn7` and change `7` to `16` for 16 colors. Be aware that if you remove the entire `-pn` line, you may encounter unexpected results. + +Also note that the absolute maximum of 16 colors per texture is enforced in code and can not be modified. Even if you increase the number of palettes to above 16, no more than 16 colors worth of palette data will be loaded. With the amount of textures loaded in, there may not be enough palette memory to hold 16 colors worth of palettes for every texture. Keep this in mind when adjusting palette sizes. + +Additionally, paletted textures must have dimensions that are a multiple of 2. Paletted textures sizes can not be changed except for `bubble` and `start_border`, which can have configurable sprite dimensions in `theme.ini`. However, note that doing so may have unexpected consequences. + +Paletted textures are not checked for validity. An invalid texture should be rare if created with the provided makefile, but in certain cases a corrupted texture will cause the menu to not load at all. + +## Custom background music and sound fonts. + +The DSi Menu and 3DS themes also support custom music. See [Adding custom music / SFX](Adding-custom-music-sfx) for more details. diff --git a/pages/_en-US/twilightmenu/custom-unlaunch-backgrounds.md b/pages/_en-US/twilightmenu/custom-unlaunch-backgrounds.md new file mode 100644 index 0000000..1d5714f --- /dev/null +++ b/pages/_en-US/twilightmenu/custom-unlaunch-backgrounds.md @@ -0,0 +1,49 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Custom Unlaunch Backgrounds +category: Customization +--- + +Using TWiLight Menu++ you can patch the Unlaunch installer to have a custom background image. This needs to be a 256 x 192 GIF, with a few restrictions: +- Only the first frame will be shown, no animated backgrounds +- The file must be less than or equal to 15,472 bytes +- GIFs with more than 31 colors require specially made palettes to prevent breaking the text + +### Installing +1. Copy the GIF file to `sd:/_nds/TWiLightMenu/unlaunch/backgrounds` +1. Download the [latest Unlaunch installer](https://problemkaputt.de/unlaunch.zip) and extract `UNLAUNCH.DSI` to your SD card +1. Open TWiLight Menu++ Settings, switch to the `Unlaunch settings` page, and click on `Background`, then select the one you want +1. Exit settings and launch `Unlaunch DSi Installer` + - It should use your custom image, if it does not then turn off your console and make sure your GIF conforms with the requirements above +1. Choose `Install Now` + +### Using GIFs with more than 31 colors +As the GIF's palette is loaded to the same area of VRAM as the text palettes it will overwrite them if the palette gets too large, however this can be worked around by including the text palettes in the GIF's palettes. Using this with different colors would also let you have different text colors, should you want that. These instructions will be for [GIMP](https://gimp.org), but any image editor capable of rearranging the palette of an image will work. +1. Open your image in GIMP and make sure it's 256 x 192 pixels +1. In the menu bar at the top, select `Image` -> `Mode` -> `Indexed...` +1. Select `Generate optimum palette` and set the maximum colors to anything up to 226 colors +1. Select a dithering pattern from the `Color dithering` dropdown + - Images without dithering generally compress best, but with it will generally look better, try and see which looks best for the size +1. Click `Convert` +1. In the menu bar at the top, select `File` -> `Export As...`, give it a name with the extension `.gif`, and click `Export` + - If it gives any warnings, click the accept button +1. In the next popup, disable the `GIF comment` and click `Export` +1. Check the size of the exported file, if it's 15,472 bytes or less, then skip to step 13 +1. If your GIF is too large, then using either [gifsicle](http://www.lcdf.org/gifsicle/) or [ezgif.com](https://ezgif.com/optimize) you can try optimizing it + - These instructions will use ezgif as its simpler, being a website +1. Open https://ezgif.com/optimize, and upload your GIF +1. Try different compression levels until you find the best one under 15,472 bytes (15.11KiB), ideally a bit under as GIMP may increase the size a bit +1. Save the optimized GIF and open it in GIMP +1. In the menu bar at the top, select `Windows` -> `Dockable Dialogs` -> `Colormap` +1. Change your current `Foreground color` to #080808 and add 14 new colors with the `+` button + - If your image doesn't have at least 133 colors you will also need to add filler colors to arrange the text colors in the correct spots +1. Right click a color in the Colormap and select `Rearrange Colormap...` +1. Arrange your new colors so they match these: (The 2nd and 3rd columns starting at index 49)
          + ![Palette with correct text colors](https://cdn.discordapp.com/attachments/614278143527878658/770777177904906240/unlaunch-palette.png) +1. Use the color picker to make your new colors match those in the above image +1. In the menu bar at the top, select `File` -> `Export As...`, give it a name with the extension `.gif`, and click `Export` +1. In the next popup, make sure `GIF comment` is off and click `Export` +1. Ensure the image is still under 15,472 bytes, if it's gotten too big then repeat from step 10 using a higher compression level +1. You're done! Follow the [installing](#installing) section above to use your image! diff --git a/pages/_en-US/twilightmenu/download-play-pictochat.md b/pages/_en-US/twilightmenu/download-play-pictochat.md new file mode 100644 index 0000000..0f00117 --- /dev/null +++ b/pages/_en-US/twilightmenu/download-play-pictochat.md @@ -0,0 +1,26 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Download Play / Pictochat in DS Classic Menu +category: Other +--- + +If you're using a DSi console, you should already be able to launch those apps. +Otherwise, if you have a 3DS, proceed below. + +In GodMode9: +- Press R+A on SYSNAND TWLN. +- Select `Search for titles`. +- Select `DS Download Play (NTR-HNDA).tmd`. +- Select `TMD file options...`. +- Select `Dump CXI/NDS file`. +- Done. It should be under `sdmc:/gm9/out/`, as `DS Download Play (NTR-HNDA).nds`. + +Copy to `sd:/_nds/`, and rename to `dlplay.nds`. + +The above steps will increase DLP boot speed. + +To run Pictochat on 3DS (DSi required): +- Copy `pictochat.nds` from `sd:/_nds/` on the DSi SD card, on the 3DS SD card, also in `sd:/_nds/`. +You must first access the DS Classic Menu in TWiLight Menu++ on the DSi. diff --git a/pages/_en-US/twilightmenu/faq.md b/pages/_en-US/twilightmenu/faq.md new file mode 100644 index 0000000..02a4692 --- /dev/null +++ b/pages/_en-US/twilightmenu/faq.md @@ -0,0 +1,40 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: FAQ & Troubleshooting +category: Other +--- + +For more FAQs, please visit the [GBAtemp thread](https://gbatemp.net/threads/ds-i-3ds-twilight-menu-gui-for-ds-i-games-and-ds-i-menu-replacement.472200/). + +### Q: Why is my 3DS/2DS stuck on black screens when launching TWiLight Menu++, or why is my 3DS/2DS powering off when launching TWiLight Menu++? +A: TWL_FIRM might've somehow got corrupted. +Follow this guide to fix the issue: https://3ds.hacks.guide/troubleshooting#dsi--ds-functionality-is-broken-after-completing-the-guide + +### Q: I get a white screen when booting TWiLight Menu++. How do I fix this? +A: +- First, try putting the console in sleep mode (e.g. closing the console's lid, or pressing the sleep button on the O2DS), then wake up the console from it. +- If that doesn't work, format your SD card to FAT32 with 32kb cluster/allocation size. +- If that also doesn't work, try a different SD card. + +### Q: Why do I get a white screen when trying to load a game from SD Card? +A: +- First, check [the nds-bootstrap compatibility list](https://docs.google.com/spreadsheets/d/1LRTkXOUXraTMjg1eedz_f7b5jiuyMv2x6e_jY_nyHSc/htmlview#gid=0) and make sure your game is compatible. +- If the game that's attempted to be launched is a DSi Enhanced game, then make sure that TWiLight Menu++ is set to use `DS Mode`. +- If it worked before, delete the `fatTable` and `patchOffsetCache` folders in sd:/_nds/nds-bootstrap/ + +### Q: How do I use cheats? +A: You need to have a cheat DB in the form of a `usrcheat.dat` file in the `sd:/_nds/TWiLightMenu/extras/` folder. The most updated cheat database is [DeadSkullzJr's](https://gbatemp.net/threads/deadskullzjrs-flashcart-cheat-databases.488711/). Alternatively, you can use [r4cce](http://hp.vector.co.jp/authors/VA013928/soft_en.html) to create your own cheat DB. + +### Q: How do I show a custom picture on the top screen of the DSi theme? +A: A random `.png` image in `sd:/_nds/TWiLightMenu/dsimenu/photos/` will be shown each time the menu is loaded. + +- The file(s) must be no bigger than 208x156. +- If you have errors, it's most likely an error with the image size. Please use tinypng to reduce the size. + +### Q: Why isn't touch input working on sudokuhax? +A: Depending on the save file of sudokuhax, the touch screen inputs may not work. + +### Q: Can The Biggest Loser boot TWiLight Menu++? +A: No. As The Biggest Loser is a Slot-1 game, and not a DSiWare game, SD access is disabled when running Slot-1 cards. diff --git a/pages/_en-US/twilightmenu/how-to-get-box-art.md b/pages/_en-US/twilightmenu/how-to-get-box-art.md new file mode 100644 index 0000000..24e5a75 --- /dev/null +++ b/pages/_en-US/twilightmenu/how-to-get-box-art.md @@ -0,0 +1,49 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: How to Get Box Art +category: Other +--- + +### 3DS +1. Install [KirovAir's TWiLight Menu++ Updater fork](https://github.com/KirovAir/TWiLightMenu-Updater/releases) + - This will replace the normal TWiLight Menu++ Updater, so use Universal-Updater instead for updating TWiLight Menu++ +1. Select `Extras`, `Boxart`, then press X to scan the full SD card or A to select a folder to scan +1. Choose a boxart size +1. Choose a border style +1. Make sure box art is set to be shown in TWiLight Menu++ settings + +### Windows +1. Download the latest version of [TWiLightBoxart](https://github.com/KirovAir/TwilightBoxart/releases) +1. Extract `TwilightBoxart-Windows-UX.zip` and run `TwilightBoxart.exe` +1. Click `Detect SD` + - If it doesn't find the correct SD card click `Browse...` and select the right one +1. Change the size, border, etc options to your liking +1. Click `Start` +1. On your DS, make sure box art is set to be shown in TWiLight Menu++ settings + +### macOS/Linux +1. Download the latest version of [TWiLightBoxart](https://github.com/KirovAir/TwilightBoxart/releases) +1. Extract the `.zip` +1. Open `TwilightBoxart.ini` in the extracted folder in a text editor, then save the file +1. Type the path to your SD card after `SdRoot=` + - On macOS this is `/Volumes/` then the name of your SD card +1. Open the terminal +1. In the terminal, type `cd ` then drag drop the folder with `TwilightBoxart.CLI` in it onto your terminal +1. Run `chmod +x TwilightBoxart.CLI ` +1. Run `./TwilightBoxart.CLI` file by drag dropping it onto your terminal +1. Say `Yes` if it shows your SD path correctly +1. On your DS, make sure box art is set to be shown in TWiLight Menu++ settings + +### Manual +1. Download a png box art pack from [GameTDB](https://www.gametdb.com/DS/Downloads#cover_packs) +1. Extract the .png files to `sd:/_nds/TWiLightMenu/boxart` +1. On your DS, make sure box art is set to be shown in TWiLight Menu++ settings + +**To add your own box art:** +Place them in `sd:/_nds/TWiLightMenu/boxart`. +Can either have the game's TID (ex. `ASME.png`), or the filename (ex. `SM64DS.nds.png`). +Must be in `.png` format, with the recommended size of 128x115 and maximum of 208x143 + +Individual box art can also be downloaded from GameTDB, under the **S Covers (png)** category. diff --git a/pages/_en-US/twilightmenu/index.md b/pages/_en-US/twilightmenu/index.md new file mode 100644 index 0000000..fd03fa5 --- /dev/null +++ b/pages/_en-US/twilightmenu/index.md @@ -0,0 +1,11 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Home +--- +# Welcome to the TWiLight Menu++ wiki! + +TWiLight Menu++ is an open-source DSi Menu upgrade/replacement, and frontend for nds-bootstrap for DSi, 3DS, and flashcards. + +For info on how to install, click on the page in the sidebar for your console in the Installing section. diff --git a/pages/_en-US/twilightmenu/installing-3ds-manual.md b/pages/_en-US/twilightmenu/installing-3ds-manual.md new file mode 100644 index 0000000..24674b8 --- /dev/null +++ b/pages/_en-US/twilightmenu/installing-3ds-manual.md @@ -0,0 +1,15 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Installing (3DS, Manual) +category: Installing +--- +### Installing +1. Download the latest version of `TWiLightMenu-3DS.7z` from [the releases page](https://github.com/DS-Homebrew/TWiLightMenu/releases) +1. Extract `TWiLightMenu-3DS.7z` +1. Copy the `_nds` folder to your SD card root +1. Copy the `BOOT.NDS` file to your SD card root +1. Copy the `roms` folder to your SD card root +1. Copy the two `.cia` files to your SD card root +1. On your 3DS, install the two CIAs with FBI diff --git a/pages/_en-US/twilightmenu/installing-3ds-universal-updater.md b/pages/_en-US/twilightmenu/installing-3ds-universal-updater.md new file mode 100644 index 0000000..9d5062d --- /dev/null +++ b/pages/_en-US/twilightmenu/installing-3ds-universal-updater.md @@ -0,0 +1,13 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Installing (3DS, Universal-Updater) +category: Installing +--- +### Installing +1. Install [Universal-Updater](https://github.com/Universal-Team/Universal-Updater/releases) +1. Open Universal-Updater and find TWiLight Menu++ in the app grid, you can search for it if your having trouble finding it + - It has this icon: ![TWiLight Menu++ icon](https://raw.githubusercontent.com/DS-Homebrew/TWiLightMenu/master/booter/icon.bmp) +1. Press `A` or tap the download icon in the sidebar and select `TWiLight Menu++` to install it + - This will take a while diff --git a/pages/_en-US/twilightmenu/installing-3ds.md b/pages/_en-US/twilightmenu/installing-3ds.md new file mode 100644 index 0000000..01cdf80 --- /dev/null +++ b/pages/_en-US/twilightmenu/installing-3ds.md @@ -0,0 +1,33 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Installing (3DS) +category: Installing +--- +### Requirements + +* The latest version of [FBI](https://github.com/Steveice10/FBI/releases) +* The latest version of [Luma3DS](https://github.com/lumateam/luma3ds/releases) + +### Installing (Working Camera) +1. Open FBI and select `Remote Install`, then `Scan QR Code` +1. Scan this QR code to install the latest version of the [TWiLight Menu++ Updater](https://github.com/RocketRobz/TWiLightMenu-Updater) +
          ![TWiLight Menu++ Updater QR code](https://db.universal-team.net/assets/images/qr/twilightmenu-updater.cia.png) +1. Close FBI and Launch the TWiLight Menu++ Updater + - If it doesn't show up on your home menu, reboot your 3DS +1. Select `Release` next to `TWLMenu++` + - This will take a while +1. Select `Release` next to `nds-bootstrap` + +### Installing (Non-Working Camera) +1. Download the `TWiLightMenu-Updater.cia` file from the [TWiLight Menu++ Updater release page](https://github.com/RocketRobz/TWiLightMenu-Updater/releases) +1. Place the `TWiLightMenu-Updater.cia` file anywhere on your SD card +1. Launch FBI on your Nintendo 3DS +1. In FBI, go to the place you pasted the `TWiLightMenu-Updater.cia` file +1. Select the `TWiLightMenu-Updater.cia` file and hit "Install & Delete" +1. Close FBI and Launch the TWiLight Menu++ Updater + - If it doesn't show up on your home menu, reboot your 3DS +1. Select `Release` next to `TWLMenu++` + - This will take a while +1. Select `Release` next to `nds-bootstrap` diff --git a/pages/_en-US/twilightmenu/installing-dsi.md b/pages/_en-US/twilightmenu/installing-dsi.md new file mode 100644 index 0000000..48170c2 --- /dev/null +++ b/pages/_en-US/twilightmenu/installing-dsi.md @@ -0,0 +1,19 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Installing (DSi) +category: Installing +--- +### Installing +1. Download the latest `TWiLightMenu-DSi.7z` from [the releases page](https://github.com/DS-Homebrew/TWiLightMenu/releases) +1. Extract `TWiLightMenu-DSi.7z` +1. Copy the `_nds` folder to your SD card root +1. Copy the `BOOT.NDS` file to your SD card root +1. Copy the `roms` folder to your SD card root +1. **hiyaCFW users:** Copy the `title` folder to your SD card root + +### Autobooting with Unlaunch +1. Turn on your DSi while holding A and B +1. In the Unlaunch menu, go to `OPTIONS` +1. Set `NO BUTTON` or a button of your choice to the `TWiLight Menu++` that says `BOOT.NDS` on the bottom screen diff --git a/pages/_en-US/twilightmenu/installing-flashcard.md b/pages/_en-US/twilightmenu/installing-flashcard.md new file mode 100644 index 0000000..67163ae --- /dev/null +++ b/pages/_en-US/twilightmenu/installing-flashcard.md @@ -0,0 +1,46 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Installing (Flashcard) +category: Installing +--- +### Installing +1. Download the latest version of `TWiLightMenu-Flashcard.7z` from [the releases page](https://github.com/DS-Homebrew/TWiLightMenu/releases) +1. Extract `TWiLightMenu-Flashcard.7z` +1. Copy the `_nds` folder to your flashcard's microSD card root +1. Copy the `BOOT.NDS` file to your flashcard's microSD card root +1. Copy the `roms` folder to your flashcard's microSD card root +1. If you already have save data, move your `.sav` files, which are in your DS ROM location, to a new folder called `saves`, which also goes in the DS ROM location. +1. + 1. **DS Phat/lite users:** If booting `BOOT.NDS` causes a white screen lock-up, insert a DS Memory Expansion Pak, and try again. + 1. **DSi/3DS users:** Run TWLMenu++ on the console's SD card, and turn on `SCFG access in Slot-1` + - This will let you use TWL clock speed and/or VRAM boost on your flashcard games, as well as accessing the console's SD card + +### To run games using your flashcard firmware +1. Extract what's in `Flashcart Loader/(your flashcard)` to the root of the flashcard's microSD card + - If you done so, continue to step 3. If not, follow the steps below the flashcard list below. + +1. For these flashcards: + - R4i-SDHC + - r4isdhc.com cards + - r4isdhc.hk cards + - R4i SDHC Upgrade Revolution + - R4DSiXL3D + - R4i Advance + - R4-IIIi + - R4 SDHC Revolution + - R4(i) Pocket + - R4i Gold (v1.4.1) (3DS) + - R4xDS + + Install YSMenu from [here](https://gbatemp.net/threads/retrogamefan-updates-releases.267243/) + - Make sure you have `YSMenu.nds` and `TTMenu` folder (renamed from `YSMenu`, if existed) on the flashcard microSD root +1. Set `Use nds-bootstrap (B4DS)` to `No`, so the flashcard firmware will be used instead of nds-bootstrap + +### Autobooting TWiLight Menu++ +1. Extract the content(s) of `Autoboot/(your flashcard)` to the root of the flashcard's microSD card + - Skip this, if you don't see your flashcard +1. ... + - **DS Phat/DS Lite users:** Go to settings in the DS menu, and turn on auto-start, so your flashcard will start on boot + - **DSi/3DS users:** Run TWLMenu++ on the console's SD card, and turn on `Auto-start Slot-1` diff --git a/pages/_en-US/twilightmenu/playing-in-widescreen.md b/pages/_en-US/twilightmenu/playing-in-widescreen.md new file mode 100644 index 0000000..dd11fd1 --- /dev/null +++ b/pages/_en-US/twilightmenu/playing-in-widescreen.md @@ -0,0 +1,34 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Playing in Widescreen +category: Other +--- + +Requires an Old/New Nintendo 3DS or 2DS console. + +**Preparation** +* Make sure Luma's `boot.firm` is on the SD root for this to work. +* If you used TWiLight Menu++ Updater or Universal-Updater to update, please install the latest TWiLight Menu++ CIAs using FBI. + +1. Download [TWPatch](https://puu.sh/G8sEO/87b4c649e3.cia) ([GBATemp thread](https://gbatemp.net/threads/twpatcher-ds-i-mode-screen-filters-and-patches.542694/)). +1. In Luma config, enable external FIRMs and modules. +1. Install the TWPatch CIA. +1. Launch TWPatch. +1. Press X+START to generate a `TwlBg.cxi` file with widescreen. + - If the top screen doesn't indicate that wide patch is enabled, start from step 4 again. + - If widescreen still doesn't work, wait for RTCom-activated widescreen to be released. +1. In the TWiLight Menu++ settings, switch the page to `Misc settings`, and set `Screen Aspect Ratio` to `16:10`. + - This can be done per-game as well. + +You're all done! Enjoy your DS games in widescreen! + +**NOTE1**: Every game/app in DS(i) mode will run in widescreen, even the games that aren't compatible with widescreen. +For this to be fixed so only the widescreen-compatible games run in widescreen, wait for RTCom-activated widescreen to be released. + +**NOTE2:** +Do not hold `START` or `SELECT` when launching TWLMenu++, if you don't want widescreen to look glitched. +If you don't see the screen aspect ratio setting, wait for RTCom-activated widescreen to be released. + +Not every game is widescreen compatible. [We have created a list of games with widescreen](https://github.com/DS-Homebrew/TWiLightMenu/blob/master/7zfile/3DS%20-%20CFW%20users/Games%20supported%20with%20widescreen.txt) diff --git a/pages/_en-US/twilightmenu/updating-3ds-manual.md b/pages/_en-US/twilightmenu/updating-3ds-manual.md new file mode 100644 index 0000000..a343e63 --- /dev/null +++ b/pages/_en-US/twilightmenu/updating-3ds-manual.md @@ -0,0 +1,24 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Updating (3DS, Manual) +category: Updating +--- +**NOTE:** Starting with v16.4.0, please move your `.sav` files, which are in your DS ROM location, to a new folder called `saves`, which also goes in the DS ROM location. + +### Updating +1. Download the latest version of `TWiLightMenu-3DS.7z` from [the releases page](https://github.com/DS-Homebrew/TWiLightMenu/releases) +1. Extract `TWiLightMenu-3DS.7z` +1. Copy the `_nds` folder to your SD card root +1. Copy the `BOOT.NDS` file to your SD card root +1. Copy the two `.cia` files to your SD card root +1. On your 3DS, install the two CIAs with FBI + +### More steps for the flashcard side + +If you can switch between the SD and flashcard contents in TWLMenu++, and if the flashcard TWLMenu++ is on v16.3.0 or later, please follow these steps. + +1. Go into TWLMenu++ Settings +1. Select `Update TWiLight Menu++` +1. Select `Console (micro)SD > Slot-1 microSD` diff --git a/pages/_en-US/twilightmenu/updating-3ds-universal-updater.md b/pages/_en-US/twilightmenu/updating-3ds-universal-updater.md new file mode 100644 index 0000000..3f4610b --- /dev/null +++ b/pages/_en-US/twilightmenu/updating-3ds-universal-updater.md @@ -0,0 +1,24 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Updating (3DS, Universal-Updater) +category: Updating +--- +**NOTE:** Starting with v16.4.0, please move your `.sav` files, which are in your DS ROM location, to a new folder called `saves`, which also goes in the DS ROM location. + +### Updating +1. Open Universal-Updater + - If you don't have it, follow the [installing](installing-%283ds,-universal-updater%29) instructions +1. Find TWiLight Menu++ in the app grid, you can search for it if your having trouble finding it +1. Press `A` or tap the download icon in the sidebar and select `TWiLight Menu++` to install it + - This will take a while + + +### More steps for the flashcard side + +If you can switch between the SD and flashcard contents in TWLMenu++, and if the flashcard TWLMenu++ is on v16.3.0 or later, please follow these steps. + +1. Go into TWLMenu++ Settings +1. Select `Update TWiLight Menu++` +1. Select `Console (micro)SD > Slot-1 microSD` diff --git a/pages/_en-US/twilightmenu/updating-3ds.md b/pages/_en-US/twilightmenu/updating-3ds.md new file mode 100644 index 0000000..744e348 --- /dev/null +++ b/pages/_en-US/twilightmenu/updating-3ds.md @@ -0,0 +1,23 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Updating (3DS) +category: Updating +--- +**NOTE:** Starting with v16.4.0, please move your `.sav` files, which are in your DS ROM location, to a new folder called `saves`, which also goes in the DS ROM location. + +### Updating +1. Launch the TWiLight Menu++ Updater + - If you don't have it, follow the [installing](installing-%7C-3ds) instructions +1. Select `Release` next to `TWLMenu++` + - This will take a while +1. Select `Release` next to `nds-bootstrap` + +### More steps for the flashcard side + +If you can switch between the SD and flashcard contents in TWLMenu++, and if the flashcard TWLMenu++ is on v16.3.0 or later, please follow these steps. + +1. Go into TWLMenu++ Settings +1. Select `Update TWiLight Menu++` +1. Select `Console (micro)SD > Slot-1 microSD` diff --git a/pages/_en-US/twilightmenu/updating-dsi.md b/pages/_en-US/twilightmenu/updating-dsi.md new file mode 100644 index 0000000..68e1e43 --- /dev/null +++ b/pages/_en-US/twilightmenu/updating-dsi.md @@ -0,0 +1,23 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Updating (DSi) +category: Updating +--- +**NOTE:** Starting with v16.4.0, please move your `.sav` files, which are in your DS ROM location, to a new folder called `saves`, which also goes in the DS ROM location. + +### Updating +1. Download the latest `TWiLightMenu-DSi.7z` from [the releases page](https://github.com/DS-Homebrew/TWiLightMenu/releases) +1. Extract `TWiLightMenu-DSi.7z` +1. Copy the `_nds` folder to your SD card root +1. Copy the `BOOT.NDS` file to your SD card root +1. **hiyaCFW users:** Copy the `title` folder to your SD card root + +### More steps for the flashcard side + +If you can switch between the SD and flashcard contents in TWLMenu++, and if the flashcard TWLMenu++ is on v16.3.0 or later, please follow these steps. + +1. Go into TWLMenu++ Settings +1. Select `Update TWiLight Menu++` +1. Select `Console (micro)SD > Slot-1 microSD` diff --git a/pages/_en-US/twilightmenu/updating-flashcard.md b/pages/_en-US/twilightmenu/updating-flashcard.md new file mode 100644 index 0000000..3bee59a --- /dev/null +++ b/pages/_en-US/twilightmenu/updating-flashcard.md @@ -0,0 +1,22 @@ +--- +lang: en-US +layout: wiki +section: twilightmenu +title: Updating (Flashcard) +category: Updating +--- +**NOTE:** Starting with v16.4.0, please move your `.sav` files, which are in your DS ROM location, to a new folder called `saves`, which also goes in the DS ROM location. + +### Updating +1. Download the latest version of `TWiLightMenu-Flashcard.7z` from [the releases page](https://github.com/DS-Homebrew/TWiLightMenu/releases) +1. Extract `TWiLightMenu-Flashcard.7z` +1. Copy the `_nds` folder to your flashcard's microSD card root +1. Copy the `BOOT.NDS` file to your flashcard's microSD card root + +### More steps for the DSi/3DS SD Card side + +If you can switch between the SD and flashcard contents in TWLMenu++, and if the flashcard TWLMenu++ is on v16.3.0 or later, please follow these steps. + +1. Go into TWLMenu++ Settings +1. Select `Update TWiLight Menu++` +1. Select `Slot-1 microSD > Console (micro)SD` diff --git a/pages/_ja-JP/index.md b/pages/_ja-JP/index.md new file mode 100644 index 0000000..37bea4b --- /dev/null +++ b/pages/_ja-JP/index.md @@ -0,0 +1,9 @@ +--- +lang: ja-JP +layout: default +title: ホーム +--- + +# DS-Homebrewのウィキへようこそ! + +TODO: インデックスページを書く…… ;P \ No newline at end of file diff --git a/pages/_ja-JP/twilightmenu/index.md b/pages/_ja-JP/twilightmenu/index.md new file mode 100644 index 0000000..0d81d46 --- /dev/null +++ b/pages/_ja-JP/twilightmenu/index.md @@ -0,0 +1,11 @@ +--- +lang: ja-JP +layout: wiki +section: twilightmenu +title: ホーム +--- +# TWiLight Menu++のウィキへようこそ! + +TWiLight Menu++ is an open-source DSi Menu upgrade/replacement, and frontend for nds-bootstrap for DSi, 3DS, and flashcards. + +For info on how to install, click on the page in the sidebar for your console in the Installing section. diff --git a/pages/_ja-JP/twilightmenu/installing-flashcard.md b/pages/_ja-JP/twilightmenu/installing-flashcard.md new file mode 100644 index 0000000..43ee755 --- /dev/null +++ b/pages/_ja-JP/twilightmenu/installing-flashcard.md @@ -0,0 +1,45 @@ +--- +lang: ja-JP +layout: wiki +section: twilightmenu +title: インストール(フラッシュカード) +category: インストール +--- +### Installing +1. Download the latest version of `TWiLightMenu-Flashcard.7z` from [the releases page](https://github.com/DS-Homebrew/TWiLightMenu/releases) +1. Extract `TWiLightMenu-Flashcard.7z` +1. Copy the `_nds` folder to your flashcard's microSD card root +1. Copy the `BOOT.NDS` file to your flashcard's microSD card root +1. Copy the `roms` folder to your flashcard's microSD card root +1. If you already have save data, move your `.sav` files, which are in your DS ROM location, to a new folder called `saves`, which also goes in the DS ROM location. +1. + 1. **DS Phat/lite users:** If booting `BOOT.NDS` causes a white screen lock-up, insert a DS Memory Expansion Pak, and try again. + 1. **DSi/3DS users:** Run TWLMenu++ on the console's SD card, and turn on `SCFG access in Slot-1` + - This will let you use TWL clock speed and/or VRAM boost on your flashcard games, as well as accessing the console's SD card + +### To run games using your flashcard firmware +1. Extract what's in `Flashcart Loader/(your flashcard)` to the root of the flashcard's microSD card + - If you done so, continue to step 3. If not, follow the steps below the flashcard list below. + + For these flashcards: + - R4i-SDHC + - r4isdhc.com cards + - r4isdhc.hk cards + - R4i SDHC Upgrade Revolution + - R4DSiXL3D + - R4i Advance + - R4-IIIi + - R4 SDHC Revolution + - R4(i) Pocket + - R4i Gold (v1.4.1) (3DS) + - R4xDS + 1. Install YSMenu from [here](https://gbatemp.net/threads/retrogamefan-updates-releases.267243/) + - Make sure you have `YSMenu.nds` and `TTMenu` folder (renamed from `YSMenu`, if existed) on the flashcard microSD root +1. Set `Use nds-bootstrap (B4DS)` to `No`, so the flashcard firmware will be used instead of nds-bootstrap + +### Autobooting TWiLight Menu++ +1. Extract the content(s) of `Autoboot/(your flashcard)` to the root of the flashcard's microSD card + - Skip this, if you don't see your flashcard +1. ... + - **DS Phat/DS Lite users:** Go to settings in the DS menu, and turn on auto-start, so your flashcard will start on boot + - **DSi/3DS users:** Run TWLMenu++ on the console's SD card, and turn on `Auto-start Slot-1`