├── Images ├── GSMS01.jpeg ├── GSMS02.jpeg └── Backend.jpeg ├── Grocery Store Management System ├── backend │ ├── __pycache__ │ │ ├── uom_dao.cpython-311.pyc │ │ ├── orders_dao.cpython-311.pyc │ │ ├── products_dao.cpython-311.pyc │ │ └── sql_connection.cpython-311.pyc │ ├── sql_connection.py │ ├── uom_dao.py │ ├── products_dao.py │ ├── server.py │ └── orders_dao.py └── ui │ ├── images │ └── alan-alves-yUtPwsEau8I-unsplash.jpg │ ├── js │ ├── custom │ │ ├── dashboard.js │ │ ├── common.js │ │ ├── order.js │ │ └── manage-product.js │ └── packages │ │ └── bootstrap.min.js │ ├── css │ ├── sidebar-menu.css │ └── style.css │ ├── index.html │ ├── manage-product.html │ └── order.html └── README.md /Images/GSMS01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CharudattaGhute/Grocery-Management-System/HEAD/Images/GSMS01.jpeg -------------------------------------------------------------------------------- /Images/GSMS02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CharudattaGhute/Grocery-Management-System/HEAD/Images/GSMS02.jpeg -------------------------------------------------------------------------------- /Images/Backend.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CharudattaGhute/Grocery-Management-System/HEAD/Images/Backend.jpeg -------------------------------------------------------------------------------- /Grocery Store Management System/backend/__pycache__/uom_dao.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CharudattaGhute/Grocery-Management-System/HEAD/Grocery Store Management System/backend/__pycache__/uom_dao.cpython-311.pyc -------------------------------------------------------------------------------- /Grocery Store Management System/backend/__pycache__/orders_dao.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CharudattaGhute/Grocery-Management-System/HEAD/Grocery Store Management System/backend/__pycache__/orders_dao.cpython-311.pyc -------------------------------------------------------------------------------- /Grocery Store Management System/ui/images/alan-alves-yUtPwsEau8I-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CharudattaGhute/Grocery-Management-System/HEAD/Grocery Store Management System/ui/images/alan-alves-yUtPwsEau8I-unsplash.jpg -------------------------------------------------------------------------------- /Grocery Store Management System/backend/__pycache__/products_dao.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CharudattaGhute/Grocery-Management-System/HEAD/Grocery Store Management System/backend/__pycache__/products_dao.cpython-311.pyc -------------------------------------------------------------------------------- /Grocery Store Management System/backend/__pycache__/sql_connection.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CharudattaGhute/Grocery-Management-System/HEAD/Grocery Store Management System/backend/__pycache__/sql_connection.cpython-311.pyc -------------------------------------------------------------------------------- /Grocery Store Management System/backend/sql_connection.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | import mysql.connector 3 | 4 | __cnx = None 5 | 6 | def get_sql_connection(): 7 | print("Opening mysql connection") 8 | global __cnx 9 | 10 | if __cnx is None: 11 | __cnx = mysql.connector.connect(user='your_username', password='your_password',host="127.0.0.1", database='grocery_store') 12 | 13 | return __cnx 14 | 15 | -------------------------------------------------------------------------------- /Grocery Store Management System/backend/uom_dao.py: -------------------------------------------------------------------------------- 1 | 2 | def get_uoms(connection): 3 | cursor = connection.cursor() 4 | query = ("select * from uom") 5 | cursor.execute(query) 6 | response = [] 7 | for (uom_id, uom_name) in cursor: 8 | response.append({ 9 | 'uom_id': uom_id, 10 | 'uom_name': uom_name 11 | }) 12 | return response 13 | 14 | 15 | if __name__ == '__main__': 16 | from sql_connection import get_sql_connection 17 | 18 | connection = get_sql_connection() 19 | # print(get_all_products(connection)) 20 | print(get_uoms(connection)) -------------------------------------------------------------------------------- /Grocery Store Management System/ui/js/custom/dashboard.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | //Json data by api call for order table 3 | $.get(ordersListApiUrl, function (response) { 4 | if(response) { 5 | var table = ''; 6 | var totalCost = 0; 7 | $.each(response, function(index, orders) { 8 | totalCost += parseFloat(orders.total); 9 | table += '' + 10 | ''+ orders.datetime +''+ 11 | ''+ orders.orders_id +''+ 12 | ''+ orders.custmer_name +''+ 13 | ''+ orders.total.toFixed(2) +' Rs'; 14 | }); 15 | table += 'Total'+ totalCost.toFixed(2) +' Rs'; 16 | $("table").find('tbody').empty().html(table); 17 | } 18 | }); 19 | }); -------------------------------------------------------------------------------- /Grocery Store Management System/backend/products_dao.py: -------------------------------------------------------------------------------- 1 | from sql_connection import get_sql_connection 2 | 3 | def get_all_products(connection): 4 | cursor = connection.cursor() 5 | query =("SELECT products.products_id,products.product_name,products.uom_id,products.price_per_unit," 6 | "uom.uom_name From products inner join uom on uom.uom_id=products.uom_id ") 7 | cursor.execute(query) 8 | response = [] 9 | for (products_id, product_name, uom_id, price_per_unit, uom_name) in cursor: 10 | response.append({ 11 | 'products_id': products_id, 12 | 'product_name': product_name, 13 | 'uom_id': uom_id, 14 | 'price_per_unit': price_per_unit, 15 | 'uom_name': uom_name 16 | }) 17 | return response 18 | 19 | def insert_new_product(connection, product): 20 | cursor = connection.cursor() 21 | query = ("INSERT INTO products " 22 | "(product_name, uom_id, price_per_unit)" 23 | "VALUES (%s, %s, %s)") 24 | data = (product['product_name'], product['uom_id'], product['price_per_unit']) 25 | 26 | cursor.execute(query, data) 27 | connection.commit() 28 | 29 | return cursor.lastrowid 30 | 31 | def delete_product(connection, products_id): 32 | cursor = connection.cursor() 33 | query = ("DELETE FROM products where products_id=" + str(products_id)) 34 | cursor.execute(query) 35 | connection.commit() 36 | 37 | return cursor.lastrowid 38 | 39 | if __name__ == '__main__': 40 | connection = get_sql_connection() 41 | # print(get_all_products(connection)) 42 | print(insert_new_product(connection, { 43 | 'product_name': 'grrenPees', 44 | 'uom_id': '1', 45 | 'price_per_unit': 10 46 | })) -------------------------------------------------------------------------------- /Grocery Store Management System/ui/js/custom/common.js: -------------------------------------------------------------------------------- 1 | // Define your api here 2 | var productListApiUrl = 'http://127.0.0.1:5000/getProducts'; 3 | var uomListApiUrl = 'http://127.0.0.1:5000/getUOM'; 4 | var productSaveApiUrl = 'http://127.0.0.1:5000/insertProduct'; 5 | var productDeleteApiUrl = 'http://127.0.0.1:5000/deleteProduct'; 6 | var ordersListApiUrl = 'http://127.0.0.1:5000/getAllOrders'; 7 | var orderSaveApiUrl = 'http://127.0.0.1:5000/insertOrder'; 8 | 9 | // For product drop in order 10 | var productsApiUrl = 'https://fakestoreapi.com/products'; 11 | 12 | function callApi(method, url, data) { 13 | $.ajax({ 14 | method: method, 15 | url: url, 16 | data: data 17 | }).done(function( msg ) { 18 | window.location.reload(); 19 | }); 20 | } 21 | 22 | function calculateValue() { 23 | var total = 0; 24 | $(".product-item").each(function( index ) { 25 | var qty = parseFloat($(this).find('.product-qty').val()); 26 | var price = parseFloat($(this).find('#product_price').val()); 27 | price = price*qty; 28 | $(this).find('#item_total').val(price.toFixed(2)); 29 | total += price; 30 | }); 31 | $("#product_grand_total").val(total.toFixed(2)); 32 | } 33 | 34 | function orderParser(order) { 35 | return { 36 | id : order.id, 37 | date : order.employee_name, 38 | orderNo : order.employee_name, 39 | customerName : order.employee_name, 40 | cost : parseInt(order.employee_salary) 41 | } 42 | } 43 | 44 | function productParser(product) { 45 | return { 46 | id : product.id, 47 | name : product.employee_name, 48 | unit : product.employee_name, 49 | price : product.employee_name 50 | } 51 | } 52 | 53 | function productDropParser(product) { 54 | return { 55 | id : product.id, 56 | name : product.title 57 | } 58 | } 59 | 60 | -------------------------------------------------------------------------------- /Grocery Store Management System/backend/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request, jsonify 2 | from sql_connection import get_sql_connection 3 | import json 4 | import products_dao 5 | import orders_dao 6 | import uom_dao 7 | 8 | app = Flask(__name__) 9 | 10 | connection = get_sql_connection() 11 | 12 | @app.route('/getUOM', methods=['GET']) 13 | def get_uom(): 14 | response = uom_dao.get_uoms(connection) 15 | response = jsonify(response) 16 | response.headers.add('Access-Control-Allow-Origin', '*') 17 | return response 18 | 19 | @app.route('/getProducts', methods=['GET']) 20 | def get_products(): 21 | response = products_dao.get_all_products(connection) 22 | response = jsonify(response) 23 | response.headers.add('Access-Control-Allow-Origin', '*') 24 | return response 25 | 26 | @app.route('/insertProduct', methods=['POST']) 27 | def insert_product(): 28 | request_payload = json.loads(request.form['data']) 29 | products_id = products_dao.insert_new_product(connection, request_payload) 30 | response = jsonify({ 31 | 'products_id': products_id 32 | }) 33 | response.headers.add('Access-Control-Allow-Origin', '*') 34 | return response 35 | 36 | @app.route('/getAllOrders', methods=['GET']) 37 | def get_all_orders(): 38 | response = orders_dao.get_all_orders(connection) 39 | response = jsonify(response) 40 | response.headers.add('Access-Control-Allow-Origin', '*') 41 | return response 42 | 43 | @app.route('/insertOrder', methods=['POST']) 44 | def insert_order(): 45 | request_payload = json.loads(request.form['data']) 46 | orders_id = orders_dao.insert_order(connection, request_payload) 47 | response = jsonify({ 48 | 'orders_id': orders_id 49 | }) 50 | response.headers.add('Access-Control-Allow-Origin', '*') 51 | return response 52 | 53 | @app.route('/deleteProduct', methods=['POST']) 54 | def delete_product(): 55 | return_id = products_dao.delete_product(connection, request.form['products_id']) 56 | response = jsonify({ 57 | 'product_id': return_id 58 | }) 59 | response.headers.add('Access-Control-Allow-Origin', '*') 60 | return response 61 | 62 | if __name__ == "__main__": 63 | print("Starting Python Flask Server For Grocery Store Management System") 64 | app.run(port=5000) 65 | 66 | -------------------------------------------------------------------------------- /Grocery Store Management System/ui/js/custom/order.js: -------------------------------------------------------------------------------- 1 | var productPrices = {}; 2 | 3 | $(function () { 4 | //Json data by api call for order table 5 | $.get(productListApiUrl, function (response) { 6 | productPrices = {} 7 | if(response) { 8 | var options = ''; 9 | $.each(response, function(index, product) { 10 | options += ''; 11 | productPrices[product.products_id] = product.price_per_unit; 12 | }); 13 | $(".product-box").find("select").empty().html(options); 14 | } 15 | }); 16 | }); 17 | 18 | $("#addMoreButton").click(function () { 19 | var row = $(".product-box").html(); 20 | $(".product-box-extra").append(row); 21 | $(".product-box-extra .remove-row").last().removeClass('hideit'); 22 | $(".product-box-extra .product-price").last().text('0.0'); 23 | $(".product-box-extra .product-qty").last().val('1'); 24 | $(".product-box-extra .product-total").last().text('0.0'); 25 | }); 26 | 27 | $(document).on("click", ".remove-row", function (){ 28 | $(this).closest('.row').remove(); 29 | calculateValue(); 30 | }); 31 | 32 | $(document).on("change", ".cart-product", function (){ 33 | var products_id = $(this).val(); 34 | var price = productPrices[products_id]; 35 | 36 | $(this).closest('.row').find('#product_price').val(price); 37 | calculateValue(); 38 | }); 39 | 40 | $(document).on("change", ".product-qty", function (e){ 41 | calculateValue(); 42 | }); 43 | 44 | $("#saveOrder").on("click", function(){ 45 | var formData = $("form").serializeArray(); 46 | var requestPayload = { 47 | custmer_name: null, 48 | total: null, 49 | order_details: [] 50 | }; 51 | var order_details = []; 52 | for(var i=0;i' + 10 | ''+ product.product_name +''+ 11 | ''+ product.uom_name +''+ 12 | ''+ product.price_per_unit +''+ 13 | 'Delete'; 14 | }); 15 | $("table").find('tbody').empty().html(table); 16 | } 17 | }); 18 | }); 19 | 20 | // Save Product 21 | $("#saveProduct").on("click", function () { 22 | // If we found id value in form then update product detail 23 | var data = $("#productForm").serializeArray(); 24 | var requestPayload = { 25 | name: null, 26 | uom_id: null, 27 | price_per_unit: null 28 | }; 29 | for (var i=0;i'+ uom.uom_name +''; 72 | }); 73 | $("#uoms").empty().html(options); 74 | } 75 | }); 76 | }); -------------------------------------------------------------------------------- /Grocery Store Management System/ui/css/sidebar-menu.css: -------------------------------------------------------------------------------- 1 | #sidebar-menu-v2 .sidebar-menu { 2 | list-style: none; 3 | margin: 0; 4 | padding: 0; 5 | background-color: #ffffff; 6 | border-right: 1px solid #ddd; 7 | } 8 | 9 | #sidebar-menu-v2 .sidebar-menu > li { 10 | position: relative; 11 | margin: 0; 12 | padding: 0; 13 | } 14 | 15 | #sidebar-menu-v2 .sidebar-menu > li > a { 16 | padding: 12px 8px 12px 15px; 17 | display: block; 18 | border-left: 3px solid transparent; 19 | color: #294661; 20 | } 21 | 22 | #sidebar-menu-v2 .sidebar-menu > li > a > .fa { 23 | width: 20px; 24 | margin: auto 7px; 25 | } 26 | 27 | #sidebar-menu-v2 .sidebar-menu > li:hover > a, #sidebar-menu-v2 .sidebar-menu > li.active > a { 28 | color: #00050f; 29 | background: #ffffff; 30 | border-left-color: #0065ff; 31 | } 32 | 33 | #sidebar-menu-v2 .sidebar-menu > li > .treeview-menu { 34 | margin: 0 1px; 35 | background: #ffffff; 36 | } 37 | 38 | #sidebar-menu-v2 .sidebar-menu > li .label, 39 | #sidebar-menu-v2 .sidebar-menu > li .badge { 40 | margin-top: 3px; 41 | margin-right: 5px; 42 | } 43 | 44 | #sidebar-menu-v2 .sidebar-menu li.header { 45 | padding: 10px 25px 10px 15px; 46 | font-size: 12px; 47 | color: #294661; 48 | background: #ffffff; 49 | } 50 | 51 | #sidebar-menu-v2 .sidebar-menu li > a > .fa-angle-left { 52 | width: auto; 53 | height: auto; 54 | padding: 0; 55 | margin-right: 10px; 56 | margin-top: 3px; 57 | } 58 | 59 | #sidebar-menu-v2 .sidebar-menu li.active > a > .fa-angle-left { 60 | transform: rotate(-90deg); 61 | } 62 | 63 | #sidebar-menu-v2 .sidebar-menu li.active > .treeview-menu { 64 | display: block; 65 | } 66 | 67 | #sidebar-menu-v2 .sidebar-menu a { 68 | color: #b8c7ce; 69 | text-decoration: none; 70 | } 71 | 72 | #sidebar-menu-v2 .sidebar-menu .treeview-menu { 73 | display: none; 74 | list-style: none; 75 | padding: 0; 76 | margin: 0; 77 | padding-left: 5px; 78 | } 79 | 80 | #sidebar-menu-v2 .sidebar-menu .treeview-menu .treeview-menu { 81 | padding-left: 20px; 82 | } 83 | 84 | #sidebar-menu-v2 .sidebar-menu .treeview-menu > li { 85 | margin: 0; 86 | } 87 | 88 | #sidebar-menu-v2 .sidebar-menu .treeview-menu > li > a { 89 | padding: 5px 13px 5px 15px; 90 | display: block; 91 | font-size: 14px; 92 | color: #294661; 93 | } 94 | 95 | #sidebar-menu-v2 .sidebar-menu .treeview-menu > li > a > .fa { 96 | width: 21px; 97 | margin: auto 5px; 98 | } 99 | 100 | #sidebar-menu-v2 .sidebar-menu .treeview-menu > li > a > .fa-angle-left, 101 | #sidebar-menu-v2 .sidebar-menu .treeview-menu > li > a > .fa-angle-down { 102 | width: auto; 103 | } 104 | 105 | #sidebar-menu-v2 .sidebar-menu .treeview-menu > li.active > a, #sidebar-menu-v2 .sidebar-menu .treeview-menu > li > a:hover { 106 | color: #001429; 107 | } 108 | 109 | #sidebar-menu-v2 .body.rows{ 110 | top: 60px; 111 | -ms-overflow-style: none; 112 | } 113 | 114 | #sidebar-menu-v2 .body.rows::-webkit-scrollbar{ 115 | display: none; 116 | } 117 | 118 | #sidebar-menu-v2.left{ 119 | background: #ffffff; 120 | } 121 | 122 | @media (max-width: 767px) { 123 | 124 | #sidebar-menu-v2 { 125 | margin-top: 50px; 126 | } 127 | } -------------------------------------------------------------------------------- /Grocery Store Management System/backend/orders_dao.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | from sql_connection import get_sql_connection 3 | 4 | def insert_order(connection, orders): 5 | cursor = connection.cursor() 6 | 7 | order_query = ("INSERT INTO orders " 8 | "(custmer_name, total, datetime)" 9 | "VALUES (%s, %s, %s)") 10 | order_data = (orders['custmer_name'], orders['grand_total'], datetime.now()) 11 | 12 | cursor.execute(order_query, order_data) 13 | orders_id = cursor.lastrowid 14 | 15 | order_details_query = ("INSERT INTO order_details " 16 | "(orders_id, products_id, quantity, total_price)" 17 | "VALUES (%s, %s, %s, %s)") 18 | 19 | order_details_data = [] 20 | for order_detail_record in orders['order_details']: 21 | order_details_data.append([ 22 | orders_id, 23 | int(order_detail_record['products_id']), 24 | float(order_detail_record['quantity']), 25 | float(order_detail_record['total_price']) 26 | ]) 27 | cursor.executemany(order_details_query, order_details_data) 28 | 29 | connection.commit() 30 | 31 | return orders_id 32 | 33 | def get_order_details(connection, orders_id): 34 | cursor = connection.cursor() 35 | 36 | query = "SELECT * from order_details where order_id = %s" 37 | 38 | query = "SELECT order_details.orders_id, order_details.quantity, order_details.total_price, "\ 39 | "products.product_name, products.price_per_unit FROM order_details LEFT JOIN products on " \ 40 | "order_details.products_id = products.products_id where order_details.orders_id = %s" 41 | 42 | data = (orders_id, ) 43 | 44 | cursor.execute(query, data) 45 | 46 | records = [] 47 | for (orders_id, quantity, total_price, product_name, price_per_unit) in cursor: 48 | records.append({ 49 | 'orders_id': orders_id, 50 | 'quantity': quantity, 51 | 'total_price': total_price, 52 | 'product_name': product_name, 53 | 'price_per_unit': price_per_unit 54 | }) 55 | 56 | cursor.close() 57 | 58 | return records 59 | 60 | def get_all_orders(connection): 61 | cursor = connection.cursor() 62 | query = ("SELECT * FROM orders") 63 | cursor.execute(query) 64 | response = [] 65 | for (orders_id, custmer_name, total, dt) in cursor: 66 | response.append({ 67 | 'orders_id': orders_id, 68 | 'custmer_name': custmer_name, 69 | 'total': total, 70 | 'datetime': dt, 71 | }) 72 | 73 | cursor.close() 74 | 75 | # append order details in each order 76 | for record in response: 77 | record['order_details'] = get_order_details(connection, record['orders_id']) 78 | 79 | return response 80 | 81 | if __name__ == '__main__': 82 | connection = get_sql_connection() 83 | print(get_all_orders(connection)) 84 | # print(get_order_details(connection,4)) 85 | # print(insert_order(connection, { 86 | # 'custmer_name': 'dhaval', 87 | # 'total': '500', 88 | # 'datetime': datetime.now(), 89 | # 'order_details': [ 90 | # { 91 | # 'products_id': 1, 92 | # 'quantity': 2, 93 | # 'total_price': 50 94 | # }, 95 | # { 96 | # 'products_id': 3, 97 | # 'quantity': 1, 98 | # 'total_price': 30 99 | # } 100 | # ] 101 | # })) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Grocery Management System 2 | The Grocery Management System is a comprehensive solution for efficiently managing and organizing a grocery store's operations. It provides an integrated platform that combines both frontend and backend technologies to streamline various processes related to inventory management, customer interactions, and order tracking. This README file provides an overview of the project, its features, and how to set it up for local development. 3 | 4 | # Features 5 | - User-Friendly Interface: The frontend of the system is built using HTML, CSS, JavaScript, and Bootstrap, ensuring an intuitive and responsive user interface for both customers and store administrators. 6 | 7 | - Database Integration: The system employs MySQL as the database management system to store and manage crucial data related to products, customers,order tracking and total sales. 8 | 9 | - Python Backend: The backend of the system is developed using Python, leveraging the Flask web framework to manage business logic. 10 | 11 | - Individual Project: The project was developed by an individual and followed a structured development approach. 12 | 13 | # Database Setup 14 | To set up the database for the Grocery Management System, follow these steps: 15 | 16 | - Install MySQL: 17 | Make sure you have MySQL installed on your machine. If not, you can download and install it from the official MySQL website: https://dev.mysql.com/downloads/ 18 | 19 | - Create a Database: 20 | Open your MySQL command line interface or a MySQL client of your choice. Create a new database named grocery_store (or any name you prefer): 21 | 22 | CREATE DATABASE grocery_store; 23 | 24 | - Create Tables: 25 | The system utilizes four tables: products, uom, orders, and order_details. Here's how you can create these tables: 26 | We can use the MySql UI. 27 | ![table01](https://github.com/CharudattaGhute/Grocery-Management-System/assets/122104600/17ac9ff8-9d8b-4779-ad27-f4cb00fdde43) 28 | 29 | Similarly we can create other tables such as uom,oders and order_details which includes column name,Datatype,etc. 30 | 31 | # Update Database Configuration: 32 | 33 | Open the server.py file in your project and update the database connection configuration. You'll need to provide the host, username, password, and database name that you've set up. 34 | 35 | DATABASE_CONFIG = { 36 | 'localhost': '127.0.0.1', 37 | 'user': 'your_username', 38 | 'password': 'your_password', 39 | 'database': 'grocery_store' 40 | } 41 | 42 | # Access the Application: 43 | Open a web browser and navigate to http://localhost:5000 to access the Grocery Management System. 44 | 45 | # Contributing 46 | 47 | Contributions to the Grocery Management System are welcome! If you find any issues or would like to enhance the system with new features, feel free to fork the repository, make your changes, and submit a pull request. 48 | 49 | Please ensure to follow coding standards, write clear commit messages, and provide appropriate documentation for your contributions. 50 | 51 | # Project Demo Video 52 | Check out our project demo video to get a visual walkthrough of the Grocery Management System in action. This video provides an overview of the system's features, functionality, and how it can help streamline your grocery store operations. 53 | 54 | 55 | https://github.com/CharudattaGhute/Grocery-Management-System/assets/122104600/1a549cd9-11f9-4295-9ed2-7e6a784141d2 56 | 57 | 58 | 59 | We hope you find the video informative and insightful. If you have any questions or would like to explore specific aspects of the system further, please don't hesitate to reach out to us. 60 | 61 | # Contact 62 | 63 | If you have any questions or need assistance, feel free to reach out me at ghutecharudatta@gmail.com. Your feedback and inquiries are highly valued as we strive to enhance the Grocery Management System for a better experience. 64 | 65 | # Contact 66 | 67 | If you have any questions or need assistance, feel free to reach out me at ghutecharudatta@gmail.com. Your feedback and inquiries are highly valued as we strive to enhance the Grocery Management System for a better experience. 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /Grocery Store Management System/ui/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | grocery_store_mangment 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 |
21 | 24 | 41 |
42 | 43 |
44 |
45 |
46 |
47 |

