aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/.DS_Storebin0 -> 6148 bytes
-rw-r--r--app/cdn/.DS_Storebin0 -> 8196 bytes
-rw-r--r--app/cdn/dark.css96
-rw-r--r--app/cdn/favicon.svg69
-rw-r--r--app/cdn/fonts/Nunito-Italic-VariableFont_wght.ttfbin0 -> 279936 bytes
-rw-r--r--app/cdn/fonts/Nunito-VariableFont_wght.ttfbin0 -> 275436 bytes
-rw-r--r--app/cdn/icons/.DS_Storebin0 -> 6148 bytes
-rw-r--r--app/cdn/icons/badge-filled.pngbin0 -> 3511 bytes
-rw-r--r--app/cdn/icons/badge-symbolic.pngbin0 -> 3984 bytes
-rw-r--r--app/cdn/icons/badge.pngbin0 -> 14049 bytes
-rw-r--r--app/cdn/icons/bucks.pngbin0 -> 13123 bytes
-rw-r--r--app/cdn/icons/cinema-filled.pngbin0 -> 3315 bytes
-rw-r--r--app/cdn/icons/cinema-symbolic.pngbin0 -> 4990 bytes
-rw-r--r--app/cdn/icons/cinema.pngbin0 -> 13823 bytes
-rw-r--r--app/cdn/icons/cloud-link.pngbin0 -> 33246 bytes
-rw-r--r--app/cdn/icons/contacts-filled.pngbin0 -> 3105 bytes
-rw-r--r--app/cdn/icons/contacts-symbolic.pngbin0 -> 4038 bytes
-rw-r--r--app/cdn/icons/contacts.pngbin0 -> 10925 bytes
-rw-r--r--app/cdn/icons/famidata.pngbin0 -> 375 bytes
-rw-r--r--app/cdn/icons/familine-docs.svg16
-rw-r--r--app/cdn/icons/familine-help.svg17
-rw-r--r--app/cdn/icons/familine-media.svg17
-rw-r--r--app/cdn/icons/familine-movies.svg54
-rw-r--r--app/cdn/icons/familine-music.svg16
-rw-r--r--app/cdn/icons/familine-photos.svg54
-rw-r--r--app/cdn/icons/familine-planning.svg22
-rw-r--r--app/cdn/icons/familine-recall.svg15
-rw-r--r--app/cdn/icons/familine-share.svg17
-rw-r--r--app/cdn/icons/familine-you.svg20
-rw-r--r--app/cdn/icons/familine.svg69
-rw-r--r--app/cdn/icons/help-filled.pngbin0 -> 5251 bytes
-rw-r--r--app/cdn/icons/help-symbolic.pngbin0 -> 6677 bytes
-rw-r--r--app/cdn/icons/help.pngbin0 -> 12722 bytes
-rw-r--r--app/cdn/icons/home-filled.pngbin0 -> 2557 bytes
-rw-r--r--app/cdn/icons/home-symbolic.pngbin0 -> 2886 bytes
-rw-r--r--app/cdn/icons/home.pngbin0 -> 9893 bytes
-rw-r--r--app/cdn/icons/money-filled.pngbin0 -> 4441 bytes
-rw-r--r--app/cdn/icons/money-symbolic.pngbin0 -> 4977 bytes
-rw-r--r--app/cdn/icons/money.pngbin0 -> 9655 bytes
-rw-r--r--app/cdn/icons/music.pngbin0 -> 3450 bytes
-rw-r--r--app/cdn/icons/open-book-filled.pngbin0 -> 2493 bytes
-rw-r--r--app/cdn/icons/open-book-symbolic.pngbin0 -> 2735 bytes
-rw-r--r--app/cdn/icons/open-book.pngbin0 -> 2079 bytes
-rw-r--r--app/cdn/icons/opus.svg18
-rw-r--r--app/cdn/icons/pause-filled.pngbin0 -> 288 bytes
-rw-r--r--app/cdn/icons/pause-symbolic.pngbin0 -> 299 bytes
-rw-r--r--app/cdn/icons/pip.pngbin0 -> 974 bytes
-rw-r--r--app/cdn/icons/play-filled.pngbin0 -> 435 bytes
-rw-r--r--app/cdn/icons/play-symbolic.pngbin0 -> 580 bytes
-rw-r--r--app/cdn/icons/radio-filled.pngbin0 -> 4329 bytes
-rw-r--r--app/cdn/icons/radio-symbolic.pngbin0 -> 4514 bytes
-rw-r--r--app/cdn/icons/radio.pngbin0 -> 8243 bytes
-rw-r--r--app/cdn/icons/settings-filled.pngbin0 -> 5192 bytes
-rw-r--r--app/cdn/icons/settings-symbolic.pngbin0 -> 7419 bytes
-rw-r--r--app/cdn/icons/settings.pngbin0 -> 12301 bytes
-rw-r--r--app/cdn/icons/share-filled.pngbin0 -> 3457 bytes
-rw-r--r--app/cdn/icons/share-symbolic.pngbin0 -> 4941 bytes
-rw-r--r--app/cdn/icons/share.pngbin0 -> 11049 bytes
-rw-r--r--app/cdn/icons/solve-filled.pngbin0 -> 5225 bytes
-rw-r--r--app/cdn/icons/solve-symbolic.pngbin0 -> 6088 bytes
-rw-r--r--app/cdn/icons/solve.pngbin0 -> 16776 bytes
-rw-r--r--app/cdn/icons/speaker.pngbin0 -> 722 bytes
-rw-r--r--app/cdn/icons/window-close.pngbin0 -> 220 bytes
-rw-r--r--app/cdn/icons/window-maximize.pngbin0 -> 223 bytes
-rw-r--r--app/cdn/icons/window-minimize.pngbin0 -> 263 bytes
-rw-r--r--app/cdn/icons/window-reduce.pngbin0 -> 468 bytes
-rw-r--r--app/cdn/intro.jpgbin0 -> 1651222 bytes
-rw-r--r--app/cdn/intro.psdbin0 -> 115407900 bytes
-rw-r--r--app/cdn/js/home.js12
-rw-r--r--app/cdn/js/iframe.js48
-rw-r--r--app/cdn/js/loading.js32
-rw-r--r--app/cdn/js/navigation.js110
-rw-r--r--app/cdn/js/statusbar.js4
-rw-r--r--app/cdn/me/index.php6
-rw-r--r--app/cdn/statusbar.php194
-rw-r--r--app/cdn/styles.css337
-rw-r--r--app/galaxy/css/bootstrap-grid.css28
-rw-r--r--app/galaxy/css/bootstrap-reboot.css29
-rw-r--r--app/galaxy/css/bootstrap.css28
-rw-r--r--app/galaxy/css/theme.css25
-rw-r--r--app/galaxy/js/bootstrap.bundle.js29
-rw-r--r--app/galaxy/js/bootstrap.js29
-rw-r--r--app/galaxy/private/footer.php2
-rw-r--r--app/galaxy/private/header.php26
-rw-r--r--app/genealogy/.gitlab-ci.yml30
-rw-r--r--app/genealogy/LICENSE42
-rw-r--r--app/genealogy/dllib/jquery.flexdatalist.css25
-rw-r--r--app/genealogy/dllib/jquery.flexdatalist.js25
-rw-r--r--app/genealogy/index.php28
-rw-r--r--app/genealogy/me/index.php24
-rw-r--r--app/genealogy/person/index.php24
-rw-r--r--app/genealogy/private/footer.php2
-rw-r--r--app/genealogy/private/header.php26
-rw-r--r--app/genealogy/search/birth/data.json/index.php24
-rw-r--r--app/genealogy/search/birth/results/index.php24
-rw-r--r--app/genealogy/search/city/data.json/index.php24
-rw-r--r--app/genealogy/search/city/results/index.php24
-rw-r--r--app/genealogy/search/death/data.json/index.php24
-rw-r--r--app/genealogy/search/death/results/index.php24
-rw-r--r--app/genealogy/search/dept/data.json/index.php24
-rw-r--r--app/genealogy/search/dept/results/index.php24
-rw-r--r--app/genealogy/search/lastname/data.json/index.php24
-rw-r--r--app/genealogy/search/lastname/results/index.php24
-rw-r--r--app/genealogy/search/marriage/data.json/index.php24
-rw-r--r--app/genealogy/search/marriage/results/index.php24
-rw-r--r--app/genealogy/search/name/data.json/index.php24
-rw-r--r--app/genealogy/search/name/results/index.php24
-rw-r--r--app/genealogy/search/state/data.json/index.php24
-rw-r--r--app/genealogy/search/state/results/index.php24
-rw-r--r--app/genealogy/style/tree_maker.css25
-rw-r--r--app/genealogy/styles/common.css25
-rw-r--r--app/genealogy/styles/dark.css25
-rw-r--r--app/genealogy/tree/index.php24
-rw-r--r--app/genealogy/tree/mktree.php24
-rw-r--r--app/intro/.DS_Storebin0 -> 6148 bytes
-rw-r--r--app/intro/conditions/index.php104
-rw-r--r--app/intro/index.php153
-rw-r--r--app/intro/intro.svg33
-rw-r--r--app/intro/main.js90
-rw-r--r--app/intro/session.php64
-rw-r--r--app/intro/statusbar.php28
-rw-r--r--app/intro/stylesheet.css474
-rw-r--r--app/intro/webfonts/Lato-Black.ttfbin0 -> 69500 bytes
-rw-r--r--app/intro/webfonts/Lato-BlackItalic.ttfbin0 -> 72000 bytes
-rw-r--r--app/intro/webfonts/Lato-Bold.ttfbin0 -> 73332 bytes
-rw-r--r--app/intro/webfonts/Lato-BoldItalic.ttfbin0 -> 77732 bytes
-rw-r--r--app/intro/webfonts/Lato-Italic.ttfbin0 -> 75792 bytes
-rw-r--r--app/intro/webfonts/Lato-Light.ttfbin0 -> 77208 bytes
-rw-r--r--app/intro/webfonts/Lato-LightItalic.ttfbin0 -> 49080 bytes
-rw-r--r--app/intro/webfonts/Lato-Regular.ttfbin0 -> 75152 bytes
-rw-r--r--app/intro/webfonts/Lato-Thin.ttfbin0 -> 69976 bytes
-rw-r--r--app/intro/webfonts/Lato-ThinItalic.ttfbin0 -> 48864 bytes
-rw-r--r--app/media/index.php51
-rw-r--r--app/planning/.gitlab-ci.yml15
-rw-r--r--app/planning/LICENSE21
-rw-r--r--app/planning/README.md8
-rw-r--r--app/planning/SatteliteGiteaData.txt1
-rw-r--r--app/planning/index.php163
-rw-r--r--app/session.php26
-rw-r--r--app/session/login/embed/index.php6
-rw-r--r--app/session/login/index.php6
-rw-r--r--app/session/oauth/embed/index.php52
-rw-r--r--app/session/oauth/index.php53
143 files changed, 2634 insertions, 886 deletions
diff --git a/app/.DS_Store b/app/.DS_Store
new file mode 100644
index 0000000..f280355
--- /dev/null
+++ b/app/.DS_Store
Binary files differ
diff --git a/app/cdn/.DS_Store b/app/cdn/.DS_Store
new file mode 100644
index 0000000..80ed294
--- /dev/null
+++ b/app/cdn/.DS_Store
Binary files differ
diff --git a/app/cdn/dark.css b/app/cdn/dark.css
new file mode 100644
index 0000000..8ce19e1
--- /dev/null
+++ b/app/cdn/dark.css
@@ -0,0 +1,96 @@
+@media (prefers-color-scheme: dark) {
+
+ html, body {
+ background: black !important;
+ color: white !important;
+ }
+
+ #statusbar, #tabs {
+ background: #222 !important;
+ color: white !important;
+ }
+
+ .tab:not(.tab-active) img {
+ filter: invert(1) !important;
+ }
+
+ .loader {
+ background: rgba(10, 10, 10, .75) !important;
+ }
+
+ .loader img {
+ filter: invert(1) !important;
+ }
+
+ #tabs .tab.tab-active {
+ border-bottom-color: white !important;
+ }
+
+ .list-group-item {
+ background-color: #151515 !important;
+ }
+
+ .btn-light {
+ background: transparent !important;
+ color: white !important;
+ }
+
+ .dropdown-menu {
+ filter: invert(1) !important;
+ }
+
+ #panes {
+ background: black !important;
+ }
+
+ .list-group-item-action {
+ color: white !important;
+ }
+
+ .modal-content {
+ background-color: #151515 !important;
+ }
+
+ .modal-header button.close {
+ filter: invert(1) !important;
+ }
+
+ .modal-header {
+ border-bottom: 1px solid #222 !important;
+ }
+
+ .modal-footer {
+ border-top: 1px solid #222 !important;
+ }
+
+ #radio-bar {
+ background-color: whitesmoke !important;
+ color: black !important;
+ filter: invert(1) !important;
+ }
+
+ #radio-bar .badge {
+ filter: invert(1) !important;
+ }
+
+ .window-btn {
+ border-color: #333 !important;
+ }
+
+ .window-btn img {
+ filter: invert(1);
+ }
+
+ .window-btn:hover {
+ background: rgba(0, 0, 0, .25);
+ }
+
+ .window-btn:active {
+ background: rgba(0, 0, 0, .5);
+ }
+
+ hr {
+ border-top: 1px solid rgba(255, 255, 255, .1) !important;
+ }
+
+} \ No newline at end of file
diff --git a/app/cdn/favicon.svg b/app/cdn/favicon.svg
new file mode 100644
index 0000000..485c463
--- /dev/null
+++ b/app/cdn/favicon.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 7164 7188" style="enable-background:new 0 0 7164 7188;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:none;}
+ .st1{clip-path:url(#SVGID_2_);}
+ .st2{clip-path:url(#SVGID_4_);}
+</style>
+<rect class="st0" width="24" height="24"/>
+<g>
+ <g>
+ <g>
+ <defs>
+ <path id="SVGID_1_" d="M4892.49,715.22C4892.49,321.85,5207,0,5591.41,0c384.41,0,698.93,321.85,698.93,715.22
+ s-314.52,715.22-698.93,715.22C5207,1430.45,4892.49,1108.6,4892.49,715.22z M6290.34,7152.24V5006.57H7164l-873.66-2717.85
+ c-104.84-286.09-349.46-500.66-663.98-500.66h-34.95c-314.52,0-559.14,214.57-663.98,500.66l-314.52,929.79
+ c384.41,214.57,629.03,607.94,629.03,1108.6V7188h1048.39V7152.24z M3669.37,3397.31c279.57,0,524.2-250.33,524.2-536.42
+ s-244.62-536.42-524.2-536.42s-524.2,250.33-524.2,536.42S3389.8,3397.31,3669.37,3397.31z M1223.12,1430.45
+ c384.41,0,698.93-321.85,698.93-715.22S1607.53,0,1223.12,0S524.2,321.85,524.2,715.22S838.71,1430.45,1223.12,1430.45z
+ M1922.05,7152.24V4648.96h524.2V2503.28c0-393.37-314.52-715.22-698.93-715.22H698.93C314.52,1788.06,0,2109.91,0,2503.28
+ v2145.67h524.2v2503.28H1922.05z M4193.56,7152.24V5721.79h349.46V4291.34c0-286.09-244.62-536.42-524.2-536.42H3319.9
+ c-279.57,0-524.2,250.33-524.2,536.42v1430.45h349.46v1430.45H4193.56z"/>
+ </defs>
+ <clipPath id="SVGID_2_">
+ <use xlink:href="#SVGID_1_" style="overflow:visible;"/>
+ </clipPath>
+ <g class="st1">
+ <g>
+ <g>
+ <defs>
+ <rect id="SVGID_3_" x="-1747.32" y="-1788.06" width="10658.63" height="10728.36"/>
+ </defs>
+ <clipPath id="SVGID_4_">
+ <use xlink:href="#SVGID_3_" style="overflow:visible;"/>
+ </clipPath>
+ <g class="st2">
+
+ <image style="overflow:visible;enable-background:new ;" width="67" height="67" xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEAlgCWAAD/7AARRHVja3kAAQAEAAAAHgAA/+4AIUFkb2JlAGTAAAAAAQMA
+EAMCAwYAAAKNAAADPQAABNz/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8XFxcXFx8eFxoaGhoX
+Hh4jJSclIx4vLzMzLy9AQEBAQEBAQEBAQEBAQEABEQ8PERMRFRISFRQRFBEUGhQWFhQaJhoaHBoa
+JjAjHh4eHiMwKy4nJycuKzU1MDA1NUBAP0BAQEBAQEBAQEBAQP/CABEIAEMAQwMBIgACEQEDEQH/
+xAC5AAACAwEBAQAAAAAAAAAAAAAABQIDBgEEBwEAAwEBAQAAAAAAAAAAAAAAAwQFAgEAEAACAgED
+BAIBBQAAAAAAAAABAgADBBEFBhASExQhMSNBMhU1FhEAAgEBAwcGCQ0AAAAAAAAAAQIRAwAhEhAx
+QSIyEwQgUWFxkVIwoUJicqMUFUWBscHRgpKistIzg0Q1EgABAgMHAgcAAAAAAAAAAAABABEQMQIh
+QVGBEjJDYYIgcZGhIoNE/9oADAMBAAIRAxEAAAD6Ak9/zzjbpvkPQBndJlfV47l3i3RV3oDbmfyb
+xUCnH1R9KvQtrzHg0Vel+ZsACV8iteJVqErqZczbVGqhInGEXVNOKBZzQ5ba4xKrHhEh+V9g7zjB
+bqSrviZMUFYe0skHTU9AmpagMhAMD//aAAgBAgABBQAnSNYVlmQ7NRa5Mdvm1iZVWWNdBHRwe5at
+Tj0KAtQnirjD5rWVy1+2voIJZ9z/2gAIAQMAAQUAxMdbJbRV239yynIJeY+i1O3xmMBK3AulR1rs
+10ya3YnHad1kxSChTWeupl9CKsT90/W37n//2gAIAQEAAQUAm78lx8Bv9ZupfbOT15LZ24UYKWcg
+zWbG5C4NdiWpN2ymw9uJZ2RZWka2249OO5Dd05ZmBMYJESVpFSEQzjyhs2cm1bdAsRJWs0GjGEza
+sr18+cjGu5gRRFOkLxnhaFp/M2ePkuI4vEBndGeM0LTunqXeDkP9bNYTGaEwmbHi05m4eOuZ+N7e
+JbVZTYYYxhhnFtttpHTd+3X8M/H4j4Jb4u/D8XsdP//aAAgBAgIGPwBOvidI6LTWXeRgYSQLSgYS
+hPl05YeAl2LMPON+S5MkN/fD/9oACAEDAgY/ADVXtpLNiVZSKeoTAoUVWvIwpa+31gVQTLVClsGj
+aFLi98UabwYSRJygN3bNc6/Qhv8AsnD/2gAIAQEBBj8AsaFACvxIuYTCofOOnqFsUUgLtQKY8bT4
+7LR4xBRqNcKi7BPTOawNTWdtimM5+q0oqIugRJ7TYDiaYK95Lj2Gy1KbBkYSCMnEcQu2iwh5mY4F
+PyE2LMSzMZJN5JOk5Q1Vi5ChQTzKIAy1OGMlY3i8wgwe2RkTgl2qxDudGFT9J5bsfJpmOeSQMhky
+AigdGc8uk5OqxwN1Nd89+RvQXwG9nV9j3mn97ebn81k4sCabAIx5mEx2jwGbW9k3+HTg32f7t9m9
+NeWlGuCaYBYgGJw6D0W2F2cOYbPd6rVKGlhqk94Xixp1VKOtxU8p+NrKUNRcFJTcSpIYtHTAjKmL
+2SI/szjz+Rhvi3w/1tj/AJmHpx4v1W+G+utre6p83eR+C6y4Pdk/yYvs47py/wD/2Q==" transform="matrix(161.4882 0 0 165.2537 -1831.3508 -1959.8796)">
+ </image>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</g>
+</svg>
diff --git a/app/cdn/fonts/Nunito-Italic-VariableFont_wght.ttf b/app/cdn/fonts/Nunito-Italic-VariableFont_wght.ttf
new file mode 100644
index 0000000..97a40fa
--- /dev/null
+++ b/app/cdn/fonts/Nunito-Italic-VariableFont_wght.ttf
Binary files differ
diff --git a/app/cdn/fonts/Nunito-VariableFont_wght.ttf b/app/cdn/fonts/Nunito-VariableFont_wght.ttf
new file mode 100644
index 0000000..edc20b8
--- /dev/null
+++ b/app/cdn/fonts/Nunito-VariableFont_wght.ttf
Binary files differ
diff --git a/app/cdn/icons/.DS_Store b/app/cdn/icons/.DS_Store
new file mode 100644
index 0000000..5008ddf
--- /dev/null
+++ b/app/cdn/icons/.DS_Store
Binary files differ
diff --git a/app/cdn/icons/badge-filled.png b/app/cdn/icons/badge-filled.png
new file mode 100644
index 0000000..6b29fc8
--- /dev/null
+++ b/app/cdn/icons/badge-filled.png
Binary files differ
diff --git a/app/cdn/icons/badge-symbolic.png b/app/cdn/icons/badge-symbolic.png
new file mode 100644
index 0000000..93d28cf
--- /dev/null
+++ b/app/cdn/icons/badge-symbolic.png
Binary files differ
diff --git a/app/cdn/icons/badge.png b/app/cdn/icons/badge.png
new file mode 100644
index 0000000..339b169
--- /dev/null
+++ b/app/cdn/icons/badge.png
Binary files differ
diff --git a/app/cdn/icons/bucks.png b/app/cdn/icons/bucks.png
new file mode 100644
index 0000000..eb81f63
--- /dev/null
+++ b/app/cdn/icons/bucks.png
Binary files differ
diff --git a/app/cdn/icons/cinema-filled.png b/app/cdn/icons/cinema-filled.png
new file mode 100644
index 0000000..41b13f9
--- /dev/null
+++ b/app/cdn/icons/cinema-filled.png
Binary files differ
diff --git a/app/cdn/icons/cinema-symbolic.png b/app/cdn/icons/cinema-symbolic.png
new file mode 100644
index 0000000..d594e70
--- /dev/null
+++ b/app/cdn/icons/cinema-symbolic.png
Binary files differ
diff --git a/app/cdn/icons/cinema.png b/app/cdn/icons/cinema.png
new file mode 100644
index 0000000..4ba70ec
--- /dev/null
+++ b/app/cdn/icons/cinema.png
Binary files differ
diff --git a/app/cdn/icons/cloud-link.png b/app/cdn/icons/cloud-link.png
new file mode 100644
index 0000000..7ab6584
--- /dev/null
+++ b/app/cdn/icons/cloud-link.png
Binary files differ
diff --git a/app/cdn/icons/contacts-filled.png b/app/cdn/icons/contacts-filled.png
new file mode 100644
index 0000000..0129625
--- /dev/null
+++ b/app/cdn/icons/contacts-filled.png
Binary files differ
diff --git a/app/cdn/icons/contacts-symbolic.png b/app/cdn/icons/contacts-symbolic.png
new file mode 100644
index 0000000..aa88c7f
--- /dev/null
+++ b/app/cdn/icons/contacts-symbolic.png
Binary files differ
diff --git a/app/cdn/icons/contacts.png b/app/cdn/icons/contacts.png
new file mode 100644
index 0000000..ab2c527
--- /dev/null
+++ b/app/cdn/icons/contacts.png
Binary files differ
diff --git a/app/cdn/icons/famidata.png b/app/cdn/icons/famidata.png
new file mode 100644
index 0000000..4709e1d
--- /dev/null
+++ b/app/cdn/icons/famidata.png
Binary files differ
diff --git a/app/cdn/icons/familine-docs.svg b/app/cdn/icons/familine-docs.svg
new file mode 100644
index 0000000..67e2a02
--- /dev/null
+++ b/app/cdn/icons/familine-docs.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 7164 7188" style="enable-background:new 0 0 7164 7188;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:none;}
+ .st1{fill:url(#SVGID_1_);}
+</style>
+<path class="st0" d="M0,0h7164v7188H0V0z"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="706.2429" y1="1438.0809" x2="5737.938" y2="6469.7759">
+ <stop offset="0" style="stop-color:#EF593B"/>
+ <stop offset="1" style="stop-color:#EF9E8F"/>
+</linearGradient>
+<path class="st1" d="M2388,4792h2388v599H2388V4792z M2388,3594h2388v599H2388V3594z M4179,599H1791c-328.3,0-597,269.5-597,599
+ v4792c0,329.5,268.7,599,597,599h3582c328.4,0,597-269.5,597-599V2396L4179,599z M5373,5990H1791V1198h2089.5v1497.5H5373V5990z"/>
+</svg>
diff --git a/app/cdn/icons/familine-help.svg b/app/cdn/icons/familine-help.svg
new file mode 100644
index 0000000..8499cf8
--- /dev/null
+++ b/app/cdn/icons/familine-help.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 7164 7188" style="enable-background:new 0 0 7164 7188;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:none;}
+ .st1{fill:url(#SVGID_1_);}
+</style>
+<path class="st0" d="M0,0h7164v7188H0V0z"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="1066.1619" y1="6109.8384" x2="6097.8384" y2="1078.1619">
+ <stop offset="0" style="stop-color:#EF713B"/>
+ <stop offset="1" style="stop-color:#EFAC8F"/>
+</linearGradient>
+<path class="st1" d="M5373,599H1791c-328.3,0-597,269.5-597,599v4792c0,329.5,268.7,599,597,599h3582c328.4,0,597-269.5,597-599
+ V1198C5970,868.5,5701.4,599,5373,599z M2686.5,1198h597v1497.5L2985,2455.9l-298.5,239.6V1198z M5373,5990H1791V1198h298.5v2695.5
+ l895.5-688.9l895.5,688.9V1198H5373V5990z"/>
+</svg>
diff --git a/app/cdn/icons/familine-media.svg b/app/cdn/icons/familine-media.svg
new file mode 100644
index 0000000..e9b245e
--- /dev/null
+++ b/app/cdn/icons/familine-media.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:none;}
+ .st1{fill:url(#SVGID_1_);}
+</style>
+<path class="st0" d="M0,0h24v24H0V0z"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="1.5875" y1="22.4125" x2="21.4125" y2="2.5875">
+ <stop offset="0" style="stop-color:#EFD03B"/>
+ <stop offset="0.5" style="stop-color:#C0FF36"/>
+ <stop offset="1" style="stop-color:#3BEF3B"/>
+</linearGradient>
+<path class="st1" d="M2,6H0v5l0,0v9c0,1.1,0.9,2,2,2h18v-2H2V6z M7,15h14l-3.5-4.5l-2.5,3L11.5,9L7,15z M22,4h-8l-2-2H6
+ C4.9,2,4,2.9,4,4v12c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V6C24,4.9,23.1,4,22,4z M22,16H6V4h5.2l1.4,1.4L13.2,6H22V16z"/>
+</svg>
diff --git a/app/cdn/icons/familine-movies.svg b/app/cdn/icons/familine-movies.svg
new file mode 100644
index 0000000..cdf031f
--- /dev/null
+++ b/app/cdn/icons/familine-movies.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+
+<svg
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ viewBox="0 0 7164 7188"
+ style="enable-background:new 0 0 7164 7188;"
+ xml:space="preserve"
+ sodipodi:docname="familine-movies.svg"
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ inkscape:export-filename="D:\Projets\Familine\icns\familine-movies.png"
+ inkscape:export-xdpi="24"
+ inkscape:export-ydpi="24"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"><defs
+ id="defs11" /><sodipodi:namedview
+ id="namedview9"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="0.092097941"
+ inkscape:cx="1438.6858"
+ inkscape:cy="3599.429"
+ inkscape:window-width="1600"
+ inkscape:window-height="847"
+ inkscape:window-x="-8"
+ inkscape:window-y="-8"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="Layer_1" />
+<style
+ type="text/css"
+ id="style2">
+ .st0{fill:none;}
+ .st1{fill:#41EF3B;}
+</style>
+<path
+ class="st0"
+ d="M0,0h7164v7188H0V0z"
+ id="path4" />
+<path
+ class="st1"
+ d="M5373,898.5v599h-597v-599H2388v599h-597v-599h-597v5391h597v-599h597v599h2388v-599h597v599h597v-5391H5373z M2388,5091.5h-597v-599h597V5091.5z M2388,3893.5h-597v-599h597V3893.5z M2388,2695.5h-597v-599h597V2695.5z M4179,5690.5H2985 v-4193h1194V5690.5z M5373,5091.5h-597v-599h597V5091.5z M5373,3893.5h-597v-599h597V3893.5z M5373,2695.5h-597v-599h597V2695.5z"
+ id="path6"
+ style="fill:#efd03b;fill-opacity:1" />
+</svg>
diff --git a/app/cdn/icons/familine-music.svg b/app/cdn/icons/familine-music.svg
new file mode 100644
index 0000000..6ba92f8
--- /dev/null
+++ b/app/cdn/icons/familine-music.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:none;}
+ .st1{fill:#C0FF36;}
+</style>
+<g>
+ <rect class="st0" width="24" height="24"/>
+</g>
+<g>
+ <path class="st1" d="M12,3c-5,0-9,4-9,9v7c0,1.1,0.9,2,2,2h4v-8H5v-1c0-3.9,3.1-7,7-7s7,3.1,7,7v1h-4v8h4c1.1,0,2-0.9,2-2v-7
+ C21,7,17,3,12,3z M7,15v4H5v-4H7z M19,19h-2v-4h2V19z"/>
+</g>
+</svg>
diff --git a/app/cdn/icons/familine-photos.svg b/app/cdn/icons/familine-photos.svg
new file mode 100644
index 0000000..18b52f0
--- /dev/null
+++ b/app/cdn/icons/familine-photos.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+
+<svg
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ viewBox="0 0 7164 7188"
+ style="enable-background:new 0 0 7164 7188;"
+ xml:space="preserve"
+ sodipodi:docname="familine-photos.svg"
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ inkscape:export-filename="D:\Projets\Familine\icns\familine-photos.png"
+ inkscape:export-xdpi="13.72"
+ inkscape:export-ydpi="13.72"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"><defs
+ id="defs11" /><sodipodi:namedview
+ id="namedview9"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="0.092097941"
+ inkscape:cx="3577.713"
+ inkscape:cy="3599.429"
+ inkscape:window-width="1600"
+ inkscape:window-height="847"
+ inkscape:window-x="-8"
+ inkscape:window-y="-8"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="Layer_1" />
+<style
+ type="text/css"
+ id="style2">
+ .st0{fill:none;}
+ .st1{fill:#3BEF80;}
+</style>
+<path
+ class="st0"
+ d="M0,0h7164v7188H0V0z"
+ id="path4" />
+<path
+ class="st1"
+ d="M5581.95,3713.8c-89.55-59.9-179.1-89.85-268.65-119.8c89.55-29.95,179.1-59.9,268.65-119.8 c567.15-329.45,895.5-928.45,895.5-1557.4c-268.65-149.75-597-239.6-895.5-239.6s-597,89.85-895.5,239.6 c-89.55,59.9-149.25,89.85-238.8,149.75c29.85-89.85,29.85-179.7,29.85-269.55c0-658.9-358.2-1257.9-895.5-1557.4 c-537.3,299.5-895.5,898.5-895.5,1557.4c0,89.85,0,179.7,29.85,269.55c-89.55-29.95-149.25-89.85-238.8-149.75 c-268.65-149.75-597-239.6-895.5-239.6c-328.35,0-626.85,89.85-895.5,239.6c0,628.95,328.35,1227.95,895.5,1557.4 c89.55,59.9,179.1,89.85,268.65,119.8c-89.55,29.95-179.1,59.9-268.65,119.8c-567.15,329.45-895.5,928.45-895.5,1557.4 c268.65,149.75,567.15,239.6,895.5,239.6c298.5,0,626.85-89.85,895.5-239.6c89.55-59.9,149.25-119.8,238.8-149.75 c-29.85,89.85-29.85,179.7-29.85,269.55c0,658.9,358.2,1227.95,895.5,1557.4c537.3-299.5,895.5-898.5,895.5-1557.4 c0-89.85,0-179.7-29.85-299.5c59.7,59.9,149.25,119.8,238.8,149.75c268.65,149.75,597,239.6,895.5,239.6s626.85-89.85,895.5-239.6 C6477.45,4642.25,6149.1,4043.25,5581.95,3713.8z M4835.7,2545.75c59.7-59.9,119.4-89.85,149.25-119.8 c179.1-89.85,388.05-149.75,597-149.75c89.55,0,149.25,0,238.8,29.95c-89.55,269.55-268.65,509.15-537.3,658.9 c-59.7,29.95-119.4,59.9-179.1,89.85l-417.9,149.75c-59.7-149.75-119.4-269.55-208.95-359.4 C4477.5,2815.3,4835.7,2545.75,4835.7,2545.75z M3582,1018.3c179.1,209.65,298.5,479.2,298.5,778.7c0,59.9,0,119.8-29.85,179.7 l-59.7,419.3c-59.7,0-149.25,0-208.95,0s-149.25,0-208.95,29.95l-59.7-419.3c-29.85-89.85-29.85-149.75-29.85-209.65 C3283.5,1497.5,3402.9,1227.95,3582,1018.3z M1343.25,2306.15c89.55-29.95,149.25-29.95,238.8-29.95c208.95,0,417.9,59.9,597,149.75 c59.7,29.95,89.55,59.9,149.25,119.8l328.35,299.5c-89.55,119.8-149.25,239.6-208.95,359.4l-417.9-149.75 c-59.7-59.9-89.55-59.9-149.25-89.85C1611.9,2815.3,1432.8,2575.7,1343.25,2306.15z M2328.3,4642.25 c-59.7,59.9-119.4,89.85-149.25,119.8c-179.1,89.85-388.05,149.75-597,149.75c-89.55,0-149.25,0-238.8-29.95 c89.55-269.55,268.65-509.15,537.3-658.9c59.7-29.95,119.4-59.9,179.1-89.85l417.9-149.75c59.7,149.75,119.4,269.55,208.95,359.4 C2686.5,4372.7,2328.3,4642.25,2328.3,4642.25z M3582,6169.7c-179.1-209.65-298.5-509.15-298.5-778.7c0-59.9,0-119.8,29.85-179.7 l59.7-419.3c59.7,0,149.25,29.95,208.95,29.95s149.25,0,208.95-29.95l59.7,419.3c0,59.9,29.85,119.8,29.85,179.7 C3880.5,5690.5,3761.1,5960.05,3582,6169.7z M5581.95,4911.8c-208.95,0-417.9-59.9-597-149.75c-59.7-29.95-89.55-59.9-149.25-89.85 l-328.35-299.5c89.55-119.8,149.25-239.6,208.95-359.4l417.9,149.75c59.7,29.95,119.4,59.9,179.1,89.85 c268.65,149.75,447.75,389.35,537.3,658.9C5731.2,4911.8,5671.5,4911.8,5581.95,4911.8z"
+ id="path6"
+ style="fill:#3bef3b;fill-opacity:1" />
+</svg>
diff --git a/app/cdn/icons/familine-planning.svg b/app/cdn/icons/familine-planning.svg
new file mode 100644
index 0000000..57d78f6
--- /dev/null
+++ b/app/cdn/icons/familine-planning.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1"
+ id="Layer_1" inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)" sodipodi:docname="familine-planning.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 7164 7188"
+ style="enable-background:new 0 0 7164 7188;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:none;}
+ .st1{fill:url(#path6_1_);}
+</style>
+<sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="namedview9" inkscape:current-layer="Layer_1" inkscape:cx="3577.713" inkscape:cy="3599.429" inkscape:pagecheckerboard="0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="847" inkscape:window-maximized="1" inkscape:window-width="1600" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:zoom="0.092097941" pagecolor="#ffffff" showgrid="false">
+ </sodipodi:namedview>
+<path id="path4" class="st0" d="M0,0h7164v7188H0V0z"/>
+<linearGradient id="path6_1_" gradientUnits="userSpaceOnUse" x1="6111.0439" y1="1037.5441" x2="1052.9559" y2="6095.6323">
+ <stop offset="0" style="stop-color:#3BEF6F"/>
+ <stop offset="1" style="stop-color:#8FEFAB"/>
+</linearGradient>
+<path id="path6" class="st1" d="M5671.5,898.5H5373v-599h-597v599H2388v-599h-597v599h-298.5c-328.3,0-597,269.6-597,599v4193
+ c0,329.5,268.7,599,597,599h4179c328.4,0,597-269.5,597-599v-4193C6268.5,1168.1,5999.9,898.5,5671.5,898.5z M5671.5,5690.5h-4179
+ v-2995h4179V5690.5z M1492.5,2096.5v-599h4179v599H1492.5z M2089.5,3294.5h2985v599h-2985V3294.5z M2089.5,4492.5H4179v599H2089.5
+ V4492.5z"/>
+</svg>
diff --git a/app/cdn/icons/familine-recall.svg b/app/cdn/icons/familine-recall.svg
new file mode 100644
index 0000000..584c419
--- /dev/null
+++ b/app/cdn/icons/familine-recall.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:none;}
+ .st1{fill:url(#SVGID_1_);}
+</style>
+<path class="st0" d="M0,0h24v24H0V0z"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="25.0221" y1="15.7655" x2="2.2279" y2="2.6053">
+ <stop offset="0" style="stop-color:#35B7FF"/>
+ <stop offset="1" style="stop-color:#99DBFF"/>
+</linearGradient>
+<path class="st1" d="M22,11V3h-7v3H9V3H2v8h7V8h2v10h4v3h7v-8h-7v3h-2V8h2v3H22z"/>
+</svg>
diff --git a/app/cdn/icons/familine-share.svg b/app/cdn/icons/familine-share.svg
new file mode 100644
index 0000000..3c5cc8e
--- /dev/null
+++ b/app/cdn/icons/familine-share.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 7164 7188" style="enable-background:new 0 0 7164 7188;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:none;}
+ .st1{fill:url(#SVGID_1_);}
+</style>
+<path class="st0" d="M0,0h7164v7188H0V0z"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="298.5" y1="3594" x2="6865.5" y2="3594">
+ <stop offset="0" style="stop-color:#953BEF"/>
+ <stop offset="1" style="stop-color:#BF8FEF"/>
+</linearGradient>
+<path class="st1" d="M6268.5,898.5h-5373c-328.3,0-597,269.6-597,599v4193c0,329.5,268.7,599,597,599h5373
+ c328.4,0,597-269.5,597-599v-4193C6865.5,1168.1,6596.9,898.5,6268.5,898.5z M6268.5,5690.5h-5373v-4193h5373V5690.5z M2985,3594
+ h-597l1194-1198l1194,1198h-597v1198H2985V3594z"/>
+</svg>
diff --git a/app/cdn/icons/familine-you.svg b/app/cdn/icons/familine-you.svg
new file mode 100644
index 0000000..e95a256
--- /dev/null
+++ b/app/cdn/icons/familine-you.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 7164 7188" style="enable-background:new 0 0 7164 7188;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:none;}
+ .st1{fill:url(#SVGID_1_);}
+</style>
+<path class="st0" d="M0,0h7164v7188H0V0z"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="6268.5" y1="3743.75" x2="895.5" y2="3743.75">
+ <stop offset="0" style="stop-color:#EF3BD4"/>
+ <stop offset="1" style="stop-color:#EF8FE1"/>
+</linearGradient>
+<path class="st1" d="M5671.5,599h-4179c-328.3,0-597,269.5-597,599v4193c0,329.5,268.7,599,597,599h1194l895.5,898.5l895.5-898.5
+ h1194c328.4,0,597-269.5,597-599V1198C6268.5,868.5,5999.9,599,5671.5,599z M5671.5,5391H4238.7l-179.1,179.7L3582,6049.9
+ l-477.6-479.2L2925.3,5391H1492.5V1198h4179V5391z M3582,3294.5c477.6,0,895.5-419.3,895.5-898.5s-417.9-898.5-895.5-898.5
+ s-895.5,389.3-895.5,898.5S3104.4,3294.5,3582,3294.5z M3582,2096.5c179.1,0,298.5,119.8,298.5,299.5s-119.4,299.5-298.5,299.5
+ s-298.5-119.8-298.5-299.5S3402.9,2096.5,3582,2096.5z M5373,4672.2c0-748.8-1194-1078.2-1791-1078.2s-1791,329.4-1791,1078.2v419.3
+ h3582V4672.2z M2537.2,4492.5C2746.2,4342.8,3193.9,4193,3582,4193s835.8,149.8,1044.8,299.5H2537.2z"/>
+</svg>
diff --git a/app/cdn/icons/familine.svg b/app/cdn/icons/familine.svg
new file mode 100644
index 0000000..485c463
--- /dev/null
+++ b/app/cdn/icons/familine.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 7164 7188" style="enable-background:new 0 0 7164 7188;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:none;}
+ .st1{clip-path:url(#SVGID_2_);}
+ .st2{clip-path:url(#SVGID_4_);}
+</style>
+<rect class="st0" width="24" height="24"/>
+<g>
+ <g>
+ <g>
+ <defs>
+ <path id="SVGID_1_" d="M4892.49,715.22C4892.49,321.85,5207,0,5591.41,0c384.41,0,698.93,321.85,698.93,715.22
+ s-314.52,715.22-698.93,715.22C5207,1430.45,4892.49,1108.6,4892.49,715.22z M6290.34,7152.24V5006.57H7164l-873.66-2717.85
+ c-104.84-286.09-349.46-500.66-663.98-500.66h-34.95c-314.52,0-559.14,214.57-663.98,500.66l-314.52,929.79
+ c384.41,214.57,629.03,607.94,629.03,1108.6V7188h1048.39V7152.24z M3669.37,3397.31c279.57,0,524.2-250.33,524.2-536.42
+ s-244.62-536.42-524.2-536.42s-524.2,250.33-524.2,536.42S3389.8,3397.31,3669.37,3397.31z M1223.12,1430.45
+ c384.41,0,698.93-321.85,698.93-715.22S1607.53,0,1223.12,0S524.2,321.85,524.2,715.22S838.71,1430.45,1223.12,1430.45z
+ M1922.05,7152.24V4648.96h524.2V2503.28c0-393.37-314.52-715.22-698.93-715.22H698.93C314.52,1788.06,0,2109.91,0,2503.28
+ v2145.67h524.2v2503.28H1922.05z M4193.56,7152.24V5721.79h349.46V4291.34c0-286.09-244.62-536.42-524.2-536.42H3319.9
+ c-279.57,0-524.2,250.33-524.2,536.42v1430.45h349.46v1430.45H4193.56z"/>
+ </defs>
+ <clipPath id="SVGID_2_">
+ <use xlink:href="#SVGID_1_" style="overflow:visible;"/>
+ </clipPath>
+ <g class="st1">
+ <g>
+ <g>
+ <defs>
+ <rect id="SVGID_3_" x="-1747.32" y="-1788.06" width="10658.63" height="10728.36"/>
+ </defs>
+ <clipPath id="SVGID_4_">
+ <use xlink:href="#SVGID_3_" style="overflow:visible;"/>
+ </clipPath>
+ <g class="st2">
+
+ <image style="overflow:visible;enable-background:new ;" width="67" height="67" xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEAlgCWAAD/7AARRHVja3kAAQAEAAAAHgAA/+4AIUFkb2JlAGTAAAAAAQMA
+EAMCAwYAAAKNAAADPQAABNz/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8XFxcXFx8eFxoaGhoX
+Hh4jJSclIx4vLzMzLy9AQEBAQEBAQEBAQEBAQEABEQ8PERMRFRISFRQRFBEUGhQWFhQaJhoaHBoa
+JjAjHh4eHiMwKy4nJycuKzU1MDA1NUBAP0BAQEBAQEBAQEBAQP/CABEIAEMAQwMBIgACEQEDEQH/
+xAC5AAACAwEBAQAAAAAAAAAAAAAABQIDBgEEBwEAAwEBAQAAAAAAAAAAAAAAAwQFAgEAEAACAgED
+BAIBBQAAAAAAAAABAgADBBEFBhASExQhMSNBMhU1FhEAAgEBAwcGCQ0AAAAAAAAAAQIRAwAhEhAx
+QSIyEwQgUWFxkVIwoUJicqMUFUWBscHRgpKistIzg0Q1EgABAgMHAgcAAAAAAAAAAAABABEQMQIh
+QVGBEjJDYYIgcZGhIoNE/9oADAMBAAIRAxEAAAD6Ak9/zzjbpvkPQBndJlfV47l3i3RV3oDbmfyb
+xUCnH1R9KvQtrzHg0Vel+ZsACV8iteJVqErqZczbVGqhInGEXVNOKBZzQ5ba4xKrHhEh+V9g7zjB
+bqSrviZMUFYe0skHTU9AmpagMhAMD//aAAgBAgABBQAnSNYVlmQ7NRa5Mdvm1iZVWWNdBHRwe5at
+Tj0KAtQnirjD5rWVy1+2voIJZ9z/2gAIAQMAAQUAxMdbJbRV239yynIJeY+i1O3xmMBK3AulR1rs
+10ya3YnHad1kxSChTWeupl9CKsT90/W37n//2gAIAQEAAQUAm78lx8Bv9ZupfbOT15LZ24UYKWcg
+zWbG5C4NdiWpN2ymw9uJZ2RZWka2249OO5Dd05ZmBMYJESVpFSEQzjyhs2cm1bdAsRJWs0GjGEza
+sr18+cjGu5gRRFOkLxnhaFp/M2ePkuI4vEBndGeM0LTunqXeDkP9bNYTGaEwmbHi05m4eOuZ+N7e
+JbVZTYYYxhhnFtttpHTd+3X8M/H4j4Jb4u/D8XsdP//aAAgBAgIGPwBOvidI6LTWXeRgYSQLSgYS
+hPl05YeAl2LMPON+S5MkN/fD/9oACAEDAgY/ADVXtpLNiVZSKeoTAoUVWvIwpa+31gVQTLVClsGj
+aFLi98UabwYSRJygN3bNc6/Qhv8AsnD/2gAIAQEBBj8AsaFACvxIuYTCofOOnqFsUUgLtQKY8bT4
+7LR4xBRqNcKi7BPTOawNTWdtimM5+q0oqIugRJ7TYDiaYK95Lj2Gy1KbBkYSCMnEcQu2iwh5mY4F
+PyE2LMSzMZJN5JOk5Q1Vi5ChQTzKIAy1OGMlY3i8wgwe2RkTgl2qxDudGFT9J5bsfJpmOeSQMhky
+AigdGc8uk5OqxwN1Nd89+RvQXwG9nV9j3mn97ebn81k4sCabAIx5mEx2jwGbW9k3+HTg32f7t9m9
+NeWlGuCaYBYgGJw6D0W2F2cOYbPd6rVKGlhqk94Xixp1VKOtxU8p+NrKUNRcFJTcSpIYtHTAjKmL
+2SI/szjz+Rhvi3w/1tj/AJmHpx4v1W+G+utre6p83eR+C6y4Pdk/yYvs47py/wD/2Q==" transform="matrix(161.4882 0 0 165.2537 -1831.3508 -1959.8796)">
+ </image>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</g>
+</svg>
diff --git a/app/cdn/icons/help-filled.png b/app/cdn/icons/help-filled.png
new file mode 100644
index 0000000..68c9bde
--- /dev/null
+++ b/app/cdn/icons/help-filled.png
Binary files differ
diff --git a/app/cdn/icons/help-symbolic.png b/app/cdn/icons/help-symbolic.png
new file mode 100644
index 0000000..d34d296
--- /dev/null
+++ b/app/cdn/icons/help-symbolic.png
Binary files differ
diff --git a/app/cdn/icons/help.png b/app/cdn/icons/help.png
new file mode 100644
index 0000000..48351c8
--- /dev/null
+++ b/app/cdn/icons/help.png
Binary files differ
diff --git a/app/cdn/icons/home-filled.png b/app/cdn/icons/home-filled.png
new file mode 100644
index 0000000..1b60d9c
--- /dev/null
+++ b/app/cdn/icons/home-filled.png
Binary files differ
diff --git a/app/cdn/icons/home-symbolic.png b/app/cdn/icons/home-symbolic.png
new file mode 100644
index 0000000..245c1ed
--- /dev/null
+++ b/app/cdn/icons/home-symbolic.png
Binary files differ
diff --git a/app/cdn/icons/home.png b/app/cdn/icons/home.png
new file mode 100644
index 0000000..2ea5ba9
--- /dev/null
+++ b/app/cdn/icons/home.png
Binary files differ
diff --git a/app/cdn/icons/money-filled.png b/app/cdn/icons/money-filled.png
new file mode 100644
index 0000000..88ffac6
--- /dev/null
+++ b/app/cdn/icons/money-filled.png
Binary files differ
diff --git a/app/cdn/icons/money-symbolic.png b/app/cdn/icons/money-symbolic.png
new file mode 100644
index 0000000..0cdf491
--- /dev/null
+++ b/app/cdn/icons/money-symbolic.png
Binary files differ
diff --git a/app/cdn/icons/money.png b/app/cdn/icons/money.png
new file mode 100644
index 0000000..f54c90f
--- /dev/null
+++ b/app/cdn/icons/money.png
Binary files differ
diff --git a/app/cdn/icons/music.png b/app/cdn/icons/music.png
new file mode 100644
index 0000000..c75888a
--- /dev/null
+++ b/app/cdn/icons/music.png
Binary files differ
diff --git a/app/cdn/icons/open-book-filled.png b/app/cdn/icons/open-book-filled.png
new file mode 100644
index 0000000..767c991
--- /dev/null
+++ b/app/cdn/icons/open-book-filled.png
Binary files differ
diff --git a/app/cdn/icons/open-book-symbolic.png b/app/cdn/icons/open-book-symbolic.png
new file mode 100644
index 0000000..7513aa9
--- /dev/null
+++ b/app/cdn/icons/open-book-symbolic.png
Binary files differ
diff --git a/app/cdn/icons/open-book.png b/app/cdn/icons/open-book.png
new file mode 100644
index 0000000..5310c50
--- /dev/null
+++ b/app/cdn/icons/open-book.png
Binary files differ
diff --git a/app/cdn/icons/opus.svg b/app/cdn/icons/opus.svg
new file mode 100644
index 0000000..7764b8b
--- /dev/null
+++ b/app/cdn/icons/opus.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" width="3600" height="2045.1">
+ <defs>
+ <linearGradient y1="1" x2="0" id="linearGradient1">
+ <stop style="stop-color:#8e8e8e"/>
+ <stop style="stop-color:#b5b5b5" offset="1"/>
+ </linearGradient>
+ <linearGradient x2="0" y2="1" id="linearGradient2">
+ <stop style="stop-color:#484848"/>
+ <stop style="stop-color:#000" offset="1"/>
+ </linearGradient>
+ </defs>
+ <path d="m 2573.55,139.96167 c -74.12,-61.7 -188.22,-103.01 -342.02,-124.08 l -113.02,359.34 c -2.44,13.19 -6.64,28.16 -13.15,45.41 -11.54,28.82 -25.43,52.57 -41.75,71.27 -16.34,18.73 -34.63,33.34 -54.89,44 -20.28,10.58 -42.32,17.9 -66.14,21.93 -23.83,4.01 -48.47,5.26 -73.93,3.78 -25.49,-1.48 -47.17,-4.95 -65.01,-10.42 -17.86,-5.46 -34.28,-14.52 -49.26,-27.2 -11.07,-12.45 -17.51,-28.77 -19.27,-49.02 -1.77,-20.24 3.14,-45.27 14.71,-75.09 10.36,-25.91 23.46,-48.51 39.34,-67.71 15.86,-19.21 34.42,-34.11 55.65,-44.67 20.27,-10.59 42.06,-17.68 65.39,-21.25 23.27,-3.55 49.14,-4.48 77.55,-2.83 23.52,1.39 45.42,4.85 65.74,10.48 9.64,2.64 18.08,6.13 25.42,10.33 l 86.76,-275.91 c -21.41,-2.02 -43.32,-3.79 -66.09,-5.1 -219.01,-12.79 -403.08,12.51 -552.29,75.76 -149.18,63.31 -248.65,157.15 -298.33,281.55 -14.91,38.14 -22.92,74.08 -24.1,107.85 -14.35,244.68 142.95,382.45 240.07,443.73 38.97,26.09 73.62,39.01 73.62,39.01 l 44.51,-142.24 13.16,-34.96 c 58.59,11.08 123.75,18.79 195.73,22.97 220.53,12.87 405.39,-12.32 554.58,-75.64 149.16,-63.25 247.8,-156.38 295.91,-279.42 48.08,-122.96 25.16,-223.58 -68.8,-301.82" style="fill:url(#linearGradient1)"/>
+ <path d="m 2695.31,1395 c -25.1,77.18 -82.3,138.07 -171.56,182.7 -89.25,44.621 -202.22,66.942 -338.9,66.942 -134.84,0 -232.92,-22.079 -294.3,-66.258 -61.36,-44.153 -79.04,-105.282 -52.99,-183.383 l 75.31,-232.91 256.62,0 -72.52,231.511 c -9.31,28.829 -12.32,52.79 -9.06,71.829 3.25,19.07 10.45,34.171 21.62,45.332 13.94,11.129 29.5,18.8 46.72,22.988 17.19,4.191 37.87,6.293 62.06,6.293 24.18,0 47.42,-2.551 69.74,-7.692 22.31,-5.089 42.75,-13.23 61.37,-24.378 18.58,-11.161 35.09,-26.024 49.51,-44.633 14.4,-18.59 26.26,-41.86 35.57,-69.739 l 75.31,-231.511 256.63,0 -71.13,232.91" style="fill:url(#linearGradient2)"/>
+ <path d="m 607.93,1405.4437 c -9.309,29.77 -20.696,52.996 -34.168,69.738 -13.492,16.739 -30.465,31.16 -50.907,43.231 -17.679,11.16 -37.652,18.828 -59.964,23.019 -22.317,4.192 -44.629,6.27 -66.957,6.27 -26.969,0 -49.993,-2.309 -69.036,-6.969 -19.07,-4.652 -34.168,-12.562 -45.332,-23.711 -12.097,-11.16 -19.054,-26.262 -20.921,-45.328 -1.875,-19.043 1.394,-41.141 9.769,-66.25 9.293,-28.801 21.613,-52.754 36.965,-71.832 15.336,-19.039 32.293,-34.172 50.902,-45.328 21.383,-11.152 42.063,-18.82 62.067,-23.012 19.988,-4.191 42.062,-6.269 66.254,-6.269 24.16,0 46.027,2.57 65.546,7.668 19.528,5.121 34.864,13.25 46.028,24.402 11.148,11.168 17.886,26.059 20.215,44.629 2.308,18.609 -1.172,41.859 -10.461,69.742 z m 260.816,-1.402 c 25.102,-77.16 7.426,-138.071 -53.008,-182.7 -60.445,-44.628 -158.996,-66.949 -295.676,-66.949 -134.832,0 -246.855,22.098 -336.113,66.25 -89.277,44.168 -146.933,105.309 -172.953,183.399 -25.102,77.199 -7.2148,137.859 53.695,182.011 60.895,44.18 159.219,66.258 294.98,66.258 135.754,0 248.258,-22.078 337.531,-66.258 89.262,-44.152 146.434,-104.812 171.543,-182.011" style="fill:url(#linearGradient2)"/>
+ <path d="m 3101.4,1268.0727 c 29.27,-6.992 90.41,-10.461 183.39,-10.461 48.34,0 95.06,4.871 140.18,14.648 45.07,9.75 90.41,22.09 135.97,36.961 l 39.06,-118.558 c -26.98,-7.442 -66.25,-14.871 -117.86,-22.313 -51.59,-7.437 -106.7,-11.156 -165.26,-11.156 -175.75,0 -304.05,15.117 -384.94,45.328 -80.89,30.219 -128.79,68.11 -143.66,113.66 -11.15,34.41 -3.48,63.461 23.02,87.168 26.51,23.711 73.22,41.153 140.16,52.293 25.11,4.668 66.25,8.379 123.43,11.18 57.18,2.789 94.6,5.559 112.28,8.359 37.17,3.731 62.05,8.36 74.62,13.95 12.54,5.582 16.95,13.941 13.24,25.109 -4.66,13.031 -19.76,22.793 -45.33,29.281 -25.59,6.52 -63,9.762 -112.26,9.762 -7.7,0 -15.13,-0.031 -22.42,-0.07 -18.46,-1 -38.57,-2.723 -57.91,-4.75 -20.6,-2.204 -41.18,-4.864 -61.61,-7.954 -40.9,-6.199 -81.32,-14.187 -120.58,-24.398 -39.21,-10.219 -77.34,-22.66 -112.6,-38.129 -4.74,-2.082 -9.31,-4.332 -13.93,-6.543 -24.76,39.781 -59.05,74.512 -102.7,103.961 22.59,10.852 45.39,19.762 68.07,27.422 45.2,15.059 90.34,25.199 135.25,32.66 44.94,7.41 89.7,12.027 134.31,14.719 22.31,1.32 44.6,2.14 66.91,2.48 19.67,0.262 38.82,0.192 59.02,-0.449 122.16,-0.73 223.18,-15.312 302.94,-43.859 81.8,-29.293 130.62,-68.102 146.44,-116.453 11.16,-33.481 4.41,-61.368 -20.22,-83.688 -24.66,-22.312 -68.13,-38.57 -130.4,-48.82 -28.83,-3.711 -57.68,-7.18 -86.47,-10.449 -28.84,-3.25 -55.33,-6.282 -79.51,-9.071 -95.77,-6.5 -149.24,-12.551 -160.39,-18.133 -11.16,-5.578 -14.88,-13.937 -11.16,-25.109 4.65,-12.078 21.62,-21.617 50.92,-28.578" style="fill:url(#linearGradient2)"/>
+ <path d="m 1728.38,1222.0417 c -60.91,-44.149 -159.23,-66.25 -294.98,-66.25 -135.77,0 -248.26,22.101 -337.52,66.25 -89.25,44.172 -144,104.152 -169.103,181.308 l -127.976,395.391 c -52.606,176.312 175.261,246.121 175.261,246.121 l 82.358,-267.18 c 5.92,-19.832 11.92,-39.64 17.81,-59.492 l 16.86,-55.308 c 6.03,-18.321 12.06,-36.622 18.49,-54.809 l 59.72,-163.109 14.29,-37.18 c 0.51,-1.723 0.99,-3.391 1.55,-5.133 8.36,-25.09 19.53,-47.18 33.47,-66.238 13.95,-19.051 30.69,-34.172 50.21,-45.34 18.59,-11.152 38.82,-19.039 60.67,-23.711 21.83,-4.641 46.25,-6.961 73.22,-6.961 22.31,0 43.25,2.082 62.77,6.27 19.52,4.191 34.38,11.863 44.63,23.011 13.01,12.09 20.68,26.5 23.01,43.231 2.3,16.75 -1.18,39.988 -10.46,69.738 -9.31,27.902 -21.17,51.16 -35.57,69.731 -14.42,18.628 -30.91,33.48 -49.51,44.64 -18.61,11.149 -39.04,19.309 -61.36,24.41 -22.31,5.11 -45.58,7.66 -69.73,7.66 -24.2,0 -44.87,-2.082 -62.07,-6.269 -17.21,-4.191 -33.26,-11.852 -48.13,-23.02 -1.12,-1.121 -2,-2.472 -3.04,-3.66 l -36.74,106.578 c -2.06,6.141 -4.03,12.282 -6.01,18.422 34.79,7.078 75.07,11.301 121.11,12.559 136.68,0 249.65,-22.309 338.93,-66.942 89.25,-44.636 146.43,-105.519 171.54,-182.718 25.11,-77.16 7.18,-137.828 -53.7,-182" style="fill:url(#linearGradient2)"/>
+</svg> \ No newline at end of file
diff --git a/app/cdn/icons/pause-filled.png b/app/cdn/icons/pause-filled.png
new file mode 100644
index 0000000..01c3a52
--- /dev/null
+++ b/app/cdn/icons/pause-filled.png
Binary files differ
diff --git a/app/cdn/icons/pause-symbolic.png b/app/cdn/icons/pause-symbolic.png
new file mode 100644
index 0000000..99b9d7e
--- /dev/null
+++ b/app/cdn/icons/pause-symbolic.png
Binary files differ
diff --git a/app/cdn/icons/pip.png b/app/cdn/icons/pip.png
new file mode 100644
index 0000000..3f9a6bf
--- /dev/null
+++ b/app/cdn/icons/pip.png
Binary files differ
diff --git a/app/cdn/icons/play-filled.png b/app/cdn/icons/play-filled.png
new file mode 100644
index 0000000..823cf38
--- /dev/null
+++ b/app/cdn/icons/play-filled.png
Binary files differ
diff --git a/app/cdn/icons/play-symbolic.png b/app/cdn/icons/play-symbolic.png
new file mode 100644
index 0000000..289f629
--- /dev/null
+++ b/app/cdn/icons/play-symbolic.png
Binary files differ
diff --git a/app/cdn/icons/radio-filled.png b/app/cdn/icons/radio-filled.png
new file mode 100644
index 0000000..b952384
--- /dev/null
+++ b/app/cdn/icons/radio-filled.png
Binary files differ
diff --git a/app/cdn/icons/radio-symbolic.png b/app/cdn/icons/radio-symbolic.png
new file mode 100644
index 0000000..5003c35
--- /dev/null
+++ b/app/cdn/icons/radio-symbolic.png
Binary files differ
diff --git a/app/cdn/icons/radio.png b/app/cdn/icons/radio.png
new file mode 100644
index 0000000..6891474
--- /dev/null
+++ b/app/cdn/icons/radio.png
Binary files differ
diff --git a/app/cdn/icons/settings-filled.png b/app/cdn/icons/settings-filled.png
new file mode 100644
index 0000000..f9aeffe
--- /dev/null
+++ b/app/cdn/icons/settings-filled.png
Binary files differ
diff --git a/app/cdn/icons/settings-symbolic.png b/app/cdn/icons/settings-symbolic.png
new file mode 100644
index 0000000..fe7a7e7
--- /dev/null
+++ b/app/cdn/icons/settings-symbolic.png
Binary files differ
diff --git a/app/cdn/icons/settings.png b/app/cdn/icons/settings.png
new file mode 100644
index 0000000..da4dd81
--- /dev/null
+++ b/app/cdn/icons/settings.png
Binary files differ
diff --git a/app/cdn/icons/share-filled.png b/app/cdn/icons/share-filled.png
new file mode 100644
index 0000000..956d7d6
--- /dev/null
+++ b/app/cdn/icons/share-filled.png
Binary files differ
diff --git a/app/cdn/icons/share-symbolic.png b/app/cdn/icons/share-symbolic.png
new file mode 100644
index 0000000..dd273e4
--- /dev/null
+++ b/app/cdn/icons/share-symbolic.png
Binary files differ
diff --git a/app/cdn/icons/share.png b/app/cdn/icons/share.png
new file mode 100644
index 0000000..66b2f45
--- /dev/null
+++ b/app/cdn/icons/share.png
Binary files differ
diff --git a/app/cdn/icons/solve-filled.png b/app/cdn/icons/solve-filled.png
new file mode 100644
index 0000000..e5fcbbb
--- /dev/null
+++ b/app/cdn/icons/solve-filled.png
Binary files differ
diff --git a/app/cdn/icons/solve-symbolic.png b/app/cdn/icons/solve-symbolic.png
new file mode 100644
index 0000000..eb94636
--- /dev/null
+++ b/app/cdn/icons/solve-symbolic.png
Binary files differ
diff --git a/app/cdn/icons/solve.png b/app/cdn/icons/solve.png
new file mode 100644
index 0000000..e55fd0a
--- /dev/null
+++ b/app/cdn/icons/solve.png
Binary files differ
diff --git a/app/cdn/icons/speaker.png b/app/cdn/icons/speaker.png
new file mode 100644
index 0000000..0d297ea
--- /dev/null
+++ b/app/cdn/icons/speaker.png
Binary files differ
diff --git a/app/cdn/icons/window-close.png b/app/cdn/icons/window-close.png
new file mode 100644
index 0000000..648e661
--- /dev/null
+++ b/app/cdn/icons/window-close.png
Binary files differ
diff --git a/app/cdn/icons/window-maximize.png b/app/cdn/icons/window-maximize.png
new file mode 100644
index 0000000..da48657
--- /dev/null
+++ b/app/cdn/icons/window-maximize.png
Binary files differ
diff --git a/app/cdn/icons/window-minimize.png b/app/cdn/icons/window-minimize.png
new file mode 100644
index 0000000..8a4716e
--- /dev/null
+++ b/app/cdn/icons/window-minimize.png
Binary files differ
diff --git a/app/cdn/icons/window-reduce.png b/app/cdn/icons/window-reduce.png
new file mode 100644
index 0000000..8093d6e
--- /dev/null
+++ b/app/cdn/icons/window-reduce.png
Binary files differ
diff --git a/app/cdn/intro.jpg b/app/cdn/intro.jpg
new file mode 100644
index 0000000..0f13c73
--- /dev/null
+++ b/app/cdn/intro.jpg
Binary files differ
diff --git a/app/cdn/intro.psd b/app/cdn/intro.psd
new file mode 100644
index 0000000..f9b50ac
--- /dev/null
+++ b/app/cdn/intro.psd
Binary files differ
diff --git a/app/cdn/js/home.js b/app/cdn/js/home.js
new file mode 100644
index 0000000..d875860
--- /dev/null
+++ b/app/cdn/js/home.js
@@ -0,0 +1,12 @@
+setInterval(() => {
+ window.fetch("/app/radio/song.php").then((raw) => {
+ raw.text().then((text) => {
+ document.getElementById('radio-now').innerText = text;
+ })
+ })
+ window.fetch("/app/radio/next.php").then((raw) => {
+ raw.text().then((text) => {
+ document.getElementById('radio-next').innerText = text;
+ })
+ })
+}, 2000) \ No newline at end of file
diff --git a/app/cdn/js/iframe.js b/app/cdn/js/iframe.js
new file mode 100644
index 0000000..a031872
--- /dev/null
+++ b/app/cdn/js/iframe.js
@@ -0,0 +1,48 @@
+function iframeURLChange(iframe, callback) {
+ var unloadHandler = function () {
+ setTimeout(function () {
+ callback(iframe.contentWindow.location.href);
+ }, 0);
+ };
+
+ function attachUnload() {
+ iframe.contentWindow.removeEventListener("pagehide", unloadHandler);
+ iframe.contentWindow.addEventListener("pagehide", unloadHandler);
+ iframe.contentWindow.removeEventListener("unload", unloadHandler);
+ iframe.contentWindow.addEventListener("unload", unloadHandler);
+ }
+
+ iframe.addEventListener("load", attachUnload);
+ attachUnload();
+}
+
+Array.from(document.getElementsByTagName("iframe")).forEach((par) => {
+ iframeURLChange(par, function (newURL) {
+ $(".loader").fadeIn(200);
+ });
+})
+
+function unload() {
+ $(".loader").fadeIn(200);
+}
+
+Array.from(document.getElementsByTagName("iframe")).forEach((par) => {
+ par.onbeforeunload = unload
+})
+
+function loaded () {
+ $(".loader").fadeOut(200);
+
+ setTimeout(() => {
+ $(".loader").fadeOut(200);
+ }, 300)
+
+ setTimeout(() => {
+ $(".loader").fadeOut(200);
+ }, 1500);
+}
+
+Array.from(document.getElementsByTagName("iframe")).forEach((par) => {
+ par.onload = loaded;
+ par.onabort = loaded;
+}) \ No newline at end of file
diff --git a/app/cdn/js/loading.js b/app/cdn/js/loading.js
new file mode 100644
index 0000000..b3970de
--- /dev/null
+++ b/app/cdn/js/loading.js
@@ -0,0 +1,32 @@
+document.onreadystatechange = function(e) {
+ if (document.readyState == "interactive") {
+ var all = document.getElementsByTagName("*");
+ for (var i = 0, max = all.length; i < max; i++) {
+ set_ele(all[i]);
+ }
+ }
+}
+
+function check_element(ele) {
+ var all = document.getElementsByTagName("*");
+ var totalele = all.length;
+ var per_inc = 100 / all.length;
+
+ if ($(ele).on()) {
+ var prog_width = per_inc + Number(document.getElementById("progress_width").value);
+ document.getElementById("progress_width").value = prog_width;
+ $("#bar1").animate({
+ width: prog_width + "%"
+ }, 10, function() {
+ if (document.getElementById("bar1").style.width === "100%") {
+ $(".progress").fadeOut("slow");
+ }
+ });
+ } else {
+ set_ele(ele);
+ }
+}
+
+function set_ele(set_element) {
+ check_element(set_element);
+} \ No newline at end of file
diff --git a/app/cdn/js/navigation.js b/app/cdn/js/navigation.js
new file mode 100644
index 0000000..b4d1dbe
--- /dev/null
+++ b/app/cdn/js/navigation.js
@@ -0,0 +1,110 @@
+window.addEventListener('load', () => {
+ document.getElementById('loading').style.display = "none";
+})
+
+function setImageSource(image, source) {
+ if (image.src !== source) {
+ image.src = source;
+ }
+}
+
+doCheckForActiveItem = true;
+
+Array.from(document.getElementsByClassName("tab")).forEach((par) => {
+ item = par.children[0];
+ if (typeof item.getAttribute("data-image-hover") === "string") {
+ item.setAttribute("data-image-normal", item.src)
+ par.addEventListener('mouseenter', (e) => {
+ doCheckForActiveItem = false;
+
+ if (e.target.classList.contains("tab-active")) {
+ item = e.target.children[0];
+ item.style.opacity = ".75";
+ } else {
+ item = e.target.children[0];
+ setImageSource(item, item.getAttribute("data-image-hover"));
+ }
+ })
+ par.addEventListener('mouseleave', (e) => {
+ doCheckForActiveItem = true;
+
+ if (e.target.classList.contains("tab-active")) {
+ item = e.target.children[0];
+ item.style.opacity = "1";
+ } else {
+ item = e.target.children[0];
+ setImageSource(item, item.getAttribute("data-image-normal"));
+ }
+ })
+ }
+})
+
+setInterval(() => {
+ Array.from(document.getElementsByClassName("tab")).forEach((par) => {
+ if (!doCheckForActiveItem) { return; }
+ item = par.children[0];
+ if (par.classList.contains("tab-active")) {
+ setImageSource(item, item.getAttribute("data-image-active"));
+ } else {
+ setImageSource(item, item.getAttribute("data-image-normal"));
+ }
+ })
+}, 100)
+
+function openTab(tab) {
+ Array.from(document.getElementsByClassName("tab")).forEach((par) => {
+ if (par.classList.contains("tab-active")) {
+ par.classList.remove("tab-active");
+ }
+ })
+ document.getElementById('tab-' + tab).classList.add("tab-active");
+ doCheckForActiveItem = true;
+}
+
+function openPane(pane) {
+ Array.from(document.getElementsByTagName("iframe")).forEach((par) => {
+ par.src = "about:blank";
+ })
+ Array.from(document.getElementsByClassName("pane")).forEach((par) => {
+ $("#" + par.id).fadeOut(200);
+ })
+ $("#pane-" + pane).fadeIn(200);
+ $(".loader").fadeIn(200);
+ switch (pane) {
+ case "radio":
+ document.getElementById('frame-' + pane).src = "/app/radio"
+ break;
+ case "money":
+ document.getElementById('frame-' + pane).src = "/app/money"
+ break;
+ case "contacts":
+ document.getElementById('frame-' + pane).src = "/app/contacts"
+ break;
+ case "home":
+ document.getElementById('frame-' + pane).src = "/app/home"
+ break;
+ case "space":
+ if (navigator.userAgent.includes("+Familine/")) {
+ $(".loader").fadeOut(200);
+ document.getElementById('frame-' + pane).loadURL("https://chat.familine.minteck.org");
+ document.getElementById('frame-' + pane).setZoomFactor(0.9);
+ break;
+ } else {
+ document.getElementById('frame-' + pane).src = "/app/space"
+ break;
+ }
+ case "cinema":
+ document.getElementById('frame-' + pane).src = "https://cinema.familine.minteck.org"
+ break;
+ case "share":
+ document.getElementById('frame-' + pane).src = "https://share.familine.minteck.org"
+ break;
+ case "help":
+ document.getElementById('frame-' + pane).src = "/app/help"
+ break;
+ }
+}
+
+window.addEventListener('load', () => {
+ try { openPane('home'); } catch (e) {}
+}) \ No newline at end of file
diff --git a/app/cdn/js/statusbar.js b/app/cdn/js/statusbar.js
new file mode 100644
index 0000000..210653e
--- /dev/null
+++ b/app/cdn/js/statusbar.js
@@ -0,0 +1,4 @@
+window.addEventListener("load", () => {
+ window.fetch("/statusbar.php").then((a) => {a.text().then((b) => {document.body.innerHTML=document.body.innerHTML+b;document.getElementById("statusbar").classList.add("desktop");})});
+ $(".progress").fadeOut("slow");
+}) \ No newline at end of file
diff --git a/app/cdn/me/index.php b/app/cdn/me/index.php
new file mode 100644
index 0000000..b6d2b06
--- /dev/null
+++ b/app/cdn/me/index.php
@@ -0,0 +1,6 @@
+<?php
+
+require_once "/mnt/familine/app/session.php";
+
+header("Location: https://account.familine.minteck.org/hub/api/rest/avatar/$_PROFILE[id]?dpr=2&size=64");
+die(); \ No newline at end of file
diff --git a/app/cdn/statusbar.php b/app/cdn/statusbar.php
new file mode 100644
index 0000000..42cef9d
--- /dev/null
+++ b/app/cdn/statusbar.php
@@ -0,0 +1,194 @@
+<?php
+
+global $_CONFIG;
+$_CONFIG = json_decode(file_get_contents("/mnt/familine/private/FamilineConfig.json"), true);
+
+if (isset($_COOKIE['FL_SESSION_TOKEN'])) {
+ if (file_exists("/mnt/familine/private/tokens/" . str_replace(".", "", str_replace("/", "", $_COOKIE['FL_SESSION_TOKEN'])))) {
+ $_PROFILE = json_decode(file_get_contents("/mnt/familine/private/tokens/" . str_replace(".", "", str_replace("/", "", $_COOKIE['FL_SESSION_TOKEN']))), true);
+
+ if (isset($_PROFILE['familine'])) {
+ header("Location: https://" . $_CONFIG["Global"]["domain"] . "/login/?r=" . urlencode("https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"));
+ die();
+ }
+
+ $_USER = $_PROFILE['login'];
+ $_SUID = $_PROFILE['login'];
+ $_FULLNAME = $_PROFILE['name'];
+ } else {
+ header("Location: https://" . $_CONFIG["Global"]["domain"] . "/login/?r=" . urlencode("https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"));
+ die();
+ }
+} else {
+ header("Location: https://" . $_CONFIG["Global"]["domain"] . "/login/?r=" . urlencode("https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"));
+ die();
+}
+
+if (isset($_PROFILE["projectRoles"]) && is_array($_PROFILE["projectRoles"]) && isset($_PROFILE["projectRoles"][0]) && is_array($_PROFILE["projectRoles"][0]) && isset($_PROFILE["projectRoles"][0]["role"]) && is_array($_PROFILE["projectRoles"][0]["role"]) && isset($_PROFILE["projectRoles"][0]["role"]["key"]) && is_string($_PROFILE["projectRoles"][0]["role"]["key"]) && $_PROFILE["projectRoles"][0]["role"]["key"] === "system-admin") {
+ $_ADMIN = true;
+} else {
+ $_ADMIN = false;
+}
+
+?>
+
+<!DOCTYPE html>
+<html>
+<head>
+ <title>frame</title>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="/favicon.svg">
+ <link rel="stylesheet" href="/styles.css">
+</head>
+
+<body>
+ <style>
+ /* Statusbar */
+ #statusbar {
+ background: whitesmoke;
+ padding: 8px 32px;
+ font-size: 14px;
+ z-index: 99;
+ position: fixed;
+ top: 0;
+ right: 0;
+ left: 0;
+ color: black;
+ }
+
+ #statusbar-tag {
+ opacity: .5;
+ }
+
+ .logo:hover {
+ background: rgba(0, 0, 0, .25);
+ }
+
+ .logo:active {
+ background: rgba(0, 0, 0, .5);
+ }
+
+ .logo {
+ cursor: pointer;
+ color: black;
+ }
+
+ .account:hover {
+ background: rgba(0, 0, 0, .25);
+ }
+
+ .account:active {
+ background: rgba(0, 0, 0, .5);
+ }
+
+ .account {
+ cursor: pointer;
+ color: black;
+ }
+
+ @media (prefers-color-scheme: dark) {
+ .account {
+ color: white;
+ }
+
+ .logo {
+ color: white;
+ }
+ }
+
+ @media (max-width: 800px) {
+ #apps-desktop {
+ display: none;
+ }
+
+ #statusbar {
+ text-align: center;
+ }
+ }
+
+ @media (max-width: 1100px) {
+ #copyright, #user-name {
+ display: none;
+ }
+ }
+
+ .statusbar-drag-region {
+ -webkit-app-region: drag;
+ }
+
+ #statusbar-drag-region-01 {
+ left: 348px;
+ position: fixed;
+ top: 0;
+ /*background: rgba(255, 0, 0, 0.5);*/
+ height: 36px;
+ right: 70px;
+ }
+
+ #statusbar-drag-region-02 {
+ left: 0;
+ position: fixed;
+ top: 0;
+ /*background: rgba(255, 0, 0, 0.5);*/
+ height: 36px;
+ right: unset;
+ width: 32px;
+ }
+
+ #statusbar-drag-region-03 {
+ left: unset;
+ position: fixed;
+ top: 0;
+ /*background: rgba(255, 0, 0, 0.5);*/
+ height: 36px;
+ right: 0;
+ width: 32px;
+ }
+
+ #statusbar.desktop #statusbar-drag-region-01 {
+ left: 118px;
+ }
+
+ @media (min-width: 1101px) {
+ #statusbar-drag-region-01 {
+ right: 154px;
+ }
+ }
+ </style>
+ <div id="statusbar">
+ <div class="statusbar-drag-region" id="statusbar-drag-region-01"></div>
+ <div class="statusbar-drag-region" id="statusbar-drag-region-02"></div>
+ <div class="statusbar-drag-region" id="statusbar-drag-region-03"></div>
+ <a title="Accueil de Familine" href="https://app.<?= $_CONFIG["Global"]["domain"] ?>" target="_parent"><span class="logo" style="display: inline-block;top: 0;position: relative;padding: 8px 7px 7px 7px;margin: -11px 0;"><img src="https://<?= $_CONFIG["Global"]["cdn"] ?>/favicon.svg" style="width: 16px;vertical-align: middle;position: relative;top: -2px;"> Familine</span></a>
+ <span id="apps-desktop" <?= $_SERVER['HTTP_REFERER'] === "https://app." . $_CONFIG["Global"]["domain"] . "/" ? "style=\"display: none;\"" : "" ?>><span style="opacity: .25;">|</span><a style="text-decoration: none;" title="Familine Pages" href="https://docs.<?= $_CONFIG["Global"]["domain"] ?>" target="_parent">
+ <span class="logo" style="display: inline-block;top: -2px;position: relative;padding: 6px 2px 7px 2px;margin: -11px 0;"><img src="https://<?= $_CONFIG["Global"]["cdn"] ?>/icns/familine-docs.svg" style="width: 20px;vertical-align: middle;"></span></a><a style="text-decoration: none;" title="Familine Aide" href="https://support.<?= $_CONFIG["Global"]["domain"] ?>" target="_parent">
+ <span class="logo" style="display: inline-block;top: -2px;position: relative;padding: 6px 2px 7px 2px;margin: -11px 0;"><img src="https://<?= $_CONFIG["Global"]["cdn"] ?>/icns/familine-help.svg" style="width: 20px;vertical-align: middle;"></span></a><a style="text-decoration: none;" title="Familine Média" href="https://media.<?= $_CONFIG["Global"]["domain"] ?>" target="_parent">
+ <span class="logo" style="display: inline-block;top: -2px;position: relative;padding: 6px 2px 7px 2px;margin: -11px 0;"><img src="https://<?= $_CONFIG["Global"]["cdn"] ?>/icns/familine-media.svg" style="width: 20px;vertical-align: middle;"></span></a><!--<a style="text-decoration: none;" title="Familine Planning" href="https://planning.<?= $_CONFIG["Global"]["domain"] ?>" target="_parent">
+ <span class="logo" style="display: inline-block;top: -2px;position: relative;padding: 6px 2px 7px 2px;margin: -11px 0;"><img src="https://<?= $_CONFIG["Global"]["cdn"] ?>/icns/familine-planning.svg" style="width: 20px;vertical-align: middle;"></span></a>--><a style="text-decoration: none;" title="Familine Généalogie" href="https://genealogy.<?= $_CONFIG["Global"]["domain"] ?>" target="_parent">
+ <span class="logo" style="display: inline-block;top: -2px;position: relative;padding: 6px 2px 7px 2px;margin: -11px 0;"><img src="https://<?= $_CONFIG["Global"]["cdn"] ?>/icns/familine-recall.svg" style="width: 20px;vertical-align: middle;"></span></a><a style="text-decoration: none;" title="Familine Partage" href="https://share.<?= $_CONFIG["Global"]["domain"] ?>" target="_parent">
+ <span class="logo" style="display: inline-block;top: -2px;position: relative;padding: 6px 2px 7px 2px;margin: -11px 0;"><img src="https://<?= $_CONFIG["Global"]["cdn"] ?>/icns/familine-share.svg" style="width: 20px;vertical-align: middle;"></span></a><a style="text-decoration: none;" title="Familine Discussions" href="https://chat.<?= $_CONFIG["Global"]["domain"] ?>" target="_parent">
+ <span class="logo" style="display: inline-block;top: -2px;position: relative;padding: 6px 2px 7px 2px;margin: -11px 0;"><img src="https://<?= $_CONFIG["Global"]["cdn"] ?>/icns/familine-you.svg" style="width: 20px;vertical-align: middle;"></span></a>
+ </span>
+ <div id="user">
+ <a title="Mon compte" href="https://auth.<?= $_CONFIG["Global"]["domain"] ?>/auth/realms/Familine/account" target="_parent"><span class="account" style="display: inline-block;top: 0;position: relative;padding: 8px 7px 7px 7px;margin: -11px 0;">
+ <span id="user-name" style="position: relative;margin-left:5px;top: 2.5px;right: 5px;"><?= $_FULLNAME ?></span>
+ <img src="https://<?= $_CONFIG["Global"]["cdn"] ?>/me" alt="" style="width:24px;border-radius:999px;vertical-align: middle;position:relative;top: 2px;">
+ </span></a>
+ </div>
+ </div>
+
+ <script>
+ window.addEventListener('load', () => {
+ if (navigator.userAgent.includes("+FL4D")) {
+ console.log("Detected desktop app");
+ document.getElementsByClassName("account")[0].parentElement.onclick = (e) => {
+ e.preventDefault();
+ open(document.getElementsByClassName("account")[0].parentElement.href);
+ return false;
+ };
+ }
+ })
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/app/cdn/styles.css b/app/cdn/styles.css
new file mode 100644
index 0000000..f06d321
--- /dev/null
+++ b/app/cdn/styles.css
@@ -0,0 +1,337 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022- Minteck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+/* Dark Theme */
+@import "../../dark.css";
+
+@font-face {
+ font-family: "Nunito";
+ src: url("/fonts/Nunito-VariableFont_wght.ttf");
+ font-weight: 125 950;
+ font-stretch: 75% 125%;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: "Nunito";
+ src: url("/fonts/Nunito-Italic-VariableFont_wght.ttf");
+ font-weight: 125 950;
+ font-stretch: 75% 125%;
+ font-style: italic;
+}
+
+* {
+ font-family: "Nunito", sans-serif !important;
+}
+
+html, body {
+ margin: 0;
+ padding: 0;
+}
+
+#copyright {
+ float: right;
+ vertical-align: middle;
+ display: inline-block;
+ position: fixed;
+ top: 8px;
+ opacity: .5;
+ right: 32px;
+}
+
+#user {
+ float: right;
+ vertical-align: middle;
+ display: inline-block;
+ position: fixed;
+ top: 5px;
+ right: 32px;
+}
+
+/* Loader */
+#loading {
+ position: fixed;
+ top: 0;
+ right: 0;
+ left: 0;
+ bottom: 0;
+ z-index: 999999;
+ background: #222;
+ color: white;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+
+}
+
+.progress {
+ position: fixed;
+ left: 35%;
+ top: 65%;
+ height: 5px;
+ z-index: 99999999;
+ background-color: rgba(255, 255, 255, .25);
+ right: 35%;
+ border-radius: 1000px;
+}
+
+.bar {
+ background-color: rgba(255, 255, 255, .25);
+ width: 0%;
+ height: 5px;
+ border-radius: 1000px;
+}
+
+.percent {
+ position: absolute;
+ display: inline-block;
+ top: 3px;
+ left: 48%;
+}
+
+/* Tabs */
+#tabs {
+ background: whitesmoke;
+ display: grid;
+ grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
+ width: 100vw;
+}
+
+#tabs img {
+ width: 36px;
+ vertical-align: middle;
+ filter: invert(0);
+ transition: width 200ms, filter 200ms;
+}
+
+#tabs .tab {
+ border-bottom: 1px solid;
+ border-bottom-color: transparent;
+ text-align: center;
+ margin: 8px 8px 0;
+ padding-bottom: 8px;
+ cursor: pointer;
+ height: 48px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ transition: border-bottom-color 200ms;
+}
+
+#tabs .tab.tab-active img {
+ width: 48px;
+}
+
+#tabs .tab.tab-active {
+ border-bottom-color: black;
+}
+
+#panes, .pane {
+ position: fixed;
+ top: 98px;
+ left: 0;
+ right: 0;
+ bottom: 0;
+}
+
+.pane {
+ display: none;
+}
+
+/* IFrame */
+.loader {
+ background: rgba(255, 255, 255, .75);
+ top: 98px;
+ bottom: 0;
+ position: fixed;
+ left: 0;
+ right: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ z-index: 999999;
+ cursor: wait;
+}
+
+.loader img {
+ height: 96px;
+ width: 96px;
+}
+
+.frame {
+ border: none;
+ width: 100%;
+ height: 100%;
+}
+
+/* Home */
+.home-grid {
+ display: grid;
+ grid-template-columns: 96px 1fr;
+ grid-column-gap: 10px;
+}
+
+.home-grid > * {
+ display: flex;
+ align-items: center;
+}
+
+/* Bootstrap Fixes */
+.dropdown-item {
+ cursor: pointer;
+}
+
+.list-group {
+ margin-bottom: 10px !important;
+}
+
+/* Responsiveness */
+@media (max-width: 550px) {
+ #copyright {
+ display: none;
+ }
+}
+
+#explore {
+ text-align: center;
+ height: max-content;
+ margin-top: 32px;
+ padding-top: 25vh;
+ padding-bottom: 5vh;
+ background-color: rgba(0, 0, 0, .5);
+}
+
+#explore-outer {
+ background-image: url("/intro.jpg");
+ background-size: cover;
+ background-position: center;
+ background-attachment: fixed;
+}
+
+#explore-grid {
+ margin-left: auto;
+ margin-right: auto;
+ width: max-content;
+ display: grid;
+ grid-template-columns: 120px 120px 120px 120px 120px 120px 120px 120px 120px;
+}
+
+#explore-grid.admin {
+ grid-template-columns: 120px 120px 120px 120px 120px 120px 120px 120px 120px 120px;
+}
+
+@media (max-width: 800px) {
+ .explore-description {
+ display: none !important;
+ }
+
+ #explore-grid {
+ display: grid;
+ grid-template-columns: 120px 120px;
+ }
+
+ #explore-grid.admin {
+ grid-template-columns: 120px 120px 120px;
+ }
+}
+
+.explore-btn {
+ color: white;
+ border-radius: 5px;
+ padding: 5px;
+ text-align: left;
+ display: block;
+ text-decoration: none;
+ border: 1px solid transparent;
+}
+
+.explore-btn:hover {
+ background: rgba(255, 255, 255, .25);
+ border: 1px solid gray;
+ backdrop-filter: blur(5px);
+ -webkit-backdrop-filter: blur(5px);
+}
+
+.explore-btn:active, .explore-btn:focus {
+ background: rgba(255, 255, 255, .5);
+ border: 1px solid white;
+ -webkit-backdrop-filter: blur(5px);
+}
+
+.explore-btn {
+ color: white !important;
+ text-decoration: none !important;
+}
+
+.explore-btn:hover {
+ background: rgba(0, 0, 0, 0.25);
+ box-shadow: 1px 5px 12px rgba(0, 0, 0, 0.25);
+}
+
+.explore-btn:active, .explore-btn:focus {
+ background: rgba(0, 0, 0, .5);
+ box-shadow: 1px 5px 12px rgba(0, 0, 0, .5);
+}
+
+@media (prefers-color-scheme: light) {
+ #data-loader-img {
+ filter: none !important;
+ }
+}
+
+.explore-description {
+ color: white;
+ opacity: 0;
+ display: inline-block;
+ margin-left: 5px;
+}
+
+.explore-btn:hover .explore-description, .explore-btn:focus .explore-description, .explore-btn:active .explore-description {
+ opacity: .5 !important;
+}
+
+.jumbotron {
+ border: 1px solid #444;
+ background: #151515;
+ padding: 10px;
+}
+
+@media (prefers-color-scheme: light) {
+ .jumbotron {
+ border: 1px solid #ccc !important;
+ background: #eee !important;
+ padding: 10px !important;
+ }
+}
+
+.news-link {
+ color: inherit;
+ cursor: pointer;
+}
+
+.news-link:hover {
+ color: inherit;
+} \ No newline at end of file
diff --git a/app/galaxy/css/bootstrap-grid.css b/app/galaxy/css/bootstrap-grid.css
index 3f84daf..bf2181b 100644
--- a/app/galaxy/css/bootstrap-grid.css
+++ b/app/galaxy/css/bootstrap-grid.css
@@ -1,26 +1,8 @@
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
+/*!
+ * Bootstrap Grid v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
html {
box-sizing: border-box;
diff --git a/app/galaxy/css/bootstrap-reboot.css b/app/galaxy/css/bootstrap-reboot.css
index 3f08dea..d317435 100644
--- a/app/galaxy/css/bootstrap-reboot.css
+++ b/app/galaxy/css/bootstrap-reboot.css
@@ -1,26 +1,9 @@
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
+/*!
+ * Bootstrap Reboot v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
*::before,
diff --git a/app/galaxy/css/bootstrap.css b/app/galaxy/css/bootstrap.css
index 76c463f..9a54320 100644
--- a/app/galaxy/css/bootstrap.css
+++ b/app/galaxy/css/bootstrap.css
@@ -1,26 +1,8 @@
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
+/*!
+ * Bootstrap v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root {
--blue: #007bff;
diff --git a/app/galaxy/css/theme.css b/app/galaxy/css/theme.css
index 6be0e47..5c525a8 100644
--- a/app/galaxy/css/theme.css
+++ b/app/galaxy/css/theme.css
@@ -1,28 +1,3 @@
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
:root {
--primary-color: #a32178;
--shadow-color: rgba(255, 0, 221, 0.25);
diff --git a/app/galaxy/js/bootstrap.bundle.js b/app/galaxy/js/bootstrap.bundle.js
index e39c50f..f2df15a 100644
--- a/app/galaxy/js/bootstrap.bundle.js
+++ b/app/galaxy/js/bootstrap.bundle.js
@@ -1,27 +1,8 @@
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
+/*!
+ * Bootstrap v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery')) :
typeof define === 'function' && define.amd ? define(['exports', 'jquery'], factory) :
diff --git a/app/galaxy/js/bootstrap.js b/app/galaxy/js/bootstrap.js
index a440626..4eb9985 100644
--- a/app/galaxy/js/bootstrap.js
+++ b/app/galaxy/js/bootstrap.js
@@ -1,27 +1,8 @@
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
+/*!
+ * Bootstrap v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
diff --git a/app/galaxy/private/footer.php b/app/galaxy/private/footer.php
index 0e6e65c..5fd824d 100644
--- a/app/galaxy/private/footer.php
+++ b/app/galaxy/private/footer.php
@@ -1,7 +1,7 @@
<script>
<?php global $_CONFIG; ?>console.log("Injecting Familine header")
document.body.innerHTML = document.body.innerHTML + "<iframe style=\"position:fixed;left:0;right:0;top:0;border: none;width: 100%;height:32px;\" src=\"https://<?= /** @var array $_CONFIG */
- $_CONFIG["Global"]["domain"] ?>/statusbar.php\"></iframe>";
+ $_CONFIG["Global"]["cdn"] ?>/statusbar.php\"></iframe>";
document.getElementsByTagName("html")[0].style.marginTop = "32px";
document.getElementsByTagName("html")[0].style.height = "calc(100vh - 32px)";
</script>
diff --git a/app/galaxy/private/header.php b/app/galaxy/private/header.php
index 949767b..37279b6 100644
--- a/app/galaxy/private/header.php
+++ b/app/galaxy/private/header.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
@@ -60,7 +36,7 @@ if (!isset($_TITLE)) {
<link rel="stylesheet" href="/css/bootstrap.min.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<script src="/js/bootstrap.bundle.min.js"></script>
- <link rel="icon" href="https://<?= $_CONFIG["Global"]["domain"] ?>/icns/familine-galaxy.svg">
+ <link rel="icon" href="https://<?= $_CONFIG["Global"]["cdn"] ?>/icns/familine-galaxy.svg">
</head>
<body>
<nav class="navbar navbar-expand-sm bg-light navbar-light">
diff --git a/app/genealogy/.gitlab-ci.yml b/app/genealogy/.gitlab-ci.yml
index 4402674..e2c9e0e 100644
--- a/app/genealogy/.gitlab-ci.yml
+++ b/app/genealogy/.gitlab-ci.yml
@@ -1,15 +1,15 @@
-# Generic Minteck GitLab CI/CD Checks
-# PHP applications
-image: php:zts-buster
-
-cache:
- paths:
- - vendor/
-
-before_script:
- - apt-get update
- - apt-get install -y git
-
-test:
- script:
- - bash -c '[[ $(find . -name \*.php -exec php -l {} \; | grep -v "No syntax errors") ]] && exit 2 || exit 0'
+# Generic Minteck GitLab CI/CD Checks
+# PHP applications
+image: php:zts-buster
+
+cache:
+ paths:
+ - vendor/
+
+before_script:
+ - apt-get update
+ - apt-get install -y git
+
+test:
+ script:
+ - bash -c '[[ $(find . -name \*.php -exec php -l {} \; | grep -v "No syntax errors") ]] && exit 2 || exit 0'
diff --git a/app/genealogy/LICENSE b/app/genealogy/LICENSE
index 318113a..41b02f6 100644
--- a/app/genealogy/LICENSE
+++ b/app/genealogy/LICENSE
@@ -1,21 +1,21 @@
-MIT License
-
-Copyright (c) 2021- Minteck
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+MIT License
+
+Copyright (c) 2021- Minteck
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/app/genealogy/dllib/jquery.flexdatalist.css b/app/genealogy/dllib/jquery.flexdatalist.css
index bfe2704..03e1b9c 100644
--- a/app/genealogy/dllib/jquery.flexdatalist.css
+++ b/app/genealogy/dllib/jquery.flexdatalist.css
@@ -1,28 +1,3 @@
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
/**
* jQuery Flexdatalist basic stylesheet.
*
diff --git a/app/genealogy/dllib/jquery.flexdatalist.js b/app/genealogy/dllib/jquery.flexdatalist.js
index 68101b4..6fef98b 100644
--- a/app/genealogy/dllib/jquery.flexdatalist.js
+++ b/app/genealogy/dllib/jquery.flexdatalist.js
@@ -1,28 +1,3 @@
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
/**
* jQuery Flexdatalist.
* Autocomplete input fields, with support for datalists.
diff --git a/app/genealogy/index.php b/app/genealogy/index.php
index 2101058..fa67073 100644
--- a/app/genealogy/index.php
+++ b/app/genealogy/index.php
@@ -14,32 +14,8 @@
<li class="list-group-item"><?= count($data); ?> personnes</li>
<li class="list-group-item">
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-$male = 0;
+
+ $male = 0;
$female = 0;
foreach ($data as $id => $person) {
if (isset($person["sex"])) {
diff --git a/app/genealogy/me/index.php b/app/genealogy/me/index.php
index b9a81a5..0168181 100644
--- a/app/genealogy/me/index.php
+++ b/app/genealogy/me/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/person/index.php b/app/genealogy/person/index.php
index f93315f..c2b232e 100644
--- a/app/genealogy/person/index.php
+++ b/app/genealogy/person/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
setlocale(LC_ALL, 'fr_FR.UTF-8');
$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true);
diff --git a/app/genealogy/private/footer.php b/app/genealogy/private/footer.php
index 0e6e65c..5fd824d 100644
--- a/app/genealogy/private/footer.php
+++ b/app/genealogy/private/footer.php
@@ -1,7 +1,7 @@
<script>
<?php global $_CONFIG; ?>console.log("Injecting Familine header")
document.body.innerHTML = document.body.innerHTML + "<iframe style=\"position:fixed;left:0;right:0;top:0;border: none;width: 100%;height:32px;\" src=\"https://<?= /** @var array $_CONFIG */
- $_CONFIG["Global"]["domain"] ?>/statusbar.php\"></iframe>";
+ $_CONFIG["Global"]["cdn"] ?>/statusbar.php\"></iframe>";
document.getElementsByTagName("html")[0].style.marginTop = "32px";
document.getElementsByTagName("html")[0].style.height = "calc(100vh - 32px)";
</script>
diff --git a/app/genealogy/private/header.php b/app/genealogy/private/header.php
index 3cc3b31..95799bb 100644
--- a/app/genealogy/private/header.php
+++ b/app/genealogy/private/header.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
@@ -114,7 +90,7 @@ $data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="/styles/common.css">
- <link rel="icon" href="https://<?= $_CONFIG["Global"]["domain"] ?>/icns/familine-recall.svg">
+ <link rel="icon" href="https://<?= $_CONFIG["Global"]["cdn"] ?>/icns/familine-recall.svg">
</head>
<body>
<nav class="navbar navbar-expand-sm bg-light navbar-light">
diff --git a/app/genealogy/search/birth/data.json/index.php b/app/genealogy/search/birth/data.json/index.php
index 9ea89b4..851a14f 100644
--- a/app/genealogy/search/birth/data.json/index.php
+++ b/app/genealogy/search/birth/data.json/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/search/birth/results/index.php b/app/genealogy/search/birth/results/index.php
index ec6dad6..48c6392 100644
--- a/app/genealogy/search/birth/results/index.php
+++ b/app/genealogy/search/birth/results/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/search/city/data.json/index.php b/app/genealogy/search/city/data.json/index.php
index 53e4a45..e61fd04 100644
--- a/app/genealogy/search/city/data.json/index.php
+++ b/app/genealogy/search/city/data.json/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/search/city/results/index.php b/app/genealogy/search/city/results/index.php
index f4e8d0c..cbc0e66 100644
--- a/app/genealogy/search/city/results/index.php
+++ b/app/genealogy/search/city/results/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/search/death/data.json/index.php b/app/genealogy/search/death/data.json/index.php
index e003491..f1db1ae 100644
--- a/app/genealogy/search/death/data.json/index.php
+++ b/app/genealogy/search/death/data.json/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/search/death/results/index.php b/app/genealogy/search/death/results/index.php
index 08149a3..b3210d8 100644
--- a/app/genealogy/search/death/results/index.php
+++ b/app/genealogy/search/death/results/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/search/dept/data.json/index.php b/app/genealogy/search/dept/data.json/index.php
index c70951d..fb27645 100644
--- a/app/genealogy/search/dept/data.json/index.php
+++ b/app/genealogy/search/dept/data.json/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/search/dept/results/index.php b/app/genealogy/search/dept/results/index.php
index fc49ae4..3e09605 100644
--- a/app/genealogy/search/dept/results/index.php
+++ b/app/genealogy/search/dept/results/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/search/lastname/data.json/index.php b/app/genealogy/search/lastname/data.json/index.php
index 2d7ba03..a6c0daa 100644
--- a/app/genealogy/search/lastname/data.json/index.php
+++ b/app/genealogy/search/lastname/data.json/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/search/lastname/results/index.php b/app/genealogy/search/lastname/results/index.php
index dc35e5d..bfb80f7 100644
--- a/app/genealogy/search/lastname/results/index.php
+++ b/app/genealogy/search/lastname/results/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/search/marriage/data.json/index.php b/app/genealogy/search/marriage/data.json/index.php
index d97e47c..5e57689 100644
--- a/app/genealogy/search/marriage/data.json/index.php
+++ b/app/genealogy/search/marriage/data.json/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/search/marriage/results/index.php b/app/genealogy/search/marriage/results/index.php
index 238e284..618f060 100644
--- a/app/genealogy/search/marriage/results/index.php
+++ b/app/genealogy/search/marriage/results/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/search/name/data.json/index.php b/app/genealogy/search/name/data.json/index.php
index 68f963c..76ef273 100644
--- a/app/genealogy/search/name/data.json/index.php
+++ b/app/genealogy/search/name/data.json/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/search/name/results/index.php b/app/genealogy/search/name/results/index.php
index 88af890..b316ac0 100644
--- a/app/genealogy/search/name/results/index.php
+++ b/app/genealogy/search/name/results/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/search/state/data.json/index.php b/app/genealogy/search/state/data.json/index.php
index e3e928f..e0bad67 100644
--- a/app/genealogy/search/state/data.json/index.php
+++ b/app/genealogy/search/state/data.json/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/search/state/results/index.php b/app/genealogy/search/state/results/index.php
index ae53714..98e4c54 100644
--- a/app/genealogy/search/state/results/index.php
+++ b/app/genealogy/search/state/results/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
diff --git a/app/genealogy/style/tree_maker.css b/app/genealogy/style/tree_maker.css
index b86761c..2067e8d 100644
--- a/app/genealogy/style/tree_maker.css
+++ b/app/genealogy/style/tree_maker.css
@@ -1,28 +1,3 @@
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
.tree__container, #from_tree__container__step__card__first, .tree__container__branch {
display: flex;
flex-direction: row;
diff --git a/app/genealogy/styles/common.css b/app/genealogy/styles/common.css
index 292c788..2973aab 100644
--- a/app/genealogy/styles/common.css
+++ b/app/genealogy/styles/common.css
@@ -1,28 +1,3 @@
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
@import "dark.css";
@font-face {
diff --git a/app/genealogy/styles/dark.css b/app/genealogy/styles/dark.css
index 4fecf5b..20f5dce 100644
--- a/app/genealogy/styles/dark.css
+++ b/app/genealogy/styles/dark.css
@@ -1,28 +1,3 @@
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
@media (prefers-color-scheme: dark) {
nav.navbar {
diff --git a/app/genealogy/tree/index.php b/app/genealogy/tree/index.php
index d1a47f4..76e1ca1 100644
--- a/app/genealogy/tree/index.php
+++ b/app/genealogy/tree/index.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
setlocale(LC_ALL, 'fr_FR.UTF-8');
$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true);
diff --git a/app/genealogy/tree/mktree.php b/app/genealogy/tree/mktree.php
index f229a94..095de92 100644
--- a/app/genealogy/tree/mktree.php
+++ b/app/genealogy/tree/mktree.php
@@ -1,28 +1,4 @@
<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/private/data/people.json"), true);
diff --git a/app/intro/.DS_Store b/app/intro/.DS_Store
new file mode 100644
index 0000000..c7faaef
--- /dev/null
+++ b/app/intro/.DS_Store
Binary files differ
diff --git a/app/intro/conditions/index.php b/app/intro/conditions/index.php
new file mode 100644
index 0000000..ee0aa31
--- /dev/null
+++ b/app/intro/conditions/index.php
@@ -0,0 +1,104 @@
+<?php
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022- Minteck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+if (str_contains($_SERVER["HTTP_USER_AGENT"], "+AutomateCloud/")) {
+ header("Location: https://app.familine.minteck.org/");
+ die();
+}
+require_once $_SERVER["DOCUMENT_ROOT"] . "/session.php";
+global $loggedIn;
+?>
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="shortcut icon" href="https://cdn.familine.minteck.org/favicon.svg" type="image/svg+xml">
+ <title>Conditions d'accès | Familine</title>
+ <link rel="stylesheet" href="/stylesheet.css">
+</head>
+<body>
+ <header class="scrolled-force">
+ <nav id="main-nav" class="container">
+ <a id="nav-logo" href="/">
+ <img src="https://cdn.familine.minteck.org/favicon.svg" alt="Familine" id="nav-logo-img">
+ </a>
+
+ <span id="nav-links">
+ <a class="nav-link" href="https://minteck.org/legal/#/privacy">Confidentialité</a>
+ <a class="nav-link" href="https://minteck.org/legal/#/terms">Conditions d'utilisation</a>
+ <a class="nav-link" href="/conditions">Conditions d'accès</a>
+ <a class="nav-link" href="https://gitlab.minteck.org/explore/projects/topics/Familine">Code source</a>
+ </span>
+
+ <?php if (!$loggedIn): ?>
+ <a id="nav-aside" href="https://session.familine.minteck.org/login/?r=https%3A%2F%2Ffamiline.minteck.org%2F">
+ <span id="loggedin-action">Se connecter avec Familine</span>
+ </a>
+ <?php else: ?>
+ <a id="nav-aside" href="https://app.familine.minteck.org">
+ <img src="https://cdn.familine.minteck.org/me" id="loggedin-profile">
+ <span id="loggedin-name">&nbsp;<?= $_FULLNAME ?> &rsaquo;</span>
+ </a>
+ <?php endif; ?>
+ </nav>
+ </header>
+
+ <main>
+ <div id="skip-header"></div>
+ <div class="container" style="padding-top: 5px;">
+ <h1>Conditions d'accès aux services Familine hébergé par Minteck.org</h1>
+ <?php if ($loggedIn): ?>
+ <p class="text-muted">Vous êtes déjà connecté·e à Familine, vous avez par conséquent déjà accès à Familine ; cela signifie que vous respectez l'intégralité des conditions décrites dans ce document.</p>
+ <?php endif; ?>
+
+ <h2>Préambule</h2>
+ <p>Les suivantes conditions d'accès sont lues, comprises et acceptées par tous les utilisateurs de Familine, à partir du moment où ils et elles soumettent une demande de compte, et jusqu'à la révocation de leur accès à Familine (lorsqu'ils ou elles ne respectent plus les conditions requises).</p>
+ <p>Ces conditions ne s'appliquent que pour la version de Familine telle qu'elle est hébergée par Minteck.org. Familine est un logiciel libre que chacun peut héberger et utiliser librement et gratuitement, sous ses propres conditions, au sein de sa propre famille et avec son propre contenu ainsi que ses propres modifications.</p>
+
+ <h2>Période d'accès</h2>
+ <p>Votre accès à Familine vous est octroyé immédiatement après l'activation de votre compte par un administrateur. Certains services requièrent cependant un délai de jusqu'à 3 jours ouvrables avant de vous autoriser à effectuer des modifications ; mais votre accès en lecture uniquement est octroyé immédiatement.</p>
+ <p>Familine se réserve le droit, à n'importe quel moment, et sans donner de raison valable, de suspendre temporairement ou de façon permanente votre accès à Familine, occasionnant la suppression de toutes les données personelles présentes sur les différents services, et ce de façon irrémédiable. De plus, Familine se réserve le droit d'engager une procédure judiciaire dans l'éventualité d'un manquement aux lois en vigueur en France.</p>
+
+ <h2>Familine et les enfants de moins de 15 ans</h2>
+ <p>L'age de majorité numérique en France est 15 ans. C'est l'age à partir duquel un enfant devient responsable de ses donneés personnelles en ligne. De ce fait, sans autorisation parentale, un enfant de moins de 15 ans n'est pas autorisé à disposer de son propre compte Familine. Familine ne tient cependant pas compte de l'age de majorité numérique de votre pays de résidence, même s'il est supérieur à 15 ans.</p>
+ <p>Dans l'éventualité où Familine soupsconerait un utilisateur d'avoir moins de 15 ans et de ne pas disposer d'autorisation parentale, son compte pourrait être suspendu de façon permanente.</p>
+
+ <h2>Placement au sein de la famille</h2>
+ <p>Familine est réservé aux utilisateurs légalement ou usuellement proches des administrateurs de l'infrastructure Minteck.org, cela pourrait inclure les amis et membre de famille éloignée ou non biologique. Si aucun membre de la famille ne vous a dirigé vers Familine, il se pourrait que vous ne soyez pas autorisé·e à y accéder (cependant, il ne vous coûte rien d'essayer).</p>
+ <p>Afin de vérifier votre identité, Familine peut exiger que vous transmettiez une copie d'un document permettant de vérifier votre identité. Il vous est fortement déconseillé de transmettre une carte d'identité, et plutôt recommandé de transmettre un permis de conduire, une carte vitale, une carte de vote, un livret de Familine ou une carte bancaire dont vous masquez les numéros. Toute transmission de documents modifiés ou falsifiés fera l'objet de poursuites judiciaires.</p>
+
+ <h2>Abonnement additionnels</h2>
+ <p>Familine peut, par le biais de ses services, vous proposer des services additionnels payants qui permettent d'ajouter des fonctionnalités supplémentaires à la plateforme ou vous donner accès à du contenu supplémentaire exclusif.</p>
+ <p>Les personnes âgées de moins de 18 ans ne peuvent pas acheter d'abonnements payants sans autorisation préalable de leur·s parent·s ou responsable·s légal. De plus, le paiement ne peut s'effectuer uniquement en main propre pour des raisons personnelles ; il sera, à l'avenir, possible de procéder au paiement directement par le biais de Familine.</p>
+
+ <h2>Potentiels problèmes</h2>
+ <p>De part leur complexité, Familine ne saurait garantir le total bon fonctionnement de ses services. Cependant, il vous est conseillé de communiquer tout potentiel problème par courriel à support@familine.minteck.org.</p>
+ </div>
+ </main>
+
+ <script src="/main.js"></script>
+</body>
+</html>
diff --git a/app/intro/index.php b/app/intro/index.php
new file mode 100644
index 0000000..1748f31
--- /dev/null
+++ b/app/intro/index.php
@@ -0,0 +1,153 @@
+<?php
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022- Minteck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+if (str_contains($_SERVER["HTTP_USER_AGENT"], "+AutomateCloud/")) {
+ header("Location: https://app.familine.minteck.org/");
+ die();
+}
+require_once $_SERVER["DOCUMENT_ROOT"] . "/session.php";
+global $loggedIn;
+?>
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="shortcut icon" href="https://cdn.familine.minteck.org/favicon.svg" type="image/svg+xml">
+ <title>Familine | Des outils fiables et puissants pour la famille</title>
+ <link rel="stylesheet" href="stylesheet.css">
+</head>
+<body>
+ <header>
+ <nav id="main-nav" class="container">
+ <a id="nav-logo" href="/">
+ <img src="https://cdn.familine.minteck.org/favicon.svg" alt="Familine" id="nav-logo-img">
+ </a>
+
+ <span id="nav-links">
+ <a class="nav-link" href="https://minteck.org/legal/#/privacy">Confidentialité</a>
+ <a class="nav-link" href="https://minteck.org/legal/#/terms">Conditions d'utilisation</a>
+ <a class="nav-link" href="/conditions">Conditions d'accès</a>
+ <a class="nav-link" href="https://gitlab.minteck.org/explore/projects/topics/Familine">Code source</a>
+ </span>
+
+ <?php if (!$loggedIn): ?>
+ <a id="nav-aside" href="https://session.familine.minteck.org/login/?r=https%3A%2F%2Ffamiline.minteck.org%2F">
+ <span id="loggedin-action">Se connecter avec Familine</span>
+ </a>
+ <?php else: ?>
+ <a id="nav-aside" href="https://app.familine.minteck.org">
+ <img src="https://cdn.familine.minteck.org/me" id="loggedin-profile">
+ <span id="loggedin-name">&nbsp;<?= $_FULLNAME ?> &rsaquo;</span>
+ </a>
+ <?php endif; ?>
+ </nav>
+ </header>
+
+ <main>
+ <article id="hero"></article>
+ <div id="hero-content">
+ <div>
+ <h1 id="hero-title-part-big"><span id="hero-stylized">Familine</span></h1>
+ <h1 id="hero-title-part-small">met votre famille est en sécurité</h1>
+ <?php if ($loggedIn): ?>
+ <a class="button button-main" href="https://app.familine.minteck.org">Ouvrir Familine</a>
+ <?php else: ?>
+ <a class="button button-main" href="https://session.familine.minteck.org/login/?r=https%3A%2F%2Fapp.familine.minteck.org%2F">Se connecter</a>
+ <a class="button button-secondary" href="https://docs.google.com/forms/d/e/1FAIpQLSeXkgy_-Dd1iQSdGjccCL96pdzNAOKcnqOPUUuzsLj-7NJ2Wg/viewform">Demander un compte</a>
+ <?php endif; ?>
+ </div>
+ </div>
+
+ <div class="container" style="text-align: center;">
+ <br><br>
+ <h5>Familine, c'est une multitude de services qui vous attend</h5>
+ <img class="welcome-intro-img" src="/icns/familine-docs.png" style="width:64px;filter:contrast(0) brightness(0%);" alt="Pages">
+ <img class="welcome-intro-img" src="/icns/familine-help.png" style="width:64px;filter:contrast(0) brightness(0%);" alt="Aide">
+ <img class="welcome-intro-img" src="/icns/familine-movies.png" style="width:64px;filter:contrast(0) brightness(0%);" alt="Films">
+ <img class="welcome-intro-img" src="/icns/familine-photos.png" style="width:64px;filter:contrast(0) brightness(0%);" alt="Photos">
+ <img class="welcome-intro-img" src="/icns/familine-planning.png" style="width:64px;filter:contrast(0) brightness(0%);" alt="Planning">
+ <img class="welcome-intro-img" src="/icns/familine-recall.png" style="width:64px;filter:contrast(0) brightness(0%);" alt="Généalogie">
+ <img class="welcome-intro-img" src="/icns/familine-share.png" style="width:64px;filter:contrast(0) brightness(0%);" alt="Partage">
+ <img class="welcome-intro-img" src="/icns/familine-you.png" style="width:64px;filter:contrast(0) brightness(0%);" alt="Discussions">
+ <p>Pages · Aide · Films · Photos · Planning · Généalogie · Partage · Discussions</p>
+ <br>
+ </div>
+
+ <div class="welcome-box-0 welcome-box">
+ <div class="container welcome-box-container">
+ <div class="welcome-box-container--inner">
+ <div>
+ <h2>Un compte... tout Familine</h2>
+ <p>Avec seulement votre compte Familine, vous avez accès à une multitude de services tous interconnectés les uns avec les autres.</p>
+ </div>
+ </div>
+ <div class="welcome-box-container--inner">
+ <div>
+ <img id="01-account" alt="" src="https://app.familine.minteck.org/welcome/01-account-light.svg" style="width:100%;">
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="welcome-box-1 welcome-box">
+ <div class="container welcome-box-container">
+ <div class="welcome-box-container--inner">
+ <div>
+ <img id="02-privacy" alt="" src="https://app.familine.minteck.org/welcome/02-privacy-light.svg" style="width:100%;">
+ </div>
+ </div>
+ <div class="welcome-box-container--inner">
+ <div>
+ <h2>Une sécurité sur tous les points</h2>
+ <p>Ce qui est dans la famille doit le rester. Aucune des données présentes sur Familine n'est accessible au public, l'utilisation d'un compte est obligatoire.</p>
+ <p>De plus, certaines données strictement personnelles sont accessibles par vous et seulement par vous.</p>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="welcome-box-2 welcome-box">
+ <div class="container welcome-box-container">
+ <div class="welcome-box-container--inner">
+ <div>
+ <h2>N'importe où, n'importe quand</h2>
+ <p>Où que vous vous trouvez dans le monde, depuis n'importe quel appareil, et à n'importe quelle heure de la journée, Familine reste accessible pour vous et toute la famille.</p>
+ <p class="text-muted small">(Familine n'est pas accessible en Chine)</p>
+ </div>
+ </div>
+ <div class="welcome-box-container--inner">
+ <div>
+ <img id="03-devices" alt="" src="https://app.familine.minteck.org/welcome/03-devices-light.svg" style="width:100%;">
+ </div>
+ </div>
+ </div>
+ </div>
+ </main>
+
+ <script src="main.js"></script>
+</body>
+</html>
diff --git a/app/intro/intro.svg b/app/intro/intro.svg
new file mode 100644
index 0000000..ab6606e
--- /dev/null
+++ b/app/intro/intro.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 1920 1080" style="enable-background:new 0 0 1920 1080;" xml:space="preserve">
+<style type="text/css">
+ .st0{clip-path:url(#SVGID_2_);}
+</style>
+<g>
+ <g>
+ <defs>
+ <rect id="SVGID_1_" width="1920" height="1080"/>
+ </defs>
+ <clipPath id="SVGID_2_">
+ <use xlink:href="#SVGID_1_" style="overflow:visible;"/>
+ </clipPath>
+ <g class="st0">
+ <g>
+ <defs>
+ <rect id="SVGID_3_" x="-5" y="-5" width="1930" height="1090"/>
+ </defs>
+ <clipPath id="SVGID_4_">
+ <use xlink:href="#SVGID_3_" style="overflow:visible;"/>
+ </clipPath>
+ <g style="clip-path:url(#SVGID_4_);">
+
+ <image style="overflow:visible;" width="4022" height="2272" xlink:href="data:image/jpeg;base64,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IAAAAAAAAAAAAAAAQVBUoAAAAAAA6Ofo0+FxdrF9viLqSgFBAAAAAAAAAAAACygAAAACgAAAAEKAAKCUKAAAoAALKAALLAAAFAAsoABQBAFCgUACygCygQBQAUAFABQBFABQAUCygSrKAUAFAsoAssAUCygCygRQAUCygFAssAUAFAsoEUAFAsoBRCyqAsoBQBFAsoBQLKBCygFABRAFAsoELKAUAFEAtAAssALKALLACygARQoCygQsoAELKAAqywAAEUAACywCgAUQAABRAAAKBRAAAAAQsoAAAAEACkAsFAAAACAABAAAAACygAAAEAsoAAAAAAAEAAgAAAAAAAAAAhUFgAAAAAAALBQAAAOjn6NPhcXaxvb4hqBQQAAAAAAAAAAAAAsoAAAABQAAAABFAACrKgKAABQAALKAALLAACygACygAFAELKAoFAAsoAsoEAUAFABQAUARQAUCygCygSrKAUAFAsoAssAUCygCygRQAUCygFAssAUAFAsoEUAFAsoBRCyqAoAUARQLKAUCygQsoBQAUQBQLKBCygFABRAFCgLLACygCywAsoAEUKAoBCygACywACrLAAAoEAALKBAKKBAAAFSwAAAC0QAAAAEAUAAAAQAsolEAoAAAAgAAQAAAAAsoAAABFgsoAAAAAAAEAAgAAAAAAAACAAAAAAAAAAAAAsFQVBejn6NPhcbZxvb4hqAAAAAAAAAAAAAAAKAAAAAFAAAAALAAACyqAAAKAAAUAACkAALKAAUAAFAELKAoFAAsoAsoELKAAUAFABQBFABQLKALKoQsoBQAUCygCywBQLKALKBFAKALKAUCywBQAUCygRQAUCygFELKoFABQCwAsoBQLKBCygFABRAFAsoELKAUAFEAUKAssALKALLACygAFEAtAELKAALLAACyygALKBAACgEAqygQAAAssAAAAUSgAAABAFAAAAAELKAAAAAAAgAAQAAAAAsoAAAIWAsoAAAAAAAECFSoAAAAAAAAgAAAAAAAAAAAAAAAAXo5+jT4bF2sX2+IagAAAAAAAAAAAAAAFAAAAAsoAAAAELKAAAUKAAAsoAABQBAVRAACygAFAABQBCygKBQALKALKBCygAFABQAUARQAUCygCyqELKAUAFAsoApAFAsoAsoEUCygCygFAssAUCygCygRQAUCygFELKoFABQLLACygFAsoELKAUAFEAUCygQsoBQAUQBQoCywAsoAssALKABFAC0AQsoAAssAALKBKABRAAFAEALKoAQAAoBAAAoEoAAAAQBQAAAAABICrBQgAKACAAABAAAACyhBYAAACygAAAAAAAhYIssAAAAAAAIAAAAAAAAAAAAAAAAAF6Ofo0+GxdrF9viGoAAAAAAAAAAAAAAoAAAAALKAAAABCgACglCgAALKAACgAQFUQABQAAUAAFAELKAqygACgAsoELKAAUAFABRAFABQLKALKoRQAUAFAsoBRAFAsoAsoEUCygCygFAssAUCygCygRQAUCygFELKoFABQLLACygFAsoELKAUAFEAUCygQsoBQAUQBQoCywAsoAssALKACwABQoCxFAAsRQALKBAKBQBAFAEALKoAQABQBAACygQCggKAAEUAAAAAAIAEUAAAAAAAAQAAAAAAAAAAsoAAAAAIVCAAAUQAAAAAlgAAAAAAAAAAAAAAAAABejn6NPhsXaxfb4hqAAAAAAAAAAAAAKAAAAAAoAAAAAEUAAKKgKAABQAALKABAVRAAFAAKAALKABCygKsoABQALKBCygAFABQAUQBQLKALKAqygRQAUAoAsoEUAFAsoAsoEUCygCygFAssAUCygCygRQLKALKAUQsqgUAFAssALKAUCygQsoBQAUQBQLKALLAFABRAFACqAQoAUAQsoAsoEAUAKssAALKBACygQCgUAQBQBACygKEAAUAQAAsoAEAAAALLKAAACAoIAAsoEAAAAAAAABAAAAAAAAACygABBUIAAAAABUsAAAAAAQAAAAAAAAAAAAAAAAAF6Ofo0+GxdrF9viGoAAAAAAAAAAAAoAAAAAAKAAAAAAsAAALKoAAAFAAAsoAEBVEAAUACygACygQC0ACygAFABQBCygAoAsoABRAFAsoAsoCrKBFABQLKALKBFAKALKALKBFAsoAoAUCywBQLKALKBFAsoAsoBRKsoBQCgCywAsoBQLKBCgBQAUQBQLKALLAFABRAFABQoRQAUAQsoAsoEAUAKssAALKBACygQCgUAQBQABCygKAEAUAAQAsFAEAAAALKBAKCAAAAALKBAAAAAAAAAAAQAAAAAAAsFCARYAAAAAAALEUAAAAACWAAAAAAAAAAAAAAAAAF6Ofo0+GxdrF9viGoAAAAAAAAAAAoAAAAAALKAAAAABCygAAFCgAALKAAAUAAQsoAAsoAAsoAAoBALQALKAAUAFEAKACygCygAFELKALKALKoCygRQAUCygCygRQLKALKAUARQLKAUAFAssAUCygFAEUCygCygFELKoFAsoAssAKAFAsoEUAFABRCygCygCywBQAUARQAUAS0AFAELKALKBAFAAsS0ACygQAsoAELKoAQBQABCgAAEoFAAEAAUAQAAAAsoAEAAAAAALKAAABAAAAAAAAAQAAAAAAAsqAAQAAAAAAACwUQAAAABAAAAAAAAAAAAAAAAAXo5+jT4bF2sX2uIbgAAAAAAAAACgAAAAAABQAAAAABFCggKCUKAAAsoAABQBACygACygAFAABQBAqgAKACygAFEAUACygCygAsALKALKALKoFAEUAoAsoBQBFAsoAsoBQBFAsoBQCgCywBQLKAUARQLKAUAFELKoFAsoAsoEUAFAsoEUAFABQLLACygCkAUAFAEUAFAEUKBQAUQAKBAFAAKBKAsoEAKAAQsoCgCwAABRAAAQsLQABAAFSgAQAAAsoAAEAAAAALKAAABAAAAAAAAAAQCAAAAoAJQAIAAAAAAAACwVEVAAAFBAAAAAAAAAAAAAAAAF6Ofo0+GxdrF9riG4AAAAAAAKRQAAAAAAAAoAAAAABCygAAKsqAoAACgAAsoAEBSkAAUAAFAABQBKsoABQALKAAUQBQAUAFAAssALKALKAqygFEAUCygCygFAEUCygCygFALACygFAsoAssAUCygFAEUCygFABRKsoBQLKALKBFABQLKBFABQAUQsoAsoBQBFABQBFABQAUQC0AFEALKABFAAsoEAqygARQAAKQAAssoAAFEAAABFSqAAEALKAABAACygAAQAAAABUFSgAAQAAAAAAAAACBAAAAAAFgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAF6Ofo0+GxdrF9riG4AAAAAUSgAAAAAAAAAoAAAAABAoAACgiyqAAABQAAKAAQBQAAUAAoAAKAoQsoABQALKALKBAFABQAUACywAsoAsoC0AFEAUCygCygFEAUCygCygFAssALKAUCygQsoBQLKAUARQLKAUKsqBKsoBQLKALKBFAKALKBFABQCgQsoAsoBQBFABQBFABQAUQC0AFEALKABFAAsoEAUKAEUAAFEAAKASgALKBAAAQsoAChACygAAQAAoAAABAAAAAAAAFEAAAAAAAAAAgAAQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAXo5+jT4bF2sX2uIbgApFEoAAAAAAAAAAAFAAAAAAAQoAAAoJQoAACygAAFAEALKAACgACygACygSgUAAoAAoALKBAoABQAUACkAUAFCgUAFEAUCygCgBRCygCygFABRCygCygFAsoEKAFAsoBQBFAsoBQqyoEqygFAsoAsoEUCygCygRQAUCygQsoAoAUAsAAUARQAUAFEAUKBRACygARQALKABFAAC0QABRAAFSgQCgAUQAABRAAAKEUAAAAQABUoAAAEAAAWUQACygAQAACAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAABejn6NvhsXaxva4hqAAAAAAAAAAAAACkoAAAAAABAoAACgiigAAAKAACygAQAsoAAsoAAsoAAsoEoFAAsoABQALKBCygCygAoABRAFAC0AFAEUCygCygFABRCygCygFABRCygCygFAsoEUAFAsoBQLLACygFCrKgSrKAUCygCygRQLKALKBFABQLKALLAFABQLLAAFABRAFABQBFABQoQsoABRACygARQAAUSgAUAQAsoAEALKoAQABRAAAALRAAAAAQAAoAAAABAAICgLKAgKAEAgAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAEAAAAAAAgAAAAF6Ofo2+GxtnG9nkG4AAAAAAAAAAAAUAAAAAAAABFAAAAsoCgAACgAACgAEAUAACgAAoAAtCBKKAALKAAUAQstBCygCygCygAFECgKsoABQCwAsoAsoBQAUQsoAsoBQLKBCygCygFAsoEUAFAsoBQLLACygLQLKAUQBQLKALLAFAsoAoAUQBQLKALLAFABQLEUAFABRAFABQLLAAFSgSrKAAUARQACgQAKBAKAsoAELKABACygASgLKABAACygQAACgAgSigAAAAAAQCAACgAAAAQAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAgAAAAQAAABejn6NvhsbZxvZ5BuAAAAAAAAAACgAAAAAAAAQAoAAAoqAoAAACgAAKABAAoAABQAAUAALQBCygAFAAsoAEUACygCygCygCywAsqgLKACgCywAsoAsoBQBFAsoBQAUCygQoAUAFAsoEUCygCygFAssALKAtAsoBRAFAsoAssAUCygFABRCygCygCywBQAUARQAUAFEAUCygCywAAsoAssAooAEUACygQAsFAEAUKAEKAAARQAABKsoAAEAKhQBAAAAACywAAAAAAEAAALKAAAAABAAAAAAAAAAAAAAAQAAAAAAAAAAAACAAAAAAAoAAAAAAIAAAA6ebp1fhsbaxfZ4huAAAAAAAACkoAAAAAAABAApKAAAKCUKAAAAKAAAKAAQAoAACgAAFAALKFBCygAFAAsoAEUAFAAsoAsoAssAqygCgAsoAssAKACgBQLLACygFABQLKBFABQCgCygRQLKAKAFAssAKKBQLKAUQBQLKAKARQLKAUAFELKALKALLAFABQAUQBQLKALLACygCwUQBQALLACygKBRACygQABQABFACgUQAABRAAAFEAoAQBUFAAEAAAAUAQAAAAAAEAALKAACFSgAAQAAAAAAAAAAAAAAEAgAAAAAAAAAAAAAAAAAAAAAAAAAAAADp5unT4fF2sX2eQbgAAAAAApKAAAAAAAAQAAUAAAAoIooAAAAoAAAKAABAoAAAsoAAsoAAssoACgAKAAUACywABQAUACygQsoCqAFAAoAUQBQAUAFAssALKAUCygCygRQAUCygCygRQLKAUALRCygJQoFAsoBRCygCygFAEUCygFABRCygCygCgEUCygAFELKALKALLACygAFEAUACygQsoABRKABQBAFAAEUAALRAAAFEAAAUQAAChACygAAQAAKAAABAAAAAAARQAAAAAAAABAAAAAAAAAAAAAIAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEF6ebp0+HxdrG9nlFbkURRFEoAAAAAAAAAABABQAAAACgiigAAAAUAAACgAEALKAAAUAACgACqQABQALKAAUAQsoAKAAUAFAEKKBQAUAFAEUAoABQCgCywBQAUCygCywBQCgCygFAEtCLKAtAsoELKAUAoAsoBRCygCygFAEUCygFAKBCygCygFAEUCygAFELKALKALKBCygCygARQAUAQsoABQBAqgABFAABRAAoAEAqygAQAAsoEAAABKsoAAAEALBUFSgAQAAAAAAAEAAAAUAAAAAAAQCAAAoAAAAAAIAEAAAAAAAAAAAAAAEFQVBUFQVBYAAAAAAF6ebp0+HxtnG9nkG4AAAAAAAAAAAAEAFUAEAAAoAIKAoAAACgAAAsoAAEAUAACygAAFAAEtAABQAKAAFAEKACygAFABQBLQAUAFABQLLACygAoAsoAssAUAFAsoApAFAsoAsoBRALQLKAUCygQoAUCygCygFELKAUAFAssALKAUCygCywAsoBQAUQsoAKALLACygCygQsoAsoALAAFAAssAAKAQsoACiwAAsoEALKABACwUKEAACgQAAABRAAAKAEAAALKAABAAAAAAAQAABQAAAAACFEgAAAAAAAAAAAAAQAAAAAAAAlEAAAAAAAAAAAAAAAABenm6dPh8bZxvZ5BuAAAAAAAAAABAUUAABAAAKCCkooAAAACgAAAKAABACygAAFAAAsoACrLAACygAFAAsoAEUACgAsoAKoAsAAUAoAsoELKALKALKALKBFABQCgCygFEAUCygFAC0QsoAsoBQLKBFABQLKAKARQLKAUAFAssALKAUCygCywAsoBQAUQsoAsoAssALKAKACywAsoAsoEAUACkAAUACywAAsoEoCygAQsoAAEALKABKAsoAEAACgAQAAAAEAALKAAAoSAAoAIAAAAELKAJRFgAABQBAAAAAAAAhUFQWAAAABUFRFQVKAAAJYAAAAAAAAAAAAAAAAXp5unT4fG2cb2eQbgAAAAAAAAQLUUAABAAAKCAFAKAAAAAKAAACgAAQABQAACgAACgChFAABQACgACygCywABQALKALKoQsoAsoAsoAsoELKALKAKAFAEUAFAsoAsoEUCygCygFCigQsoAoAUCygRQCgCygFAEUCygFABQLLACgBQLKALLIBQAtCLKBCygCygKsoELKAUACywAsoAsoEAUACygQBQALLAAFAAEVKAoCxFAAAEUAAARQAoAQAsFAAEAAAAABCgAAAAEAAAAAAAAVEVBUFQAAALBUoAARFQWAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAXp5erT4fG2cb2eQbgAAAApFEURRKAAAQAAAAAUAoAAAAAAoAAAKAABAACgAAAoAACgKALAACygACygAFEALKAAUAFACrLACygCygCygCygQsoBQAUAFEAUAoAsoAoBFAsqgKAFAsoELKAUAFAsoEUCygCygFAEUCygFAKALKBFABQLKALLIBQAUCygQsoAsoAsoEKAFSgCygQsoAsqgLLAACygQBQAUAQAoABCygACyqEAACgQAABRAAAKEALBQABAAAAAoEAAAAAABAAAAAAAAQAAAAAABUoAgBAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA6uXq0+IxtnG9nkG4AAAAAAAAAEAAAAAFAKACAoAAAAoAAAKAABAACgAAAsoAAAoAoQoAAKAAFAABRAFAAsoABQoFEAUAFABQAKQBQAUAFAsoECgCygCygFChFAsoBQAUCygQsoBQCgCygRQLKALKAUAsALKAUCygCygRQAUCygIssAUAFAsoELKALKALKBFAAsoAsoELKALKACwCgLKACwABQABFAAAssAALKBAKAsoEAALKABAAAAQsoACgBAAAAAFQVEUAAAAAQAAAAAAAAEAAAAAAAAABAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAA6uXq0+IxtnG9nkG4AAAEAAAAAAAAAFAKACAoAAAABQAAAKAABAACgAAAKAAALKAoARQACgAAoAAsoEAUACygCyqABRAFABQAUAFEAUAFAsoAsoELKALKAUKBQLLACygFAsoAssAKAFAsoAsoEUCygCygFAssALKAUCygCygRQLKALKgCywBQAUCygCywAsoAoAUQAsoAoAKQBQAAUQBQAqygQBQABCygACgEAUAAQAoAoQABUoAEAAAKQAAAAAEoIACgCgQAAAAAAEAAAAAAABAAAAAAAAAAQAAAAAAAAAAAAAAAACABAAAAAAAKAAAAAAA6uXq0+IxtnG9nkGoAAAAAAAAAAAUAoIACgAAAAFAAAAAoAAEAAKAAAACgAAKoAAQsoAAoAAKAAFEALKAAUAKsoAKBAoAKACgAFEAUAoAsoAsoEKAFCgUAFELKALKAUCygCywBQAUCygFAEUCygCgBQLLAFABQLKALKBFAsqALKALLAFAKALKALLACygFABRAFABQAUARUoAKABFAAsoAEVKAAUSgAUAARQAABFSgAAQCqAAAQAKABAAAAAAQAAAoABAKCAAAoAQACAAAoAAQAAAAAAACAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAA6uXq1fiMbZxvZ5BqAAAAAFEURRKAAAAAKAAAAAKSgAAAAKAABAACgAAAAsoAAAooAARQACgAAoAAsoEAKACygKBQALLACygCygCygCywAsoAsoAsoApAFCigCygCygQsoBQAUCygRQAUCygCygFELKALKAUAFAssAUAFAsoApAFAsqALKAKARQLKALKALKBFABQAUARQAUAFAELKALKABFAAsoAApAAFAEAtAAEVKAAABFAAAEUAAAKEKAAAQAAAAAEAAUAAAAQAAAAAAEAAAAAAABAAAAAAAAAAAQAAAAAAAAIVBUFQVBUFQVBUFQAAAAABCwVBUFQVBerl6tX4jG2cf2eUVqSgAAAAAAAAACgAAAAACkoAAAAACgAAQAAoAAAACgAACyqAAELKAALKAAKAAFEAAUACigCgARQAUACgAoBCgAoALKAKAFEoFAsoAsoAssAKAFAKALKBFAKALKALKAUQsoAoAUAFAssAUCygCygFEAUCyoAsoBQBFAsoAsoAsoEUAFABQAUQBQAUACywAsoABRACwUAFEALKAALLAAAFSqEAALKBAACygQAAAAEVKoAAQAAAAAAsRUFBKhUoEAAAAAABAAAAAAAAAQAAAAAAAAAAAAEEAAAAAAAAAAAAAAAAAAAAAQAAABerl6tX4jH2Mf2eQagAAAAKAAAACAAoABRFEoAAAAACkoAABAACgAAAAKAAACqAAECgAAFAAKAACgQAsoAC0ACygQKAAUAFABQBFABQAUAFChFAsoAsoAsoEUAFABQLKALKBFAsoAsoBQAUQsoBQAUCygCywBQLKAKAFEAUCyoAoAUARQLKALKALKAUQBQCgAFEAUAFAApACygAoAELKAAUAQsoAAsoEAAKAAQBQoAQAsoAEAAAACwAAAChAAAAAQAAsFSgAAQAAAAAEAAAAAAAAABAAAABBUFQVAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAXq5eqvicbZxvZwGsgAAAACkURRFKAAAAAAAAAAAAUAABAAACgAAAAKAAAAqgAAEKAACygACgAApAAFACrKAAUAQsoAKACgAoECgAoAKAooELKALKALKAUARQCgCygCygFEAUCygFABQAUQsoBQLKALKALLAFAsoBQAUQsoAsqAUAFAKBCygCgAoAUQBQAUAFEAUAFABQBCygAFAAssAAUACywAABQBAFAAELKAAABKBUoAEAAAKAQAAAAEAAAAABKBQAAABAAAAAAAQAAAAAAAAEAAQAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAABerk69PicbZx/Y5xWkUAAAAAAAAAAAAAAAAAAKAAAAAAAsAAAAAKAAAAKoAABCgAABQAAUAQLQQAsoCgLKACgARQALKALKALKBCygCygKsoAsoELKALKAUAFAssALKALKALKAUQKALKAUAoAssALKAUCygCygFEAUCygFABRCygCygJQAUCygQsoBUoBQAUQBQAUAFAEUAFABQAUQAsoAAssACgACgEAAUAARQAACwSgAAARQAAoQABQABAAAAAQAAAAAEUAAAhQAoQACAAoAQAAAAAlgAAEAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAADr5OvT4nH2Mf2OYagAAKAAAAAAAAAAAAURRKAAAAAAsRQAAAAAKSgAAACqAAAQsoAAAoAAKAAQoAAUKABQALKBAoABQAKACkAKACigKACgEKAFABQCgQsoAsoAsoBQAUQsoAsoBQLKALLACygFAsoBQBFABQLKAUAFAssALKAlABQLKBCygCygFABQLEUAFAKALKBAFABQAlAECgAFAELKAALKABCyqAABRAACwUQAAABRAAAACxFQUKAEAAAABAAAAACxFQVBUAAAARUFAAAAIVEVBUFgoICgAgSgAAAAAAAAAAAABAAABBUFQVBUAAAAAAAAAAAAF6+Tr0+Jx9jH9fAbgAAAAAAAAAApFEoAAAAAAAAFRKAAAAAAAoAAAAKsoAABAoAAAKAACgAQKAACqAAKAAUQAsoAKAAUAFEAUKBQAUARQAUAFAKALKBCygCgBQAUCywAsoBQAUCygQsoBQAUCygFAEUCygCygFABQLLACgCUAFAsoAssAUAFABQLKBAFAsoAsoEAUIBQAUACywABQALLAACygACywAABUoEACqAEAALKABAAAAQAAsoAEAoAAAAQAAAAAEAAAAABAFQVBUFQABAAAAAAAAAAQACgAAAAAAAAAAJZAAAAAAAAAAAAAAAAAF6+Tr0+Jx9nG9fAbgAABRFEURRFEoAAAAAAAACkVEUAAAAAAACkoAAAACqAAAECgAAAoAAAoABCgCgKAAFAApAAFAAoACgAsALKoAoAKACwAKACgCygCygQoAUAFAsoAssAKAFAKALKBFABQCgCygFAssALKALKAUAFAssAUAJQAUCygQsoBQAUAFABRAFAsoCLKABFABQAUACygQBQALBRACygACgEAAKAAQsoAAEAqygAAQAAAAEUAAAAQAAAChAAAAAAQAAAAAEAAAAAAABAAAAAAAAAAQAAQVBUFQAAAAAABAAAAAAAAAAAAAAAAF6+Tr1fisfYx/XwG4AAAAAAAAAAAAAURRKAAQAAAAAAKRQAAAAAAUoAAAQUAAACgAACgAECgAKKAAKAAoEAKACygAFAApKBQALKALKALLACygCygCygCkAUAFAsoAsoELKAUAFAsoAsoEUAFAsoAsoBRCygCygFABQAUCywBQAlABQLKALLACygFABQAUCywAsqALKACgQBQAVKALKBCygACygARQAAVKABAFAAApAAAAAQsFAChAAACygQAAAEAAAAABAAAAKAEAAAAABAAAAAAAAQAAAAAAAAJFQVAAAAAAAAAAAEAAAAAAAAAAAAAAAAXr5OvV+Kx9jH9fAbgAAAAAApFEURRKAAAAQAAAAAAAUSgAAAAAAAooAAAQoAAACgAAAoAEAUAKBQACgAFEACgAFAAsoECqAKAAUAFAEKACgAoAUARQCgCygCygCkAKAFAKALKAKQBQLKALKAKAFELKALKAUAFAsoAssAUAJQAUCygFEAKAFABQLKALLAIsoAsoAsoAEUAFABQALEUACygAFEAALKAACwAABUoEAAAALLAAAAQAC1BQBAAAAAQAAAAEAAAAABKAAAAAAEAAAAAABAAAAACWAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAOzj7NX4rI2Mf18BuAAAAAABAAAAAAAAAAAABRFAAAAAAAApFAAKAEAKAAAAoAAABQABCigAKAAoAAssAAKACygAFChCgAsoAsoAsoECgAoAKAAUQBQLKALKAKAFEAUAFAsoAsoBRAFAsoAsoBQBFAsoAsoBQLKALKBCygFACUAoAsoBRAFABQLKALKALLIAsoAsoAsoAKBAFABUoAsoEALKAAUAIELKAALKBKAABUoEAAALKBAAAAAQABUFSyggKAAEAAAABAAAAAAQAAAACgBAAAAAABEVBYAAAAAAAAAQAAAAAAAAAAAAAAAAAARFQVBUFQVBUF7OPs0+Lx9jH9fIbgAAAAAQAAAAURRFEUSglAAAAAAAAAApFAAKAAAECgAAAAoAAAAoABCigACgACgAKBACygAFAAsqhAoABQAKACgELKAKACgAsoELKALKAKAFAEUKKALKALKAUARQiygCygCgBQLLACygFABQLKALKBCgBQLKgCygCygFAEUAFAsoAsoAssgCygCygCygCygARQAUAAJQBCygAoAAApAACgAEAAUAASgAUAAQAAAEAAAKAQAACgBAAAAAQAAAAAEAAAAAABAABC1BUAQAAAAAAAAAAAAEAAAAAAAAACFQVBUFQVBUAQAAAAABezj7NPi8jXyPXyGolEURQAAAAAAAAAAAAAAAAAAAKRQAAACgABBRKAAAAAoAAAKAABAqgACgACygAQoAAUAAoAC0AQsoAKAAUAFEAUAFABQBFAAooFABQCgCywAsoAoAUAFALACygCiAUAFAssALKAUAFAsoAoBFABQLKAiygCygFAEUAFAsoAsoCLKBCygCygCygAFABRAFCACgAFAEAUAAFAEALBQABAFAAAEAVBQoSAoAAAQAAoABAAAAASggKAAEAAAAABAAAAABEWAAAAAACgBAAAAAAAAAAQAAAQWAAAAAAAAAAAAAAAAAABezj7K+LyNjH9fIagAAAAAAAAAAAAAAAApFEUSgAAAAAACgFEpAAAAAACgAAAKAABAqgAAKAAoAECgACygACigLLAAFAAoALKACwAKALKACgCyygLKACgAoAssALKALKAUAFABRCygCygFABQCoELKALKAUAoAsoBQBFABQLKAiygCygFAEUCygCygCyoAsoAssALKALKAAUAJQBFAAsoABQABFAABQABCygAAAsAAAABACgAAEoAAAQBUFSgAkVBUFlEsFEAAAABAKAAAAJFIVBYAAAAQAAAAAAAEAAAAAACFQVBUS1BYAAAAAAAAAAAAAAAAAAAAF7OPsr4zH2Mj18xWpFgAAAAAKRRFEURRFEURQAAAAAAAAAAAUsoABAAAAApFAAAABQAAEKKAAAoAAKAAQoACgACyqAApACygAoABQAKQAsoAsoAooCkALKALKALKALLACgBQAUAoAssALKALKAUAoAsoEiygFABQLKALKAUQBQAUCygCyoBQAUQBQLKALKAiygCygCygQsoAsoACUAFABRACygAFAABRAAoAAAssAAALKBAAAAARQAAABAAAKEWAAAsAQAABUoEAAAABABBULYAAQAAAAAAEAAAAAAABAAAAhUFgAAAAABKCAAoAIACggAAAKAQVBUFQVABe3i7dPjMjXyPWyGoAAAAAAAAAAAAAAAAAAAAURRFAAKEAAAAAFAAAAAACgAAEKKAAKAACkoABCygACgAKoAAsAAUACgAsoECgAFABQoFEAUAFABQAUARQAUAFAKALKBCygCgBQAUCygCywAoAlABQLKALKAUQBQAUCygCyoBQAUARQLKALKAiygCygCygCywAsoACUCygACygQsoAAsoAKABAJQAAKAQACrCUKEAAACgQAAAEAAAABAAKAAEAALKABAAhUFQVEAAAoAAQAAAAAAEAAAAAAIAQAAAAAAAAAAEAAAAAEFQVBUFgAAoIAAAAABe3i7bfjMjXyfXzFakAAAAAAAAKRRFEURRFEURQAAAAAAChAAAABRKAAAAAApFAAAQAooAAoAAKAABAoAAKAoCgABRACygAoABQBCgAsoCigAoECgAoAKACgARQCgCygCygCywBQAUAFABQLKBCygFABQCoAsoAsoBRAFAKALKAKAJQAUCywAsoAsoCLKALKAKACygQsoCCgCygACygCywABQgAoAAEKAAFAAAEALKAABACyqAEAAABAAAAAQAAAChAAAAAQAAAAAEAAAABAKAAAAEAEFQVAAAAAEAAAAAAAAEFQVBYAQAAAAAAAAAAAAAAABe3i7dX43I18j1shqAAAAAAAAAAAAAAAAAAAABKAKRRFEUSgAAAAAAKSgAAAECgKAAKAACgAAQUAACgKAKABCgABQAKACygQKAAtAAsoAssALKALKALKALKBCygCygCygCygCkAUAFABQLKALKBFABQAUCygIsoAoAUQBQLKALKAUAJQAUCywAsoAsoCLKALKAUACygQsqALKALKAAUACygQCVKALKAAAUQABQAABACygAAQAsBYVBRKAAAAEAAABAAAAAQCgAABAAAAAQAAAAAEACFQVC2AAEAAAAAAAABAABBUAAAAAAAAAAQAAAAAAAAAAAABe3i7dX43I18n1cxZuAAAAAAAACkURRFEURRFEURRFRFAKAAAAAAAAAAAUAAAABApFAKAAKAACgAAQoAAAKKABQBCygACgABQBCgAsqgCgAFAEUAFABQAUARQAUACgAoAUARQAUCygCygCygCywBQAUAoAsoAsqAUARQLKALKALKAUAJQAUCywAsoAsoAsqALKAUACygCwlELKALKAALKALKAgCywABQAAUAARUoAAABRAAAAAQAABRAAAKAEAAABAAAAAQAACgBAAAAAQAAAAQWEAAAAAAABKAAAAIVBYAAQAAAAAAAAAAAEBQAQAAAAAIVBUFQVBe7h7tX43J1sn1chuAAAAAAAAAAABAAAAAKAAAAAAAAAURRFEoAAAAACkpAAKAAUAACgAAQoAACgKAAoBAFAAKAAKAAsAoFAAoALKACwAKACgAoAEUAoAKACgAFALACygCygCygCgApAFAsoAsoAsoAoAlEAUCygCygCygFACUAFAssALKALKALKgCygCygCygIsoAEUCwUACygCwlABQBCygAAFAAAEUAAAFAEAAABAAAFAEAAABKCAoAAQAAAAEAAAABAKAAAJFQVBYAAAAQAAAAAEAEFQoAAAAAQAAAAAAAAAAAAAARFQVBUFQVAAAAABe7h7tX47I18j1chqAAAAAAAAAAAACkURSxRFEURRFEURRKAAAAAAAAAABRKQACgACkoAACgAAQoAACgKAAKBACgABQACgAQooCygAoABRACgAsoAsoAssALKALKALKALKALLACygCygCygFABQBFABQLKALKALKAUARQgFAsoAsoAoAUAJQAUCygQsoAsoAsqALKALKALKAiygAFEAUACygIBQALKAAVLAAFACALBRAAACwUAQCgABACygAAQAAAEAAAoAQAAAAEAAABAAhUFQoAQAAAAAEAAACFQWAAEAAAAAAAAoQAAAAAAAIAAAAAAAABAAAAAAF7uHu1fjsnWyfVyGoAAAAAAAAAAACgAAAAAAAAAAAAAAAACkUSkAAAAoApKAAACgAEAKAAAoCgAKAAQKAAKAAFEAqgAKAAUACygQKACgACgApACigKAFABQBFAAoAKAFCAUARQLKACgCygCygFABQBFAKgCygCygFABQAUIBQLKBCygCygCyoAsoAsoAsoCLKAAUARQALKAgFAAsoABQBIKAAALKABAAAFAAEAAABKsoAIUAQQVBQBAAAAASgAABAAAhUFhAAAAKAEAAAAACRYAAAAAAQAAAAAAAAIVEVBUFQAoAAAAAAAAAAAQAAAAABe7h7tPjsnWyfVgagAAAAAAAKAKRRFEURRFEURRFEURRFEURRFEoAAAAAABAABSygAAAAKSgAEAKAAAqgAAKAAQBQACgACgEqygACgAsoALAAFAAsoAKACygAUAFABQCgQsoAsoAKAAUAoELKgCygCygCygFABQAUQBQLKAiygFAAsoBQAUIBQAUQsoAsoCAUCwUAFACUAFABQAUQAsqAAUACygAFSgIsFEAALKAABAAFAAAEAAABAFQoAAQBQABAAAAQAACkAQAAAAEAAAABAAAi1AAAEAAAAAAABAAAAhUFQWAAEAAAAAAAAAAAAAAoAhUFQVBUFQXv4O+vjsrWyfVgagAAKAAAAAAAAAAAAAAAAAAAAAAAAAEAAFEoAoAAABQAAAECkoAACqAAAoBAAoAAKAAKKECgACgAKABCgAoACgKKBACygCygCygCygCywAsoAsoAsoAKALLACygCgCKACygFABQBFAKALKALKgFAAsoBQAUAJQLLACygCygIBQAUAFACUAFABQAUIELKAAUACygAIsoAAsoEALKAAABAFAAAEAAAABAAAAKELBQBAAAhUFRAAKAAEAAAABAAAABEAAAAoAQAAAAAAAEJYAAAAAAAABAAAAAAhUFQVBYAAAAAAAAAAF7+Dvt+PydbJ9WBoAKRRFEURRFEURRFEURRFEURRFEURRFEURRFEURQEAAAAAAAAoABRKAAAAApFQAAAUoAACgEACgAAoACqAQKAAKAACgELKACgALQAKQAKAAUAFABQBFABQAUAFABQBCgAoAUAFAAogFABRAFAsoAsoAsoCLKAUAFABQAlELKALKALKAgFABQAUAJQAUAFABQgCywABQALKAgCygACygAQAsFAAAELKAAABAAAAAQAAAEAoCwLEAAAABAAAASgAAABAhUAAAAQAAAAChAAACWAAAAQAAAAAAAIVBURUAAAAAAAAAAAAAAAAAAF7+Dvt+PytXK9WBoAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAApRFAAAAApFQAAAAAooAAoAEACgAAoACqAQAoACgACgEAUACigLKACgQBQALKALKACwABQAUAFABQBFABQAUAFABQAUAJQLLAAoAsoAsoBQAiygFABQAUAoEiwUAFABQgFABQAUAJQAVKAUACyoAsoAEVKALCUACygACygAAQKAgKCAqxFAASgQAAAAEAAAABAKAAEAAABAAAAAQAItgAABAAAAAQAAAAQWEAAAoAAAAQAAQVAAAAAAAEAAAAAAAAAAAAAAAAAXv4O+35DJ1sr1UVqRRFEURRFEURRFEoAAAAAABACURVRURRFEUAAAAAAAoAAAABRFAAQAAAKRQCgACgAQAoAACgAKpAACgAKAALKBACgCigAFAEKACygAFAAoBCgAoALKALKALKBAoAKAAUAFAsoAsoAEUCyoAsoAsoAsoBQALKgFABQAUQsoCAUAFABQgFABQAUAFCALKALKALKgCwUACygSAUACygAAFACABFAAAAChIsALUoEAAAABAAAAQAAAChAAAAQAAIWAEAAAoAQAAAAARFQVBUAAAAQAAAACkAAQAAAAAAAAAAEAAAAAAAAEFQVBUFQVBUHrvz9C35DK1cr1QagAAAAAAAAAAQAAAAAAAAAAAAAAAACgAAACkUAABAABRFAAAKAAUABACgAAUAAqgEAKAAFAAKBACyqAAoALLAAoABQALKACgQBQAUAFAAoALLACygCygCygCygCygCywAKALKALKgCgAsoAsoAoAlABQAUQsFCAUAFABQAlABQALKAlAAsoAsoAsJQAUACygIBRACwVKAAUIAABRAAAAAQAAsoAEoAAAAQAAAEAAABAAKIVBYQAAAAEAAAAoQAIVBUAQAAAAAAEAAEFgAAoAQAAAAAAAAAIVEVBUFQVBYAAAAAAAAAAF0M/Q1fkcrVyvTBqAAAAAAAAAAAAAAAAAAAAARRKAAAAKAAAAAAAEACkoAAAAAopKAAQAAoAAKAAKoBACgAAoACgQCigACygAFEAKACygAFAApAAoAKAooAKBAoACKACygCgBQALKBCygCygCygFACVKALKAUAFSgFCAUARQAUAJQAUAFACLKAUACygIsoAsoAsoACUAFAAsoCALLAACygAIoAAAUAQAAAAEAAUAQACgABAAAAQAIVBUFRAKAAEAAAABAAAABEtQWAAAAEAAAACFQWEAAAAAAABKAAAIVBUAAAAAAQAAAAAAAAAAAABdDP0NX5HK1cv00VqRRFEURRFEURRFEURRFEURYAAAAAAAAAAAAAoAAAAAApFQAAAAAAKRSgAABABQAAAoAooAEAKAACgAEKAKBQACgACkACgAFAAsoEooAAoALKALKALLACygAFABQAUIBQBFSgCgAsoAoAVKAKIAsoBQAKAFCBFABQAUAJQAUAFAAsqAVKALKAiygCygCygIBQAUACwlAAsFAELBQgCwUAAFAAEAAABAACygCVBBUFSrABFQWAAEAAABAAAKAEAAAABBBUAAQACgAAABAhUFgAABAAAAAAAAkWAACgAAAAAAAAAABBBUFQVBUFQVBUFQVB60M7R1fksrVy/TRZqAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAQAAAAAAURQACgAAFRKAAAApKAKKABACgAAoABCigAKAAoAECgAFAAsoAC0AQsoAKAAUACgEKACgAsoABQAUAsAAlABQAUAFAAoAUACyoBQAUARQAlABQAUAFCAUAFAAogCygCygCyoAsoAsoCAVKALBQAlAABRAAFCAAVKAALBUFAEAAABAAAAAQAAAEoAAAAQAAAEAAAAoQIVBUFhAAAAAAQAAAQoQAAAAAAEAAAEFQAAABAAAAAAABC1BUFQWAEAAAAAAAAAAXRztHT5LL1Mv06GoAAAAAAAAAAAAlEURRFEURRFEURRFLFgAAAAEAAAAACkUAAAAoAAsSgAAAAKSgACqAQAKAACkoABKoAAKAApKAQKAAFAAqgAKQAKAAKACygARQAUAFABQALKACgQsoAsoACUAFABQAUAFABQAlAEUAFABQgFABQAUIBQAUAFCALKALKALKgCwUAFACLKAAUACyoAAssBQQsqAALKAAAAAVLAAAAAQAAAEAAABAAKAAEAAABAAAhUFRFgoAAAQAAAAECFgAAABKAAAAAARFgAAAAAABAAgAAAAAAAAAAAAAAEAoAAAAF0c7R0+Ty9TL9OhqARRFEURRFEURRFEURRFEUQAAAAAAKAAEAAAAAAAAAAAAAAApRFAAQAAAUAACkUoAQAoAACgAASqAACgAKABAoAAooAoAELKACgACgAAoALLAAoABQAUAFAAssALKALKALKAAlABQAUAFABRAFCAUAFABQAlABQAVKAlABUoBUoCLKALBQLCUAFABQAiwUACygAJQALBRAAJQAAUAAAAARUFAAAEAAAABAAAAQCgAABAAABEVBYAAQACgABAAABAAEAAAAABKAAQWAAAEAAAAEFQAABAAAAAAAAAAAAAAAAAAAQABdHO0dX5PL1Mz07FakURRFEURRFEURRFgAAAAAAAAEoAAAAEURRFEURRFEURRFEURRFEUSigABAAApKAAABShAAAoAAAoABBSgACgAAoAEKAAKoAAKAQKAAKAAoAAoBAoAAsoAsoAKAAUQAoALKALKALKAAUAJQAUAFEAUAFACUAFABUoAsqAVKALKAVKgCygCygIsoABQAlABUoAsoCAUACwUIAsoAAsRQAlSgACwUAAAAQABUoAEAAAABAAAAQAACgCRUFQWAEAAAABAAAAi1EWAAAAEAAAAAERYAAKAAAEEFQVBYAAAAAAQAAAAAAAQVBUFQVBUFQAAAAAAXSzdK35TL1Mv06GoAAAAAAEAAAAAAJRFLFEURRFEURRFEURRAAAAAAAAAAAAoAAQURQAAAKRQCgCxKAAAAoAALLKAABQAAKABCgCikoAAKQABQALKAAKAAsAAKAAoAAoALKALLACygACgAsoAsoAsoAsoAElABQAUAFACUAFAAsoBQAiygCgAsqALBQLKAgFABQAUIAsoAsoCAVKAAUAIsFAABQBIsoAAAsFSgAAQAAAsFRFQVAAAEVBUFQVEVBUFgAoQAAAAEAAABAhUFgAoQAAAAAEAEFgAABAAAAKgABAAAAAAAAAQAIVBUAAAAAAAAAAAAAAAAF0s3St+UzNPM9KhqAAAAAAAAARRFEUsURRAAAAAAAAAAAAAAAARQAACgBAAAAAAApKAAKVAAAABRKAAQUoAApKAACgEAKAKBQAAKQAAoACgAAoEAKKAsoABQALKABFAAoALKgAFAAoALKALKBCygCygIsoABQAUAFACUACygFSgIsoBUoAsoCAUAFCAUAFAAsqALBQAUIAsoABUoCALKAALLAWBFQUAAAFQUAQAAAAAEAAABAAAAAQAAChAAAAAQIVBUAAQAAAAEoAABBUQAAAAAECFgAAAAAoQAAAAAQVAAAEAAAAAAAAAAAAAAAAAAXSzdK35XL1Mz0rFakURRFEURRFEUsURRFgAAAAAAAAAAAAAAlEURRFEURYAAAoQAAAAAAUSgAAUoQAAUSgAAAKspAABQAAKSkAAKKAAoAAKQAAsoAAoAoFAELKAAUACygACgECgAFABQALKAgFABRACgAsoAsoAsqAAUAFABUoBQgCygCygCyoAsoAsoCCgAFACVKAVKALKgAFABUoCLBQALKAgCwUACxFCAALBUoAAABURUFAAAEAAAAABAAAAQAAAAEpBUFQBAAAAAQAAAAECFQtgAABAAAhUAAQAAAAAAEACFQtgAAAAAABAAAAAAAAABBUFQVBUFQVBYHrSzNO35XM08z0qGgAAAAAAAAAAAAAAACURRFEURRFEURRFEAAAEAAoAAAAAAAAAABQEoApFAAAApFEpKAAKSgAAoABAKoAAKAACkAACgACigBCgAAoALKAAUAARQAUACgABQAKACygARQgFABQALKALKACoABQAKACyoAoALKALKgCygAFCAUACygCyoAsoACUACygCygIBUoACVKAAUAACxFCAAAVKAAABAAFSgAAQAAAAEAAABAAhUFQVEAoAAQAAAAAEAAEAAQCgAACRUFQAAAABAAAABBYAQAAAACgAAABABAAAAAAAAAAAAAAABdPM07flszTzPSoaAAAAAAAAAAARRFEURRFEURRAAAAABAAAAAKAlEURRFEURRFEURRFEUBAKKSgAAKRQAEAoApFAABQAAEFKAAAoAAKQAAKAAooAApAACgABQACgQAoACgAFAAoAAUAQsoAsoABQAlAAoALKALKAgFABQALKAlSgCygCygIsoABQAUIAsoAsJQLKAAUIAsFAsFCALBQALCUACygAQCLBQAAAUAAAQAAAsFRFAAgVBUFSwAAASwQWAAAEAAAoAQAAAIVEAAAABAAALAABAAAAAAQIVAAAAAAEAAAAEFQWCgABAAAAAAAAAAAAABBUFQetPM07fls3SzfSoaRRFEURRFEURRFEURRFEURRFEWAAAQAAAAAAABFLFEURRFEURYAAAAAAACyxRKAAApKAAAQKsUAAACkoABAqygAAKSgAApAABSgAFAQAoAAKAACgAEUAAFAAsoAsoABQBAtBAFAAsoABQAUIBQALKALKAAUIBQALKALKgCygCygAJQAUACyoAsoAKAgFAAsoCAUAFSgIBUoACVKAAVLAAAIsFAAAsFAAEAAAAABAAAAAQAAAAEAAAABAAKAEEFQAABAAAABEAAAAAoQAAAQVAEAAAAAAABABAAAAAAAAAEoAAhUFgAAAAAAAAAAetPM07fl8zTzfSsVpFEURRFEURRFEWAAQAAAAAAAAABFEURRFEUsURYAAAAAAAAAABAAKAAKRQAAALEUAoAABRKAAQUSigACkoABACgACqAApKAQAKAAKAACgEAKAACigAUACyoAsoEAKAAoAAoALKAAUAFCAKACygCwUAJQALKALKAiywAFUAJQAVKALKAiwUCwUIAsoAsFCALKALBQgAFAACVKBCwUAAAIBUoAAsFECFQUAAAQAAAAAEAAAABAAAAQAAQVCgBAAAAQAAIVAEAAAAABAi2AAAAAEAAACFQAABAAAAABBUFQWAAAEAAAoAAAAAAAAAF1MvUt+XzdLN9KhQAAAAAAAAAAAAAAAEURRFEURRFgCgAAAAAAAAAABAEUSigAAAAAAFAQCgAFEoAACkVAAKAUAAABBQACigAAoAEAKAACygACgEoCgAAoAAUAAFEALKACoAAsoABQAKAAoABQAlSgQsoAKAAUIAsoAsoACUAFAAsqALKALKAgVQBCy0CAUAFSgIBQALKAgCxFAACUACwUAAAIBUoAAAEAAVKAABAAAAAQAAAAEAIAAAQAAAChAAAAARAAAABAAAhUAASgAAAABABBYAAAAAQAAIAAAAAAAAABAAAAAAAAAAAAF1MvUt+XztLN9LYWAAAAAAAAAAAJRFEURRFEURYAAAAoAAAAAEURRFEVEURRFEURSxRFEURRFAAAQAClEoAAAFAQACgFAAABUSgACikoAACgAQKSgAAKoAAsAACgACygACygAQsoAAoALKACgAIKAAUACygARQAUAIsFABQAUAJQALKAAlABQALKAgoAsFCALKAAUIAstBCygWAVKABFSoABUoACLBQAAVBQAAAlSgAQAAAAsFQUQAIVBUFRFQVBUFgBAAAAAQAAAChAAhYAAQAAAAJFQAAAABAKAAIVAAEAAAAAEAAQAAAAAAAAAAARFQVBYAAAAAAAAAHrUy9S35jO0c70dhqAAAAAAAAARRFEURRFEUQAAAAKAAlEURRFEURURRFEURRFEAACgAAAACkVEURRKKAAAKSgAEAFLFAAABQEAACrKAAABUAACgAAKKBAUEUAAoAAKAAAUQABQACgACgAsoABQBAoACLKAAUACygAqAAUACgBUqALBQAUIAsoAsoCLKAAVKAiygAFSgIKAAUAIsFAAsFCAAVKAAlSgAACwUAAAJUoEAAAAAABAAAAAQAAAAEAAAABAAAhULUQAAAAEACFQAABAAAAAQIWACgAABAAhUFQAAAABAAAABBUFQAAAABAAAAAAAAAAAF1crV1fmc3SzvQ3FakURRFEoAAARRFEURRFEURRAAAAoACURRFRFEURRFEAAAAAACgAAAAAABAAAKURRFAAAQKSgCgACkoABABQCgAAFAQAAKAAoBQEAAKAACgAAoABCygAAoABQACgACygQsoAAsoAAsoCLKAALKALKAAlABQALKAgFABQAiygAoACUACygAJQALBQiwUACygIBUoAAsJQALBQAAlSgAACwUAAIEVBUFQVBQABAAAAAAQAAAAEAAAEFRAAAAASgAAAERUAAAAAQAAAQWAEAAAAoAgEAAAAAABABBUAAAAAAAAAAAAQAAAAAAAABdXK1dX5nO0s70NxWpFEURRFEURRFEURRFEURRFgAAEoACURRFEURRFEAAAAAAAACgAARRFRFEUSgAACgAAACkVAAKAAUSgEACkUAoAABQAEACkoAoACkAACkoAAKAAAoEAAUAACigAUIBQBAoAAsoABUoAAoALKgACgAsoAKAgFAAsoAsJQAKACwlAsoABUqALBQALKgAoACUACwUAIBQAALKgAFSgAAJUoAAAsFAEgAAAAAFQVLAABBUFQVEVBUoAIVEVBYAAAQAAAAEAoCAAEAAAAACRUAAAAAQAAQVAAChAAAAhUFQABAAAAAAAAAAABBUFQVEAAAAAAAAetXK1dX5rO0c/wBDcVqRRFEVEURRFEURRFEAAAACgAARRFEURRFEAAAAAAABFLFEURRFEVEURRFEURRFLFEoAAABAAAqxRKAAAQUSgAClEUAABAApKAKAAKBAAAoAAKAAAFASgCgAAAoAAsoAEUACiAALKAAKACygACygCwlAAsoAsFACUACygAFCALKACgIBQALKAgFSgCwlABQALKgACygIAsFAACVKAAVKAAAlSgAACxFSgIAAAAAEALBYAAAQAAAAAEAAAABAAAAAkVC1AAAAEAAEFgBAAAAAAQQWAAAAAECLYAAAAAAAQAAAAIVBUAAAAAAAQAAAAAAABdbJ1tX5vO0c/0NxVkURRFEURRFEAAAACgAAAJRFEURRFEAAAAAAAAlEUsURURRCkAAAAAACikURRFRFEUSgACgAACxFAAAKUAAABAApKAKAAKSkAACkoAACgKAECgAACgAAUAACgQAsoABQACgAIBQALKAAKACygIAsoAKAALKgAFABQAiygAFACLKALBQgCygAFCAVKAAlAABUoCAVBQAAlSgAFSgAAJUoAEAAAVBQgAAAQAAAAAEAAAAABAAAAAQQVAAAEoAAAAhURYAAAAQAAAIWAAEAAACFQABAAKAAAAAJFQWAAAAAAAAAAAAAAEAAAACFQetbJ1tX5vP0M/0NhYAAAAAAAACgAAAAJRFEURRFgAAAAAAAlEVEUsURRFgAAAAAAACgABAApFEURRFLFEoABAAABSgAAAFRFAAAKAUSkAACkUAAAooEBQQKAAAKAAAoAEAUAACgABQAAUAAoAAsqAAUACywAAogAFFBCygILQQFLKALCUACgCLKAAVKAgFABUoCLBQALCUACwUIAAsoAACUAAFQUAIAEVKAAAAAiwWAsFSwAAAAAEAAAAABAAhUAAQAAAAEAAogAAEAAAABAhUAAAAAQAQAAAABAAAAhULYAAAQAAAAAAAIVBUFQVBUAAAAQAAAB61sjX1fnM/Qz/v2GoAACgAAAAAAAAARRFEURRAAAAAAJURRFEUsURRFgAAAAAAAACgBAAAAAAAKAALEURRFAAKAKRRKQAAACgFAAAQUSgAACgCgQAAKAAAKAAAoEAAKAACygAAFAAsoAAsoEALKAiygACygAFACAUACwUAJQALKAAlABQBQJQALBQgFSgCwUIAsoAAsqAALBQgAFSgAIsoAAAsFCBAACwUAAAAAASALBUFQVBRCAAAAAsFRFgAAABAAAAAQIVCgAABAAAhUAQAAAAAIVEAAAAAABBBYAAAAAKAEAAACFgAAAAAAAAAAAAAABAF18jX1fnODQz/AL9hoAAAAAAAAAAAlEURRFEUQAQAAABFEURSxRFEUQAAAAAAEURSxURRFEURRKAAAKAAEAAAAApRFEoBAAABRFKAAAEFAAAAKAUSkAAACgAACgAAKBAACgCgALKAgCgAAsoEALKAAKACygIAoAAUAAJQALKAAUIAsFAsFACLKAAVKgAVQALKgAFSgIBUoACVKAAVKAgCwUAAJUoAAELBQAgACwUAAAAQAACAAAABAAAAAQAAAAAEACFQWAEAoAAAAkVAAAAEAAACAAAQAAAAQVAAEAAAAAAEFQVEtgAAAAAAAAAAEFQVBUFQVBUFQVB618jXt+d4O/g+/YaAAAAAAAABACURRFEURYAAAAAARRFEUsURRAAAAAAARRFRFLFEURRFgAURRFEUsURURRFEUSgACgAABApFAAKAAAEFAAAAKUSgAEAAAFAAACgEAooAAAKAAAAUAARRQQKkoAAUAAFAABQALKgACygAFACLKAAVKAiygAFACAUACygIBUoACUUAsFCALBQALCUAAFCAALKAAAlSwAAAsFACAAAVBYFQVLAAIAAAAEAAAAABAABBUFgBAAAAAQAAItgABAAAAAAQIVAAAAEAEFgAAAABAAAAhUAAAAAQAACgEFgAAAAAAAAAAAAAetfH2LfnuDv4Pv2FAAAAAAARRFEURRFEURYAAAAAARRFLFEURYAAAAAARRFRFEUsURRFgAAAAAChAAAAABRFLFEoBAAAAAKKRRKQAAAAClAAAAQAKRQAAClQFBAAoAAAKAAAAVKBACygACygAAoCAAUAAFAAsoACLKACkoALKgACygAJQAVKAAlAAsFCALKAALKgAFSgIBUoAFlSgACwUIEAVKAAAlSgAACwUAIAAAAEALBUoQVBQgAkVAAAABURUFgAAABAAAAAAkVAAAChAAABBYAQAAAAQWAEAAAAAACRUFgAAAAAACFQVEVAAAACgAAAAAAAAAAAAXYx9i357h7+D79hQACURRFEURRFEURRFEURYAAAAAAJRFLFEURYAAABACURRFEURSxYAAAAAAABKAAAAAAACgBBRFEURRFEooAAQAKRRFEUoAAQAAUAAAAopKQAAAoAAAKAAAAsSgAAAoAAUAACgAABQgCygACygACiAAUACygIAsoABQAiygACyoABQAgoABUoCAVKAAiygAAoCAALKAgAFSgAAJUoAAABUFQlAAEAAAAAAAgAQAAAAAEAAAAABAAABBYQACgAABBBYAAAAQAAAgAABAAABBUAAAQAAAAAIAABAAAAAAAAAAAKQVBUFQVBUFQWB62MfYt+f4e7h+/YUBFEURRFEURRFEURRFEAAAAAAAlLFEURRFgEAAAJRFEURRFEUsAAAAAAAlRFLFEURRFEoAAAoQAAAAAACgCxFEoAAAoAAQAKSgAAAKsUBAAAACygAAAoAAEAUAAAFAAAsoAAsoAAAUAALKgQFLKBAFFAgFAABQAigABQAgFAAsoCALKAAlSgAFACAVKAAlSgCwVKAgAFSgIABUoAACVKAAAAAgFRFAAAAAAAAEAAAgAAAQAAAAQWEAAAAABAABC2AEAAAAABBBYAAAAAQIWAAAAAEAACFQWAAAAAAEAAEFQVAAAAAAAAAAAAAB62MfYusDg7+H7txWkURRFEURRFEURRFEUQAAAAAAEUsVEURRFgAAAABFEURRFLAAAAAABCURRFLFEURRFEURRFEVLFEURRKAAALFEpAAAAABSxRFEVEUAAAAFLKAAAQAAAUAAAAKAQACrKAAALKAACpKAACygQABQAALKAAlAABQAAlAAsoAAsqAAVLQAJUoABQAiwUACwlAAsFCALBQALCUAAFCAAAVKAgAFSgAAJUFQUAAAQCAVBUFQVKAABAAAAAAhURUJUFQWAAEAAAAABABAAAAEoAAACAEAAAACFQBAAAAAAAhYQAAAAAAAQVBUAQAAAAAAAAAAAAAAAABdnG2brA4e/h+7pFakURRFEURRFEURRFEWQAAAAACxRFEURRFEAAAABFEURRFLAAAABAAEURRFLFEWAAAAAQCgAAAAAAoQAAKRQAACgABAAAABSgABAAApFAAAAKAELKAAACgAAACgAAsoEACkoAAgFAAAsoABQAgCygAFACLKAALKAgCygACy2AALKAgFSgAoCAAVKAgFSgAJUoAAsFCAAAVKAgAFSgAIAABUoEAAAgAAAAFRFgAAAAWAAEgAAKAAEgAAAABEAAAoIAEApBYAAAQAAQWAAAEAAACFQAABAAAABBUAAAAQAAAAAAAAAAIVBUFQVBUFQVB62cbZusHh7uL7ukVZFEURRFEURRFEURRAAAAAoEURRFEURYAAAAARRFEURSxYABAACURRFEURSxRAAAABAAKAAAAAAChAAAAAAAKAVEURRFEoAoAAQAKRQAAACgABBRKAAAApKAAABQEAALKAACgAAAoACAUAAFAAAsqAAKACwlAAsoACAUAAFCALKAAlFAAUAIAsFCAAUAAJQAALBQgACwUAIAABQAgAQAsFQVBQgAAAAAQAAAAAAEAAAAAgASiFQAAgASggAABC2AEAAAACFhAAAAAAQIVAAAAAAEEFQAAAAAAAABAABBUFgAAAAAAAAAAAAetnG2bcLh7uL7usVZFEURRFEURRFEURYAAAoACURRFEURRAAAAAJRFEURSxUQAAEURRFEURRFLAAAABAAAKAAlEURRFEVLFEURRFEUSgCgBAAAAAAKAAEFEoAAAAAoQKRQAAAAAoAAACwAAAABQAALKAAAFAAAFCAAUAACgCAUAAFACAUAAJQAAVKAgFAAsJQALBQgUAoAgCygACwlAAAsJQAALBQAgACwVKBAIAAAAsFQUABCUQAAAAAAAEAEFQVBUFRFgAgAKAAEgAKgAgASgAAACAAQAAAIVAAEAAAAACFhAAAAAAABBUFQABAAAAAAAAAAAAAAAAF2sXatwuLu4vu6xVkURRFEURRFEURRAAoAAAEURRFEURRAAAAJURRFLFEUQAACURRFEURSwAAAQAAlEU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AAgACyoAFAAgAFBLKgAAAIAACAUAAIAAAACAAAAiwWAsoCSygACBQAiWCwUAECAAAAABAWBAAACWAAAIAAAEAAAIAAAAIAAAlgEAAAAAJYAAAAgKACBKAggAAAAAAAAAAAAACAEAAAAAAAe/ovnfotX8vPrz3+gAAKAACAAAEoiwAAAAAAASiABQEogAEogAEsUAISiAAgUBLAACABYBKIACCUCAAiwAgUBLACLAJQIACABUsAAIAJUogAEogUBLAAACCAVLAAAACLAAAFAgAgAACAAAAAAAAAABAAAAAAAAAQAABZRLEWUCgAAQAABZQEAAABAAFlQAAKBAAKCWVAAAAQAAEAqUABAAAAAQAAAEAAApEAoAIBZQESwAqUAgQAAAAAICwIAAASwAABAAAAgABAAAAABAAAIIAAAAAASwAAABAUAECUEgAAAAAAAAAAAAAAIAIAAAAAACvX0fzn0d1+Xn1579wAAAAAoIAAAAiwAAAAAABUsAAAEsAAIsAUCACAIABLFASiAAgAWAAgAIIBYsAEsAEsUBLABKWCAIACABUogAIAJQIAACBQEsAAAiBQAIAAABKIAAFAgAgAACAAAAAAAAAABAAAAAAAAAQAABZRLBZUACggLAAAFlAQAAAEAAWUBAAoEAAqUllQAAAEAAABFlAAQAAAAEAAABAAALABFlAIBYKESwAWCggQAAAAAICwIAAAQAAAAQAAAAIgAAAAAQAACCAAAAAAEsAAAAAAAQJREAAAAAAAAAAAAAASwACAAAAAoAD19H859Hdfl59ee/cAAAAAAAAAAACKIsAAAAAEpYAABKIABLAFASiCAEsAAWAAgAIAFiwAiwCEsUBKIBLAFSwASwABYsgBLABLAFAgAIAJQEsAAIFAAgAAiBQAIAAAACAABQIsAgAABKIAAAAAAAAAEAAAAAAAABAAAFBKJZUACggLAAAFlAQAAAEAAAoQAKBAAFlJZUAAABAAAARZQAEAAAABAAAAQAAAAEAoIAChEsAALLAEAAAACAAsCAAAIAAAAEAAACBAAAAAEAAAAggAAAAACAAABAUAAECVLEAAAAAAAAAAAAAAgAAgAAKAAAA9fR/OfR3X5efU794oiwAAAAAAAAAAAAASiLAAAFiwAAAiwAAgAUIiwASwABYACLABLAFSwASiCEpYACAAgVKIACABUsgBLA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YrxivGK8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPGI8YjxiPDj9L/N3PvPZsvqyc3brC+rJzdusL6snN26wvqyc3brC+rJzdusL6snN26wvqyc3brC+rJzdusL6snN26wvqyc3brC+rJzdusL6snN26wvqyc3ZrC+rJzdmsL6snN2awvqyc3ZrC+rJzdmsL6snN2awvqyc3ZrC+rJzdmsL6snN2awvqyc3ZrC+rJzdmsL6snN2awvqyc3ZrC+rJzdmsL6snN2awvqyc3ZrC+rJzdmsL6snN2awvqyc3ZrC+rJzdmrr6snN2auvqyc3Zq6+rJzdmrr6snN2auvqyc3Zq6+rJzdmrr6snN2auvqyc3Zq6+rJzdmrr6snN2auvqyc3Xq6+rJzderr6snN16uvqyc3Xq6+rJzderr6snN16uvqyc3Xq6+rJzderr6snN16uvqyc3Xq6+rJzderr6snN16uvqyc3Xq6+rJzderr6snN16uvqyc3Vq6+rJzdWrr6snN1auvqyc3Vq6+rJzdWrr6snN1asvqyc3Vqy+rJzdWrL6snN1asvqyc3Vqy+rJzdWrL6snN1asvqyc3Vqy+rJzdOrL6snN06svqyc3Tqy+rJzdOrL6uzm6dWX1dnN06svq7Obp1ZfV2c3Tqy+rs5unVl9XZzdGrL6uzm6NVX1dnN0aqvq7WN0aqvq7WN0aqvq7WN0aqvq7WN0aqvq7WN0aqvq7WNz6qvq7WNz6qvq7WNz6qvq7WNz6qvq7WNz6qvq7WNz6qvq7WNz6qvq7WNz6qvq7WNzaovq7WNzaovq7WNzaovq7WNzaovq7WNzaovq7WNzaovq7WNzaovq7WNzaovq7WNy6ovq7WNy6ovq7WNy6ovq7WNy6ovq7WNy6ovq7WNy6ovq7WNyamvq7WNyamvq7WNyamvq7WNyamvq7WNyamvq7WNx6mvq7WNx6mvq7WNx6mvq7WNx6mvq7WNx6kvq7WNx6kvq7WNxakvq7WNxakvq7WNxakvq7WNxakvq7WNxakvq7WNw6kvq7WNw6kvq7WNw6kvq7WNw6ivq7WNw6ivq7WNwaivq5WNwaivq5WNwaivq7WNwaivq5WNwaivq5WM/wBRX1crGf6ivq5WM/1FfVyuZ/qC+rlcz/UF9XK5n+oL6uVzPtQX1crmfagvq5XM+1BfVyuZ9qC+rlcz3UF9XK5nuoL6uVzPf3r6uVzPf3r6uVzPP3r6uVzPP3r6uVzPP3r6uVzPP3r6uVzO/wB6+rlczv8Acvq5XM7/AHL6uVzO/wBy+rlczr9y+rlczr9y+rlczr9y+rlczr9y+rlczn9y+rlczn9q+rlczn9q+rlczn9q+rlczj9q+rlczj9q+rlczj9q+rlczj9q+rlczf8AYvq5XM3/AGL6uVzN/wBi+rlczf8AYvq5XM2/Yvq5XM2/Yvq5XM2/Yvq5XM2/Yvq5XM1/Wvrd1zNf1r63dczX9a+t3XM1/Wvrd1zNP1r63dczT9a+t3XM0/Wvrd1zNP1L63dczP8AUvrd1zM/1L63dczP9S+t3XMz/Uvrd1zMv1L63fcMy/Uvrd9wzL9K+t33DMf0r63fcMx/Svrd9wzH9K+t33DMf0r63fcMw/Svrd9wzD9K+t33DMP0L63fcMw/Qvrd9w8/9C+t33Dz/wBC+t33Dz/0L63fcPP/AEL63fcPO/Qvrd9w879C+t33Dzu+vrd9w87vr63fcPN76+t33Dze+vrd9w83vr63fcPN76+t33DzO+vrd9w8zvr63fcPM7y+t33DzO8vrd9w8zvL63fcPL7y+t33Dy+8vrd9w8vvL63fcPL7y+t33Dyu8vrd9w8rur63fcPK7q+t33Dyu6vrd9w8rur63fcPJ7q+t33Dye6vrd9w8nur63fcPJ7q+t33Dye6vrd9w8juL63fcPI7i+t33DyO4vrd9w8juL63fcPI7i+t33DyO4vrd9wv+4vrd9wv+4vrd9wv+4vrd9wv+4vrd9wv+4vrd9wvq6+t33C+rr63fcL6uvrd9wvq6+t33C+rr63fcL6uvrd9wvq6+t33C9rr63fcL2uvrd9wva6+t33C9rr63fcL2uvrd9wva6+t13C9rr63XcL2svrddwvay+t13C8rL63XcLysvrddwvKy+t13C8rL63XcLysvrddwvKy+t13C8rL63XcLysvrddwvKy+t13C8rL63XcLysvrddwvKy+t13B+svrddwfrL63XcH6y+t13B+svrddwfrL63XcH6y+t13B+svrddwfrL63XcH6y+t13B+svrddwfrL63XcH2L7eD4719ff406HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQ6HQhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP5n8z+Z/M/mfzP5n8z+Z/M/mfzP5n8z+Z/M/mfzP5n8z+Z/M/mfzP5n8zx+0f/aAAgBAgIGPwBNr/WzyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyiiKIoiiKIoiiKIoiiKIoiiKIoiiKIoiiKIoiiKIoiiKIoiiKIoiiKIoiiKIoUKFChQoUKFChQoUKFChQoUKFCn9PUqVKlSpUqVKlSpUqVKsqyrKsqyrKsqyrKsqyrKsqyrKsqyrKsqyrKsqyrKsqyrKsqyrKsqyrKsqyrKsqyrKsqz0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0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sW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9Yt6xb1i3rFvWLesW9YtqxbVi2rFtWLasW1YtqxbVi2rFtWLasW1YtqxbVi2rFtWLasW1YtqxbVi2rFtWLasW1YtqxbVi2rFtWLasW1YtqxbVi2rFtWLasW1YtqxbVi2rFtWLasW1YtqxbVi2rFtWLasW1YtqxbVi2rFtWLasW1YtqxbVi2rFtWLasW1YtqxbVi2rFtWLasW1YtqxbVi2rFtWLasW1Ytqxa1i1rFrWLWsWtYtaxa1i1rFrWLWsWtYtaxa1i1rFrWLWsWtYtawWz/8APb/Gf//Z" transform="matrix(0.48 0 0 0.48 -5.28 -5.28)">
+ </image>
+ </g>
+ </g>
+ </g>
+ </g>
+</g>
+</svg>
diff --git a/app/intro/main.js b/app/intro/main.js
new file mode 100644
index 0000000..0bf092c
--- /dev/null
+++ b/app/intro/main.js
@@ -0,0 +1,90 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022- Minteck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+function posY(elm) {
+ var test = elm, top = 0;
+
+ while(!!test && test.tagName.toLowerCase() !== "body") {
+ top += test.offsetTop;
+ test = test.offsetParent;
+ }
+
+ return top;
+}
+
+function viewPortHeight() {
+ var de = document.documentElement;
+
+ if(!!window.innerWidth)
+ { return window.innerHeight; }
+ else if( de && !isNaN(de.clientHeight) )
+ { return de.clientHeight; }
+
+ return 0;
+}
+
+function scrollY() {
+ if( window.pageYOffset ) { return window.pageYOffset; }
+ return Math.max(document.documentElement.scrollTop, document.body.scrollTop);
+}
+
+function checkvisible( elm ) {
+ var vpH = viewPortHeight(), // Viewport Height
+ st = scrollY(), // Scroll Top
+ y = posY(elm);
+
+ return (y > (vpH + st));
+}
+
+document.body.innerHTML = document.body.innerHTML.replaceAll("\n", "").replace(/> *</gm, "><").trim();
+
+window.onscroll = () => {
+ if (window.innerWidth > 700) {
+ if (window.scrollY() > (window.innerHeight - 52)) {
+ document.getElementsByTagName("header")[0].classList.add("scrolled");
+ } else {
+ document.getElementsByTagName("header")[0].classList.remove("scrolled");
+ }
+ } else {
+ if (window.scrollY() > (window.innerHeight - 120)) {
+ document.getElementsByTagName("header")[0].classList.add("scrolled");
+ } else {
+ document.getElementsByTagName("header")[0].classList.remove("scrolled");
+ }
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/intro/session.php b/app/intro/session.php
new file mode 100644
index 0000000..9a1fbaf
--- /dev/null
+++ b/app/intro/session.php
@@ -0,0 +1,64 @@
+<?php
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022- Minteck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+global $_CONFIG;
+$_CONFIG = json_decode(file_get_contents("/mnt/familine/private/FamilineConfig.json"), true);
+
+global $loggedIn;
+$loggedIn = null;
+
+global $_WELCOMED;
+if (!file_exists("/mnt/familine/private/welcomed.json")) {
+ file_put_contents("/mnt/familine/private/welcomed.json", "[]");
+}
+$_WELCOMED = json_decode(file_get_contents("/mnt/familine/private/welcomed.json"), true);
+
+if (isset($_COOKIE['FL_SESSION_TOKEN'])) {
+ if (str_contains($_COOKIE['FL_SESSION_TOKEN'], ".") || str_contains($_COOKIE['FL_SESSION_TOKEN'], "/")) {
+ $loggedIn = false;
+ }
+
+ if (file_exists("/mnt/familine/private/tokens/" . str_replace(".", "", str_replace("/", "", $_COOKIE['FL_SESSION_TOKEN'])))) {
+ $_PROFILE = json_decode(file_get_contents("/mnt/familine/private/tokens/" . str_replace(".", "", str_replace("/", "", $_COOKIE['FL_SESSION_TOKEN']))), true);
+
+ if (isset($_PROFILE['familine'])) {
+ $loggedIn = false;
+ }
+
+ $_USER = $_PROFILE['login'];
+ $_SUID = $_PROFILE['login'];
+ $_FULLNAME = $_PROFILE['name'];
+ $loggedIn = true;
+
+ if (!in_array($_USER, $_WELCOMED)) {
+ $loggedIn = false;
+ }
+ } else {
+ $loggedIn = false;
+ }
+} else {
+ $loggedIn = false;
+} \ No newline at end of file
diff --git a/app/intro/statusbar.php b/app/intro/statusbar.php
new file mode 100644
index 0000000..3eb2894
--- /dev/null
+++ b/app/intro/statusbar.php
@@ -0,0 +1,28 @@
+<?php
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022- Minteck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+header("Location: https://cdn.familine.minteck.org/statusbar.php");
+die();
diff --git a/app/intro/stylesheet.css b/app/intro/stylesheet.css
new file mode 100644
index 0000000..da3b44b
--- /dev/null
+++ b/app/intro/stylesheet.css
@@ -0,0 +1,474 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022- Minteck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+@font-face {
+ src: url("/webfonts/Lato-Black.ttf");
+ font-family: "Lato";
+ font-weight: 900;
+ font-style: normal;
+}
+
+@font-face {
+ src: url("/webfonts/Lato-BlackItalic.ttf");
+ font-family: "Lato";
+ font-weight: 900;
+ font-style: italic;
+}
+
+@font-face {
+ src: url("/webfonts/Lato-Bold.ttf");
+ font-family: "Lato";
+ font-weight: 700;
+ font-style: normal;
+}
+
+@font-face {
+ src: url("/webfonts/Lato-BoldItalic.ttf");
+ font-family: "Lato";
+ font-weight: 700;
+ font-style: italic;
+}
+
+@font-face {
+ src: url("/webfonts/Lato-Light.ttf");
+ font-family: "Lato";
+ font-weight: 300;
+ font-style: normal;
+}
+
+@font-face {
+ src: url("/webfonts/Lato-LightItalic.ttf");
+ font-family: "Lato";
+ font-weight: 300;
+ font-style: italic;
+}
+
+@font-face {
+ src: url("/webfonts/Lato-Thin.ttf");
+ font-family: "Lato";
+ font-weight: 100;
+ font-style: normal;
+}
+
+@font-face {
+ src: url("/webfonts/Lato-ThinItalic.ttf");
+ font-family: "Lato";
+ font-weight: 100;
+ font-style: italic;
+}
+
+@font-face {
+ src: url("/webfonts/Lato-Regular.ttf");
+ font-family: "Lato";
+ font-weight: 400;
+ font-style: normal;
+}
+
+@font-face {
+ src: url("/webfonts/Lato-Italic.ttf");
+ font-family: "Lato";
+ font-weight: 400;
+ font-style: italic;
+}
+
+html, body {
+ margin: 0;
+ font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", sans-serif;
+}
+
+#main-nav {
+ font-size: 14px;
+}
+
+.container, .container-fluid, .container-lg, .container-md, .container-sm, .container-xl {
+ width: calc(100% - 30px);
+ padding-right: 15px;
+ padding-left: 15px;
+ margin-right: auto;
+ margin-left: auto;
+}
+
+@media (min-width: 576px) {
+ .container, .container-sm {
+ max-width: 540px;
+ }
+}
+
+@media (min-width: 768px) {
+ .container, .container-md, .container-sm {
+ max-width: 720px;
+ }
+}
+
+@media (min-width: 992px) {
+ .container, .container-lg, .container-md, .container-sm {
+ max-width: 960px;
+ }
+}
+
+@media (min-width: 1200px) {
+ .container, .container-lg, .container-md, .container-sm, .container-xl {
+ max-width: 1140px;
+ }
+}
+
+#nav-logo-img {
+ width: 32px;
+ height: 32px;
+}
+
+#nav-logo {
+ display: inline-block;
+}
+
+header {
+ padding: 10px;
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 32px;
+ background: linear-gradient(180deg, rgba(255,255,255,.75) 0%, rgba(255,255,255,0) 100%);
+ transition: background 200ms;
+}
+
+header * {
+ vertical-align: middle;
+}
+
+.nav-link {
+ margin-left: 15px;
+ margin-right: 15px;
+ color: rgba(0, 0, 0, .5);
+ text-decoration: none;
+}
+
+.nav-link:hover {
+ text-decoration: underline;
+}
+
+.nav-link:active {
+ color: black;
+}
+
+#nav-links {
+ display: inline-block;
+ padding-left: 15px;
+}
+
+.nav-link {
+ display: inline-block;
+}
+
+#nav-aside {
+ float: right;
+ margin-top: 5px;
+ border-radius: 9999px;
+ padding-left: 10px;
+ padding-right: 10px;
+ border: 1px solid rgba(0, 0, 0, .5);
+ color: rgba(0, 0, 0, .5);
+ text-decoration: none;
+ height: 21px;
+}
+
+#nav-aside:hover {
+ border: 1px solid rgba(0, 0, 0, .75);
+ color: rgba(0, 0, 0, .75);
+}
+
+#nav-aside:active {
+ border: 1px solid rgba(0, 0, 0, 1);
+ color: rgba(0, 0, 0, 1);
+}
+
+#loggedin-profile {
+ border-radius: 999px;
+ width: 16px;
+ vertical-align: middle;
+}
+
+#loggedin-name {
+ vertical-align: middle;
+ display: inline-block;
+}
+
+#loggedin-action {
+ display: inline-block;
+}
+
+main {
+ height: 100%;
+}
+
+#hero {
+ height: 100vh;
+ background-image: url("/intro.svg");
+ background-position: center;
+ background-size: cover;
+ pointer-events: none;
+}
+
+#hero-content {
+ height: calc(100vh - 52px);
+ padding-top: 52px;
+ margin-top: -100vh;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+}
+
+#hero-content * {
+ text-align: center;
+}
+
+#hero-content #hero-title-part-big {
+ margin: 5px;
+ font-weight: normal;
+ font-size: 96px;
+}
+
+#hero-content #hero-title-part-small {
+ margin: 5px;
+ font-weight: normal;
+ font-size: 42px;
+}
+
+#hero-stylized {
+ font-weight: bold;
+ background: linear-gradient(145deg, rgba(93,33,33,1) 0%, rgba(90,93,33,1) 20%, rgba(33,93,41,1) 40%, rgba(33,91,93,1) 60%, rgba(35,33,93,1) 80%, rgba(93,33,86,1) 100%);
+ background-clip: text;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+}
+
+header.scrolled, header.scrolled-force {
+ background: black;
+}
+
+header.scrolled #nav-aside, header.scrolled-force #nav-aside {
+ border: 1px solid rgba(255, 255, 255, .75);
+ color: rgba(255, 255, 255, .75);
+}
+
+header.scrolled #nav-aside:hover, header.scrolled-force #nav-aside:hover {
+ border: 1px solid rgba(255, 255, 255, .85);
+ color: rgba(255, 255, 255, .85);
+}
+
+header.scrolled #nav-aside:active, header.scrolled-force #nav-aside:active {
+ border: 1px solid rgba(255, 255, 255, 1);
+ color: rgba(255, 255, 255, 1);
+}
+
+#nav-aside, #nav-link {
+ transition: border 200ms, color 200ms;
+}
+
+header.scrolled .nav-link, header.scrolled-force .nav-link {
+ color: rgba(255, 255, 255, .75);
+}
+
+header.scrolled .nav-link:active, header.scrolled-force .nav-link:active {
+ color: white;
+}
+
+.button {
+ margin-top: 10px;
+ display: inline-block;
+ background: black;
+ border-radius: 5px;
+ text-decoration: none;
+ color: white;
+ padding: 7px 15px;
+ border: 1px solid transparent;
+ box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.5);
+ transition: box-shadow 200ms;
+}
+
+.button:hover {
+ box-shadow: 0 0 0 5px rgba(255, 255, 255, 0.5);
+}
+
+.button:active {
+ box-shadow: 0 0 0 5px rgba(255, 255, 255, 0.75);
+}
+
+.button:nth-last-child(1) {
+ margin-left: 10px;
+}
+
+:nth-child(3).button {
+ margin-left: 0 !important;
+}
+
+.button-secondary {
+ background: #333;
+}
+
+.button-main {
+ color: black;
+ background: #ddd;
+}
+
+.h5, h5 {
+ font-size: 24px;
+ margin-bottom: .5rem;
+ margin-top: 0;
+}
+
+.container p {
+ margin-top: 0;
+ margin-bottom: 1rem;
+}
+
+ .welcome-box-container {
+ display: grid;
+ grid-template-columns: 50% 50%;
+ }
+
+.welcome-box-container .welcome-box-container--inner {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 100%;
+}
+
+.welcome-box-container .welcome-box-container--inner > div {
+ width: 100%;
+}
+
+.welcome-box {
+ padding-top: 20px;
+ padding-bottom: 20px;
+}
+
+.welcome-box-app {
+ text-align: center;
+ padding: 10px;
+}
+
+.screenshot {
+ border-radius: 5px;
+ box-shadow: 5px 8px 11px 2px rgba(0, 0, 0, 30%);
+}
+
+.welcome-box-0 {
+ background-color: rgba(0, 0, 0, .25);
+}
+
+.welcome-box-1 {
+ background-color: rgba(0, 0, 0, .17);
+}
+
+.welcome-box-2 {
+ background-color: rgba(0, 0, 0, .09);
+}
+
+.welcome-box-3 {
+ background-color: rgba(236, 88, 58, 25%);
+}
+
+.welcome-box-4 {
+ background-color: rgba(234, 111, 58, 25%);
+}
+
+.welcome-box-5 {
+ background-color: rgba(236, 206, 59, 25%);
+}
+
+.welcome-box-6 {
+ background-color: rgba(59, 239, 59, 25%);
+}
+
+.welcome-box-7 {
+ background-color: rgba(58, 233, 109, 25%);
+}
+
+.welcome-box-8 {
+ background-color: rgba(53, 183, 255, 25%);
+}
+
+.welcome-box-9 {
+ background-color: rgba(149, 59, 239, 25%);
+}
+
+.welcome-box-10 {
+ background-color: rgba(237, 59, 211, 25%);
+}
+
+@media (max-width: 700px) {
+ .welcome-box-container {
+ grid-template-columns: 1fr !important;
+ }
+}
+
+.text-muted {
+ color: #6c757d !important;
+}
+.small, small {
+ font-size: 80%;
+ font-weight: 400;
+}
+
+#skip-header {
+ margin-top: 52px;
+}
+
+@media (max-width: 700px) {
+ #hero-content #hero-title-part-big {
+ font-size: 48px;
+ }
+ #hero-content #hero-title-part-small {
+ font-size: 28px;
+ }
+ .nav-link {
+ display: block;
+ text-align: center;
+ margin: 0;
+ }
+ #nav-aside {
+ float: initial;
+ display: block;
+ margin-left: auto;
+ max-width: fit-content;
+ margin-top: 5px;
+ }
+ header {
+ height: 100px;
+ }
+ #hero-content {
+ height: calc(100vh - 120px);
+ padding-top: 120px;
+ }
+ #skip-header {
+ margin-top: 120px;
+ }
+ #nav-links {
+ width: calc(100% - 32px);
+ padding-left: 0;
+ }
+} \ No newline at end of file
diff --git a/app/intro/webfonts/Lato-Black.ttf b/app/intro/webfonts/Lato-Black.ttf
new file mode 100644
index 0000000..4340502
--- /dev/null
+++ b/app/intro/webfonts/Lato-Black.ttf
Binary files differ
diff --git a/app/intro/webfonts/Lato-BlackItalic.ttf b/app/intro/webfonts/Lato-BlackItalic.ttf
new file mode 100644
index 0000000..4df1555
--- /dev/null
+++ b/app/intro/webfonts/Lato-BlackItalic.ttf
Binary files differ
diff --git a/app/intro/webfonts/Lato-Bold.ttf b/app/intro/webfonts/Lato-Bold.ttf
new file mode 100644
index 0000000..016068b
--- /dev/null
+++ b/app/intro/webfonts/Lato-Bold.ttf
Binary files differ
diff --git a/app/intro/webfonts/Lato-BoldItalic.ttf b/app/intro/webfonts/Lato-BoldItalic.ttf
new file mode 100644
index 0000000..a05d503
--- /dev/null
+++ b/app/intro/webfonts/Lato-BoldItalic.ttf
Binary files differ
diff --git a/app/intro/webfonts/Lato-Italic.ttf b/app/intro/webfonts/Lato-Italic.ttf
new file mode 100644
index 0000000..0d0f69e
--- /dev/null
+++ b/app/intro/webfonts/Lato-Italic.ttf
Binary files differ
diff --git a/app/intro/webfonts/Lato-Light.ttf b/app/intro/webfonts/Lato-Light.ttf
new file mode 100644
index 0000000..dfa72ce
--- /dev/null
+++ b/app/intro/webfonts/Lato-Light.ttf
Binary files differ
diff --git a/app/intro/webfonts/Lato-LightItalic.ttf b/app/intro/webfonts/Lato-LightItalic.ttf
new file mode 100644
index 0000000..12f2b6c
--- /dev/null
+++ b/app/intro/webfonts/Lato-LightItalic.ttf
Binary files differ
diff --git a/app/intro/webfonts/Lato-Regular.ttf b/app/intro/webfonts/Lato-Regular.ttf
new file mode 100644
index 0000000..bb2e887
--- /dev/null
+++ b/app/intro/webfonts/Lato-Regular.ttf
Binary files differ
diff --git a/app/intro/webfonts/Lato-Thin.ttf b/app/intro/webfonts/Lato-Thin.ttf
new file mode 100644
index 0000000..ba58da1
--- /dev/null
+++ b/app/intro/webfonts/Lato-Thin.ttf
Binary files differ
diff --git a/app/intro/webfonts/Lato-ThinItalic.ttf b/app/intro/webfonts/Lato-ThinItalic.ttf
new file mode 100644
index 0000000..4d82766
--- /dev/null
+++ b/app/intro/webfonts/Lato-ThinItalic.ttf
Binary files differ
diff --git a/app/media/index.php b/app/media/index.php
new file mode 100644
index 0000000..c927d25
--- /dev/null
+++ b/app/media/index.php
@@ -0,0 +1,51 @@
+<?php
+
+require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
+
+/** @var string $_FULLNAME
+ * @var string $_USER
+ * @var string $_SUID
+ * @var array $_PROFILE
+ */
+
+?>
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>Familine Média</title>
+ <link rel="icon" href="https://familine.minteck.org/icns/familine-media.svg">
+ <link rel="stylesheet" href="https://familine.minteck.org/styles.css">
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
+</head>
+<body>
+ <div class="container" style="margin-top:30px;">
+ <h1>Familine Média</h1>
+ <p>Écoutez de la musique, visionnez des photos et regardez vos films familiaux préférés grâce à la suite Familine Média.</p>
+ <div class="list-group">
+ <a href="https://cinema.familine.minteck.org" class="list-group-item list-group-item-action">
+ <img src="https://familine.minteck.org/icns/familine-movies.svg" style="width:32px;vertical-align: middle;"> <span style="vertical-align: middle;">Films</span>
+ </a>
+ <a href="https://music.familine.minteck.org" class="list-group-item list-group-item-action">
+ <img src="https://familine.minteck.org/icns/familine-music.svg" style="width:32px;vertical-align: middle;"> <span style="vertical-align: middle;">Musique</span>
+ </a>
+ <a href="https://photos.familine.minteck.org" class="list-group-item list-group-item-action">
+ <img src="https://familine.minteck.org/icns/familine-photos.svg" style="width:32px;vertical-align: middle;"> <span style="vertical-align: middle;">Photos</span>
+ </a>
+ </div>
+ </div>
+ <script>
+ console.log("Injecting Familine header")
+ document.body.innerHTML = document.body.innerHTML + "<iframe style=\"position:fixed;left:0;right:0;top:0;border: none;width: 100%;height:32px;\" src=\"https://<?= /** @var array $_CONFIG */
+ $_CONFIG["Global"]["cdn"] ?>/statusbar.php\"></iframe>";
+ document.getElementsByTagName("html")[0].style.marginTop = "32px";
+ document.getElementsByTagName("html")[0].style.height = "calc(100vh - 32px)";
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/app/planning/.gitlab-ci.yml b/app/planning/.gitlab-ci.yml
new file mode 100644
index 0000000..4402674
--- /dev/null
+++ b/app/planning/.gitlab-ci.yml
@@ -0,0 +1,15 @@
+# Generic Minteck GitLab CI/CD Checks
+# PHP applications
+image: php:zts-buster
+
+cache:
+ paths:
+ - vendor/
+
+before_script:
+ - apt-get update
+ - apt-get install -y git
+
+test:
+ script:
+ - bash -c '[[ $(find . -name \*.php -exec php -l {} \; | grep -v "No syntax errors") ]] && exit 2 || exit 0'
diff --git a/app/planning/LICENSE b/app/planning/LICENSE
new file mode 100644
index 0000000..318113a
--- /dev/null
+++ b/app/planning/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021- Minteck
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/app/planning/README.md b/app/planning/README.md
new file mode 100644
index 0000000..75e1227
--- /dev/null
+++ b/app/planning/README.md
@@ -0,0 +1,8 @@
+# Familine Camera (wrapper)
+
+* Chemin d'installation attendu : `/mnt/familine/app/console`
+
+## Installation
+1. Copiez les fichiers dans le dossier `/mnt/familine/app/console`
+3. Configurez votre serveur Web pour pointer le sous-domaine `console.` vers Familine Camera (wrapper)
+4. C'est prêt ! \ No newline at end of file
diff --git a/app/planning/SatteliteGiteaData.txt b/app/planning/SatteliteGiteaData.txt
new file mode 100644
index 0000000..91e708c
--- /dev/null
+++ b/app/planning/SatteliteGiteaData.txt
@@ -0,0 +1 @@
+Familine Camera Wrapper \ No newline at end of file
diff --git a/app/planning/index.php b/app/planning/index.php
new file mode 100644
index 0000000..603bfdb
--- /dev/null
+++ b/app/planning/index.php
@@ -0,0 +1,163 @@
+<?php
+
+require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
+
+/** @var string $_FULLNAME
+ * @var string $_USER
+ * @var string $_SUID
+ * @var array $_PROFILE
+ * @var boolean $_ADMIN
+ */
+
+if (!$_ADMIN) {
+
+}
+
+?>
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>Familine Planning</title>
+ <link rel="icon" href="https://familine.minteck.org/icns/familine-planning.svg">
+ <link rel="stylesheet" href="https://familine.minteck.org/styles.css">
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
+</head>
+<body style="background-color:#ffffff !important;">
+<iframe src="https://planning.<?= /** @var array $_CONFIG */
+$_CONFIG["Global"]["domain"] ?>/hp/etudiant" style="
+ border: none;
+ background-color: #ffffff;
+ position: fixed;
+ top: 32px;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ width: 100%;
+ height: calc(100vh - 32px);
+"></iframe>
+<script>
+ console.log("Injecting Familine header")
+ document.body.innerHTML = document.body.innerHTML + "<iframe style=\"position:fixed;left:0;right:0;top:0;border: none;width: 100%;height:32px;\" src=\"https://<?= /** @var array $_CONFIG */
+ $_CONFIG["Global"]["cdn"] ?>/statusbar.php\"></iframe>";
+ document.getElementsByTagName("html")[0].style.marginTop = "32px";
+ document.getElementsByTagName("html")[0].style.height = "calc(100vh - 32px)";
+
+function tt(orig, newt) {
+ document.getElementsByTagName('iframe')[0].contentDocument.querySelector("#breadcrumbBandeau.titre-onglet[aria-label=\"" + orig + "\"]").innerText = newt;
+ document.getElementsByTagName('iframe')[0].contentDocument.querySelector("h3.fil-ariane").style.display = "none";
+}
+
+function te(orig, newt) {
+ document.getElementsByTagName('iframe')[0].contentDocument.querySelector(".Texte10.Gras.AlignementMilieu").innerText = document.getElementsByTagName('iframe')[0].contentDocument.querySelector(".Texte10.Gras.AlignementMilieu").innerText.replaceAll(orig, newt);
+}
+
+function tmt(orig, newt) {
+ Array.from(document.getElementsByTagName("iframe")[0].contentDocument.querySelectorAll(".Texte12")).forEach((e) => { if (e.innerText === orig) { e.innerText = newt; } });
+ Array.from(document.getElementsByTagName("iframe")[0].contentDocument.querySelectorAll(".collection-item.with-action")).forEach((e) => { if (e.innerText === orig) { e.innerHTML = "<span>" + newt + "</span>"; } });
+ if (document.getElementsByTagName("iframe")[0].contentDocument.getElementById("GInterface.Instances[2]_Titre").children[1].innerText === orig) { document.getElementsByTagName("iframe")[0].contentDocument.getElementById("GInterface.Instances[2]_Titre").children[1].innerHTML = "<span>" + newt + "</span>"; };
+}
+
+function tme(orig, newt) {
+ if (document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".card-content").innerText === orig) { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".card-content").innerText = newt; }
+}
+
+function tmh(orig, newt) {
+ document.getElementsByTagName("iframe")[0].contentDocument.querySelectorAll("span.as-header.collapsible-header").forEach((e) => { if (e.innerText === orig) { e.innerText = newt; } });
+}
+
+injectedVer = false;
+
+setInterval(() => {
+
+try {
+ ver = document.getElementsByTagName("iframe")[0].contentDocument.getElementsByClassName("ibe_logo")[0].children[0].title.split("-")[0].split(" ")[1].trim() + "." + document.getElementsByTagName("iframe")[0].contentDocument.getElementsByClassName("ibe_logo")[0].children[0].title.split("-")[1].trim();
+ document.getElementsByTagName("iframe")[0].contentDocument.getElementsByClassName("ibe_logo")[0].children[0].style.display = "none";
+ if (!injectedVer) document.getElementsByTagName("iframe")[0].contentDocument.getElementsByClassName("ibe_logo")[0].children[0].outerHTML = document.getElementsByTagName("iframe")[0].contentDocument.getElementsByClassName("ibe_logo")[0].children[0].outerHTML + "v" + ver + "&nbsp;&nbsp;";
+ injectedVer = true;
+} catch (e) {}
+
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Combo0").innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Événements</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau0").children[0].children[2].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Événements annulés</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau0").children[0].children[1].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Récapitulatif des événements</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Combo2").innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Vie familiale</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau2").children[0].children[1].style.display = "none"; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau2").children[0].children[2].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Statut familial</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau2").children[0].children[3].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Calendrier familial</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Combo3").innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Progrès</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau3").children[0].children[0].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Évaluation des progrès</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau3").children[0].children[2].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Tâches à réaliser</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau3").children[0].children[3].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Ressources familiales</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau3").children[0].children[4].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Travaux surveillés</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau4").children[0].children[1].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Récapitulatif des événements</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Combo4").innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Organisateurs</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Combo5").innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Groupes</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Combo6").innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Membres</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau5").children[0].children[2].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Événements annulés</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau5").children[0].children[1].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Récapitulatif des événements</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau6").children[0].children[2].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Événements annulés</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau6").children[0].children[1].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Récapitulatif des événements</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[1]").children[0].children[2].children[1].children[0].children[1].children[1].style.display = "none"; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[1]").children[0].children[2].style.display = "none"; } catch (e) {}
+try { tt("Récapitulatif des cours", "Récapitulatif des événements"); } catch (e) {}
+try { tt("Cours annulés", "Événements annulés"); } catch (e) {}
+try { tt("Calendrier scolaire", "Calendrier familial") } catch (e) {}
+try { tt("Evaluation des cours", "Évaluation des progrès") } catch (e) {}
+try { tt("Travail à faire", "Tâches à réaliser") } catch (e) {}
+try { tt("Ressources pédagogiques", "Ressources familiales") } catch (e) {}
+try { tt("Devoirs surveillés", "Travaux surveillés") } catch (e) {}
+try { tt("Scolarité", "Statut familial") } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".taf header h3 span").innerText = "Tâches à faire" } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".ressourcespedagogiques header h3 span").innerText = "Dernières ressources familiales" } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".no-events[aria-label=\"Aucun travail à faire dans les 7 prochains jours\"] p").innerText = "Aucune tâche à faire dans les 7 prochains jours"; } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".no-events[aria-label=\"Aucune ressource pédagogique\"] p").innerText = "Aucune ressource familiale"; } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".footer-wrapper").style.display = "none"; } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".stopwith-footer").classList.remove("stopwith-footer"); } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".coursannules header h3 span").innerText = "Prochains événements annulés" } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".edt header h3 span").innerText = "3 prochains événements" } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".no-events[aria-label=\"Aucun cours annulé dans les 7 prochains jours\"] p").innerText = "Aucun événement annulé dans les 7 prochains jours"; } catch (e) {}
+try { te("Il n'y a aucun cours", "Il n'y a aucun événement"); } catch (e) {}
+try { te("Aucun cours annulé sur la période", "Aucun événement annulé sur la période") } catch (e) {}
+try { te("Aucun travail à faire n'a été saisi", "Aucune tâche à faire n'a été saisie") } catch (e) {}
+try { te("Aucune ressource pédagogique", "Aucune ressource familiale") } catch (e) {}
+try { te("Sélectionnez une promotion", "Sélectionnez un groupe") } catch (e) {}
+try { te("Sélectionnez un enseignant", "Sélectionnez un organisateur") } catch (e) {}
+try { te("Sélectionnez un étudiant", "Sélectionnez un membre") } catch (e) {}
+try { Array.from(document.getElementsByClassName("iecb")).forEach((e) => {console.log(e.children[2].innerText = e.children[2].innerText.replaceAll("matière", "catégorie"));}) } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.querySelectorAll("#GInterface\\.Instances\\[1\\] > .BorderBox.Table > div > div > div > .EspaceGauche.EspaceHaut.Gras")[1].innerText = "Détail par catégorie"; } catch (e) {}
+try { Array.from(document.getElementsByTagName('iframe')[0].contentDocument.querySelectorAll(".ie-ellipsis")).forEach((e) => { e.innerText = e.innerText.replaceAll("matière", "catégorie").replaceAll("Matière", "Catégorie").replaceAll("C. Manqués", "É. Manqués"); }); } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".smartbanner-container.smartbanner-show").style.display = "none"; } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".floating-btn-position.v-bottom").style.display = "none"; } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".widget.retourespace").outerHTML = ""; } catch (e) {}
+try { tmt("Calendrier scolaire", "Calendrier familial") } catch (e) {}
+try { tmt("Contenu des cours", "Contenu des événements") } catch (e) {}
+try { tmt("Cours annulés", "Événements annulés") } catch (e) {}
+try { tmt("Emploi du temps", "Programme") } catch (e) {}
+try { tmt("Travail à faire", "Tâches à faire") } catch (e) {}
+try { tmt("Evaluation des cours", "Évaluation des événements") } catch (e) {}
+try { tmt("Devoirs surveillés", "Travaux surveillés") } catch (e) {}
+try { tmt("Récapitulatif des cours", "Récapitulatif des événements") } catch (e) {}
+try { tme("Aucun cours annulé", "Aucun événement annulé") } catch (e) {}
+try { tme("Aucun travail à faire saisi", "Aucune tâche à faire saisie") } catch (e) {}
+try { tme("Aucun devoir pour la période sélectionnée", "Aucun travail noté pour la période sélectionnée") } catch (e) {}
+try { tme("Aucune note n'a été saisie pour cet étudiant sur la période sélectionnée", "Aucune note n'a été saisie pour ce membre sur la période sélectionnée") } catch (e) {}
+try { tme("Aucun devoir surveillé", "Aucun travail surveillé") } catch (e) {}
+try { tmh("Cours", "Événements") } catch (e) {}
+try { tmh("Résultats", "Notes") } catch (e) {}
+try { tmh("Vie scolaire", "Vie familiale") } catch (e) {}
+try { tmh("Enseignements", "Contenus") } catch (e) {}
+try { if (document.getElementsByTagName("iframe")[0].contentDocument.getElementById("GInterface.Instances[0].Instances[0]").children[1].classList.contains("conteneur-options")) { document.getElementsByTagName("iframe")[0].contentDocument.getElementById("GInterface.Instances[0].Instances[0]").children[1].style.display = "none"; }; } catch (e) {}
+try { if (document.getElementsByTagName("iframe")[0].contentDocument.getElementById("GInterface.Instances[0].Instances[0]").children[0].classList.contains("conteneur-options")) { document.getElementsByTagName("iframe")[0].contentDocument.getElementById("GInterface.Instances[0].Instances[0]").children[0].style.display = "none"; }; } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.getElementsByClassName("footer-mobile")[0].outerHTML = ""; } catch (e) {}
+
+}, 10)
+
+</script>
+</body>
+</html>
diff --git a/app/session.php b/app/session.php
index a893a7c..b001aa3 100644
--- a/app/session.php
+++ b/app/session.php
@@ -1,28 +1,4 @@
<?php
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
global $_CONFIG;
$_CONFIG = json_decode(file_get_contents("/mnt/familine/private/FamilineConfig.json"), true);
@@ -52,7 +28,7 @@ if (isset($_COOKIE['FL_SESSION_TOKEN'])) {
$_FULLNAME = $_PROFILE['name'];
if (!in_array($_USER, $_WELCOMED)) {
- header("Location: https://" . $_CONFIG["Global"]["domain"] . "/welcome/?r=" . urlencode("https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"));
+ header("Location: https://" . $_CONFIG["Global"]["cdn"] . "/welcome/?r=" . urlencode("https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"));
die();
}
} else {
diff --git a/app/session/login/embed/index.php b/app/session/login/embed/index.php
new file mode 100644
index 0000000..a27ed39
--- /dev/null
+++ b/app/session/login/embed/index.php
@@ -0,0 +1,6 @@
+<?php
+
+$_CONFIG = json_decode(file_get_contents("/mnt/familine/private/FamilineConfig.json"), true);
+
+header("Location: https://" . $_CONFIG["Global"]["federation"] . "/auth/realms/Familine/protocol/openid-connect/auth?client_id=" . json_decode(file_get_contents("/mnt/familine/private/app.json"), true)["id"] . "&response_type=code&redirect_uri=https://session." . $_CONFIG["Global"]["domain"] . "/oauth/embed&scope=profile&request_credentials=default&access_type=offline");
+die();
diff --git a/app/session/login/index.php b/app/session/login/index.php
new file mode 100644
index 0000000..05c3dc3
--- /dev/null
+++ b/app/session/login/index.php
@@ -0,0 +1,6 @@
+<?php
+
+$_CONFIG = json_decode(file_get_contents("/mnt/familine/private/FamilineConfig.json"), true);
+
+header("Location: https://" . $_CONFIG["Global"]["federation"] . "/auth/realms/Familine/protocol/openid-connect/auth?client_id=" . json_decode(file_get_contents("/mnt/familine/private/app.json"), true)["id"] . "&response_type=code&redirect_uri=https://session." . $_CONFIG["Global"]["domain"] . "/oauth/?r=" . urlencode($_GET['r']) . "&scope=profile&request_credentials=default&access_type=offline");
+die();
diff --git a/app/session/oauth/embed/index.php b/app/session/oauth/embed/index.php
new file mode 100644
index 0000000..ff47ef0
--- /dev/null
+++ b/app/session/oauth/embed/index.php
@@ -0,0 +1,52 @@
+<?php
+
+header("Content-Type: text/plain");
+// TODO: handle errors
+$_CONFIG = json_decode(file_get_contents("/mnt/familine/private/FamilineConfig.json"), true);
+
+if (!isset($_GET['code'])) {
+ die();
+}
+
+$appdata = json_decode(file_get_contents("/mnt/familine/private/app.json"), true);
+
+$crl = curl_init('https://' . $_CONFIG["Global"]["federation"]. '/auth/realms/Familine/protocol/openid-connect/token');
+curl_setopt($crl, CURLOPT_RETURNTRANSFER, true);
+curl_setopt($crl, CURLINFO_HEADER_OUT, true);
+curl_setopt($crl, CURLOPT_POST, true);
+curl_setopt($crl, CURLOPT_HTTPHEADER, [
+ "Authorization: Basic " . base64_encode($appdata["id"] . ":" . $appdata["secret"]),
+ "Content-Type: application/x-www-form-urlencoded",
+ "Accept: application/json"
+]);
+curl_setopt($crl, CURLOPT_POSTFIELDS, "grant_type=authorization_code&redirect_uri=" . urlencode("https://session." . $_CONFIG["Global"]["domain"] . "/oauth/embed") . "&code=" . $_GET['code']);
+
+$result = curl_exec($crl);
+var_dump($result);
+$result = json_decode($result, true);
+
+curl_close($crl);
+
+if (isset($result["access_token"])) {
+ $crl = curl_init('https://' . $_CONFIG["Global"]["federation"]. '/auth/realms/Familine/protocol/openid-connect/userinfo');
+ curl_setopt($crl, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($crl, CURLINFO_HEADER_OUT, true);
+ curl_setopt($crl, CURLOPT_HTTPHEADER, [
+ "Authorization: Bearer " . $result["access_token"],
+ "Accept: application/json"
+ ]);
+
+ $result = curl_exec($crl);
+ var_dump($result);
+ $result = json_decode($result, true);
+
+ $token = bin2hex(random_bytes(32));
+ $result["login"] = $result["preferred_username"];
+ $result["name_internal"] = $result["name"];
+ $result["name"] = $result["family_name"] . " " . $result["given_name"];
+ $result["id"] = $result["sub"];
+ file_put_contents("/mnt/familine/private/tokens/" . $token, json_encode($result));
+ setcookie("FL_SESSION_TOKEN", $token, 0, "/", "." . $_CONFIG["Global"]["cdn"], true, true);
+
+ header("Location: /statusbar.php");
+} \ No newline at end of file
diff --git a/app/session/oauth/index.php b/app/session/oauth/index.php
new file mode 100644
index 0000000..0a6ce71
--- /dev/null
+++ b/app/session/oauth/index.php
@@ -0,0 +1,53 @@
+<?php
+
+header("Content-Type: text/plain");
+// TODO: handle errors
+$_CONFIG = json_decode(file_get_contents("/mnt/familine/private/FamilineConfig.json"), true);
+
+if (!isset($_GET['code'])) {
+ die();
+}
+
+$appdata = json_decode(file_get_contents("/mnt/familine/private/app.json"), true);
+
+$crl = curl_init('https://' . $_CONFIG["Global"]["federation"]. '/auth/realms/Familine/protocol/openid-connect/token');
+curl_setopt($crl, CURLOPT_RETURNTRANSFER, true);
+curl_setopt($crl, CURLINFO_HEADER_OUT, true);
+curl_setopt($crl, CURLOPT_POST, true);
+curl_setopt($crl, CURLOPT_HTTPHEADER, [
+ "Authorization: Basic " . base64_encode($appdata["id"] . ":" . $appdata["secret"]),
+ "Content-Type: application/x-www-form-urlencoded",
+ "Accept: application/json"
+]);
+curl_setopt($crl, CURLOPT_POSTFIELDS, "grant_type=authorization_code&redirect_uri=" . urlencode("https://session." . $_CONFIG["Global"]["domain"] . "/oauth/?r=" . $_GET['r']) . "&code=" . $_GET['code']);
+
+var_dump("grant_type=authorization_code&redirect_uri=" . urlencode("https://" . $_CONFIG["Global"]["domain"] . "/oauth/?r=" . $_GET['r']) . "&code=" . $_GET['code']);
+$result = curl_exec($crl);
+var_dump($result);
+$result = json_decode($result, true);
+
+curl_close($crl);
+
+if (isset($result["access_token"])) {
+ $crl = curl_init('https://' . $_CONFIG["Global"]["federation"]. '/auth/realms/Familine/protocol/openid-connect/userinfo');
+ curl_setopt($crl, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($crl, CURLINFO_HEADER_OUT, true);
+ curl_setopt($crl, CURLOPT_HTTPHEADER, [
+ "Authorization: Bearer " . $result["access_token"],
+ "Accept: application/json"
+ ]);
+
+ $result = curl_exec($crl);
+ var_dump($result);
+ $result = json_decode($result, true);
+
+ $token = bin2hex(random_bytes(32));
+ $result["login"] = $result["preferred_username"];
+ $result["name_internal"] = $result["name"];
+ $result["name"] = $result["family_name"] . " " . $result["given_name"];
+ $result["id"] = $result["sub"];
+ file_put_contents("/mnt/familine/private/tokens/" . $token, json_encode($result));
+ setcookie("FL_SESSION_TOKEN", $token, 0, "/", "." . $_CONFIG["Global"]["cdn"], true, true);
+
+ header("Location: https://auth.familine.minteck.org/auth/realms/Familine/X-Familine-PersistentSession/?r=" . urlencode($_GET['r']));
+} \ No newline at end of file