├── README.md
├── camera_recognition.py
├── detect_faces.py
├── faceData
└── text.txt
├── faceInfoData.db
├── haarcascade_frontalface_default.xml
├── server.py
├── static
├── .travis.yml
├── addface.js
├── css
│ ├── cyber-security-background-14.jpg
│ ├── simple-sidebar.css
│ └── style.css
├── gulpfile.js
├── package-lock.json
├── package.json
├── recorder.js
├── vendor
│ ├── bootstrap
│ │ ├── css
│ │ │ ├── bootstrap-grid.css
│ │ │ ├── bootstrap-grid.min.css
│ │ │ ├── bootstrap-reboot.css
│ │ │ ├── bootstrap-reboot.min.css
│ │ │ ├── bootstrap.css
│ │ │ ├── bootstrap.css.map
│ │ │ ├── bootstrap.min.css
│ │ │ └── bootstrap.min.css.map
│ │ └── js
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.bundle.js.map
│ │ │ ├── bootstrap.bundle.min.js
│ │ │ ├── bootstrap.bundle.min.js.map
│ │ │ ├── bootstrap.js
│ │ │ ├── bootstrap.js.map
│ │ │ ├── bootstrap.min.js
│ │ │ └── bootstrap.min.js.map
│ └── jquery
│ │ ├── jquery.js
│ │ ├── jquery.min.js
│ │ ├── jquery.min.map
│ │ ├── jquery.slim.js
│ │ ├── jquery.slim.min.js
│ │ └── jquery.slim.min.map
└── video.avi
├── templates
├── add_face.html
├── add_visitor.html
├── home.html
├── index.html
├── index2.html
├── success.html
└── visitors_list.html
└── trainedData
└── trainingData.yml
/README.md:
--------------------------------------------------------------------------------
1 | # Computer-Vision-Security-System
2 | A Security System using the face recognition, which can be monitored from anywhere using a HTTP server, coded using Python and Jinja2.
3 |
4 |
5 | # Installation
6 | ## System Requirements
7 |
8 | ### 1. Python3
9 | > Install Python3 for Windows/Linux/Mac OS from https://www.python.org/downloads/release/python-3
10 |
11 | ### 2. SqliteBrowser(for sqlite database)
12 | > Download and Install SQLite Browser , to view/modify the sqlite database from https://sqlitebrowser.org/
13 |
14 | ### 3. pip
15 | > 1. Download it get-pip.py file from https://bootstrap.pypa.io
16 | > 2. Open terminal and install pip `python get-pip.py`
17 |
18 |
19 | ## Python Packages Requirements
20 | > `pip install numpy pillow flask opencv-python opencv-contrib-python twilio dropbox`
21 |
22 |
23 | ## Hardware Requirements
24 | > 1. 2 cameras, 1 for surveillance and another to take face data for training face recognizer
25 | > 2. A server to host the Web server
26 | > 3. Router (optional)
27 |
28 |
29 | ## Cloning the code from git
30 | > 1. `git clone https://github.com/shangeth/Computer-Vision-Security-System.git`
31 |
32 |
33 | ## Running the program
34 | > 1. `cd server`
35 | > 2. `python server.py` this will open the webserver on `127.0.0.1:5000`
36 |
37 |
38 | ## How does it work
39 | > 1. Home page will show live feed of camera and log of people who visited the facility.
40 | > 2. Add Visitor allows you to enter the details of new visitor who need to be added/permitted into the facility.
41 | > 3. After adding details of the new visitor, `python detect_faces.py`. Before running it make sure the new visitor’s face is in front of the second USB camera.
42 |
43 |
44 | ## Enabling SMS notification(optional)
45 | > 1. Go to `twilio.com` and create an developer account and get the auth token and SID for the application.
46 | > 2. Go to `dropbox.com` and create an developer account and generate auth token for the application in create app section.
47 | > 3. `nano camera_recognition.py` and edit line 40 and 61 to enter your credentials.
48 |
--------------------------------------------------------------------------------
/camera_recognition.py:
--------------------------------------------------------------------------------
1 |
2 | import cv2
3 | import threading
4 | import sqlite3
5 | from time import gmtime, strftime,localtime
6 | import pathlib
7 | import dropbox
8 | import re
9 | from twilio.rest import Client
10 | import os
11 |
12 |
13 | recognizer = cv2.face.LBPHFaceRecognizer_create()
14 | recognizer.read('trainedData/trainingData.yml')
15 | global log
16 |
17 | def getProfile(id):
18 | conn = sqlite3.connect("faceInfoData.db")
19 | cur = conn.execute("SELECT * FROM Visitors WHERE ID=(?)",(id,))
20 | profile = None
21 | for row in cur:
22 | profile = row
23 | conn.close()
24 | return profile
25 |
26 |
27 | def dropbox_sms(filename,msg):
28 | # the source file
29 | # located in this folder
30 | # path object, defining the file
31 | folder = pathlib.Path("MessageLog") # located in this folder
32 | # file name
33 | filepath = folder / filename
34 |
35 | # target location in Dropbox
36 | target = "/Temp/" # the target folder
37 | targetfile = target + filename # the target path and file name
38 |
39 | # Create a dropbox object using an API v2 key
40 | d = dropbox.Dropbox('Enter your Key here!!!')
41 | '''
42 | CHANGE THE API from your dropbox account : change inside of d = dropbox.Dropbox('Your KEY here!!!!')
43 |
44 | '''
45 | # open the file and upload it
46 | with filepath.open("rb") as f:
47 | # upload gives you metadata about the file
48 | # we want to overwite any previous version of the file
49 | meta = d.files_upload(f.read(), targetfile, mode=dropbox.files.WriteMode("overwrite"))
50 |
51 | # create a shared link
52 | link = d.sharing_create_shared_link(targetfile)
53 |
54 | # url which can be shared
55 | url = link.url
56 |
57 | # link which directly downloads by replacing ?dl=0 with ?dl=1
58 | dl_url = re.sub(r"\?dl\=0", "?dl=1", url)
59 |
60 | # the following line needs your Twilio Account SID and Auth Token
61 | client = Client("Account SID here!!", "Auth TOken here!!!")
62 | '''
63 | CHANGE THE SID AND AUTH TOKEN HERE!!!!!
64 | client = Client("YOur SID Here", "your AUTH Token here")
65 |
66 | '''
67 | # this is the URL to an image file we're going to send in the MMS
68 | media = dl_url
69 |
70 | # change the "from_" number to your Twilio number and the "to" number
71 | # to the phone number you signed up for Twilio with, or upgrade your
72 | # account to send MMS to any phone number that MMS is available
73 | '''
74 | type your phone number in to="phone numer here"
75 | type your twilio phne number in from="twilio phone number here"
76 | '''
77 | client.api.account.messages.create(to="your mobile number here",
78 | from_="+19412412342",
79 | body=msg,
80 | media_url=media)
81 |
82 | def visitor_msg(msgcount,frame,visitor_name):
83 | '''
84 | change the path into the path of the folder MessageLog
85 | '''
86 | path = '/home/shangeth/Desktop/Detect_face_Final_project/MessageLog/'
87 | filepath = os.path.join(path, str(msgcount) + '.jpg')
88 | filename = str(msgcount) + '.jpg'
89 | cv2.imwrite(filepath, frame)
90 | msgcount += 1
91 | msg = "Admin Alert: \n" + str(visitor_name) + " has visited the facility, at " + strftime("%Y-%m-%|%H:%M:%S",localtime())
92 | # dropbox_sms(filename, msg)
93 |
94 |
95 | '''
96 | change the path into the path of the folder MessageLog
97 | '''
98 | def unknown_msg(msgcount,frame,visitor_name):
99 | path = '/home/shangeth/Desktop/Detect_face_Final_project/MessageLog/'
100 | filepath = os.path.join(path, str(msgcount) + '.jpg')
101 | filename = str(msgcount) + '.jpg'
102 | cv2.imwrite(filepath, frame)
103 | msgcount += 1
104 | msg = "Admin Alert: \n" + str(visitor_name) + " person entered the facility, at " + strftime("%Y-%m-%d|%H:%M:%S",localtime())
105 | # dropbox_sms(filename, msg)
106 |
107 |
108 |
109 | class RecordingThread(threading.Thread):
110 | def __init__(self, name, camera):
111 | threading.Thread.__init__(self)
112 | self.name = name
113 | self.isRunning = True
114 |
115 | self.cap = camera
116 | fourcc = cv2.VideoWriter_fourcc(*'MJPG')
117 | self.out = cv2.VideoWriter('./static/video.avi', fourcc, 20.0, (640, 480))
118 |
119 | def run(self):
120 | while self.isRunning:
121 | ret, frame = self.cap.read()
122 | if ret:
123 | self.out.write(frame)
124 |
125 | self.out.release()
126 |
127 | def stop(self):
128 | self.isRunning = False
129 |
130 | def __del__(self):
131 | self.out.release()
132 |
133 |
134 | class VideoCamera(object):
135 | def __init__(self):
136 | # Open a camera
137 | '''
138 | change camera here
139 | inside VideCapture() put 1 for usb camera
140 | '''
141 | self.cap = cv2.VideoCapture(0)
142 |
143 | # Initialize video recording environment
144 | self.is_record = False
145 | self.out = None
146 |
147 | # Thread for recording
148 | self.recordingThread = None
149 |
150 | def __del__(self):
151 | self.cap.release()
152 |
153 | def get_frame(self):
154 | ret, frame = self.cap.read()
155 | count=0
156 | log = []
157 | msgcount = 0
158 | if ret:
159 | detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
160 | font = cv2.FONT_HERSHEY_SIMPLEX
161 | prev_profile = None
162 | gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
163 | faces = detector.detectMultiScale(gray, 1.3, 5)
164 | for (x, y, w, h) in faces:
165 | cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
166 | Id, conf = recognizer.predict(gray[y:y + h, x:x + w])
167 | c = sqlite3.connect("faceInfoData.db")
168 | conn = c.cursor()
169 | cur = conn.execute("SELECT visitor_name FROM log WHERE id = (SELECT MAX(id) FROM log)")
170 | name_q = cur.fetchone()
171 | if name_q != None:
172 | name_q = str(name_q[0])
173 | else:
174 | name_q = None
175 | conn.close()
176 | c.close()
177 |
178 | cur_time = strftime("%Y-%m-%d %H:%M:%S", localtime())
179 | if (conf < 70):
180 | profile = getProfile(Id)
181 | cv2.putText(frame, profile[1], (x, y + h), font, 1.0, (0, 255, 0), 2)
182 | cv2.putText(frame, str(profile[2]), (x, y + h + 30), font, 1.0, (0, 255, 0), 2)
183 | cv2.putText(frame, profile[3], (x, y + h + 60), font, 1.0, (0, 255, 0), 2)
184 |
185 |
186 | if prev_profile != profile and name_q != profile[1]:
187 | log.append([profile,cur_time])
188 | c = sqlite3.connect("faceInfoData.db")
189 | conn = c.cursor()
190 | conn.execute("INSERT INTO log (visitor_name, time) VALUES (?,?)", (profile[1],str(cur_time)))
191 | c.commit()
192 | conn.close()
193 |
194 | thread = threading.Thread(target=visitor_msg, args=(msgcount,frame,profile[1]))
195 | thread.daemon = True # Daemonize thread
196 | thread.start() # Start the execution
197 |
198 | prev_profile = profile
199 |
200 |
201 |
202 | elif conf >=70 :
203 | Id=0
204 | profile=None
205 | if name_q != 'Unknown':
206 | log.append([['Unknown','',''], cur_time])
207 | c = sqlite3.connect("faceInfoData.db")
208 | conn = c.cursor()
209 | conn.execute("INSERT INTO log (visitor_name, time) VALUES (?,?)", ('Unknown', str(cur_time)))
210 | c.commit()
211 | conn.close()
212 |
213 | thread = threading.Thread(target=unknown_msg, args=(msgcount, frame, 'Unknown'))
214 | thread.daemon = True # Daemonize thread
215 | thread.start() # Start the execution
216 |
217 | cv2.putText(frame, "Unknown", (x, y + h), font, 1.0, (0, 255, 0), 2)
218 | prev_profile = profile
219 |
220 | count +=1
221 | ret, jpeg = cv2.imencode('.jpg', frame)
222 | return jpeg.tobytes()
223 |
224 | else:
225 | return None
226 |
227 | def start_record(self):
228 | self.is_record = True
229 | self.recordingThread = RecordingThread("Video Recording Thread", self.cap)
230 | self.recordingThread.start()
231 |
232 | def stop_record(self):
233 | self.is_record = False
234 |
235 | if self.recordingThread != None:
236 | self.recordingThread.stop()
237 |
238 |
239 |
--------------------------------------------------------------------------------
/detect_faces.py:
--------------------------------------------------------------------------------
1 | import cv2
2 | import sqlite3
3 | import os
4 | import numpy as np
5 | from PIL import Image
6 |
7 | '''
8 | To change camera change the 0 to 1 for USB camera.
9 | '''
10 | cam = cv2.VideoCapture(0)
11 | detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
12 |
13 | def getID():
14 | conn = sqlite3.connect("faceInfoData.db")
15 | cur = conn.execute('SELECT max(id) FROM Visitors')
16 | id = cur.fetchone()[0]
17 | cur.close()
18 | return int(id)
19 |
20 |
21 | id = getID()
22 | idCount = 0
23 | while (True):
24 | ret, img = cam.read()
25 | gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
26 | faces = detector.detectMultiScale(gray, 1.3, 5)
27 | for (x, y, w, h) in faces:
28 | cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
29 |
30 | idCount = idCount + 1
31 | cv2.imwrite("faceData/User." + str(id) + '.' + str(idCount) + ".jpg", gray[y:y + h, x:x + w])
32 |
33 | cv2.imshow('frame', img)
34 | if cv2.waitKey(200) & 0xFF == ord('q'):
35 | break
36 | elif idCount > 20:
37 | break
38 | cam.release()
39 | cv2.destroyAllWindows()
40 |
41 |
42 | recognizer = cv2.face.LBPHFaceRecognizer_create()
43 | detector= cv2.CascadeClassifier("haarcascade_frontalface_default.xml");
44 |
45 | def getImagesAndLabels(path):
46 | imagePaths=[os.path.join(path,f) for f in os.listdir(path)]
47 | faceSamples=[]
48 | Ids=[]
49 |
50 | for imagePath in imagePaths:
51 | pilImage=Image.open(imagePath).convert('L')
52 |
53 | imageNp=np.array(pilImage,'uint8')
54 |
55 | Id=int(os.path.split(imagePath)[-1].split(".")[1])
56 | faces=detector.detectMultiScale(imageNp)
57 |
58 | for (x,y,w,h) in faces:
59 | faceSamples.append(imageNp[y:y+h,x:x+w])
60 | Ids.append(Id)
61 | return faceSamples,Ids
62 |
63 |
64 | faces,Ids = getImagesAndLabels('faceData')
65 | recognizer.train(faces, np.array(Ids))
66 | recognizer.save('trainedData/trainingData.yml')
67 |
--------------------------------------------------------------------------------
/faceData/text.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shangeth/Computer-Vision-Security-System/a0a320f4c9531409bc61c4401f14cd165d289b23/faceData/text.txt
--------------------------------------------------------------------------------
/faceInfoData.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shangeth/Computer-Vision-Security-System/a0a320f4c9531409bc61c4401f14cd165d289b23/faceInfoData.db
--------------------------------------------------------------------------------
/server.py:
--------------------------------------------------------------------------------
1 | from flask import Flask, render_template, Response, jsonify, request,redirect,url_for
2 | from camera_recognition import VideoCamera
3 | import cv2
4 | import sqlite3
5 | import os
6 | import numpy as np
7 | from PIL import Image
8 |
9 | #flask configuration
10 | app = Flask(__name__)
11 | app.config['SECRET_KEY'] = 'you-will-never-guess'
12 |
13 | video_camera = None
14 | global_frame = None
15 |
16 | #Home page for the WebApp
17 | @app.route('/')
18 | def index():
19 | c = sqlite3.connect("faceInfoData.db")
20 | conn = c.cursor()
21 | cur = conn.execute("SELECT * FROM log ")
22 | logs=cur.fetchall()
23 | c.commit()
24 | conn.close()
25 | return render_template('home.html',logs=logs)
26 |
27 | #Record config route
28 | @app.route('/record_status', methods=['POST'])
29 | def record_status():
30 | global video_camera
31 | if video_camera == None:
32 | video_camera = VideoCamera()
33 |
34 | json = request.get_json()
35 |
36 | status = json['status']
37 |
38 | if status == "true":
39 | video_camera.start_record()
40 | return jsonify(result="started")
41 | else:
42 | video_camera.stop_record()
43 | return jsonify(result="stopped")
44 |
45 | # to stream the video
46 | def video_stream():
47 | global video_camera
48 | global global_frame
49 |
50 | if video_camera == None:
51 | video_camera = VideoCamera()
52 | while True:
53 | frame = video_camera.get_frame()
54 |
55 | if frame != None:
56 | global_frame = frame
57 | yield (b'--frame\r\n'
58 | b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')
59 | else:
60 | yield (b'--frame\r\n'
61 | b'Content-Type: image/jpeg\r\n\r\n' + global_frame + b'\r\n\r\n')
62 |
63 | #This route shows the video in the html
64 | @app.route('/video_viewer')
65 | def video_viewer():
66 | return Response(video_stream(),mimetype='multipart/x-mixed-replace; boundary=frame')
67 |
68 | # page to add new visitors
69 | @app.route('/addVisitor')
70 | def add_visitor():
71 | return render_template("add_visitor.html")
72 |
73 | #page which takes the new visitor details and process it into database
74 | @app.route("/submitVisitor",methods=['POST'])
75 | def submitVisitor():
76 | if request.method == "POST":
77 |
78 | name = request.form['visitor_name']
79 | age = request.form['visitor_age']
80 | sex = request.form['visitor_sex']
81 | c = sqlite3.connect("faceInfoData.db")
82 | conn=c.cursor()
83 | conn.execute("INSERT INTO Visitors (Name, Age, Sex) VALUES (?,?,?)", (name, age, sex))
84 | c.commit()
85 | conn.close()
86 | return render_template("add_face.html",name=name,age=age,sex=sex)
87 |
88 | else:
89 | return "
Lol ... GET Method not allowed "
90 |
91 |
92 | # gets the last id from database to match with the picture takem
93 | def getID():
94 | conn = sqlite3.connect("faceInfoData.db")
95 | cur = conn.execute('SELECT max(id) FROM Visitors')
96 | id = cur.fetchone()[0]
97 | cur.close()
98 | return int(id)
99 |
100 | def getImagesAndLabels(path):
101 | imagePaths=[os.path.join(path,f) for f in os.listdir(path)]
102 | faceSamples=[]
103 | Ids=[]
104 | detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
105 |
106 | for imagePath in imagePaths:
107 | pilImage=Image.open(imagePath).convert('L')
108 |
109 | imageNp=np.array(pilImage,'uint8')
110 |
111 | Id=int(os.path.split(imagePath)[-1].split(".")[1])
112 | faces=detector.detectMultiScale(imageNp)
113 |
114 | for (x,y,w,h) in faces:
115 | faceSamples.append(imageNp[y:y+h,x:x+w])
116 | Ids.append(Id)
117 | return faceSamples,Ids
118 |
119 |
120 |
121 | # this page takes pictures for the face recognition
122 | @app.route("/takepic", methods=['GET'])
123 | def takepic():
124 | cam = cv2.VideoCapture(1)
125 | detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
126 |
127 | id = getID()
128 | idCount = 0
129 | while (True):
130 | ret, img = cam.read()
131 | gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
132 | faces = detector.detectMultiScale(gray, 1.3, 5)
133 | for (x, y, w, h) in faces:
134 | cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
135 |
136 | idCount = idCount + 1
137 | cv2.imwrite("faceData/User." + str(id) + '.' + str(idCount) + ".jpg", gray[y:y + h, x:x + w])
138 |
139 | cv2.imshow('frame', img)
140 | if cv2.waitKey(100) & 0xFF == ord('q'):
141 | break
142 | elif idCount > 30:
143 | break
144 | cam.release()
145 | cv2.destroyAllWindows()
146 |
147 | recognizer = cv2.face.LBPHFaceRecognizer_create()
148 | detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml");
149 |
150 | faces, Ids = getImagesAndLabels('faceData')
151 | recognizer.train(faces, np.array(Ids))
152 | print("Training")
153 | recognizer.save('trainedData/trainingData.yml')
154 | print("saving to yml")
155 | return render_template('success.html')
156 |
157 |
158 | # Shows all the visitors who are allowed
159 | @app.route('/visitorList')
160 | def visitor_list():
161 | c = sqlite3.connect("faceInfoData.db")
162 | conn = c.cursor()
163 | cur = conn.execute("SELECT * FROM Visitors")
164 | visitors = cur.fetchall()
165 | return render_template("visitors_list.html",visitors = visitors)
166 |
167 |
168 |
169 | #run the server
170 | if __name__ == '__main__':
171 | app.run(host='0.0.0.0', threaded=True, debug=True)
172 |
--------------------------------------------------------------------------------
/static/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: false
2 | language: node_js
3 | node_js:
4 | - "node"
5 | install: npm install
6 | script:
7 | - npm test
8 | - gulp
9 | cache:
10 | directories:
11 | - node_modules
12 |
--------------------------------------------------------------------------------
/static/addface.js:
--------------------------------------------------------------------------------
1 | document.querySelector('#addface').onsubmit = () =>{
2 | const request = new XMLHttpRequest();
3 | request.open('POST','/takepic');
4 | request.onload()=>{
5 | const data = JSON.parse(request.responseText);
6 |
7 | if(data.success){
8 | const content = data.msg
9 | document.querySelector('#here').innerHTML = content;
10 | }
11 | }
12 |
13 | }
--------------------------------------------------------------------------------
/static/css/cyber-security-background-14.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shangeth/Computer-Vision-Security-System/a0a320f4c9531409bc61c4401f14cd165d289b23/static/css/cyber-security-background-14.jpg
--------------------------------------------------------------------------------
/static/css/simple-sidebar.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Start Bootstrap - Simple Sidebar (https://startbootstrap.com/template-overviews/simple-sidebar)
3 | * Copyright 2013-2017 Start Bootstrap
4 | * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-simple-sidebar/blob/master/LICENSE)
5 | */
6 |
7 | body {
8 | overflow-x: hidden;
9 | }
10 |
11 | #wrapper {
12 | padding-left: 0;
13 | -webkit-transition: all 0.5s ease;
14 | -moz-transition: all 0.5s ease;
15 | -o-transition: all 0.5s ease;
16 | transition: all 0.5s ease;
17 | }
18 |
19 | #wrapper.toggled {
20 | padding-left: 250px;
21 | }
22 |
23 | #sidebar-wrapper {
24 | z-index: 1000;
25 | position: fixed;
26 | left: 250px;
27 | width: 0;
28 | height: 100%;
29 | margin-left: -250px;
30 | overflow-y: auto;
31 | background: #000;
32 | -webkit-transition: all 0.5s ease;
33 | -moz-transition: all 0.5s ease;
34 | -o-transition: all 0.5s ease;
35 | transition: all 0.5s ease;
36 | }
37 |
38 | #wrapper.toggled #sidebar-wrapper {
39 | width: 250px;
40 | }
41 |
42 | #page-content-wrapper {
43 | width: 100%;
44 | position: absolute;
45 | padding: 15px;
46 | }
47 |
48 | #wrapper.toggled #page-content-wrapper {
49 | position: absolute;
50 | margin-right: -250px;
51 | }
52 |
53 |
54 | /* Sidebar Styles */
55 |
56 | .sidebar-nav {
57 | position: absolute;
58 | top: 0;
59 | width: 250px;
60 | margin: 0;
61 | padding: 0;
62 | list-style: none;
63 | }
64 |
65 | .sidebar-nav li {
66 | text-indent: 20px;
67 | line-height: 40px;
68 | }
69 |
70 | .sidebar-nav li a {
71 | display: block;
72 | text-decoration: none;
73 | color: #999999;
74 | }
75 |
76 | .sidebar-nav li a:hover {
77 | text-decoration: none;
78 | color: #fff;
79 | background: rgba(255, 255, 255, 0.2);
80 | }
81 |
82 | .sidebar-nav li a:active, .sidebar-nav li a:focus {
83 | text-decoration: none;
84 | }
85 |
86 | .sidebar-nav>.sidebar-brand {
87 | height: 65px;
88 | font-size: 18px;
89 | line-height: 60px;
90 | }
91 |
92 | .sidebar-nav>.sidebar-brand a {
93 | color: #999999;
94 | }
95 |
96 | .sidebar-nav>.sidebar-brand a:hover {
97 | color: #fff;
98 | background: none;
99 | }
100 |
101 | @media(min-width:768px) {
102 | #wrapper {
103 | padding-left: 0;
104 | }
105 | #wrapper.toggled {
106 | padding-left: 250px;
107 | }
108 | #sidebar-wrapper {
109 | width: 0;
110 | }
111 | #wrapper.toggled #sidebar-wrapper {
112 | width: 250px;
113 | }
114 | #page-content-wrapper {
115 | padding: 20px;
116 | position: relative;
117 | }
118 | #wrapper.toggled #page-content-wrapper {
119 | position: relative;
120 | margin-right: 0;
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/static/css/style.css:
--------------------------------------------------------------------------------
1 | body{
2 | background: url("cyber-security-background-14.jpg");
3 | color: white;
4 | }
5 |
6 |
7 | .adminlive{
8 | background-color: rgba(184, 186, 188,0.3);
9 |
10 | padding: 20px;
11 | align-content: center;
12 | text-align: center;
13 | border-radius: 5px;
14 | display: inline-block;
15 | margin: 0 auto;
16 | width: 100%;
17 |
18 |
19 |
20 | }
21 |
22 | .log{
23 |
24 | background-color: rgba(184, 186, 188,0.3);
25 | padding: 20px;
26 | align-items: center;
27 | margin: 0 auto;
28 | width: 100%;
29 | ;
30 | border-radius: 5px;
31 |
32 | }
33 |
34 |
35 | .outcol{
36 | display: inline-block;
37 | position: relative;
38 | top: 30px;
39 |
40 | }
41 |
42 | #list{
43 | background-color: rgba(184, 186, 188,0.2);
44 | padding: 20px;
45 | border-radius: 5px;
46 | margin: 0 auto;
47 | width: 100%;
48 | position: relative;
49 | top: 50px;
50 | }
51 |
52 | .visitorform{
53 | background-color: rgba(184, 186, 188,0.2);
54 | padding: 20px;
55 | border-radius: 5px;
56 | margin: 0 auto;
57 | width: 100%;
58 | position: relative;
59 | top: 50px;
60 | }
61 |
62 | .outform{
63 |
64 | }
65 |
66 |
67 | .centered {
68 | position : relative;
69 | top: 50%;
70 | left: 50%;
71 | transform: translate(-50%, -50%);
72 | }
73 |
74 | .addface {
75 | background-color: rgba(184, 186, 188, 0.2);
76 | padding: 20px;
77 | border-radius: 5px;
78 | text-align: center;
79 | padding: 30px;
80 | }
81 |
82 | img{
83 | margin: 10px;
84 | }
85 | .suc{
86 | background-color: rgba(184, 186, 188, 0.2);
87 | padding: 20px;
88 | border-radius: 5px;
89 | text-align: center;
90 | }
--------------------------------------------------------------------------------
/static/gulpfile.js:
--------------------------------------------------------------------------------
1 | var gulp = require('gulp');
2 | var browserSync = require('browser-sync').create();
3 | var pkg = require('./package.json');
4 |
5 | // Copy third party libraries from /node_modules into /vendor
6 | gulp.task('vendor', function() {
7 |
8 | // Bootstrap
9 | gulp.src([
10 | './node_modules/bootstrap/dist/**/*',
11 | '!./node_modules/bootstrap/dist/css/bootstrap-grid*',
12 | '!./node_modules/bootstrap/dist/css/bootstrap-reboot*'
13 | ])
14 | .pipe(gulp.dest('./vendor/bootstrap'))
15 |
16 | // jQuery
17 | gulp.src([
18 | './node_modules/jquery/dist/*',
19 | '!./node_modules/jquery/dist/core.js'
20 | ])
21 | .pipe(gulp.dest('./vendor/jquery'))
22 |
23 | })
24 |
25 | // Default task
26 | gulp.task('default', ['vendor']);
27 |
28 | // Configure the browserSync task
29 | gulp.task('browserSync', function() {
30 | browserSync.init({
31 | server: {
32 | baseDir: "./"
33 | }
34 | });
35 | });
36 |
37 | // Dev task
38 | gulp.task('dev', ['browserSync'], function() {
39 | gulp.watch('./css/*.css', browserSync.reload);
40 | gulp.watch('./*.html', browserSync.reload);
41 | });
42 |
--------------------------------------------------------------------------------
/static/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "title": "Simple Sidebar",
3 | "name": "startbootstrap-simple-sidebar",
4 | "version": "4.1.1",
5 | "description": "A simple sidbar navigation HTMl template built with Bootstrap",
6 | "keywords": [
7 | "css",
8 | "sass",
9 | "html",
10 | "responsive",
11 | "theme",
12 | "template"
13 | ],
14 | "homepage": "https://startbootstrap.com/template-overviews/simple-sidebar",
15 | "bugs": {
16 | "url": "https://github.com/BlackrockDigital/startbootstrap-simple-sidebar/issues",
17 | "email": "feedback@startbootstrap.com"
18 | },
19 | "license": "MIT",
20 | "author": "Start Bootstrap",
21 | "contributors": [
22 | "David Miller (http://davidmiller.io/)"
23 | ],
24 | "repository": {
25 | "type": "git",
26 | "url": "https://github.com/BlackrockDigital/startbootstrap-simple-sidebar.git"
27 | },
28 | "dependencies": {
29 | "bootstrap": "4.1.1",
30 | "jquery": "3.3.1"
31 | },
32 | "devDependencies": {
33 | "browser-sync": "2.24.3",
34 | "gulp": "^3.9.1"
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/static/recorder.js:
--------------------------------------------------------------------------------
1 | var buttonRecord = document.getElementById("record");
2 | var buttonStop = document.getElementById("stop");
3 |
4 | buttonStop.disabled = true;
5 |
6 | buttonRecord.onclick = function() {
7 | // var url = window.location.href + "record_status";
8 | buttonRecord.disabled = true;
9 | buttonStop.disabled = false;
10 |
11 | // disable download link
12 | var downloadLink = document.getElementById("download");
13 | downloadLink.text = "";
14 | downloadLink.href = "";
15 |
16 | // XMLHttpRequest
17 | var xhr = new XMLHttpRequest();
18 | xhr.onreadystatechange = function() {
19 | if (xhr.readyState == 4 && xhr.status == 200) {
20 | // alert(xhr.responseText);
21 | }
22 | }
23 | xhr.open("POST", "/record_status");
24 | xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
25 | xhr.send(JSON.stringify({ status: "true" }));
26 | };
27 |
28 | buttonStop.onclick = function() {
29 | buttonRecord.disabled = false;
30 | buttonStop.disabled = true;
31 |
32 | // XMLHttpRequest
33 | var xhr = new XMLHttpRequest();
34 | xhr.onreadystatechange = function() {
35 | if (xhr.readyState == 4 && xhr.status == 200) {
36 | // alert(xhr.responseText);
37 |
38 | // enable download link
39 | var downloadLink = document.getElementById("download");
40 | downloadLink.text = "Download Video";
41 | downloadLink.href = "/static/video.avi";
42 | }
43 | }
44 | xhr.open("POST", "/record_status");
45 | xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
46 | xhr.send(JSON.stringify({ status: "false" }));
47 | };
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/static/vendor/bootstrap/css/bootstrap-grid.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Grid v4.0.0-beta.2 (https://getbootstrap.com)
3 | * Copyright 2011-2017 The Bootstrap Authors
4 | * Copyright 2011-2017 Twitter, Inc.
5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6 | */
7 | @-ms-viewport {
8 | width: device-width;
9 | }
10 |
11 | html {
12 | box-sizing: border-box;
13 | -ms-overflow-style: scrollbar;
14 | }
15 |
16 | *,
17 | *::before,
18 | *::after {
19 | box-sizing: inherit;
20 | }
21 |
22 | .container {
23 | width: 100%;
24 | padding-right: 15px;
25 | padding-left: 15px;
26 | margin-right: auto;
27 | margin-left: auto;
28 | }
29 |
30 | @media (min-width: 576px) {
31 | .container {
32 | max-width: 540px;
33 | }
34 | }
35 |
36 | @media (min-width: 768px) {
37 | .container {
38 | max-width: 720px;
39 | }
40 | }
41 |
42 | @media (min-width: 992px) {
43 | .container {
44 | max-width: 960px;
45 | }
46 | }
47 |
48 | @media (min-width: 1200px) {
49 | .container {
50 | max-width: 1140px;
51 | }
52 | }
53 |
54 | .container-fluid {
55 | width: 100%;
56 | padding-right: 15px;
57 | padding-left: 15px;
58 | margin-right: auto;
59 | margin-left: auto;
60 | }
61 |
62 | .row {
63 | display: -ms-flexbox;
64 | display: flex;
65 | -ms-flex-wrap: wrap;
66 | flex-wrap: wrap;
67 | margin-right: -15px;
68 | margin-left: -15px;
69 | }
70 |
71 | .no-gutters {
72 | margin-right: 0;
73 | margin-left: 0;
74 | }
75 |
76 | .no-gutters > .col,
77 | .no-gutters > [class*="col-"] {
78 | padding-right: 0;
79 | padding-left: 0;
80 | }
81 |
82 | .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,
83 | .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,
84 | .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,
85 | .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,
86 | .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,
87 | .col-xl-auto {
88 | position: relative;
89 | width: 100%;
90 | min-height: 1px;
91 | padding-right: 15px;
92 | padding-left: 15px;
93 | }
94 |
95 | .col {
96 | -ms-flex-preferred-size: 0;
97 | flex-basis: 0;
98 | -ms-flex-positive: 1;
99 | flex-grow: 1;
100 | max-width: 100%;
101 | }
102 |
103 | .col-auto {
104 | -ms-flex: 0 0 auto;
105 | flex: 0 0 auto;
106 | width: auto;
107 | max-width: none;
108 | }
109 |
110 | .col-1 {
111 | -ms-flex: 0 0 8.333333%;
112 | flex: 0 0 8.333333%;
113 | max-width: 8.333333%;
114 | }
115 |
116 | .col-2 {
117 | -ms-flex: 0 0 16.666667%;
118 | flex: 0 0 16.666667%;
119 | max-width: 16.666667%;
120 | }
121 |
122 | .col-3 {
123 | -ms-flex: 0 0 25%;
124 | flex: 0 0 25%;
125 | max-width: 25%;
126 | }
127 |
128 | .col-4 {
129 | -ms-flex: 0 0 33.333333%;
130 | flex: 0 0 33.333333%;
131 | max-width: 33.333333%;
132 | }
133 |
134 | .col-5 {
135 | -ms-flex: 0 0 41.666667%;
136 | flex: 0 0 41.666667%;
137 | max-width: 41.666667%;
138 | }
139 |
140 | .col-6 {
141 | -ms-flex: 0 0 50%;
142 | flex: 0 0 50%;
143 | max-width: 50%;
144 | }
145 |
146 | .col-7 {
147 | -ms-flex: 0 0 58.333333%;
148 | flex: 0 0 58.333333%;
149 | max-width: 58.333333%;
150 | }
151 |
152 | .col-8 {
153 | -ms-flex: 0 0 66.666667%;
154 | flex: 0 0 66.666667%;
155 | max-width: 66.666667%;
156 | }
157 |
158 | .col-9 {
159 | -ms-flex: 0 0 75%;
160 | flex: 0 0 75%;
161 | max-width: 75%;
162 | }
163 |
164 | .col-10 {
165 | -ms-flex: 0 0 83.333333%;
166 | flex: 0 0 83.333333%;
167 | max-width: 83.333333%;
168 | }
169 |
170 | .col-11 {
171 | -ms-flex: 0 0 91.666667%;
172 | flex: 0 0 91.666667%;
173 | max-width: 91.666667%;
174 | }
175 |
176 | .col-12 {
177 | -ms-flex: 0 0 100%;
178 | flex: 0 0 100%;
179 | max-width: 100%;
180 | }
181 |
182 | .order-first {
183 | -ms-flex-order: -1;
184 | order: -1;
185 | }
186 |
187 | .order-1 {
188 | -ms-flex-order: 1;
189 | order: 1;
190 | }
191 |
192 | .order-2 {
193 | -ms-flex-order: 2;
194 | order: 2;
195 | }
196 |
197 | .order-3 {
198 | -ms-flex-order: 3;
199 | order: 3;
200 | }
201 |
202 | .order-4 {
203 | -ms-flex-order: 4;
204 | order: 4;
205 | }
206 |
207 | .order-5 {
208 | -ms-flex-order: 5;
209 | order: 5;
210 | }
211 |
212 | .order-6 {
213 | -ms-flex-order: 6;
214 | order: 6;
215 | }
216 |
217 | .order-7 {
218 | -ms-flex-order: 7;
219 | order: 7;
220 | }
221 |
222 | .order-8 {
223 | -ms-flex-order: 8;
224 | order: 8;
225 | }
226 |
227 | .order-9 {
228 | -ms-flex-order: 9;
229 | order: 9;
230 | }
231 |
232 | .order-10 {
233 | -ms-flex-order: 10;
234 | order: 10;
235 | }
236 |
237 | .order-11 {
238 | -ms-flex-order: 11;
239 | order: 11;
240 | }
241 |
242 | .order-12 {
243 | -ms-flex-order: 12;
244 | order: 12;
245 | }
246 |
247 | .offset-1 {
248 | margin-left: 8.333333%;
249 | }
250 |
251 | .offset-2 {
252 | margin-left: 16.666667%;
253 | }
254 |
255 | .offset-3 {
256 | margin-left: 25%;
257 | }
258 |
259 | .offset-4 {
260 | margin-left: 33.333333%;
261 | }
262 |
263 | .offset-5 {
264 | margin-left: 41.666667%;
265 | }
266 |
267 | .offset-6 {
268 | margin-left: 50%;
269 | }
270 |
271 | .offset-7 {
272 | margin-left: 58.333333%;
273 | }
274 |
275 | .offset-8 {
276 | margin-left: 66.666667%;
277 | }
278 |
279 | .offset-9 {
280 | margin-left: 75%;
281 | }
282 |
283 | .offset-10 {
284 | margin-left: 83.333333%;
285 | }
286 |
287 | .offset-11 {
288 | margin-left: 91.666667%;
289 | }
290 |
291 | @media (min-width: 576px) {
292 | .col-sm {
293 | -ms-flex-preferred-size: 0;
294 | flex-basis: 0;
295 | -ms-flex-positive: 1;
296 | flex-grow: 1;
297 | max-width: 100%;
298 | }
299 | .col-sm-auto {
300 | -ms-flex: 0 0 auto;
301 | flex: 0 0 auto;
302 | width: auto;
303 | max-width: none;
304 | }
305 | .col-sm-1 {
306 | -ms-flex: 0 0 8.333333%;
307 | flex: 0 0 8.333333%;
308 | max-width: 8.333333%;
309 | }
310 | .col-sm-2 {
311 | -ms-flex: 0 0 16.666667%;
312 | flex: 0 0 16.666667%;
313 | max-width: 16.666667%;
314 | }
315 | .col-sm-3 {
316 | -ms-flex: 0 0 25%;
317 | flex: 0 0 25%;
318 | max-width: 25%;
319 | }
320 | .col-sm-4 {
321 | -ms-flex: 0 0 33.333333%;
322 | flex: 0 0 33.333333%;
323 | max-width: 33.333333%;
324 | }
325 | .col-sm-5 {
326 | -ms-flex: 0 0 41.666667%;
327 | flex: 0 0 41.666667%;
328 | max-width: 41.666667%;
329 | }
330 | .col-sm-6 {
331 | -ms-flex: 0 0 50%;
332 | flex: 0 0 50%;
333 | max-width: 50%;
334 | }
335 | .col-sm-7 {
336 | -ms-flex: 0 0 58.333333%;
337 | flex: 0 0 58.333333%;
338 | max-width: 58.333333%;
339 | }
340 | .col-sm-8 {
341 | -ms-flex: 0 0 66.666667%;
342 | flex: 0 0 66.666667%;
343 | max-width: 66.666667%;
344 | }
345 | .col-sm-9 {
346 | -ms-flex: 0 0 75%;
347 | flex: 0 0 75%;
348 | max-width: 75%;
349 | }
350 | .col-sm-10 {
351 | -ms-flex: 0 0 83.333333%;
352 | flex: 0 0 83.333333%;
353 | max-width: 83.333333%;
354 | }
355 | .col-sm-11 {
356 | -ms-flex: 0 0 91.666667%;
357 | flex: 0 0 91.666667%;
358 | max-width: 91.666667%;
359 | }
360 | .col-sm-12 {
361 | -ms-flex: 0 0 100%;
362 | flex: 0 0 100%;
363 | max-width: 100%;
364 | }
365 | .order-sm-first {
366 | -ms-flex-order: -1;
367 | order: -1;
368 | }
369 | .order-sm-1 {
370 | -ms-flex-order: 1;
371 | order: 1;
372 | }
373 | .order-sm-2 {
374 | -ms-flex-order: 2;
375 | order: 2;
376 | }
377 | .order-sm-3 {
378 | -ms-flex-order: 3;
379 | order: 3;
380 | }
381 | .order-sm-4 {
382 | -ms-flex-order: 4;
383 | order: 4;
384 | }
385 | .order-sm-5 {
386 | -ms-flex-order: 5;
387 | order: 5;
388 | }
389 | .order-sm-6 {
390 | -ms-flex-order: 6;
391 | order: 6;
392 | }
393 | .order-sm-7 {
394 | -ms-flex-order: 7;
395 | order: 7;
396 | }
397 | .order-sm-8 {
398 | -ms-flex-order: 8;
399 | order: 8;
400 | }
401 | .order-sm-9 {
402 | -ms-flex-order: 9;
403 | order: 9;
404 | }
405 | .order-sm-10 {
406 | -ms-flex-order: 10;
407 | order: 10;
408 | }
409 | .order-sm-11 {
410 | -ms-flex-order: 11;
411 | order: 11;
412 | }
413 | .order-sm-12 {
414 | -ms-flex-order: 12;
415 | order: 12;
416 | }
417 | .offset-sm-0 {
418 | margin-left: 0;
419 | }
420 | .offset-sm-1 {
421 | margin-left: 8.333333%;
422 | }
423 | .offset-sm-2 {
424 | margin-left: 16.666667%;
425 | }
426 | .offset-sm-3 {
427 | margin-left: 25%;
428 | }
429 | .offset-sm-4 {
430 | margin-left: 33.333333%;
431 | }
432 | .offset-sm-5 {
433 | margin-left: 41.666667%;
434 | }
435 | .offset-sm-6 {
436 | margin-left: 50%;
437 | }
438 | .offset-sm-7 {
439 | margin-left: 58.333333%;
440 | }
441 | .offset-sm-8 {
442 | margin-left: 66.666667%;
443 | }
444 | .offset-sm-9 {
445 | margin-left: 75%;
446 | }
447 | .offset-sm-10 {
448 | margin-left: 83.333333%;
449 | }
450 | .offset-sm-11 {
451 | margin-left: 91.666667%;
452 | }
453 | }
454 |
455 | @media (min-width: 768px) {
456 | .col-md {
457 | -ms-flex-preferred-size: 0;
458 | flex-basis: 0;
459 | -ms-flex-positive: 1;
460 | flex-grow: 1;
461 | max-width: 100%;
462 | }
463 | .col-md-auto {
464 | -ms-flex: 0 0 auto;
465 | flex: 0 0 auto;
466 | width: auto;
467 | max-width: none;
468 | }
469 | .col-md-1 {
470 | -ms-flex: 0 0 8.333333%;
471 | flex: 0 0 8.333333%;
472 | max-width: 8.333333%;
473 | }
474 | .col-md-2 {
475 | -ms-flex: 0 0 16.666667%;
476 | flex: 0 0 16.666667%;
477 | max-width: 16.666667%;
478 | }
479 | .col-md-3 {
480 | -ms-flex: 0 0 25%;
481 | flex: 0 0 25%;
482 | max-width: 25%;
483 | }
484 | .col-md-4 {
485 | -ms-flex: 0 0 33.333333%;
486 | flex: 0 0 33.333333%;
487 | max-width: 33.333333%;
488 | }
489 | .col-md-5 {
490 | -ms-flex: 0 0 41.666667%;
491 | flex: 0 0 41.666667%;
492 | max-width: 41.666667%;
493 | }
494 | .col-md-6 {
495 | -ms-flex: 0 0 50%;
496 | flex: 0 0 50%;
497 | max-width: 50%;
498 | }
499 | .col-md-7 {
500 | -ms-flex: 0 0 58.333333%;
501 | flex: 0 0 58.333333%;
502 | max-width: 58.333333%;
503 | }
504 | .col-md-8 {
505 | -ms-flex: 0 0 66.666667%;
506 | flex: 0 0 66.666667%;
507 | max-width: 66.666667%;
508 | }
509 | .col-md-9 {
510 | -ms-flex: 0 0 75%;
511 | flex: 0 0 75%;
512 | max-width: 75%;
513 | }
514 | .col-md-10 {
515 | -ms-flex: 0 0 83.333333%;
516 | flex: 0 0 83.333333%;
517 | max-width: 83.333333%;
518 | }
519 | .col-md-11 {
520 | -ms-flex: 0 0 91.666667%;
521 | flex: 0 0 91.666667%;
522 | max-width: 91.666667%;
523 | }
524 | .col-md-12 {
525 | -ms-flex: 0 0 100%;
526 | flex: 0 0 100%;
527 | max-width: 100%;
528 | }
529 | .order-md-first {
530 | -ms-flex-order: -1;
531 | order: -1;
532 | }
533 | .order-md-1 {
534 | -ms-flex-order: 1;
535 | order: 1;
536 | }
537 | .order-md-2 {
538 | -ms-flex-order: 2;
539 | order: 2;
540 | }
541 | .order-md-3 {
542 | -ms-flex-order: 3;
543 | order: 3;
544 | }
545 | .order-md-4 {
546 | -ms-flex-order: 4;
547 | order: 4;
548 | }
549 | .order-md-5 {
550 | -ms-flex-order: 5;
551 | order: 5;
552 | }
553 | .order-md-6 {
554 | -ms-flex-order: 6;
555 | order: 6;
556 | }
557 | .order-md-7 {
558 | -ms-flex-order: 7;
559 | order: 7;
560 | }
561 | .order-md-8 {
562 | -ms-flex-order: 8;
563 | order: 8;
564 | }
565 | .order-md-9 {
566 | -ms-flex-order: 9;
567 | order: 9;
568 | }
569 | .order-md-10 {
570 | -ms-flex-order: 10;
571 | order: 10;
572 | }
573 | .order-md-11 {
574 | -ms-flex-order: 11;
575 | order: 11;
576 | }
577 | .order-md-12 {
578 | -ms-flex-order: 12;
579 | order: 12;
580 | }
581 | .offset-md-0 {
582 | margin-left: 0;
583 | }
584 | .offset-md-1 {
585 | margin-left: 8.333333%;
586 | }
587 | .offset-md-2 {
588 | margin-left: 16.666667%;
589 | }
590 | .offset-md-3 {
591 | margin-left: 25%;
592 | }
593 | .offset-md-4 {
594 | margin-left: 33.333333%;
595 | }
596 | .offset-md-5 {
597 | margin-left: 41.666667%;
598 | }
599 | .offset-md-6 {
600 | margin-left: 50%;
601 | }
602 | .offset-md-7 {
603 | margin-left: 58.333333%;
604 | }
605 | .offset-md-8 {
606 | margin-left: 66.666667%;
607 | }
608 | .offset-md-9 {
609 | margin-left: 75%;
610 | }
611 | .offset-md-10 {
612 | margin-left: 83.333333%;
613 | }
614 | .offset-md-11 {
615 | margin-left: 91.666667%;
616 | }
617 | }
618 |
619 | @media (min-width: 992px) {
620 | .col-lg {
621 | -ms-flex-preferred-size: 0;
622 | flex-basis: 0;
623 | -ms-flex-positive: 1;
624 | flex-grow: 1;
625 | max-width: 100%;
626 | }
627 | .col-lg-auto {
628 | -ms-flex: 0 0 auto;
629 | flex: 0 0 auto;
630 | width: auto;
631 | max-width: none;
632 | }
633 | .col-lg-1 {
634 | -ms-flex: 0 0 8.333333%;
635 | flex: 0 0 8.333333%;
636 | max-width: 8.333333%;
637 | }
638 | .col-lg-2 {
639 | -ms-flex: 0 0 16.666667%;
640 | flex: 0 0 16.666667%;
641 | max-width: 16.666667%;
642 | }
643 | .col-lg-3 {
644 | -ms-flex: 0 0 25%;
645 | flex: 0 0 25%;
646 | max-width: 25%;
647 | }
648 | .col-lg-4 {
649 | -ms-flex: 0 0 33.333333%;
650 | flex: 0 0 33.333333%;
651 | max-width: 33.333333%;
652 | }
653 | .col-lg-5 {
654 | -ms-flex: 0 0 41.666667%;
655 | flex: 0 0 41.666667%;
656 | max-width: 41.666667%;
657 | }
658 | .col-lg-6 {
659 | -ms-flex: 0 0 50%;
660 | flex: 0 0 50%;
661 | max-width: 50%;
662 | }
663 | .col-lg-7 {
664 | -ms-flex: 0 0 58.333333%;
665 | flex: 0 0 58.333333%;
666 | max-width: 58.333333%;
667 | }
668 | .col-lg-8 {
669 | -ms-flex: 0 0 66.666667%;
670 | flex: 0 0 66.666667%;
671 | max-width: 66.666667%;
672 | }
673 | .col-lg-9 {
674 | -ms-flex: 0 0 75%;
675 | flex: 0 0 75%;
676 | max-width: 75%;
677 | }
678 | .col-lg-10 {
679 | -ms-flex: 0 0 83.333333%;
680 | flex: 0 0 83.333333%;
681 | max-width: 83.333333%;
682 | }
683 | .col-lg-11 {
684 | -ms-flex: 0 0 91.666667%;
685 | flex: 0 0 91.666667%;
686 | max-width: 91.666667%;
687 | }
688 | .col-lg-12 {
689 | -ms-flex: 0 0 100%;
690 | flex: 0 0 100%;
691 | max-width: 100%;
692 | }
693 | .order-lg-first {
694 | -ms-flex-order: -1;
695 | order: -1;
696 | }
697 | .order-lg-1 {
698 | -ms-flex-order: 1;
699 | order: 1;
700 | }
701 | .order-lg-2 {
702 | -ms-flex-order: 2;
703 | order: 2;
704 | }
705 | .order-lg-3 {
706 | -ms-flex-order: 3;
707 | order: 3;
708 | }
709 | .order-lg-4 {
710 | -ms-flex-order: 4;
711 | order: 4;
712 | }
713 | .order-lg-5 {
714 | -ms-flex-order: 5;
715 | order: 5;
716 | }
717 | .order-lg-6 {
718 | -ms-flex-order: 6;
719 | order: 6;
720 | }
721 | .order-lg-7 {
722 | -ms-flex-order: 7;
723 | order: 7;
724 | }
725 | .order-lg-8 {
726 | -ms-flex-order: 8;
727 | order: 8;
728 | }
729 | .order-lg-9 {
730 | -ms-flex-order: 9;
731 | order: 9;
732 | }
733 | .order-lg-10 {
734 | -ms-flex-order: 10;
735 | order: 10;
736 | }
737 | .order-lg-11 {
738 | -ms-flex-order: 11;
739 | order: 11;
740 | }
741 | .order-lg-12 {
742 | -ms-flex-order: 12;
743 | order: 12;
744 | }
745 | .offset-lg-0 {
746 | margin-left: 0;
747 | }
748 | .offset-lg-1 {
749 | margin-left: 8.333333%;
750 | }
751 | .offset-lg-2 {
752 | margin-left: 16.666667%;
753 | }
754 | .offset-lg-3 {
755 | margin-left: 25%;
756 | }
757 | .offset-lg-4 {
758 | margin-left: 33.333333%;
759 | }
760 | .offset-lg-5 {
761 | margin-left: 41.666667%;
762 | }
763 | .offset-lg-6 {
764 | margin-left: 50%;
765 | }
766 | .offset-lg-7 {
767 | margin-left: 58.333333%;
768 | }
769 | .offset-lg-8 {
770 | margin-left: 66.666667%;
771 | }
772 | .offset-lg-9 {
773 | margin-left: 75%;
774 | }
775 | .offset-lg-10 {
776 | margin-left: 83.333333%;
777 | }
778 | .offset-lg-11 {
779 | margin-left: 91.666667%;
780 | }
781 | }
782 |
783 | @media (min-width: 1200px) {
784 | .col-xl {
785 | -ms-flex-preferred-size: 0;
786 | flex-basis: 0;
787 | -ms-flex-positive: 1;
788 | flex-grow: 1;
789 | max-width: 100%;
790 | }
791 | .col-xl-auto {
792 | -ms-flex: 0 0 auto;
793 | flex: 0 0 auto;
794 | width: auto;
795 | max-width: none;
796 | }
797 | .col-xl-1 {
798 | -ms-flex: 0 0 8.333333%;
799 | flex: 0 0 8.333333%;
800 | max-width: 8.333333%;
801 | }
802 | .col-xl-2 {
803 | -ms-flex: 0 0 16.666667%;
804 | flex: 0 0 16.666667%;
805 | max-width: 16.666667%;
806 | }
807 | .col-xl-3 {
808 | -ms-flex: 0 0 25%;
809 | flex: 0 0 25%;
810 | max-width: 25%;
811 | }
812 | .col-xl-4 {
813 | -ms-flex: 0 0 33.333333%;
814 | flex: 0 0 33.333333%;
815 | max-width: 33.333333%;
816 | }
817 | .col-xl-5 {
818 | -ms-flex: 0 0 41.666667%;
819 | flex: 0 0 41.666667%;
820 | max-width: 41.666667%;
821 | }
822 | .col-xl-6 {
823 | -ms-flex: 0 0 50%;
824 | flex: 0 0 50%;
825 | max-width: 50%;
826 | }
827 | .col-xl-7 {
828 | -ms-flex: 0 0 58.333333%;
829 | flex: 0 0 58.333333%;
830 | max-width: 58.333333%;
831 | }
832 | .col-xl-8 {
833 | -ms-flex: 0 0 66.666667%;
834 | flex: 0 0 66.666667%;
835 | max-width: 66.666667%;
836 | }
837 | .col-xl-9 {
838 | -ms-flex: 0 0 75%;
839 | flex: 0 0 75%;
840 | max-width: 75%;
841 | }
842 | .col-xl-10 {
843 | -ms-flex: 0 0 83.333333%;
844 | flex: 0 0 83.333333%;
845 | max-width: 83.333333%;
846 | }
847 | .col-xl-11 {
848 | -ms-flex: 0 0 91.666667%;
849 | flex: 0 0 91.666667%;
850 | max-width: 91.666667%;
851 | }
852 | .col-xl-12 {
853 | -ms-flex: 0 0 100%;
854 | flex: 0 0 100%;
855 | max-width: 100%;
856 | }
857 | .order-xl-first {
858 | -ms-flex-order: -1;
859 | order: -1;
860 | }
861 | .order-xl-1 {
862 | -ms-flex-order: 1;
863 | order: 1;
864 | }
865 | .order-xl-2 {
866 | -ms-flex-order: 2;
867 | order: 2;
868 | }
869 | .order-xl-3 {
870 | -ms-flex-order: 3;
871 | order: 3;
872 | }
873 | .order-xl-4 {
874 | -ms-flex-order: 4;
875 | order: 4;
876 | }
877 | .order-xl-5 {
878 | -ms-flex-order: 5;
879 | order: 5;
880 | }
881 | .order-xl-6 {
882 | -ms-flex-order: 6;
883 | order: 6;
884 | }
885 | .order-xl-7 {
886 | -ms-flex-order: 7;
887 | order: 7;
888 | }
889 | .order-xl-8 {
890 | -ms-flex-order: 8;
891 | order: 8;
892 | }
893 | .order-xl-9 {
894 | -ms-flex-order: 9;
895 | order: 9;
896 | }
897 | .order-xl-10 {
898 | -ms-flex-order: 10;
899 | order: 10;
900 | }
901 | .order-xl-11 {
902 | -ms-flex-order: 11;
903 | order: 11;
904 | }
905 | .order-xl-12 {
906 | -ms-flex-order: 12;
907 | order: 12;
908 | }
909 | .offset-xl-0 {
910 | margin-left: 0;
911 | }
912 | .offset-xl-1 {
913 | margin-left: 8.333333%;
914 | }
915 | .offset-xl-2 {
916 | margin-left: 16.666667%;
917 | }
918 | .offset-xl-3 {
919 | margin-left: 25%;
920 | }
921 | .offset-xl-4 {
922 | margin-left: 33.333333%;
923 | }
924 | .offset-xl-5 {
925 | margin-left: 41.666667%;
926 | }
927 | .offset-xl-6 {
928 | margin-left: 50%;
929 | }
930 | .offset-xl-7 {
931 | margin-left: 58.333333%;
932 | }
933 | .offset-xl-8 {
934 | margin-left: 66.666667%;
935 | }
936 | .offset-xl-9 {
937 | margin-left: 75%;
938 | }
939 | .offset-xl-10 {
940 | margin-left: 83.333333%;
941 | }
942 | .offset-xl-11 {
943 | margin-left: 91.666667%;
944 | }
945 | }
946 |
947 | .flex-row {
948 | -ms-flex-direction: row !important;
949 | flex-direction: row !important;
950 | }
951 |
952 | .flex-column {
953 | -ms-flex-direction: column !important;
954 | flex-direction: column !important;
955 | }
956 |
957 | .flex-row-reverse {
958 | -ms-flex-direction: row-reverse !important;
959 | flex-direction: row-reverse !important;
960 | }
961 |
962 | .flex-column-reverse {
963 | -ms-flex-direction: column-reverse !important;
964 | flex-direction: column-reverse !important;
965 | }
966 |
967 | .flex-wrap {
968 | -ms-flex-wrap: wrap !important;
969 | flex-wrap: wrap !important;
970 | }
971 |
972 | .flex-nowrap {
973 | -ms-flex-wrap: nowrap !important;
974 | flex-wrap: nowrap !important;
975 | }
976 |
977 | .flex-wrap-reverse {
978 | -ms-flex-wrap: wrap-reverse !important;
979 | flex-wrap: wrap-reverse !important;
980 | }
981 |
982 | .justify-content-start {
983 | -ms-flex-pack: start !important;
984 | justify-content: flex-start !important;
985 | }
986 |
987 | .justify-content-end {
988 | -ms-flex-pack: end !important;
989 | justify-content: flex-end !important;
990 | }
991 |
992 | .justify-content-center {
993 | -ms-flex-pack: center !important;
994 | justify-content: center !important;
995 | }
996 |
997 | .justify-content-between {
998 | -ms-flex-pack: justify !important;
999 | justify-content: space-between !important;
1000 | }
1001 |
1002 | .justify-content-around {
1003 | -ms-flex-pack: distribute !important;
1004 | justify-content: space-around !important;
1005 | }
1006 |
1007 | .align-items-start {
1008 | -ms-flex-align: start !important;
1009 | align-items: flex-start !important;
1010 | }
1011 |
1012 | .align-items-end {
1013 | -ms-flex-align: end !important;
1014 | align-items: flex-end !important;
1015 | }
1016 |
1017 | .align-items-center {
1018 | -ms-flex-align: center !important;
1019 | align-items: center !important;
1020 | }
1021 |
1022 | .align-items-baseline {
1023 | -ms-flex-align: baseline !important;
1024 | align-items: baseline !important;
1025 | }
1026 |
1027 | .align-items-stretch {
1028 | -ms-flex-align: stretch !important;
1029 | align-items: stretch !important;
1030 | }
1031 |
1032 | .align-content-start {
1033 | -ms-flex-line-pack: start !important;
1034 | align-content: flex-start !important;
1035 | }
1036 |
1037 | .align-content-end {
1038 | -ms-flex-line-pack: end !important;
1039 | align-content: flex-end !important;
1040 | }
1041 |
1042 | .align-content-center {
1043 | -ms-flex-line-pack: center !important;
1044 | align-content: center !important;
1045 | }
1046 |
1047 | .align-content-between {
1048 | -ms-flex-line-pack: justify !important;
1049 | align-content: space-between !important;
1050 | }
1051 |
1052 | .align-content-around {
1053 | -ms-flex-line-pack: distribute !important;
1054 | align-content: space-around !important;
1055 | }
1056 |
1057 | .align-content-stretch {
1058 | -ms-flex-line-pack: stretch !important;
1059 | align-content: stretch !important;
1060 | }
1061 |
1062 | .align-self-auto {
1063 | -ms-flex-item-align: auto !important;
1064 | align-self: auto !important;
1065 | }
1066 |
1067 | .align-self-start {
1068 | -ms-flex-item-align: start !important;
1069 | align-self: flex-start !important;
1070 | }
1071 |
1072 | .align-self-end {
1073 | -ms-flex-item-align: end !important;
1074 | align-self: flex-end !important;
1075 | }
1076 |
1077 | .align-self-center {
1078 | -ms-flex-item-align: center !important;
1079 | align-self: center !important;
1080 | }
1081 |
1082 | .align-self-baseline {
1083 | -ms-flex-item-align: baseline !important;
1084 | align-self: baseline !important;
1085 | }
1086 |
1087 | .align-self-stretch {
1088 | -ms-flex-item-align: stretch !important;
1089 | align-self: stretch !important;
1090 | }
1091 |
1092 | @media (min-width: 576px) {
1093 | .flex-sm-row {
1094 | -ms-flex-direction: row !important;
1095 | flex-direction: row !important;
1096 | }
1097 | .flex-sm-column {
1098 | -ms-flex-direction: column !important;
1099 | flex-direction: column !important;
1100 | }
1101 | .flex-sm-row-reverse {
1102 | -ms-flex-direction: row-reverse !important;
1103 | flex-direction: row-reverse !important;
1104 | }
1105 | .flex-sm-column-reverse {
1106 | -ms-flex-direction: column-reverse !important;
1107 | flex-direction: column-reverse !important;
1108 | }
1109 | .flex-sm-wrap {
1110 | -ms-flex-wrap: wrap !important;
1111 | flex-wrap: wrap !important;
1112 | }
1113 | .flex-sm-nowrap {
1114 | -ms-flex-wrap: nowrap !important;
1115 | flex-wrap: nowrap !important;
1116 | }
1117 | .flex-sm-wrap-reverse {
1118 | -ms-flex-wrap: wrap-reverse !important;
1119 | flex-wrap: wrap-reverse !important;
1120 | }
1121 | .justify-content-sm-start {
1122 | -ms-flex-pack: start !important;
1123 | justify-content: flex-start !important;
1124 | }
1125 | .justify-content-sm-end {
1126 | -ms-flex-pack: end !important;
1127 | justify-content: flex-end !important;
1128 | }
1129 | .justify-content-sm-center {
1130 | -ms-flex-pack: center !important;
1131 | justify-content: center !important;
1132 | }
1133 | .justify-content-sm-between {
1134 | -ms-flex-pack: justify !important;
1135 | justify-content: space-between !important;
1136 | }
1137 | .justify-content-sm-around {
1138 | -ms-flex-pack: distribute !important;
1139 | justify-content: space-around !important;
1140 | }
1141 | .align-items-sm-start {
1142 | -ms-flex-align: start !important;
1143 | align-items: flex-start !important;
1144 | }
1145 | .align-items-sm-end {
1146 | -ms-flex-align: end !important;
1147 | align-items: flex-end !important;
1148 | }
1149 | .align-items-sm-center {
1150 | -ms-flex-align: center !important;
1151 | align-items: center !important;
1152 | }
1153 | .align-items-sm-baseline {
1154 | -ms-flex-align: baseline !important;
1155 | align-items: baseline !important;
1156 | }
1157 | .align-items-sm-stretch {
1158 | -ms-flex-align: stretch !important;
1159 | align-items: stretch !important;
1160 | }
1161 | .align-content-sm-start {
1162 | -ms-flex-line-pack: start !important;
1163 | align-content: flex-start !important;
1164 | }
1165 | .align-content-sm-end {
1166 | -ms-flex-line-pack: end !important;
1167 | align-content: flex-end !important;
1168 | }
1169 | .align-content-sm-center {
1170 | -ms-flex-line-pack: center !important;
1171 | align-content: center !important;
1172 | }
1173 | .align-content-sm-between {
1174 | -ms-flex-line-pack: justify !important;
1175 | align-content: space-between !important;
1176 | }
1177 | .align-content-sm-around {
1178 | -ms-flex-line-pack: distribute !important;
1179 | align-content: space-around !important;
1180 | }
1181 | .align-content-sm-stretch {
1182 | -ms-flex-line-pack: stretch !important;
1183 | align-content: stretch !important;
1184 | }
1185 | .align-self-sm-auto {
1186 | -ms-flex-item-align: auto !important;
1187 | align-self: auto !important;
1188 | }
1189 | .align-self-sm-start {
1190 | -ms-flex-item-align: start !important;
1191 | align-self: flex-start !important;
1192 | }
1193 | .align-self-sm-end {
1194 | -ms-flex-item-align: end !important;
1195 | align-self: flex-end !important;
1196 | }
1197 | .align-self-sm-center {
1198 | -ms-flex-item-align: center !important;
1199 | align-self: center !important;
1200 | }
1201 | .align-self-sm-baseline {
1202 | -ms-flex-item-align: baseline !important;
1203 | align-self: baseline !important;
1204 | }
1205 | .align-self-sm-stretch {
1206 | -ms-flex-item-align: stretch !important;
1207 | align-self: stretch !important;
1208 | }
1209 | }
1210 |
1211 | @media (min-width: 768px) {
1212 | .flex-md-row {
1213 | -ms-flex-direction: row !important;
1214 | flex-direction: row !important;
1215 | }
1216 | .flex-md-column {
1217 | -ms-flex-direction: column !important;
1218 | flex-direction: column !important;
1219 | }
1220 | .flex-md-row-reverse {
1221 | -ms-flex-direction: row-reverse !important;
1222 | flex-direction: row-reverse !important;
1223 | }
1224 | .flex-md-column-reverse {
1225 | -ms-flex-direction: column-reverse !important;
1226 | flex-direction: column-reverse !important;
1227 | }
1228 | .flex-md-wrap {
1229 | -ms-flex-wrap: wrap !important;
1230 | flex-wrap: wrap !important;
1231 | }
1232 | .flex-md-nowrap {
1233 | -ms-flex-wrap: nowrap !important;
1234 | flex-wrap: nowrap !important;
1235 | }
1236 | .flex-md-wrap-reverse {
1237 | -ms-flex-wrap: wrap-reverse !important;
1238 | flex-wrap: wrap-reverse !important;
1239 | }
1240 | .justify-content-md-start {
1241 | -ms-flex-pack: start !important;
1242 | justify-content: flex-start !important;
1243 | }
1244 | .justify-content-md-end {
1245 | -ms-flex-pack: end !important;
1246 | justify-content: flex-end !important;
1247 | }
1248 | .justify-content-md-center {
1249 | -ms-flex-pack: center !important;
1250 | justify-content: center !important;
1251 | }
1252 | .justify-content-md-between {
1253 | -ms-flex-pack: justify !important;
1254 | justify-content: space-between !important;
1255 | }
1256 | .justify-content-md-around {
1257 | -ms-flex-pack: distribute !important;
1258 | justify-content: space-around !important;
1259 | }
1260 | .align-items-md-start {
1261 | -ms-flex-align: start !important;
1262 | align-items: flex-start !important;
1263 | }
1264 | .align-items-md-end {
1265 | -ms-flex-align: end !important;
1266 | align-items: flex-end !important;
1267 | }
1268 | .align-items-md-center {
1269 | -ms-flex-align: center !important;
1270 | align-items: center !important;
1271 | }
1272 | .align-items-md-baseline {
1273 | -ms-flex-align: baseline !important;
1274 | align-items: baseline !important;
1275 | }
1276 | .align-items-md-stretch {
1277 | -ms-flex-align: stretch !important;
1278 | align-items: stretch !important;
1279 | }
1280 | .align-content-md-start {
1281 | -ms-flex-line-pack: start !important;
1282 | align-content: flex-start !important;
1283 | }
1284 | .align-content-md-end {
1285 | -ms-flex-line-pack: end !important;
1286 | align-content: flex-end !important;
1287 | }
1288 | .align-content-md-center {
1289 | -ms-flex-line-pack: center !important;
1290 | align-content: center !important;
1291 | }
1292 | .align-content-md-between {
1293 | -ms-flex-line-pack: justify !important;
1294 | align-content: space-between !important;
1295 | }
1296 | .align-content-md-around {
1297 | -ms-flex-line-pack: distribute !important;
1298 | align-content: space-around !important;
1299 | }
1300 | .align-content-md-stretch {
1301 | -ms-flex-line-pack: stretch !important;
1302 | align-content: stretch !important;
1303 | }
1304 | .align-self-md-auto {
1305 | -ms-flex-item-align: auto !important;
1306 | align-self: auto !important;
1307 | }
1308 | .align-self-md-start {
1309 | -ms-flex-item-align: start !important;
1310 | align-self: flex-start !important;
1311 | }
1312 | .align-self-md-end {
1313 | -ms-flex-item-align: end !important;
1314 | align-self: flex-end !important;
1315 | }
1316 | .align-self-md-center {
1317 | -ms-flex-item-align: center !important;
1318 | align-self: center !important;
1319 | }
1320 | .align-self-md-baseline {
1321 | -ms-flex-item-align: baseline !important;
1322 | align-self: baseline !important;
1323 | }
1324 | .align-self-md-stretch {
1325 | -ms-flex-item-align: stretch !important;
1326 | align-self: stretch !important;
1327 | }
1328 | }
1329 |
1330 | @media (min-width: 992px) {
1331 | .flex-lg-row {
1332 | -ms-flex-direction: row !important;
1333 | flex-direction: row !important;
1334 | }
1335 | .flex-lg-column {
1336 | -ms-flex-direction: column !important;
1337 | flex-direction: column !important;
1338 | }
1339 | .flex-lg-row-reverse {
1340 | -ms-flex-direction: row-reverse !important;
1341 | flex-direction: row-reverse !important;
1342 | }
1343 | .flex-lg-column-reverse {
1344 | -ms-flex-direction: column-reverse !important;
1345 | flex-direction: column-reverse !important;
1346 | }
1347 | .flex-lg-wrap {
1348 | -ms-flex-wrap: wrap !important;
1349 | flex-wrap: wrap !important;
1350 | }
1351 | .flex-lg-nowrap {
1352 | -ms-flex-wrap: nowrap !important;
1353 | flex-wrap: nowrap !important;
1354 | }
1355 | .flex-lg-wrap-reverse {
1356 | -ms-flex-wrap: wrap-reverse !important;
1357 | flex-wrap: wrap-reverse !important;
1358 | }
1359 | .justify-content-lg-start {
1360 | -ms-flex-pack: start !important;
1361 | justify-content: flex-start !important;
1362 | }
1363 | .justify-content-lg-end {
1364 | -ms-flex-pack: end !important;
1365 | justify-content: flex-end !important;
1366 | }
1367 | .justify-content-lg-center {
1368 | -ms-flex-pack: center !important;
1369 | justify-content: center !important;
1370 | }
1371 | .justify-content-lg-between {
1372 | -ms-flex-pack: justify !important;
1373 | justify-content: space-between !important;
1374 | }
1375 | .justify-content-lg-around {
1376 | -ms-flex-pack: distribute !important;
1377 | justify-content: space-around !important;
1378 | }
1379 | .align-items-lg-start {
1380 | -ms-flex-align: start !important;
1381 | align-items: flex-start !important;
1382 | }
1383 | .align-items-lg-end {
1384 | -ms-flex-align: end !important;
1385 | align-items: flex-end !important;
1386 | }
1387 | .align-items-lg-center {
1388 | -ms-flex-align: center !important;
1389 | align-items: center !important;
1390 | }
1391 | .align-items-lg-baseline {
1392 | -ms-flex-align: baseline !important;
1393 | align-items: baseline !important;
1394 | }
1395 | .align-items-lg-stretch {
1396 | -ms-flex-align: stretch !important;
1397 | align-items: stretch !important;
1398 | }
1399 | .align-content-lg-start {
1400 | -ms-flex-line-pack: start !important;
1401 | align-content: flex-start !important;
1402 | }
1403 | .align-content-lg-end {
1404 | -ms-flex-line-pack: end !important;
1405 | align-content: flex-end !important;
1406 | }
1407 | .align-content-lg-center {
1408 | -ms-flex-line-pack: center !important;
1409 | align-content: center !important;
1410 | }
1411 | .align-content-lg-between {
1412 | -ms-flex-line-pack: justify !important;
1413 | align-content: space-between !important;
1414 | }
1415 | .align-content-lg-around {
1416 | -ms-flex-line-pack: distribute !important;
1417 | align-content: space-around !important;
1418 | }
1419 | .align-content-lg-stretch {
1420 | -ms-flex-line-pack: stretch !important;
1421 | align-content: stretch !important;
1422 | }
1423 | .align-self-lg-auto {
1424 | -ms-flex-item-align: auto !important;
1425 | align-self: auto !important;
1426 | }
1427 | .align-self-lg-start {
1428 | -ms-flex-item-align: start !important;
1429 | align-self: flex-start !important;
1430 | }
1431 | .align-self-lg-end {
1432 | -ms-flex-item-align: end !important;
1433 | align-self: flex-end !important;
1434 | }
1435 | .align-self-lg-center {
1436 | -ms-flex-item-align: center !important;
1437 | align-self: center !important;
1438 | }
1439 | .align-self-lg-baseline {
1440 | -ms-flex-item-align: baseline !important;
1441 | align-self: baseline !important;
1442 | }
1443 | .align-self-lg-stretch {
1444 | -ms-flex-item-align: stretch !important;
1445 | align-self: stretch !important;
1446 | }
1447 | }
1448 |
1449 | @media (min-width: 1200px) {
1450 | .flex-xl-row {
1451 | -ms-flex-direction: row !important;
1452 | flex-direction: row !important;
1453 | }
1454 | .flex-xl-column {
1455 | -ms-flex-direction: column !important;
1456 | flex-direction: column !important;
1457 | }
1458 | .flex-xl-row-reverse {
1459 | -ms-flex-direction: row-reverse !important;
1460 | flex-direction: row-reverse !important;
1461 | }
1462 | .flex-xl-column-reverse {
1463 | -ms-flex-direction: column-reverse !important;
1464 | flex-direction: column-reverse !important;
1465 | }
1466 | .flex-xl-wrap {
1467 | -ms-flex-wrap: wrap !important;
1468 | flex-wrap: wrap !important;
1469 | }
1470 | .flex-xl-nowrap {
1471 | -ms-flex-wrap: nowrap !important;
1472 | flex-wrap: nowrap !important;
1473 | }
1474 | .flex-xl-wrap-reverse {
1475 | -ms-flex-wrap: wrap-reverse !important;
1476 | flex-wrap: wrap-reverse !important;
1477 | }
1478 | .justify-content-xl-start {
1479 | -ms-flex-pack: start !important;
1480 | justify-content: flex-start !important;
1481 | }
1482 | .justify-content-xl-end {
1483 | -ms-flex-pack: end !important;
1484 | justify-content: flex-end !important;
1485 | }
1486 | .justify-content-xl-center {
1487 | -ms-flex-pack: center !important;
1488 | justify-content: center !important;
1489 | }
1490 | .justify-content-xl-between {
1491 | -ms-flex-pack: justify !important;
1492 | justify-content: space-between !important;
1493 | }
1494 | .justify-content-xl-around {
1495 | -ms-flex-pack: distribute !important;
1496 | justify-content: space-around !important;
1497 | }
1498 | .align-items-xl-start {
1499 | -ms-flex-align: start !important;
1500 | align-items: flex-start !important;
1501 | }
1502 | .align-items-xl-end {
1503 | -ms-flex-align: end !important;
1504 | align-items: flex-end !important;
1505 | }
1506 | .align-items-xl-center {
1507 | -ms-flex-align: center !important;
1508 | align-items: center !important;
1509 | }
1510 | .align-items-xl-baseline {
1511 | -ms-flex-align: baseline !important;
1512 | align-items: baseline !important;
1513 | }
1514 | .align-items-xl-stretch {
1515 | -ms-flex-align: stretch !important;
1516 | align-items: stretch !important;
1517 | }
1518 | .align-content-xl-start {
1519 | -ms-flex-line-pack: start !important;
1520 | align-content: flex-start !important;
1521 | }
1522 | .align-content-xl-end {
1523 | -ms-flex-line-pack: end !important;
1524 | align-content: flex-end !important;
1525 | }
1526 | .align-content-xl-center {
1527 | -ms-flex-line-pack: center !important;
1528 | align-content: center !important;
1529 | }
1530 | .align-content-xl-between {
1531 | -ms-flex-line-pack: justify !important;
1532 | align-content: space-between !important;
1533 | }
1534 | .align-content-xl-around {
1535 | -ms-flex-line-pack: distribute !important;
1536 | align-content: space-around !important;
1537 | }
1538 | .align-content-xl-stretch {
1539 | -ms-flex-line-pack: stretch !important;
1540 | align-content: stretch !important;
1541 | }
1542 | .align-self-xl-auto {
1543 | -ms-flex-item-align: auto !important;
1544 | align-self: auto !important;
1545 | }
1546 | .align-self-xl-start {
1547 | -ms-flex-item-align: start !important;
1548 | align-self: flex-start !important;
1549 | }
1550 | .align-self-xl-end {
1551 | -ms-flex-item-align: end !important;
1552 | align-self: flex-end !important;
1553 | }
1554 | .align-self-xl-center {
1555 | -ms-flex-item-align: center !important;
1556 | align-self: center !important;
1557 | }
1558 | .align-self-xl-baseline {
1559 | -ms-flex-item-align: baseline !important;
1560 | align-self: baseline !important;
1561 | }
1562 | .align-self-xl-stretch {
1563 | -ms-flex-item-align: stretch !important;
1564 | align-self: stretch !important;
1565 | }
1566 | }
1567 | /*# sourceMappingURL=bootstrap-grid.css.map */
--------------------------------------------------------------------------------
/static/vendor/bootstrap/css/bootstrap-grid.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Grid v4.0.0-beta.2 (https://getbootstrap.com)
3 | * Copyright 2011-2017 The Bootstrap Authors
4 | * Copyright 2011-2017 Twitter, Inc.
5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6 | */@-ms-viewport{width:device-width}html{box-sizing:border-box;-ms-overflow-style:scrollbar}*,::after,::before{box-sizing:inherit}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}
7 | /*# sourceMappingURL=bootstrap-grid.min.css.map */
--------------------------------------------------------------------------------
/static/vendor/bootstrap/css/bootstrap-reboot.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Reboot v4.0.0-beta.2 (https://getbootstrap.com)
3 | * Copyright 2011-2017 The Bootstrap Authors
4 | * Copyright 2011-2017 Twitter, Inc.
5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
7 | */
8 | *,
9 | *::before,
10 | *::after {
11 | box-sizing: border-box;
12 | }
13 |
14 | html {
15 | font-family: sans-serif;
16 | line-height: 1.15;
17 | -webkit-text-size-adjust: 100%;
18 | -ms-text-size-adjust: 100%;
19 | -ms-overflow-style: scrollbar;
20 | -webkit-tap-highlight-color: transparent;
21 | }
22 |
23 | @-ms-viewport {
24 | width: device-width;
25 | }
26 |
27 | article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {
28 | display: block;
29 | }
30 |
31 | body {
32 | margin: 0;
33 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
34 | font-size: 1rem;
35 | font-weight: 400;
36 | line-height: 1.5;
37 | color: #212529;
38 | text-align: left;
39 | background-color: #fff;
40 | }
41 |
42 | [tabindex="-1"]:focus {
43 | outline: none !important;
44 | }
45 |
46 | hr {
47 | box-sizing: content-box;
48 | height: 0;
49 | overflow: visible;
50 | }
51 |
52 | h1, h2, h3, h4, h5, h6 {
53 | margin-top: 0;
54 | margin-bottom: 0.5rem;
55 | }
56 |
57 | p {
58 | margin-top: 0;
59 | margin-bottom: 1rem;
60 | }
61 |
62 | abbr[title],
63 | abbr[data-original-title] {
64 | text-decoration: underline;
65 | -webkit-text-decoration: underline dotted;
66 | text-decoration: underline dotted;
67 | cursor: help;
68 | border-bottom: 0;
69 | }
70 |
71 | address {
72 | margin-bottom: 1rem;
73 | font-style: normal;
74 | line-height: inherit;
75 | }
76 |
77 | ol,
78 | ul,
79 | dl {
80 | margin-top: 0;
81 | margin-bottom: 1rem;
82 | }
83 |
84 | ol ol,
85 | ul ul,
86 | ol ul,
87 | ul ol {
88 | margin-bottom: 0;
89 | }
90 |
91 | dt {
92 | font-weight: 700;
93 | }
94 |
95 | dd {
96 | margin-bottom: .5rem;
97 | margin-left: 0;
98 | }
99 |
100 | blockquote {
101 | margin: 0 0 1rem;
102 | }
103 |
104 | dfn {
105 | font-style: italic;
106 | }
107 |
108 | b,
109 | strong {
110 | font-weight: bolder;
111 | }
112 |
113 | small {
114 | font-size: 80%;
115 | }
116 |
117 | sub,
118 | sup {
119 | position: relative;
120 | font-size: 75%;
121 | line-height: 0;
122 | vertical-align: baseline;
123 | }
124 |
125 | sub {
126 | bottom: -.25em;
127 | }
128 |
129 | sup {
130 | top: -.5em;
131 | }
132 |
133 | a {
134 | color: #007bff;
135 | text-decoration: none;
136 | background-color: transparent;
137 | -webkit-text-decoration-skip: objects;
138 | }
139 |
140 | a:hover {
141 | color: #0056b3;
142 | text-decoration: underline;
143 | }
144 |
145 | a:not([href]):not([tabindex]) {
146 | color: inherit;
147 | text-decoration: none;
148 | }
149 |
150 | a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {
151 | color: inherit;
152 | text-decoration: none;
153 | }
154 |
155 | a:not([href]):not([tabindex]):focus {
156 | outline: 0;
157 | }
158 |
159 | pre,
160 | code,
161 | kbd,
162 | samp {
163 | font-family: monospace, monospace;
164 | font-size: 1em;
165 | }
166 |
167 | pre {
168 | margin-top: 0;
169 | margin-bottom: 1rem;
170 | overflow: auto;
171 | -ms-overflow-style: scrollbar;
172 | }
173 |
174 | figure {
175 | margin: 0 0 1rem;
176 | }
177 |
178 | img {
179 | vertical-align: middle;
180 | border-style: none;
181 | }
182 |
183 | svg:not(:root) {
184 | overflow: hidden;
185 | }
186 |
187 | a,
188 | area,
189 | button,
190 | [role="button"],
191 | input:not([type="range"]),
192 | label,
193 | select,
194 | summary,
195 | textarea {
196 | -ms-touch-action: manipulation;
197 | touch-action: manipulation;
198 | }
199 |
200 | table {
201 | border-collapse: collapse;
202 | }
203 |
204 | caption {
205 | padding-top: 0.75rem;
206 | padding-bottom: 0.75rem;
207 | color: #868e96;
208 | text-align: left;
209 | caption-side: bottom;
210 | }
211 |
212 | th {
213 | text-align: inherit;
214 | }
215 |
216 | label {
217 | display: inline-block;
218 | margin-bottom: .5rem;
219 | }
220 |
221 | button {
222 | border-radius: 0;
223 | }
224 |
225 | button:focus {
226 | outline: 1px dotted;
227 | outline: 5px auto -webkit-focus-ring-color;
228 | }
229 |
230 | input,
231 | button,
232 | select,
233 | optgroup,
234 | textarea {
235 | margin: 0;
236 | font-family: inherit;
237 | font-size: inherit;
238 | line-height: inherit;
239 | }
240 |
241 | button,
242 | input {
243 | overflow: visible;
244 | }
245 |
246 | button,
247 | select {
248 | text-transform: none;
249 | }
250 |
251 | button,
252 | html [type="button"],
253 | [type="reset"],
254 | [type="submit"] {
255 | -webkit-appearance: button;
256 | }
257 |
258 | button::-moz-focus-inner,
259 | [type="button"]::-moz-focus-inner,
260 | [type="reset"]::-moz-focus-inner,
261 | [type="submit"]::-moz-focus-inner {
262 | padding: 0;
263 | border-style: none;
264 | }
265 |
266 | input[type="radio"],
267 | input[type="checkbox"] {
268 | box-sizing: border-box;
269 | padding: 0;
270 | }
271 |
272 | input[type="date"],
273 | input[type="time"],
274 | input[type="datetime-local"],
275 | input[type="month"] {
276 | -webkit-appearance: listbox;
277 | }
278 |
279 | textarea {
280 | overflow: auto;
281 | resize: vertical;
282 | }
283 |
284 | fieldset {
285 | min-width: 0;
286 | padding: 0;
287 | margin: 0;
288 | border: 0;
289 | }
290 |
291 | legend {
292 | display: block;
293 | width: 100%;
294 | max-width: 100%;
295 | padding: 0;
296 | margin-bottom: .5rem;
297 | font-size: 1.5rem;
298 | line-height: inherit;
299 | color: inherit;
300 | white-space: normal;
301 | }
302 |
303 | progress {
304 | vertical-align: baseline;
305 | }
306 |
307 | [type="number"]::-webkit-inner-spin-button,
308 | [type="number"]::-webkit-outer-spin-button {
309 | height: auto;
310 | }
311 |
312 | [type="search"] {
313 | outline-offset: -2px;
314 | -webkit-appearance: none;
315 | }
316 |
317 | [type="search"]::-webkit-search-cancel-button,
318 | [type="search"]::-webkit-search-decoration {
319 | -webkit-appearance: none;
320 | }
321 |
322 | ::-webkit-file-upload-button {
323 | font: inherit;
324 | -webkit-appearance: button;
325 | }
326 |
327 | output {
328 | display: inline-block;
329 | }
330 |
331 | summary {
332 | display: list-item;
333 | }
334 |
335 | template {
336 | display: none;
337 | }
338 |
339 | [hidden] {
340 | display: none !important;
341 | }
342 | /*# sourceMappingURL=bootstrap-reboot.css.map */
--------------------------------------------------------------------------------
/static/vendor/bootstrap/css/bootstrap-reboot.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Reboot v4.0.0-beta.2 (https://getbootstrap.com)
3 | * Copyright 2011-2017 The Bootstrap Authors
4 | * Copyright 2011-2017 Twitter, Inc.
5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
7 | */*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#868e96;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}
8 | /*# sourceMappingURL=bootstrap-reboot.min.css.map */
--------------------------------------------------------------------------------
/static/vendor/bootstrap/js/bootstrap.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v4.1.1 (https://getbootstrap.com/)
3 | * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e(t.bootstrap={},t.jQuery,t.Popper)}(this,function(t,e,c){"use strict";function i(t,e){for(var n=0;nthis._items.length-1||t<0))if(this._isSliding)P(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=ndocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:"hover focus",title:"",delay:0,html:!(_e={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"}),selector:!(de={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)"}),placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},pe="out",ve={HIDE:"hide"+he,HIDDEN:"hidden"+he,SHOW:(me="show")+he,SHOWN:"shown"+he,INSERTED:"inserted"+he,CLICK:"click"+he,FOCUSIN:"focusin"+he,FOCUSOUT:"focusout"+he,MOUSEENTER:"mouseenter"+he,MOUSELEAVE:"mouseleave"+he},Ee="fade",ye="show",Te=".tooltip-inner",Ce=".arrow",Ie="hover",Ae="focus",De="click",be="manual",Se=function(){function i(t,e){if("undefined"==typeof c)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=oe(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),oe(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(oe(this.getTipElement()).hasClass(ye))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),oe.removeData(this.element,this.constructor.DATA_KEY),oe(this.element).off(this.constructor.EVENT_KEY),oe(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&oe(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===oe(this.element).css("display"))throw new Error("Please use show on visible elements");var t=oe.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){oe(this.element).trigger(t);var n=oe.contains(this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!n)return;var i=this.getTipElement(),r=Cn.getUID(this.constructor.NAME);i.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&oe(i).addClass(Ee);var s="function"==typeof this.config.placement?this.config.placement.call(this,i,this.element):this.config.placement,o=this._getAttachment(s);this.addAttachmentClass(o);var a=!1===this.config.container?document.body:oe(this.config.container);oe(i).data(this.constructor.DATA_KEY,this),oe.contains(this.element.ownerDocument.documentElement,this.tip)||oe(i).appendTo(a),oe(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new c(this.element,i,{placement:o,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:Ce},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),oe(i).addClass(ye),"ontouchstart"in document.documentElement&&oe(document.body).children().on("mouseover",null,oe.noop);var l=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,oe(e.element).trigger(e.constructor.Event.SHOWN),t===pe&&e._leave(null,e)};if(oe(this.tip).hasClass(Ee)){var h=Cn.getTransitionDurationFromElement(this.tip);oe(this.tip).one(Cn.TRANSITION_END,l).emulateTransitionEnd(h)}else l()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=oe.Event(this.constructor.Event.HIDE),r=function(){e._hoverState!==me&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),oe(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(oe(this.element).trigger(i),!i.isDefaultPrevented()){if(oe(n).removeClass(ye),"ontouchstart"in document.documentElement&&oe(document.body).children().off("mouseover",null,oe.noop),this._activeTrigger[De]=!1,this._activeTrigger[Ae]=!1,this._activeTrigger[Ie]=!1,oe(this.tip).hasClass(Ee)){var s=Cn.getTransitionDurationFromElement(n);oe(n).one(Cn.TRANSITION_END,r).emulateTransitionEnd(s)}else r();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){oe(this.getTipElement()).addClass(ue+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||oe(this.config.template)[0],this.tip},t.setContent=function(){var t=oe(this.getTipElement());this.setElementContent(t.find(Te),this.getTitle()),t.removeClass(Ee+" "+ye)},t.setElementContent=function(t,e){var n=this.config.html;"object"==typeof e&&(e.nodeType||e.jquery)?n?oe(e).parent().is(t)||t.empty().append(e):t.text(oe(e).text()):t[n?"html":"text"](e)},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getAttachment=function(t){return _e[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)oe(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==be){var e=t===Ie?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Ie?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;oe(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}oe(i.element).closest(".modal").on("hide.bs.modal",function(){return i.hide()})}),this.config.selector?this.config=h({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||oe(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),oe(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Ae:Ie]=!0),oe(e.getTipElement()).hasClass(ye)||e._hoverState===me?e._hoverState=me:(clearTimeout(e._timeout),e._hoverState=me,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===me&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||oe(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),oe(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Ae:Ie]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=pe,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===pe&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){return"number"==typeof(t=h({},this.constructor.Default,oe(this.element).data(),"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),Cn.typeCheckConfig(ae,t,this.constructor.DefaultType),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=oe(this.getTipElement()),e=t.attr("class").match(fe);null!==e&&0
'}),He=h({},Nn.DefaultType,{content:"(string|element|function)"}),We="fade",xe=".popover-header",Ue=".popover-body",Ke={HIDE:"hide"+ke,HIDDEN:"hidden"+ke,SHOW:(Me="show")+ke,SHOWN:"shown"+ke,INSERTED:"inserted"+ke,CLICK:"click"+ke,FOCUSIN:"focusin"+ke,FOCUSOUT:"focusout"+ke,MOUSEENTER:"mouseenter"+ke,MOUSELEAVE:"mouseleave"+ke},Fe=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var r=i.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(t){we(this.getTipElement()).addClass(Le+"-"+t)},r.getTipElement=function(){return this.tip=this.tip||we(this.config.template)[0],this.tip},r.setContent=function(){var t=we(this.getTipElement());this.setElementContent(t.find(xe),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(Ue),e),t.removeClass(We+" "+Me)},r._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},r._cleanTipClass=function(){var t=we(this.getTipElement()),e=t.attr("class").match(je);null!==e&&0=this._offsets[r]&&("undefined"==typeof this._offsets[r+1]||t li > .active",vn='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',En=".dropdown-toggle",yn="> .dropdown-menu .active",Tn=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&rn(this._element).hasClass(cn)||rn(this._element).hasClass(un))){var t,i,e=rn(this._element).closest(gn)[0],r=Cn.getSelectorFromElement(this._element);if(e){var s="UL"===e.nodeName?pn:mn;i=(i=rn.makeArray(rn(e).find(s)))[i.length-1]}var o=rn.Event(ln.HIDE,{relatedTarget:this._element}),a=rn.Event(ln.SHOW,{relatedTarget:i});if(i&&rn(i).trigger(o),rn(this._element).trigger(a),!a.isDefaultPrevented()&&!o.isDefaultPrevented()){r&&(t=rn(r)[0]),this._activate(this._element,e);var l=function(){var t=rn.Event(ln.HIDDEN,{relatedTarget:n._element}),e=rn.Event(ln.SHOWN,{relatedTarget:i});rn(i).trigger(t),rn(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){rn.removeData(this._element,sn),this._element=null},t._activate=function(t,e,n){var i=this,r=("UL"===e.nodeName?rn(e).find(pn):rn(e).children(mn))[0],s=n&&r&&rn(r).hasClass(fn),o=function(){return i._transitionComplete(t,r,n)};if(r&&s){var a=Cn.getTransitionDurationFromElement(r);rn(r).one(Cn.TRANSITION_END,o).emulateTransitionEnd(a)}else o()},t._transitionComplete=function(t,e,n){if(e){rn(e).removeClass(dn+" "+cn);var i=rn(e.parentNode).find(yn)[0];i&&rn(i).removeClass(cn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(rn(t).addClass(cn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),Cn.reflow(t),rn(t).addClass(dn),t.parentNode&&rn(t.parentNode).hasClass(hn)){var r=rn(t).closest(_n)[0];r&&rn(r).find(En).addClass(cn),t.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=rn(this),e=t.data(sn);if(e||(e=new i(this),t.data(sn,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},o(i,null,[{key:"VERSION",get:function(){return"4.1.1"}}]),i}(),rn(document).on(ln.CLICK_DATA_API,vn,function(t){t.preventDefault(),Tn._jQueryInterface.call(rn(this),"show")}),rn.fn.tab=Tn._jQueryInterface,rn.fn.tab.Constructor=Tn,rn.fn.tab.noConflict=function(){return rn.fn.tab=an,Tn._jQueryInterface},Tn);!function(t){if("undefined"==typeof t)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1===e[0]&&9===e[1]&&e[2]<1||4<=e[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(e),t.Util=Cn,t.Alert=In,t.Button=An,t.Carousel=Dn,t.Collapse=bn,t.Dropdown=Sn,t.Modal=wn,t.Popover=On,t.Scrollspy=kn,t.Tab=Pn,t.Tooltip=Nn,Object.defineProperty(t,"__esModule",{value:!0})});
7 | //# sourceMappingURL=bootstrap.min.js.map
--------------------------------------------------------------------------------
/static/vendor/jquery/jquery.slim.min.js:
--------------------------------------------------------------------------------
1 | /*! jQuery v3.3.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector | (c) JS Foundation and other contributors | jquery.org/license */
2 | !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,u=n.push,s=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,d=f.toString,p=d.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},v=function e(t){return null!=t&&t===t.window},y={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in y)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function b(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var x="3.3.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector",w=function(e,t){return new w.fn.init(e,t)},C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:x,constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,u,s,l,c,f,d,p,h,g,v,y,m,b,x="sizzle"+1*new Date,w=e.document,C=0,T=0,E=ae(),N=ae(),k=ae(),A=function(e,t){return e===t&&(f=!0),0},D={}.hasOwnProperty,S=[],L=S.pop,j=S.push,q=S.push,O=S.slice,P=function(e,t){for(var n=0,r=e.length;n+~]|"+I+")"+I+"*"),_=new RegExp("="+I+"*([^\\]'\"]*?)"+I+"*\\]","g"),U=new RegExp(M),V=new RegExp("^"+R+"$"),X={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+B),PSEUDO:new RegExp("^"+M),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+I+"*(even|odd|(([+-]|)(\\d*)n|)"+I+"*(?:([+-]|)"+I+"*(\\d+)|))"+I+"*\\)|)","i"),bool:new RegExp("^(?:"+H+")$","i"),needsContext:new RegExp("^"+I+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+I+"*((?:-\\d)?\\d*)"+I+"*\\)|)(?=[^-]|$)","i")},Q=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,G=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,J=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+I+"?|("+I+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){d()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{q.apply(S=O.call(w.childNodes),w.childNodes),S[w.childNodes.length].nodeType}catch(e){q={apply:S.length?function(e,t){j.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,u,l,c,f,h,y,m=t&&t.ownerDocument,C=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==C&&9!==C&&11!==C)return r;if(!i&&((t?t.ownerDocument||t:w)!==p&&d(t),t=t||p,g)){if(11!==C&&(f=K.exec(e)))if(o=f[1]){if(9===C){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&b(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return q.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return q.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!k[e+" "]&&(!v||!v.test(e))){if(1!==C)m=t,y=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=x),u=(h=a(e)).length;while(u--)h[u]="#"+c+" "+ye(h[u]);y=h.join(","),m=J.test(e)&&ge(t.parentNode)||t}if(y)try{return q.apply(r,m.querySelectorAll(y)),r}catch(e){}finally{c===x&&t.removeAttribute("id")}}}return s(e.replace($,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function ue(e){return e[x]=!0,e}function se(e){var t=p.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function de(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pe(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return ue(function(t){return t=+t,ue(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},d=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==p&&9===a.nodeType&&a.documentElement?(p=a,h=p.documentElement,g=!o(p),w!==p&&(i=p.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=se(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=se(function(e){return e.appendChild(p.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=G.test(p.getElementsByClassName),n.getById=se(function(e){return h.appendChild(e).id=x,!p.getElementsByName||!p.getElementsByName(x).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],v=[],(n.qsa=G.test(p.querySelectorAll))&&(se(function(e){h.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+I+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+I+"*(?:value|"+H+")"),e.querySelectorAll("[id~="+x+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+x+"+*").length||v.push(".#.+[+~]")}),se(function(e){e.innerHTML=" ";var t=p.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+I+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(n.matchesSelector=G.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&se(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),y.push("!=",M)}),v=v.length&&new RegExp(v.join("|")),y=y.length&&new RegExp(y.join("|")),t=G.test(h.compareDocumentPosition),b=t||G.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===p||e.ownerDocument===w&&b(w,e)?-1:t===p||t.ownerDocument===w&&b(w,t)?1:c?P(c,e)-P(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],u=[t];if(!i||!o)return e===p?-1:t===p?1:i?-1:o?1:c?P(c,e)-P(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)u.unshift(n);while(a[r]===u[r])r++;return r?ce(a[r],u[r]):a[r]===w?-1:u[r]===w?1:0},p):p},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&d(e),t=t.replace(_,"='$1']"),n.matchesSelector&&g&&!k[t+" "]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,p,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==p&&d(e),b(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==p&&d(e);var i=r.attrHandle[t.toLowerCase()],o=i&&D.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(A),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:ue,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return X.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&U.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+I+")"+e+"("+I+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace(W," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),u="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,s){var l,c,f,d,p,h,g=o!==a?"nextSibling":"previousSibling",v=t.parentNode,y=u&&t.nodeName.toLowerCase(),m=!s&&!u,b=!1;if(v){if(o){while(g){d=t;while(d=d[g])if(u?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&m){b=(p=(l=(c=(f=(d=v)[x]||(d[x]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===C&&l[1])&&l[2],d=p&&v.childNodes[p];while(d=++p&&d&&d[g]||(b=p=0)||h.pop())if(1===d.nodeType&&++b&&d===t){c[e]=[C,p,b];break}}else if(m&&(b=p=(l=(c=(f=(d=t)[x]||(d[x]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===C&&l[1]),!1===b)while(d=++p&&d&&d[g]||(b=p=0)||h.pop())if((u?d.nodeName.toLowerCase()===y:1===d.nodeType)&&++b&&(m&&((c=(f=d[x]||(d[x]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]=[C,b]),d===t))break;return(b-=i)===r||b%r==0&&b/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[x]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?ue(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=P(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:ue(function(e){var t=[],n=[],r=u(e.replace($,"$1"));return r[x]?ue(function(e,t,n,i){var o,a=r(e,null,i,[]),u=e.length;while(u--)(o=a[u])&&(e[u]=!(t[u]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:ue(function(e){return function(t){return oe(e,t).length>0}}),contains:ue(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:ue(function(e){return V.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:pe(!1),disabled:pe(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xe(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else y=we(y===a?y.splice(h,y.length):y),i?i(null,a,y,s):q.apply(a,y)})}function Te(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],u=a||r.relative[" "],s=a?1:0,c=me(function(e){return e===t},u,!0),f=me(function(e){return P(t,e)>-1},u,!0),d=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];s1&&be(d),s>1&&ye(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),n,s0,i=e.length>0,o=function(o,a,u,s,c){var f,h,v,y=0,m="0",b=o&&[],x=[],w=l,T=o||i&&r.find.TAG("*",c),E=C+=null==w?1:Math.random()||.1,N=T.length;for(c&&(l=a===p||a||c);m!==N&&null!=(f=T[m]);m++){if(i&&f){h=0,a||f.ownerDocument===p||(d(f),u=!g);while(v=e[h++])if(v(f,a||p,u)){s.push(f);break}c&&(C=E)}n&&((f=!v&&f)&&y--,o&&b.push(f))}if(y+=m,n&&m!==y){h=0;while(v=t[h++])v(b,x,a,u);if(o){if(y>0)while(m--)b[m]||x[m]||(x[m]=L.call(s));x=we(x)}q.apply(s,x),c&&!o&&x.length>0&&y+t.length>1&&oe.uniqueSort(s)}return c&&(C=E,l=w),b};return n?ue(o):o}return u=oe.compile=function(e,t){var n,r=[],i=[],o=k[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Te(t[n]))[x]?r.push(o):i.push(o);(o=k(e,Ee(i,r))).selector=e}return o},s=oe.select=function(e,t,n,i){var o,s,l,c,f,d="function"==typeof e&&e,p=!i&&a(e=d.selector||e);if(n=n||[],1===p.length){if((s=p[0]=p[0].slice(0)).length>2&&"ID"===(l=s[0]).type&&9===t.nodeType&&g&&r.relative[s[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;d&&(t=t.parentNode),e=e.slice(s.shift().value.length)}o=X.needsContext.test(e)?0:s.length;while(o--){if(l=s[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),J.test(s[0].type)&&ge(t.parentNode)||t))){if(s.splice(o,1),!(e=i.length&&ye(s)))return q.apply(n,i),n;break}}}return(d||u(e,p))(i,t,!g,n,!t||J.test(e)&&ge(t.parentNode)||t),n},n.sortStable=x.split("").sort(A).join("")===x,n.detectDuplicates=!!f,d(),n.sortDetached=se(function(e){return 1&e.compareDocumentPosition(p.createElement("fieldset"))}),se(function(e){return e.innerHTML=" ","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&se(function(e){return e.innerHTML=" ",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),se(function(e){return null==e.getAttribute("disabled")})||le(H,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var N=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},k=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},A=w.expr.match.needsContext;function D(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var S=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function L(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return s.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(L(this,e||[],!1))},not:function(e){return this.pushStack(L(this,e||[],!0))},is:function(e){return!!L(this,"string"==typeof e&&A.test(e)?w(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:q.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),S.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,j=w(r);var O=/^(?:parents|prev(?:Until|All))/,P={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?s.call(w(e),this[0]):s.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function H(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return N(e,"parentNode")},parentsUntil:function(e,t,n){return N(e,"parentNode",n)},next:function(e){return H(e,"nextSibling")},prev:function(e){return H(e,"previousSibling")},nextAll:function(e){return N(e,"nextSibling")},prevAll:function(e){return N(e,"previousSibling")},nextUntil:function(e,t,n){return N(e,"nextSibling",n)},prevUntil:function(e,t,n){return N(e,"previousSibling",n)},siblings:function(e){return k((e.parentNode||{}).firstChild,e)},children:function(e){return k(e.firstChild)},contents:function(e){return D(e,"iframe")?e.contentDocument:(D(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(P[e]||w.uniqueSort(i),O.test(e)&&i.reverse()),this.pushStack(i)}});var I=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(I)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],u=-1,s=function(){for(i=i||e.once,r=t=!0;a.length;u=-1){n=a.shift();while(++u-1)o.splice(n,1),n<=u&&u--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||s()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function B(e){return e}function M(e){throw e}function W(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var u=this,s=arguments,l=function(){var e,l;if(!(t=o&&(r!==M&&(u=void 0,s=[e]),n.rejectWith(u,s))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:B,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:B)),n[2][3].add(a(0,e,g(r)?r:M))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],u=t[5];i[t[1]]=a.add,u&&a.add(function(){r=u},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),u=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&(W(e,a.done(u(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)W(i[n],u(n),a.reject);return a.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&$.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function z(){r.removeEventListener("DOMContentLoaded",z),e.removeEventListener("load",z),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",z),e.addEventListener("load",z));var _=function(e,t,n,r,i,o,a){var u=0,s=e.length,l=null==n;if("object"===b(n)){i=!0;for(u in n)_(e,t,u,n[u],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;u1,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=K.get(e,t),n&&(!r||Array.isArray(n)?r=K.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return K.get(e,n)||K.access(e,n,{empty:w.Callbacks("once memory").add(function(){K.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""," "],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&D(e,t)?w.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var xe=r.documentElement,we=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function Ne(){return!1}function ke(){try{return r.activeElement}catch(e){}}function Ae(e,t,n,r,i,o){var a,u;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(u in t)Ae(e,u,n,r,t[u],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ne;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,u,s,l,c,f,d,p,h,g,v=K.get(e);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(xe,i),n.guid||(n.guid=w.guid++),(s=v.events)||(s=v.events={}),(a=v.handle)||(a=v.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(I)||[""]).length;while(l--)p=g=(u=Te.exec(t[l])||[])[1],h=(u[2]||"").split(".").sort(),p&&(f=w.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=w.event.special[p]||{},c=w.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=s[p])||((d=s[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(p,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),w.event.global[p]=!0)}},remove:function(e,t,n,r,i){var o,a,u,s,l,c,f,d,p,h,g,v=K.hasData(e)&&K.get(e);if(v&&(s=v.events)){l=(t=(t||"").match(I)||[""]).length;while(l--)if(u=Te.exec(t[l])||[],p=g=u[1],h=(u[2]||"").split(".").sort(),p){f=w.event.special[p]||{},d=s[p=(r?f.delegateType:f.bindType)||p]||[],u=u[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;while(o--)c=d[o],!i&&g!==c.origType||n&&n.guid!==c.guid||u&&!u.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||w.removeEvent(e,p,v.handle),delete s[p])}else for(p in s)w.event.remove(e,p+t[l],n,r,!0);w.isEmptyObject(s)&&K.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,u,s=new Array(arguments.length),l=(K.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(s[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&u.push({elem:l,handlers:o})}return l=this,s\x20\t\r\n\f]*)[^>]*)\/>/gi,Se=/
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
Admin Entrance Log
24 |
25 | {% for log in logs %}
26 | {{ log[1] }} {{ log[2] }}
27 | {% endfor %}
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | {% endblock %}
--------------------------------------------------------------------------------
/templates/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Streaming Video Recorder
5 |
6 |
7 | Streaming Video Recorder
8 |
9 |
Record
10 |
Stop
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/templates/index2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | Computer Vision
13 |
14 |
15 |
16 |
17 |
18 | Computer Vision Security System
19 |
20 |
21 |
22 |
36 |
37 |
38 |
39 |
40 |
41 | {% block content %}
42 | {% endblock %}
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/templates/success.html:
--------------------------------------------------------------------------------
1 | {% extends "index2.html" %}
2 | {% block content%}
3 |
4 |
Visitor added succesfully!!
5 |
Check the Visitors List Here
6 |
7 |
8 | {% endblock %}
--------------------------------------------------------------------------------
/templates/visitors_list.html:
--------------------------------------------------------------------------------
1 | {% extends "index2.html" %}
2 | {% block content%}
3 |
4 |
5 |
Permitted Visitors list
6 |
7 | {% for visitor in visitors %}
8 | {{ visitor[1] }} {{ visitor[2] }} {{ visitor[3] }}
9 | {% endfor %}
10 |
11 |
12 |
13 |
14 | {% endblock %}
--------------------------------------------------------------------------------