Grocery Store Management System

48 |
49 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 |
DateOrder NumberCustomer NameTotal Cost
70 |
71 |
72 |
73 | 81 |
82 |
83 | 84 | 93 |
94 | 95 | 96 | 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /Grocery Store Management System/ui/manage-product.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Grocery_store_mangment 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 |
21 | 24 | 41 |
42 | 43 |
44 |
45 |
46 |

Manage Products

47 |
48 |
49 |
50 | 53 |
54 |
55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 |
NameUnitPrice Per UnitAction
66 |
67 |
68 |
69 |
70 | 71 | 110 |
111 | 112 | 113 | 114 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /Grocery Store Management System/ui/order.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | grocery_store_mangment 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 |
20 | 23 | 40 |
41 | 42 |
43 |
44 |
45 |
46 |

New Order 47 | 48 |

49 |
50 |
51 |
52 | 53 |
54 |
55 | 56 |
57 |
58 | 59 |
60 |
61 | 62 | 63 |
64 |
65 |
66 |
67 | 68 |
69 | 70 |
71 | 72 |
73 |
74 |
75 |
76 |
77 | Total 78 |
79 |
80 | Rs 81 | 82 |
83 |
84 |
85 |
86 |
87 |
88 | 109 |
110 |
111 |
112 | 113 | 114 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /Grocery Store Management System/ui/css/style.css: -------------------------------------------------------------------------------- 1 | .dropdown-menu.dropdown-message li:hover.dropdown-footer a,body{background:#fff}#loading,.fill,.loading-inner,.page,.pane,.rows{right:0;left:0}.header.sidebar .logo h1,body,h1,h2,h3,h4,h5,h6{font-family:'Open Sans',Arial}#sidebar-menu>ul>li>a,.sidebar-inner #search .search{-webkit-transition:All .25s ease;-moz-transition:All .25s ease;-o-transition:All .25s ease}#loading,.col,.fill,.left,.page,.pane,.right{bottom:0}.box-info:after,.clear,.gallery-wrap:after,.iconExamples .example:after,.iconExamples:after,.la-pricing-table:after,.weatherseparator:after{clear:both}body{padding-top:50px;margin:0;-webkit-text-size-adjust:100%}.container{width:auto}blockquote.reply-message{font-size:14px}.modal{z-index:9999996}.modal-backdrop{z-index:9999995}.navbar{margin:0 0 0 -15px;z-index:999993;border-radius:0}.navbar-collapse{padding:0;margin:0}.navbar-default{background-color:#fff;border:none}.nav.navbar-nav.top-navbar li{position:relative}.nav.navbar-nav.top-navbar li a{cursor:pointer;color:#4C5264}.nav.navbar-nav.top-navbar li span.absolute{position:absolute;top:5px;left:25px;border-radius:10px;padding:5px;z-index:999}.dropdown-menu{top:97%;z-index:999992}.dropdown-menu.dropdown-message ul{white-space:inherit}.dropdown-menu.dropdown-message li a{word-wrap:normal|break-word;white-space:inherit;width:300px;border-bottom:1px solid #ddd}.dropdown-menu.dropdown-message li.dropdown-footer a{display:block;padding:10px 20px 6px;font-size:12px;line-height:1.428571429;color:#999;border-top:1px solid #ddd;border-bottom:none}.dropdown-menu.dropdown-message li p{font-size:11px}.dropdown-menu.dropdown-message li p i{color:#65BD77}.dropdown-menu.dropdown-message .dropdown-message-scroll{padding:0}.dropdown-menu.dropdown-message .dropdown-message-scroll li{padding:5px 20px}.dropdown-menu.dropdown-message .dropdown-message-scroll a,.dropdown-menu.dropdown-message .dropdown-message-scroll strong{text-decoration:none;border-bottom:none}.dropdown-menu.dropdown-message .dropdown-message-scroll .unread{background:#FFFCE0}.dropdown-menu.dropdown-message .dropdown-message-scroll a:hover{color:#000}.dropdown-header.notif-header{font-size:14px;padding:5px 20px 3px}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#fafafa;border-bottom:none}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#fafafa}.breadcrumb{padding:0;background:0 0;font-size:12px;margin:0 0 10px}.progress-bar{-webkit-box-shadow:inset 0 -1px 0 transparent;box-shadow:inset 0 -1px 0 transparent}.progress.progress-xs{height:5px;margin-top:30px;margin-bottom:20px;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.progress.progress-xs.for-modal{margin-top:10px;margin-bottom:20px}.progress.progress-xs .progress-bar{font-size:11px;line-height:16px;color:#fff;-webkit-box-shadow:inset 0 -1px 0 transparent;box-shadow:inset 0 -1px 0 transparent}.progress.progress-xs.progress-striped .progress-bar{background-size:10px 10px}.progress.progress-sm{height:10px;margin-top:20px;margin-bottom:20px;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.progress.progress-sm.progress-striped .progress-bar{background-size:15px 15px}.table>thead>tr>th{vertical-align:middle;border-bottom:1px solid #ddd}.form-control{font-size:13px;border-radius:0;border-color:#ddd;-webkit-box-shadow:inset 0 1px 1px transparent;box-shadow:inset 0 1px 1px transparent}.form-control:focus{border-color:#dadada;-webkit-box-shadow:inset 0 1px 1px transparent,0 0 8px rgba(102,175,233,0);box-shadow:inset 0 1px 1px transparent,0 0 8px rgba(102,175,233,0)}.form-group .checkbox{margin-left:0;padding-left:0}.btn{border-radius:2px}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.alert{border-radius:0}span.new-circle{border-radius:10px;padding:2px 5px;font-weight:400}img.xs-avatar{width:40px;padding:3px;background:#fff;border:1px solid #ddd;margin:0 4px 0 0}img.ava-dropdown{float:left;margin:7px 10px 0 0}i.i-xs{font-size:10px}#loading{margin:auto;position:fixed;top:0;z-index:999999999;background:#fff}.spinner{margin:0 auto;width:36px;height:36px;position:relative}.col,.cube1,.cube2,.fill,.header.sidebar,.left,.loading-inner,.page,.pane,.rows{position:absolute}.cube1,.cube2{background-color:#1B1E24;width:7.5px;height:7.5px;top:0;left:0;-webkit-animation:cubemove 2s infinite ease-in-out;animation:cubemove 2s infinite ease-in-out}.cube2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes cubemove{25%{-webkit-transform:translateX(24px) rotate(-90deg) scale(.5)}50%{-webkit-transform:translateX(24px) translateY(24px) rotate(-180deg)}75%{-webkit-transform:translateX(0) translateY(24px) rotate(-270deg) scale(.5)}100%{-webkit-transform:rotate(-360deg)}}@keyframes cubemove{25%{transform:translateX(24px) rotate(-90deg) scale(.5);-webkit-transform:translateX(24px) rotate(-90deg) scale(.5)}50%{transform:translateX(24px) translateY(24px) rotate(-179deg);-webkit-transform:translateX(24px) translateY(24px) rotate(-179deg)}50.1%{transform:translateX(24px) translateY(24px) rotate(-180deg);-webkit-transform:translateX(24px) translateY(24px) rotate(-180deg)}75%{transform:translateX(0) translateY(24px) rotate(-270deg) scale(.5);-webkit-transform:translateX(0) translateY(24px) rotate(-270deg) scale(.5)}100%{transform:rotate(-360deg);-webkit-transform:rotate(-360deg)}}.loading-inner{top:50%;margin:0 auto}.btn-facebook{background:#45619D}.btn-facebook:hover{background:#395289}.btn-twitter{background:#00ACEE}.btn-twitter:hover{background:#03A0DE}.btn-gplus{background:#D54636;border-color:#B22E21}.btn-gplus:hover{background:#BF392E;border-color:#B22E21}.btn-vimeo{background:#1BB6EC}.btn-vimeo:hover{background:#12ADE3}.btn-pinterest{background:#CD1F28}.btn-pinterest:hover{background:#C9121A}.btn-instagram{background:#4E3D35;border-color:#392C24}.btn-instagram:hover{background:#483931;border-color:#392C24}i.success{color:#65BD77}i.warning{color:#F39C12}i.info{color:#3498DB}i.danger{color:#E85344}.page{top:0}.col,.page,.rows{overflow:hidden}.scroll-x,.scroll-y{-webkit-overflow-scrolling:touch}.rows-content-header{left:0;right:0;position:absolute}.col{top:0}.scroll-x{overflow-x:auto}.scroll-y{overflow-y:auto}.fill,.pane{top:0;width:100%;height:100%}.pane{display:none}.left{width:225px;background:#1B1E24;margin-left:-15px;overflow:hidden;top:0;left:15px}.header.sidebar{background:#000;right:0;z-index:1;top:0}.header.sidebar .logo{padding:14px 20px;color:#fff}.header.sidebar .logo img{width:30px;margin-right:2px;border-radius:4px;margin-top:-4px}.header.sidebar .logo h1{font-size:16px;margin:0;padding:0;color:#fff;font-weight:600;letter-spacing:-1px}.header.sidebar .logo h1 a{color:#8B91A0}.header.sidebar .logo h1 a:hover{text-decoration:none;color:#fff}.sidebar-inner .media{padding:0 30px 15px;margin:20px -15px 0;border-bottom:1px solid #1F2429;color:#fff}.sidebar-inner .media a{cursor:pointer;font-size:11px;margin:0 5px 0 0;color:#8B91A0}.sidebar-inner .media a:hover{color:#fff;text-decoration:none}.sidebar-inner .media .pull-left{margin:3px 10px 0 3px}.sidebar-inner .media .media-object{width:57px}.sidebar-inner #search{padding:15px}.sidebar-inner #search form{position:relative}.sidebar-inner #search form i{color:#909090;position:absolute;top:10px;right:10px}.sidebar-inner #search .search{border-radius:0;border-color:#121515;background:#313940;padding-right:25px;font-size:12px;color:#909090}.sidebar-inner #search .search:focus{border-color:#121515;background:#fdfdfd;-webkit-box-shadow:inset 0 1px 1px rgba(2,0,0,.075),0 0 8px rgba(1,1,1,.3);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(1,1,1,.3)}#sidebar-menu,#sidebar-menu a,#sidebar-menu li,#sidebar-menu ul{margin:0;padding:0;border:0;list-style:none;font-weight:400;text-decoration:none;line-height:1;font-size:14px;position:relative}#sidebar-menu a{line-height:1.3}#sidebar-menu{width:100%;border-top:1px solid #1F2429}#sidebar-menu>ul>li>a{font-size:14px;display:block;color:#8B91A0;border-left:4px solid transparent;padding:10px 15px}#sidebar-menu ul ul a,.box-info,.box-info .nav-tabs>li>a,.gallery-wrap .column .inner,.gallery-wrap .column .inner .img-frame,.gallery-wrap .column-3 .inner,.gallery-wrap .column-3 .inner .img-frame,.gallery-wrap .column-4 .inner,.gallery-wrap .column-4 .inner .img-frame{-webkit-transition:All .4s ease;-moz-transition:All .4s ease;-o-transition:All .4s ease}#sidebar-menu>ul>li>a:hover{color:#fff;background:#121515;padding-left:20px;border-left-color:#3B9BED;text-decoration:none}#sidebar-menu>ul>li>a>i{margin-right:5px;color:#D3D6DB}#sidebar-menu>ul>li>a>i.fa.fa-angle-double-down.i-right{opacity:.45}#sidebar-menu>ul>li>a>i.i-right{margin:3px 0 0;float:right}#sidebar-menu>ul>li>a>i.yellow.i-right{color:#EBC85E}#sidebar-menu>ul>li.active>a{color:#fff;background:#121515}#sidebar-menu>ul>li.active>a:hover{color:#fff;background:#121515;padding:10px 15px}#sidebar-menu>ul>li.selected>a{color:#fff;background:#121515;padding-left:20px}#sidebar-menu>ul>li>a span.label{float:right}#sidebar-menu>ul>li>a span.label.span-left{float:none;margin-left:5px}#sidebar-menu span.cnt{position:absolute;top:8px;right:15px;padding:0;margin:0;background:0 0}#sidebar-menu ul ul{display:none;border-bottom:1px solid #121515;background:#22262E}#sidebar-menu ul ul.visible{display:block}#sidebar-menu ul ul li{border-top:0}#sidebar-menu ul ul a{padding:10px 25px;display:block;color:#D3D6DB;font-size:13px}#sidebar-menu ul ul a:hover,#sidebar-menu ul ul li.active a{color:#fff;background:#121515}#sidebar-menu ul ul a i{margin-right:5px}.footer.rows{height:50px;bottom:0;background:#0F1215;color:#E8EAED;padding:15px}.footer.rows .progress.progress-xs{margin:9px 70px 9px 0;overflow:visible;position:relative}.footer.rows .progress.progress-xs .progress-precentage{display:block;position:absolute;right:-20px;top:-12px;padding:7px 5px;border-radius:50%;background:#212121;color:#8B91A0}.footer.rows .progress.progress-xs .btn{display:block;position:absolute;right:-70px;top:-14px;background:#212121;color:#8B91A0;border:none}.right{left:0px;right:0;overflow:hidden;position:absolute;top:0}.header.rows,.header.rows-content-header{height:50px}.header.content{background:#FFF;border-bottom:1px solid #E5E9EC}.body.rows{top:50px;bottom:50px}.body.content.rows{top:50px;bottom:0;background:#E5E9EC;padding:20px;font-size:13px}.button-menu-mobile{display:none;position:absolute;left:0;top:0;z-index:99999;padding:10px 15px;height:50px;font-size:14px;background:#1B1E24;color:#A5B2BC;border:none}footer{padding:20px 0;font-size:12px;border-top:1px solid #B9C1CB;margin-top:40px}.page-heading{margin:0 0 25px;padding:5px 0}.page-heading h1{margin:0;padding:0;font-weight:400;font-size:24px}.box-info{position:relative;padding:15px;background:#fff;color:#294661;margin-bottom:20px}.box-info:hover{color:#393E48}.box-info:after,.box-info:before{display:table;content:" "}.box-info .des-thumbnail{padding:20px}.box-info .img-wrap{width:100%;height:auto;overflow:hidden}.box-info .img-wrap img{width:100%}.box-info .icon-box{width:65px;font-size:30px;display:block;float:left}.box-info h2{padding:0 15px 15px;margin:5px -15px 20px;font-weight:400;font-size:16px;display:block;color:#294661;border-bottom:1px solid #ddd}.box-info h2.no-style{padding:0;margin:20px 0 10px;font-size:30px;border-bottom:none}.box-info.box-messages h2{border-bottom:none}.box-info .statistic-chart{padding:0 0 30px}.box-info.full{padding:0}.box-info.full .box-footer{padding:20px 20px 15px}.box-info.full .box-footer a,.box-info.full .box-footer a:hover{color:#1B1E24;text-decoration:none}.box-info .nav-tabs{background:#1B1E24}.box-info .nav-tabs>li>a{line-height:1.428571429;font-size:14px;border-top:none;border-right:none;border-left:none;border-bottom:none;border-radius:0;margin:0;color:#8B91A0}.box-info .nav-tabs>li>a i{color:#fff}.box-info .media-list{margin-top:30px}.box-info .media-list a{color:#1B1E24}.box-info .media-list a:hover{color:#212121;text-decoration:none}.box-info .media-list .media{padding:5px 20px;border-bottom:1px solid #eaeaea}.box-info .media-list li:last-child.media{border-bottom:none}.box-info .media-list .media .media-heading a{font-size:14px;font-weight:600;color:#1B1E24;margin-right:5px}.box-info .media-list .media .media-heading small{color:#65BD77;font-size:11px}.box-info .media-list .media p{color:#909090}.box-info .media-list .media .media-object{width:50px}.box-info .nav-tabs>li.active>a,.box-info .nav-tabs>li.active>a:focus,.box-info .nav-tabs>li.active>a:hover{cursor:default;border-top:none;border-right:none;border-left:none;border-bottom:none;background-color:#fff;color:#1B1E24}.box-info .nav-tabs>li.active>a i,.box-info .nav-tabs>li.active>a:focus i,.box-info .nav-tabs>li.active>a:hover i{color:#212121}.box-info .additional-box{position:absolute;top:10px;right:15px;z-index:99999}.box-info .additional-btn{position:absolute;top:17px;right:15px;z-index:99991}.box-info .btn-group{z-index:9999}.box-info table .btn-group{z-index:1}.box-info .additional-btn .dropdown-menu{z-index:999999}.box-info .additional-btn a.additional-icon{color:#909090;margin-left:10px;cursor:pointer}.box-info .additional-btn a:hover.additional-icon{text-decoration:none}.box-info.success{background:#65BD77;color:#fff}.box-info.success h2{color:#2C7439;border-bottom-color:#3B934B}.box-info.success:hover{color:#DEFFE5}.box-info.success .additional-btn a.additional-icon{color:#3B934B}.box-info.success .additional-btn a:hover.additional-icon{color:#2C7439}.box-info.success .text-box h3,.box-info.success i.success{color:#215F2E}.box-info.success .progress-bar-success{background-color:#215F2E}.box-info.danger{background:#D9534F;color:#fff}.box-info.danger h2{color:#791C1A;border-bottom-color:#791C1A}.box-info.danger:hover{color:#fff}.box-info.danger .additional-btn a.additional-icon,.box-info.danger .additional-btn a:hover.additional-icon,.box-info.danger .text-box h3,.box-info.danger i.danger{color:#791C1A}.box-info.danger .progress-bar-danger{background-color:#791C1A}.box-info.info{background:#4393D8;color:#fff}.box-info.info h2{color:#15558B;border-bottom-color:#15558B}.box-info.info:hover{color:#DEFFE5}.box-info.info .additional-btn a.additional-icon,.box-info.info .additional-btn a:hover.additional-icon,.box-info.info .text-box h3,.box-info.info i.info{color:#15558B}.box-info.info .progress-bar-info{background-color:#15558B}.box-info.warning{background:#F7CB17;color:#fff}.box-info.warning h2{color:#9D5D03;border-bottom-color:#9D5D03}.box-info.warning:hover{color:#DEFFE5}.box-info.warning .additional-btn a.additional-icon,.box-info.warning .additional-btn a:hover.additional-icon,.box-info.warning .text-box h3,.box-info.warning i.warning{color:#9D5D03}.box-info.warning .progress-bar-warning{background-color:#9D5D03}.box-info .additional{padding:0 15px;background:#fff;color:#909090;margin:15px -15px -15px}.box-info .additional .list-box-info{margin:0 -15px}.box-info .additional .list-box-info ul{list-style:none;margin:0;padding:0}.box-info .additional .list-box-info ul li{background:#fff;padding:15px 20px;color:#909090;border-bottom:1px solid #ddd}.box-info .additional .list-box-info ul li span.label{float:right;font-size:13px}.box-info .additional .list-box-info ul li:last-child{border-bottom:1px solid #fff}.box-info.full h2{padding:15px;margin:5px 0 20px}.box-info table{margin:0}.box-info table tr td,.box-info table tr th{padding-left:15px;padding-right:15px}.box-info .text-box h3{padding:0;margin:5px 0;font-weight:600;font-size:20px;display:block;color:#4C5264}.box-info .text-box p{font-size:14px}p.quick-post{margin:10px 5px}p.quick-post i{color:#909090;margin:5px;cursor:pointer}p.quick-post.message i{margin:0 2px}p.quick-post.message{margin:3px 0;padding:0;text-align:right}.chat-widget{height:300px;margin-bottom:20px}form.input-chat{margin-top:20px}.chat-widget .media-list{margin:0}.chat-widget .media-list .media{border-bottom:none}.chat-widget .media-list .media .media-object{width:50px;padding:4px;border:1px solid #eaeaea}.chat-widget .media-list .media .media-body{background:#f7f7f7;border-radius:3px;padding:10px;color:#677179}.chat-widget .media-list .media .media-body p.time{text-align:right;color:#909090;font-size:11px;font-style:italic}.chat-widget .media-list .media .media-body.success{background:#EDFFED}.chat-widget .media-list .media .media-body.warning{background:#FFFCE0}.chat-widget .media-list .media .media-body.danger{background:#FFE8E8}.chat-widget .media-list .media .media-body.info{background:#E5F5FF}.the-notes{padding:15px 15px 15px 30px;border-left:4px solid #909090;margin-bottom:20px}.the-notes.default{background:#fff}.the-notes.success{background:#fff;border-left-color:#65BD77}.the-notes.warning{background:#fff;border-left-color:#F7CB17}.the-notes.danger{background:#fff;border-left-color:#D9534F}.the-notes.info{background:#fff;border-left-color:#4393D8}.the-notes.success h4{color:#65BD77}.the-notes.warning h4{color:#F7CB17}.the-notes.danger h4{color:#D9534F}.the-notes.inf h4{color:#4393D8}.selectpicker{border-radius:0;font-size:13px}.easyWizardSteps{list-style:none;width:100%;overflow:hidden;margin:0 0 20px;padding:0;border-bottom:1px solid #ccc;background:#fafafa}.easyWizardSteps li{font-size:18px;display:inline-block;padding:10px 20px;color:#B0B1B3;margin-right:0}.easyWizardSteps li span{font-size:20px;padding:2px 10px;border-radius:50%;margin-top:-5px}.easyWizardSteps li.current span{background:#65BD77;color:#fff}.easyWizardSteps li.current{color:#2C7439;background:#fff}.easyWizardButtons{overflow:hidden;padding:10px}.easyWizardButtons .submit,.easyWizardButtons button{cursor:pointer}.easyWizardButtons .prev{float:left}.easyWizardButtons .next,.easyWizardButtons .submit{float:right}.notes{padding:15px;border:1px dashed #ddd}section.step{padding:0 30px}.gallery-wrap{margin:10px -10px}.gallery-wrap:after,.gallery-wrap:before{display:table;content:" "}.gallery-wrap .column{float:left;width:20%;margin:0;padding:0}.gallery-wrap .column-4{float:left;width:25%;margin:0;padding:0}.gallery-wrap .column-3{float:left;width:33.33333333333333%;margin:0;padding:0}.gallery-wrap .column .inner,.gallery-wrap .column-3 .inner,.gallery-wrap .column-4 .inner{margin:10px;position:relative;overflow:hidden}.gallery-wrap .column .inner:hover,.gallery-wrap .column-3 .inner:hover,.gallery-wrap .column-4 .inner:hover{-webkit-box-shadow:0 3px 15px 0 rgba(0,0,0,.5);-moz-box-shadow:0 3px 15px 0 rgba(0,0,0,.5);box-shadow:0 3px 15px 0 rgba(0,0,0,.5)}.gallery-wrap .column .inner a .img-wrap,.gallery-wrap .column-3 .inner a .img-wrap,.gallery-wrap .column-4 .inner a .img-wrap{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.gallery-wrap .column .inner .img-wrap{height:100px;overflow:hidden;background:#ddd}.gallery-wrap .column-3 .inner .img-wrap{height:200px;overflow:hidden;background:#ddd}.gallery-wrap .column-4 .inner .img-wrap{height:150px;overflow:hidden;background:#ddd}.gallery-wrap .column .inner .img-frame,.gallery-wrap .column-3 .inner .img-frame,.gallery-wrap .column-4 .inner .img-frame{padding:5px;background:#fff;display:block;position:relative}.gallery-wrap .column .inner:hover .img-frame,.gallery-wrap .column-3 .inner:hover .img-frame,.gallery-wrap .column-4 .inner:hover .img-frame{background:#fff}.gallery-wrap .column .inner:hover .img-frame.success,.gallery-wrap .column-3 .inner:hover .img-frame.success,.gallery-wrap .column-4 .inner:hover .img-frame.success{background:#65BD77}.gallery-wrap .column .inner:hover .img-frame.warning,.gallery-wrap .column-3 .inner:hover .img-frame.warning,.gallery-wrap .column-4 .inner:hover .img-frame.warning{background:#EBC85E}.gallery-wrap .column .inner:hover .img-frame.danger,.gallery-wrap .column-3 .inner:hover .img-frame.danger,.gallery-wrap .column-4 .inner:hover .img-frame.danger{background:#D73D3D}.gallery-wrap .column .inner:hover .img-frame.info,.gallery-wrap .column-3 .inner:hover .img-frame.info,.gallery-wrap .column-4 .inner:hover .img-frame.info{background:#67B0D1}.gallery-wrap .column .inner .img-wrap img,.gallery-wrap .column-3 .inner .img-wrap img,.gallery-wrap .column-4 .inner .img-wrap img{width:100%}.gallery-wrap .column .inner .caption-hover,.gallery-wrap .column-3 .inner .caption-hover,.gallery-wrap .column-4 .inner .caption-hover{position:absolute;bottom:-100px;left:0;right:0;text-align:center;color:#909090;padding:10px;background:#fff;-webkit-transition:All .4s ease;-moz-transition:All .4s ease;-o-transition:All .4s ease}.gallery-wrap .column .inner .caption-hover.success,.gallery-wrap .column-3 .inner .caption-hover.success,.gallery-wrap .column-4 .inner .caption-hover.success{color:#2C7439;background:#65BD77}.gallery-wrap .column .inner .caption-hover.danger,.gallery-wrap .column-3 .inner .caption-hover.danger,.gallery-wrap .column-4 .inner .caption-hover.danger{color:#790D0D;background:#D73D3D}.gallery-wrap .column .inner .caption-hover.warning,.gallery-wrap .column-3 .inner .caption-hover.warning,.gallery-wrap .column-4 .inner .caption-hover.warning{color:#B27C05;background:#EBC85E}.gallery-wrap .column .inner .caption-hover.info,.gallery-wrap .column-3 .inner .caption-hover.info,.gallery-wrap .column-4 .inner .caption-hover.info{color:#0A487C;background:#67B0D1}.gallery-wrap .column .inner:hover .caption-hover,.gallery-wrap .column-3 .inner:hover .caption-hover,.gallery-wrap .column-4 .inner:hover .caption-hover{bottom:0}.gallery-wrap .column .inner .caption-static,.gallery-wrap .column-3 .inner .caption-static,.gallery-wrap .column-4 .inner .caption-static{position:relative;text-align:center;color:#909090;padding:10px;background:#fff;margin:0}.gallery-wrap .column .inner a:hover,.gallery-wrap .column-3 .inner a:hover,.gallery-wrap .column-4 .inner a:hover{text-decoration:none}.gallery-wrap .column .inner .caption-static.success,.gallery-wrap .column-3 .inner .caption-static.success,.gallery-wrap .column-4 .inner .caption-static.success{color:#2C7439;background:#65BD77}.gallery-wrap .column .inner .caption-static.danger,.gallery-wrap .column-3 .inner .caption-static.danger,.gallery-wrap .column-4 .inner .caption-static.danger{color:#790D0D;background:#D73D3D}.gallery-wrap .column .inner .caption-static.warning,.gallery-wrap .column-3 .inner .caption-static.warning,.gallery-wrap .column-4 .inner .caption-static.warning{color:#B27C05;background:#EBC85E}.gallery-wrap .column .inner .caption-static.info,.gallery-wrap .column-3 .inner .caption-static.info,.gallery-wrap .column-4 .inner .caption-static.info{color:#0A487C;background:#67B0D1}.mfp-fade.mfp-bg{opacity:0;-webkit-transition:all .4s ease-out;-moz-transition:all .4s ease-out;transition:all .4s ease-out}.la-pricing-table .la-col-4,.mfp-fade.mfp-wrap .mfp-content{-webkit-transition:all .4s ease-out;-moz-transition:all .4s ease-out}.mfp-fade.mfp-bg.mfp-ready{opacity:.8}.mfp-fade.mfp-bg.mfp-removing{opacity:0}.mfp-fade.mfp-wrap .mfp-content{opacity:0;transition:all .4s ease-out}.mfp-fade.mfp-wrap.mfp-ready .mfp-content{opacity:1}.mfp-fade.mfp-wrap.mfp-removing .mfp-content{opacity:0}.full-content-center{width:100%;max-width:500px;margin:5% auto;text-align:center}.full-content-center img.logo-login{width:70px;margin-right:10px;background:#272C31}body.full-content{background:#F2EFEE;padding-top:0}.full-content-center h1{font-size:150px;font-weight:600}.login-wrap{margin:20px 10%;text-align:left}.login-wrap i{margin-right:5px}.login-wrap .checkbox{margin-left:0;padding-left:0}.login-wrap .btn-block{margin:5px 0}.login-wrap .login-input{position:relative}.login-wrap .login-input .text-input{padding-left:30px}.login-wrap .login-input i.overlay{position:absolute;left:10px;top:10px;color:#aaa}.ava-lock-screen img{width:100px;margin:10px 0 0 10px}.box-info .media-list.search-result .media a{color:#46C45F}.box-info .media-list.search-result .media .media-heading a{color:#1279D1}.box-info .media-list.search-result .media .media-heading span{font-size:12px;font-weight:400;padding:3px 5px}.box-info .media-list.search-result .media .media-object{width:100px}ul.faq{list-style:none;padding-left:10px;margin:20px 0 50px}ul.faq li i{margin-right:5px}ul.faq li{margin:10px 0}ul.faq li a.faq-question{cursor:pointer;display:block;font-size:14px}ul.faq li .faq-answer{margin:10px 15px}table.pricing-table-style-1{text-align:center;background:#fff}table.pricing-table-style-1 thead tr th{padding:15px;font-size:18px;font-weight:600;text-align:center}table.pricing-table-style-1 thead tr th.best-choice{color:#A2A7B7;background:#0F1215;border-bottom-color:#000}table.pricing-table-style-1 tbody tr td.best-choice{background:#1B1E24;font-weight:600;font-size:15px;color:#fafafa;border-top-color:#000}table.pricing-table-style-1 tbody tr td.td-success{background:#65BD77;font-weight:600;color:#2C7439;text-align:right;border-top-color:#55AD67}table.pricing-table-style-1 thead tr th.th-success{color:#65BD77;background:#55AD67;border-bottom-color:#55AD67}.la-pricing-table{margin:30px 0;text-align:center}.la-pricing-table:after,.la-pricing-table:before{display:table;content:" "}.la-pricing-table .la-col-4{float:left;margin:20px 0;padding:0;width:25%;border:3px solid transparent;transition:all .4s ease-out;position:relative;overflow:hidden}.la-pricing-table .la-col-4:hover{border-color:#434D58}.la-pricing-table .la-col-4 i.bg-big{position:absolute;font-size:210px;opacity:.05;top:20%;left:0;right:0;-webkit-transition:all .4s ease-out;-moz-transition:all .4s ease-out;transition:all .4s ease-out}.la-pricing-table .la-col-4:hover i.bg-big{-webkit-transform:scale(2);-moz-transform:scale(2);-o-transform:scale(2);-ms-transform:scale(2);transform:scale(2);opacity:0}.la-pricing-table .la-col-4 ul{list-style:none;padding:0;margin:0;background:#fff}.la-pricing-table .la-col-4 ul li{padding:10px 20px;display:block;font-size:13px}.la-pricing-table .la-col-4 ul li.la-package{font-size:24px;font-weight:600;background:#121515;color:#fff}.la-pricing-table .la-col-4 ul li.la-price{font-size:18px;font-weight:600;color:#8E98AD;background:#434D58;margin:0 20px}.bill-to,.company-column{padding:15px;margin-bottom:20px}.la-pricing-table .la-col-4 ul li.la-price i{font-size:13px}.la-pricing-table .la-col-4:hover.success{border-color:#2C7439}.la-pricing-table .la-col-4.success ul{background:#65BD77}.la-pricing-table .la-col-4.success ul li{color:#fff}.la-pricing-table .la-col-4.success ul li.la-package{color:#BCF5C6;background:#2C7439}.la-pricing-table .la-col-4.success ul li.la-price{color:#fff;background:#3E984D}.la-pricing-table .la-col-4:hover.danger{border-color:#B42424}.la-pricing-table .la-col-4.danger ul{background:#D73D3D}.la-pricing-table .la-col-4.danger ul li{color:#fff}.la-pricing-table .la-col-4.danger ul li.la-package{color:#FFB4B4;background:#B42424}.la-pricing-table .la-col-4.danger ul li.la-price{color:#fff;background:#C42E2E}.la-pricing-table .la-col-4:hover.info{border-color:#1F6AAA}.la-pricing-table .la-col-4.info ul{background:#529DDE}.la-pricing-table .la-col-4.info ul li{color:#fff}.la-pricing-table .la-col-4.info ul li.la-package{color:#C6E5FF;background:#1F6AAA}.la-pricing-table .la-col-4.info ul li.la-price{color:#fff;background:#2E71AD}.la-pricing-table .la-col-4:hover.warning{border-color:#F08600}.la-pricing-table .la-col-4.warning ul{background:#EBC85E}.la-pricing-table .la-col-4.warning ul li{color:#fff}.la-pricing-table .la-col-4.warning ul li.la-package{color:#FFF5C9;background:#F08600}.la-pricing-table .la-col-4.warning ul li.la-price{color:#fff;background:#FA0}#social,.bill-to{background:#E5E9EC}.icon-print{position:absolute;top:10px;right:20px;font-size:22px}.icon-print a{color:#909090}.icon-print a:hover{color:#212121;text-decoration:none}.company-column{border:1px dashed #ddd}.user-profile-sidebar{margin:0 0 20px}.user-profile-sidebar .user-identity{margin:20px 0 0}.user-profile-sidebar img{width:90px}.account-status-data{text-align:center;padding:10px 0;border-top:1px dashed #ddd;border-bottom:1px dashed #ddd;margin:10px 0 20px}.account-status-data h5{font-size:11px;line-height:150%;color:#909090}.user-button{margin:15px 0}.user-button .btn{margin:5px 0}#social{padding:10px;text-align:center}#social a:hover{text-decoration:none}.fa-circle.facebook{color:#5471AE}.fa-circle.twitter{color:#4EC6F6}.fa-circle.gplus{color:#E24E3E}.fa-circle.tumblr{color:#4D77A3}.fa-circle.linkedin{color:#3097CE}.user-profile-content{margin:15px 15px}.icon-showcase i{margin-right:5px}.bs-glyphicons{padding-left:0;padding-bottom:1px;margin-bottom:20px;list-style:none;overflow:hidden}.bs-glyphicons li{float:left;width:25%;height:115px;padding:10px;margin:0 -1px -1px 0;font-size:12px;line-height:1.4;text-align:center;border:1px solid #ddd}.bs-glyphicons .glyphicon{margin-top:5px;margin-bottom:10px;font-size:24px}.bs-glyphicons .glyphicon-class{display:block;text-align:center;word-wrap:break-word}.bs-glyphicons li:hover{background-color:rgba(86,61,124,.1)}@media (min-width:768px){.bs-glyphicons li{width:12.5%}}.menu-message{margin:20px 0}.table-message tr.unread{font-weight:600;background:#FFFCE0}.table-hover>tbody>tr:hover.unread>td{background:#FCF5BF}.table-message>tbody>tr>td>a{display:block;color:#294661}.table-message>tbody>tr>td>a:hover{text-decoration:none}.data-table-toolbar{margin:15px 0;padding:0 15px}.data-table-toolbar span.paging-status{font-weight:700;margin:10px 10px 0 0}.input-message{margin-top:-1px}hr.dashed{height:1px;background:0 0;border-top:none;border-bottom:1px dashed #ddd}.toolbar-btn-action{text-align:right}.pricing-tables{text-align:center;position:relative;margin:30px 0;color:#353535;-webkit-transition:All .25s ease;-moz-transition:All .25s ease;-o-transition:All .25s ease}.pricing-tables:hover{box-shadow:0 0 0 5px rgba(255,255,255,1)}.pricing-tables .the-box{margin:0;background:#fff}.pricing-tables .header{padding:5px 0 70px;background:#D6D6D6}.pricing-tables .circle-price-wrap{width:150px;height:150px;background:#fff;border-radius:50%;position:absolute;top:60px;left:50%;margin-left:-75px;border:3px solid #D6D6D6}.pricing-tables .circle-price-wrap h2{font-size:40px;padding:15px 0}.pricing-tables .circle-price-wrap h2 small{font-size:14px;color:#909090;display:block}.pricing-tables table.table-inner{margin:100px 0 0;padding:0}.pricing-tables table.table-inner>tbody:first-child>tr:first-child>td{border-top:0}.pricing-tables table.table-inner>tbody>tr>td,.pricing-tables table.table-inner>tbody>tr>th,.pricing-tables table.table-inner>tfoot>tr>td,.pricing-tables table.table-inner>tfoot>tr>th,.pricing-tables table.table-inner>thead>tr>td,.pricing-tables table.table-inner>thead>tr>th{padding:15px;font-size:16px;vertical-align:middle;border-top:1px dotted #ddd}.pricing-tables:hover.best-choice{box-shadow:0 0 0 5px rgba(62,152,77,1)}.pricing-tables.best-choice .header{background:#3E984D;color:#fff}.pricing-tables.best-choice .circle-price-wrap{border:3px solid #3E984D}.pricing-tables.best-choice .circle-price-wrap h2,.pricing-tables.best-choice .circle-price-wrap h2 small{color:#3E984D}.pricing-tables.best-choice table.table-inner{margin:100px 0 0;padding:0}.pricing-tables.best-choice table.table-inner>tbody:first-child>tr:first-child>td{border-top:0}.container .jumbotron,.jumbotron{border-radius:0}.jumbotron.bg-white{background:#fff}.jumbotron.sm{padding:20px;margin-bottom:20px;color:inherit}.jumbotron.sm p{margin-bottom:20px;font-size:16px}.jumbotron.xs{padding:15px;margin-bottom:15px;color:inherit}.jumbotron.xs p{margin-bottom:15px;font-size:14px}.jumbotron.dashed{background:#fff;border:1px dashed #ddd}.jumbotron.rounded{border-radius:15px}@media screen and (min-width:768px){.jumbotron.sm{padding-top:36px;padding-bottom:36x}.jumbotron.sm .h1,.jumbotron.sm h1{font-size:40px;margin-top:0}.jumbotron.xs{padding-top:24px;padding-bottom:24x}.jumbotron.xs .h1,.jumbotron.xs h1{font-size:30px;margin-top:0}}.user-profile-2{text-align:center;position:relative}.user-profile-2 .header-cover{position:absolute;left:0;top:0;right:0;height:130px;overflow:hidden;z-index:1}.user-profile-2 .header-cover.primary{background-color:#428BCA}.user-profile-2 .header-cover img{width:100%}.user-profile-2 .user-profile-inner{z-index:2;position:relative}.user-profile-2 .user-profile-inner h4.white{color:#fff}.user-profile-2 .user-profile-inner img.profile-avatar{box-shadow:0 0 0 5px rgba(255,255,255,1);-moz-box-shadow:0 0 0 5px rgba(255,255,255,1);-webkit-box-shadow:0 0 0 5px rgba(255,255,255,1);border:none}.user-profile-2 .avatar-wrap{margin:15px auto;border:2px solid rgba(1,1,1,.4);padding:3px;border-radius:50%;width:100px;height:100px}.user-profile-2 .avatar-wrap img.profile-avatar{display:block;width:90px;border-radius:50%}.user-profile-2 .list-group{text-align:left;margin-top:20px}.the-timeline{margin-bottom:40px}.the-timeline .post-to-timeline{margin:15px 0}.the-timeline .post-to-timeline textarea{height:50px;resize:none;margin-bottom:10px}.the-timeline ul{padding:0;list-style:none;margin:0 15px 0 30px;border-left:2px solid #ddd}.the-timeline ul li{padding:5px 15px;display:block;margin:20px 0 20px 35px;background:#E5E9EC;position:relative;border-left:4px solid transparent}.the-timeline ul li:hover{border-left-color:#1B1E24}.the-timeline ul li p{margin:0;padding:0}.the-timeline ul li .the-date{position:absolute;left:-64px;top:0;width:50px;height:50px;background:#1B1E24;border-radius:50%;text-align:center;line-height:130%}.btn-dribbble.active,.btn-dribbble:active,.btn-dropbox.active,.btn-dropbox:active,.btn-facebook.active,.btn-facebook:active,.btn-flickr.active,.btn-flickr:active,.btn-foursquare.active,.btn-foursquare:active,.btn-github.active,.btn-github:active,.btn-google-plus.active,.btn-google-plus:active,.btn-linkedin.active,.btn-linkedin:active,.btn-pinterest.active,.btn-pinterest:active,.btn-tumblr.active,.btn-tumblr:active,.btn-twitter.active,.btn-twitter:active,.btn-vimeo.active,.btn-vimeo:active,.open .dropdown-toggle.btn-dribbble,.open .dropdown-toggle.btn-dropbox,.open .dropdown-toggle.btn-facebook,.open .dropdown-toggle.btn-flickr,.open .dropdown-toggle.btn-foursquare,.open .dropdown-toggle.btn-github,.open .dropdown-toggle.btn-google-plus,.open .dropdown-toggle.btn-linkedin,.open .dropdown-toggle.btn-pinterest,.open .dropdown-toggle.btn-tumblr,.open .dropdown-toggle.btn-twitter,.open .dropdown-toggle.btn-vimeo{background-image:none}.videoWrapper iframe,iframe{width:100%;border:none}.the-timeline ul li .the-date span{color:#fff;font-size:18px;display:block;margin-top:8px}.the-timeline ul li .the-date small{color:#fff;font-size:12px;display:block}.iconExamples .example:after,.iconExamples .example:before,.iconExamples:after,.iconExamples:before,.weatherseparator:after,.weatherseparator:before{content:" ";display:table}.videoWrapper{position:relative;padding-bottom:56.25%;padding-top:25px;height:0;margin-bottom:15px}.videoWrapper iframe{position:absolute;top:0;left:0;height:100%}.weather-widget{position:relative}.weather-widget i{margin-right:5px}.weather-widget .overlay-weather-info{position:absolute;z-index:1;top:15px;left:15px;right:15px}.weather-widget .overlay-weather-info .weather-info-city{color:#fff;margin:20px 0}.weather-widget .overlay-weather-info .weather-info-city h4{font-size:16px;font-weight:600}.weather-widget .overlay-weather-info h4{color:#fff;font-weight:400}.weather-widget .overlay-weather-info .weather-info-city h1{font-weight:600;padding:0;margin:0}.weather-widget .overlay-weather-info i.weather-icon{font-size:70px}.btn-facebook{background-color:#4B66A0;border-color:#4B66A0;color:#fff}.btn-facebook.active,.btn-facebook:active,.btn-facebook:focus,.btn-facebook:hover,.open .dropdown-toggle.btn-facebook{background-color:#3B5A98;border-color:#3B5A98;color:#fff}.btn-facebook.disabled,.btn-facebook.disabled.active,.btn-facebook.disabled:active,.btn-facebook.disabled:focus,.btn-facebook.disabled:hover,.btn-facebook[disabled],.btn-facebook[disabled].active,.btn-facebook[disabled]:active,.btn-facebook[disabled]:focus,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook,fieldset[disabled] .btn-facebook.active,fieldset[disabled] .btn-facebook:active,fieldset[disabled] .btn-facebook:focus,fieldset[disabled] .btn-facebook:hover{background-color:#6C89C1;border-color:#6C89C1;color:#fff}.btn-facebook .badge{color:#3B5A98}.btn-twitter{background-color:#55ACEE;border-color:#55ACEE;color:#fff}.btn-twitter.active,.btn-twitter:active,.btn-twitter:focus,.btn-twitter:hover,.open .dropdown-toggle.btn-twitter{background-color:#3490D3;border-color:#3490D3;color:#fff}.btn-twitter.disabled,.btn-twitter.disabled.active,.btn-twitter.disabled:active,.btn-twitter.disabled:focus,.btn-twitter.disabled:hover,.btn-twitter[disabled],.btn-twitter[disabled].active,.btn-twitter[disabled]:active,.btn-twitter[disabled]:focus,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter,fieldset[disabled] .btn-twitter.active,fieldset[disabled] .btn-twitter:active,fieldset[disabled] .btn-twitter:focus,fieldset[disabled] .btn-twitter:hover{background-color:#7CC1F5;border-color:#7CC1F5;color:#fff}.btn-twitter .badge{color:#3490D3}.btn-google-plus{background-color:#D24333;border-color:#D24333;color:#fff}.btn-google-plus.active,.btn-google-plus:active,.btn-google-plus:focus,.btn-google-plus:hover,.open .dropdown-toggle.btn-google-plus{background-color:#BC2C1F;border-color:#BC2C1F;color:#fff}.btn-google-plus.disabled,.btn-google-plus.disabled.active,.btn-google-plus.disabled:active,.btn-google-plus.disabled:focus,.btn-google-plus.disabled:hover,.btn-google-plus[disabled],.btn-google-plus[disabled].active,.btn-google-plus[disabled]:active,.btn-google-plus[disabled]:focus,.btn-google-plus[disabled]:hover,fieldset[disabled] .btn-google-plus,fieldset[disabled] .btn-google-plus.active,fieldset[disabled] .btn-google-plus:active,fieldset[disabled] .btn-google-plus:focus,fieldset[disabled] .btn-google-plus:hover{background-color:#F0675A;border-color:#F0675A;color:#fff}.btn-google-plus .badge{color:#BC2C1F}.btn-dribbble{background-color:#E04C86;border-color:#E04C86;color:#fff}.btn-dribbble.active,.btn-dribbble:active,.btn-dribbble:focus,.btn-dribbble:hover,.open .dropdown-toggle.btn-dribbble{background-color:#D33471;border-color:#D33471;color:#fff}.btn-dribbble.disabled,.btn-dribbble.disabled.active,.btn-dribbble.disabled:active,.btn-dribbble.disabled:focus,.btn-dribbble.disabled:hover,.btn-dribbble[disabled],.btn-dribbble[disabled].active,.btn-dribbble[disabled]:active,.btn-dribbble[disabled]:focus,.btn-dribbble[disabled]:hover,fieldset[disabled] .btn-dribbble,fieldset[disabled] .btn-dribbble.active,fieldset[disabled] .btn-dribbble:active,fieldset[disabled] .btn-dribbble:focus,fieldset[disabled] .btn-dribbble:hover{background-color:#F571A5;border-color:#F571A5;color:#fff}.btn-dribbble .badge{color:#D33471}.btn-flickr{background-color:#0162DB;border-color:#0162DB;color:#fff}.btn-flickr.active,.btn-flickr:active,.btn-flickr:focus,.btn-flickr:hover,.open .dropdown-toggle.btn-flickr{background-color:#0555BF;border-color:#0555BF;color:#fff}.btn-flickr.disabled,.btn-flickr.disabled.active,.btn-flickr.disabled:active,.btn-flickr.disabled:focus,.btn-flickr.disabled:hover,.btn-flickr[disabled],.btn-flickr[disabled].active,.btn-flickr[disabled]:active,.btn-flickr[disabled]:focus,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr,fieldset[disabled] .btn-flickr.active,fieldset[disabled] .btn-flickr:active,fieldset[disabled] .btn-flickr:focus,fieldset[disabled] .btn-flickr:hover{background-color:#2983F7;border-color:#2983F7;color:#fff}.btn-flickr .badge{color:#0555BF}.btn-pinterest{background-color:#CC2127;border-color:#CC2127;color:#fff}.btn-pinterest.active,.btn-pinterest:active,.btn-pinterest:focus,.btn-pinterest:hover,.open .dropdown-toggle.btn-pinterest{background-color:#B70F12;border-color:#B70F12;color:#fff}.btn-pinterest.disabled,.btn-pinterest.disabled.active,.btn-pinterest.disabled:active,.btn-pinterest.disabled:focus,.btn-pinterest.disabled:hover,.btn-pinterest[disabled],.btn-pinterest[disabled].active,.btn-pinterest[disabled]:active,.btn-pinterest[disabled]:focus,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest,fieldset[disabled] .btn-pinterest.active,fieldset[disabled] .btn-pinterest:active,fieldset[disabled] .btn-pinterest:focus,fieldset[disabled] .btn-pinterest:hover{background-color:#E53B3E;border-color:#E53B3E;color:#fff}.btn-pinterest .badge{color:#B70F12}.btn-youtube{background-color:#D92623;border-color:#D92623;color:#fff}.btn-youtube.active,.btn-youtube:active,.btn-youtube:focus,.btn-youtube:hover,.open .dropdown-toggle.btn-youtube{background-color:#C91212;border-color:#C91212;color:#fff}.btn-youtube.active,.btn-youtube:active,.open .dropdown-toggle.btn-youtube{background-image:none}.btn-youtube.disabled,.btn-youtube.disabled.active,.btn-youtube.disabled:active,.btn-youtube.disabled:focus,.btn-youtube.disabled:hover,.btn-youtube[disabled],.btn-youtube[disabled].active,.btn-youtube[disabled]:active,.btn-youtube[disabled]:focus,.btn-youtube[disabled]:hover,fieldset[disabled] .btn-youtube,fieldset[disabled] .btn-youtube.active,fieldset[disabled] .btn-youtube:active,fieldset[disabled] .btn-youtube:focus,fieldset[disabled] .btn-youtube:hover{background-color:#F04343;border-color:#F04343;color:#fff}.btn-youtube .badge{color:#C91212}.btn-dropbox{background-color:#1473C3;border-color:#1473C3;color:#fff}.btn-dropbox.active,.btn-dropbox:active,.btn-dropbox:focus,.btn-dropbox:hover,.open .dropdown-toggle.btn-dropbox{background-color:#0864B2;border-color:#0864B2;color:#fff}.btn-dropbox.disabled,.btn-dropbox.disabled.active,.btn-dropbox.disabled:active,.btn-dropbox.disabled:focus,.btn-dropbox.disabled:hover,.btn-dropbox[disabled],.btn-dropbox[disabled].active,.btn-dropbox[disabled]:active,.btn-dropbox[disabled]:focus,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox,fieldset[disabled] .btn-dropbox.active,fieldset[disabled] .btn-dropbox:active,fieldset[disabled] .btn-dropbox:focus,fieldset[disabled] .btn-dropbox:hover{background-color:#2E90E3;border-color:#2E90E3;color:#fff}.btn-dropbox .badge{color:#0864B2}.btn-foursquare{background-color:#0086BE;border-color:#0086BE;color:#fff}.btn-foursquare.active,.btn-foursquare:active,.btn-foursquare:focus,.btn-foursquare:hover,.open .dropdown-toggle.btn-foursquare{background-color:#0571A0;border-color:#0571A0;color:#fff}.btn-foursquare.disabled,.btn-foursquare.disabled.active,.btn-foursquare.disabled:active,.btn-foursquare.disabled:focus,.btn-foursquare.disabled:hover,.btn-foursquare[disabled],.btn-foursquare[disabled].active,.btn-foursquare[disabled]:active,.btn-foursquare[disabled]:focus,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare,fieldset[disabled] .btn-foursquare.active,fieldset[disabled] .btn-foursquare:active,fieldset[disabled] .btn-foursquare:focus,fieldset[disabled] .btn-foursquare:hover{background-color:#2CA0CE;border-color:#2CA0CE;color:#fff}.btn-foursquare .badge{color:#0571A0}.btn-github{background-color:#3B3B3B;border-color:#3B3B3B;color:#fff}.btn-github.active,.btn-github:active,.btn-github:focus,.btn-github:hover,.open .dropdown-toggle.btn-github{background-color:#212121;border-color:#212121;color:#fff}.btn-github.disabled,.btn-github.disabled.active,.btn-github.disabled:active,.btn-github.disabled:focus,.btn-github.disabled:hover,.btn-github[disabled],.btn-github[disabled].active,.btn-github[disabled]:active,.btn-github[disabled]:focus,.btn-github[disabled]:hover,fieldset[disabled] .btn-github,fieldset[disabled] .btn-github.active,fieldset[disabled] .btn-github:active,fieldset[disabled] .btn-github:focus,fieldset[disabled] .btn-github:hover{background-color:#5F5F5F;border-color:#5F5F5F;color:#fff}.btn-github .badge{color:#212121}.btn-linkedin{background-color:#0085AE;border-color:#0085AE;color:#fff}.btn-linkedin.active,.btn-linkedin:active,.btn-linkedin:focus,.btn-linkedin:hover,.open .dropdown-toggle.btn-linkedin{background-color:#036C8E;border-color:#036C8E;color:#fff}.btn-linkedin.disabled,.btn-linkedin.disabled.active,.btn-linkedin.disabled:active,.btn-linkedin.disabled:focus,.btn-linkedin.disabled:hover,.btn-linkedin[disabled],.btn-linkedin[disabled].active,.btn-linkedin[disabled]:active,.btn-linkedin[disabled]:focus,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin,fieldset[disabled] .btn-linkedin.active,fieldset[disabled] .btn-linkedin:active,fieldset[disabled] .btn-linkedin:focus,fieldset[disabled] .btn-linkedin:hover{background-color:#24A7D3;border-color:#24A7D3;color:#fff}.btn-linkedin .badge{color:#036C8E}.btn-tumblr{background-color:#3E5A70;border-color:#3E5A70;color:#fff}.btn-tumblr.active,.btn-tumblr:active,.btn-tumblr:focus,.btn-tumblr:hover,.open .dropdown-toggle.btn-tumblr{background-color:#2E485D;border-color:#2E485D;color:#fff}.btn-tumblr.disabled,.btn-tumblr.disabled.active,.btn-tumblr.disabled:active,.btn-tumblr.disabled:focus,.btn-tumblr.disabled:hover,.btn-tumblr[disabled],.btn-tumblr[disabled].active,.btn-tumblr[disabled]:active,.btn-tumblr[disabled]:focus,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr,fieldset[disabled] .btn-tumblr.active,fieldset[disabled] .btn-tumblr:active,fieldset[disabled] .btn-tumblr:focus,fieldset[disabled] .btn-tumblr:hover{background-color:#586F81;border-color:#586F81;color:#fff}.btn-tumblr .badge{color:#2E485D}.btn-vimeo{background-color:#1BB6EC;border-color:#1BB6EC;color:#fff}.btn-vimeo.active,.btn-vimeo:active,.btn-vimeo:focus,.btn-vimeo:hover,.open .dropdown-toggle.btn-vimeo{background-color:#0D9DD1;border-color:#0D9DD1;color:#fff}.btn-vimeo.disabled,.btn-vimeo.disabled.active,.btn-vimeo.disabled:active,.btn-vimeo.disabled:focus,.btn-vimeo.disabled:hover,.btn-vimeo[disabled],.btn-vimeo[disabled].active,.btn-vimeo[disabled]:active,.btn-vimeo[disabled]:focus,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo,fieldset[disabled] .btn-vimeo.active,fieldset[disabled] .btn-vimeo:active,fieldset[disabled] .btn-vimeo:focus,fieldset[disabled] .btn-vimeo:hover{background-color:#4BCBFA;border-color:#4BCBFA;color:#fff}.btn-vimeo .badge{color:#0D9DD1}.icon-facebook,a .icon-facebook{color:#4B66A0}a:focus .icon-facebook,a:hover .icon-facebook{text-decoration:none;color:#3B5A98}.icon-twitter,a .icon-twitter{color:#55ACEE}a:focus .icon-twitter,a:hover .icon-twitter{text-decoration:none;color:#3490D3}.icon-google-plus,a .icon-google-plus{color:#D24333}a:focus .icon-google-plus,a:hover .icon-google-plus{text-decoration:none;color:#BC2C1F}.icon-dribbble,a .icon-dribbble{color:#E04C86}a:focus .icon-dribbble,a:hover .icon-dribbble{text-decoration:none;color:#D33471}.icon-flickr,a .icon-flickr{color:#0162DB}a:focus .icon-flickr,a:hover .icon-flickr{text-decoration:none;color:#0555BF}.icon-pinterest,a .icon-pinterest{color:#CC2127}a:focus .icon-pinterest,a:hover .icon-pinterest{text-decoration:none;color:#B70F12}.icon-youtube,a .icon-youtube{color:#D92623}a:focus .icon-youtube,a:hover .icon-youtube{text-decoration:none;color:#C91212}.icon-dropbox,a .icon-dropbox{color:#1473C3}a:focus .icon-dropbox,a:hover .icon-dropbox{text-decoration:none;color:#0864B2}.icon-foursquare,a .icon-foursquare{color:#0086BE}a:focus .icon-foursquare,a:hover .icon-foursquare{text-decoration:none;color:#0571A0}.icon-github,a .icon-github{color:#3B3B3B}a:focus .icon-github,a:hover .icon-github{text-decoration:none;color:#212121}.icon-linkedin,a .icon-linkedin{color:#0085AE}a:focus .icon-linkedin,a:hover .icon-linkedin{text-decoration:none;color:#036C8E}.icon-tumblr,a .icon-tumblr{color:#3E5A70}a:focus .icon-tumblr,a:hover .icon-tumblr{text-decoration:none;color:#2E485D}.icon-vimeo,a .icon-vimeo{color:#1BB6EC}a:focus .icon-vimeo,a:hover .icon-vimeo{text-decoration:none;color:#0D9DD1}.iconExamples h2{font-family:aktiv-grotesk-std;font-weight:200;color:#3b6ab5}.iconExamples .example{text-align:center;margin:10px 3px}.iconExamples .example .icon{font-size:20px;float:left;width:35px}.iconExamples .example .class{text-align:center;font-size:17px;float:left;margin-top:0;font-weight:400;margin-left:10px;color:#333}.weatherseparator{padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.2);margin-bottom:50px} 2 | /*! 3 | * bootstrap-notifications v1.0.3 (https://skywalkapps.github.io/bootstrap-notifications) 4 | * Copyright 2017 Martin Staněk 5 | * Licensed under MIT 6 | */.dropdown-container{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:200px;max-width:330px;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-container>.dropdown-menu{position:static;z-index:1000;float:none !important;padding:10px 0;margin:0;border:0;background:transparent;border-radius:0;-webkit-box-shadow:none;box-shadow:none;max-height:330px;overflow-y:auto}.dropdown-container>.dropdown-menu+.dropdown-menu{padding-top:0}.dropdown-menu>li>a{overflow:hidden;white-space:nowrap;word-wrap:normal;text-decoration:none;text-overflow:ellipsis;-o-text-overflow:ellipsis;-webkit-transition:none;-o-transition:none;transition:none}.dropdown-toggle{cursor:pointer}.dropdown-header{white-space:nowrap}.open>.dropdown-container>.dropdown-menu,.open>.dropdown-container{display:block}.dropdown-toolbar{padding-top:6px;padding-left:20px;padding-right:20px;padding-bottom:5px;background-color:#fff;border-bottom:1px solid rgba(0,0,0,0.15);border-radius:4px 4px 0 0}.dropdown-toolbar>.form-group{margin:5px -10px}.dropdown-toolbar .dropdown-toolbar-actions{float:right}.dropdown-toolbar .dropdown-toolbar-title{margin:0;font-size:14px}.dropdown-footer{padding:5px 20px;border-top:1px solid #ccc;border-top:1px solid rgba(0,0,0,0.15);border-radius:0 0 4px 4px}.anchor-block small{display:none}@media (min-width:992px){.anchor-block small{display:block;font-weight:normal;color:#777777}.dropdown-menu>li>a.anchor-block{padding-top:6px;padding-bottom:6px}}@media (min-width:992px){.dropdown.hoverable:hover>ul{display:block}}.dropdown-position-topright{top:auto;right:0;bottom:100%;left:auto;margin-bottom:2px}.dropdown-position-topleft{top:auto;right:auto;bottom:100%;left:0;margin-bottom:2px}.dropdown-position-bottomright{right:0;left:auto}.dropmenu-item-label{white-space:nowrap}.dropmenu-item-content{position:absolute;text-align:right;max-width:60px;right:20px;color:#777777;overflow:hidden;white-space:nowrap;word-wrap:normal;-o-text-overflow:ellipsis;text-overflow:ellipsis}small.dropmenu-item-content{line-height:20px}.dropdown-menu>li>a.dropmenu-item{position:relative;padding-right:66px}.dropdown-submenu .dropmenu-item-content{right:40px}.dropdown-menu>li.dropdown-submenu>a.dropmenu-item{padding-right:86px}.dropdown-inverse .dropdown-menu{background-color:rgba(0,0,0,0.8);border:1px solid rgba(0,0,0,0.9)}.dropdown-inverse .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#2b2b2b}.dropdown-inverse .dropdown-menu>li>a{color:#cccccc}.dropdown-inverse .dropdown-menu>li>a:hover,.dropdown-inverse .dropdown-menu>li>a:focus{color:#fff;background-color:#262626}.dropdown-inverse .dropdown-menu>.active>a,.dropdown-inverse .dropdown-menu>.active>a:hover,.dropdown-inverse .dropdown-menu>.active>a:focus{color:#fff;background-color:#337ab7}.dropdown-inverse .dropdown-menu>.disabled>a,.dropdown-inverse .dropdown-menu>.disabled>a:hover,.dropdown-inverse .dropdown-menu>.disabled>a:focus{color:#777777}.dropdown-inverse .dropdown-header{color:#777777}.table>thead>tr>th.col-actions{padding-top:0;padding-bottom:0}.table>thead>tr>th.col-actions .dropdown-toggle{color:#777777}.notifications{list-style:none;padding:0}.notification{display:block;padding:9.6px 12px;border-width:0 0 1px 0;border-style:solid;border-color:#eeeeee;background-color:#fff;color:#333333;text-decoration:none}.notification:last-child{border-bottom:0}.notification:hover,.notification.active:hover{background-color:#f9f9f9;border-color:#eeeeee}.notification.active{background-color:#f4f4f4}a.notification:hover{text-decoration:none}.notification-title{font-size:15px;margin-bottom:0}.notification-desc{margin-bottom:0}.notification-meta{color:#777777}.dropdown-notifications>.dropdown-container,.dropdown-notifications>.dropdown-menu{width:450px;max-width:450px}.dropdown-notifications .dropdown-menu{padding:0}.dropdown-notifications .dropdown-toolbar,.dropdown-notifications .dropdown-footer{padding:9.6px 12px}.dropdown-notifications .dropdown-toolbar{background:#fff}.dropdown-notifications .dropdown-footer{background:#eeeeee}.notification-icon{margin-right:6.8775px}.notification-icon:after{position:absolute;content:attr(data-count);margin-left:-6.8775px;margin-top:-6.8775px;padding:0 4px;min-width:13.755px;height:13.755px;line-height:13.755px;background:red;border-radius:10px;color:#fff;text-align:center;vertical-align:middle;font-size:11.004px;font-weight:600;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.notification .media-body{padding-top:5.6px}.btn-lg .notification-icon:after{margin-left:-8.253px;margin-top:-8.253px;min-width:16.506px;height:16.506px;line-height:16.506px;font-size:13.755px}.btn-xs .notification-icon:after{content:'';margin-left:-4.1265px;margin-top:-2.06325px;min-width:6.25227273px;height:6.25227273px;line-height:6.25227273px;padding:0}.btn-xs .notification-icon{margin-right:3.43875px} -------------------------------------------------------------------------------- /Grocery Store Management System/ui/js/packages/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.4.1 (https://getbootstrap.com/) 3 | * Copyright 2011-2019 Twitter, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | if ("undefined" == typeof jQuery) 7 | throw new Error("Bootstrap's JavaScript requires jQuery"); 8 | !(function (t) { 9 | "use strict"; 10 | var e = jQuery.fn.jquery.split(" ")[0].split("."); 11 | if ( 12 | (e[0] < 2 && e[1] < 9) || 13 | (1 == e[0] && 9 == e[1] && e[2] < 1) || 14 | 3 < e[0] 15 | ) 16 | throw new Error( 17 | "Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4" 18 | ); 19 | })(), 20 | (function (n) { 21 | "use strict"; 22 | (n.fn.emulateTransitionEnd = function (t) { 23 | var e = !1, 24 | i = this; 25 | n(this).one("bsTransitionEnd", function () { 26 | e = !0; 27 | }); 28 | return ( 29 | setTimeout(function () { 30 | e || n(i).trigger(n.support.transition.end); 31 | }, t), 32 | this 33 | ); 34 | }), 35 | n(function () { 36 | (n.support.transition = (function o() { 37 | var t = document.createElement("bootstrap"), 38 | e = { 39 | WebkitTransition: "webkitTransitionEnd", 40 | MozTransition: "transitionend", 41 | OTransition: "oTransitionEnd otransitionend", 42 | transition: "transitionend", 43 | }; 44 | for (var i in e) if (t.style[i] !== undefined) return { end: e[i] }; 45 | return !1; 46 | })()), 47 | n.support.transition && 48 | (n.event.special.bsTransitionEnd = { 49 | bindType: n.support.transition.end, 50 | delegateType: n.support.transition.end, 51 | handle: function (t) { 52 | if (n(t.target).is(this)) 53 | return t.handleObj.handler.apply(this, arguments); 54 | }, 55 | }); 56 | }); 57 | })(jQuery), 58 | (function (s) { 59 | "use strict"; 60 | var e = '[data-dismiss="alert"]', 61 | a = function (t) { 62 | s(t).on("click", e, this.close); 63 | }; 64 | (a.VERSION = "3.4.1"), 65 | (a.TRANSITION_DURATION = 150), 66 | (a.prototype.close = function (t) { 67 | var e = s(this), 68 | i = e.attr("data-target"); 69 | i || (i = (i = e.attr("href")) && i.replace(/.*(?=#[^\s]*$)/, "")), 70 | (i = "#" === i ? [] : i); 71 | var o = s(document).find(i); 72 | function n() { 73 | o.detach().trigger("closed.bs.alert").remove(); 74 | } 75 | t && t.preventDefault(), 76 | o.length || (o = e.closest(".alert")), 77 | o.trigger((t = s.Event("close.bs.alert"))), 78 | t.isDefaultPrevented() || 79 | (o.removeClass("in"), 80 | s.support.transition && o.hasClass("fade") 81 | ? o 82 | .one("bsTransitionEnd", n) 83 | .emulateTransitionEnd(a.TRANSITION_DURATION) 84 | : n()); 85 | }); 86 | var t = s.fn.alert; 87 | (s.fn.alert = function o(i) { 88 | return this.each(function () { 89 | var t = s(this), 90 | e = t.data("bs.alert"); 91 | e || t.data("bs.alert", (e = new a(this))), 92 | "string" == typeof i && e[i].call(t); 93 | }); 94 | }), 95 | (s.fn.alert.Constructor = a), 96 | (s.fn.alert.noConflict = function () { 97 | return (s.fn.alert = t), this; 98 | }), 99 | s(document).on("click.bs.alert.data-api", e, a.prototype.close); 100 | })(jQuery), 101 | (function (s) { 102 | "use strict"; 103 | var n = function (t, e) { 104 | (this.$element = s(t)), 105 | (this.options = s.extend({}, n.DEFAULTS, e)), 106 | (this.isLoading = !1); 107 | }; 108 | function i(o) { 109 | return this.each(function () { 110 | var t = s(this), 111 | e = t.data("bs.button"), 112 | i = "object" == typeof o && o; 113 | e || t.data("bs.button", (e = new n(this, i))), 114 | "toggle" == o ? e.toggle() : o && e.setState(o); 115 | }); 116 | } 117 | (n.VERSION = "3.4.1"), 118 | (n.DEFAULTS = { loadingText: "loading..." }), 119 | (n.prototype.setState = function (t) { 120 | var e = "disabled", 121 | i = this.$element, 122 | o = i.is("input") ? "val" : "html", 123 | n = i.data(); 124 | (t += "Text"), 125 | null == n.resetText && i.data("resetText", i[o]()), 126 | setTimeout( 127 | s.proxy(function () { 128 | i[o](null == n[t] ? this.options[t] : n[t]), 129 | "loadingText" == t 130 | ? ((this.isLoading = !0), 131 | i.addClass(e).attr(e, e).prop(e, !0)) 132 | : this.isLoading && 133 | ((this.isLoading = !1), 134 | i.removeClass(e).removeAttr(e).prop(e, !1)); 135 | }, this), 136 | 0 137 | ); 138 | }), 139 | (n.prototype.toggle = function () { 140 | var t = !0, 141 | e = this.$element.closest('[data-toggle="buttons"]'); 142 | if (e.length) { 143 | var i = this.$element.find("input"); 144 | "radio" == i.prop("type") 145 | ? (i.prop("checked") && (t = !1), 146 | e.find(".active").removeClass("active"), 147 | this.$element.addClass("active")) 148 | : "checkbox" == i.prop("type") && 149 | (i.prop("checked") !== this.$element.hasClass("active") && 150 | (t = !1), 151 | this.$element.toggleClass("active")), 152 | i.prop("checked", this.$element.hasClass("active")), 153 | t && i.trigger("change"); 154 | } else 155 | this.$element.attr("aria-pressed", !this.$element.hasClass("active")), 156 | this.$element.toggleClass("active"); 157 | }); 158 | var t = s.fn.button; 159 | (s.fn.button = i), 160 | (s.fn.button.Constructor = n), 161 | (s.fn.button.noConflict = function () { 162 | return (s.fn.button = t), this; 163 | }), 164 | s(document) 165 | .on( 166 | "click.bs.button.data-api", 167 | '[data-toggle^="button"]', 168 | function (t) { 169 | var e = s(t.target).closest(".btn"); 170 | i.call(e, "toggle"), 171 | s(t.target).is('input[type="radio"], input[type="checkbox"]') || 172 | (t.preventDefault(), 173 | e.is("input,button") 174 | ? e.trigger("focus") 175 | : e 176 | .find("input:visible,button:visible") 177 | .first() 178 | .trigger("focus")); 179 | } 180 | ) 181 | .on( 182 | "focus.bs.button.data-api blur.bs.button.data-api", 183 | '[data-toggle^="button"]', 184 | function (t) { 185 | s(t.target) 186 | .closest(".btn") 187 | .toggleClass("focus", /^focus(in)?$/.test(t.type)); 188 | } 189 | ); 190 | })(jQuery), 191 | (function (p) { 192 | "use strict"; 193 | var c = function (t, e) { 194 | (this.$element = p(t)), 195 | (this.$indicators = this.$element.find(".carousel-indicators")), 196 | (this.options = e), 197 | (this.paused = null), 198 | (this.sliding = null), 199 | (this.interval = null), 200 | (this.$active = null), 201 | (this.$items = null), 202 | this.options.keyboard && 203 | this.$element.on("keydown.bs.carousel", p.proxy(this.keydown, this)), 204 | "hover" == this.options.pause && 205 | !("ontouchstart" in document.documentElement) && 206 | this.$element 207 | .on("mouseenter.bs.carousel", p.proxy(this.pause, this)) 208 | .on("mouseleave.bs.carousel", p.proxy(this.cycle, this)); 209 | }; 210 | function r(n) { 211 | return this.each(function () { 212 | var t = p(this), 213 | e = t.data("bs.carousel"), 214 | i = p.extend({}, c.DEFAULTS, t.data(), "object" == typeof n && n), 215 | o = "string" == typeof n ? n : i.slide; 216 | e || t.data("bs.carousel", (e = new c(this, i))), 217 | "number" == typeof n 218 | ? e.to(n) 219 | : o 220 | ? e[o]() 221 | : i.interval && e.pause().cycle(); 222 | }); 223 | } 224 | (c.VERSION = "3.4.1"), 225 | (c.TRANSITION_DURATION = 600), 226 | (c.DEFAULTS = { interval: 5e3, pause: "hover", wrap: !0, keyboard: !0 }), 227 | (c.prototype.keydown = function (t) { 228 | if (!/input|textarea/i.test(t.target.tagName)) { 229 | switch (t.which) { 230 | case 37: 231 | this.prev(); 232 | break; 233 | case 39: 234 | this.next(); 235 | break; 236 | default: 237 | return; 238 | } 239 | t.preventDefault(); 240 | } 241 | }), 242 | (c.prototype.cycle = function (t) { 243 | return ( 244 | t || (this.paused = !1), 245 | this.interval && clearInterval(this.interval), 246 | this.options.interval && 247 | !this.paused && 248 | (this.interval = setInterval( 249 | p.proxy(this.next, this), 250 | this.options.interval 251 | )), 252 | this 253 | ); 254 | }), 255 | (c.prototype.getItemIndex = function (t) { 256 | return ( 257 | (this.$items = t.parent().children(".item")), 258 | this.$items.index(t || this.$active) 259 | ); 260 | }), 261 | (c.prototype.getItemForDirection = function (t, e) { 262 | var i = this.getItemIndex(e); 263 | if ( 264 | (("prev" == t && 0 === i) || 265 | ("next" == t && i == this.$items.length - 1)) && 266 | !this.options.wrap 267 | ) 268 | return e; 269 | var o = (i + ("prev" == t ? -1 : 1)) % this.$items.length; 270 | return this.$items.eq(o); 271 | }), 272 | (c.prototype.to = function (t) { 273 | var e = this, 274 | i = this.getItemIndex( 275 | (this.$active = this.$element.find(".item.active")) 276 | ); 277 | if (!(t > this.$items.length - 1 || t < 0)) 278 | return this.sliding 279 | ? this.$element.one("slid.bs.carousel", function () { 280 | e.to(t); 281 | }) 282 | : i == t 283 | ? this.pause().cycle() 284 | : this.slide(i < t ? "next" : "prev", this.$items.eq(t)); 285 | }), 286 | (c.prototype.pause = function (t) { 287 | return ( 288 | t || (this.paused = !0), 289 | this.$element.find(".next, .prev").length && 290 | p.support.transition && 291 | (this.$element.trigger(p.support.transition.end), this.cycle(!0)), 292 | (this.interval = clearInterval(this.interval)), 293 | this 294 | ); 295 | }), 296 | (c.prototype.next = function () { 297 | if (!this.sliding) return this.slide("next"); 298 | }), 299 | (c.prototype.prev = function () { 300 | if (!this.sliding) return this.slide("prev"); 301 | }), 302 | (c.prototype.slide = function (t, e) { 303 | var i = this.$element.find(".item.active"), 304 | o = e || this.getItemForDirection(t, i), 305 | n = this.interval, 306 | s = "next" == t ? "left" : "right", 307 | a = this; 308 | if (o.hasClass("active")) return (this.sliding = !1); 309 | var r = o[0], 310 | l = p.Event("slide.bs.carousel", { relatedTarget: r, direction: s }); 311 | if ((this.$element.trigger(l), !l.isDefaultPrevented())) { 312 | if ( 313 | ((this.sliding = !0), n && this.pause(), this.$indicators.length) 314 | ) { 315 | this.$indicators.find(".active").removeClass("active"); 316 | var h = p(this.$indicators.children()[this.getItemIndex(o)]); 317 | h && h.addClass("active"); 318 | } 319 | var d = p.Event("slid.bs.carousel", { 320 | relatedTarget: r, 321 | direction: s, 322 | }); 323 | return ( 324 | p.support.transition && this.$element.hasClass("slide") 325 | ? (o.addClass(t), 326 | "object" == typeof o && o.length && o[0].offsetWidth, 327 | i.addClass(s), 328 | o.addClass(s), 329 | i 330 | .one("bsTransitionEnd", function () { 331 | o.removeClass([t, s].join(" ")).addClass("active"), 332 | i.removeClass(["active", s].join(" ")), 333 | (a.sliding = !1), 334 | setTimeout(function () { 335 | a.$element.trigger(d); 336 | }, 0); 337 | }) 338 | .emulateTransitionEnd(c.TRANSITION_DURATION)) 339 | : (i.removeClass("active"), 340 | o.addClass("active"), 341 | (this.sliding = !1), 342 | this.$element.trigger(d)), 343 | n && this.cycle(), 344 | this 345 | ); 346 | } 347 | }); 348 | var t = p.fn.carousel; 349 | (p.fn.carousel = r), 350 | (p.fn.carousel.Constructor = c), 351 | (p.fn.carousel.noConflict = function () { 352 | return (p.fn.carousel = t), this; 353 | }); 354 | var e = function (t) { 355 | var e = p(this), 356 | i = e.attr("href"); 357 | i && (i = i.replace(/.*(?=#[^\s]+$)/, "")); 358 | var o = e.attr("data-target") || i, 359 | n = p(document).find(o); 360 | if (n.hasClass("carousel")) { 361 | var s = p.extend({}, n.data(), e.data()), 362 | a = e.attr("data-slide-to"); 363 | a && (s.interval = !1), 364 | r.call(n, s), 365 | a && n.data("bs.carousel").to(a), 366 | t.preventDefault(); 367 | } 368 | }; 369 | p(document) 370 | .on("click.bs.carousel.data-api", "[data-slide]", e) 371 | .on("click.bs.carousel.data-api", "[data-slide-to]", e), 372 | p(window).on("load", function () { 373 | p('[data-ride="carousel"]').each(function () { 374 | var t = p(this); 375 | r.call(t, t.data()); 376 | }); 377 | }); 378 | })(jQuery), 379 | (function (a) { 380 | "use strict"; 381 | var r = function (t, e) { 382 | (this.$element = a(t)), 383 | (this.options = a.extend({}, r.DEFAULTS, e)), 384 | (this.$trigger = a( 385 | '[data-toggle="collapse"][href="#' + 386 | t.id + 387 | '"],[data-toggle="collapse"][data-target="#' + 388 | t.id + 389 | '"]' 390 | )), 391 | (this.transitioning = null), 392 | this.options.parent 393 | ? (this.$parent = this.getParent()) 394 | : this.addAriaAndCollapsedClass(this.$element, this.$trigger), 395 | this.options.toggle && this.toggle(); 396 | }; 397 | function n(t) { 398 | var e, 399 | i = 400 | t.attr("data-target") || 401 | ((e = t.attr("href")) && e.replace(/.*(?=#[^\s]+$)/, "")); 402 | return a(document).find(i); 403 | } 404 | function l(o) { 405 | return this.each(function () { 406 | var t = a(this), 407 | e = t.data("bs.collapse"), 408 | i = a.extend({}, r.DEFAULTS, t.data(), "object" == typeof o && o); 409 | !e && i.toggle && /show|hide/.test(o) && (i.toggle = !1), 410 | e || t.data("bs.collapse", (e = new r(this, i))), 411 | "string" == typeof o && e[o](); 412 | }); 413 | } 414 | (r.VERSION = "3.4.1"), 415 | (r.TRANSITION_DURATION = 350), 416 | (r.DEFAULTS = { toggle: !0 }), 417 | (r.prototype.dimension = function () { 418 | return this.$element.hasClass("width") ? "width" : "height"; 419 | }), 420 | (r.prototype.show = function () { 421 | if (!this.transitioning && !this.$element.hasClass("in")) { 422 | var t, 423 | e = 424 | this.$parent && 425 | this.$parent.children(".panel").children(".in, .collapsing"); 426 | if ( 427 | !(e && e.length && (t = e.data("bs.collapse")) && t.transitioning) 428 | ) { 429 | var i = a.Event("show.bs.collapse"); 430 | if ((this.$element.trigger(i), !i.isDefaultPrevented())) { 431 | e && 432 | e.length && 433 | (l.call(e, "hide"), t || e.data("bs.collapse", null)); 434 | var o = this.dimension(); 435 | this.$element 436 | .removeClass("collapse") 437 | .addClass("collapsing") 438 | [o](0) 439 | .attr("aria-expanded", !0), 440 | this.$trigger 441 | .removeClass("collapsed") 442 | .attr("aria-expanded", !0), 443 | (this.transitioning = 1); 444 | var n = function () { 445 | this.$element 446 | .removeClass("collapsing") 447 | .addClass("collapse in") 448 | [o](""), 449 | (this.transitioning = 0), 450 | this.$element.trigger("shown.bs.collapse"); 451 | }; 452 | if (!a.support.transition) return n.call(this); 453 | var s = a.camelCase(["scroll", o].join("-")); 454 | this.$element 455 | .one("bsTransitionEnd", a.proxy(n, this)) 456 | .emulateTransitionEnd(r.TRANSITION_DURATION) 457 | [o](this.$element[0][s]); 458 | } 459 | } 460 | } 461 | }), 462 | (r.prototype.hide = function () { 463 | if (!this.transitioning && this.$element.hasClass("in")) { 464 | var t = a.Event("hide.bs.collapse"); 465 | if ((this.$element.trigger(t), !t.isDefaultPrevented())) { 466 | var e = this.dimension(); 467 | this.$element[e](this.$element[e]())[0].offsetHeight, 468 | this.$element 469 | .addClass("collapsing") 470 | .removeClass("collapse in") 471 | .attr("aria-expanded", !1), 472 | this.$trigger.addClass("collapsed").attr("aria-expanded", !1), 473 | (this.transitioning = 1); 474 | var i = function () { 475 | (this.transitioning = 0), 476 | this.$element 477 | .removeClass("collapsing") 478 | .addClass("collapse") 479 | .trigger("hidden.bs.collapse"); 480 | }; 481 | if (!a.support.transition) return i.call(this); 482 | this.$element[e](0) 483 | .one("bsTransitionEnd", a.proxy(i, this)) 484 | .emulateTransitionEnd(r.TRANSITION_DURATION); 485 | } 486 | } 487 | }), 488 | (r.prototype.toggle = function () { 489 | this[this.$element.hasClass("in") ? "hide" : "show"](); 490 | }), 491 | (r.prototype.getParent = function () { 492 | return a(document) 493 | .find(this.options.parent) 494 | .find( 495 | '[data-toggle="collapse"][data-parent="' + 496 | this.options.parent + 497 | '"]' 498 | ) 499 | .each( 500 | a.proxy(function (t, e) { 501 | var i = a(e); 502 | this.addAriaAndCollapsedClass(n(i), i); 503 | }, this) 504 | ) 505 | .end(); 506 | }), 507 | (r.prototype.addAriaAndCollapsedClass = function (t, e) { 508 | var i = t.hasClass("in"); 509 | t.attr("aria-expanded", i), 510 | e.toggleClass("collapsed", !i).attr("aria-expanded", i); 511 | }); 512 | var t = a.fn.collapse; 513 | (a.fn.collapse = l), 514 | (a.fn.collapse.Constructor = r), 515 | (a.fn.collapse.noConflict = function () { 516 | return (a.fn.collapse = t), this; 517 | }), 518 | a(document).on( 519 | "click.bs.collapse.data-api", 520 | '[data-toggle="collapse"]', 521 | function (t) { 522 | var e = a(this); 523 | e.attr("data-target") || t.preventDefault(); 524 | var i = n(e), 525 | o = i.data("bs.collapse") ? "toggle" : e.data(); 526 | l.call(i, o); 527 | } 528 | ); 529 | })(jQuery), 530 | (function (a) { 531 | "use strict"; 532 | var r = '[data-toggle="dropdown"]', 533 | o = function (t) { 534 | a(t).on("click.bs.dropdown", this.toggle); 535 | }; 536 | function l(t) { 537 | var e = t.attr("data-target"); 538 | e || 539 | (e = 540 | (e = t.attr("href")) && 541 | /#[A-Za-z]/.test(e) && 542 | e.replace(/.*(?=#[^\s]*$)/, "")); 543 | var i = "#" !== e ? a(document).find(e) : null; 544 | return i && i.length ? i : t.parent(); 545 | } 546 | function s(o) { 547 | (o && 3 === o.which) || 548 | (a(".dropdown-backdrop").remove(), 549 | a(r).each(function () { 550 | var t = a(this), 551 | e = l(t), 552 | i = { relatedTarget: this }; 553 | e.hasClass("open") && 554 | ((o && 555 | "click" == o.type && 556 | /input|textarea/i.test(o.target.tagName) && 557 | a.contains(e[0], o.target)) || 558 | (e.trigger((o = a.Event("hide.bs.dropdown", i))), 559 | o.isDefaultPrevented() || 560 | (t.attr("aria-expanded", "false"), 561 | e 562 | .removeClass("open") 563 | .trigger(a.Event("hidden.bs.dropdown", i))))); 564 | })); 565 | } 566 | (o.VERSION = "3.4.1"), 567 | (o.prototype.toggle = function (t) { 568 | var e = a(this); 569 | if (!e.is(".disabled, :disabled")) { 570 | var i = l(e), 571 | o = i.hasClass("open"); 572 | if ((s(), !o)) { 573 | "ontouchstart" in document.documentElement && 574 | !i.closest(".navbar-nav").length && 575 | a(document.createElement("div")) 576 | .addClass("dropdown-backdrop") 577 | .insertAfter(a(this)) 578 | .on("click", s); 579 | var n = { relatedTarget: this }; 580 | if ( 581 | (i.trigger((t = a.Event("show.bs.dropdown", n))), 582 | t.isDefaultPrevented()) 583 | ) 584 | return; 585 | e.trigger("focus").attr("aria-expanded", "true"), 586 | i.toggleClass("open").trigger(a.Event("shown.bs.dropdown", n)); 587 | } 588 | return !1; 589 | } 590 | }), 591 | (o.prototype.keydown = function (t) { 592 | if ( 593 | /(38|40|27|32)/.test(t.which) && 594 | !/input|textarea/i.test(t.target.tagName) 595 | ) { 596 | var e = a(this); 597 | if ( 598 | (t.preventDefault(), 599 | t.stopPropagation(), 600 | !e.is(".disabled, :disabled")) 601 | ) { 602 | var i = l(e), 603 | o = i.hasClass("open"); 604 | if ((!o && 27 != t.which) || (o && 27 == t.which)) 605 | return ( 606 | 27 == t.which && i.find(r).trigger("focus"), e.trigger("click") 607 | ); 608 | var n = i.find(".dropdown-menu li:not(.disabled):visible a"); 609 | if (n.length) { 610 | var s = n.index(t.target); 611 | 38 == t.which && 0 < s && s--, 612 | 40 == t.which && s < n.length - 1 && s++, 613 | ~s || (s = 0), 614 | n.eq(s).trigger("focus"); 615 | } 616 | } 617 | } 618 | }); 619 | var t = a.fn.dropdown; 620 | (a.fn.dropdown = function e(i) { 621 | return this.each(function () { 622 | var t = a(this), 623 | e = t.data("bs.dropdown"); 624 | e || t.data("bs.dropdown", (e = new o(this))), 625 | "string" == typeof i && e[i].call(t); 626 | }); 627 | }), 628 | (a.fn.dropdown.Constructor = o), 629 | (a.fn.dropdown.noConflict = function () { 630 | return (a.fn.dropdown = t), this; 631 | }), 632 | a(document) 633 | .on("click.bs.dropdown.data-api", s) 634 | .on("click.bs.dropdown.data-api", ".dropdown form", function (t) { 635 | t.stopPropagation(); 636 | }) 637 | .on("click.bs.dropdown.data-api", r, o.prototype.toggle) 638 | .on("keydown.bs.dropdown.data-api", r, o.prototype.keydown) 639 | .on( 640 | "keydown.bs.dropdown.data-api", 641 | ".dropdown-menu", 642 | o.prototype.keydown 643 | ); 644 | })(jQuery), 645 | (function (a) { 646 | "use strict"; 647 | var s = function (t, e) { 648 | (this.options = e), 649 | (this.$body = a(document.body)), 650 | (this.$element = a(t)), 651 | (this.$dialog = this.$element.find(".modal-dialog")), 652 | (this.$backdrop = null), 653 | (this.isShown = null), 654 | (this.originalBodyPad = null), 655 | (this.scrollbarWidth = 0), 656 | (this.ignoreBackdropClick = !1), 657 | (this.fixedContent = ".navbar-fixed-top, .navbar-fixed-bottom"), 658 | this.options.remote && 659 | this.$element.find(".modal-content").load( 660 | this.options.remote, 661 | a.proxy(function () { 662 | this.$element.trigger("loaded.bs.modal"); 663 | }, this) 664 | ); 665 | }; 666 | function r(o, n) { 667 | return this.each(function () { 668 | var t = a(this), 669 | e = t.data("bs.modal"), 670 | i = a.extend({}, s.DEFAULTS, t.data(), "object" == typeof o && o); 671 | e || t.data("bs.modal", (e = new s(this, i))), 672 | "string" == typeof o ? e[o](n) : i.show && e.show(n); 673 | }); 674 | } 675 | (s.VERSION = "3.4.1"), 676 | (s.TRANSITION_DURATION = 300), 677 | (s.BACKDROP_TRANSITION_DURATION = 150), 678 | (s.DEFAULTS = { backdrop: !0, keyboard: !0, show: !0 }), 679 | (s.prototype.toggle = function (t) { 680 | return this.isShown ? this.hide() : this.show(t); 681 | }), 682 | (s.prototype.show = function (i) { 683 | var o = this, 684 | t = a.Event("show.bs.modal", { relatedTarget: i }); 685 | this.$element.trigger(t), 686 | this.isShown || 687 | t.isDefaultPrevented() || 688 | ((this.isShown = !0), 689 | this.checkScrollbar(), 690 | this.setScrollbar(), 691 | this.$body.addClass("modal-open"), 692 | this.escape(), 693 | this.resize(), 694 | this.$element.on( 695 | "click.dismiss.bs.modal", 696 | '[data-dismiss="modal"]', 697 | a.proxy(this.hide, this) 698 | ), 699 | this.$dialog.on("mousedown.dismiss.bs.modal", function () { 700 | o.$element.one("mouseup.dismiss.bs.modal", function (t) { 701 | a(t.target).is(o.$element) && (o.ignoreBackdropClick = !0); 702 | }); 703 | }), 704 | this.backdrop(function () { 705 | var t = a.support.transition && o.$element.hasClass("fade"); 706 | o.$element.parent().length || o.$element.appendTo(o.$body), 707 | o.$element.show().scrollTop(0), 708 | o.adjustDialog(), 709 | t && o.$element[0].offsetWidth, 710 | o.$element.addClass("in"), 711 | o.enforceFocus(); 712 | var e = a.Event("shown.bs.modal", { relatedTarget: i }); 713 | t 714 | ? o.$dialog 715 | .one("bsTransitionEnd", function () { 716 | o.$element.trigger("focus").trigger(e); 717 | }) 718 | .emulateTransitionEnd(s.TRANSITION_DURATION) 719 | : o.$element.trigger("focus").trigger(e); 720 | })); 721 | }), 722 | (s.prototype.hide = function (t) { 723 | t && t.preventDefault(), 724 | (t = a.Event("hide.bs.modal")), 725 | this.$element.trigger(t), 726 | this.isShown && 727 | !t.isDefaultPrevented() && 728 | ((this.isShown = !1), 729 | this.escape(), 730 | this.resize(), 731 | a(document).off("focusin.bs.modal"), 732 | this.$element 733 | .removeClass("in") 734 | .off("click.dismiss.bs.modal") 735 | .off("mouseup.dismiss.bs.modal"), 736 | this.$dialog.off("mousedown.dismiss.bs.modal"), 737 | a.support.transition && this.$element.hasClass("fade") 738 | ? this.$element 739 | .one("bsTransitionEnd", a.proxy(this.hideModal, this)) 740 | .emulateTransitionEnd(s.TRANSITION_DURATION) 741 | : this.hideModal()); 742 | }), 743 | (s.prototype.enforceFocus = function () { 744 | a(document) 745 | .off("focusin.bs.modal") 746 | .on( 747 | "focusin.bs.modal", 748 | a.proxy(function (t) { 749 | document === t.target || 750 | this.$element[0] === t.target || 751 | this.$element.has(t.target).length || 752 | this.$element.trigger("focus"); 753 | }, this) 754 | ); 755 | }), 756 | (s.prototype.escape = function () { 757 | this.isShown && this.options.keyboard 758 | ? this.$element.on( 759 | "keydown.dismiss.bs.modal", 760 | a.proxy(function (t) { 761 | 27 == t.which && this.hide(); 762 | }, this) 763 | ) 764 | : this.isShown || this.$element.off("keydown.dismiss.bs.modal"); 765 | }), 766 | (s.prototype.resize = function () { 767 | this.isShown 768 | ? a(window).on("resize.bs.modal", a.proxy(this.handleUpdate, this)) 769 | : a(window).off("resize.bs.modal"); 770 | }), 771 | (s.prototype.hideModal = function () { 772 | var t = this; 773 | this.$element.hide(), 774 | this.backdrop(function () { 775 | t.$body.removeClass("modal-open"), 776 | t.resetAdjustments(), 777 | t.resetScrollbar(), 778 | t.$element.trigger("hidden.bs.modal"); 779 | }); 780 | }), 781 | (s.prototype.removeBackdrop = function () { 782 | this.$backdrop && this.$backdrop.remove(), (this.$backdrop = null); 783 | }), 784 | (s.prototype.backdrop = function (t) { 785 | var e = this, 786 | i = this.$element.hasClass("fade") ? "fade" : ""; 787 | if (this.isShown && this.options.backdrop) { 788 | var o = a.support.transition && i; 789 | if ( 790 | ((this.$backdrop = a(document.createElement("div")) 791 | .addClass("modal-backdrop " + i) 792 | .appendTo(this.$body)), 793 | this.$element.on( 794 | "click.dismiss.bs.modal", 795 | a.proxy(function (t) { 796 | this.ignoreBackdropClick 797 | ? (this.ignoreBackdropClick = !1) 798 | : t.target === t.currentTarget && 799 | ("static" == this.options.backdrop 800 | ? this.$element[0].focus() 801 | : this.hide()); 802 | }, this) 803 | ), 804 | o && this.$backdrop[0].offsetWidth, 805 | this.$backdrop.addClass("in"), 806 | !t) 807 | ) 808 | return; 809 | o 810 | ? this.$backdrop 811 | .one("bsTransitionEnd", t) 812 | .emulateTransitionEnd(s.BACKDROP_TRANSITION_DURATION) 813 | : t(); 814 | } else if (!this.isShown && this.$backdrop) { 815 | this.$backdrop.removeClass("in"); 816 | var n = function () { 817 | e.removeBackdrop(), t && t(); 818 | }; 819 | a.support.transition && this.$element.hasClass("fade") 820 | ? this.$backdrop 821 | .one("bsTransitionEnd", n) 822 | .emulateTransitionEnd(s.BACKDROP_TRANSITION_DURATION) 823 | : n(); 824 | } else t && t(); 825 | }), 826 | (s.prototype.handleUpdate = function () { 827 | this.adjustDialog(); 828 | }), 829 | (s.prototype.adjustDialog = function () { 830 | var t = 831 | this.$element[0].scrollHeight > document.documentElement.clientHeight; 832 | this.$element.css({ 833 | paddingLeft: !this.bodyIsOverflowing && t ? this.scrollbarWidth : "", 834 | paddingRight: this.bodyIsOverflowing && !t ? this.scrollbarWidth : "", 835 | }); 836 | }), 837 | (s.prototype.resetAdjustments = function () { 838 | this.$element.css({ paddingLeft: "", paddingRight: "" }); 839 | }), 840 | (s.prototype.checkScrollbar = function () { 841 | var t = window.innerWidth; 842 | if (!t) { 843 | var e = document.documentElement.getBoundingClientRect(); 844 | t = e.right - Math.abs(e.left); 845 | } 846 | (this.bodyIsOverflowing = document.body.clientWidth < t), 847 | (this.scrollbarWidth = this.measureScrollbar()); 848 | }), 849 | (s.prototype.setScrollbar = function () { 850 | var t = parseInt(this.$body.css("padding-right") || 0, 10); 851 | this.originalBodyPad = document.body.style.paddingRight || ""; 852 | var n = this.scrollbarWidth; 853 | this.bodyIsOverflowing && 854 | (this.$body.css("padding-right", t + n), 855 | a(this.fixedContent).each(function (t, e) { 856 | var i = e.style.paddingRight, 857 | o = a(e).css("padding-right"); 858 | a(e) 859 | .data("padding-right", i) 860 | .css("padding-right", parseFloat(o) + n + "px"); 861 | })); 862 | }), 863 | (s.prototype.resetScrollbar = function () { 864 | this.$body.css("padding-right", this.originalBodyPad), 865 | a(this.fixedContent).each(function (t, e) { 866 | var i = a(e).data("padding-right"); 867 | a(e).removeData("padding-right"), (e.style.paddingRight = i || ""); 868 | }); 869 | }), 870 | (s.prototype.measureScrollbar = function () { 871 | var t = document.createElement("div"); 872 | (t.className = "modal-scrollbar-measure"), this.$body.append(t); 873 | var e = t.offsetWidth - t.clientWidth; 874 | return this.$body[0].removeChild(t), e; 875 | }); 876 | var t = a.fn.modal; 877 | (a.fn.modal = r), 878 | (a.fn.modal.Constructor = s), 879 | (a.fn.modal.noConflict = function () { 880 | return (a.fn.modal = t), this; 881 | }), 882 | a(document).on( 883 | "click.bs.modal.data-api", 884 | '[data-toggle="modal"]', 885 | function (t) { 886 | var e = a(this), 887 | i = e.attr("href"), 888 | o = e.attr("data-target") || (i && i.replace(/.*(?=#[^\s]+$)/, "")), 889 | n = a(document).find(o), 890 | s = n.data("bs.modal") 891 | ? "toggle" 892 | : a.extend({ remote: !/#/.test(i) && i }, n.data(), e.data()); 893 | e.is("a") && t.preventDefault(), 894 | n.one("show.bs.modal", function (t) { 895 | t.isDefaultPrevented() || 896 | n.one("hidden.bs.modal", function () { 897 | e.is(":visible") && e.trigger("focus"); 898 | }); 899 | }), 900 | r.call(n, s, this); 901 | } 902 | ); 903 | })(jQuery), 904 | (function (g) { 905 | "use strict"; 906 | var o = ["sanitize", "whiteList", "sanitizeFn"], 907 | a = [ 908 | "background", 909 | "cite", 910 | "href", 911 | "itemtype", 912 | "longdesc", 913 | "poster", 914 | "src", 915 | "xlink:href", 916 | ], 917 | t = { 918 | "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i], 919 | a: ["target", "href", "title", "rel"], 920 | area: [], 921 | b: [], 922 | br: [], 923 | col: [], 924 | code: [], 925 | div: [], 926 | em: [], 927 | hr: [], 928 | h1: [], 929 | h2: [], 930 | h3: [], 931 | h4: [], 932 | h5: [], 933 | h6: [], 934 | i: [], 935 | img: ["src", "alt", "title", "width", "height"], 936 | li: [], 937 | ol: [], 938 | p: [], 939 | pre: [], 940 | s: [], 941 | small: [], 942 | span: [], 943 | sub: [], 944 | sup: [], 945 | strong: [], 946 | u: [], 947 | ul: [], 948 | }, 949 | r = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi, 950 | l = 951 | /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i; 952 | function u(t, e) { 953 | var i = t.nodeName.toLowerCase(); 954 | if (-1 !== g.inArray(i, e)) 955 | return ( 956 | -1 === g.inArray(i, a) || 957 | Boolean(t.nodeValue.match(r) || t.nodeValue.match(l)) 958 | ); 959 | for ( 960 | var o = g(e).filter(function (t, e) { 961 | return e instanceof RegExp; 962 | }), 963 | n = 0, 964 | s = o.length; 965 | n < s; 966 | n++ 967 | ) 968 | if (i.match(o[n])) return !0; 969 | return !1; 970 | } 971 | function n(t, e, i) { 972 | if (0 === t.length) return t; 973 | if (i && "function" == typeof i) return i(t); 974 | if ( 975 | !document.implementation || 976 | !document.implementation.createHTMLDocument 977 | ) 978 | return t; 979 | var o = document.implementation.createHTMLDocument("sanitization"); 980 | o.body.innerHTML = t; 981 | for ( 982 | var n = g.map(e, function (t, e) { 983 | return e; 984 | }), 985 | s = g(o.body).find("*"), 986 | a = 0, 987 | r = s.length; 988 | a < r; 989 | a++ 990 | ) { 991 | var l = s[a], 992 | h = l.nodeName.toLowerCase(); 993 | if (-1 !== g.inArray(h, n)) 994 | for ( 995 | var d = g.map(l.attributes, function (t) { 996 | return t; 997 | }), 998 | p = [].concat(e["*"] || [], e[h] || []), 999 | c = 0, 1000 | f = d.length; 1001 | c < f; 1002 | c++ 1003 | ) 1004 | u(d[c], p) || l.removeAttribute(d[c].nodeName); 1005 | else l.parentNode.removeChild(l); 1006 | } 1007 | return o.body.innerHTML; 1008 | } 1009 | var m = function (t, e) { 1010 | (this.type = null), 1011 | (this.options = null), 1012 | (this.enabled = null), 1013 | (this.timeout = null), 1014 | (this.hoverState = null), 1015 | (this.$element = null), 1016 | (this.inState = null), 1017 | this.init("tooltip", t, e); 1018 | }; 1019 | (m.VERSION = "3.4.1"), 1020 | (m.TRANSITION_DURATION = 150), 1021 | (m.DEFAULTS = { 1022 | animation: !0, 1023 | placement: "top", 1024 | selector: !1, 1025 | template: 1026 | '', 1027 | trigger: "hover focus", 1028 | title: "", 1029 | delay: 0, 1030 | html: !1, 1031 | container: !1, 1032 | viewport: { selector: "body", padding: 0 }, 1033 | sanitize: !0, 1034 | sanitizeFn: null, 1035 | whiteList: t, 1036 | }), 1037 | (m.prototype.init = function (t, e, i) { 1038 | if ( 1039 | ((this.enabled = !0), 1040 | (this.type = t), 1041 | (this.$element = g(e)), 1042 | (this.options = this.getOptions(i)), 1043 | (this.$viewport = 1044 | this.options.viewport && 1045 | g(document).find( 1046 | g.isFunction(this.options.viewport) 1047 | ? this.options.viewport.call(this, this.$element) 1048 | : this.options.viewport.selector || this.options.viewport 1049 | )), 1050 | (this.inState = { click: !1, hover: !1, focus: !1 }), 1051 | this.$element[0] instanceof document.constructor && 1052 | !this.options.selector) 1053 | ) 1054 | throw new Error( 1055 | "`selector` option must be specified when initializing " + 1056 | this.type + 1057 | " on the window.document object!" 1058 | ); 1059 | for (var o = this.options.trigger.split(" "), n = o.length; n--; ) { 1060 | var s = o[n]; 1061 | if ("click" == s) 1062 | this.$element.on( 1063 | "click." + this.type, 1064 | this.options.selector, 1065 | g.proxy(this.toggle, this) 1066 | ); 1067 | else if ("manual" != s) { 1068 | var a = "hover" == s ? "mouseenter" : "focusin", 1069 | r = "hover" == s ? "mouseleave" : "focusout"; 1070 | this.$element.on( 1071 | a + "." + this.type, 1072 | this.options.selector, 1073 | g.proxy(this.enter, this) 1074 | ), 1075 | this.$element.on( 1076 | r + "." + this.type, 1077 | this.options.selector, 1078 | g.proxy(this.leave, this) 1079 | ); 1080 | } 1081 | } 1082 | this.options.selector 1083 | ? (this._options = g.extend({}, this.options, { 1084 | trigger: "manual", 1085 | selector: "", 1086 | })) 1087 | : this.fixTitle(); 1088 | }), 1089 | (m.prototype.getDefaults = function () { 1090 | return m.DEFAULTS; 1091 | }), 1092 | (m.prototype.getOptions = function (t) { 1093 | var e = this.$element.data(); 1094 | for (var i in e) 1095 | e.hasOwnProperty(i) && -1 !== g.inArray(i, o) && delete e[i]; 1096 | return ( 1097 | (t = g.extend({}, this.getDefaults(), e, t)).delay && 1098 | "number" == typeof t.delay && 1099 | (t.delay = { show: t.delay, hide: t.delay }), 1100 | t.sanitize && (t.template = n(t.template, t.whiteList, t.sanitizeFn)), 1101 | t 1102 | ); 1103 | }), 1104 | (m.prototype.getDelegateOptions = function () { 1105 | var i = {}, 1106 | o = this.getDefaults(); 1107 | return ( 1108 | this._options && 1109 | g.each(this._options, function (t, e) { 1110 | o[t] != e && (i[t] = e); 1111 | }), 1112 | i 1113 | ); 1114 | }), 1115 | (m.prototype.enter = function (t) { 1116 | var e = 1117 | t instanceof this.constructor 1118 | ? t 1119 | : g(t.currentTarget).data("bs." + this.type); 1120 | if ( 1121 | (e || 1122 | ((e = new this.constructor( 1123 | t.currentTarget, 1124 | this.getDelegateOptions() 1125 | )), 1126 | g(t.currentTarget).data("bs." + this.type, e)), 1127 | t instanceof g.Event && 1128 | (e.inState["focusin" == t.type ? "focus" : "hover"] = !0), 1129 | e.tip().hasClass("in") || "in" == e.hoverState) 1130 | ) 1131 | e.hoverState = "in"; 1132 | else { 1133 | if ( 1134 | (clearTimeout(e.timeout), 1135 | (e.hoverState = "in"), 1136 | !e.options.delay || !e.options.delay.show) 1137 | ) 1138 | return e.show(); 1139 | e.timeout = setTimeout(function () { 1140 | "in" == e.hoverState && e.show(); 1141 | }, e.options.delay.show); 1142 | } 1143 | }), 1144 | (m.prototype.isInStateTrue = function () { 1145 | for (var t in this.inState) if (this.inState[t]) return !0; 1146 | return !1; 1147 | }), 1148 | (m.prototype.leave = function (t) { 1149 | var e = 1150 | t instanceof this.constructor 1151 | ? t 1152 | : g(t.currentTarget).data("bs." + this.type); 1153 | if ( 1154 | (e || 1155 | ((e = new this.constructor( 1156 | t.currentTarget, 1157 | this.getDelegateOptions() 1158 | )), 1159 | g(t.currentTarget).data("bs." + this.type, e)), 1160 | t instanceof g.Event && 1161 | (e.inState["focusout" == t.type ? "focus" : "hover"] = !1), 1162 | !e.isInStateTrue()) 1163 | ) { 1164 | if ( 1165 | (clearTimeout(e.timeout), 1166 | (e.hoverState = "out"), 1167 | !e.options.delay || !e.options.delay.hide) 1168 | ) 1169 | return e.hide(); 1170 | e.timeout = setTimeout(function () { 1171 | "out" == e.hoverState && e.hide(); 1172 | }, e.options.delay.hide); 1173 | } 1174 | }), 1175 | (m.prototype.show = function () { 1176 | var t = g.Event("show.bs." + this.type); 1177 | if (this.hasContent() && this.enabled) { 1178 | this.$element.trigger(t); 1179 | var e = g.contains( 1180 | this.$element[0].ownerDocument.documentElement, 1181 | this.$element[0] 1182 | ); 1183 | if (t.isDefaultPrevented() || !e) return; 1184 | var i = this, 1185 | o = this.tip(), 1186 | n = this.getUID(this.type); 1187 | this.setContent(), 1188 | o.attr("id", n), 1189 | this.$element.attr("aria-describedby", n), 1190 | this.options.animation && o.addClass("fade"); 1191 | var s = 1192 | "function" == typeof this.options.placement 1193 | ? this.options.placement.call(this, o[0], this.$element[0]) 1194 | : this.options.placement, 1195 | a = /\s?auto?\s?/i, 1196 | r = a.test(s); 1197 | r && (s = s.replace(a, "") || "top"), 1198 | o 1199 | .detach() 1200 | .css({ top: 0, left: 0, display: "block" }) 1201 | .addClass(s) 1202 | .data("bs." + this.type, this), 1203 | this.options.container 1204 | ? o.appendTo(g(document).find(this.options.container)) 1205 | : o.insertAfter(this.$element), 1206 | this.$element.trigger("inserted.bs." + this.type); 1207 | var l = this.getPosition(), 1208 | h = o[0].offsetWidth, 1209 | d = o[0].offsetHeight; 1210 | if (r) { 1211 | var p = s, 1212 | c = this.getPosition(this.$viewport); 1213 | (s = 1214 | "bottom" == s && l.bottom + d > c.bottom 1215 | ? "top" 1216 | : "top" == s && l.top - d < c.top 1217 | ? "bottom" 1218 | : "right" == s && l.right + h > c.width 1219 | ? "left" 1220 | : "left" == s && l.left - h < c.left 1221 | ? "right" 1222 | : s), 1223 | o.removeClass(p).addClass(s); 1224 | } 1225 | var f = this.getCalculatedOffset(s, l, h, d); 1226 | this.applyPlacement(f, s); 1227 | var u = function () { 1228 | var t = i.hoverState; 1229 | i.$element.trigger("shown.bs." + i.type), 1230 | (i.hoverState = null), 1231 | "out" == t && i.leave(i); 1232 | }; 1233 | g.support.transition && this.$tip.hasClass("fade") 1234 | ? o 1235 | .one("bsTransitionEnd", u) 1236 | .emulateTransitionEnd(m.TRANSITION_DURATION) 1237 | : u(); 1238 | } 1239 | }), 1240 | (m.prototype.applyPlacement = function (t, e) { 1241 | var i = this.tip(), 1242 | o = i[0].offsetWidth, 1243 | n = i[0].offsetHeight, 1244 | s = parseInt(i.css("margin-top"), 10), 1245 | a = parseInt(i.css("margin-left"), 10); 1246 | isNaN(s) && (s = 0), 1247 | isNaN(a) && (a = 0), 1248 | (t.top += s), 1249 | (t.left += a), 1250 | g.offset.setOffset( 1251 | i[0], 1252 | g.extend( 1253 | { 1254 | using: function (t) { 1255 | i.css({ top: Math.round(t.top), left: Math.round(t.left) }); 1256 | }, 1257 | }, 1258 | t 1259 | ), 1260 | 0 1261 | ), 1262 | i.addClass("in"); 1263 | var r = i[0].offsetWidth, 1264 | l = i[0].offsetHeight; 1265 | "top" == e && l != n && (t.top = t.top + n - l); 1266 | var h = this.getViewportAdjustedDelta(e, t, r, l); 1267 | h.left ? (t.left += h.left) : (t.top += h.top); 1268 | var d = /top|bottom/.test(e), 1269 | p = d ? 2 * h.left - o + r : 2 * h.top - n + l, 1270 | c = d ? "offsetWidth" : "offsetHeight"; 1271 | i.offset(t), this.replaceArrow(p, i[0][c], d); 1272 | }), 1273 | (m.prototype.replaceArrow = function (t, e, i) { 1274 | this.arrow() 1275 | .css(i ? "left" : "top", 50 * (1 - t / e) + "%") 1276 | .css(i ? "top" : "left", ""); 1277 | }), 1278 | (m.prototype.setContent = function () { 1279 | var t = this.tip(), 1280 | e = this.getTitle(); 1281 | this.options.html 1282 | ? (this.options.sanitize && 1283 | (e = n(e, this.options.whiteList, this.options.sanitizeFn)), 1284 | t.find(".tooltip-inner").html(e)) 1285 | : t.find(".tooltip-inner").text(e), 1286 | t.removeClass("fade in top bottom left right"); 1287 | }), 1288 | (m.prototype.hide = function (t) { 1289 | var e = this, 1290 | i = g(this.$tip), 1291 | o = g.Event("hide.bs." + this.type); 1292 | function n() { 1293 | "in" != e.hoverState && i.detach(), 1294 | e.$element && 1295 | e.$element 1296 | .removeAttr("aria-describedby") 1297 | .trigger("hidden.bs." + e.type), 1298 | t && t(); 1299 | } 1300 | if ((this.$element.trigger(o), !o.isDefaultPrevented())) 1301 | return ( 1302 | i.removeClass("in"), 1303 | g.support.transition && i.hasClass("fade") 1304 | ? i 1305 | .one("bsTransitionEnd", n) 1306 | .emulateTransitionEnd(m.TRANSITION_DURATION) 1307 | : n(), 1308 | (this.hoverState = null), 1309 | this 1310 | ); 1311 | }), 1312 | (m.prototype.fixTitle = function () { 1313 | var t = this.$element; 1314 | (t.attr("title") || "string" != typeof t.attr("data-original-title")) && 1315 | t 1316 | .attr("data-original-title", t.attr("title") || "") 1317 | .attr("title", ""); 1318 | }), 1319 | (m.prototype.hasContent = function () { 1320 | return this.getTitle(); 1321 | }), 1322 | (m.prototype.getPosition = function (t) { 1323 | var e = (t = t || this.$element)[0], 1324 | i = "BODY" == e.tagName, 1325 | o = e.getBoundingClientRect(); 1326 | null == o.width && 1327 | (o = g.extend({}, o, { 1328 | width: o.right - o.left, 1329 | height: o.bottom - o.top, 1330 | })); 1331 | var n = window.SVGElement && e instanceof window.SVGElement, 1332 | s = i ? { top: 0, left: 0 } : n ? null : t.offset(), 1333 | a = { 1334 | scroll: i 1335 | ? document.documentElement.scrollTop || document.body.scrollTop 1336 | : t.scrollTop(), 1337 | }, 1338 | r = i 1339 | ? { width: g(window).width(), height: g(window).height() } 1340 | : null; 1341 | return g.extend({}, o, a, r, s); 1342 | }), 1343 | (m.prototype.getCalculatedOffset = function (t, e, i, o) { 1344 | return "bottom" == t 1345 | ? { top: e.top + e.height, left: e.left + e.width / 2 - i / 2 } 1346 | : "top" == t 1347 | ? { top: e.top - o, left: e.left + e.width / 2 - i / 2 } 1348 | : "left" == t 1349 | ? { top: e.top + e.height / 2 - o / 2, left: e.left - i } 1350 | : { top: e.top + e.height / 2 - o / 2, left: e.left + e.width }; 1351 | }), 1352 | (m.prototype.getViewportAdjustedDelta = function (t, e, i, o) { 1353 | var n = { top: 0, left: 0 }; 1354 | if (!this.$viewport) return n; 1355 | var s = (this.options.viewport && this.options.viewport.padding) || 0, 1356 | a = this.getPosition(this.$viewport); 1357 | if (/right|left/.test(t)) { 1358 | var r = e.top - s - a.scroll, 1359 | l = e.top + s - a.scroll + o; 1360 | r < a.top 1361 | ? (n.top = a.top - r) 1362 | : l > a.top + a.height && (n.top = a.top + a.height - l); 1363 | } else { 1364 | var h = e.left - s, 1365 | d = e.left + s + i; 1366 | h < a.left 1367 | ? (n.left = a.left - h) 1368 | : d > a.right && (n.left = a.left + a.width - d); 1369 | } 1370 | return n; 1371 | }), 1372 | (m.prototype.getTitle = function () { 1373 | var t = this.$element, 1374 | e = this.options; 1375 | return ( 1376 | t.attr("data-original-title") || 1377 | ("function" == typeof e.title ? e.title.call(t[0]) : e.title) 1378 | ); 1379 | }), 1380 | (m.prototype.getUID = function (t) { 1381 | for (; (t += ~~(1e6 * Math.random())), document.getElementById(t); ); 1382 | return t; 1383 | }), 1384 | (m.prototype.tip = function () { 1385 | if ( 1386 | !this.$tip && 1387 | ((this.$tip = g(this.options.template)), 1 != this.$tip.length) 1388 | ) 1389 | throw new Error( 1390 | this.type + 1391 | " `template` option must consist of exactly 1 top-level element!" 1392 | ); 1393 | return this.$tip; 1394 | }), 1395 | (m.prototype.arrow = function () { 1396 | return (this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")); 1397 | }), 1398 | (m.prototype.enable = function () { 1399 | this.enabled = !0; 1400 | }), 1401 | (m.prototype.disable = function () { 1402 | this.enabled = !1; 1403 | }), 1404 | (m.prototype.toggleEnabled = function () { 1405 | this.enabled = !this.enabled; 1406 | }), 1407 | (m.prototype.toggle = function (t) { 1408 | var e = this; 1409 | t && 1410 | ((e = g(t.currentTarget).data("bs." + this.type)) || 1411 | ((e = new this.constructor( 1412 | t.currentTarget, 1413 | this.getDelegateOptions() 1414 | )), 1415 | g(t.currentTarget).data("bs." + this.type, e))), 1416 | t 1417 | ? ((e.inState.click = !e.inState.click), 1418 | e.isInStateTrue() ? e.enter(e) : e.leave(e)) 1419 | : e.tip().hasClass("in") 1420 | ? e.leave(e) 1421 | : e.enter(e); 1422 | }), 1423 | (m.prototype.destroy = function () { 1424 | var t = this; 1425 | clearTimeout(this.timeout), 1426 | this.hide(function () { 1427 | t.$element.off("." + t.type).removeData("bs." + t.type), 1428 | t.$tip && t.$tip.detach(), 1429 | (t.$tip = null), 1430 | (t.$arrow = null), 1431 | (t.$viewport = null), 1432 | (t.$element = null); 1433 | }); 1434 | }), 1435 | (m.prototype.sanitizeHtml = function (t) { 1436 | return n(t, this.options.whiteList, this.options.sanitizeFn); 1437 | }); 1438 | var e = g.fn.tooltip; 1439 | (g.fn.tooltip = function i(o) { 1440 | return this.each(function () { 1441 | var t = g(this), 1442 | e = t.data("bs.tooltip"), 1443 | i = "object" == typeof o && o; 1444 | (!e && /destroy|hide/.test(o)) || 1445 | (e || t.data("bs.tooltip", (e = new m(this, i))), 1446 | "string" == typeof o && e[o]()); 1447 | }); 1448 | }), 1449 | (g.fn.tooltip.Constructor = m), 1450 | (g.fn.tooltip.noConflict = function () { 1451 | return (g.fn.tooltip = e), this; 1452 | }); 1453 | })(jQuery), 1454 | (function (n) { 1455 | "use strict"; 1456 | var s = function (t, e) { 1457 | this.init("popover", t, e); 1458 | }; 1459 | if (!n.fn.tooltip) throw new Error("Popover requires tooltip.js"); 1460 | (s.VERSION = "3.4.1"), 1461 | (s.DEFAULTS = n.extend({}, n.fn.tooltip.Constructor.DEFAULTS, { 1462 | placement: "right", 1463 | trigger: "click", 1464 | content: "", 1465 | template: 1466 | '', 1467 | })), 1468 | (((s.prototype = n.extend( 1469 | {}, 1470 | n.fn.tooltip.Constructor.prototype 1471 | )).constructor = s).prototype.getDefaults = function () { 1472 | return s.DEFAULTS; 1473 | }), 1474 | (s.prototype.setContent = function () { 1475 | var t = this.tip(), 1476 | e = this.getTitle(), 1477 | i = this.getContent(); 1478 | if (this.options.html) { 1479 | var o = typeof i; 1480 | this.options.sanitize && 1481 | ((e = this.sanitizeHtml(e)), 1482 | "string" === o && (i = this.sanitizeHtml(i))), 1483 | t.find(".popover-title").html(e), 1484 | t 1485 | .find(".popover-content") 1486 | .children() 1487 | .detach() 1488 | .end() 1489 | ["string" === o ? "html" : "append"](i); 1490 | } else 1491 | t.find(".popover-title").text(e), 1492 | t.find(".popover-content").children().detach().end().text(i); 1493 | t.removeClass("fade top bottom left right in"), 1494 | t.find(".popover-title").html() || t.find(".popover-title").hide(); 1495 | }), 1496 | (s.prototype.hasContent = function () { 1497 | return this.getTitle() || this.getContent(); 1498 | }), 1499 | (s.prototype.getContent = function () { 1500 | var t = this.$element, 1501 | e = this.options; 1502 | return ( 1503 | t.attr("data-content") || 1504 | ("function" == typeof e.content ? e.content.call(t[0]) : e.content) 1505 | ); 1506 | }), 1507 | (s.prototype.arrow = function () { 1508 | return (this.$arrow = this.$arrow || this.tip().find(".arrow")); 1509 | }); 1510 | var t = n.fn.popover; 1511 | (n.fn.popover = function e(o) { 1512 | return this.each(function () { 1513 | var t = n(this), 1514 | e = t.data("bs.popover"), 1515 | i = "object" == typeof o && o; 1516 | (!e && /destroy|hide/.test(o)) || 1517 | (e || t.data("bs.popover", (e = new s(this, i))), 1518 | "string" == typeof o && e[o]()); 1519 | }); 1520 | }), 1521 | (n.fn.popover.Constructor = s), 1522 | (n.fn.popover.noConflict = function () { 1523 | return (n.fn.popover = t), this; 1524 | }); 1525 | })(jQuery), 1526 | (function (s) { 1527 | "use strict"; 1528 | function n(t, e) { 1529 | (this.$body = s(document.body)), 1530 | (this.$scrollElement = s(t).is(document.body) ? s(window) : s(t)), 1531 | (this.options = s.extend({}, n.DEFAULTS, e)), 1532 | (this.selector = (this.options.target || "") + " .nav li > a"), 1533 | (this.offsets = []), 1534 | (this.targets = []), 1535 | (this.activeTarget = null), 1536 | (this.scrollHeight = 0), 1537 | this.$scrollElement.on( 1538 | "scroll.bs.scrollspy", 1539 | s.proxy(this.process, this) 1540 | ), 1541 | this.refresh(), 1542 | this.process(); 1543 | } 1544 | function e(o) { 1545 | return this.each(function () { 1546 | var t = s(this), 1547 | e = t.data("bs.scrollspy"), 1548 | i = "object" == typeof o && o; 1549 | e || t.data("bs.scrollspy", (e = new n(this, i))), 1550 | "string" == typeof o && e[o](); 1551 | }); 1552 | } 1553 | (n.VERSION = "3.4.1"), 1554 | (n.DEFAULTS = { offset: 10 }), 1555 | (n.prototype.getScrollHeight = function () { 1556 | return ( 1557 | this.$scrollElement[0].scrollHeight || 1558 | Math.max( 1559 | this.$body[0].scrollHeight, 1560 | document.documentElement.scrollHeight 1561 | ) 1562 | ); 1563 | }), 1564 | (n.prototype.refresh = function () { 1565 | var t = this, 1566 | o = "offset", 1567 | n = 0; 1568 | (this.offsets = []), 1569 | (this.targets = []), 1570 | (this.scrollHeight = this.getScrollHeight()), 1571 | s.isWindow(this.$scrollElement[0]) || 1572 | ((o = "position"), (n = this.$scrollElement.scrollTop())), 1573 | this.$body 1574 | .find(this.selector) 1575 | .map(function () { 1576 | var t = s(this), 1577 | e = t.data("target") || t.attr("href"), 1578 | i = /^#./.test(e) && s(e); 1579 | return ( 1580 | (i && i.length && i.is(":visible") && [[i[o]().top + n, e]]) || 1581 | null 1582 | ); 1583 | }) 1584 | .sort(function (t, e) { 1585 | return t[0] - e[0]; 1586 | }) 1587 | .each(function () { 1588 | t.offsets.push(this[0]), t.targets.push(this[1]); 1589 | }); 1590 | }), 1591 | (n.prototype.process = function () { 1592 | var t, 1593 | e = this.$scrollElement.scrollTop() + this.options.offset, 1594 | i = this.getScrollHeight(), 1595 | o = this.options.offset + i - this.$scrollElement.height(), 1596 | n = this.offsets, 1597 | s = this.targets, 1598 | a = this.activeTarget; 1599 | if ((this.scrollHeight != i && this.refresh(), o <= e)) 1600 | return a != (t = s[s.length - 1]) && this.activate(t); 1601 | if (a && e < n[0]) return (this.activeTarget = null), this.clear(); 1602 | for (t = n.length; t--; ) 1603 | a != s[t] && 1604 | e >= n[t] && 1605 | (n[t + 1] === undefined || e < n[t + 1]) && 1606 | this.activate(s[t]); 1607 | }), 1608 | (n.prototype.activate = function (t) { 1609 | (this.activeTarget = t), this.clear(); 1610 | var e = 1611 | this.selector + 1612 | '[data-target="' + 1613 | t + 1614 | '"],' + 1615 | this.selector + 1616 | '[href="' + 1617 | t + 1618 | '"]', 1619 | i = s(e).parents("li").addClass("active"); 1620 | i.parent(".dropdown-menu").length && 1621 | (i = i.closest("li.dropdown").addClass("active")), 1622 | i.trigger("activate.bs.scrollspy"); 1623 | }), 1624 | (n.prototype.clear = function () { 1625 | s(this.selector) 1626 | .parentsUntil(this.options.target, ".active") 1627 | .removeClass("active"); 1628 | }); 1629 | var t = s.fn.scrollspy; 1630 | (s.fn.scrollspy = e), 1631 | (s.fn.scrollspy.Constructor = n), 1632 | (s.fn.scrollspy.noConflict = function () { 1633 | return (s.fn.scrollspy = t), this; 1634 | }), 1635 | s(window).on("load.bs.scrollspy.data-api", function () { 1636 | s('[data-spy="scroll"]').each(function () { 1637 | var t = s(this); 1638 | e.call(t, t.data()); 1639 | }); 1640 | }); 1641 | })(jQuery), 1642 | (function (r) { 1643 | "use strict"; 1644 | var a = function (t) { 1645 | this.element = r(t); 1646 | }; 1647 | function e(i) { 1648 | return this.each(function () { 1649 | var t = r(this), 1650 | e = t.data("bs.tab"); 1651 | e || t.data("bs.tab", (e = new a(this))), 1652 | "string" == typeof i && e[i](); 1653 | }); 1654 | } 1655 | (a.VERSION = "3.4.1"), 1656 | (a.TRANSITION_DURATION = 150), 1657 | (a.prototype.show = function () { 1658 | var t = this.element, 1659 | e = t.closest("ul:not(.dropdown-menu)"), 1660 | i = t.data("target"); 1661 | if ( 1662 | (i || (i = (i = t.attr("href")) && i.replace(/.*(?=#[^\s]*$)/, "")), 1663 | !t.parent("li").hasClass("active")) 1664 | ) { 1665 | var o = e.find(".active:last a"), 1666 | n = r.Event("hide.bs.tab", { relatedTarget: t[0] }), 1667 | s = r.Event("show.bs.tab", { relatedTarget: o[0] }); 1668 | if ( 1669 | (o.trigger(n), 1670 | t.trigger(s), 1671 | !s.isDefaultPrevented() && !n.isDefaultPrevented()) 1672 | ) { 1673 | var a = r(document).find(i); 1674 | this.activate(t.closest("li"), e), 1675 | this.activate(a, a.parent(), function () { 1676 | o.trigger({ type: "hidden.bs.tab", relatedTarget: t[0] }), 1677 | t.trigger({ type: "shown.bs.tab", relatedTarget: o[0] }); 1678 | }); 1679 | } 1680 | } 1681 | }), 1682 | (a.prototype.activate = function (t, e, i) { 1683 | var o = e.find("> .active"), 1684 | n = 1685 | i && 1686 | r.support.transition && 1687 | ((o.length && o.hasClass("fade")) || !!e.find("> .fade").length); 1688 | function s() { 1689 | o 1690 | .removeClass("active") 1691 | .find("> .dropdown-menu > .active") 1692 | .removeClass("active") 1693 | .end() 1694 | .find('[data-toggle="tab"]') 1695 | .attr("aria-expanded", !1), 1696 | t 1697 | .addClass("active") 1698 | .find('[data-toggle="tab"]') 1699 | .attr("aria-expanded", !0), 1700 | n ? (t[0].offsetWidth, t.addClass("in")) : t.removeClass("fade"), 1701 | t.parent(".dropdown-menu").length && 1702 | t 1703 | .closest("li.dropdown") 1704 | .addClass("active") 1705 | .end() 1706 | .find('[data-toggle="tab"]') 1707 | .attr("aria-expanded", !0), 1708 | i && i(); 1709 | } 1710 | o.length && n 1711 | ? o 1712 | .one("bsTransitionEnd", s) 1713 | .emulateTransitionEnd(a.TRANSITION_DURATION) 1714 | : s(), 1715 | o.removeClass("in"); 1716 | }); 1717 | var t = r.fn.tab; 1718 | (r.fn.tab = e), 1719 | (r.fn.tab.Constructor = a), 1720 | (r.fn.tab.noConflict = function () { 1721 | return (r.fn.tab = t), this; 1722 | }); 1723 | var i = function (t) { 1724 | t.preventDefault(), e.call(r(this), "show"); 1725 | }; 1726 | r(document) 1727 | .on("click.bs.tab.data-api", '[data-toggle="tab"]', i) 1728 | .on("click.bs.tab.data-api", '[data-toggle="pill"]', i); 1729 | })(jQuery), 1730 | (function (l) { 1731 | "use strict"; 1732 | var h = function (t, e) { 1733 | this.options = l.extend({}, h.DEFAULTS, e); 1734 | var i = 1735 | this.options.target === h.DEFAULTS.target 1736 | ? l(this.options.target) 1737 | : l(document).find(this.options.target); 1738 | (this.$target = i 1739 | .on("scroll.bs.affix.data-api", l.proxy(this.checkPosition, this)) 1740 | .on( 1741 | "click.bs.affix.data-api", 1742 | l.proxy(this.checkPositionWithEventLoop, this) 1743 | )), 1744 | (this.$element = l(t)), 1745 | (this.affixed = null), 1746 | (this.unpin = null), 1747 | (this.pinnedOffset = null), 1748 | this.checkPosition(); 1749 | }; 1750 | function i(o) { 1751 | return this.each(function () { 1752 | var t = l(this), 1753 | e = t.data("bs.affix"), 1754 | i = "object" == typeof o && o; 1755 | e || t.data("bs.affix", (e = new h(this, i))), 1756 | "string" == typeof o && e[o](); 1757 | }); 1758 | } 1759 | (h.VERSION = "3.4.1"), 1760 | (h.RESET = "affix affix-top affix-bottom"), 1761 | (h.DEFAULTS = { offset: 0, target: window }), 1762 | (h.prototype.getState = function (t, e, i, o) { 1763 | var n = this.$target.scrollTop(), 1764 | s = this.$element.offset(), 1765 | a = this.$target.height(); 1766 | if (null != i && "top" == this.affixed) return n < i && "top"; 1767 | if ("bottom" == this.affixed) 1768 | return null != i 1769 | ? !(n + this.unpin <= s.top) && "bottom" 1770 | : !(n + a <= t - o) && "bottom"; 1771 | var r = null == this.affixed, 1772 | l = r ? n : s.top; 1773 | return null != i && n <= i 1774 | ? "top" 1775 | : null != o && t - o <= l + (r ? a : e) && "bottom"; 1776 | }), 1777 | (h.prototype.getPinnedOffset = function () { 1778 | if (this.pinnedOffset) return this.pinnedOffset; 1779 | this.$element.removeClass(h.RESET).addClass("affix"); 1780 | var t = this.$target.scrollTop(), 1781 | e = this.$element.offset(); 1782 | return (this.pinnedOffset = e.top - t); 1783 | }), 1784 | (h.prototype.checkPositionWithEventLoop = function () { 1785 | setTimeout(l.proxy(this.checkPosition, this), 1); 1786 | }), 1787 | (h.prototype.checkPosition = function () { 1788 | if (this.$element.is(":visible")) { 1789 | var t = this.$element.height(), 1790 | e = this.options.offset, 1791 | i = e.top, 1792 | o = e.bottom, 1793 | n = Math.max(l(document).height(), l(document.body).height()); 1794 | "object" != typeof e && (o = i = e), 1795 | "function" == typeof i && (i = e.top(this.$element)), 1796 | "function" == typeof o && (o = e.bottom(this.$element)); 1797 | var s = this.getState(n, t, i, o); 1798 | if (this.affixed != s) { 1799 | null != this.unpin && this.$element.css("top", ""); 1800 | var a = "affix" + (s ? "-" + s : ""), 1801 | r = l.Event(a + ".bs.affix"); 1802 | if ((this.$element.trigger(r), r.isDefaultPrevented())) return; 1803 | (this.affixed = s), 1804 | (this.unpin = "bottom" == s ? this.getPinnedOffset() : null), 1805 | this.$element 1806 | .removeClass(h.RESET) 1807 | .addClass(a) 1808 | .trigger(a.replace("affix", "affixed") + ".bs.affix"); 1809 | } 1810 | "bottom" == s && this.$element.offset({ top: n - t - o }); 1811 | } 1812 | }); 1813 | var t = l.fn.affix; 1814 | (l.fn.affix = i), 1815 | (l.fn.affix.Constructor = h), 1816 | (l.fn.affix.noConflict = function () { 1817 | return (l.fn.affix = t), this; 1818 | }), 1819 | l(window).on("load", function () { 1820 | l('[data-spy="affix"]').each(function () { 1821 | var t = l(this), 1822 | e = t.data(); 1823 | (e.offset = e.offset || {}), 1824 | null != e.offsetBottom && (e.offset.bottom = e.offsetBottom), 1825 | null != e.offsetTop && (e.offset.top = e.offsetTop), 1826 | i.call(t, e); 1827 | }); 1828 | }); 1829 | })(jQuery); 1830 | --------------------------------------------------------------------------------