├── .gitattributes ├── README.md ├── app.py ├── sql └── book.sql ├── static ├── css │ └── style.css ├── img │ ├── apple-touch-icon.png │ ├── favicon.png │ ├── hero-bg.jpg │ ├── pixel-jeff-clipa-s.gif │ ├── portfolio │ │ ├── portfolio-1.jpg │ │ ├── portfolio-2.jpg │ │ ├── portfolio-3.jpg │ │ ├── portfolio-4.jpg │ │ ├── portfolio-5.jpg │ │ ├── portfolio-6.jpg │ │ ├── portfolio-7.jpg │ │ ├── portfolio-8.jpg │ │ ├── portfolio-9.jpg │ │ ├── portfolio-details-1.jpg │ │ ├── portfolio-details-2.jpg │ │ └── portfolio-details-3.jpg │ ├── profile-img.jpg │ ├── re.png │ └── testimonials │ │ ├── testimonials-1.jpg │ │ ├── testimonials-2.jpg │ │ ├── testimonials-3.jpg │ │ ├── testimonials-4.jpg │ │ └── testimonials-5.jpg ├── jquery-3.4.1.js ├── js │ └── main.js └── vendor │ ├── aos │ ├── aos.css │ └── aos.js │ ├── bootstrap-icons │ ├── bootstrap-icons.css │ ├── bootstrap-icons.json │ ├── fonts │ │ ├── bootstrap-icons.woff │ │ └── bootstrap-icons.woff2 │ └── index.html │ ├── bootstrap │ ├── css │ │ ├── bootstrap-grid.css │ │ ├── bootstrap-grid.css.map │ │ ├── bootstrap-grid.min.css │ │ ├── bootstrap-grid.min.css.map │ │ ├── bootstrap-grid.rtl.css │ │ ├── bootstrap-grid.rtl.css.map │ │ ├── bootstrap-grid.rtl.min.css │ │ ├── bootstrap-grid.rtl.min.css.map │ │ ├── bootstrap-reboot.css │ │ ├── bootstrap-reboot.css.map │ │ ├── bootstrap-reboot.min.css │ │ ├── bootstrap-reboot.min.css.map │ │ ├── bootstrap-reboot.rtl.css │ │ ├── bootstrap-reboot.rtl.css.map │ │ ├── bootstrap-reboot.rtl.min.css │ │ ├── bootstrap-reboot.rtl.min.css.map │ │ ├── bootstrap-utilities.css │ │ ├── bootstrap-utilities.css.map │ │ ├── bootstrap-utilities.min.css │ │ ├── bootstrap-utilities.min.css.map │ │ ├── bootstrap-utilities.rtl.css │ │ ├── bootstrap-utilities.rtl.css.map │ │ ├── bootstrap-utilities.rtl.min.css │ │ ├── bootstrap-utilities.rtl.min.css.map │ │ ├── bootstrap.css │ │ ├── bootstrap.css.map │ │ ├── bootstrap.min.css │ │ ├── bootstrap.min.css.map │ │ ├── bootstrap.rtl.css │ │ ├── bootstrap.rtl.css.map │ │ ├── bootstrap.rtl.min.css │ │ └── bootstrap.rtl.min.css.map │ └── js │ │ ├── bootstrap.bundle.js │ │ ├── bootstrap.bundle.js.map │ │ ├── bootstrap.bundle.min.js │ │ ├── bootstrap.bundle.min.js.map │ │ ├── bootstrap.esm.js │ │ ├── bootstrap.esm.js.map │ │ ├── bootstrap.esm.min.js │ │ ├── bootstrap.esm.min.js.map │ │ ├── bootstrap.js │ │ ├── bootstrap.js.map │ │ ├── bootstrap.min.js │ │ └── bootstrap.min.js.map │ ├── boxicons │ ├── css │ │ ├── animations.css │ │ ├── boxicons.css │ │ ├── boxicons.min.css │ │ └── transformations.css │ └── fonts │ │ ├── boxicons.eot │ │ ├── boxicons.svg │ │ ├── boxicons.ttf │ │ ├── boxicons.woff │ │ └── boxicons.woff2 │ ├── glightbox │ ├── css │ │ ├── glightbox.css │ │ └── glightbox.min.css │ └── js │ │ ├── glightbox.js │ │ └── glightbox.min.js │ ├── isotope-layout │ ├── isotope.pkgd.js │ └── isotope.pkgd.min.js │ ├── php-email-form │ └── validate.js │ ├── purecounter │ └── purecounter.js │ ├── swiper │ ├── swiper-bundle.min.css │ └── swiper-bundle.min.js │ ├── typed.js │ ├── typed.js │ ├── typed.min.js │ └── typed.min.js.map │ └── waypoints │ └── noframework.waypoints.js └── templates ├── index.html ├── login.html ├── select.html └── updata.html /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=python 2 | *.css linguist-language=python 3 | *.html linguist-language=python -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pythonFlaskKeShe 2 | Flask框架+MySQL 基于Flask实现的图书管理系统 基本的增删改查 python课程设计 3 | 下载到电脑以后 找到sql文件并运行。 4 | 直接使用 python app.py命令就可以运行此项目。 5 | 6 | 7 | 本项目仅供学习,请勿商用。。。。。 8 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, request, redirect 2 | import pymysql as mysql 3 | import pymysql 4 | 5 | # 配置数据库用户名 密码 数据库名 6 | con = mysql.connect(user='root', password='root', db="book") 7 | # 开启数据库事务的自动提交功能 8 | con.autocommit(True) 9 | # 获取数据库的游标 10 | cur = con.cursor() 11 | 12 | # 主函数 13 | app = Flask(__name__) 14 | 15 | 16 | # 配置数据库名 账号 密码 端口号 数据库库名 17 | def getdata(sql): 18 | connect = pymysql.connect( 19 | host="localhost", 20 | user="root", 21 | password="root", 22 | port=3306, 23 | database="book" 24 | ) 25 | # 获取游标 26 | cursor = connect.cursor() 27 | # 执行通过函数传入的sql语句 28 | cursor.execute(sql) 29 | # 获取所有的数据库将参数赋给result 30 | result = cursor.fetchall() 31 | # 返回result参数 32 | return result 33 | 34 | 35 | # 设置网址的路由 36 | @app.route('/index') 37 | def hello_world(): 38 | # 执行userlist函数将返回值赋给data 39 | data = userlist() 40 | # 使用render_template渲染index.html并传入数据data到前端 41 | return render_template("index.html", data=data) 42 | 43 | 44 | # 设置网址的路由 45 | @app.route('/', methods=["post", "get"]) 46 | def login(): 47 | if request.method == "POST": 48 | user = request.form.get('user') 49 | password = request.form.get('password') 50 | sql = 'select * from user where user ="{}" AND pwd="{}"'.format(user, password) 51 | b = cur.execute(sql) 52 | if b == 1: 53 | return redirect('/index') 54 | else: 55 | return render_template("login.html", data=0) 56 | else: 57 | return render_template("login.html", data=1) 58 | 59 | 60 | # 定义一个函数 使用sql语句查询anthors表的所有数据 61 | def userlist(): 62 | sql = "select * from authors" 63 | # 执行通过函数传入的sql语句 64 | cur.execute(sql) 65 | # 获取所有的数据库将参数赋给data 66 | data = cur.fetchall() 67 | return data 68 | 69 | 70 | # 设置路由为/add 使用的请求方式是post 71 | @app.route('/add', methods=["post", "get"]) 72 | def add(): 73 | if request.method == "POST": 74 | # 获取前端表单里key来获取value值 75 | id = request.form.get('id') 76 | name = request.form.get('name') 77 | books = request.form.get('books') 78 | price = request.form.get('price') 79 | # 数据库命令根据id来查询此id是否已经存在 80 | s = 'select * from authors where id=' + id 81 | a = cur.execute(s) 82 | # 如果存在 83 | if a == 1: 84 | return "编号已存在" 85 | # 否则 86 | else: 87 | # 数据库插入语句 88 | sql = 'insert authors values(%s,%s,%s,%s)' 89 | # 传入语句与需要插入的值 90 | cur.execute(sql, [id, name, books, price]) 91 | # 提交该事务 92 | con.commit() 93 | # 重定向路由为 94 | return redirect('/index') 95 | 96 | 97 | # 根据id进行删除 98 | @app.route('/dele', methods=["post", "get"]) 99 | def dele(): 100 | # 从前端表单中获取id的值 101 | id = request.args.get("id") 102 | # 执行sql命令,根据id删除内容 103 | sql = "delete from authors where id=" + id 104 | cur.execute(sql) 105 | con.commit() 106 | return redirect('/index') 107 | 108 | # 根据id进行查找 109 | @app.route('/sele', methods=["post", "get"]) 110 | def sele(): 111 | id = request.form.get("sele") 112 | sql = "select * from authors where id=" + id 113 | b = cur.execute(sql) 114 | sdata = cur.fetchall() 115 | if b == 1: 116 | return render_template("select.html", sdata=sdata) 117 | else: 118 | return render_template("select.html", d=0) 119 | 120 | 121 | # 根据名称进行查找 122 | @app.route('/sele1', methods=["post", "get"]) 123 | def sele1(): 124 | name = request.form.get("name") 125 | sql = 'select * from authors where books like "%{}%"'.format(name) 126 | b = cur.execute(sql) 127 | sdata = cur.fetchall() 128 | print(b) 129 | if b == 1: 130 | return render_template("select.html", sdata=sdata) 131 | else: 132 | return render_template("select.html", d=0) 133 | 134 | 135 | # # 根据id进行修改 136 | @app.route('/updata', methods=['GET', 'POST']) 137 | def updata(): 138 | id = request.args.get('id') 139 | sql = "select * from authors where id = %s" % id 140 | data = getdata(sql) 141 | movie = [] 142 | for i in data: 143 | movie.append(i) 144 | print(movie[0]) 145 | print(movie) 146 | return render_template('updata.html', data=movie[0]) 147 | 148 | 149 | @app.route('/update', methods=['POST']) 150 | def update(): 151 | id = request.form.get('id') 152 | name = request.form.get('name') 153 | books = request.form.get('books') 154 | price = request.form.get('price') 155 | sql = 'update authors set name="{}",books="{}",price="{}" where id="{}"'.format(name, books, price, id) 156 | cur.execute(sql) 157 | con.commit() 158 | return redirect('/index') 159 | 160 | 161 | # 主函数执行 162 | if __name__ == '__main__': 163 | # 主动开启debug便于调试 164 | app.run(debug=True) 165 | -------------------------------------------------------------------------------- /sql/book.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Navicat Premium Data Transfer 3 | 4 | Source Server : localhost 5 | Source Server Type : MySQL 6 | Source Server Version : 50515 7 | Source Host : localhost:3306 8 | Source Schema : book 9 | 10 | Target Server Type : MySQL 11 | Target Server Version : 50515 12 | File Encoding : 65001 13 | 14 | Date: 22/11/2021 10:07:20 15 | */ 16 | 17 | SET NAMES utf8mb4; 18 | SET FOREIGN_KEY_CHECKS = 0; 19 | 20 | -- ---------------------------- 21 | -- Table structure for authors 22 | -- ---------------------------- 23 | DROP TABLE IF EXISTS `authors`; 24 | CREATE TABLE `authors` ( 25 | `id` int(11) NOT NULL, 26 | `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, 27 | `books` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, 28 | `price` int(255) NULL DEFAULT NULL, 29 | PRIMARY KEY (`id`) USING BTREE, 30 | INDEX `books`(`books`) USING BTREE, 31 | INDEX `price`(`price`) USING BTREE 32 | ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; 33 | 34 | -- ---------------------------- 35 | -- Records of authors 36 | -- ---------------------------- 37 | INSERT INTO `authors` VALUES (1, '数据库作者', '数据库基础', 50); 38 | 39 | -- ---------------------------- 40 | -- Table structure for books 41 | -- ---------------------------- 42 | DROP TABLE IF EXISTS `books`; 43 | CREATE TABLE `books` ( 44 | `id` int(255) NOT NULL AUTO_INCREMENT, 45 | `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, 46 | `author_id` int(11) NULL DEFAULT NULL, 47 | INDEX `author_id`(`author_id`) USING BTREE, 48 | INDEX `name`(`name`) USING BTREE, 49 | INDEX `id`(`id`) USING BTREE 50 | ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; 51 | 52 | -- ---------------------------- 53 | -- Records of books 54 | -- ---------------------------- 55 | INSERT INTO `books` VALUES (1, '老王会议', 1); 56 | INSERT INTO `books` VALUES (2, '读书会议', 1); 57 | INSERT INTO `books` VALUES (3, '123木头人', 3); 58 | 59 | -- ---------------------------- 60 | -- Table structure for price 61 | -- ---------------------------- 62 | DROP TABLE IF EXISTS `price`; 63 | CREATE TABLE `price` ( 64 | `id` int(11) NOT NULL AUTO_INCREMENT, 65 | `rmb` int(255) NULL DEFAULT NULL, 66 | `book_id` int(255) NULL DEFAULT NULL, 67 | PRIMARY KEY (`id`) USING BTREE, 68 | INDEX `rmb`(`rmb`) USING BTREE, 69 | INDEX `id`(`book_id`) USING BTREE, 70 | CONSTRAINT `id` FOREIGN KEY (`book_id`) REFERENCES `books` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT 71 | ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; 72 | 73 | -- ---------------------------- 74 | -- Records of price 75 | -- ---------------------------- 76 | INSERT INTO `price` VALUES (1, 50, 1); 77 | INSERT INTO `price` VALUES (2, 100, 2); 78 | INSERT INTO `price` VALUES (3, 150, 3); 79 | 80 | SET FOREIGN_KEY_CHECKS = 1; 81 | -------------------------------------------------------------------------------- /static/img/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/apple-touch-icon.png -------------------------------------------------------------------------------- /static/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/favicon.png -------------------------------------------------------------------------------- /static/img/hero-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/hero-bg.jpg -------------------------------------------------------------------------------- /static/img/pixel-jeff-clipa-s.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/pixel-jeff-clipa-s.gif -------------------------------------------------------------------------------- /static/img/portfolio/portfolio-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/portfolio/portfolio-1.jpg -------------------------------------------------------------------------------- /static/img/portfolio/portfolio-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/portfolio/portfolio-2.jpg -------------------------------------------------------------------------------- /static/img/portfolio/portfolio-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/portfolio/portfolio-3.jpg -------------------------------------------------------------------------------- /static/img/portfolio/portfolio-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/portfolio/portfolio-4.jpg -------------------------------------------------------------------------------- /static/img/portfolio/portfolio-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/portfolio/portfolio-5.jpg -------------------------------------------------------------------------------- /static/img/portfolio/portfolio-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/portfolio/portfolio-6.jpg -------------------------------------------------------------------------------- /static/img/portfolio/portfolio-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/portfolio/portfolio-7.jpg -------------------------------------------------------------------------------- /static/img/portfolio/portfolio-8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/portfolio/portfolio-8.jpg -------------------------------------------------------------------------------- /static/img/portfolio/portfolio-9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/portfolio/portfolio-9.jpg -------------------------------------------------------------------------------- /static/img/portfolio/portfolio-details-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/portfolio/portfolio-details-1.jpg -------------------------------------------------------------------------------- /static/img/portfolio/portfolio-details-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/portfolio/portfolio-details-2.jpg -------------------------------------------------------------------------------- /static/img/portfolio/portfolio-details-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/portfolio/portfolio-details-3.jpg -------------------------------------------------------------------------------- /static/img/profile-img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/profile-img.jpg -------------------------------------------------------------------------------- /static/img/re.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/re.png -------------------------------------------------------------------------------- /static/img/testimonials/testimonials-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/testimonials/testimonials-1.jpg -------------------------------------------------------------------------------- /static/img/testimonials/testimonials-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/testimonials/testimonials-2.jpg -------------------------------------------------------------------------------- /static/img/testimonials/testimonials-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/testimonials/testimonials-3.jpg -------------------------------------------------------------------------------- /static/img/testimonials/testimonials-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/testimonials/testimonials-4.jpg -------------------------------------------------------------------------------- /static/img/testimonials/testimonials-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/img/testimonials/testimonials-5.jpg -------------------------------------------------------------------------------- /static/js/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Template Name: MyResume - v4.6.0 3 | * Template URL: https://bootstrapmade.com/free-html-bootstrap-template-my-resume/ 4 | * Author: BootstrapMade.com 5 | * License: https://bootstrapmade.com/license/ 6 | */ 7 | (function() { 8 | "use strict"; 9 | 10 | /** 11 | * Easy selector helper function 12 | */ 13 | const select = (el, all = false) => { 14 | el = el.trim() 15 | if (all) { 16 | return [...document.querySelectorAll(el)] 17 | } else { 18 | return document.querySelector(el) 19 | } 20 | } 21 | 22 | /** 23 | * Easy event listener function 24 | */ 25 | const on = (type, el, listener, all = false) => { 26 | let selectEl = select(el, all) 27 | if (selectEl) { 28 | if (all) { 29 | selectEl.forEach(e => e.addEventListener(type, listener)) 30 | } else { 31 | selectEl.addEventListener(type, listener) 32 | } 33 | } 34 | } 35 | 36 | /** 37 | * Easy on scroll event listener 38 | */ 39 | const onscroll = (el, listener) => { 40 | el.addEventListener('scroll', listener) 41 | } 42 | 43 | /** 44 | * Navbar links active state on scroll 45 | */ 46 | let navbarlinks = select('#navbar .scrollto', true) 47 | const navbarlinksActive = () => { 48 | let position = window.scrollY + 200 49 | navbarlinks.forEach(navbarlink => { 50 | if (!navbarlink.hash) return 51 | let section = select(navbarlink.hash) 52 | if (!section) return 53 | if (position >= section.offsetTop && position <= (section.offsetTop + section.offsetHeight)) { 54 | navbarlink.classList.add('active') 55 | } else { 56 | navbarlink.classList.remove('active') 57 | } 58 | }) 59 | } 60 | window.addEventListener('load', navbarlinksActive) 61 | onscroll(document, navbarlinksActive) 62 | 63 | /** 64 | * Scrolls to an element with header offset 65 | */ 66 | const scrollto = (el) => { 67 | let elementPos = select(el).offsetTop 68 | window.scrollTo({ 69 | top: elementPos, 70 | behavior: 'smooth' 71 | }) 72 | } 73 | 74 | /** 75 | * Back to top button 76 | */ 77 | let backtotop = select('.back-to-top') 78 | if (backtotop) { 79 | const toggleBacktotop = () => { 80 | if (window.scrollY > 100) { 81 | backtotop.classList.add('active') 82 | } else { 83 | backtotop.classList.remove('active') 84 | } 85 | } 86 | window.addEventListener('load', toggleBacktotop) 87 | onscroll(document, toggleBacktotop) 88 | } 89 | 90 | /** 91 | * Mobile nav toggle 92 | */ 93 | on('click', '.mobile-nav-toggle', function(e) { 94 | select('body').classList.toggle('mobile-nav-active') 95 | this.classList.toggle('bi-list') 96 | this.classList.toggle('bi-x') 97 | }) 98 | 99 | /** 100 | * Scrool with ofset on links with a class name .scrollto 101 | */ 102 | on('click', '.scrollto', function(e) { 103 | if (select(this.hash)) { 104 | e.preventDefault() 105 | 106 | let body = select('body') 107 | if (body.classList.contains('mobile-nav-active')) { 108 | body.classList.remove('mobile-nav-active') 109 | let navbarToggle = select('.mobile-nav-toggle') 110 | navbarToggle.classList.toggle('bi-list') 111 | navbarToggle.classList.toggle('bi-x') 112 | } 113 | scrollto(this.hash) 114 | } 115 | }, true) 116 | 117 | /** 118 | * Scroll with ofset on page load with hash links in the url 119 | */ 120 | window.addEventListener('load', () => { 121 | if (window.location.hash) { 122 | if (select(window.location.hash)) { 123 | scrollto(window.location.hash) 124 | } 125 | } 126 | }); 127 | 128 | /** 129 | * Preloader 130 | */ 131 | let preloader = select('#preloader'); 132 | if (preloader) { 133 | window.addEventListener('load', () => { 134 | preloader.remove() 135 | }); 136 | } 137 | 138 | /** 139 | * Hero type effect 140 | */ 141 | const typed = select('.typed') 142 | if (typed) { 143 | let typed_strings = typed.getAttribute('data-typed-items') 144 | typed_strings = typed_strings.split(',') 145 | new Typed('.typed', { 146 | strings: typed_strings, 147 | loop: true, 148 | typeSpeed: 100, 149 | backSpeed: 50, 150 | backDelay: 2000 151 | }); 152 | } 153 | 154 | /** 155 | * Skills animation 156 | */ 157 | let skilsContent = select('.skills-content'); 158 | if (skilsContent) { 159 | new Waypoint({ 160 | element: skilsContent, 161 | offset: '80%', 162 | handler: function(direction) { 163 | let progress = select('.progress .progress-bar', true); 164 | progress.forEach((el) => { 165 | el.style.width = el.getAttribute('aria-valuenow') + '%' 166 | }); 167 | } 168 | }) 169 | } 170 | 171 | /** 172 | * Porfolio isotope and filter 173 | */ 174 | window.addEventListener('load', () => { 175 | let portfolioContainer = select('.portfolio-container'); 176 | if (portfolioContainer) { 177 | let portfolioIsotope = new Isotope(portfolioContainer, { 178 | itemSelector: '.portfolio-item' 179 | }); 180 | 181 | let portfolioFilters = select('#portfolio-flters li', true); 182 | 183 | on('click', '#portfolio-flters li', function(e) { 184 | e.preventDefault(); 185 | portfolioFilters.forEach(function(el) { 186 | el.classList.remove('filter-active'); 187 | }); 188 | this.classList.add('filter-active'); 189 | 190 | portfolioIsotope.arrange({ 191 | filter: this.getAttribute('data-filter') 192 | }); 193 | portfolioIsotope.on('arrangeComplete', function() { 194 | AOS.refresh() 195 | }); 196 | }, true); 197 | } 198 | 199 | }); 200 | 201 | /** 202 | * Initiate portfolio lightbox 203 | */ 204 | const portfolioLightbox = GLightbox({ 205 | selector: '.portfolio-lightbox' 206 | }); 207 | 208 | /** 209 | * Initiate portfolio details lightbox 210 | */ 211 | const portfolioDetailsLightbox = GLightbox({ 212 | selector: '.portfolio-details-lightbox', 213 | width: '90%', 214 | height: '90vh' 215 | }); 216 | 217 | /** 218 | * Portfolio details slider 219 | */ 220 | new Swiper('.portfolio-details-slider', { 221 | speed: 400, 222 | loop: true, 223 | autoplay: { 224 | delay: 5000, 225 | disableOnInteraction: false 226 | }, 227 | pagination: { 228 | el: '.swiper-pagination', 229 | type: 'bullets', 230 | clickable: true 231 | } 232 | }); 233 | 234 | /** 235 | * Testimonials slider 236 | */ 237 | new Swiper('.testimonials-slider', { 238 | speed: 600, 239 | loop: true, 240 | autoplay: { 241 | delay: 5000, 242 | disableOnInteraction: false 243 | }, 244 | slidesPerView: 'auto', 245 | pagination: { 246 | el: '.swiper-pagination', 247 | type: 'bullets', 248 | clickable: true 249 | } 250 | }); 251 | 252 | /** 253 | * Animation on scroll 254 | */ 255 | window.addEventListener('load', () => { 256 | AOS.init({ 257 | duration: 1000, 258 | easing: 'ease-in-out', 259 | once: true, 260 | mirror: false 261 | }) 262 | }); 263 | 264 | })() -------------------------------------------------------------------------------- /static/vendor/aos/aos.css: -------------------------------------------------------------------------------- 1 | [data-aos][data-aos][data-aos-duration="50"],body[data-aos-duration="50"] [data-aos]{transition-duration:50ms}[data-aos][data-aos][data-aos-delay="50"],body[data-aos-delay="50"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="50"].aos-animate,body[data-aos-delay="50"] [data-aos].aos-animate{transition-delay:50ms}[data-aos][data-aos][data-aos-duration="100"],body[data-aos-duration="100"] [data-aos]{transition-duration:.1s}[data-aos][data-aos][data-aos-delay="100"],body[data-aos-delay="100"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="100"].aos-animate,body[data-aos-delay="100"] [data-aos].aos-animate{transition-delay:.1s}[data-aos][data-aos][data-aos-duration="150"],body[data-aos-duration="150"] [data-aos]{transition-duration:.15s}[data-aos][data-aos][data-aos-delay="150"],body[data-aos-delay="150"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="150"].aos-animate,body[data-aos-delay="150"] [data-aos].aos-animate{transition-delay:.15s}[data-aos][data-aos][data-aos-duration="200"],body[data-aos-duration="200"] [data-aos]{transition-duration:.2s}[data-aos][data-aos][data-aos-delay="200"],body[data-aos-delay="200"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="200"].aos-animate,body[data-aos-delay="200"] [data-aos].aos-animate{transition-delay:.2s}[data-aos][data-aos][data-aos-duration="250"],body[data-aos-duration="250"] [data-aos]{transition-duration:.25s}[data-aos][data-aos][data-aos-delay="250"],body[data-aos-delay="250"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="250"].aos-animate,body[data-aos-delay="250"] [data-aos].aos-animate{transition-delay:.25s}[data-aos][data-aos][data-aos-duration="300"],body[data-aos-duration="300"] [data-aos]{transition-duration:.3s}[data-aos][data-aos][data-aos-delay="300"],body[data-aos-delay="300"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="300"].aos-animate,body[data-aos-delay="300"] [data-aos].aos-animate{transition-delay:.3s}[data-aos][data-aos][data-aos-duration="350"],body[data-aos-duration="350"] [data-aos]{transition-duration:.35s}[data-aos][data-aos][data-aos-delay="350"],body[data-aos-delay="350"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="350"].aos-animate,body[data-aos-delay="350"] [data-aos].aos-animate{transition-delay:.35s}[data-aos][data-aos][data-aos-duration="400"],body[data-aos-duration="400"] [data-aos]{transition-duration:.4s}[data-aos][data-aos][data-aos-delay="400"],body[data-aos-delay="400"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="400"].aos-animate,body[data-aos-delay="400"] [data-aos].aos-animate{transition-delay:.4s}[data-aos][data-aos][data-aos-duration="450"],body[data-aos-duration="450"] [data-aos]{transition-duration:.45s}[data-aos][data-aos][data-aos-delay="450"],body[data-aos-delay="450"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="450"].aos-animate,body[data-aos-delay="450"] [data-aos].aos-animate{transition-delay:.45s}[data-aos][data-aos][data-aos-duration="500"],body[data-aos-duration="500"] [data-aos]{transition-duration:.5s}[data-aos][data-aos][data-aos-delay="500"],body[data-aos-delay="500"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="500"].aos-animate,body[data-aos-delay="500"] [data-aos].aos-animate{transition-delay:.5s}[data-aos][data-aos][data-aos-duration="550"],body[data-aos-duration="550"] [data-aos]{transition-duration:.55s}[data-aos][data-aos][data-aos-delay="550"],body[data-aos-delay="550"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="550"].aos-animate,body[data-aos-delay="550"] [data-aos].aos-animate{transition-delay:.55s}[data-aos][data-aos][data-aos-duration="600"],body[data-aos-duration="600"] [data-aos]{transition-duration:.6s}[data-aos][data-aos][data-aos-delay="600"],body[data-aos-delay="600"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="600"].aos-animate,body[data-aos-delay="600"] [data-aos].aos-animate{transition-delay:.6s}[data-aos][data-aos][data-aos-duration="650"],body[data-aos-duration="650"] [data-aos]{transition-duration:.65s}[data-aos][data-aos][data-aos-delay="650"],body[data-aos-delay="650"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="650"].aos-animate,body[data-aos-delay="650"] [data-aos].aos-animate{transition-delay:.65s}[data-aos][data-aos][data-aos-duration="700"],body[data-aos-duration="700"] [data-aos]{transition-duration:.7s}[data-aos][data-aos][data-aos-delay="700"],body[data-aos-delay="700"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="700"].aos-animate,body[data-aos-delay="700"] [data-aos].aos-animate{transition-delay:.7s}[data-aos][data-aos][data-aos-duration="750"],body[data-aos-duration="750"] [data-aos]{transition-duration:.75s}[data-aos][data-aos][data-aos-delay="750"],body[data-aos-delay="750"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="750"].aos-animate,body[data-aos-delay="750"] [data-aos].aos-animate{transition-delay:.75s}[data-aos][data-aos][data-aos-duration="800"],body[data-aos-duration="800"] [data-aos]{transition-duration:.8s}[data-aos][data-aos][data-aos-delay="800"],body[data-aos-delay="800"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="800"].aos-animate,body[data-aos-delay="800"] [data-aos].aos-animate{transition-delay:.8s}[data-aos][data-aos][data-aos-duration="850"],body[data-aos-duration="850"] [data-aos]{transition-duration:.85s}[data-aos][data-aos][data-aos-delay="850"],body[data-aos-delay="850"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="850"].aos-animate,body[data-aos-delay="850"] [data-aos].aos-animate{transition-delay:.85s}[data-aos][data-aos][data-aos-duration="900"],body[data-aos-duration="900"] [data-aos]{transition-duration:.9s}[data-aos][data-aos][data-aos-delay="900"],body[data-aos-delay="900"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="900"].aos-animate,body[data-aos-delay="900"] [data-aos].aos-animate{transition-delay:.9s}[data-aos][data-aos][data-aos-duration="950"],body[data-aos-duration="950"] [data-aos]{transition-duration:.95s}[data-aos][data-aos][data-aos-delay="950"],body[data-aos-delay="950"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="950"].aos-animate,body[data-aos-delay="950"] [data-aos].aos-animate{transition-delay:.95s}[data-aos][data-aos][data-aos-duration="1000"],body[data-aos-duration="1000"] [data-aos]{transition-duration:1s}[data-aos][data-aos][data-aos-delay="1000"],body[data-aos-delay="1000"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1000"].aos-animate,body[data-aos-delay="1000"] [data-aos].aos-animate{transition-delay:1s}[data-aos][data-aos][data-aos-duration="1050"],body[data-aos-duration="1050"] [data-aos]{transition-duration:1.05s}[data-aos][data-aos][data-aos-delay="1050"],body[data-aos-delay="1050"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1050"].aos-animate,body[data-aos-delay="1050"] [data-aos].aos-animate{transition-delay:1.05s}[data-aos][data-aos][data-aos-duration="1100"],body[data-aos-duration="1100"] [data-aos]{transition-duration:1.1s}[data-aos][data-aos][data-aos-delay="1100"],body[data-aos-delay="1100"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1100"].aos-animate,body[data-aos-delay="1100"] [data-aos].aos-animate{transition-delay:1.1s}[data-aos][data-aos][data-aos-duration="1150"],body[data-aos-duration="1150"] [data-aos]{transition-duration:1.15s}[data-aos][data-aos][data-aos-delay="1150"],body[data-aos-delay="1150"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1150"].aos-animate,body[data-aos-delay="1150"] [data-aos].aos-animate{transition-delay:1.15s}[data-aos][data-aos][data-aos-duration="1200"],body[data-aos-duration="1200"] [data-aos]{transition-duration:1.2s}[data-aos][data-aos][data-aos-delay="1200"],body[data-aos-delay="1200"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1200"].aos-animate,body[data-aos-delay="1200"] [data-aos].aos-animate{transition-delay:1.2s}[data-aos][data-aos][data-aos-duration="1250"],body[data-aos-duration="1250"] [data-aos]{transition-duration:1.25s}[data-aos][data-aos][data-aos-delay="1250"],body[data-aos-delay="1250"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1250"].aos-animate,body[data-aos-delay="1250"] [data-aos].aos-animate{transition-delay:1.25s}[data-aos][data-aos][data-aos-duration="1300"],body[data-aos-duration="1300"] [data-aos]{transition-duration:1.3s}[data-aos][data-aos][data-aos-delay="1300"],body[data-aos-delay="1300"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1300"].aos-animate,body[data-aos-delay="1300"] [data-aos].aos-animate{transition-delay:1.3s}[data-aos][data-aos][data-aos-duration="1350"],body[data-aos-duration="1350"] [data-aos]{transition-duration:1.35s}[data-aos][data-aos][data-aos-delay="1350"],body[data-aos-delay="1350"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1350"].aos-animate,body[data-aos-delay="1350"] [data-aos].aos-animate{transition-delay:1.35s}[data-aos][data-aos][data-aos-duration="1400"],body[data-aos-duration="1400"] [data-aos]{transition-duration:1.4s}[data-aos][data-aos][data-aos-delay="1400"],body[data-aos-delay="1400"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1400"].aos-animate,body[data-aos-delay="1400"] [data-aos].aos-animate{transition-delay:1.4s}[data-aos][data-aos][data-aos-duration="1450"],body[data-aos-duration="1450"] [data-aos]{transition-duration:1.45s}[data-aos][data-aos][data-aos-delay="1450"],body[data-aos-delay="1450"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1450"].aos-animate,body[data-aos-delay="1450"] [data-aos].aos-animate{transition-delay:1.45s}[data-aos][data-aos][data-aos-duration="1500"],body[data-aos-duration="1500"] [data-aos]{transition-duration:1.5s}[data-aos][data-aos][data-aos-delay="1500"],body[data-aos-delay="1500"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1500"].aos-animate,body[data-aos-delay="1500"] [data-aos].aos-animate{transition-delay:1.5s}[data-aos][data-aos][data-aos-duration="1550"],body[data-aos-duration="1550"] [data-aos]{transition-duration:1.55s}[data-aos][data-aos][data-aos-delay="1550"],body[data-aos-delay="1550"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1550"].aos-animate,body[data-aos-delay="1550"] [data-aos].aos-animate{transition-delay:1.55s}[data-aos][data-aos][data-aos-duration="1600"],body[data-aos-duration="1600"] [data-aos]{transition-duration:1.6s}[data-aos][data-aos][data-aos-delay="1600"],body[data-aos-delay="1600"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1600"].aos-animate,body[data-aos-delay="1600"] [data-aos].aos-animate{transition-delay:1.6s}[data-aos][data-aos][data-aos-duration="1650"],body[data-aos-duration="1650"] [data-aos]{transition-duration:1.65s}[data-aos][data-aos][data-aos-delay="1650"],body[data-aos-delay="1650"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1650"].aos-animate,body[data-aos-delay="1650"] [data-aos].aos-animate{transition-delay:1.65s}[data-aos][data-aos][data-aos-duration="1700"],body[data-aos-duration="1700"] [data-aos]{transition-duration:1.7s}[data-aos][data-aos][data-aos-delay="1700"],body[data-aos-delay="1700"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1700"].aos-animate,body[data-aos-delay="1700"] [data-aos].aos-animate{transition-delay:1.7s}[data-aos][data-aos][data-aos-duration="1750"],body[data-aos-duration="1750"] [data-aos]{transition-duration:1.75s}[data-aos][data-aos][data-aos-delay="1750"],body[data-aos-delay="1750"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1750"].aos-animate,body[data-aos-delay="1750"] [data-aos].aos-animate{transition-delay:1.75s}[data-aos][data-aos][data-aos-duration="1800"],body[data-aos-duration="1800"] [data-aos]{transition-duration:1.8s}[data-aos][data-aos][data-aos-delay="1800"],body[data-aos-delay="1800"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1800"].aos-animate,body[data-aos-delay="1800"] [data-aos].aos-animate{transition-delay:1.8s}[data-aos][data-aos][data-aos-duration="1850"],body[data-aos-duration="1850"] [data-aos]{transition-duration:1.85s}[data-aos][data-aos][data-aos-delay="1850"],body[data-aos-delay="1850"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1850"].aos-animate,body[data-aos-delay="1850"] [data-aos].aos-animate{transition-delay:1.85s}[data-aos][data-aos][data-aos-duration="1900"],body[data-aos-duration="1900"] [data-aos]{transition-duration:1.9s}[data-aos][data-aos][data-aos-delay="1900"],body[data-aos-delay="1900"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1900"].aos-animate,body[data-aos-delay="1900"] [data-aos].aos-animate{transition-delay:1.9s}[data-aos][data-aos][data-aos-duration="1950"],body[data-aos-duration="1950"] [data-aos]{transition-duration:1.95s}[data-aos][data-aos][data-aos-delay="1950"],body[data-aos-delay="1950"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1950"].aos-animate,body[data-aos-delay="1950"] [data-aos].aos-animate{transition-delay:1.95s}[data-aos][data-aos][data-aos-duration="2000"],body[data-aos-duration="2000"] [data-aos]{transition-duration:2s}[data-aos][data-aos][data-aos-delay="2000"],body[data-aos-delay="2000"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2000"].aos-animate,body[data-aos-delay="2000"] [data-aos].aos-animate{transition-delay:2s}[data-aos][data-aos][data-aos-duration="2050"],body[data-aos-duration="2050"] [data-aos]{transition-duration:2.05s}[data-aos][data-aos][data-aos-delay="2050"],body[data-aos-delay="2050"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2050"].aos-animate,body[data-aos-delay="2050"] [data-aos].aos-animate{transition-delay:2.05s}[data-aos][data-aos][data-aos-duration="2100"],body[data-aos-duration="2100"] [data-aos]{transition-duration:2.1s}[data-aos][data-aos][data-aos-delay="2100"],body[data-aos-delay="2100"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2100"].aos-animate,body[data-aos-delay="2100"] [data-aos].aos-animate{transition-delay:2.1s}[data-aos][data-aos][data-aos-duration="2150"],body[data-aos-duration="2150"] [data-aos]{transition-duration:2.15s}[data-aos][data-aos][data-aos-delay="2150"],body[data-aos-delay="2150"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2150"].aos-animate,body[data-aos-delay="2150"] [data-aos].aos-animate{transition-delay:2.15s}[data-aos][data-aos][data-aos-duration="2200"],body[data-aos-duration="2200"] [data-aos]{transition-duration:2.2s}[data-aos][data-aos][data-aos-delay="2200"],body[data-aos-delay="2200"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2200"].aos-animate,body[data-aos-delay="2200"] [data-aos].aos-animate{transition-delay:2.2s}[data-aos][data-aos][data-aos-duration="2250"],body[data-aos-duration="2250"] [data-aos]{transition-duration:2.25s}[data-aos][data-aos][data-aos-delay="2250"],body[data-aos-delay="2250"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2250"].aos-animate,body[data-aos-delay="2250"] [data-aos].aos-animate{transition-delay:2.25s}[data-aos][data-aos][data-aos-duration="2300"],body[data-aos-duration="2300"] [data-aos]{transition-duration:2.3s}[data-aos][data-aos][data-aos-delay="2300"],body[data-aos-delay="2300"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2300"].aos-animate,body[data-aos-delay="2300"] [data-aos].aos-animate{transition-delay:2.3s}[data-aos][data-aos][data-aos-duration="2350"],body[data-aos-duration="2350"] [data-aos]{transition-duration:2.35s}[data-aos][data-aos][data-aos-delay="2350"],body[data-aos-delay="2350"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2350"].aos-animate,body[data-aos-delay="2350"] [data-aos].aos-animate{transition-delay:2.35s}[data-aos][data-aos][data-aos-duration="2400"],body[data-aos-duration="2400"] [data-aos]{transition-duration:2.4s}[data-aos][data-aos][data-aos-delay="2400"],body[data-aos-delay="2400"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2400"].aos-animate,body[data-aos-delay="2400"] [data-aos].aos-animate{transition-delay:2.4s}[data-aos][data-aos][data-aos-duration="2450"],body[data-aos-duration="2450"] [data-aos]{transition-duration:2.45s}[data-aos][data-aos][data-aos-delay="2450"],body[data-aos-delay="2450"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2450"].aos-animate,body[data-aos-delay="2450"] [data-aos].aos-animate{transition-delay:2.45s}[data-aos][data-aos][data-aos-duration="2500"],body[data-aos-duration="2500"] [data-aos]{transition-duration:2.5s}[data-aos][data-aos][data-aos-delay="2500"],body[data-aos-delay="2500"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2500"].aos-animate,body[data-aos-delay="2500"] [data-aos].aos-animate{transition-delay:2.5s}[data-aos][data-aos][data-aos-duration="2550"],body[data-aos-duration="2550"] [data-aos]{transition-duration:2.55s}[data-aos][data-aos][data-aos-delay="2550"],body[data-aos-delay="2550"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2550"].aos-animate,body[data-aos-delay="2550"] [data-aos].aos-animate{transition-delay:2.55s}[data-aos][data-aos][data-aos-duration="2600"],body[data-aos-duration="2600"] [data-aos]{transition-duration:2.6s}[data-aos][data-aos][data-aos-delay="2600"],body[data-aos-delay="2600"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2600"].aos-animate,body[data-aos-delay="2600"] [data-aos].aos-animate{transition-delay:2.6s}[data-aos][data-aos][data-aos-duration="2650"],body[data-aos-duration="2650"] [data-aos]{transition-duration:2.65s}[data-aos][data-aos][data-aos-delay="2650"],body[data-aos-delay="2650"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2650"].aos-animate,body[data-aos-delay="2650"] [data-aos].aos-animate{transition-delay:2.65s}[data-aos][data-aos][data-aos-duration="2700"],body[data-aos-duration="2700"] [data-aos]{transition-duration:2.7s}[data-aos][data-aos][data-aos-delay="2700"],body[data-aos-delay="2700"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2700"].aos-animate,body[data-aos-delay="2700"] [data-aos].aos-animate{transition-delay:2.7s}[data-aos][data-aos][data-aos-duration="2750"],body[data-aos-duration="2750"] [data-aos]{transition-duration:2.75s}[data-aos][data-aos][data-aos-delay="2750"],body[data-aos-delay="2750"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2750"].aos-animate,body[data-aos-delay="2750"] [data-aos].aos-animate{transition-delay:2.75s}[data-aos][data-aos][data-aos-duration="2800"],body[data-aos-duration="2800"] [data-aos]{transition-duration:2.8s}[data-aos][data-aos][data-aos-delay="2800"],body[data-aos-delay="2800"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2800"].aos-animate,body[data-aos-delay="2800"] [data-aos].aos-animate{transition-delay:2.8s}[data-aos][data-aos][data-aos-duration="2850"],body[data-aos-duration="2850"] [data-aos]{transition-duration:2.85s}[data-aos][data-aos][data-aos-delay="2850"],body[data-aos-delay="2850"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2850"].aos-animate,body[data-aos-delay="2850"] [data-aos].aos-animate{transition-delay:2.85s}[data-aos][data-aos][data-aos-duration="2900"],body[data-aos-duration="2900"] [data-aos]{transition-duration:2.9s}[data-aos][data-aos][data-aos-delay="2900"],body[data-aos-delay="2900"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2900"].aos-animate,body[data-aos-delay="2900"] [data-aos].aos-animate{transition-delay:2.9s}[data-aos][data-aos][data-aos-duration="2950"],body[data-aos-duration="2950"] [data-aos]{transition-duration:2.95s}[data-aos][data-aos][data-aos-delay="2950"],body[data-aos-delay="2950"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2950"].aos-animate,body[data-aos-delay="2950"] [data-aos].aos-animate{transition-delay:2.95s}[data-aos][data-aos][data-aos-duration="3000"],body[data-aos-duration="3000"] [data-aos]{transition-duration:3s}[data-aos][data-aos][data-aos-delay="3000"],body[data-aos-delay="3000"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="3000"].aos-animate,body[data-aos-delay="3000"] [data-aos].aos-animate{transition-delay:3s}[data-aos][data-aos][data-aos-easing=linear],body[data-aos-easing=linear] [data-aos]{transition-timing-function:cubic-bezier(.25,.25,.75,.75)}[data-aos][data-aos][data-aos-easing=ease],body[data-aos-easing=ease] [data-aos]{transition-timing-function:ease}[data-aos][data-aos][data-aos-easing=ease-in],body[data-aos-easing=ease-in] [data-aos]{transition-timing-function:ease-in}[data-aos][data-aos][data-aos-easing=ease-out],body[data-aos-easing=ease-out] [data-aos]{transition-timing-function:ease-out}[data-aos][data-aos][data-aos-easing=ease-in-out],body[data-aos-easing=ease-in-out] [data-aos]{transition-timing-function:ease-in-out}[data-aos][data-aos][data-aos-easing=ease-in-back],body[data-aos-easing=ease-in-back] [data-aos]{transition-timing-function:cubic-bezier(.6,-.28,.735,.045)}[data-aos][data-aos][data-aos-easing=ease-out-back],body[data-aos-easing=ease-out-back] [data-aos]{transition-timing-function:cubic-bezier(.175,.885,.32,1.275)}[data-aos][data-aos][data-aos-easing=ease-in-out-back],body[data-aos-easing=ease-in-out-back] [data-aos]{transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}[data-aos][data-aos][data-aos-easing=ease-in-sine],body[data-aos-easing=ease-in-sine] [data-aos]{transition-timing-function:cubic-bezier(.47,0,.745,.715)}[data-aos][data-aos][data-aos-easing=ease-out-sine],body[data-aos-easing=ease-out-sine] [data-aos]{transition-timing-function:cubic-bezier(.39,.575,.565,1)}[data-aos][data-aos][data-aos-easing=ease-in-out-sine],body[data-aos-easing=ease-in-out-sine] [data-aos]{transition-timing-function:cubic-bezier(.445,.05,.55,.95)}[data-aos][data-aos][data-aos-easing=ease-in-quad],body[data-aos-easing=ease-in-quad] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-quad],body[data-aos-easing=ease-out-quad] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-quad],body[data-aos-easing=ease-in-out-quad] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos][data-aos][data-aos-easing=ease-in-cubic],body[data-aos-easing=ease-in-cubic] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-cubic],body[data-aos-easing=ease-out-cubic] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-cubic],body[data-aos-easing=ease-in-out-cubic] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos][data-aos][data-aos-easing=ease-in-quart],body[data-aos-easing=ease-in-quart] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-quart],body[data-aos-easing=ease-out-quart] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-quart],body[data-aos-easing=ease-in-out-quart] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos^=fade][data-aos^=fade]{opacity:0;transition-property:opacity,transform}[data-aos^=fade][data-aos^=fade].aos-animate{opacity:1;transform:translateZ(0)}[data-aos=fade-up]{transform:translate3d(0,100px,0)}[data-aos=fade-down]{transform:translate3d(0,-100px,0)}[data-aos=fade-right]{transform:translate3d(-100px,0,0)}[data-aos=fade-left]{transform:translate3d(100px,0,0)}[data-aos=fade-up-right]{transform:translate3d(-100px,100px,0)}[data-aos=fade-up-left]{transform:translate3d(100px,100px,0)}[data-aos=fade-down-right]{transform:translate3d(-100px,-100px,0)}[data-aos=fade-down-left]{transform:translate3d(100px,-100px,0)}[data-aos^=zoom][data-aos^=zoom]{opacity:0;transition-property:opacity,transform}[data-aos^=zoom][data-aos^=zoom].aos-animate{opacity:1;transform:translateZ(0) scale(1)}[data-aos=zoom-in]{transform:scale(.6)}[data-aos=zoom-in-up]{transform:translate3d(0,100px,0) scale(.6)}[data-aos=zoom-in-down]{transform:translate3d(0,-100px,0) scale(.6)}[data-aos=zoom-in-right]{transform:translate3d(-100px,0,0) scale(.6)}[data-aos=zoom-in-left]{transform:translate3d(100px,0,0) scale(.6)}[data-aos=zoom-out]{transform:scale(1.2)}[data-aos=zoom-out-up]{transform:translate3d(0,100px,0) scale(1.2)}[data-aos=zoom-out-down]{transform:translate3d(0,-100px,0) scale(1.2)}[data-aos=zoom-out-right]{transform:translate3d(-100px,0,0) scale(1.2)}[data-aos=zoom-out-left]{transform:translate3d(100px,0,0) scale(1.2)}[data-aos^=slide][data-aos^=slide]{transition-property:transform}[data-aos^=slide][data-aos^=slide].aos-animate{transform:translateZ(0)}[data-aos=slide-up]{transform:translate3d(0,100%,0)}[data-aos=slide-down]{transform:translate3d(0,-100%,0)}[data-aos=slide-right]{transform:translate3d(-100%,0,0)}[data-aos=slide-left]{transform:translate3d(100%,0,0)}[data-aos^=flip][data-aos^=flip]{backface-visibility:hidden;transition-property:transform}[data-aos=flip-left]{transform:perspective(2500px) rotateY(-100deg)}[data-aos=flip-left].aos-animate{transform:perspective(2500px) rotateY(0)}[data-aos=flip-right]{transform:perspective(2500px) rotateY(100deg)}[data-aos=flip-right].aos-animate{transform:perspective(2500px) rotateY(0)}[data-aos=flip-up]{transform:perspective(2500px) rotateX(-100deg)}[data-aos=flip-up].aos-animate{transform:perspective(2500px) rotateX(0)}[data-aos=flip-down]{transform:perspective(2500px) rotateX(100deg)}[data-aos=flip-down].aos-animate{transform:perspective(2500px) rotateX(0)} -------------------------------------------------------------------------------- /static/vendor/aos/aos.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="dist/",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute("data-aos"),e.node.removeAttribute("data-aos-easing"),e.node.removeAttribute("data-aos-duration"),e.node.removeAttribute("data-aos-delay")})},S=function(e){return e===!0||"mobile"===e&&p.default.mobile()||"phone"===e&&p.default.phone()||"tablet"===e&&p.default.tablet()||"function"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.info('\n aos: MutationObserver is not supported on this browser,\n code mutations observing has been disabled.\n You may have to call "refreshHard()" by yourself.\n '),x.disableMutationObserver=!0),document.querySelector("body").setAttribute("data-aos-easing",x.easing),document.querySelector("body").setAttribute("data-aos-duration",x.duration),document.querySelector("body").setAttribute("data-aos-delay",x.delay),"DOMContentLoaded"===x.startEvent&&["complete","interactive"].indexOf(document.readyState)>-1?j(!0):"load"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener("resize",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener("orientationchange",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener("scroll",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready("[data-aos]",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){"use strict";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if("function"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S="maxWait"in n,y=S?x(u(n.maxWait)||0,t):y,_="trailing"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if("function"!=typeof e)throw new TypeError(s);return i(o)&&(r="leading"in o?!!o.leading:r,a="trailing"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t="undefined"==typeof e?"undefined":c(e);return!!e&&("object"==t||"function"==t)}function r(e){return!!e&&"object"==("undefined"==typeof e?"undefined":c(e))}function a(e){return"symbol"==("undefined"==typeof e?"undefined":c(e))||r(e)&&k.call(e)==d}function u(e){if("number"==typeof e)return e;if(a(e))return f;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(l,"");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s="Expected a function",f=NaN,d="[object Symbol]",l=/^\s+|\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y="object"==("undefined"==typeof t?"undefined":c(t))&&t&&t.Object===Object&&t,g="object"==("undefined"==typeof self?"undefined":c(self))&&self&&self.Object===Object&&self,h=y||g||Function("return this")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){"use strict";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if("function"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S="maxWait"in n,y=S?k(a(n.maxWait)||0,t):y,_="trailing"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t="undefined"==typeof e?"undefined":u(e);return!!e&&("object"==t||"function"==t)}function i(e){return!!e&&"object"==("undefined"==typeof e?"undefined":u(e))}function r(e){return"symbol"==("undefined"==typeof e?"undefined":u(e))||i(e)&&w.call(e)==f}function a(e){if("number"==typeof e)return e;if(r(e))return s;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(d,"");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c="Expected a function",s=NaN,f="[object Symbol]",d=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v="object"==("undefined"==typeof t?"undefined":u(t))&&t&&t.Object===Object&&t,y="object"==("undefined"==typeof self?"undefined":u(self))&&self&&self.Object===Object&&self,g=v||y||Function("return this")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){"use strict";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;te.position?e.node.classList.add("aos-animate"):"undefined"!=typeof o&&("false"===o||!n&&"true"!==o)&&e.node.classList.remove("aos-animate")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add("aos-init"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute("data-aos-offset"),anchor:e.getAttribute("data-aos-anchor"),anchorPlacement:e.getAttribute("data-aos-anchor-placement")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case"top-bottom":break;case"center-bottom":n+=e.offsetHeight/2;break;case"bottom-bottom":n+=e.offsetHeight;break;case"top-center":n+=i/2;break;case"bottom-center":n+=i/2+e.offsetHeight;break;case"center-center":n+=i/2+e.offsetHeight/2;break;case"top-top":n+=i;break;case"bottom-top":n+=e.offsetHeight+i;break;case"center-top":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-("BODY"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-("BODY"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){return e=e||document.querySelectorAll("[data-aos]"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])}); -------------------------------------------------------------------------------- /static/vendor/bootstrap-icons/fonts/bootstrap-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/vendor/bootstrap-icons/fonts/bootstrap-icons.woff -------------------------------------------------------------------------------- /static/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 -------------------------------------------------------------------------------- /static/vendor/bootstrap/css/bootstrap-reboot.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v5.1.2 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors 4 | * Copyright 2011-2021 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | :root { 9 | --bs-blue: #0d6efd; 10 | --bs-indigo: #6610f2; 11 | --bs-purple: #6f42c1; 12 | --bs-pink: #d63384; 13 | --bs-red: #dc3545; 14 | --bs-orange: #fd7e14; 15 | --bs-yellow: #ffc107; 16 | --bs-green: #198754; 17 | --bs-teal: #20c997; 18 | --bs-cyan: #0dcaf0; 19 | --bs-white: #fff; 20 | --bs-gray: #6c757d; 21 | --bs-gray-dark: #343a40; 22 | --bs-gray-100: #f8f9fa; 23 | --bs-gray-200: #e9ecef; 24 | --bs-gray-300: #dee2e6; 25 | --bs-gray-400: #ced4da; 26 | --bs-gray-500: #adb5bd; 27 | --bs-gray-600: #6c757d; 28 | --bs-gray-700: #495057; 29 | --bs-gray-800: #343a40; 30 | --bs-gray-900: #212529; 31 | --bs-primary: #0d6efd; 32 | --bs-secondary: #6c757d; 33 | --bs-success: #198754; 34 | --bs-info: #0dcaf0; 35 | --bs-warning: #ffc107; 36 | --bs-danger: #dc3545; 37 | --bs-light: #f8f9fa; 38 | --bs-dark: #212529; 39 | --bs-primary-rgb: 13, 110, 253; 40 | --bs-secondary-rgb: 108, 117, 125; 41 | --bs-success-rgb: 25, 135, 84; 42 | --bs-info-rgb: 13, 202, 240; 43 | --bs-warning-rgb: 255, 193, 7; 44 | --bs-danger-rgb: 220, 53, 69; 45 | --bs-light-rgb: 248, 249, 250; 46 | --bs-dark-rgb: 33, 37, 41; 47 | --bs-white-rgb: 255, 255, 255; 48 | --bs-black-rgb: 0, 0, 0; 49 | --bs-body-color-rgb: 33, 37, 41; 50 | --bs-body-bg-rgb: 255, 255, 255; 51 | --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 52 | --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; 53 | --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); 54 | --bs-body-font-family: var(--bs-font-sans-serif); 55 | --bs-body-font-size: 1rem; 56 | --bs-body-font-weight: 400; 57 | --bs-body-line-height: 1.5; 58 | --bs-body-color: #212529; 59 | --bs-body-bg: #fff; 60 | } 61 | 62 | *, 63 | *::before, 64 | *::after { 65 | box-sizing: border-box; 66 | } 67 | 68 | @media (prefers-reduced-motion: no-preference) { 69 | :root { 70 | scroll-behavior: smooth; 71 | } 72 | } 73 | 74 | body { 75 | margin: 0; 76 | font-family: var(--bs-body-font-family); 77 | font-size: var(--bs-body-font-size); 78 | font-weight: var(--bs-body-font-weight); 79 | line-height: var(--bs-body-line-height); 80 | color: var(--bs-body-color); 81 | text-align: var(--bs-body-text-align); 82 | background-color: var(--bs-body-bg); 83 | -webkit-text-size-adjust: 100%; 84 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 85 | } 86 | 87 | hr { 88 | margin: 1rem 0; 89 | color: inherit; 90 | background-color: currentColor; 91 | border: 0; 92 | opacity: 0.25; 93 | } 94 | 95 | hr:not([size]) { 96 | height: 1px; 97 | } 98 | 99 | h6, h5, h4, h3, h2, h1 { 100 | margin-top: 0; 101 | margin-bottom: 0.5rem; 102 | font-weight: 500; 103 | line-height: 1.2; 104 | } 105 | 106 | h1 { 107 | font-size: calc(1.375rem + 1.5vw); 108 | } 109 | @media (min-width: 1200px) { 110 | h1 { 111 | font-size: 2.5rem; 112 | } 113 | } 114 | 115 | h2 { 116 | font-size: calc(1.325rem + 0.9vw); 117 | } 118 | @media (min-width: 1200px) { 119 | h2 { 120 | font-size: 2rem; 121 | } 122 | } 123 | 124 | h3 { 125 | font-size: calc(1.3rem + 0.6vw); 126 | } 127 | @media (min-width: 1200px) { 128 | h3 { 129 | font-size: 1.75rem; 130 | } 131 | } 132 | 133 | h4 { 134 | font-size: calc(1.275rem + 0.3vw); 135 | } 136 | @media (min-width: 1200px) { 137 | h4 { 138 | font-size: 1.5rem; 139 | } 140 | } 141 | 142 | h5 { 143 | font-size: 1.25rem; 144 | } 145 | 146 | h6 { 147 | font-size: 1rem; 148 | } 149 | 150 | p { 151 | margin-top: 0; 152 | margin-bottom: 1rem; 153 | } 154 | 155 | abbr[title], 156 | abbr[data-bs-original-title] { 157 | -webkit-text-decoration: underline dotted; 158 | text-decoration: underline dotted; 159 | cursor: help; 160 | -webkit-text-decoration-skip-ink: none; 161 | text-decoration-skip-ink: none; 162 | } 163 | 164 | address { 165 | margin-bottom: 1rem; 166 | font-style: normal; 167 | line-height: inherit; 168 | } 169 | 170 | ol, 171 | ul { 172 | padding-left: 2rem; 173 | } 174 | 175 | ol, 176 | ul, 177 | dl { 178 | margin-top: 0; 179 | margin-bottom: 1rem; 180 | } 181 | 182 | ol ol, 183 | ul ul, 184 | ol ul, 185 | ul ol { 186 | margin-bottom: 0; 187 | } 188 | 189 | dt { 190 | font-weight: 700; 191 | } 192 | 193 | dd { 194 | margin-bottom: 0.5rem; 195 | margin-left: 0; 196 | } 197 | 198 | blockquote { 199 | margin: 0 0 1rem; 200 | } 201 | 202 | b, 203 | strong { 204 | font-weight: bolder; 205 | } 206 | 207 | small { 208 | font-size: 0.875em; 209 | } 210 | 211 | mark { 212 | padding: 0.2em; 213 | background-color: #fcf8e3; 214 | } 215 | 216 | sub, 217 | sup { 218 | position: relative; 219 | font-size: 0.75em; 220 | line-height: 0; 221 | vertical-align: baseline; 222 | } 223 | 224 | sub { 225 | bottom: -0.25em; 226 | } 227 | 228 | sup { 229 | top: -0.5em; 230 | } 231 | 232 | a { 233 | color: #0d6efd; 234 | text-decoration: underline; 235 | } 236 | a:hover { 237 | color: #0a58ca; 238 | } 239 | 240 | a:not([href]):not([class]), a:not([href]):not([class]):hover { 241 | color: inherit; 242 | text-decoration: none; 243 | } 244 | 245 | pre, 246 | code, 247 | kbd, 248 | samp { 249 | font-family: var(--bs-font-monospace); 250 | font-size: 1em; 251 | direction: ltr /* rtl:ignore */; 252 | unicode-bidi: bidi-override; 253 | } 254 | 255 | pre { 256 | display: block; 257 | margin-top: 0; 258 | margin-bottom: 1rem; 259 | overflow: auto; 260 | font-size: 0.875em; 261 | } 262 | pre code { 263 | font-size: inherit; 264 | color: inherit; 265 | word-break: normal; 266 | } 267 | 268 | code { 269 | font-size: 0.875em; 270 | color: #d63384; 271 | word-wrap: break-word; 272 | } 273 | a > code { 274 | color: inherit; 275 | } 276 | 277 | kbd { 278 | padding: 0.2rem 0.4rem; 279 | font-size: 0.875em; 280 | color: #fff; 281 | background-color: #212529; 282 | border-radius: 0.2rem; 283 | } 284 | kbd kbd { 285 | padding: 0; 286 | font-size: 1em; 287 | font-weight: 700; 288 | } 289 | 290 | figure { 291 | margin: 0 0 1rem; 292 | } 293 | 294 | img, 295 | svg { 296 | vertical-align: middle; 297 | } 298 | 299 | table { 300 | caption-side: bottom; 301 | border-collapse: collapse; 302 | } 303 | 304 | caption { 305 | padding-top: 0.5rem; 306 | padding-bottom: 0.5rem; 307 | color: #6c757d; 308 | text-align: left; 309 | } 310 | 311 | th { 312 | text-align: inherit; 313 | text-align: -webkit-match-parent; 314 | } 315 | 316 | thead, 317 | tbody, 318 | tfoot, 319 | tr, 320 | td, 321 | th { 322 | border-color: inherit; 323 | border-style: solid; 324 | border-width: 0; 325 | } 326 | 327 | label { 328 | display: inline-block; 329 | } 330 | 331 | button { 332 | border-radius: 0; 333 | } 334 | 335 | button:focus:not(:focus-visible) { 336 | outline: 0; 337 | } 338 | 339 | input, 340 | button, 341 | select, 342 | optgroup, 343 | textarea { 344 | margin: 0; 345 | font-family: inherit; 346 | font-size: inherit; 347 | line-height: inherit; 348 | } 349 | 350 | button, 351 | select { 352 | text-transform: none; 353 | } 354 | 355 | [role=button] { 356 | cursor: pointer; 357 | } 358 | 359 | select { 360 | word-wrap: normal; 361 | } 362 | select:disabled { 363 | opacity: 1; 364 | } 365 | 366 | [list]::-webkit-calendar-picker-indicator { 367 | display: none; 368 | } 369 | 370 | button, 371 | [type=button], 372 | [type=reset], 373 | [type=submit] { 374 | -webkit-appearance: button; 375 | } 376 | button:not(:disabled), 377 | [type=button]:not(:disabled), 378 | [type=reset]:not(:disabled), 379 | [type=submit]:not(:disabled) { 380 | cursor: pointer; 381 | } 382 | 383 | ::-moz-focus-inner { 384 | padding: 0; 385 | border-style: none; 386 | } 387 | 388 | textarea { 389 | resize: vertical; 390 | } 391 | 392 | fieldset { 393 | min-width: 0; 394 | padding: 0; 395 | margin: 0; 396 | border: 0; 397 | } 398 | 399 | legend { 400 | float: left; 401 | width: 100%; 402 | padding: 0; 403 | margin-bottom: 0.5rem; 404 | font-size: calc(1.275rem + 0.3vw); 405 | line-height: inherit; 406 | } 407 | @media (min-width: 1200px) { 408 | legend { 409 | font-size: 1.5rem; 410 | } 411 | } 412 | legend + * { 413 | clear: left; 414 | } 415 | 416 | ::-webkit-datetime-edit-fields-wrapper, 417 | ::-webkit-datetime-edit-text, 418 | ::-webkit-datetime-edit-minute, 419 | ::-webkit-datetime-edit-hour-field, 420 | ::-webkit-datetime-edit-day-field, 421 | ::-webkit-datetime-edit-month-field, 422 | ::-webkit-datetime-edit-year-field { 423 | padding: 0; 424 | } 425 | 426 | ::-webkit-inner-spin-button { 427 | height: auto; 428 | } 429 | 430 | [type=search] { 431 | outline-offset: -2px; 432 | -webkit-appearance: textfield; 433 | } 434 | 435 | /* rtl:raw: 436 | [type="tel"], 437 | [type="url"], 438 | [type="email"], 439 | [type="number"] { 440 | direction: ltr; 441 | } 442 | */ 443 | ::-webkit-search-decoration { 444 | -webkit-appearance: none; 445 | } 446 | 447 | ::-webkit-color-swatch-wrapper { 448 | padding: 0; 449 | } 450 | 451 | ::-webkit-file-upload-button { 452 | font: inherit; 453 | } 454 | 455 | ::file-selector-button { 456 | font: inherit; 457 | } 458 | 459 | ::-webkit-file-upload-button { 460 | font: inherit; 461 | -webkit-appearance: button; 462 | } 463 | 464 | output { 465 | display: inline-block; 466 | } 467 | 468 | iframe { 469 | border: 0; 470 | } 471 | 472 | summary { 473 | display: list-item; 474 | cursor: pointer; 475 | } 476 | 477 | progress { 478 | vertical-align: baseline; 479 | } 480 | 481 | [hidden] { 482 | display: none !important; 483 | } 484 | 485 | /*# sourceMappingURL=bootstrap-reboot.css.map */ -------------------------------------------------------------------------------- /static/vendor/bootstrap/css/bootstrap-reboot.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v5.1.2 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors 4 | * Copyright 2011-2021 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important} 8 | /*# sourceMappingURL=bootstrap-reboot.min.css.map */ -------------------------------------------------------------------------------- /static/vendor/bootstrap/css/bootstrap-reboot.rtl.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v5.1.2 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors 4 | * Copyright 2011-2021 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | :root { 9 | --bs-blue: #0d6efd; 10 | --bs-indigo: #6610f2; 11 | --bs-purple: #6f42c1; 12 | --bs-pink: #d63384; 13 | --bs-red: #dc3545; 14 | --bs-orange: #fd7e14; 15 | --bs-yellow: #ffc107; 16 | --bs-green: #198754; 17 | --bs-teal: #20c997; 18 | --bs-cyan: #0dcaf0; 19 | --bs-white: #fff; 20 | --bs-gray: #6c757d; 21 | --bs-gray-dark: #343a40; 22 | --bs-gray-100: #f8f9fa; 23 | --bs-gray-200: #e9ecef; 24 | --bs-gray-300: #dee2e6; 25 | --bs-gray-400: #ced4da; 26 | --bs-gray-500: #adb5bd; 27 | --bs-gray-600: #6c757d; 28 | --bs-gray-700: #495057; 29 | --bs-gray-800: #343a40; 30 | --bs-gray-900: #212529; 31 | --bs-primary: #0d6efd; 32 | --bs-secondary: #6c757d; 33 | --bs-success: #198754; 34 | --bs-info: #0dcaf0; 35 | --bs-warning: #ffc107; 36 | --bs-danger: #dc3545; 37 | --bs-light: #f8f9fa; 38 | --bs-dark: #212529; 39 | --bs-primary-rgb: 13, 110, 253; 40 | --bs-secondary-rgb: 108, 117, 125; 41 | --bs-success-rgb: 25, 135, 84; 42 | --bs-info-rgb: 13, 202, 240; 43 | --bs-warning-rgb: 255, 193, 7; 44 | --bs-danger-rgb: 220, 53, 69; 45 | --bs-light-rgb: 248, 249, 250; 46 | --bs-dark-rgb: 33, 37, 41; 47 | --bs-white-rgb: 255, 255, 255; 48 | --bs-black-rgb: 0, 0, 0; 49 | --bs-body-color-rgb: 33, 37, 41; 50 | --bs-body-bg-rgb: 255, 255, 255; 51 | --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 52 | --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; 53 | --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); 54 | --bs-body-font-family: var(--bs-font-sans-serif); 55 | --bs-body-font-size: 1rem; 56 | --bs-body-font-weight: 400; 57 | --bs-body-line-height: 1.5; 58 | --bs-body-color: #212529; 59 | --bs-body-bg: #fff; 60 | } 61 | 62 | *, 63 | *::before, 64 | *::after { 65 | box-sizing: border-box; 66 | } 67 | 68 | @media (prefers-reduced-motion: no-preference) { 69 | :root { 70 | scroll-behavior: smooth; 71 | } 72 | } 73 | 74 | body { 75 | margin: 0; 76 | font-family: var(--bs-body-font-family); 77 | font-size: var(--bs-body-font-size); 78 | font-weight: var(--bs-body-font-weight); 79 | line-height: var(--bs-body-line-height); 80 | color: var(--bs-body-color); 81 | text-align: var(--bs-body-text-align); 82 | background-color: var(--bs-body-bg); 83 | -webkit-text-size-adjust: 100%; 84 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 85 | } 86 | 87 | hr { 88 | margin: 1rem 0; 89 | color: inherit; 90 | background-color: currentColor; 91 | border: 0; 92 | opacity: 0.25; 93 | } 94 | 95 | hr:not([size]) { 96 | height: 1px; 97 | } 98 | 99 | h6, h5, h4, h3, h2, h1 { 100 | margin-top: 0; 101 | margin-bottom: 0.5rem; 102 | font-weight: 500; 103 | line-height: 1.2; 104 | } 105 | 106 | h1 { 107 | font-size: calc(1.375rem + 1.5vw); 108 | } 109 | @media (min-width: 1200px) { 110 | h1 { 111 | font-size: 2.5rem; 112 | } 113 | } 114 | 115 | h2 { 116 | font-size: calc(1.325rem + 0.9vw); 117 | } 118 | @media (min-width: 1200px) { 119 | h2 { 120 | font-size: 2rem; 121 | } 122 | } 123 | 124 | h3 { 125 | font-size: calc(1.3rem + 0.6vw); 126 | } 127 | @media (min-width: 1200px) { 128 | h3 { 129 | font-size: 1.75rem; 130 | } 131 | } 132 | 133 | h4 { 134 | font-size: calc(1.275rem + 0.3vw); 135 | } 136 | @media (min-width: 1200px) { 137 | h4 { 138 | font-size: 1.5rem; 139 | } 140 | } 141 | 142 | h5 { 143 | font-size: 1.25rem; 144 | } 145 | 146 | h6 { 147 | font-size: 1rem; 148 | } 149 | 150 | p { 151 | margin-top: 0; 152 | margin-bottom: 1rem; 153 | } 154 | 155 | abbr[title], 156 | abbr[data-bs-original-title] { 157 | -webkit-text-decoration: underline dotted; 158 | text-decoration: underline dotted; 159 | cursor: help; 160 | -webkit-text-decoration-skip-ink: none; 161 | text-decoration-skip-ink: none; 162 | } 163 | 164 | address { 165 | margin-bottom: 1rem; 166 | font-style: normal; 167 | line-height: inherit; 168 | } 169 | 170 | ol, 171 | ul { 172 | padding-right: 2rem; 173 | } 174 | 175 | ol, 176 | ul, 177 | dl { 178 | margin-top: 0; 179 | margin-bottom: 1rem; 180 | } 181 | 182 | ol ol, 183 | ul ul, 184 | ol ul, 185 | ul ol { 186 | margin-bottom: 0; 187 | } 188 | 189 | dt { 190 | font-weight: 700; 191 | } 192 | 193 | dd { 194 | margin-bottom: 0.5rem; 195 | margin-right: 0; 196 | } 197 | 198 | blockquote { 199 | margin: 0 0 1rem; 200 | } 201 | 202 | b, 203 | strong { 204 | font-weight: bolder; 205 | } 206 | 207 | small { 208 | font-size: 0.875em; 209 | } 210 | 211 | mark { 212 | padding: 0.2em; 213 | background-color: #fcf8e3; 214 | } 215 | 216 | sub, 217 | sup { 218 | position: relative; 219 | font-size: 0.75em; 220 | line-height: 0; 221 | vertical-align: baseline; 222 | } 223 | 224 | sub { 225 | bottom: -0.25em; 226 | } 227 | 228 | sup { 229 | top: -0.5em; 230 | } 231 | 232 | a { 233 | color: #0d6efd; 234 | text-decoration: underline; 235 | } 236 | a:hover { 237 | color: #0a58ca; 238 | } 239 | 240 | a:not([href]):not([class]), a:not([href]):not([class]):hover { 241 | color: inherit; 242 | text-decoration: none; 243 | } 244 | 245 | pre, 246 | code, 247 | kbd, 248 | samp { 249 | font-family: var(--bs-font-monospace); 250 | font-size: 1em; 251 | direction: ltr ; 252 | unicode-bidi: bidi-override; 253 | } 254 | 255 | pre { 256 | display: block; 257 | margin-top: 0; 258 | margin-bottom: 1rem; 259 | overflow: auto; 260 | font-size: 0.875em; 261 | } 262 | pre code { 263 | font-size: inherit; 264 | color: inherit; 265 | word-break: normal; 266 | } 267 | 268 | code { 269 | font-size: 0.875em; 270 | color: #d63384; 271 | word-wrap: break-word; 272 | } 273 | a > code { 274 | color: inherit; 275 | } 276 | 277 | kbd { 278 | padding: 0.2rem 0.4rem; 279 | font-size: 0.875em; 280 | color: #fff; 281 | background-color: #212529; 282 | border-radius: 0.2rem; 283 | } 284 | kbd kbd { 285 | padding: 0; 286 | font-size: 1em; 287 | font-weight: 700; 288 | } 289 | 290 | figure { 291 | margin: 0 0 1rem; 292 | } 293 | 294 | img, 295 | svg { 296 | vertical-align: middle; 297 | } 298 | 299 | table { 300 | caption-side: bottom; 301 | border-collapse: collapse; 302 | } 303 | 304 | caption { 305 | padding-top: 0.5rem; 306 | padding-bottom: 0.5rem; 307 | color: #6c757d; 308 | text-align: right; 309 | } 310 | 311 | th { 312 | text-align: inherit; 313 | text-align: -webkit-match-parent; 314 | } 315 | 316 | thead, 317 | tbody, 318 | tfoot, 319 | tr, 320 | td, 321 | th { 322 | border-color: inherit; 323 | border-style: solid; 324 | border-width: 0; 325 | } 326 | 327 | label { 328 | display: inline-block; 329 | } 330 | 331 | button { 332 | border-radius: 0; 333 | } 334 | 335 | button:focus:not(:focus-visible) { 336 | outline: 0; 337 | } 338 | 339 | input, 340 | button, 341 | select, 342 | optgroup, 343 | textarea { 344 | margin: 0; 345 | font-family: inherit; 346 | font-size: inherit; 347 | line-height: inherit; 348 | } 349 | 350 | button, 351 | select { 352 | text-transform: none; 353 | } 354 | 355 | [role=button] { 356 | cursor: pointer; 357 | } 358 | 359 | select { 360 | word-wrap: normal; 361 | } 362 | select:disabled { 363 | opacity: 1; 364 | } 365 | 366 | [list]::-webkit-calendar-picker-indicator { 367 | display: none; 368 | } 369 | 370 | button, 371 | [type=button], 372 | [type=reset], 373 | [type=submit] { 374 | -webkit-appearance: button; 375 | } 376 | button:not(:disabled), 377 | [type=button]:not(:disabled), 378 | [type=reset]:not(:disabled), 379 | [type=submit]:not(:disabled) { 380 | cursor: pointer; 381 | } 382 | 383 | ::-moz-focus-inner { 384 | padding: 0; 385 | border-style: none; 386 | } 387 | 388 | textarea { 389 | resize: vertical; 390 | } 391 | 392 | fieldset { 393 | min-width: 0; 394 | padding: 0; 395 | margin: 0; 396 | border: 0; 397 | } 398 | 399 | legend { 400 | float: right; 401 | width: 100%; 402 | padding: 0; 403 | margin-bottom: 0.5rem; 404 | font-size: calc(1.275rem + 0.3vw); 405 | line-height: inherit; 406 | } 407 | @media (min-width: 1200px) { 408 | legend { 409 | font-size: 1.5rem; 410 | } 411 | } 412 | legend + * { 413 | clear: right; 414 | } 415 | 416 | ::-webkit-datetime-edit-fields-wrapper, 417 | ::-webkit-datetime-edit-text, 418 | ::-webkit-datetime-edit-minute, 419 | ::-webkit-datetime-edit-hour-field, 420 | ::-webkit-datetime-edit-day-field, 421 | ::-webkit-datetime-edit-month-field, 422 | ::-webkit-datetime-edit-year-field { 423 | padding: 0; 424 | } 425 | 426 | ::-webkit-inner-spin-button { 427 | height: auto; 428 | } 429 | 430 | [type=search] { 431 | outline-offset: -2px; 432 | -webkit-appearance: textfield; 433 | } 434 | 435 | [type="tel"], 436 | [type="url"], 437 | [type="email"], 438 | [type="number"] { 439 | direction: ltr; 440 | } 441 | ::-webkit-search-decoration { 442 | -webkit-appearance: none; 443 | } 444 | 445 | ::-webkit-color-swatch-wrapper { 446 | padding: 0; 447 | } 448 | 449 | ::-webkit-file-upload-button { 450 | font: inherit; 451 | } 452 | 453 | ::file-selector-button { 454 | font: inherit; 455 | } 456 | 457 | ::-webkit-file-upload-button { 458 | font: inherit; 459 | -webkit-appearance: button; 460 | } 461 | 462 | output { 463 | display: inline-block; 464 | } 465 | 466 | iframe { 467 | border: 0; 468 | } 469 | 470 | summary { 471 | display: list-item; 472 | cursor: pointer; 473 | } 474 | 475 | progress { 476 | vertical-align: baseline; 477 | } 478 | 479 | [hidden] { 480 | display: none !important; 481 | } 482 | /*# sourceMappingURL=bootstrap-reboot.rtl.css.map */ -------------------------------------------------------------------------------- /static/vendor/bootstrap/css/bootstrap-reboot.rtl.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v5.1.2 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors 4 | * Copyright 2011-2021 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-right:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-right:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:right}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:right;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:right}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}[type=email],[type=number],[type=tel],[type=url]{direction:ltr}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important} 8 | /*# sourceMappingURL=bootstrap-reboot.rtl.min.css.map */ -------------------------------------------------------------------------------- /static/vendor/boxicons/css/animations.css: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes spin 2 | { 3 | 0% 4 | { 5 | -webkit-transform: rotate(0); 6 | transform: rotate(0); 7 | } 8 | 100% 9 | { 10 | -webkit-transform: rotate(359deg); 11 | transform: rotate(359deg); 12 | } 13 | } 14 | @keyframes spin 15 | { 16 | 0% 17 | { 18 | -webkit-transform: rotate(0); 19 | transform: rotate(0); 20 | } 21 | 100% 22 | { 23 | -webkit-transform: rotate(359deg); 24 | transform: rotate(359deg); 25 | } 26 | } 27 | @-webkit-keyframes burst 28 | { 29 | 0% 30 | { 31 | -webkit-transform: scale(1); 32 | transform: scale(1); 33 | 34 | opacity: 1; 35 | } 36 | 90% 37 | { 38 | -webkit-transform: scale(1.5); 39 | transform: scale(1.5); 40 | 41 | opacity: 0; 42 | } 43 | } 44 | @keyframes burst 45 | { 46 | 0% 47 | { 48 | -webkit-transform: scale(1); 49 | transform: scale(1); 50 | 51 | opacity: 1; 52 | } 53 | 90% 54 | { 55 | -webkit-transform: scale(1.5); 56 | transform: scale(1.5); 57 | 58 | opacity: 0; 59 | } 60 | } 61 | @-webkit-keyframes flashing 62 | { 63 | 0% 64 | { 65 | opacity: 1; 66 | } 67 | 45% 68 | { 69 | opacity: 0; 70 | } 71 | 90% 72 | { 73 | opacity: 1; 74 | } 75 | } 76 | @keyframes flashing 77 | { 78 | 0% 79 | { 80 | opacity: 1; 81 | } 82 | 45% 83 | { 84 | opacity: 0; 85 | } 86 | 90% 87 | { 88 | opacity: 1; 89 | } 90 | } 91 | @-webkit-keyframes fade-left 92 | { 93 | 0% 94 | { 95 | -webkit-transform: translateX(0); 96 | transform: translateX(0); 97 | 98 | opacity: 1; 99 | } 100 | 75% 101 | { 102 | -webkit-transform: translateX(-20px); 103 | transform: translateX(-20px); 104 | 105 | opacity: 0; 106 | } 107 | } 108 | @keyframes fade-left 109 | { 110 | 0% 111 | { 112 | -webkit-transform: translateX(0); 113 | transform: translateX(0); 114 | 115 | opacity: 1; 116 | } 117 | 75% 118 | { 119 | -webkit-transform: translateX(-20px); 120 | transform: translateX(-20px); 121 | 122 | opacity: 0; 123 | } 124 | } 125 | @-webkit-keyframes fade-right 126 | { 127 | 0% 128 | { 129 | -webkit-transform: translateX(0); 130 | transform: translateX(0); 131 | 132 | opacity: 1; 133 | } 134 | 75% 135 | { 136 | -webkit-transform: translateX(20px); 137 | transform: translateX(20px); 138 | 139 | opacity: 0; 140 | } 141 | } 142 | @keyframes fade-right 143 | { 144 | 0% 145 | { 146 | -webkit-transform: translateX(0); 147 | transform: translateX(0); 148 | 149 | opacity: 1; 150 | } 151 | 75% 152 | { 153 | -webkit-transform: translateX(20px); 154 | transform: translateX(20px); 155 | 156 | opacity: 0; 157 | } 158 | } 159 | @-webkit-keyframes fade-up 160 | { 161 | 0% 162 | { 163 | -webkit-transform: translateY(0); 164 | transform: translateY(0); 165 | 166 | opacity: 1; 167 | } 168 | 75% 169 | { 170 | -webkit-transform: translateY(-20px); 171 | transform: translateY(-20px); 172 | 173 | opacity: 0; 174 | } 175 | } 176 | @keyframes fade-up 177 | { 178 | 0% 179 | { 180 | -webkit-transform: translateY(0); 181 | transform: translateY(0); 182 | 183 | opacity: 1; 184 | } 185 | 75% 186 | { 187 | -webkit-transform: translateY(-20px); 188 | transform: translateY(-20px); 189 | 190 | opacity: 0; 191 | } 192 | } 193 | @-webkit-keyframes fade-down 194 | { 195 | 0% 196 | { 197 | -webkit-transform: translateY(0); 198 | transform: translateY(0); 199 | 200 | opacity: 1; 201 | } 202 | 75% 203 | { 204 | -webkit-transform: translateY(20px); 205 | transform: translateY(20px); 206 | 207 | opacity: 0; 208 | } 209 | } 210 | @keyframes fade-down 211 | { 212 | 0% 213 | { 214 | -webkit-transform: translateY(0); 215 | transform: translateY(0); 216 | 217 | opacity: 1; 218 | } 219 | 75% 220 | { 221 | -webkit-transform: translateY(20px); 222 | transform: translateY(20px); 223 | 224 | opacity: 0; 225 | } 226 | } 227 | @-webkit-keyframes tada 228 | { 229 | from 230 | { 231 | -webkit-transform: scale3d(1, 1, 1); 232 | transform: scale3d(1, 1, 1); 233 | } 234 | 235 | 10%, 236 | 20% 237 | { 238 | -webkit-transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); 239 | transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); 240 | } 241 | 242 | 30%, 243 | 50%, 244 | 70%, 245 | 90% 246 | { 247 | -webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); 248 | transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); 249 | } 250 | 251 | 40%, 252 | 60%, 253 | 80% 254 | { 255 | -webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, -10deg); 256 | transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, -10deg); 257 | } 258 | 259 | to 260 | { 261 | -webkit-transform: scale3d(1, 1, 1); 262 | transform: scale3d(1, 1, 1); 263 | } 264 | } 265 | 266 | @keyframes tada 267 | { 268 | from 269 | { 270 | -webkit-transform: scale3d(1, 1, 1); 271 | transform: scale3d(1, 1, 1); 272 | } 273 | 274 | 10%, 275 | 20% 276 | { 277 | -webkit-transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); 278 | transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); 279 | } 280 | 281 | 30%, 282 | 50%, 283 | 70%, 284 | 90% 285 | { 286 | -webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); 287 | transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); 288 | } 289 | 290 | 40%, 291 | 60%, 292 | 80% 293 | { 294 | -webkit-transform: rotate3d(0, 0, 1, -10deg); 295 | transform: rotate3d(0, 0, 1, -10deg); 296 | } 297 | 298 | to 299 | { 300 | -webkit-transform: scale3d(1, 1, 1); 301 | transform: scale3d(1, 1, 1); 302 | } 303 | } 304 | .bx-spin 305 | { 306 | -webkit-animation: spin 2s linear infinite; 307 | animation: spin 2s linear infinite; 308 | } 309 | .bx-spin-hover:hover 310 | { 311 | -webkit-animation: spin 2s linear infinite; 312 | animation: spin 2s linear infinite; 313 | } 314 | 315 | .bx-tada 316 | { 317 | -webkit-animation: tada 1.5s ease infinite; 318 | animation: tada 1.5s ease infinite; 319 | } 320 | .bx-tada-hover:hover 321 | { 322 | -webkit-animation: tada 1.5s ease infinite; 323 | animation: tada 1.5s ease infinite; 324 | } 325 | 326 | .bx-flashing 327 | { 328 | -webkit-animation: flashing 1.5s infinite linear; 329 | animation: flashing 1.5s infinite linear; 330 | } 331 | .bx-flashing-hover:hover 332 | { 333 | -webkit-animation: flashing 1.5s infinite linear; 334 | animation: flashing 1.5s infinite linear; 335 | } 336 | 337 | .bx-burst 338 | { 339 | -webkit-animation: burst 1.5s infinite linear; 340 | animation: burst 1.5s infinite linear; 341 | } 342 | .bx-burst-hover:hover 343 | { 344 | -webkit-animation: burst 1.5s infinite linear; 345 | animation: burst 1.5s infinite linear; 346 | } 347 | .bx-fade-up 348 | { 349 | -webkit-animation: fade-up 1.5s infinite linear; 350 | animation: fade-up 1.5s infinite linear; 351 | } 352 | .bx-fade-up-hover:hover 353 | { 354 | -webkit-animation: fade-up 1.5s infinite linear; 355 | animation: fade-up 1.5s infinite linear; 356 | } 357 | .bx-fade-down 358 | { 359 | -webkit-animation: fade-down 1.5s infinite linear; 360 | animation: fade-down 1.5s infinite linear; 361 | } 362 | .bx-fade-down-hover:hover 363 | { 364 | -webkit-animation: fade-down 1.5s infinite linear; 365 | animation: fade-down 1.5s infinite linear; 366 | } 367 | .bx-fade-left 368 | { 369 | -webkit-animation: fade-left 1.5s infinite linear; 370 | animation: fade-left 1.5s infinite linear; 371 | } 372 | .bx-fade-left-hover:hover 373 | { 374 | -webkit-animation: fade-left 1.5s infinite linear; 375 | animation: fade-left 1.5s infinite linear; 376 | } 377 | .bx-fade-right 378 | { 379 | -webkit-animation: fade-right 1.5s infinite linear; 380 | animation: fade-right 1.5s infinite linear; 381 | } 382 | .bx-fade-right-hover:hover 383 | { 384 | -webkit-animation: fade-right 1.5s infinite linear; 385 | animation: fade-right 1.5s infinite linear; 386 | } -------------------------------------------------------------------------------- /static/vendor/boxicons/css/transformations.css: -------------------------------------------------------------------------------- 1 | .bx-rotate-90 2 | { 3 | transform: rotate(90deg); 4 | 5 | -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=1)'; 6 | } 7 | .bx-rotate-180 8 | { 9 | transform: rotate(180deg); 10 | 11 | -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2)'; 12 | } 13 | .bx-rotate-270 14 | { 15 | transform: rotate(270deg); 16 | 17 | -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=3)'; 18 | } 19 | .bx-flip-horizontal 20 | { 21 | transform: scaleX(-1); 22 | 23 | -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)'; 24 | } 25 | .bx-flip-vertical 26 | { 27 | transform: scaleY(-1); 28 | 29 | -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)'; 30 | } 31 | -------------------------------------------------------------------------------- /static/vendor/boxicons/fonts/boxicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/vendor/boxicons/fonts/boxicons.eot -------------------------------------------------------------------------------- /static/vendor/boxicons/fonts/boxicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/vendor/boxicons/fonts/boxicons.ttf -------------------------------------------------------------------------------- /static/vendor/boxicons/fonts/boxicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/vendor/boxicons/fonts/boxicons.woff -------------------------------------------------------------------------------- /static/vendor/boxicons/fonts/boxicons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenpaopao/pythonFlaskmysql/96823070927abbc339e983a3a2767a53ad30052b/static/vendor/boxicons/fonts/boxicons.woff2 -------------------------------------------------------------------------------- /static/vendor/glightbox/css/glightbox.css: -------------------------------------------------------------------------------- 1 | .glightbox-container { 2 | width: 100%; 3 | height: 100%; 4 | position: fixed; 5 | top: 0; 6 | left: 0; 7 | z-index: 999999 !important; 8 | overflow: hidden; 9 | -ms-touch-action: none; 10 | touch-action: none; 11 | -webkit-text-size-adjust: 100%; 12 | -moz-text-size-adjust: 100%; 13 | -ms-text-size-adjust: 100%; 14 | text-size-adjust: 100%; 15 | -webkit-backface-visibility: hidden; 16 | backface-visibility: hidden; 17 | outline: none; 18 | overflow: hidden; 19 | } 20 | 21 | .glightbox-container.inactive { 22 | display: none; 23 | } 24 | 25 | .glightbox-container .gcontainer { 26 | position: relative; 27 | width: 100%; 28 | height: 100%; 29 | z-index: 9999; 30 | overflow: hidden; 31 | } 32 | 33 | .glightbox-container .gslider { 34 | -webkit-transition: -webkit-transform 0.4s ease; 35 | transition: -webkit-transform 0.4s ease; 36 | transition: transform 0.4s ease; 37 | transition: transform 0.4s ease, -webkit-transform 0.4s ease; 38 | height: 100%; 39 | left: 0; 40 | top: 0; 41 | width: 100%; 42 | position: relative; 43 | overflow: hidden; 44 | display: -webkit-box !important; 45 | display: -ms-flexbox !important; 46 | display: flex !important; 47 | -webkit-box-pack: center; 48 | -ms-flex-pack: center; 49 | justify-content: center; 50 | -webkit-box-align: center; 51 | -ms-flex-align: center; 52 | align-items: center; 53 | -webkit-transform: translate3d(0, 0, 0); 54 | transform: translate3d(0, 0, 0); 55 | } 56 | 57 | .glightbox-container .gslide { 58 | width: 100%; 59 | position: absolute; 60 | opacity: 1; 61 | -webkit-user-select: none; 62 | -moz-user-select: none; 63 | -ms-user-select: none; 64 | user-select: none; 65 | display: -webkit-box; 66 | display: -ms-flexbox; 67 | display: flex; 68 | -webkit-box-align: center; 69 | -ms-flex-align: center; 70 | align-items: center; 71 | -webkit-box-pack: center; 72 | -ms-flex-pack: center; 73 | justify-content: center; 74 | opacity: 0; 75 | } 76 | 77 | .glightbox-container .gslide.current { 78 | opacity: 1; 79 | z-index: 99999; 80 | position: relative; 81 | } 82 | 83 | .glightbox-container .gslide.prev { 84 | opacity: 1; 85 | z-index: 9999; 86 | } 87 | 88 | .glightbox-container .gslide-inner-content { 89 | width: 100%; 90 | } 91 | 92 | .glightbox-container .ginner-container { 93 | position: relative; 94 | width: 100%; 95 | display: -webkit-box; 96 | display: -ms-flexbox; 97 | display: flex; 98 | -webkit-box-pack: center; 99 | -ms-flex-pack: center; 100 | justify-content: center; 101 | -webkit-box-orient: vertical; 102 | -webkit-box-direction: normal; 103 | -ms-flex-direction: column; 104 | flex-direction: column; 105 | max-width: 100%; 106 | margin: auto; 107 | height: 100vh; 108 | } 109 | 110 | .glightbox-container .ginner-container.gvideo-container { 111 | width: 100%; 112 | } 113 | 114 | .glightbox-container .ginner-container.desc-bottom, 115 | .glightbox-container .ginner-container.desc-top { 116 | -webkit-box-orient: vertical; 117 | -webkit-box-direction: normal; 118 | -ms-flex-direction: column; 119 | flex-direction: column; 120 | } 121 | 122 | .glightbox-container .ginner-container.desc-left, 123 | .glightbox-container .ginner-container.desc-right { 124 | max-width: 100% !important; 125 | } 126 | 127 | .gslide iframe, 128 | .gslide video { 129 | outline: none !important; 130 | border: none; 131 | min-height: 165px; 132 | -webkit-overflow-scrolling: touch; 133 | -ms-touch-action: auto; 134 | touch-action: auto; 135 | } 136 | 137 | .gslide:not(.current) { 138 | pointer-events: none; 139 | } 140 | 141 | .gslide-image { 142 | -webkit-box-align: center; 143 | -ms-flex-align: center; 144 | align-items: center; 145 | } 146 | 147 | .gslide-image img { 148 | max-height: 100vh; 149 | display: block; 150 | padding: 0; 151 | float: none; 152 | outline: none; 153 | border: none; 154 | -webkit-user-select: none; 155 | -moz-user-select: none; 156 | -ms-user-select: none; 157 | user-select: none; 158 | max-width: 100vw; 159 | width: auto; 160 | height: auto; 161 | -o-object-fit: cover; 162 | object-fit: cover; 163 | -ms-touch-action: none; 164 | touch-action: none; 165 | margin: auto; 166 | min-width: 200px; 167 | } 168 | 169 | .desc-top .gslide-image img, 170 | .desc-bottom .gslide-image img { 171 | width: auto; 172 | } 173 | 174 | .desc-left .gslide-image img, 175 | .desc-right .gslide-image img { 176 | width: auto; 177 | max-width: 100%; 178 | } 179 | 180 | .gslide-image img.zoomable { 181 | position: relative; 182 | } 183 | 184 | .gslide-image img.dragging { 185 | cursor: -webkit-grabbing !important; 186 | cursor: grabbing !important; 187 | -webkit-transition: none; 188 | transition: none; 189 | } 190 | 191 | .gslide-video { 192 | position: relative; 193 | max-width: 100vh; 194 | width: 100% !important; 195 | } 196 | 197 | .gslide-video .gvideo-wrapper { 198 | width: 100%; 199 | /* max-width: 160vmin; */ 200 | margin: auto; 201 | } 202 | 203 | .gslide-video::before { 204 | content: ''; 205 | display: block; 206 | position: absolute; 207 | width: 100%; 208 | height: 100%; 209 | background: rgba(255, 0, 0, 0.34); 210 | display: none; 211 | } 212 | 213 | .gslide-video.playing::before { 214 | display: none; 215 | } 216 | 217 | .gslide-video.fullscreen { 218 | max-width: 100% !important; 219 | min-width: 100%; 220 | height: 75vh; 221 | } 222 | 223 | .gslide-video.fullscreen video { 224 | max-width: 100% !important; 225 | width: 100% !important; 226 | } 227 | 228 | .gslide-inline { 229 | background: #fff; 230 | text-align: left; 231 | max-height: calc(100vh - 40px); 232 | overflow: auto; 233 | max-width: 100%; 234 | } 235 | 236 | .gslide-inline .ginlined-content { 237 | padding: 20px; 238 | width: 100%; 239 | } 240 | 241 | .gslide-inline .dragging { 242 | cursor: -webkit-grabbing !important; 243 | cursor: grabbing !important; 244 | -webkit-transition: none; 245 | transition: none; 246 | } 247 | 248 | .ginlined-content { 249 | overflow: auto; 250 | display: block !important; 251 | opacity: 1; 252 | } 253 | 254 | .gslide-external { 255 | display: -webkit-box; 256 | display: -ms-flexbox; 257 | display: flex; 258 | width: 100%; 259 | min-width: 100%; 260 | background: #fff; 261 | padding: 0; 262 | overflow: auto; 263 | max-height: 75vh; 264 | height: 100%; 265 | } 266 | 267 | .gslide-media { 268 | display: -webkit-box; 269 | display: -ms-flexbox; 270 | display: flex; 271 | width: auto; 272 | } 273 | 274 | .zoomed .gslide-media { 275 | -webkit-box-shadow: none !important; 276 | box-shadow: none !important; 277 | } 278 | 279 | .desc-top .gslide-media, 280 | .desc-bottom .gslide-media { 281 | margin: 0 auto; 282 | -webkit-box-orient: vertical; 283 | -webkit-box-direction: normal; 284 | -ms-flex-direction: column; 285 | flex-direction: column; 286 | } 287 | 288 | .gslide-description { 289 | position: relative; 290 | -webkit-box-flex: 1; 291 | -ms-flex: 1 0 100%; 292 | flex: 1 0 100%; 293 | } 294 | 295 | .gslide-description.description-left, 296 | .gslide-description.description-right { 297 | max-width: 100%; 298 | } 299 | 300 | .gslide-description.description-bottom, 301 | .gslide-description.description-top { 302 | margin: 0 auto; 303 | width: 100%; 304 | } 305 | 306 | .gslide-description p { 307 | margin-bottom: 12px; 308 | } 309 | 310 | .gslide-description p:last-child { 311 | margin-bottom: 0; 312 | } 313 | 314 | .zoomed .gslide-description { 315 | display: none; 316 | } 317 | 318 | .glightbox-button-hidden { 319 | display: none; 320 | } 321 | 322 | 323 | /* 324 | * Description for mobiles 325 | * something like facebook does the description 326 | * for the photos 327 | */ 328 | 329 | .glightbox-mobile .glightbox-container .gslide-description { 330 | height: auto !important; 331 | width: 100%; 332 | background: transparent; 333 | position: absolute; 334 | bottom: 0; 335 | padding: 19px 11px; 336 | max-width: 100vw !important; 337 | -webkit-box-ordinal-group: 3 !important; 338 | -ms-flex-order: 2 !important; 339 | order: 2 !important; 340 | max-height: 78vh; 341 | overflow: auto !important; 342 | background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0.75))); 343 | background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.75) 100%); 344 | -webkit-transition: opacity 0.3s linear; 345 | transition: opacity 0.3s linear; 346 | padding-bottom: 50px; 347 | } 348 | 349 | .glightbox-mobile .glightbox-container .gslide-title { 350 | color: #fff; 351 | font-size: 1em; 352 | } 353 | 354 | .glightbox-mobile .glightbox-container .gslide-desc { 355 | color: #a1a1a1; 356 | } 357 | 358 | .glightbox-mobile .glightbox-container .gslide-desc a { 359 | color: #fff; 360 | font-weight: bold; 361 | } 362 | 363 | .glightbox-mobile .glightbox-container .gslide-desc * { 364 | color: inherit; 365 | } 366 | 367 | .glightbox-mobile .glightbox-container .gslide-desc string { 368 | color: #fff; 369 | } 370 | 371 | .glightbox-mobile .glightbox-container .gslide-desc .desc-more { 372 | color: #fff; 373 | opacity: 0.4; 374 | } 375 | 376 | .gdesc-open .gslide-media { 377 | -webkit-transition: opacity 0.5s ease; 378 | transition: opacity 0.5s ease; 379 | opacity: 0.4; 380 | } 381 | 382 | .gdesc-open .gdesc-inner { 383 | padding-bottom: 30px; 384 | } 385 | 386 | .gdesc-closed .gslide-media { 387 | -webkit-transition: opacity 0.5s ease; 388 | transition: opacity 0.5s ease; 389 | opacity: 1; 390 | } 391 | 392 | .greset { 393 | -webkit-transition: all 0.3s ease; 394 | transition: all 0.3s ease; 395 | } 396 | 397 | .gabsolute { 398 | position: absolute; 399 | } 400 | 401 | .grelative { 402 | position: relative; 403 | } 404 | 405 | .glightbox-desc { 406 | display: none !important; 407 | } 408 | 409 | .glightbox-open { 410 | overflow: hidden; 411 | } 412 | 413 | .gloader { 414 | height: 25px; 415 | width: 25px; 416 | -webkit-animation: lightboxLoader 0.8s infinite linear; 417 | animation: lightboxLoader 0.8s infinite linear; 418 | border: 2px solid #fff; 419 | border-right-color: transparent; 420 | border-radius: 50%; 421 | position: absolute; 422 | display: block; 423 | z-index: 9999; 424 | left: 0; 425 | right: 0; 426 | margin: 0 auto; 427 | top: 47%; 428 | } 429 | 430 | .goverlay { 431 | width: 100%; 432 | height: calc(100vh + 1px); 433 | position: fixed; 434 | top: -1px; 435 | left: 0; 436 | background: #000; 437 | will-change: opacity; 438 | } 439 | 440 | .glightbox-mobile .goverlay { 441 | background: #000; 442 | } 443 | 444 | .gprev, 445 | .gnext, 446 | .gclose { 447 | z-index: 99999; 448 | cursor: pointer; 449 | width: 26px; 450 | height: 44px; 451 | border: none; 452 | display: -webkit-box; 453 | display: -ms-flexbox; 454 | display: flex; 455 | -webkit-box-pack: center; 456 | -ms-flex-pack: center; 457 | justify-content: center; 458 | -webkit-box-align: center; 459 | -ms-flex-align: center; 460 | align-items: center; 461 | -webkit-box-orient: vertical; 462 | -webkit-box-direction: normal; 463 | -ms-flex-direction: column; 464 | flex-direction: column; 465 | } 466 | 467 | .gprev svg, 468 | .gnext svg, 469 | .gclose svg { 470 | display: block; 471 | width: 25px; 472 | height: auto; 473 | margin: 0; 474 | padding: 0; 475 | } 476 | 477 | .gprev.disabled, 478 | .gnext.disabled, 479 | .gclose.disabled { 480 | opacity: 0.1; 481 | } 482 | 483 | .gprev .garrow, 484 | .gnext .garrow, 485 | .gclose .garrow { 486 | stroke: #fff; 487 | } 488 | 489 | .gbtn.focused { 490 | outline: 2px solid #0f3d81; 491 | } 492 | 493 | iframe.wait-autoplay { 494 | opacity: 0; 495 | } 496 | 497 | .glightbox-closing .gnext, 498 | .glightbox-closing .gprev, 499 | .glightbox-closing .gclose { 500 | opacity: 0 !important; 501 | } 502 | 503 | 504 | /*Skin */ 505 | 506 | .glightbox-clean .gslide-description { 507 | background: #fff; 508 | } 509 | 510 | .glightbox-clean .gdesc-inner { 511 | padding: 22px 20px; 512 | } 513 | 514 | .glightbox-clean .gslide-title { 515 | font-size: 1em; 516 | font-weight: normal; 517 | font-family: arial; 518 | color: #000; 519 | margin-bottom: 19px; 520 | line-height: 1.4em; 521 | } 522 | 523 | .glightbox-clean .gslide-desc { 524 | font-size: 0.86em; 525 | margin-bottom: 0; 526 | font-family: arial; 527 | line-height: 1.4em; 528 | } 529 | 530 | .glightbox-clean .gslide-video { 531 | background: #000; 532 | } 533 | 534 | .glightbox-clean .gprev, 535 | .glightbox-clean .gnext, 536 | .glightbox-clean .gclose { 537 | background-color: rgba(0, 0, 0, 0.75); 538 | border-radius: 4px; 539 | } 540 | 541 | .glightbox-clean .gprev path, 542 | .glightbox-clean .gnext path, 543 | .glightbox-clean .gclose path { 544 | fill: #fff; 545 | } 546 | 547 | .glightbox-clean .gprev { 548 | position: absolute; 549 | top: -100%; 550 | left: 30px; 551 | width: 40px; 552 | height: 50px; 553 | } 554 | 555 | .glightbox-clean .gnext { 556 | position: absolute; 557 | top: -100%; 558 | right: 30px; 559 | width: 40px; 560 | height: 50px; 561 | } 562 | 563 | .glightbox-clean .gclose { 564 | width: 35px; 565 | height: 35px; 566 | top: 15px; 567 | right: 10px; 568 | position: absolute; 569 | } 570 | 571 | .glightbox-clean .gclose svg { 572 | width: 18px; 573 | height: auto; 574 | } 575 | 576 | .glightbox-clean .gclose:hover { 577 | opacity: 1; 578 | } 579 | 580 | 581 | /*CSS Animations*/ 582 | 583 | .gfadeIn { 584 | -webkit-animation: gfadeIn 0.5s ease; 585 | animation: gfadeIn 0.5s ease; 586 | } 587 | 588 | .gfadeOut { 589 | -webkit-animation: gfadeOut 0.5s ease; 590 | animation: gfadeOut 0.5s ease; 591 | } 592 | 593 | .gslideOutLeft { 594 | -webkit-animation: gslideOutLeft 0.3s ease; 595 | animation: gslideOutLeft 0.3s ease; 596 | } 597 | 598 | .gslideInLeft { 599 | -webkit-animation: gslideInLeft 0.3s ease; 600 | animation: gslideInLeft 0.3s ease; 601 | } 602 | 603 | .gslideOutRight { 604 | -webkit-animation: gslideOutRight 0.3s ease; 605 | animation: gslideOutRight 0.3s ease; 606 | } 607 | 608 | .gslideInRight { 609 | -webkit-animation: gslideInRight 0.3s ease; 610 | animation: gslideInRight 0.3s ease; 611 | } 612 | 613 | .gzoomIn { 614 | -webkit-animation: gzoomIn 0.5s ease; 615 | animation: gzoomIn 0.5s ease; 616 | } 617 | 618 | .gzoomOut { 619 | -webkit-animation: gzoomOut 0.5s ease; 620 | animation: gzoomOut 0.5s ease; 621 | } 622 | 623 | @-webkit-keyframes lightboxLoader { 624 | 0% { 625 | -webkit-transform: rotate(0deg); 626 | transform: rotate(0deg); 627 | } 628 | 100% { 629 | -webkit-transform: rotate(360deg); 630 | transform: rotate(360deg); 631 | } 632 | } 633 | 634 | @keyframes lightboxLoader { 635 | 0% { 636 | -webkit-transform: rotate(0deg); 637 | transform: rotate(0deg); 638 | } 639 | 100% { 640 | -webkit-transform: rotate(360deg); 641 | transform: rotate(360deg); 642 | } 643 | } 644 | 645 | @-webkit-keyframes gfadeIn { 646 | from { 647 | opacity: 0; 648 | } 649 | to { 650 | opacity: 1; 651 | } 652 | } 653 | 654 | @keyframes gfadeIn { 655 | from { 656 | opacity: 0; 657 | } 658 | to { 659 | opacity: 1; 660 | } 661 | } 662 | 663 | @-webkit-keyframes gfadeOut { 664 | from { 665 | opacity: 1; 666 | } 667 | to { 668 | opacity: 0; 669 | } 670 | } 671 | 672 | @keyframes gfadeOut { 673 | from { 674 | opacity: 1; 675 | } 676 | to { 677 | opacity: 0; 678 | } 679 | } 680 | 681 | @-webkit-keyframes gslideInLeft { 682 | from { 683 | opacity: 0; 684 | -webkit-transform: translate3d(-60%, 0, 0); 685 | transform: translate3d(-60%, 0, 0); 686 | } 687 | to { 688 | visibility: visible; 689 | -webkit-transform: translate3d(0, 0, 0); 690 | transform: translate3d(0, 0, 0); 691 | opacity: 1; 692 | } 693 | } 694 | 695 | @keyframes gslideInLeft { 696 | from { 697 | opacity: 0; 698 | -webkit-transform: translate3d(-60%, 0, 0); 699 | transform: translate3d(-60%, 0, 0); 700 | } 701 | to { 702 | visibility: visible; 703 | -webkit-transform: translate3d(0, 0, 0); 704 | transform: translate3d(0, 0, 0); 705 | opacity: 1; 706 | } 707 | } 708 | 709 | @-webkit-keyframes gslideOutLeft { 710 | from { 711 | opacity: 1; 712 | visibility: visible; 713 | -webkit-transform: translate3d(0, 0, 0); 714 | transform: translate3d(0, 0, 0); 715 | } 716 | to { 717 | -webkit-transform: translate3d(-60%, 0, 0); 718 | transform: translate3d(-60%, 0, 0); 719 | opacity: 0; 720 | visibility: hidden; 721 | } 722 | } 723 | 724 | @keyframes gslideOutLeft { 725 | from { 726 | opacity: 1; 727 | visibility: visible; 728 | -webkit-transform: translate3d(0, 0, 0); 729 | transform: translate3d(0, 0, 0); 730 | } 731 | to { 732 | -webkit-transform: translate3d(-60%, 0, 0); 733 | transform: translate3d(-60%, 0, 0); 734 | opacity: 0; 735 | visibility: hidden; 736 | } 737 | } 738 | 739 | @-webkit-keyframes gslideInRight { 740 | from { 741 | opacity: 0; 742 | visibility: visible; 743 | -webkit-transform: translate3d(60%, 0, 0); 744 | transform: translate3d(60%, 0, 0); 745 | } 746 | to { 747 | -webkit-transform: translate3d(0, 0, 0); 748 | transform: translate3d(0, 0, 0); 749 | opacity: 1; 750 | } 751 | } 752 | 753 | @keyframes gslideInRight { 754 | from { 755 | opacity: 0; 756 | visibility: visible; 757 | -webkit-transform: translate3d(60%, 0, 0); 758 | transform: translate3d(60%, 0, 0); 759 | } 760 | to { 761 | -webkit-transform: translate3d(0, 0, 0); 762 | transform: translate3d(0, 0, 0); 763 | opacity: 1; 764 | } 765 | } 766 | 767 | @-webkit-keyframes gslideOutRight { 768 | from { 769 | opacity: 1; 770 | visibility: visible; 771 | -webkit-transform: translate3d(0, 0, 0); 772 | transform: translate3d(0, 0, 0); 773 | } 774 | to { 775 | -webkit-transform: translate3d(60%, 0, 0); 776 | transform: translate3d(60%, 0, 0); 777 | opacity: 0; 778 | } 779 | } 780 | 781 | @keyframes gslideOutRight { 782 | from { 783 | opacity: 1; 784 | visibility: visible; 785 | -webkit-transform: translate3d(0, 0, 0); 786 | transform: translate3d(0, 0, 0); 787 | } 788 | to { 789 | -webkit-transform: translate3d(60%, 0, 0); 790 | transform: translate3d(60%, 0, 0); 791 | opacity: 0; 792 | } 793 | } 794 | 795 | @-webkit-keyframes gzoomIn { 796 | from { 797 | opacity: 0; 798 | -webkit-transform: scale3d(0.3, 0.3, 0.3); 799 | transform: scale3d(0.3, 0.3, 0.3); 800 | } 801 | to { 802 | opacity: 1; 803 | } 804 | } 805 | 806 | @keyframes gzoomIn { 807 | from { 808 | opacity: 0; 809 | -webkit-transform: scale3d(0.3, 0.3, 0.3); 810 | transform: scale3d(0.3, 0.3, 0.3); 811 | } 812 | to { 813 | opacity: 1; 814 | } 815 | } 816 | 817 | @-webkit-keyframes gzoomOut { 818 | from { 819 | opacity: 1; 820 | } 821 | 50% { 822 | opacity: 0; 823 | -webkit-transform: scale3d(0.3, 0.3, 0.3); 824 | transform: scale3d(0.3, 0.3, 0.3); 825 | } 826 | to { 827 | opacity: 0; 828 | } 829 | } 830 | 831 | @keyframes gzoomOut { 832 | from { 833 | opacity: 1; 834 | } 835 | 50% { 836 | opacity: 0; 837 | -webkit-transform: scale3d(0.3, 0.3, 0.3); 838 | transform: scale3d(0.3, 0.3, 0.3); 839 | } 840 | to { 841 | opacity: 0; 842 | } 843 | } 844 | 845 | @media (min-width: 769px) { 846 | .glightbox-container .ginner-container { 847 | width: auto; 848 | height: auto; 849 | -webkit-box-orient: horizontal; 850 | -webkit-box-direction: normal; 851 | -ms-flex-direction: row; 852 | flex-direction: row; 853 | } 854 | .glightbox-container .ginner-container.desc-top .gslide-description { 855 | -webkit-box-ordinal-group: 1; 856 | -ms-flex-order: 0; 857 | order: 0; 858 | } 859 | .glightbox-container .ginner-container.desc-top .gslide-image, 860 | .glightbox-container .ginner-container.desc-top .gslide-image img { 861 | -webkit-box-ordinal-group: 2; 862 | -ms-flex-order: 1; 863 | order: 1; 864 | } 865 | .glightbox-container .ginner-container.desc-left .gslide-description { 866 | -webkit-box-ordinal-group: 1; 867 | -ms-flex-order: 0; 868 | order: 0; 869 | } 870 | .glightbox-container .ginner-container.desc-left .gslide-image { 871 | -webkit-box-ordinal-group: 2; 872 | -ms-flex-order: 1; 873 | order: 1; 874 | } 875 | .gslide-image img { 876 | max-height: 97vh; 877 | max-width: 100%; 878 | } 879 | .gslide-image img.zoomable { 880 | cursor: -webkit-zoom-in; 881 | cursor: zoom-in; 882 | } 883 | .zoomed .gslide-image img.zoomable { 884 | cursor: -webkit-grab; 885 | cursor: grab; 886 | } 887 | .gslide-inline { 888 | max-height: 95vh; 889 | } 890 | .gslide-external { 891 | max-height: 100vh; 892 | } 893 | .gslide-description.description-left, 894 | .gslide-description.description-right { 895 | max-width: 275px; 896 | } 897 | .glightbox-open { 898 | height: auto; 899 | } 900 | .goverlay { 901 | background: rgba(0, 0, 0, 0.92); 902 | } 903 | .glightbox-clean .gslide-media { 904 | -webkit-box-shadow: 1px 2px 9px 0px rgba(0, 0, 0, 0.65); 905 | box-shadow: 1px 2px 9px 0px rgba(0, 0, 0, 0.65); 906 | } 907 | .glightbox-clean .description-left .gdesc-inner, 908 | .glightbox-clean .description-right .gdesc-inner { 909 | position: absolute; 910 | height: 100%; 911 | overflow-y: auto; 912 | } 913 | .glightbox-clean .gprev, 914 | .glightbox-clean .gnext, 915 | .glightbox-clean .gclose { 916 | background-color: rgba(0, 0, 0, 0.32); 917 | } 918 | .glightbox-clean .gprev:hover, 919 | .glightbox-clean .gnext:hover, 920 | .glightbox-clean .gclose:hover { 921 | background-color: rgba(0, 0, 0, 0.7); 922 | } 923 | .glightbox-clean .gprev { 924 | top: 45%; 925 | } 926 | .glightbox-clean .gnext { 927 | top: 45%; 928 | } 929 | } 930 | 931 | @media (min-width: 992px) { 932 | .glightbox-clean .gclose { 933 | opacity: 0.7; 934 | right: 20px; 935 | } 936 | } 937 | 938 | @media screen and (max-height: 420px) { 939 | .goverlay { 940 | background: #000; 941 | } 942 | } 943 | -------------------------------------------------------------------------------- /static/vendor/glightbox/css/glightbox.min.css: -------------------------------------------------------------------------------- 1 | .glightbox-container{width:100%;height:100%;position:fixed;top:0;left:0;z-index:999999!important;overflow:hidden;-ms-touch-action:none;touch-action:none;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;outline:0;overflow:hidden}.glightbox-container.inactive{display:none}.glightbox-container .gcontainer{position:relative;width:100%;height:100%;z-index:9999;overflow:hidden}.glightbox-container .gslider{-webkit-transition:-webkit-transform .4s ease;transition:-webkit-transform .4s ease;transition:transform .4s ease;transition:transform .4s ease,-webkit-transform .4s ease;height:100%;left:0;top:0;width:100%;position:relative;overflow:hidden;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.glightbox-container .gslide{width:100%;position:absolute;opacity:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;opacity:0}.glightbox-container .gslide.current{opacity:1;z-index:99999;position:relative}.glightbox-container .gslide.prev{opacity:1;z-index:9999}.glightbox-container .gslide-inner-content{width:100%}.glightbox-container .ginner-container{position:relative;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;margin:auto;height:100vh}.glightbox-container .ginner-container.gvideo-container{width:100%}.glightbox-container .ginner-container.desc-bottom,.glightbox-container .ginner-container.desc-top{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.glightbox-container .ginner-container.desc-left,.glightbox-container .ginner-container.desc-right{max-width:100%!important}.gslide iframe,.gslide video{outline:0!important;border:none;min-height:165px;-webkit-overflow-scrolling:touch;-ms-touch-action:auto;touch-action:auto}.gslide:not(.current){pointer-events:none}.gslide-image{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.gslide-image img{max-height:100vh;display:block;padding:0;float:none;outline:0;border:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;max-width:100vw;width:auto;height:auto;-o-object-fit:cover;object-fit:cover;-ms-touch-action:none;touch-action:none;margin:auto;min-width:200px}.desc-bottom .gslide-image img,.desc-top .gslide-image img{width:auto}.desc-left .gslide-image img,.desc-right .gslide-image img{width:auto;max-width:100%}.gslide-image img.zoomable{position:relative}.gslide-image img.dragging{cursor:-webkit-grabbing!important;cursor:grabbing!important;-webkit-transition:none;transition:none}.gslide-video{position:relative;max-width:100vh;width:100%!important}.gslide-video .gvideo-wrapper{width:100%;margin:auto}.gslide-video::before{content:'';display:block;position:absolute;width:100%;height:100%;background:rgba(255,0,0,.34);display:none}.gslide-video.playing::before{display:none}.gslide-video.fullscreen{max-width:100%!important;min-width:100%;height:75vh}.gslide-video.fullscreen video{max-width:100%!important;width:100%!important}.gslide-inline{background:#fff;text-align:left;max-height:calc(100vh - 40px);overflow:auto;max-width:100%}.gslide-inline .ginlined-content{padding:20px;width:100%}.gslide-inline .dragging{cursor:-webkit-grabbing!important;cursor:grabbing!important;-webkit-transition:none;transition:none}.ginlined-content{overflow:auto;display:block!important;opacity:1}.gslide-external{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;min-width:100%;background:#fff;padding:0;overflow:auto;max-height:75vh;height:100%}.gslide-media{display:-webkit-box;display:-ms-flexbox;display:flex;width:auto}.zoomed .gslide-media{-webkit-box-shadow:none!important;box-shadow:none!important}.desc-bottom .gslide-media,.desc-top .gslide-media{margin:0 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.gslide-description{position:relative;-webkit-box-flex:1;-ms-flex:1 0 100%;flex:1 0 100%}.gslide-description.description-left,.gslide-description.description-right{max-width:100%}.gslide-description.description-bottom,.gslide-description.description-top{margin:0 auto;width:100%}.gslide-description p{margin-bottom:12px}.gslide-description p:last-child{margin-bottom:0}.zoomed .gslide-description{display:none}.glightbox-button-hidden{display:none}.glightbox-mobile .glightbox-container .gslide-description{height:auto!important;width:100%;background:0 0;position:absolute;bottom:0;padding:19px 11px;max-width:100vw!important;-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important;max-height:78vh;overflow:auto!important;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.75)));background:linear-gradient(to bottom,rgba(0,0,0,0) 0,rgba(0,0,0,.75) 100%);-webkit-transition:opacity .3s linear;transition:opacity .3s linear;padding-bottom:50px}.glightbox-mobile .glightbox-container .gslide-title{color:#fff;font-size:1em}.glightbox-mobile .glightbox-container .gslide-desc{color:#a1a1a1}.glightbox-mobile .glightbox-container .gslide-desc a{color:#fff;font-weight:700}.glightbox-mobile .glightbox-container .gslide-desc *{color:inherit}.glightbox-mobile .glightbox-container .gslide-desc string{color:#fff}.glightbox-mobile .glightbox-container .gslide-desc .desc-more{color:#fff;opacity:.4}.gdesc-open .gslide-media{-webkit-transition:opacity .5s ease;transition:opacity .5s ease;opacity:.4}.gdesc-open .gdesc-inner{padding-bottom:30px}.gdesc-closed .gslide-media{-webkit-transition:opacity .5s ease;transition:opacity .5s ease;opacity:1}.greset{-webkit-transition:all .3s ease;transition:all .3s ease}.gabsolute{position:absolute}.grelative{position:relative}.glightbox-desc{display:none!important}.glightbox-open{overflow:hidden}.gloader{height:25px;width:25px;-webkit-animation:lightboxLoader .8s infinite linear;animation:lightboxLoader .8s infinite linear;border:2px solid #fff;border-right-color:transparent;border-radius:50%;position:absolute;display:block;z-index:9999;left:0;right:0;margin:0 auto;top:47%}.goverlay{width:100%;height:calc(100vh + 1px);position:fixed;top:-1px;left:0;background:#000;will-change:opacity}.glightbox-mobile .goverlay{background:#000}.gclose,.gnext,.gprev{z-index:99999;cursor:pointer;width:26px;height:44px;border:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.gclose svg,.gnext svg,.gprev svg{display:block;width:25px;height:auto;margin:0;padding:0}.gclose.disabled,.gnext.disabled,.gprev.disabled{opacity:.1}.gclose .garrow,.gnext .garrow,.gprev .garrow{stroke:#fff}.gbtn.focused{outline:2px solid #0f3d81}iframe.wait-autoplay{opacity:0}.glightbox-closing .gclose,.glightbox-closing .gnext,.glightbox-closing .gprev{opacity:0!important}.glightbox-clean .gslide-description{background:#fff}.glightbox-clean .gdesc-inner{padding:22px 20px}.glightbox-clean .gslide-title{font-size:1em;font-weight:400;font-family:arial;color:#000;margin-bottom:19px;line-height:1.4em}.glightbox-clean .gslide-desc{font-size:.86em;margin-bottom:0;font-family:arial;line-height:1.4em}.glightbox-clean .gslide-video{background:#000}.glightbox-clean .gclose,.glightbox-clean .gnext,.glightbox-clean .gprev{background-color:rgba(0,0,0,.75);border-radius:4px}.glightbox-clean .gclose path,.glightbox-clean .gnext path,.glightbox-clean .gprev path{fill:#fff}.glightbox-clean .gprev{position:absolute;top:-100%;left:30px;width:40px;height:50px}.glightbox-clean .gnext{position:absolute;top:-100%;right:30px;width:40px;height:50px}.glightbox-clean .gclose{width:35px;height:35px;top:15px;right:10px;position:absolute}.glightbox-clean .gclose svg{width:18px;height:auto}.glightbox-clean .gclose:hover{opacity:1}.gfadeIn{-webkit-animation:gfadeIn .5s ease;animation:gfadeIn .5s ease}.gfadeOut{-webkit-animation:gfadeOut .5s ease;animation:gfadeOut .5s ease}.gslideOutLeft{-webkit-animation:gslideOutLeft .3s ease;animation:gslideOutLeft .3s ease}.gslideInLeft{-webkit-animation:gslideInLeft .3s ease;animation:gslideInLeft .3s ease}.gslideOutRight{-webkit-animation:gslideOutRight .3s ease;animation:gslideOutRight .3s ease}.gslideInRight{-webkit-animation:gslideInRight .3s ease;animation:gslideInRight .3s ease}.gzoomIn{-webkit-animation:gzoomIn .5s ease;animation:gzoomIn .5s ease}.gzoomOut{-webkit-animation:gzoomOut .5s ease;animation:gzoomOut .5s ease}@-webkit-keyframes lightboxLoader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes lightboxLoader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes gfadeIn{from{opacity:0}to{opacity:1}}@keyframes gfadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes gfadeOut{from{opacity:1}to{opacity:0}}@keyframes gfadeOut{from{opacity:1}to{opacity:0}}@-webkit-keyframes gslideInLeft{from{opacity:0;-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0)}to{visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes gslideInLeft{from{opacity:0;-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0)}to{visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes gslideOutLeft{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0);opacity:0;visibility:hidden}}@keyframes gslideOutLeft{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0);opacity:0;visibility:hidden}}@-webkit-keyframes gslideInRight{from{opacity:0;visibility:visible;-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes gslideInRight{from{opacity:0;visibility:visible;-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes gslideOutRight{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0);opacity:0}}@keyframes gslideOutRight{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0);opacity:0}}@-webkit-keyframes gzoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:1}}@keyframes gzoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:1}}@-webkit-keyframes gzoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes gzoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@media (min-width:769px){.glightbox-container .ginner-container{width:auto;height:auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.glightbox-container .ginner-container.desc-top .gslide-description{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.glightbox-container .ginner-container.desc-top .gslide-image,.glightbox-container .ginner-container.desc-top .gslide-image img{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.glightbox-container .ginner-container.desc-left .gslide-description{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.glightbox-container .ginner-container.desc-left .gslide-image{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.gslide-image img{max-height:97vh;max-width:100%}.gslide-image img.zoomable{cursor:-webkit-zoom-in;cursor:zoom-in}.zoomed .gslide-image img.zoomable{cursor:-webkit-grab;cursor:grab}.gslide-inline{max-height:95vh}.gslide-external{max-height:100vh}.gslide-description.description-left,.gslide-description.description-right{max-width:275px}.glightbox-open{height:auto}.goverlay{background:rgba(0,0,0,.92)}.glightbox-clean .gslide-media{-webkit-box-shadow:1px 2px 9px 0 rgba(0,0,0,.65);box-shadow:1px 2px 9px 0 rgba(0,0,0,.65)}.glightbox-clean .description-left .gdesc-inner,.glightbox-clean .description-right .gdesc-inner{position:absolute;height:100%;overflow-y:auto}.glightbox-clean .gclose,.glightbox-clean .gnext,.glightbox-clean .gprev{background-color:rgba(0,0,0,.32)}.glightbox-clean .gclose:hover,.glightbox-clean .gnext:hover,.glightbox-clean .gprev:hover{background-color:rgba(0,0,0,.7)}.glightbox-clean .gprev{top:45%}.glightbox-clean .gnext{top:45%}}@media (min-width:992px){.glightbox-clean .gclose{opacity:.7;right:20px}}@media screen and (max-height:420px){.goverlay{background:#000}} -------------------------------------------------------------------------------- /static/vendor/php-email-form/validate.js: -------------------------------------------------------------------------------- 1 | /** 2 | * PHP Email Form Validation - v3.1 3 | * URL: https://bootstrapmade.com/php-email-form/ 4 | * Author: BootstrapMade.com 5 | */ 6 | (function () { 7 | "use strict"; 8 | 9 | let forms = document.querySelectorAll('.php-email-form'); 10 | 11 | forms.forEach( function(e) { 12 | e.addEventListener('submit', function(event) { 13 | event.preventDefault(); 14 | 15 | let thisForm = this; 16 | 17 | let action = thisForm.getAttribute('action'); 18 | let recaptcha = thisForm.getAttribute('data-recaptcha-site-key'); 19 | 20 | if( ! action ) { 21 | displayError(thisForm, 'The form action property is not set!') 22 | return; 23 | } 24 | thisForm.querySelector('.loading').classList.add('d-block'); 25 | thisForm.querySelector('.error-message').classList.remove('d-block'); 26 | thisForm.querySelector('.sent-message').classList.remove('d-block'); 27 | 28 | let formData = new FormData( thisForm ); 29 | 30 | if ( recaptcha ) { 31 | if(typeof grecaptcha !== "undefined" ) { 32 | grecaptcha.ready(function() { 33 | try { 34 | grecaptcha.execute(recaptcha, {action: 'php_email_form_submit'}) 35 | .then(token => { 36 | formData.set('recaptcha-response', token); 37 | php_email_form_submit(thisForm, action, formData); 38 | }) 39 | } catch(error) { 40 | displayError(thisForm, error) 41 | } 42 | }); 43 | } else { 44 | displayError(thisForm, 'The reCaptcha javascript API url is not loaded!') 45 | } 46 | } else { 47 | php_email_form_submit(thisForm, action, formData); 48 | } 49 | }); 50 | }); 51 | 52 | function php_email_form_submit(thisForm, action, formData) { 53 | fetch(action, { 54 | method: 'POST', 55 | body: formData, 56 | headers: {'X-Requested-With': 'XMLHttpRequest'} 57 | }) 58 | .then(response => { 59 | if( response.ok ) { 60 | return response.text() 61 | } else { 62 | throw new Error(`${response.status} ${response.statusText} ${response.url}`); 63 | } 64 | }) 65 | .then(data => { 66 | thisForm.querySelector('.loading').classList.remove('d-block'); 67 | if (data.trim() == 'OK') { 68 | thisForm.querySelector('.sent-message').classList.add('d-block'); 69 | thisForm.reset(); 70 | } else { 71 | throw new Error(data ? data : 'Form submission failed and no error message returned from: ' + action); 72 | } 73 | }) 74 | .catch((error) => { 75 | displayError(thisForm, error); 76 | }); 77 | } 78 | 79 | function displayError(thisForm, error) { 80 | thisForm.querySelector('.loading').classList.remove('d-block'); 81 | thisForm.querySelector('.error-message').innerHTML = error; 82 | thisForm.querySelector('.error-message').classList.add('d-block'); 83 | } 84 | 85 | })(); 86 | -------------------------------------------------------------------------------- /static/vendor/purecounter/purecounter.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * purecounter.js - A simple yet configurable native javascript counter which you can count on. 3 | * Author: Stig Rex 4 | * Version: 1.1.4 5 | * Url: https://github.com/srexi/purecounterjs 6 | * License: MIT 7 | */!function(){"use strict";function e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function t(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function r(e,t){for(var r=0;ra.end?a.end:a.start;return n.innerHTML=r.formatNumber(i,a)}setTimeout((function(){return r.startCounter(n,a)}),a.delay)}))}},{key:"startCounter",value:function(e,t){var r=this,n=(t.end-t.start)/(t.duration/t.delay),a="inc";t.start>t.end&&(a="dec",n*=-1);var i=this.parseValue(t.start);e.innerHTML=this.formatNumber(i,t),!0===t.once&&e.setAttribute("data-purecounter-duration",0);var o=setInterval((function(){var s=r.nextNumber(i,n,a);e.innerHTML=r.formatNumber(s,t),((i=s)>=t.end&&"inc"==a||i<=t.end&&"dec"==a)&&(e.innerHTML=r.formatNumber(t.end,t),clearInterval(o))}),t.delay)}},{key:"parseConfig",value:function(r){var n=this,a=function(r){for(var n=1;n2&&void 0!==arguments[2]?arguments[2]:"inc";return e=this.parseValue(e),t=this.parseValue(t),parseFloat("inc"===r?e+t:e-t)}},{key:"convertToCurrencySystem",value:function(e,t){var r=t.currencysymbol||"",n=t.decimals||1;return r+((e=Math.abs(Number(e)))>=1e12?"".concat((e/1e12).toFixed(n)," T"):e>=1e9?"".concat((e/1e9).toFixed(n)," B"):e>=1e6?"".concat((e/1e6).toFixed(n)," M"):e>=1e3?"".concat((e/1e12).toFixed(n)," K"):e.toFixed(n))}},{key:"applySeparator",value:function(e,t){return t.separator?e.replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,").replace(new RegExp(/,/gi,"gi"),t.separatorsymbol):e.replace(new RegExp(/,/gi,"gi"),"")}},{key:"formatNumber",value:function(e,t){var r={minimumFractionDigits:t.decimals,maximumFractionDigits:t.decimals};return e=t.currency?this.convertToCurrencySystem(e,t):parseFloat(e),this.applySeparator(e.toLocaleString(void 0,r),t)}},{key:"parseValue",value:function(e){return/^[0-9]+\.[0-9]+$/.test(e)?parseFloat(e):/^[0-9]+$/.test(e)?parseInt(e):/^true|false/i.test(e)?/^true/i.test(e):e}},{key:"elementIsInView",value:function(e){for(var t=e.offsetTop,r=e.offsetLeft,n=e.offsetWidth,a=e.offsetHeight;e.offsetParent;)t+=(e=e.offsetParent).offsetTop,r+=e.offsetLeft;return t>=window.pageYOffset&&r>=window.pageXOffset&&t+a<=window.pageYOffset+window.innerHeight&&r+n<=window.pageXOffset+window.innerWidth}},{key:"intersectionListenerSupported",value:function(){return"IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype}}])&&r(a.prototype,i),o&&r(a,o),n}())}(); 8 | //# sourceMappingURL=purecounter.js.map -------------------------------------------------------------------------------- /static/vendor/swiper/swiper-bundle.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Swiper 7.0.8 3 | * Most modern mobile touch slider and framework with hardware accelerated transitions 4 | * https://swiperjs.com 5 | * 6 | * Copyright 2014-2021 Vladimir Kharlampidi 7 | * 8 | * Released under the MIT License 9 | * 10 | * Released on: October 4, 2021 11 | */ 12 | 13 | @font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-pointer-events{touch-action:pan-y}.swiper-pointer-events.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;text-transform:none;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:50%;background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;animation:swiper-preloader-spin 1s infinite linear;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-next+.swiper-slide,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} -------------------------------------------------------------------------------- /static/vendor/typed.js/typed.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * 3 | * typed.js - A JavaScript Typing Animation Library 4 | * Author: Matt Boldt 5 | * Version: v2.0.12 6 | * Url: https://github.com/mattboldt/typed.js 7 | * License(s): MIT 8 | * 9 | */ 10 | (function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Typed=e():t.Typed=e()})(this,function(){return function(t){function e(n){if(s[n])return s[n].exports;var i=s[n]={exports:{},id:n,loaded:!1};return t[n].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var s={};return e.m=t,e.c=s,e.p="",e(0)}([function(t,e,s){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var s=0;st.length)););var u=t.substring(0,e),l=t.substring(u.length+1,e+i),c=t.substring(e+i+1);t=u+l+c,i--}s.timeout=setTimeout(function(){s.toggleBlinking(!1),e>=t.length?s.doneTyping(t,e):s.keepTyping(t,e,i),s.temporaryPause&&(s.temporaryPause=!1,s.options.onTypingResumed(s.arrayPos,s))},n)},n))}},{key:"keepTyping",value:function(t,e,s){0===e&&(this.toggleBlinking(!1),this.options.preStringTyped(this.arrayPos,this)),e+=s;var n=t.substr(0,e);this.replaceText(n),this.typewrite(t,e)}},{key:"doneTyping",value:function(t,e){var s=this;this.options.onStringTyped(this.arrayPos,this),this.toggleBlinking(!0),this.arrayPos===this.strings.length-1&&(this.complete(),this.loop===!1||this.curLoop===this.loopCount)||(this.timeout=setTimeout(function(){s.backspace(t,e)},this.backDelay))}},{key:"backspace",value:function(t,e){var s=this;if(this.pause.status===!0)return void this.setPauseStatus(t,e,!1);if(this.fadeOut)return this.initFadeOut();this.toggleBlinking(!1);var n=this.humanizer(this.backSpeed);this.timeout=setTimeout(function(){e=o.htmlParser.backSpaceHtmlChars(t,e,s);var n=t.substr(0,e);if(s.replaceText(n),s.smartBackspace){var i=s.strings[s.arrayPos+1];i&&n===i.substr(0,e)?s.stopNum=e:s.stopNum=0}e>s.stopNum?(e--,s.backspace(t,e)):e<=s.stopNum&&(s.arrayPos++,s.arrayPos===s.strings.length?(s.arrayPos=0,s.options.onLastStringBackspaced(),s.shuffleStringsIfNeeded(),s.begin()):s.typewrite(s.strings[s.sequence[s.arrayPos]],e))},n)}},{key:"complete",value:function(){this.options.onComplete(this),this.loop?this.curLoop++:this.typingComplete=!0}},{key:"setPauseStatus",value:function(t,e,s){this.pause.typewrite=s,this.pause.curString=t,this.pause.curStrPos=e}},{key:"toggleBlinking",value:function(t){this.cursor&&(this.pause.status||this.cursorBlinking!==t&&(this.cursorBlinking=t,t?this.cursor.classList.add("typed-cursor--blink"):this.cursor.classList.remove("typed-cursor--blink")))}},{key:"humanizer",value:function(t){return Math.round(Math.random()*t/2)+t}},{key:"shuffleStringsIfNeeded",value:function(){this.shuffle&&(this.sequence=this.sequence.sort(function(){return Math.random()-.5}))}},{key:"initFadeOut",value:function(){var t=this;return this.el.className+=" "+this.fadeOutClass,this.cursor&&(this.cursor.className+=" "+this.fadeOutClass),setTimeout(function(){t.arrayPos++,t.replaceText(""),t.strings.length>t.arrayPos?t.typewrite(t.strings[t.sequence[t.arrayPos]],0):(t.typewrite(t.strings[0],0),t.arrayPos=0)},this.fadeOutDelay)}},{key:"replaceText",value:function(t){this.attr?this.el.setAttribute(this.attr,t):this.isInput?this.el.value=t:"html"===this.contentType?this.el.innerHTML=t:this.el.textContent=t}},{key:"bindFocusEvents",value:function(){var t=this;this.isInput&&(this.el.addEventListener("focus",function(e){t.stop()}),this.el.addEventListener("blur",function(e){t.el.value&&0!==t.el.value.length||t.start()}))}},{key:"insertCursor",value:function(){this.showCursor&&(this.cursor||(this.cursor=document.createElement("span"),this.cursor.className="typed-cursor",this.cursor.setAttribute("aria-hidden",!0),this.cursor.innerHTML=this.cursorChar,this.el.parentNode&&this.el.parentNode.insertBefore(this.cursor,this.el.nextSibling)))}}]),t}();e["default"]=a,t.exports=e["default"]},function(t,e,s){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=Object.assign||function(t){for(var e=1;e":";";t.substr(e+1).charAt(0)!==i&&(e++,!(e+1>t.length)););e++}return e}},{key:"backSpaceHtmlChars",value:function(t,e,s){if("html"!==s.contentType)return e;var n=t.substr(e).charAt(0);if(">"===n||";"===n){var i="";for(i=">"===n?"<":"&";t.substr(e-1).charAt(0)!==i&&(e--,!(e<0)););e--}return e}}]),t}();e["default"]=i;var r=new i;e.htmlParser=r}])}); 11 | //# sourceMappingURL=typed.min.js.map 12 | -------------------------------------------------------------------------------- /static/vendor/waypoints/noframework.waypoints.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Waypoints - 4.0.1 3 | Copyright © 2011-2016 Caleb Troughton 4 | Licensed under the MIT license. 5 | https://github.com/imakewebthings/waypoints/blob/master/licenses.txt 6 | */ 7 | (function() { 8 | 'use strict' 9 | 10 | var keyCounter = 0 11 | var allWaypoints = {} 12 | 13 | /* http://imakewebthings.com/waypoints/api/waypoint */ 14 | function Waypoint(options) { 15 | if (!options) { 16 | throw new Error('No options passed to Waypoint constructor') 17 | } 18 | if (!options.element) { 19 | throw new Error('No element option passed to Waypoint constructor') 20 | } 21 | if (!options.handler) { 22 | throw new Error('No handler option passed to Waypoint constructor') 23 | } 24 | 25 | this.key = 'waypoint-' + keyCounter 26 | this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options) 27 | this.element = this.options.element 28 | this.adapter = new Waypoint.Adapter(this.element) 29 | this.callback = options.handler 30 | this.axis = this.options.horizontal ? 'horizontal' : 'vertical' 31 | this.enabled = this.options.enabled 32 | this.triggerPoint = null 33 | this.group = Waypoint.Group.findOrCreate({ 34 | name: this.options.group, 35 | axis: this.axis 36 | }) 37 | this.context = Waypoint.Context.findOrCreateByElement(this.options.context) 38 | 39 | if (Waypoint.offsetAliases[this.options.offset]) { 40 | this.options.offset = Waypoint.offsetAliases[this.options.offset] 41 | } 42 | this.group.add(this) 43 | this.context.add(this) 44 | allWaypoints[this.key] = this 45 | keyCounter += 1 46 | } 47 | 48 | /* Private */ 49 | Waypoint.prototype.queueTrigger = function(direction) { 50 | this.group.queueTrigger(this, direction) 51 | } 52 | 53 | /* Private */ 54 | Waypoint.prototype.trigger = function(args) { 55 | if (!this.enabled) { 56 | return 57 | } 58 | if (this.callback) { 59 | this.callback.apply(this, args) 60 | } 61 | } 62 | 63 | /* Public */ 64 | /* http://imakewebthings.com/waypoints/api/destroy */ 65 | Waypoint.prototype.destroy = function() { 66 | this.context.remove(this) 67 | this.group.remove(this) 68 | delete allWaypoints[this.key] 69 | } 70 | 71 | /* Public */ 72 | /* http://imakewebthings.com/waypoints/api/disable */ 73 | Waypoint.prototype.disable = function() { 74 | this.enabled = false 75 | return this 76 | } 77 | 78 | /* Public */ 79 | /* http://imakewebthings.com/waypoints/api/enable */ 80 | Waypoint.prototype.enable = function() { 81 | this.context.refresh() 82 | this.enabled = true 83 | return this 84 | } 85 | 86 | /* Public */ 87 | /* http://imakewebthings.com/waypoints/api/next */ 88 | Waypoint.prototype.next = function() { 89 | return this.group.next(this) 90 | } 91 | 92 | /* Public */ 93 | /* http://imakewebthings.com/waypoints/api/previous */ 94 | Waypoint.prototype.previous = function() { 95 | return this.group.previous(this) 96 | } 97 | 98 | /* Private */ 99 | Waypoint.invokeAll = function(method) { 100 | var allWaypointsArray = [] 101 | for (var waypointKey in allWaypoints) { 102 | allWaypointsArray.push(allWaypoints[waypointKey]) 103 | } 104 | for (var i = 0, end = allWaypointsArray.length; i < end; i++) { 105 | allWaypointsArray[i][method]() 106 | } 107 | } 108 | 109 | /* Public */ 110 | /* http://imakewebthings.com/waypoints/api/destroy-all */ 111 | Waypoint.destroyAll = function() { 112 | Waypoint.invokeAll('destroy') 113 | } 114 | 115 | /* Public */ 116 | /* http://imakewebthings.com/waypoints/api/disable-all */ 117 | Waypoint.disableAll = function() { 118 | Waypoint.invokeAll('disable') 119 | } 120 | 121 | /* Public */ 122 | /* http://imakewebthings.com/waypoints/api/enable-all */ 123 | Waypoint.enableAll = function() { 124 | Waypoint.Context.refreshAll() 125 | for (var waypointKey in allWaypoints) { 126 | allWaypoints[waypointKey].enabled = true 127 | } 128 | return this 129 | } 130 | 131 | /* Public */ 132 | /* http://imakewebthings.com/waypoints/api/refresh-all */ 133 | Waypoint.refreshAll = function() { 134 | Waypoint.Context.refreshAll() 135 | } 136 | 137 | /* Public */ 138 | /* http://imakewebthings.com/waypoints/api/viewport-height */ 139 | Waypoint.viewportHeight = function() { 140 | return window.innerHeight || document.documentElement.clientHeight 141 | } 142 | 143 | /* Public */ 144 | /* http://imakewebthings.com/waypoints/api/viewport-width */ 145 | Waypoint.viewportWidth = function() { 146 | return document.documentElement.clientWidth 147 | } 148 | 149 | Waypoint.adapters = [] 150 | 151 | Waypoint.defaults = { 152 | context: window, 153 | continuous: true, 154 | enabled: true, 155 | group: 'default', 156 | horizontal: false, 157 | offset: 0 158 | } 159 | 160 | Waypoint.offsetAliases = { 161 | 'bottom-in-view': function() { 162 | return this.context.innerHeight() - this.adapter.outerHeight() 163 | }, 164 | 'right-in-view': function() { 165 | return this.context.innerWidth() - this.adapter.outerWidth() 166 | } 167 | } 168 | 169 | window.Waypoint = Waypoint 170 | }()) 171 | ;(function() { 172 | 'use strict' 173 | 174 | function requestAnimationFrameShim(callback) { 175 | window.setTimeout(callback, 1000 / 60) 176 | } 177 | 178 | var keyCounter = 0 179 | var contexts = {} 180 | var Waypoint = window.Waypoint 181 | var oldWindowLoad = window.onload 182 | 183 | /* http://imakewebthings.com/waypoints/api/context */ 184 | function Context(element) { 185 | this.element = element 186 | this.Adapter = Waypoint.Adapter 187 | this.adapter = new this.Adapter(element) 188 | this.key = 'waypoint-context-' + keyCounter 189 | this.didScroll = false 190 | this.didResize = false 191 | this.oldScroll = { 192 | x: this.adapter.scrollLeft(), 193 | y: this.adapter.scrollTop() 194 | } 195 | this.waypoints = { 196 | vertical: {}, 197 | horizontal: {} 198 | } 199 | 200 | element.waypointContextKey = this.key 201 | contexts[element.waypointContextKey] = this 202 | keyCounter += 1 203 | if (!Waypoint.windowContext) { 204 | Waypoint.windowContext = true 205 | Waypoint.windowContext = new Context(window) 206 | } 207 | 208 | this.createThrottledScrollHandler() 209 | this.createThrottledResizeHandler() 210 | } 211 | 212 | /* Private */ 213 | Context.prototype.add = function(waypoint) { 214 | var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical' 215 | this.waypoints[axis][waypoint.key] = waypoint 216 | this.refresh() 217 | } 218 | 219 | /* Private */ 220 | Context.prototype.checkEmpty = function() { 221 | var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal) 222 | var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical) 223 | var isWindow = this.element == this.element.window 224 | if (horizontalEmpty && verticalEmpty && !isWindow) { 225 | this.adapter.off('.waypoints') 226 | delete contexts[this.key] 227 | } 228 | } 229 | 230 | /* Private */ 231 | Context.prototype.createThrottledResizeHandler = function() { 232 | var self = this 233 | 234 | function resizeHandler() { 235 | self.handleResize() 236 | self.didResize = false 237 | } 238 | 239 | this.adapter.on('resize.waypoints', function() { 240 | if (!self.didResize) { 241 | self.didResize = true 242 | Waypoint.requestAnimationFrame(resizeHandler) 243 | } 244 | }) 245 | } 246 | 247 | /* Private */ 248 | Context.prototype.createThrottledScrollHandler = function() { 249 | var self = this 250 | function scrollHandler() { 251 | self.handleScroll() 252 | self.didScroll = false 253 | } 254 | 255 | this.adapter.on('scroll.waypoints', function() { 256 | if (!self.didScroll || Waypoint.isTouch) { 257 | self.didScroll = true 258 | Waypoint.requestAnimationFrame(scrollHandler) 259 | } 260 | }) 261 | } 262 | 263 | /* Private */ 264 | Context.prototype.handleResize = function() { 265 | Waypoint.Context.refreshAll() 266 | } 267 | 268 | /* Private */ 269 | Context.prototype.handleScroll = function() { 270 | var triggeredGroups = {} 271 | var axes = { 272 | horizontal: { 273 | newScroll: this.adapter.scrollLeft(), 274 | oldScroll: this.oldScroll.x, 275 | forward: 'right', 276 | backward: 'left' 277 | }, 278 | vertical: { 279 | newScroll: this.adapter.scrollTop(), 280 | oldScroll: this.oldScroll.y, 281 | forward: 'down', 282 | backward: 'up' 283 | } 284 | } 285 | 286 | for (var axisKey in axes) { 287 | var axis = axes[axisKey] 288 | var isForward = axis.newScroll > axis.oldScroll 289 | var direction = isForward ? axis.forward : axis.backward 290 | 291 | for (var waypointKey in this.waypoints[axisKey]) { 292 | var waypoint = this.waypoints[axisKey][waypointKey] 293 | if (waypoint.triggerPoint === null) { 294 | continue 295 | } 296 | var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint 297 | var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint 298 | var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint 299 | var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint 300 | if (crossedForward || crossedBackward) { 301 | waypoint.queueTrigger(direction) 302 | triggeredGroups[waypoint.group.id] = waypoint.group 303 | } 304 | } 305 | } 306 | 307 | for (var groupKey in triggeredGroups) { 308 | triggeredGroups[groupKey].flushTriggers() 309 | } 310 | 311 | this.oldScroll = { 312 | x: axes.horizontal.newScroll, 313 | y: axes.vertical.newScroll 314 | } 315 | } 316 | 317 | /* Private */ 318 | Context.prototype.innerHeight = function() { 319 | /*eslint-disable eqeqeq */ 320 | if (this.element == this.element.window) { 321 | return Waypoint.viewportHeight() 322 | } 323 | /*eslint-enable eqeqeq */ 324 | return this.adapter.innerHeight() 325 | } 326 | 327 | /* Private */ 328 | Context.prototype.remove = function(waypoint) { 329 | delete this.waypoints[waypoint.axis][waypoint.key] 330 | this.checkEmpty() 331 | } 332 | 333 | /* Private */ 334 | Context.prototype.innerWidth = function() { 335 | /*eslint-disable eqeqeq */ 336 | if (this.element == this.element.window) { 337 | return Waypoint.viewportWidth() 338 | } 339 | /*eslint-enable eqeqeq */ 340 | return this.adapter.innerWidth() 341 | } 342 | 343 | /* Public */ 344 | /* http://imakewebthings.com/waypoints/api/context-destroy */ 345 | Context.prototype.destroy = function() { 346 | var allWaypoints = [] 347 | for (var axis in this.waypoints) { 348 | for (var waypointKey in this.waypoints[axis]) { 349 | allWaypoints.push(this.waypoints[axis][waypointKey]) 350 | } 351 | } 352 | for (var i = 0, end = allWaypoints.length; i < end; i++) { 353 | allWaypoints[i].destroy() 354 | } 355 | } 356 | 357 | /* Public */ 358 | /* http://imakewebthings.com/waypoints/api/context-refresh */ 359 | Context.prototype.refresh = function() { 360 | /*eslint-disable eqeqeq */ 361 | var isWindow = this.element == this.element.window 362 | /*eslint-enable eqeqeq */ 363 | var contextOffset = isWindow ? undefined : this.adapter.offset() 364 | var triggeredGroups = {} 365 | var axes 366 | 367 | this.handleScroll() 368 | axes = { 369 | horizontal: { 370 | contextOffset: isWindow ? 0 : contextOffset.left, 371 | contextScroll: isWindow ? 0 : this.oldScroll.x, 372 | contextDimension: this.innerWidth(), 373 | oldScroll: this.oldScroll.x, 374 | forward: 'right', 375 | backward: 'left', 376 | offsetProp: 'left' 377 | }, 378 | vertical: { 379 | contextOffset: isWindow ? 0 : contextOffset.top, 380 | contextScroll: isWindow ? 0 : this.oldScroll.y, 381 | contextDimension: this.innerHeight(), 382 | oldScroll: this.oldScroll.y, 383 | forward: 'down', 384 | backward: 'up', 385 | offsetProp: 'top' 386 | } 387 | } 388 | 389 | for (var axisKey in axes) { 390 | var axis = axes[axisKey] 391 | for (var waypointKey in this.waypoints[axisKey]) { 392 | var waypoint = this.waypoints[axisKey][waypointKey] 393 | var adjustment = waypoint.options.offset 394 | var oldTriggerPoint = waypoint.triggerPoint 395 | var elementOffset = 0 396 | var freshWaypoint = oldTriggerPoint == null 397 | var contextModifier, wasBeforeScroll, nowAfterScroll 398 | var triggeredBackward, triggeredForward 399 | 400 | if (waypoint.element !== waypoint.element.window) { 401 | elementOffset = waypoint.adapter.offset()[axis.offsetProp] 402 | } 403 | 404 | if (typeof adjustment === 'function') { 405 | adjustment = adjustment.apply(waypoint) 406 | } 407 | else if (typeof adjustment === 'string') { 408 | adjustment = parseFloat(adjustment) 409 | if (waypoint.options.offset.indexOf('%') > - 1) { 410 | adjustment = Math.ceil(axis.contextDimension * adjustment / 100) 411 | } 412 | } 413 | 414 | contextModifier = axis.contextScroll - axis.contextOffset 415 | waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment) 416 | wasBeforeScroll = oldTriggerPoint < axis.oldScroll 417 | nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll 418 | triggeredBackward = wasBeforeScroll && nowAfterScroll 419 | triggeredForward = !wasBeforeScroll && !nowAfterScroll 420 | 421 | if (!freshWaypoint && triggeredBackward) { 422 | waypoint.queueTrigger(axis.backward) 423 | triggeredGroups[waypoint.group.id] = waypoint.group 424 | } 425 | else if (!freshWaypoint && triggeredForward) { 426 | waypoint.queueTrigger(axis.forward) 427 | triggeredGroups[waypoint.group.id] = waypoint.group 428 | } 429 | else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) { 430 | waypoint.queueTrigger(axis.forward) 431 | triggeredGroups[waypoint.group.id] = waypoint.group 432 | } 433 | } 434 | } 435 | 436 | Waypoint.requestAnimationFrame(function() { 437 | for (var groupKey in triggeredGroups) { 438 | triggeredGroups[groupKey].flushTriggers() 439 | } 440 | }) 441 | 442 | return this 443 | } 444 | 445 | /* Private */ 446 | Context.findOrCreateByElement = function(element) { 447 | return Context.findByElement(element) || new Context(element) 448 | } 449 | 450 | /* Private */ 451 | Context.refreshAll = function() { 452 | for (var contextId in contexts) { 453 | contexts[contextId].refresh() 454 | } 455 | } 456 | 457 | /* Public */ 458 | /* http://imakewebthings.com/waypoints/api/context-find-by-element */ 459 | Context.findByElement = function(element) { 460 | return contexts[element.waypointContextKey] 461 | } 462 | 463 | window.onload = function() { 464 | if (oldWindowLoad) { 465 | oldWindowLoad() 466 | } 467 | Context.refreshAll() 468 | } 469 | 470 | 471 | Waypoint.requestAnimationFrame = function(callback) { 472 | var requestFn = window.requestAnimationFrame || 473 | window.mozRequestAnimationFrame || 474 | window.webkitRequestAnimationFrame || 475 | requestAnimationFrameShim 476 | requestFn.call(window, callback) 477 | } 478 | Waypoint.Context = Context 479 | }()) 480 | ;(function() { 481 | 'use strict' 482 | 483 | function byTriggerPoint(a, b) { 484 | return a.triggerPoint - b.triggerPoint 485 | } 486 | 487 | function byReverseTriggerPoint(a, b) { 488 | return b.triggerPoint - a.triggerPoint 489 | } 490 | 491 | var groups = { 492 | vertical: {}, 493 | horizontal: {} 494 | } 495 | var Waypoint = window.Waypoint 496 | 497 | /* http://imakewebthings.com/waypoints/api/group */ 498 | function Group(options) { 499 | this.name = options.name 500 | this.axis = options.axis 501 | this.id = this.name + '-' + this.axis 502 | this.waypoints = [] 503 | this.clearTriggerQueues() 504 | groups[this.axis][this.name] = this 505 | } 506 | 507 | /* Private */ 508 | Group.prototype.add = function(waypoint) { 509 | this.waypoints.push(waypoint) 510 | } 511 | 512 | /* Private */ 513 | Group.prototype.clearTriggerQueues = function() { 514 | this.triggerQueues = { 515 | up: [], 516 | down: [], 517 | left: [], 518 | right: [] 519 | } 520 | } 521 | 522 | /* Private */ 523 | Group.prototype.flushTriggers = function() { 524 | for (var direction in this.triggerQueues) { 525 | var waypoints = this.triggerQueues[direction] 526 | var reverse = direction === 'up' || direction === 'left' 527 | waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint) 528 | for (var i = 0, end = waypoints.length; i < end; i += 1) { 529 | var waypoint = waypoints[i] 530 | if (waypoint.options.continuous || i === waypoints.length - 1) { 531 | waypoint.trigger([direction]) 532 | } 533 | } 534 | } 535 | this.clearTriggerQueues() 536 | } 537 | 538 | /* Private */ 539 | Group.prototype.next = function(waypoint) { 540 | this.waypoints.sort(byTriggerPoint) 541 | var index = Waypoint.Adapter.inArray(waypoint, this.waypoints) 542 | var isLast = index === this.waypoints.length - 1 543 | return isLast ? null : this.waypoints[index + 1] 544 | } 545 | 546 | /* Private */ 547 | Group.prototype.previous = function(waypoint) { 548 | this.waypoints.sort(byTriggerPoint) 549 | var index = Waypoint.Adapter.inArray(waypoint, this.waypoints) 550 | return index ? this.waypoints[index - 1] : null 551 | } 552 | 553 | /* Private */ 554 | Group.prototype.queueTrigger = function(waypoint, direction) { 555 | this.triggerQueues[direction].push(waypoint) 556 | } 557 | 558 | /* Private */ 559 | Group.prototype.remove = function(waypoint) { 560 | var index = Waypoint.Adapter.inArray(waypoint, this.waypoints) 561 | if (index > -1) { 562 | this.waypoints.splice(index, 1) 563 | } 564 | } 565 | 566 | /* Public */ 567 | /* http://imakewebthings.com/waypoints/api/first */ 568 | Group.prototype.first = function() { 569 | return this.waypoints[0] 570 | } 571 | 572 | /* Public */ 573 | /* http://imakewebthings.com/waypoints/api/last */ 574 | Group.prototype.last = function() { 575 | return this.waypoints[this.waypoints.length - 1] 576 | } 577 | 578 | /* Private */ 579 | Group.findOrCreate = function(options) { 580 | return groups[options.axis][options.name] || new Group(options) 581 | } 582 | 583 | Waypoint.Group = Group 584 | }()) 585 | ;(function() { 586 | 'use strict' 587 | 588 | var Waypoint = window.Waypoint 589 | 590 | function isWindow(element) { 591 | return element === element.window 592 | } 593 | 594 | function getWindow(element) { 595 | if (isWindow(element)) { 596 | return element 597 | } 598 | return element.defaultView 599 | } 600 | 601 | function NoFrameworkAdapter(element) { 602 | this.element = element 603 | this.handlers = {} 604 | } 605 | 606 | NoFrameworkAdapter.prototype.innerHeight = function() { 607 | var isWin = isWindow(this.element) 608 | return isWin ? this.element.innerHeight : this.element.clientHeight 609 | } 610 | 611 | NoFrameworkAdapter.prototype.innerWidth = function() { 612 | var isWin = isWindow(this.element) 613 | return isWin ? this.element.innerWidth : this.element.clientWidth 614 | } 615 | 616 | NoFrameworkAdapter.prototype.off = function(event, handler) { 617 | function removeListeners(element, listeners, handler) { 618 | for (var i = 0, end = listeners.length - 1; i < end; i++) { 619 | var listener = listeners[i] 620 | if (!handler || handler === listener) { 621 | element.removeEventListener(listener) 622 | } 623 | } 624 | } 625 | 626 | var eventParts = event.split('.') 627 | var eventType = eventParts[0] 628 | var namespace = eventParts[1] 629 | var element = this.element 630 | 631 | if (namespace && this.handlers[namespace] && eventType) { 632 | removeListeners(element, this.handlers[namespace][eventType], handler) 633 | this.handlers[namespace][eventType] = [] 634 | } 635 | else if (eventType) { 636 | for (var ns in this.handlers) { 637 | removeListeners(element, this.handlers[ns][eventType] || [], handler) 638 | this.handlers[ns][eventType] = [] 639 | } 640 | } 641 | else if (namespace && this.handlers[namespace]) { 642 | for (var type in this.handlers[namespace]) { 643 | removeListeners(element, this.handlers[namespace][type], handler) 644 | } 645 | this.handlers[namespace] = {} 646 | } 647 | } 648 | 649 | /* Adapted from jQuery 1.x offset() */ 650 | NoFrameworkAdapter.prototype.offset = function() { 651 | if (!this.element.ownerDocument) { 652 | return null 653 | } 654 | 655 | var documentElement = this.element.ownerDocument.documentElement 656 | var win = getWindow(this.element.ownerDocument) 657 | var rect = { 658 | top: 0, 659 | left: 0 660 | } 661 | 662 | if (this.element.getBoundingClientRect) { 663 | rect = this.element.getBoundingClientRect() 664 | } 665 | 666 | return { 667 | top: rect.top + win.pageYOffset - documentElement.clientTop, 668 | left: rect.left + win.pageXOffset - documentElement.clientLeft 669 | } 670 | } 671 | 672 | NoFrameworkAdapter.prototype.on = function(event, handler) { 673 | var eventParts = event.split('.') 674 | var eventType = eventParts[0] 675 | var namespace = eventParts[1] || '__default' 676 | var nsHandlers = this.handlers[namespace] = this.handlers[namespace] || {} 677 | var nsTypeList = nsHandlers[eventType] = nsHandlers[eventType] || [] 678 | 679 | nsTypeList.push(handler) 680 | this.element.addEventListener(eventType, handler) 681 | } 682 | 683 | NoFrameworkAdapter.prototype.outerHeight = function(includeMargin) { 684 | var height = this.innerHeight() 685 | var computedStyle 686 | 687 | if (includeMargin && !isWindow(this.element)) { 688 | computedStyle = window.getComputedStyle(this.element) 689 | height += parseInt(computedStyle.marginTop, 10) 690 | height += parseInt(computedStyle.marginBottom, 10) 691 | } 692 | 693 | return height 694 | } 695 | 696 | NoFrameworkAdapter.prototype.outerWidth = function(includeMargin) { 697 | var width = this.innerWidth() 698 | var computedStyle 699 | 700 | if (includeMargin && !isWindow(this.element)) { 701 | computedStyle = window.getComputedStyle(this.element) 702 | width += parseInt(computedStyle.marginLeft, 10) 703 | width += parseInt(computedStyle.marginRight, 10) 704 | } 705 | 706 | return width 707 | } 708 | 709 | NoFrameworkAdapter.prototype.scrollLeft = function() { 710 | var win = getWindow(this.element) 711 | return win ? win.pageXOffset : this.element.scrollLeft 712 | } 713 | 714 | NoFrameworkAdapter.prototype.scrollTop = function() { 715 | var win = getWindow(this.element) 716 | return win ? win.pageYOffset : this.element.scrollTop 717 | } 718 | 719 | NoFrameworkAdapter.extend = function() { 720 | var args = Array.prototype.slice.call(arguments) 721 | 722 | function merge(target, obj) { 723 | if (typeof target === 'object' && typeof obj === 'object') { 724 | for (var key in obj) { 725 | if (obj.hasOwnProperty(key)) { 726 | target[key] = obj[key] 727 | } 728 | } 729 | } 730 | 731 | return target 732 | } 733 | 734 | for (var i = 1, end = args.length; i < end; i++) { 735 | merge(args[0], args[i]) 736 | } 737 | return args[0] 738 | } 739 | 740 | NoFrameworkAdapter.inArray = function(element, array, i) { 741 | return array == null ? -1 : array.indexOf(element, i) 742 | } 743 | 744 | NoFrameworkAdapter.isEmptyObject = function(obj) { 745 | /* eslint no-unused-vars: 0 */ 746 | for (var name in obj) { 747 | return false 748 | } 749 | return true 750 | } 751 | 752 | Waypoint.adapters.push({ 753 | name: 'noframework', 754 | Adapter: NoFrameworkAdapter 755 | }) 756 | Waypoint.Adapter = NoFrameworkAdapter 757 | }()) 758 | ; -------------------------------------------------------------------------------- /templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 数据库课程设计 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 29 |
30 |
31 |

数据库课程设计

32 |

I'm

33 |
34 |
35 |
36 |
37 |
38 |
39 |

图书查询

40 | {# 设置执行动作和请求方式 #} 41 |
42 | 编号: 43 | 44 | 书名: 45 | 46 | 作者: 47 | 48 | 价格: 49 | 50 | 51 |
52 | 53 | 54 | 55 | 62 | 69 | 70 |
56 |
57 | 根据编号查询: 58 | 59 | 60 |
61 |
63 |
64 | 根据名称查询: 65 | 66 | 67 |
68 |
71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | {% for i in data %} 80 | 81 | 82 | 83 | 84 | 85 | 89 | 90 | {% endfor %} 91 |
图书编号书名作者价格操作
{{ i[0] }}{{ i[2] }}{{ i[1] }}{{ i[3] }} 86 | 87 | 88 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 | 101 |
102 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 131 | 132 | -------------------------------------------------------------------------------- /templates/login.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 数据库课程设计 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 查询结果 19 | 20 | 34 | 35 | 36 |
37 |
38 |
39 | 43 |
44 |
45 | 48 |
49 |
50 | 51 |        52 | 53 |
54 |
55 |
56 | {% if data==0 %} 57 | 60 | {% endif %} 61 | {# 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /templates/select.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 数据库课程设计 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 查询结果 20 | 21 | 22 | 28 | 29 |
30 |

查询成功

31 | 32 | 33 | 34 | 35 | 36 | 37 | {% for i in sdata %} 38 | 39 | 40 | 41 | 42 | 43 | 44 | {% endfor %} 45 |
id书名作者价格
{{ i[0] }}{{ i[2] }}{{ i[1] }}{{ i[3] }}
46 |
47 | {% if d==0 %} 48 | 51 | {% endif %} 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /templates/updata.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 |
12 |

图书修改

13 |
14 |
15 | 编号: 16 | 17 |
18 |
19 | 书名: 20 | 21 |
22 |
23 | 作者: 24 | 25 |
26 |
27 | 价格: 28 | 29 |
30 | 31 |
32 |
33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 数据库课程设计 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 查询结果 63 | 64 | --------------------------------------------------------------------------------