commit
						66e4091023
					
				@ -1,2 +1,3 @@
 | 
				
			|||||||
sandbox
 | 
					sandbox
 | 
				
			||||||
*.pyc
 | 
					*.pyc
 | 
				
			||||||
 | 
					.DS_Store
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
						"virtual-env":{
 | 
				
			||||||
 | 
							"class":"Sandbox",
 | 
				
			||||||
 | 
							"config":{
 | 
				
			||||||
 | 
								"3-launchpad":{"requirements":"/Users/michaelmead/Documents/git/repair-file/required.txt","sandbox":"/Users/michaelmead/Documents/git/sandbox"}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						"processes":{
 | 
				
			||||||
 | 
							"class":"DetailProcess",
 | 
				
			||||||
 | 
							"config":{
 | 
				
			||||||
 | 
								"system":["postgresql","couchdb","httpd"]
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
											
												Binary file not shown.
											
										
									
								@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					python
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					python
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/include/python3.5m
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/__future__.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/_bootlocale.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/_collections_abc.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/_dummy_thread.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/_weakrefset.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/abc.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/base64.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/bisect.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/codecs.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/collections
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/config-3.5m
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/copy.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/copyreg.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/encodings
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/fnmatch.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/functools.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/genericpath.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/hashlib.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/heapq.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/hmac.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/imp.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/importlib
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/io.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/keyword.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/lib-dynload
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/linecache.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/locale.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/ntpath.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/operator.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/os.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/plat-darwin
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/posixpath.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/random.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/re.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/reprlib.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/rlcompleter.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/shutil.py
 | 
				
			||||||
@ -0,0 +1,758 @@
 | 
				
			|||||||
 | 
					"""Append module search paths for third-party packages to sys.path.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					****************************************************************
 | 
				
			||||||
 | 
					* This module is automatically imported during initialization. *
 | 
				
			||||||
 | 
					****************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In earlier versions of Python (up to 1.5a3), scripts or modules that
 | 
				
			||||||
 | 
					needed to use site-specific modules would place ``import site''
 | 
				
			||||||
 | 
					somewhere near the top of their code.  Because of the automatic
 | 
				
			||||||
 | 
					import, this is no longer necessary (but code that does it still
 | 
				
			||||||
 | 
					works).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This will append site-specific paths to the module search path.  On
 | 
				
			||||||
 | 
					Unix, it starts with sys.prefix and sys.exec_prefix (if different) and
 | 
				
			||||||
 | 
					appends lib/python<version>/site-packages as well as lib/site-python.
 | 
				
			||||||
 | 
					It also supports the Debian convention of
 | 
				
			||||||
 | 
					lib/python<version>/dist-packages.  On other platforms (mainly Mac and
 | 
				
			||||||
 | 
					Windows), it uses just sys.prefix (and sys.exec_prefix, if different,
 | 
				
			||||||
 | 
					but this is unlikely).  The resulting directories, if they exist, are
 | 
				
			||||||
 | 
					appended to sys.path, and also inspected for path configuration files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FOR DEBIAN, this sys.path is augmented with directories in /usr/local.
 | 
				
			||||||
 | 
					Local addons go into /usr/local/lib/python<version>/site-packages
 | 
				
			||||||
 | 
					(resp. /usr/local/lib/site-python), Debian addons install into
 | 
				
			||||||
 | 
					/usr/{lib,share}/python<version>/dist-packages.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A path configuration file is a file whose name has the form
 | 
				
			||||||
 | 
					<package>.pth; its contents are additional directories (one per line)
 | 
				
			||||||
 | 
					to be added to sys.path.  Non-existing directories (or
 | 
				
			||||||
 | 
					non-directories) are never added to sys.path; no directory is added to
 | 
				
			||||||
 | 
					sys.path more than once.  Blank lines and lines beginning with
 | 
				
			||||||
 | 
					'#' are skipped. Lines starting with 'import' are executed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For example, suppose sys.prefix and sys.exec_prefix are set to
 | 
				
			||||||
 | 
					/usr/local and there is a directory /usr/local/lib/python2.X/site-packages
 | 
				
			||||||
 | 
					with three subdirectories, foo, bar and spam, and two path
 | 
				
			||||||
 | 
					configuration files, foo.pth and bar.pth.  Assume foo.pth contains the
 | 
				
			||||||
 | 
					following:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # foo package configuration
 | 
				
			||||||
 | 
					  foo
 | 
				
			||||||
 | 
					  bar
 | 
				
			||||||
 | 
					  bletch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					and bar.pth contains:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # bar package configuration
 | 
				
			||||||
 | 
					  bar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Then the following directories are added to sys.path, in this order:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /usr/local/lib/python2.X/site-packages/bar
 | 
				
			||||||
 | 
					  /usr/local/lib/python2.X/site-packages/foo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Note that bletch is omitted because it doesn't exist; bar precedes foo
 | 
				
			||||||
 | 
					because bar.pth comes alphabetically before foo.pth; and spam is
 | 
				
			||||||
 | 
					omitted because it is not mentioned in either path configuration file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					After these path manipulations, an attempt is made to import a module
 | 
				
			||||||
 | 
					named sitecustomize, which can perform arbitrary additional
 | 
				
			||||||
 | 
					site-specific customizations.  If this import fails with an
 | 
				
			||||||
 | 
					ImportError exception, it is silently ignored.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import sys
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					try:
 | 
				
			||||||
 | 
					    import __builtin__ as builtins
 | 
				
			||||||
 | 
					except ImportError:
 | 
				
			||||||
 | 
					    import builtins
 | 
				
			||||||
 | 
					try:
 | 
				
			||||||
 | 
					    set
 | 
				
			||||||
 | 
					except NameError:
 | 
				
			||||||
 | 
					    from sets import Set as set
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Prefixes for site-packages; add additional prefixes like /usr/local here
 | 
				
			||||||
 | 
					PREFIXES = [sys.prefix, sys.exec_prefix]
 | 
				
			||||||
 | 
					# Enable per user site-packages directory
 | 
				
			||||||
 | 
					# set it to False to disable the feature or True to force the feature
 | 
				
			||||||
 | 
					ENABLE_USER_SITE = None
 | 
				
			||||||
 | 
					# for distutils.commands.install
 | 
				
			||||||
 | 
					USER_SITE = None
 | 
				
			||||||
 | 
					USER_BASE = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_is_64bit = (getattr(sys, 'maxsize', None) or getattr(sys, 'maxint')) > 2**32
 | 
				
			||||||
 | 
					_is_pypy = hasattr(sys, 'pypy_version_info')
 | 
				
			||||||
 | 
					_is_jython = sys.platform[:4] == 'java'
 | 
				
			||||||
 | 
					if _is_jython:
 | 
				
			||||||
 | 
					    ModuleType = type(os)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def makepath(*paths):
 | 
				
			||||||
 | 
					    dir = os.path.join(*paths)
 | 
				
			||||||
 | 
					    if _is_jython and (dir == '__classpath__' or
 | 
				
			||||||
 | 
					                       dir.startswith('__pyclasspath__')):
 | 
				
			||||||
 | 
					        return dir, dir
 | 
				
			||||||
 | 
					    dir = os.path.abspath(dir)
 | 
				
			||||||
 | 
					    return dir, os.path.normcase(dir)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def abs__file__():
 | 
				
			||||||
 | 
					    """Set all module' __file__ attribute to an absolute path"""
 | 
				
			||||||
 | 
					    for m in sys.modules.values():
 | 
				
			||||||
 | 
					        if ((_is_jython and not isinstance(m, ModuleType)) or
 | 
				
			||||||
 | 
					            hasattr(m, '__loader__')):
 | 
				
			||||||
 | 
					            # only modules need the abspath in Jython. and don't mess
 | 
				
			||||||
 | 
					            # with a PEP 302-supplied __file__
 | 
				
			||||||
 | 
					            continue
 | 
				
			||||||
 | 
					        f = getattr(m, '__file__', None)
 | 
				
			||||||
 | 
					        if f is None:
 | 
				
			||||||
 | 
					            continue
 | 
				
			||||||
 | 
					        m.__file__ = os.path.abspath(f)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def removeduppaths():
 | 
				
			||||||
 | 
					    """ Remove duplicate entries from sys.path along with making them
 | 
				
			||||||
 | 
					    absolute"""
 | 
				
			||||||
 | 
					    # This ensures that the initial path provided by the interpreter contains
 | 
				
			||||||
 | 
					    # only absolute pathnames, even if we're running from the build directory.
 | 
				
			||||||
 | 
					    L = []
 | 
				
			||||||
 | 
					    known_paths = set()
 | 
				
			||||||
 | 
					    for dir in sys.path:
 | 
				
			||||||
 | 
					        # Filter out duplicate paths (on case-insensitive file systems also
 | 
				
			||||||
 | 
					        # if they only differ in case); turn relative paths into absolute
 | 
				
			||||||
 | 
					        # paths.
 | 
				
			||||||
 | 
					        dir, dircase = makepath(dir)
 | 
				
			||||||
 | 
					        if not dircase in known_paths:
 | 
				
			||||||
 | 
					            L.append(dir)
 | 
				
			||||||
 | 
					            known_paths.add(dircase)
 | 
				
			||||||
 | 
					    sys.path[:] = L
 | 
				
			||||||
 | 
					    return known_paths
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# XXX This should not be part of site.py, since it is needed even when
 | 
				
			||||||
 | 
					# using the -S option for Python.  See http://www.python.org/sf/586680
 | 
				
			||||||
 | 
					def addbuilddir():
 | 
				
			||||||
 | 
					    """Append ./build/lib.<platform> in case we're running in the build dir
 | 
				
			||||||
 | 
					    (especially for Guido :-)"""
 | 
				
			||||||
 | 
					    from distutils.util import get_platform
 | 
				
			||||||
 | 
					    s = "build/lib.%s-%.3s" % (get_platform(), sys.version)
 | 
				
			||||||
 | 
					    if hasattr(sys, 'gettotalrefcount'):
 | 
				
			||||||
 | 
					        s += '-pydebug'
 | 
				
			||||||
 | 
					    s = os.path.join(os.path.dirname(sys.path[-1]), s)
 | 
				
			||||||
 | 
					    sys.path.append(s)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def _init_pathinfo():
 | 
				
			||||||
 | 
					    """Return a set containing all existing directory entries from sys.path"""
 | 
				
			||||||
 | 
					    d = set()
 | 
				
			||||||
 | 
					    for dir in sys.path:
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            if os.path.isdir(dir):
 | 
				
			||||||
 | 
					                dir, dircase = makepath(dir)
 | 
				
			||||||
 | 
					                d.add(dircase)
 | 
				
			||||||
 | 
					        except TypeError:
 | 
				
			||||||
 | 
					            continue
 | 
				
			||||||
 | 
					    return d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def addpackage(sitedir, name, known_paths):
 | 
				
			||||||
 | 
					    """Add a new path to known_paths by combining sitedir and 'name' or execute
 | 
				
			||||||
 | 
					    sitedir if it starts with 'import'"""
 | 
				
			||||||
 | 
					    if known_paths is None:
 | 
				
			||||||
 | 
					        _init_pathinfo()
 | 
				
			||||||
 | 
					        reset = 1
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        reset = 0
 | 
				
			||||||
 | 
					    fullname = os.path.join(sitedir, name)
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        f = open(fullname, "rU")
 | 
				
			||||||
 | 
					    except IOError:
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        for line in f:
 | 
				
			||||||
 | 
					            if line.startswith("#"):
 | 
				
			||||||
 | 
					                continue
 | 
				
			||||||
 | 
					            if line.startswith("import"):
 | 
				
			||||||
 | 
					                exec(line)
 | 
				
			||||||
 | 
					                continue
 | 
				
			||||||
 | 
					            line = line.rstrip()
 | 
				
			||||||
 | 
					            dir, dircase = makepath(sitedir, line)
 | 
				
			||||||
 | 
					            if not dircase in known_paths and os.path.exists(dir):
 | 
				
			||||||
 | 
					                sys.path.append(dir)
 | 
				
			||||||
 | 
					                known_paths.add(dircase)
 | 
				
			||||||
 | 
					    finally:
 | 
				
			||||||
 | 
					        f.close()
 | 
				
			||||||
 | 
					    if reset:
 | 
				
			||||||
 | 
					        known_paths = None
 | 
				
			||||||
 | 
					    return known_paths
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def addsitedir(sitedir, known_paths=None):
 | 
				
			||||||
 | 
					    """Add 'sitedir' argument to sys.path if missing and handle .pth files in
 | 
				
			||||||
 | 
					    'sitedir'"""
 | 
				
			||||||
 | 
					    if known_paths is None:
 | 
				
			||||||
 | 
					        known_paths = _init_pathinfo()
 | 
				
			||||||
 | 
					        reset = 1
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        reset = 0
 | 
				
			||||||
 | 
					    sitedir, sitedircase = makepath(sitedir)
 | 
				
			||||||
 | 
					    if not sitedircase in known_paths:
 | 
				
			||||||
 | 
					        sys.path.append(sitedir)        # Add path component
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        names = os.listdir(sitedir)
 | 
				
			||||||
 | 
					    except os.error:
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    names.sort()
 | 
				
			||||||
 | 
					    for name in names:
 | 
				
			||||||
 | 
					        if name.endswith(os.extsep + "pth"):
 | 
				
			||||||
 | 
					            addpackage(sitedir, name, known_paths)
 | 
				
			||||||
 | 
					    if reset:
 | 
				
			||||||
 | 
					        known_paths = None
 | 
				
			||||||
 | 
					    return known_paths
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def addsitepackages(known_paths, sys_prefix=sys.prefix, exec_prefix=sys.exec_prefix):
 | 
				
			||||||
 | 
					    """Add site-packages (and possibly site-python) to sys.path"""
 | 
				
			||||||
 | 
					    prefixes = [os.path.join(sys_prefix, "local"), sys_prefix]
 | 
				
			||||||
 | 
					    if exec_prefix != sys_prefix:
 | 
				
			||||||
 | 
					        prefixes.append(os.path.join(exec_prefix, "local"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for prefix in prefixes:
 | 
				
			||||||
 | 
					        if prefix:
 | 
				
			||||||
 | 
					            if sys.platform in ('os2emx', 'riscos') or _is_jython:
 | 
				
			||||||
 | 
					                sitedirs = [os.path.join(prefix, "Lib", "site-packages")]
 | 
				
			||||||
 | 
					            elif _is_pypy:
 | 
				
			||||||
 | 
					                sitedirs = [os.path.join(prefix, 'site-packages')]
 | 
				
			||||||
 | 
					            elif sys.platform == 'darwin' and prefix == sys_prefix:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if prefix.startswith("/System/Library/Frameworks/"): # Apple's Python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    sitedirs = [os.path.join("/Library/Python", sys.version[:3], "site-packages"),
 | 
				
			||||||
 | 
					                                os.path.join(prefix, "Extras", "lib", "python")]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                else: # any other Python distros on OSX work this way
 | 
				
			||||||
 | 
					                    sitedirs = [os.path.join(prefix, "lib",
 | 
				
			||||||
 | 
					                                             "python" + sys.version[:3], "site-packages")]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            elif os.sep == '/':
 | 
				
			||||||
 | 
					                sitedirs = [os.path.join(prefix,
 | 
				
			||||||
 | 
					                                         "lib",
 | 
				
			||||||
 | 
					                                         "python" + sys.version[:3],
 | 
				
			||||||
 | 
					                                         "site-packages"),
 | 
				
			||||||
 | 
					                            os.path.join(prefix, "lib", "site-python"),
 | 
				
			||||||
 | 
					                            os.path.join(prefix, "python" + sys.version[:3], "lib-dynload")]
 | 
				
			||||||
 | 
					                lib64_dir = os.path.join(prefix, "lib64", "python" + sys.version[:3], "site-packages")
 | 
				
			||||||
 | 
					                if (os.path.exists(lib64_dir) and
 | 
				
			||||||
 | 
					                    os.path.realpath(lib64_dir) not in [os.path.realpath(p) for p in sitedirs]):
 | 
				
			||||||
 | 
					                    if _is_64bit:
 | 
				
			||||||
 | 
					                        sitedirs.insert(0, lib64_dir)
 | 
				
			||||||
 | 
					                    else:
 | 
				
			||||||
 | 
					                        sitedirs.append(lib64_dir)
 | 
				
			||||||
 | 
					                try:
 | 
				
			||||||
 | 
					                    # sys.getobjects only available in --with-pydebug build
 | 
				
			||||||
 | 
					                    sys.getobjects
 | 
				
			||||||
 | 
					                    sitedirs.insert(0, os.path.join(sitedirs[0], 'debug'))
 | 
				
			||||||
 | 
					                except AttributeError:
 | 
				
			||||||
 | 
					                    pass
 | 
				
			||||||
 | 
					                # Debian-specific dist-packages directories:
 | 
				
			||||||
 | 
					                sitedirs.append(os.path.join(prefix, "local/lib",
 | 
				
			||||||
 | 
					                                             "python" + sys.version[:3],
 | 
				
			||||||
 | 
					                                             "dist-packages"))
 | 
				
			||||||
 | 
					                if sys.version[0] == '2':
 | 
				
			||||||
 | 
					                    sitedirs.append(os.path.join(prefix, "lib",
 | 
				
			||||||
 | 
					                                                 "python" + sys.version[:3],
 | 
				
			||||||
 | 
					                                                 "dist-packages"))
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    sitedirs.append(os.path.join(prefix, "lib",
 | 
				
			||||||
 | 
					                                                 "python" + sys.version[0],
 | 
				
			||||||
 | 
					                                                 "dist-packages"))
 | 
				
			||||||
 | 
					                sitedirs.append(os.path.join(prefix, "lib", "dist-python"))
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                sitedirs = [prefix, os.path.join(prefix, "lib", "site-packages")]
 | 
				
			||||||
 | 
					            if sys.platform == 'darwin':
 | 
				
			||||||
 | 
					                # for framework builds *only* we add the standard Apple
 | 
				
			||||||
 | 
					                # locations. Currently only per-user, but /Library and
 | 
				
			||||||
 | 
					                # /Network/Library could be added too
 | 
				
			||||||
 | 
					                if 'Python.framework' in prefix:
 | 
				
			||||||
 | 
					                    home = os.environ.get('HOME')
 | 
				
			||||||
 | 
					                    if home:
 | 
				
			||||||
 | 
					                        sitedirs.append(
 | 
				
			||||||
 | 
					                            os.path.join(home,
 | 
				
			||||||
 | 
					                                         'Library',
 | 
				
			||||||
 | 
					                                         'Python',
 | 
				
			||||||
 | 
					                                         sys.version[:3],
 | 
				
			||||||
 | 
					                                         'site-packages'))
 | 
				
			||||||
 | 
					            for sitedir in sitedirs:
 | 
				
			||||||
 | 
					                if os.path.isdir(sitedir):
 | 
				
			||||||
 | 
					                    addsitedir(sitedir, known_paths)
 | 
				
			||||||
 | 
					    return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def check_enableusersite():
 | 
				
			||||||
 | 
					    """Check if user site directory is safe for inclusion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    The function tests for the command line flag (including environment var),
 | 
				
			||||||
 | 
					    process uid/gid equal to effective uid/gid.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    None: Disabled for security reasons
 | 
				
			||||||
 | 
					    False: Disabled by user (command line option)
 | 
				
			||||||
 | 
					    True: Safe and enabled
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    if hasattr(sys, 'flags') and getattr(sys.flags, 'no_user_site', False):
 | 
				
			||||||
 | 
					        return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if hasattr(os, "getuid") and hasattr(os, "geteuid"):
 | 
				
			||||||
 | 
					        # check process uid == effective uid
 | 
				
			||||||
 | 
					        if os.geteuid() != os.getuid():
 | 
				
			||||||
 | 
					            return None
 | 
				
			||||||
 | 
					    if hasattr(os, "getgid") and hasattr(os, "getegid"):
 | 
				
			||||||
 | 
					        # check process gid == effective gid
 | 
				
			||||||
 | 
					        if os.getegid() != os.getgid():
 | 
				
			||||||
 | 
					            return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def addusersitepackages(known_paths):
 | 
				
			||||||
 | 
					    """Add a per user site-package to sys.path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Each user has its own python directory with site-packages in the
 | 
				
			||||||
 | 
					    home directory.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    USER_BASE is the root directory for all Python versions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    USER_SITE is the user specific site-packages directory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    USER_SITE/.. can be used for data.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    global USER_BASE, USER_SITE, ENABLE_USER_SITE
 | 
				
			||||||
 | 
					    env_base = os.environ.get("PYTHONUSERBASE", None)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def joinuser(*args):
 | 
				
			||||||
 | 
					        return os.path.expanduser(os.path.join(*args))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #if sys.platform in ('os2emx', 'riscos'):
 | 
				
			||||||
 | 
					    #    # Don't know what to put here
 | 
				
			||||||
 | 
					    #    USER_BASE = ''
 | 
				
			||||||
 | 
					    #    USER_SITE = ''
 | 
				
			||||||
 | 
					    if os.name == "nt":
 | 
				
			||||||
 | 
					        base = os.environ.get("APPDATA") or "~"
 | 
				
			||||||
 | 
					        if env_base:
 | 
				
			||||||
 | 
					            USER_BASE = env_base
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            USER_BASE = joinuser(base, "Python")
 | 
				
			||||||
 | 
					        USER_SITE = os.path.join(USER_BASE,
 | 
				
			||||||
 | 
					                                 "Python" + sys.version[0] + sys.version[2],
 | 
				
			||||||
 | 
					                                 "site-packages")
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        if env_base:
 | 
				
			||||||
 | 
					            USER_BASE = env_base
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            USER_BASE = joinuser("~", ".local")
 | 
				
			||||||
 | 
					        USER_SITE = os.path.join(USER_BASE, "lib",
 | 
				
			||||||
 | 
					                                 "python" + sys.version[:3],
 | 
				
			||||||
 | 
					                                 "site-packages")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ENABLE_USER_SITE and os.path.isdir(USER_SITE):
 | 
				
			||||||
 | 
					        addsitedir(USER_SITE, known_paths)
 | 
				
			||||||
 | 
					    if ENABLE_USER_SITE:
 | 
				
			||||||
 | 
					        for dist_libdir in ("lib", "local/lib"):
 | 
				
			||||||
 | 
					            user_site = os.path.join(USER_BASE, dist_libdir,
 | 
				
			||||||
 | 
					                                     "python" + sys.version[:3],
 | 
				
			||||||
 | 
					                                     "dist-packages")
 | 
				
			||||||
 | 
					            if os.path.isdir(user_site):
 | 
				
			||||||
 | 
					                addsitedir(user_site, known_paths)
 | 
				
			||||||
 | 
					    return known_paths
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def setBEGINLIBPATH():
 | 
				
			||||||
 | 
					    """The OS/2 EMX port has optional extension modules that do double duty
 | 
				
			||||||
 | 
					    as DLLs (and must use the .DLL file extension) for other extensions.
 | 
				
			||||||
 | 
					    The library search path needs to be amended so these will be found
 | 
				
			||||||
 | 
					    during module import.  Use BEGINLIBPATH so that these are at the start
 | 
				
			||||||
 | 
					    of the library search path.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    dllpath = os.path.join(sys.prefix, "Lib", "lib-dynload")
 | 
				
			||||||
 | 
					    libpath = os.environ['BEGINLIBPATH'].split(';')
 | 
				
			||||||
 | 
					    if libpath[-1]:
 | 
				
			||||||
 | 
					        libpath.append(dllpath)
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        libpath[-1] = dllpath
 | 
				
			||||||
 | 
					    os.environ['BEGINLIBPATH'] = ';'.join(libpath)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def setquit():
 | 
				
			||||||
 | 
					    """Define new built-ins 'quit' and 'exit'.
 | 
				
			||||||
 | 
					    These are simply strings that display a hint on how to exit.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    if os.sep == ':':
 | 
				
			||||||
 | 
					        eof = 'Cmd-Q'
 | 
				
			||||||
 | 
					    elif os.sep == '\\':
 | 
				
			||||||
 | 
					        eof = 'Ctrl-Z plus Return'
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        eof = 'Ctrl-D (i.e. EOF)'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Quitter(object):
 | 
				
			||||||
 | 
					        def __init__(self, name):
 | 
				
			||||||
 | 
					            self.name = name
 | 
				
			||||||
 | 
					        def __repr__(self):
 | 
				
			||||||
 | 
					            return 'Use %s() or %s to exit' % (self.name, eof)
 | 
				
			||||||
 | 
					        def __call__(self, code=None):
 | 
				
			||||||
 | 
					            # Shells like IDLE catch the SystemExit, but listen when their
 | 
				
			||||||
 | 
					            # stdin wrapper is closed.
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                sys.stdin.close()
 | 
				
			||||||
 | 
					            except:
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
 | 
					            raise SystemExit(code)
 | 
				
			||||||
 | 
					    builtins.quit = Quitter('quit')
 | 
				
			||||||
 | 
					    builtins.exit = Quitter('exit')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _Printer(object):
 | 
				
			||||||
 | 
					    """interactive prompt objects for printing the license text, a list of
 | 
				
			||||||
 | 
					    contributors and the copyright notice."""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    MAXLINES = 23
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __init__(self, name, data, files=(), dirs=()):
 | 
				
			||||||
 | 
					        self.__name = name
 | 
				
			||||||
 | 
					        self.__data = data
 | 
				
			||||||
 | 
					        self.__files = files
 | 
				
			||||||
 | 
					        self.__dirs = dirs
 | 
				
			||||||
 | 
					        self.__lines = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __setup(self):
 | 
				
			||||||
 | 
					        if self.__lines:
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					        data = None
 | 
				
			||||||
 | 
					        for dir in self.__dirs:
 | 
				
			||||||
 | 
					            for filename in self.__files:
 | 
				
			||||||
 | 
					                filename = os.path.join(dir, filename)
 | 
				
			||||||
 | 
					                try:
 | 
				
			||||||
 | 
					                    fp = open(filename, "rU")
 | 
				
			||||||
 | 
					                    data = fp.read()
 | 
				
			||||||
 | 
					                    fp.close()
 | 
				
			||||||
 | 
					                    break
 | 
				
			||||||
 | 
					                except IOError:
 | 
				
			||||||
 | 
					                    pass
 | 
				
			||||||
 | 
					            if data:
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					        if not data:
 | 
				
			||||||
 | 
					            data = self.__data
 | 
				
			||||||
 | 
					        self.__lines = data.split('\n')
 | 
				
			||||||
 | 
					        self.__linecnt = len(self.__lines)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __repr__(self):
 | 
				
			||||||
 | 
					        self.__setup()
 | 
				
			||||||
 | 
					        if len(self.__lines) <= self.MAXLINES:
 | 
				
			||||||
 | 
					            return "\n".join(self.__lines)
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            return "Type %s() to see the full %s text" % ((self.__name,)*2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __call__(self):
 | 
				
			||||||
 | 
					        self.__setup()
 | 
				
			||||||
 | 
					        prompt = 'Hit Return for more, or q (and Return) to quit: '
 | 
				
			||||||
 | 
					        lineno = 0
 | 
				
			||||||
 | 
					        while 1:
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                for i in range(lineno, lineno + self.MAXLINES):
 | 
				
			||||||
 | 
					                    print(self.__lines[i])
 | 
				
			||||||
 | 
					            except IndexError:
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                lineno += self.MAXLINES
 | 
				
			||||||
 | 
					                key = None
 | 
				
			||||||
 | 
					                while key is None:
 | 
				
			||||||
 | 
					                    try:
 | 
				
			||||||
 | 
					                        key = raw_input(prompt)
 | 
				
			||||||
 | 
					                    except NameError:
 | 
				
			||||||
 | 
					                        key = input(prompt)
 | 
				
			||||||
 | 
					                    if key not in ('', 'q'):
 | 
				
			||||||
 | 
					                        key = None
 | 
				
			||||||
 | 
					                if key == 'q':
 | 
				
			||||||
 | 
					                    break
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def setcopyright():
 | 
				
			||||||
 | 
					    """Set 'copyright' and 'credits' in __builtin__"""
 | 
				
			||||||
 | 
					    builtins.copyright = _Printer("copyright", sys.copyright)
 | 
				
			||||||
 | 
					    if _is_jython:
 | 
				
			||||||
 | 
					        builtins.credits = _Printer(
 | 
				
			||||||
 | 
					            "credits",
 | 
				
			||||||
 | 
					            "Jython is maintained by the Jython developers (www.jython.org).")
 | 
				
			||||||
 | 
					    elif _is_pypy:
 | 
				
			||||||
 | 
					        builtins.credits = _Printer(
 | 
				
			||||||
 | 
					            "credits",
 | 
				
			||||||
 | 
					            "PyPy is maintained by the PyPy developers: http://pypy.org/")
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        builtins.credits = _Printer("credits", """\
 | 
				
			||||||
 | 
					    Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
 | 
				
			||||||
 | 
					    for supporting Python development.  See www.python.org for more information.""")
 | 
				
			||||||
 | 
					    here = os.path.dirname(os.__file__)
 | 
				
			||||||
 | 
					    builtins.license = _Printer(
 | 
				
			||||||
 | 
					        "license", "See http://www.python.org/%.3s/license.html" % sys.version,
 | 
				
			||||||
 | 
					        ["LICENSE.txt", "LICENSE"],
 | 
				
			||||||
 | 
					        [os.path.join(here, os.pardir), here, os.curdir])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _Helper(object):
 | 
				
			||||||
 | 
					    """Define the built-in 'help'.
 | 
				
			||||||
 | 
					    This is a wrapper around pydoc.help (with a twist).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __repr__(self):
 | 
				
			||||||
 | 
					        return "Type help() for interactive help, " \
 | 
				
			||||||
 | 
					               "or help(object) for help about object."
 | 
				
			||||||
 | 
					    def __call__(self, *args, **kwds):
 | 
				
			||||||
 | 
					        import pydoc
 | 
				
			||||||
 | 
					        return pydoc.help(*args, **kwds)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def sethelper():
 | 
				
			||||||
 | 
					    builtins.help = _Helper()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def aliasmbcs():
 | 
				
			||||||
 | 
					    """On Windows, some default encodings are not provided by Python,
 | 
				
			||||||
 | 
					    while they are always available as "mbcs" in each locale. Make
 | 
				
			||||||
 | 
					    them usable by aliasing to "mbcs" in such a case."""
 | 
				
			||||||
 | 
					    if sys.platform == 'win32':
 | 
				
			||||||
 | 
					        import locale, codecs
 | 
				
			||||||
 | 
					        enc = locale.getdefaultlocale()[1]
 | 
				
			||||||
 | 
					        if enc.startswith('cp'):            # "cp***" ?
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                codecs.lookup(enc)
 | 
				
			||||||
 | 
					            except LookupError:
 | 
				
			||||||
 | 
					                import encodings
 | 
				
			||||||
 | 
					                encodings._cache[enc] = encodings._unknown
 | 
				
			||||||
 | 
					                encodings.aliases.aliases[enc] = 'mbcs'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def setencoding():
 | 
				
			||||||
 | 
					    """Set the string encoding used by the Unicode implementation.  The
 | 
				
			||||||
 | 
					    default is 'ascii', but if you're willing to experiment, you can
 | 
				
			||||||
 | 
					    change this."""
 | 
				
			||||||
 | 
					    encoding = "ascii" # Default value set by _PyUnicode_Init()
 | 
				
			||||||
 | 
					    if 0:
 | 
				
			||||||
 | 
					        # Enable to support locale aware default string encodings.
 | 
				
			||||||
 | 
					        import locale
 | 
				
			||||||
 | 
					        loc = locale.getdefaultlocale()
 | 
				
			||||||
 | 
					        if loc[1]:
 | 
				
			||||||
 | 
					            encoding = loc[1]
 | 
				
			||||||
 | 
					    if 0:
 | 
				
			||||||
 | 
					        # Enable to switch off string to Unicode coercion and implicit
 | 
				
			||||||
 | 
					        # Unicode to string conversion.
 | 
				
			||||||
 | 
					        encoding = "undefined"
 | 
				
			||||||
 | 
					    if encoding != "ascii":
 | 
				
			||||||
 | 
					        # On Non-Unicode builds this will raise an AttributeError...
 | 
				
			||||||
 | 
					        sys.setdefaultencoding(encoding) # Needs Python Unicode build !
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def execsitecustomize():
 | 
				
			||||||
 | 
					    """Run custom site specific code, if available."""
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        import sitecustomize
 | 
				
			||||||
 | 
					    except ImportError:
 | 
				
			||||||
 | 
					        pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def virtual_install_main_packages():
 | 
				
			||||||
 | 
					    f = open(os.path.join(os.path.dirname(__file__), 'orig-prefix.txt'))
 | 
				
			||||||
 | 
					    sys.real_prefix = f.read().strip()
 | 
				
			||||||
 | 
					    f.close()
 | 
				
			||||||
 | 
					    pos = 2
 | 
				
			||||||
 | 
					    hardcoded_relative_dirs = []
 | 
				
			||||||
 | 
					    if sys.path[0] == '':
 | 
				
			||||||
 | 
					        pos += 1
 | 
				
			||||||
 | 
					    if _is_jython:
 | 
				
			||||||
 | 
					        paths = [os.path.join(sys.real_prefix, 'Lib')]
 | 
				
			||||||
 | 
					    elif _is_pypy:
 | 
				
			||||||
 | 
					        if sys.version_info > (3, 2):
 | 
				
			||||||
 | 
					            cpyver = '%d' % sys.version_info[0]
 | 
				
			||||||
 | 
					        elif sys.pypy_version_info >= (1, 5):
 | 
				
			||||||
 | 
					            cpyver = '%d.%d' % sys.version_info[:2]
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            cpyver = '%d.%d.%d' % sys.version_info[:3]
 | 
				
			||||||
 | 
					        paths = [os.path.join(sys.real_prefix, 'lib_pypy'),
 | 
				
			||||||
 | 
					                 os.path.join(sys.real_prefix, 'lib-python', cpyver)]
 | 
				
			||||||
 | 
					        if sys.pypy_version_info < (1, 9):
 | 
				
			||||||
 | 
					            paths.insert(1, os.path.join(sys.real_prefix,
 | 
				
			||||||
 | 
					                                         'lib-python', 'modified-%s' % cpyver))
 | 
				
			||||||
 | 
					        hardcoded_relative_dirs = paths[:] # for the special 'darwin' case below
 | 
				
			||||||
 | 
					        #
 | 
				
			||||||
 | 
					        # This is hardcoded in the Python executable, but relative to sys.prefix:
 | 
				
			||||||
 | 
					        for path in paths[:]:
 | 
				
			||||||
 | 
					            plat_path = os.path.join(path, 'plat-%s' % sys.platform)
 | 
				
			||||||
 | 
					            if os.path.exists(plat_path):
 | 
				
			||||||
 | 
					                paths.append(plat_path)
 | 
				
			||||||
 | 
					    elif sys.platform == 'win32':
 | 
				
			||||||
 | 
					        paths = [os.path.join(sys.real_prefix, 'Lib'), os.path.join(sys.real_prefix, 'DLLs')]
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        paths = [os.path.join(sys.real_prefix, 'lib', 'python'+sys.version[:3])]
 | 
				
			||||||
 | 
					        hardcoded_relative_dirs = paths[:] # for the special 'darwin' case below
 | 
				
			||||||
 | 
					        lib64_path = os.path.join(sys.real_prefix, 'lib64', 'python'+sys.version[:3])
 | 
				
			||||||
 | 
					        if os.path.exists(lib64_path):
 | 
				
			||||||
 | 
					            if _is_64bit:
 | 
				
			||||||
 | 
					                paths.insert(0, lib64_path)
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                paths.append(lib64_path)
 | 
				
			||||||
 | 
					        # This is hardcoded in the Python executable, but relative to
 | 
				
			||||||
 | 
					        # sys.prefix.  Debian change: we need to add the multiarch triplet
 | 
				
			||||||
 | 
					        # here, which is where the real stuff lives.  As per PEP 421, in
 | 
				
			||||||
 | 
					        # Python 3.3+, this lives in sys.implementation, while in Python 2.7
 | 
				
			||||||
 | 
					        # it lives in sys.
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            arch = getattr(sys, 'implementation', sys)._multiarch
 | 
				
			||||||
 | 
					        except AttributeError:
 | 
				
			||||||
 | 
					            # This is a non-multiarch aware Python.  Fallback to the old way.
 | 
				
			||||||
 | 
					            arch = sys.platform
 | 
				
			||||||
 | 
					        plat_path = os.path.join(sys.real_prefix, 'lib',
 | 
				
			||||||
 | 
					                                 'python'+sys.version[:3],
 | 
				
			||||||
 | 
					                                 'plat-%s' % arch)
 | 
				
			||||||
 | 
					        if os.path.exists(plat_path):
 | 
				
			||||||
 | 
					            paths.append(plat_path)
 | 
				
			||||||
 | 
					    # This is hardcoded in the Python executable, but
 | 
				
			||||||
 | 
					    # relative to sys.prefix, so we have to fix up:
 | 
				
			||||||
 | 
					    for path in list(paths):
 | 
				
			||||||
 | 
					        tk_dir = os.path.join(path, 'lib-tk')
 | 
				
			||||||
 | 
					        if os.path.exists(tk_dir):
 | 
				
			||||||
 | 
					            paths.append(tk_dir)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # These are hardcoded in the Apple's Python executable,
 | 
				
			||||||
 | 
					    # but relative to sys.prefix, so we have to fix them up:
 | 
				
			||||||
 | 
					    if sys.platform == 'darwin':
 | 
				
			||||||
 | 
					        hardcoded_paths = [os.path.join(relative_dir, module)
 | 
				
			||||||
 | 
					                           for relative_dir in hardcoded_relative_dirs
 | 
				
			||||||
 | 
					                           for module in ('plat-darwin', 'plat-mac', 'plat-mac/lib-scriptpackages')]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for path in hardcoded_paths:
 | 
				
			||||||
 | 
					            if os.path.exists(path):
 | 
				
			||||||
 | 
					                paths.append(path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sys.path.extend(paths)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def force_global_eggs_after_local_site_packages():
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Force easy_installed eggs in the global environment to get placed
 | 
				
			||||||
 | 
					    in sys.path after all packages inside the virtualenv.  This
 | 
				
			||||||
 | 
					    maintains the "least surprise" result that packages in the
 | 
				
			||||||
 | 
					    virtualenv always mask global packages, never the other way
 | 
				
			||||||
 | 
					    around.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    egginsert = getattr(sys, '__egginsert', 0)
 | 
				
			||||||
 | 
					    for i, path in enumerate(sys.path):
 | 
				
			||||||
 | 
					        if i > egginsert and path.startswith(sys.prefix):
 | 
				
			||||||
 | 
					            egginsert = i
 | 
				
			||||||
 | 
					    sys.__egginsert = egginsert + 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def virtual_addsitepackages(known_paths):
 | 
				
			||||||
 | 
					    force_global_eggs_after_local_site_packages()
 | 
				
			||||||
 | 
					    return addsitepackages(known_paths, sys_prefix=sys.real_prefix)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def fixclasspath():
 | 
				
			||||||
 | 
					    """Adjust the special classpath sys.path entries for Jython. These
 | 
				
			||||||
 | 
					    entries should follow the base virtualenv lib directories.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    paths = []
 | 
				
			||||||
 | 
					    classpaths = []
 | 
				
			||||||
 | 
					    for path in sys.path:
 | 
				
			||||||
 | 
					        if path == '__classpath__' or path.startswith('__pyclasspath__'):
 | 
				
			||||||
 | 
					            classpaths.append(path)
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            paths.append(path)
 | 
				
			||||||
 | 
					    sys.path = paths
 | 
				
			||||||
 | 
					    sys.path.extend(classpaths)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def execusercustomize():
 | 
				
			||||||
 | 
					    """Run custom user specific code, if available."""
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        import usercustomize
 | 
				
			||||||
 | 
					    except ImportError:
 | 
				
			||||||
 | 
					        pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def main():
 | 
				
			||||||
 | 
					    global ENABLE_USER_SITE
 | 
				
			||||||
 | 
					    virtual_install_main_packages()
 | 
				
			||||||
 | 
					    abs__file__()
 | 
				
			||||||
 | 
					    paths_in_sys = removeduppaths()
 | 
				
			||||||
 | 
					    if (os.name == "posix" and sys.path and
 | 
				
			||||||
 | 
					        os.path.basename(sys.path[-1]) == "Modules"):
 | 
				
			||||||
 | 
					        addbuilddir()
 | 
				
			||||||
 | 
					    if _is_jython:
 | 
				
			||||||
 | 
					        fixclasspath()
 | 
				
			||||||
 | 
					    GLOBAL_SITE_PACKAGES = not os.path.exists(os.path.join(os.path.dirname(__file__), 'no-global-site-packages.txt'))
 | 
				
			||||||
 | 
					    if not GLOBAL_SITE_PACKAGES:
 | 
				
			||||||
 | 
					        ENABLE_USER_SITE = False
 | 
				
			||||||
 | 
					    if ENABLE_USER_SITE is None:
 | 
				
			||||||
 | 
					        ENABLE_USER_SITE = check_enableusersite()
 | 
				
			||||||
 | 
					    paths_in_sys = addsitepackages(paths_in_sys)
 | 
				
			||||||
 | 
					    paths_in_sys = addusersitepackages(paths_in_sys)
 | 
				
			||||||
 | 
					    if GLOBAL_SITE_PACKAGES:
 | 
				
			||||||
 | 
					        paths_in_sys = virtual_addsitepackages(paths_in_sys)
 | 
				
			||||||
 | 
					    if sys.platform == 'os2emx':
 | 
				
			||||||
 | 
					        setBEGINLIBPATH()
 | 
				
			||||||
 | 
					    setquit()
 | 
				
			||||||
 | 
					    setcopyright()
 | 
				
			||||||
 | 
					    sethelper()
 | 
				
			||||||
 | 
					    aliasmbcs()
 | 
				
			||||||
 | 
					    setencoding()
 | 
				
			||||||
 | 
					    execsitecustomize()
 | 
				
			||||||
 | 
					    if ENABLE_USER_SITE:
 | 
				
			||||||
 | 
					        execusercustomize()
 | 
				
			||||||
 | 
					    # Remove sys.setdefaultencoding() so that users cannot change the
 | 
				
			||||||
 | 
					    # encoding after initialization.  The test for presence is needed when
 | 
				
			||||||
 | 
					    # this module is run as a script, because this code is executed twice.
 | 
				
			||||||
 | 
					    if hasattr(sys, "setdefaultencoding"):
 | 
				
			||||||
 | 
					        del sys.setdefaultencoding
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					main()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def _script():
 | 
				
			||||||
 | 
					    help = """\
 | 
				
			||||||
 | 
					    %s [--user-base] [--user-site]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Without arguments print some useful information
 | 
				
			||||||
 | 
					    With arguments print the value of USER_BASE and/or USER_SITE separated
 | 
				
			||||||
 | 
					    by '%s'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Exit codes with --user-base or --user-site:
 | 
				
			||||||
 | 
					      0 - user site directory is enabled
 | 
				
			||||||
 | 
					      1 - user site directory is disabled by user
 | 
				
			||||||
 | 
					      2 - uses site directory is disabled by super user
 | 
				
			||||||
 | 
					          or for security reasons
 | 
				
			||||||
 | 
					     >2 - unknown error
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    args = sys.argv[1:]
 | 
				
			||||||
 | 
					    if not args:
 | 
				
			||||||
 | 
					        print("sys.path = [")
 | 
				
			||||||
 | 
					        for dir in sys.path:
 | 
				
			||||||
 | 
					            print("    %r," % (dir,))
 | 
				
			||||||
 | 
					        print("]")
 | 
				
			||||||
 | 
					        def exists(path):
 | 
				
			||||||
 | 
					            if os.path.isdir(path):
 | 
				
			||||||
 | 
					                return "exists"
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                return "doesn't exist"
 | 
				
			||||||
 | 
					        print("USER_BASE: %r (%s)" % (USER_BASE, exists(USER_BASE)))
 | 
				
			||||||
 | 
					        print("USER_SITE: %r (%s)" % (USER_SITE, exists(USER_BASE)))
 | 
				
			||||||
 | 
					        print("ENABLE_USER_SITE: %r" %  ENABLE_USER_SITE)
 | 
				
			||||||
 | 
					        sys.exit(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    buffer = []
 | 
				
			||||||
 | 
					    if '--user-base' in args:
 | 
				
			||||||
 | 
					        buffer.append(USER_BASE)
 | 
				
			||||||
 | 
					    if '--user-site' in args:
 | 
				
			||||||
 | 
					        buffer.append(USER_SITE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if buffer:
 | 
				
			||||||
 | 
					        print(os.pathsep.join(buffer))
 | 
				
			||||||
 | 
					        if ENABLE_USER_SITE:
 | 
				
			||||||
 | 
					            sys.exit(0)
 | 
				
			||||||
 | 
					        elif ENABLE_USER_SITE is False:
 | 
				
			||||||
 | 
					            sys.exit(1)
 | 
				
			||||||
 | 
					        elif ENABLE_USER_SITE is None:
 | 
				
			||||||
 | 
					            sys.exit(2)
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            sys.exit(3)
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        import textwrap
 | 
				
			||||||
 | 
					        print(textwrap.dedent(help % (sys.argv[0], os.pathsep)))
 | 
				
			||||||
 | 
					        sys.exit(10)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    _script()
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/sre_compile.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/sre_constants.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/sre_parse.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/stat.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/struct.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/tarfile.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/tempfile.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/token.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/tokenize.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/types.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/warnings.py
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/Users/michaelmead/anaconda/lib/python3.5/weakref.py
 | 
				
			||||||
@ -0,0 +1,615 @@
 | 
				
			|||||||
 | 
					.ct-label {
 | 
				
			||||||
 | 
					  fill: rgba(0, 0, 0, 0.4);
 | 
				
			||||||
 | 
					  color: rgba(0, 0, 0, 0.4);
 | 
				
			||||||
 | 
					  font-size: 0.75rem;
 | 
				
			||||||
 | 
					  line-height: 1; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-chart-line .ct-label,
 | 
				
			||||||
 | 
					.ct-chart-bar .ct-label {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  display: -webkit-box;
 | 
				
			||||||
 | 
					  display: -moz-box;
 | 
				
			||||||
 | 
					  display: -ms-flexbox;
 | 
				
			||||||
 | 
					  display: -webkit-flex;
 | 
				
			||||||
 | 
					  display: flex; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-chart-pie .ct-label,
 | 
				
			||||||
 | 
					.ct-chart-donut .ct-label {
 | 
				
			||||||
 | 
					  dominant-baseline: central; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-label.ct-horizontal.ct-start {
 | 
				
			||||||
 | 
					  -webkit-box-align: flex-end;
 | 
				
			||||||
 | 
					  -webkit-align-items: flex-end;
 | 
				
			||||||
 | 
					  -ms-flex-align: flex-end;
 | 
				
			||||||
 | 
					  align-items: flex-end;
 | 
				
			||||||
 | 
					  -webkit-box-pack: flex-start;
 | 
				
			||||||
 | 
					  -webkit-justify-content: flex-start;
 | 
				
			||||||
 | 
					  -ms-flex-pack: flex-start;
 | 
				
			||||||
 | 
					  justify-content: flex-start;
 | 
				
			||||||
 | 
					  text-align: left;
 | 
				
			||||||
 | 
					  text-anchor: start; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-label.ct-horizontal.ct-end {
 | 
				
			||||||
 | 
					  -webkit-box-align: flex-start;
 | 
				
			||||||
 | 
					  -webkit-align-items: flex-start;
 | 
				
			||||||
 | 
					  -ms-flex-align: flex-start;
 | 
				
			||||||
 | 
					  align-items: flex-start;
 | 
				
			||||||
 | 
					  -webkit-box-pack: flex-start;
 | 
				
			||||||
 | 
					  -webkit-justify-content: flex-start;
 | 
				
			||||||
 | 
					  -ms-flex-pack: flex-start;
 | 
				
			||||||
 | 
					  justify-content: flex-start;
 | 
				
			||||||
 | 
					  text-align: left;
 | 
				
			||||||
 | 
					  text-anchor: start; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-label.ct-vertical.ct-start {
 | 
				
			||||||
 | 
					  -webkit-box-align: flex-end;
 | 
				
			||||||
 | 
					  -webkit-align-items: flex-end;
 | 
				
			||||||
 | 
					  -ms-flex-align: flex-end;
 | 
				
			||||||
 | 
					  align-items: flex-end;
 | 
				
			||||||
 | 
					  -webkit-box-pack: flex-end;
 | 
				
			||||||
 | 
					  -webkit-justify-content: flex-end;
 | 
				
			||||||
 | 
					  -ms-flex-pack: flex-end;
 | 
				
			||||||
 | 
					  justify-content: flex-end;
 | 
				
			||||||
 | 
					  text-align: right;
 | 
				
			||||||
 | 
					  text-anchor: end; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-label.ct-vertical.ct-end {
 | 
				
			||||||
 | 
					  -webkit-box-align: flex-end;
 | 
				
			||||||
 | 
					  -webkit-align-items: flex-end;
 | 
				
			||||||
 | 
					  -ms-flex-align: flex-end;
 | 
				
			||||||
 | 
					  align-items: flex-end;
 | 
				
			||||||
 | 
					  -webkit-box-pack: flex-start;
 | 
				
			||||||
 | 
					  -webkit-justify-content: flex-start;
 | 
				
			||||||
 | 
					  -ms-flex-pack: flex-start;
 | 
				
			||||||
 | 
					  justify-content: flex-start;
 | 
				
			||||||
 | 
					  text-align: left;
 | 
				
			||||||
 | 
					  text-anchor: start; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-chart-bar .ct-label.ct-horizontal.ct-start {
 | 
				
			||||||
 | 
					  -webkit-box-align: flex-end;
 | 
				
			||||||
 | 
					  -webkit-align-items: flex-end;
 | 
				
			||||||
 | 
					  -ms-flex-align: flex-end;
 | 
				
			||||||
 | 
					  align-items: flex-end;
 | 
				
			||||||
 | 
					  -webkit-box-pack: center;
 | 
				
			||||||
 | 
					  -webkit-justify-content: center;
 | 
				
			||||||
 | 
					  -ms-flex-pack: center;
 | 
				
			||||||
 | 
					  justify-content: center;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  text-anchor: start; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-chart-bar .ct-label.ct-horizontal.ct-end {
 | 
				
			||||||
 | 
					  -webkit-box-align: flex-start;
 | 
				
			||||||
 | 
					  -webkit-align-items: flex-start;
 | 
				
			||||||
 | 
					  -ms-flex-align: flex-start;
 | 
				
			||||||
 | 
					  align-items: flex-start;
 | 
				
			||||||
 | 
					  -webkit-box-pack: center;
 | 
				
			||||||
 | 
					  -webkit-justify-content: center;
 | 
				
			||||||
 | 
					  -ms-flex-pack: center;
 | 
				
			||||||
 | 
					  justify-content: center;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  text-anchor: start; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start {
 | 
				
			||||||
 | 
					  -webkit-box-align: flex-end;
 | 
				
			||||||
 | 
					  -webkit-align-items: flex-end;
 | 
				
			||||||
 | 
					  -ms-flex-align: flex-end;
 | 
				
			||||||
 | 
					  align-items: flex-end;
 | 
				
			||||||
 | 
					  -webkit-box-pack: flex-start;
 | 
				
			||||||
 | 
					  -webkit-justify-content: flex-start;
 | 
				
			||||||
 | 
					  -ms-flex-pack: flex-start;
 | 
				
			||||||
 | 
					  justify-content: flex-start;
 | 
				
			||||||
 | 
					  text-align: left;
 | 
				
			||||||
 | 
					  text-anchor: start; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end {
 | 
				
			||||||
 | 
					  -webkit-box-align: flex-start;
 | 
				
			||||||
 | 
					  -webkit-align-items: flex-start;
 | 
				
			||||||
 | 
					  -ms-flex-align: flex-start;
 | 
				
			||||||
 | 
					  align-items: flex-start;
 | 
				
			||||||
 | 
					  -webkit-box-pack: flex-start;
 | 
				
			||||||
 | 
					  -webkit-justify-content: flex-start;
 | 
				
			||||||
 | 
					  -ms-flex-pack: flex-start;
 | 
				
			||||||
 | 
					  justify-content: flex-start;
 | 
				
			||||||
 | 
					  text-align: left;
 | 
				
			||||||
 | 
					  text-anchor: start; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start {
 | 
				
			||||||
 | 
					  -webkit-box-align: center;
 | 
				
			||||||
 | 
					  -webkit-align-items: center;
 | 
				
			||||||
 | 
					  -ms-flex-align: center;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					  -webkit-box-pack: flex-end;
 | 
				
			||||||
 | 
					  -webkit-justify-content: flex-end;
 | 
				
			||||||
 | 
					  -ms-flex-pack: flex-end;
 | 
				
			||||||
 | 
					  justify-content: flex-end;
 | 
				
			||||||
 | 
					  text-align: right;
 | 
				
			||||||
 | 
					  text-anchor: end; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end {
 | 
				
			||||||
 | 
					  -webkit-box-align: center;
 | 
				
			||||||
 | 
					  -webkit-align-items: center;
 | 
				
			||||||
 | 
					  -ms-flex-align: center;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					  -webkit-box-pack: flex-start;
 | 
				
			||||||
 | 
					  -webkit-justify-content: flex-start;
 | 
				
			||||||
 | 
					  -ms-flex-pack: flex-start;
 | 
				
			||||||
 | 
					  justify-content: flex-start;
 | 
				
			||||||
 | 
					  text-align: left;
 | 
				
			||||||
 | 
					  text-anchor: end; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-grid {
 | 
				
			||||||
 | 
					  stroke: rgba(0, 0, 0, 0.2);
 | 
				
			||||||
 | 
					  stroke-width: 1px;
 | 
				
			||||||
 | 
					  stroke-dasharray: 2px; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-grid-background {
 | 
				
			||||||
 | 
					  fill: none; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-point {
 | 
				
			||||||
 | 
					  stroke-width: 10px;
 | 
				
			||||||
 | 
					  stroke-linecap: round; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-line {
 | 
				
			||||||
 | 
					  fill: none;
 | 
				
			||||||
 | 
					  stroke-width: 4px; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-area {
 | 
				
			||||||
 | 
					  stroke: none;
 | 
				
			||||||
 | 
					  fill-opacity: 0.1; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-bar {
 | 
				
			||||||
 | 
					  fill: none;
 | 
				
			||||||
 | 
					  stroke-width: 10px; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-slice-donut {
 | 
				
			||||||
 | 
					  fill: none;
 | 
				
			||||||
 | 
					  stroke-width: 60px; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-a .ct-point, .ct-series-a .ct-line, .ct-series-a .ct-bar, .ct-series-a .ct-slice-donut {
 | 
				
			||||||
 | 
					  stroke: #d70206; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-a .ct-slice-pie, .ct-series-a .ct-slice-donut-solid, .ct-series-a .ct-area {
 | 
				
			||||||
 | 
					  fill: #d70206; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-b .ct-point, .ct-series-b .ct-line, .ct-series-b .ct-bar, .ct-series-b .ct-slice-donut {
 | 
				
			||||||
 | 
					  stroke: #f05b4f; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-b .ct-slice-pie, .ct-series-b .ct-slice-donut-solid, .ct-series-b .ct-area {
 | 
				
			||||||
 | 
					  fill: #f05b4f; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-c .ct-point, .ct-series-c .ct-line, .ct-series-c .ct-bar, .ct-series-c .ct-slice-donut {
 | 
				
			||||||
 | 
					  stroke: #f4c63d; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-c .ct-slice-pie, .ct-series-c .ct-slice-donut-solid, .ct-series-c .ct-area {
 | 
				
			||||||
 | 
					  fill: #f4c63d; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-d .ct-point, .ct-series-d .ct-line, .ct-series-d .ct-bar, .ct-series-d .ct-slice-donut {
 | 
				
			||||||
 | 
					  stroke: #d17905; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-d .ct-slice-pie, .ct-series-d .ct-slice-donut-solid, .ct-series-d .ct-area {
 | 
				
			||||||
 | 
					  fill: #d17905; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-e .ct-point, .ct-series-e .ct-line, .ct-series-e .ct-bar, .ct-series-e .ct-slice-donut {
 | 
				
			||||||
 | 
					  stroke: #453d3f; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-e .ct-slice-pie, .ct-series-e .ct-slice-donut-solid, .ct-series-e .ct-area {
 | 
				
			||||||
 | 
					  fill: #453d3f; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-f .ct-point, .ct-series-f .ct-line, .ct-series-f .ct-bar, .ct-series-f .ct-slice-donut {
 | 
				
			||||||
 | 
					  stroke: #59922b; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-f .ct-slice-pie, .ct-series-f .ct-slice-donut-solid, .ct-series-f .ct-area {
 | 
				
			||||||
 | 
					  fill: #59922b; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-g .ct-point, .ct-series-g .ct-line, .ct-series-g .ct-bar, .ct-series-g .ct-slice-donut {
 | 
				
			||||||
 | 
					  stroke: #0544d3; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-g .ct-slice-pie, .ct-series-g .ct-slice-donut-solid, .ct-series-g .ct-area {
 | 
				
			||||||
 | 
					  fill: #0544d3; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-h .ct-point, .ct-series-h .ct-line, .ct-series-h .ct-bar, .ct-series-h .ct-slice-donut {
 | 
				
			||||||
 | 
					  stroke: #6b0392; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-h .ct-slice-pie, .ct-series-h .ct-slice-donut-solid, .ct-series-h .ct-area {
 | 
				
			||||||
 | 
					  fill: #6b0392; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-i .ct-point, .ct-series-i .ct-line, .ct-series-i .ct-bar, .ct-series-i .ct-slice-donut {
 | 
				
			||||||
 | 
					  stroke: #f05b4f; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-i .ct-slice-pie, .ct-series-i .ct-slice-donut-solid, .ct-series-i .ct-area {
 | 
				
			||||||
 | 
					  fill: #f05b4f; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-j .ct-point, .ct-series-j .ct-line, .ct-series-j .ct-bar, .ct-series-j .ct-slice-donut {
 | 
				
			||||||
 | 
					  stroke: #dda458; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-j .ct-slice-pie, .ct-series-j .ct-slice-donut-solid, .ct-series-j .ct-area {
 | 
				
			||||||
 | 
					  fill: #dda458; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-k .ct-point, .ct-series-k .ct-line, .ct-series-k .ct-bar, .ct-series-k .ct-slice-donut {
 | 
				
			||||||
 | 
					  stroke: #eacf7d; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-k .ct-slice-pie, .ct-series-k .ct-slice-donut-solid, .ct-series-k .ct-area {
 | 
				
			||||||
 | 
					  fill: #eacf7d; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-l .ct-point, .ct-series-l .ct-line, .ct-series-l .ct-bar, .ct-series-l .ct-slice-donut {
 | 
				
			||||||
 | 
					  stroke: #86797d; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-l .ct-slice-pie, .ct-series-l .ct-slice-donut-solid, .ct-series-l .ct-area {
 | 
				
			||||||
 | 
					  fill: #86797d; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-m .ct-point, .ct-series-m .ct-line, .ct-series-m .ct-bar, .ct-series-m .ct-slice-donut {
 | 
				
			||||||
 | 
					  stroke: #b2c326; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-m .ct-slice-pie, .ct-series-m .ct-slice-donut-solid, .ct-series-m .ct-area {
 | 
				
			||||||
 | 
					  fill: #b2c326; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-n .ct-point, .ct-series-n .ct-line, .ct-series-n .ct-bar, .ct-series-n .ct-slice-donut {
 | 
				
			||||||
 | 
					  stroke: #6188e2; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-n .ct-slice-pie, .ct-series-n .ct-slice-donut-solid, .ct-series-n .ct-area {
 | 
				
			||||||
 | 
					  fill: #6188e2; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-o .ct-point, .ct-series-o .ct-line, .ct-series-o .ct-bar, .ct-series-o .ct-slice-donut {
 | 
				
			||||||
 | 
					  stroke: #a748ca; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-series-o .ct-slice-pie, .ct-series-o .ct-slice-donut-solid, .ct-series-o .ct-area {
 | 
				
			||||||
 | 
					  fill: #a748ca; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-square {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-square:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 100%; }
 | 
				
			||||||
 | 
					  .ct-square:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-square > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-minor-second {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-minor-second:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 93.75%; }
 | 
				
			||||||
 | 
					  .ct-minor-second:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-minor-second > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-major-second {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-major-second:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 88.8888888889%; }
 | 
				
			||||||
 | 
					  .ct-major-second:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-major-second > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-minor-third {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-minor-third:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 83.3333333333%; }
 | 
				
			||||||
 | 
					  .ct-minor-third:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-minor-third > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-major-third {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-major-third:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 80%; }
 | 
				
			||||||
 | 
					  .ct-major-third:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-major-third > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-perfect-fourth {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-perfect-fourth:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 75%; }
 | 
				
			||||||
 | 
					  .ct-perfect-fourth:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-perfect-fourth > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-perfect-fifth {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-perfect-fifth:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 66.6666666667%; }
 | 
				
			||||||
 | 
					  .ct-perfect-fifth:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-perfect-fifth > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-minor-sixth {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-minor-sixth:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 62.5%; }
 | 
				
			||||||
 | 
					  .ct-minor-sixth:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-minor-sixth > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-golden-section {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-golden-section:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 61.804697157%; }
 | 
				
			||||||
 | 
					  .ct-golden-section:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-golden-section > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-major-sixth {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-major-sixth:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 60%; }
 | 
				
			||||||
 | 
					  .ct-major-sixth:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-major-sixth > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-minor-seventh {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-minor-seventh:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 56.25%; }
 | 
				
			||||||
 | 
					  .ct-minor-seventh:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-minor-seventh > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-major-seventh {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-major-seventh:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 53.3333333333%; }
 | 
				
			||||||
 | 
					  .ct-major-seventh:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-major-seventh > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-octave {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-octave:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 50%; }
 | 
				
			||||||
 | 
					  .ct-octave:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-octave > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-major-tenth {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-major-tenth:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 40%; }
 | 
				
			||||||
 | 
					  .ct-major-tenth:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-major-tenth > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-major-eleventh {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-major-eleventh:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 37.5%; }
 | 
				
			||||||
 | 
					  .ct-major-eleventh:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-major-eleventh > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-major-twelfth {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-major-twelfth:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 33.3333333333%; }
 | 
				
			||||||
 | 
					  .ct-major-twelfth:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-major-twelfth > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ct-double-octave {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 100%; }
 | 
				
			||||||
 | 
					  .ct-double-octave:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: 25%; }
 | 
				
			||||||
 | 
					  .ct-double-octave:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both; }
 | 
				
			||||||
 | 
					  .ct-double-octave > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*# sourceMappingURL=chartist.css.map */
 | 
				
			||||||
											
												
													File diff suppressed because one or more lines are too long
												
											
										
									
								
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								
											
												
													File diff suppressed because one or more lines are too long
												
											
										
									
								
											
												
													File diff suppressed because one or more lines are too long
												
											
										
									
								
											
												
													File diff suppressed because one or more lines are too long
												
											
										
									
								@ -0,0 +1,241 @@
 | 
				
			|||||||
 | 
					@import "settings/chartist-settings";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@mixin ct-responsive-svg-container($width: 100%, $ratio: $ct-container-ratio) {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: $width;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  &:before {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    height: 0;
 | 
				
			||||||
 | 
					    padding-bottom: $ratio * 100%;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  &:after {
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    display: table;
 | 
				
			||||||
 | 
					    clear: both;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  > svg {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@mixin ct-align-justify($ct-text-align: $ct-text-align, $ct-text-justify: $ct-text-justify) {
 | 
				
			||||||
 | 
					  -webkit-box-align: $ct-text-align;
 | 
				
			||||||
 | 
					  -webkit-align-items: $ct-text-align;
 | 
				
			||||||
 | 
					  -ms-flex-align: $ct-text-align;
 | 
				
			||||||
 | 
					  align-items: $ct-text-align;
 | 
				
			||||||
 | 
					  -webkit-box-pack: $ct-text-justify;
 | 
				
			||||||
 | 
					  -webkit-justify-content: $ct-text-justify;
 | 
				
			||||||
 | 
					  -ms-flex-pack: $ct-text-justify;
 | 
				
			||||||
 | 
					  justify-content: $ct-text-justify;
 | 
				
			||||||
 | 
					  // Fallback to text-align for non-flex browsers
 | 
				
			||||||
 | 
					  @if($ct-text-justify == 'flex-start') {
 | 
				
			||||||
 | 
					    text-align: left;
 | 
				
			||||||
 | 
					  } @else if ($ct-text-justify == 'flex-end') {
 | 
				
			||||||
 | 
					    text-align: right;
 | 
				
			||||||
 | 
					  } @else {
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@mixin ct-flex() {
 | 
				
			||||||
 | 
					  // Fallback to block
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  display: -webkit-box;
 | 
				
			||||||
 | 
					  display: -moz-box;
 | 
				
			||||||
 | 
					  display: -ms-flexbox;
 | 
				
			||||||
 | 
					  display: -webkit-flex;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@mixin ct-chart-label($ct-text-color: $ct-text-color, $ct-text-size: $ct-text-size, $ct-text-line-height: $ct-text-line-height) {
 | 
				
			||||||
 | 
					  fill: $ct-text-color;
 | 
				
			||||||
 | 
					  color: $ct-text-color;
 | 
				
			||||||
 | 
					  font-size: $ct-text-size;
 | 
				
			||||||
 | 
					  line-height: $ct-text-line-height;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@mixin ct-chart-grid($ct-grid-color: $ct-grid-color, $ct-grid-width: $ct-grid-width, $ct-grid-dasharray: $ct-grid-dasharray) {
 | 
				
			||||||
 | 
					  stroke: $ct-grid-color;
 | 
				
			||||||
 | 
					  stroke-width: $ct-grid-width;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @if ($ct-grid-dasharray) {
 | 
				
			||||||
 | 
					    stroke-dasharray: $ct-grid-dasharray;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@mixin ct-chart-point($ct-point-size: $ct-point-size, $ct-point-shape: $ct-point-shape) {
 | 
				
			||||||
 | 
					  stroke-width: $ct-point-size;
 | 
				
			||||||
 | 
					  stroke-linecap: $ct-point-shape;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@mixin ct-chart-line($ct-line-width: $ct-line-width, $ct-line-dasharray: $ct-line-dasharray) {
 | 
				
			||||||
 | 
					  fill: none;
 | 
				
			||||||
 | 
					  stroke-width: $ct-line-width;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @if ($ct-line-dasharray) {
 | 
				
			||||||
 | 
					    stroke-dasharray: $ct-line-dasharray;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@mixin ct-chart-area($ct-area-opacity: $ct-area-opacity) {
 | 
				
			||||||
 | 
					  stroke: none;
 | 
				
			||||||
 | 
					  fill-opacity: $ct-area-opacity;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@mixin ct-chart-bar($ct-bar-width: $ct-bar-width) {
 | 
				
			||||||
 | 
					  fill: none;
 | 
				
			||||||
 | 
					  stroke-width: $ct-bar-width;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@mixin ct-chart-donut($ct-donut-width: $ct-donut-width) {
 | 
				
			||||||
 | 
					  fill: none;
 | 
				
			||||||
 | 
					  stroke-width: $ct-donut-width;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@mixin ct-chart-series-color($color) {
 | 
				
			||||||
 | 
					  .#{$ct-class-point}, .#{$ct-class-line}, .#{$ct-class-bar}, .#{$ct-class-slice-donut} {
 | 
				
			||||||
 | 
					    stroke: $color;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-slice-pie}, .#{$ct-class-slice-donut-solid}, .#{$ct-class-area} {
 | 
				
			||||||
 | 
					    fill: $color;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@mixin ct-chart($ct-container-ratio: $ct-container-ratio, $ct-text-color: $ct-text-color, $ct-text-size: $ct-text-size, $ct-grid-color: $ct-grid-color, $ct-grid-width: $ct-grid-width, $ct-grid-dasharray: $ct-grid-dasharray, $ct-point-size: $ct-point-size, $ct-point-shape: $ct-point-shape, $ct-line-width: $ct-line-width, $ct-bar-width: $ct-bar-width, $ct-donut-width: $ct-donut-width, $ct-series-names: $ct-series-names, $ct-series-colors: $ct-series-colors) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-label} {
 | 
				
			||||||
 | 
					    @include ct-chart-label($ct-text-color, $ct-text-size);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-chart-line} .#{$ct-class-label},
 | 
				
			||||||
 | 
					  .#{$ct-class-chart-bar} .#{$ct-class-label} {
 | 
				
			||||||
 | 
					    @include ct-flex();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-chart-pie} .#{$ct-class-label},
 | 
				
			||||||
 | 
					  .#{$ct-class-chart-donut} .#{$ct-class-label} {
 | 
				
			||||||
 | 
					    dominant-baseline: central;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} {
 | 
				
			||||||
 | 
					    @include ct-align-justify(flex-end, flex-start);
 | 
				
			||||||
 | 
					    // Fallback for browsers that don't support foreignObjects
 | 
				
			||||||
 | 
					    text-anchor: start;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} {
 | 
				
			||||||
 | 
					    @include ct-align-justify(flex-start, flex-start);
 | 
				
			||||||
 | 
					    // Fallback for browsers that don't support foreignObjects
 | 
				
			||||||
 | 
					    text-anchor: start;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-start} {
 | 
				
			||||||
 | 
					    @include ct-align-justify(flex-end, flex-end);
 | 
				
			||||||
 | 
					    // Fallback for browsers that don't support foreignObjects
 | 
				
			||||||
 | 
					    text-anchor: end;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-end} {
 | 
				
			||||||
 | 
					    @include ct-align-justify(flex-end, flex-start);
 | 
				
			||||||
 | 
					    // Fallback for browsers that don't support foreignObjects
 | 
				
			||||||
 | 
					    text-anchor: start;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-chart-bar} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} {
 | 
				
			||||||
 | 
					    @include ct-align-justify(flex-end, center);
 | 
				
			||||||
 | 
					    // Fallback for browsers that don't support foreignObjects
 | 
				
			||||||
 | 
					    text-anchor: start;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-chart-bar} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} {
 | 
				
			||||||
 | 
					    @include ct-align-justify(flex-start, center);
 | 
				
			||||||
 | 
					    // Fallback for browsers that don't support foreignObjects
 | 
				
			||||||
 | 
					    text-anchor: start;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} {
 | 
				
			||||||
 | 
					    @include ct-align-justify(flex-end, flex-start);
 | 
				
			||||||
 | 
					    // Fallback for browsers that don't support foreignObjects
 | 
				
			||||||
 | 
					    text-anchor: start;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} {
 | 
				
			||||||
 | 
					    @include ct-align-justify(flex-start, flex-start);
 | 
				
			||||||
 | 
					    // Fallback for browsers that don't support foreignObjects
 | 
				
			||||||
 | 
					    text-anchor: start;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-start} {
 | 
				
			||||||
 | 
					    //@include ct-chart-label($ct-text-color, $ct-text-size, center, $ct-vertical-text-justify);
 | 
				
			||||||
 | 
					    @include ct-align-justify(center, flex-end);
 | 
				
			||||||
 | 
					    // Fallback for browsers that don't support foreignObjects
 | 
				
			||||||
 | 
					    text-anchor: end;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-end} {
 | 
				
			||||||
 | 
					    @include ct-align-justify(center, flex-start);
 | 
				
			||||||
 | 
					    // Fallback for browsers that don't support foreignObjects
 | 
				
			||||||
 | 
					    text-anchor: end;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-grid} {
 | 
				
			||||||
 | 
					    @include ct-chart-grid($ct-grid-color, $ct-grid-width, $ct-grid-dasharray);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-grid-background} {
 | 
				
			||||||
 | 
					    fill: $ct-grid-background-fill;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-point} {
 | 
				
			||||||
 | 
					    @include ct-chart-point($ct-point-size, $ct-point-shape);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-line} {
 | 
				
			||||||
 | 
					    @include ct-chart-line($ct-line-width);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-area} {
 | 
				
			||||||
 | 
					    @include ct-chart-area();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-bar} {
 | 
				
			||||||
 | 
					    @include ct-chart-bar($ct-bar-width);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .#{$ct-class-slice-donut} {
 | 
				
			||||||
 | 
					    @include ct-chart-donut($ct-donut-width);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @if $ct-include-colored-series {
 | 
				
			||||||
 | 
					    @for $i from 0 to length($ct-series-names) {
 | 
				
			||||||
 | 
					      .#{$ct-class-series}-#{nth($ct-series-names, $i + 1)} {
 | 
				
			||||||
 | 
					        $color: nth($ct-series-colors, $i + 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @include ct-chart-series-color($color);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@if $ct-include-classes {
 | 
				
			||||||
 | 
					  @include ct-chart();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @if $ct-include-alternative-responsive-containers {
 | 
				
			||||||
 | 
					    @for $i from 0 to length($ct-scales-names) {
 | 
				
			||||||
 | 
					      .#{nth($ct-scales-names, $i + 1)} {
 | 
				
			||||||
 | 
					        @include ct-responsive-svg-container($ratio: nth($ct-scales, $i + 1));
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,88 @@
 | 
				
			|||||||
 | 
					// Scales for responsive SVG containers
 | 
				
			||||||
 | 
					$ct-scales: ((1), (15/16), (8/9), (5/6), (4/5), (3/4), (2/3), (5/8), (1/1.618), (3/5), (9/16), (8/15), (1/2), (2/5), (3/8), (1/3), (1/4)) !default;
 | 
				
			||||||
 | 
					$ct-scales-names: (ct-square, ct-minor-second, ct-major-second, ct-minor-third, ct-major-third, ct-perfect-fourth, ct-perfect-fifth, ct-minor-sixth, ct-golden-section, ct-major-sixth, ct-minor-seventh, ct-major-seventh, ct-octave, ct-major-tenth, ct-major-eleventh, ct-major-twelfth, ct-double-octave) !default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Class names to be used when generating CSS
 | 
				
			||||||
 | 
					$ct-class-chart: ct-chart !default;
 | 
				
			||||||
 | 
					$ct-class-chart-line: ct-chart-line !default;
 | 
				
			||||||
 | 
					$ct-class-chart-bar: ct-chart-bar !default;
 | 
				
			||||||
 | 
					$ct-class-horizontal-bars: ct-horizontal-bars !default;
 | 
				
			||||||
 | 
					$ct-class-chart-pie: ct-chart-pie !default;
 | 
				
			||||||
 | 
					$ct-class-chart-donut: ct-chart-donut !default;
 | 
				
			||||||
 | 
					$ct-class-label: ct-label !default;
 | 
				
			||||||
 | 
					$ct-class-series: ct-series !default;
 | 
				
			||||||
 | 
					$ct-class-line: ct-line !default;
 | 
				
			||||||
 | 
					$ct-class-point: ct-point !default;
 | 
				
			||||||
 | 
					$ct-class-area: ct-area !default;
 | 
				
			||||||
 | 
					$ct-class-bar: ct-bar !default;
 | 
				
			||||||
 | 
					$ct-class-slice-pie: ct-slice-pie !default;
 | 
				
			||||||
 | 
					$ct-class-slice-donut: ct-slice-donut !default;
 | 
				
			||||||
 | 
					$ct-class-slice-donut-solid: ct-slice-donut-solid !default;
 | 
				
			||||||
 | 
					$ct-class-grid: ct-grid !default;
 | 
				
			||||||
 | 
					$ct-class-grid-background: ct-grid-background !default;
 | 
				
			||||||
 | 
					$ct-class-vertical: ct-vertical !default;
 | 
				
			||||||
 | 
					$ct-class-horizontal: ct-horizontal !default;
 | 
				
			||||||
 | 
					$ct-class-start: ct-start !default;
 | 
				
			||||||
 | 
					$ct-class-end: ct-end !default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Container ratio
 | 
				
			||||||
 | 
					$ct-container-ratio: (1/1.618) !default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Text styles for labels
 | 
				
			||||||
 | 
					$ct-text-color: rgba(0, 0, 0, 0.4) !default;
 | 
				
			||||||
 | 
					$ct-text-size: 0.75rem !default;
 | 
				
			||||||
 | 
					$ct-text-align: flex-start !default;
 | 
				
			||||||
 | 
					$ct-text-justify: flex-start !default;
 | 
				
			||||||
 | 
					$ct-text-line-height: 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Grid styles
 | 
				
			||||||
 | 
					$ct-grid-color: rgba(0, 0, 0, 0.2) !default;
 | 
				
			||||||
 | 
					$ct-grid-dasharray: 2px !default;
 | 
				
			||||||
 | 
					$ct-grid-width: 1px !default;
 | 
				
			||||||
 | 
					$ct-grid-background-fill: none !default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Line chart properties
 | 
				
			||||||
 | 
					$ct-line-width: 4px !default;
 | 
				
			||||||
 | 
					$ct-line-dasharray: false !default;
 | 
				
			||||||
 | 
					$ct-point-size: 10px !default;
 | 
				
			||||||
 | 
					// Line chart point, can be either round or square
 | 
				
			||||||
 | 
					$ct-point-shape: round !default;
 | 
				
			||||||
 | 
					// Area fill transparency between 0 and 1
 | 
				
			||||||
 | 
					$ct-area-opacity: 0.1 !default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Bar chart bar width
 | 
				
			||||||
 | 
					$ct-bar-width: 10px !default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Donut width (If donut width is to big it can cause issues where the shape gets distorted)
 | 
				
			||||||
 | 
					$ct-donut-width: 60px !default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// If set to true it will include the default classes and generate CSS output. If you're planning to use the mixins you
 | 
				
			||||||
 | 
					// should set this property to false
 | 
				
			||||||
 | 
					$ct-include-classes: true !default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// If this is set to true the CSS will contain colored series. You can extend or change the color with the
 | 
				
			||||||
 | 
					// properties below
 | 
				
			||||||
 | 
					$ct-include-colored-series: $ct-include-classes !default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// If set to true this will include all responsive container variations using the scales defined at the top of the script
 | 
				
			||||||
 | 
					$ct-include-alternative-responsive-containers: $ct-include-classes !default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Series names and colors. This can be extended or customized as desired. Just add more series and colors.
 | 
				
			||||||
 | 
					$ct-series-names: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) !default;
 | 
				
			||||||
 | 
					$ct-series-colors: (
 | 
				
			||||||
 | 
					  #d70206,
 | 
				
			||||||
 | 
					  #f05b4f,
 | 
				
			||||||
 | 
					  #f4c63d,
 | 
				
			||||||
 | 
					  #d17905,
 | 
				
			||||||
 | 
					  #453d3f,
 | 
				
			||||||
 | 
					  #59922b,
 | 
				
			||||||
 | 
					  #0544d3,
 | 
				
			||||||
 | 
					  #6b0392,
 | 
				
			||||||
 | 
					  #f05b4f,
 | 
				
			||||||
 | 
					  #dda458,
 | 
				
			||||||
 | 
					  #eacf7d,
 | 
				
			||||||
 | 
					  #86797d,
 | 
				
			||||||
 | 
					  #b2c326,
 | 
				
			||||||
 | 
					  #6188e2,
 | 
				
			||||||
 | 
					  #a748ca
 | 
				
			||||||
 | 
					) !default;
 | 
				
			||||||
											
												
													File diff suppressed because one or more lines are too long
												
											
										
									
								
											
												
													File diff suppressed because one or more lines are too long
												
											
										
									
								
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								@ -1,146 +0,0 @@
 | 
				
			|||||||
body, .default {
 | 
					 | 
				
			||||||
	font-size:14px;
 | 
					 | 
				
			||||||
	font-family:sans-serif;
 | 
					 | 
				
			||||||
	font-weight:lighter;
 | 
					 | 
				
			||||||
	padding:10px;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.jsgrid-grid-header{
 | 
					 | 
				
			||||||
	background: #f9f9f9;
 | 
					 | 
				
			||||||
	background-color: rgb(249, 249, 249);
 | 
					 | 
				
			||||||
	background-image: none;
 | 
					 | 
				
			||||||
	background-repeat: repeat;
 | 
					 | 
				
			||||||
	background-attachment: scroll;
 | 
					 | 
				
			||||||
	background-clip: border-box;
 | 
					 | 
				
			||||||
	background-origin: padding-box;
 | 
					 | 
				
			||||||
	background-position-x: 0%;
 | 
					 | 
				
			||||||
	background-position-y: 0%;
 | 
					 | 
				
			||||||
	background-size: auto auto;
 | 
					 | 
				
			||||||
	max-height: 48px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.jsgrid-grid-body {
 | 
					 | 
				
			||||||
	overflow-x:hidden;
 | 
					 | 
				
			||||||
	overflow-y:scroll;
 | 
					 | 
				
			||||||
	-webkit-overflow-scrolling:touch
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.small {
 | 
					 | 
				
			||||||
	font-family:sans-serif;
 | 
					 | 
				
			||||||
	font-size:12px;
 | 
					 | 
				
			||||||
	font-weight:lighter;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.bold {font-weight:bold}
 | 
					 | 
				
			||||||
.left {float:left}
 | 
					 | 
				
			||||||
.right{float:right}
 | 
					 | 
				
			||||||
.caption {
 | 
					 | 
				
			||||||
	font-size:22px;
 | 
					 | 
				
			||||||
	margin:2px;
 | 
					 | 
				
			||||||
	padding:2px;
 | 
					 | 
				
			||||||
	height:30px;
 | 
					 | 
				
			||||||
	font-family:sans-serif;
 | 
					 | 
				
			||||||
	font-weight:lighter;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.button {
 | 
					 | 
				
			||||||
	padding:8px;
 | 
					 | 
				
			||||||
	margin:2px;
 | 
					 | 
				
			||||||
	border-radius:4px;
 | 
					 | 
				
			||||||
	-moz-border-radius:4px;
 | 
					 | 
				
			||||||
	-webkit-border-radius:4px;
 | 
					 | 
				
			||||||
	cursor:pointer;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.button:hover{
 | 
					 | 
				
			||||||
	background-color:#4682B4 ;
 | 
					 | 
				
			||||||
	color:#ffffff;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.no-border{ border:1px solid transparent}
 | 
					 | 
				
			||||||
.border { border:1px solid #CAD5E0}
 | 
					 | 
				
			||||||
.border-bottom{	border-bottom:1px solid #CAD5E0;}
 | 
					 | 
				
			||||||
.border-right { border-right:1px solid #CAD5E0;}
 | 
					 | 
				
			||||||
.border-left { border-left:1px solid #CAD5E0;}
 | 
					 | 
				
			||||||
.border-top { border-top:1px solid #CAD5E0;}
 | 
					 | 
				
			||||||
.grid {
 | 
					 | 
				
			||||||
	font-family:sans-serif;
 | 
					 | 
				
			||||||
	font-weight:lighter;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	margin:4px;
 | 
					 | 
				
			||||||
	padding:4px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.grid-half {
 | 
					 | 
				
			||||||
	height:195px;
 | 
					 | 
				
			||||||
	margin:4px;
 | 
					 | 
				
			||||||
	width:98%;
 | 
					 | 
				
			||||||
	padding:4px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.grid .fa-check {color:green}
 | 
					 | 
				
			||||||
.grid .fa-times {color:maroon; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.menu {
 | 
					 | 
				
			||||||
	margin:4px;
 | 
					 | 
				
			||||||
	padding:4px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.menu .fa-chevron-right {color:transparent; margin:4px; }
 | 
					 | 
				
			||||||
.menu .menu-item { border:1px solid transparent; cursor:pointer; padding-bottom:4px; margin:2px;}
 | 
					 | 
				
			||||||
.menu .menu-item:hover {
 | 
					 | 
				
			||||||
	border-bottom-color:#4682B4;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.menu .menu-item:hover .fa-chevron-right { color:#4582b4}
 | 
					 | 
				
			||||||
input[type=text]{
 | 
					 | 
				
			||||||
	padding:4px;
 | 
					 | 
				
			||||||
	margin:4px;
 | 
					 | 
				
			||||||
	outline:0px;
 | 
					 | 
				
			||||||
	border:1px solid transparent;
 | 
					 | 
				
			||||||
	background-color:#f3f3f3;
 | 
					 | 
				
			||||||
	font-size:14px;
 | 
					 | 
				
			||||||
	font-weight:lighter;
 | 
					 | 
				
			||||||
	font-family:sans-serif;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
input[type=text]:focus{
 | 
					 | 
				
			||||||
	border-left-color:#4682B4;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.padding-2x{padding:4px;}
 | 
					 | 
				
			||||||
.margin-2x {margin:4px;}
 | 
					 | 
				
			||||||
.info {
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	margin:4px;
 | 
					 | 
				
			||||||
	width:43%;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.height-quarter{height:24%;}
 | 
					 | 
				
			||||||
.height-half{height:47%}
 | 
					 | 
				
			||||||
.width-quarter {width:24%}
 | 
					 | 
				
			||||||
.width-half {width:47%; }
 | 
					 | 
				
			||||||
.width-75 {width:72%}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.bad { color:maroon}
 | 
					 | 
				
			||||||
.good{ color:green}
 | 
					 | 
				
			||||||
.fa-warning, .warning{color:orange}
 | 
					 | 
				
			||||||
.number {font-size:42px; font-weight:lighter; padding:2px; margin:2px;}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.action {cursor:pointer; padding:2px; margin:2px; border:1px solid transparent}
 | 
					 | 
				
			||||||
.action:hover { border-bottom-color:#4682B4}
 | 
					 | 
				
			||||||
.shadow{box-shadow: 7px 7px 5px #888888;}
 | 
					 | 
				
			||||||
.gradient {
 | 
					 | 
				
			||||||
  background-image:
 | 
					 | 
				
			||||||
    linear-gradient(
 | 
					 | 
				
			||||||
      #4682b4, #ffffff,#ffffff
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.simple-gradient {
 | 
					 | 
				
			||||||
background-image: -ms-linear-gradient(top, #CAD5E0 0%, #F3F3F3 40%);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
background-image: -moz-linear-gradient(top, #CAD5E0 0%, #F3F3F3 40%);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
background-image: -o-linear-gradient(top, #CAD5E0 0%, #F3F3F3 40%);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #CAD5E0), color-stop(40, #F3F3F3));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
background-image: -webkit-linear-gradient(top, #CAD5E0 0%, #F3F3F3 40%);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
background-image: linear-gradient(to bottom, #CAD5E0 0%, #F3F3F3 40%);
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								
											
												Binary file not shown.
											
										
									
								| 
		 After Width: | Height: | Size: 229 KiB  | 
											
												Binary file not shown.
											
										
									
								
											
												Binary file not shown.
											
										
									
								@ -1,12 +0,0 @@
 | 
				
			|||||||
<link type="text/css" rel="stylesheet" href="{{ context }}/js/jsgrid/jsgrid.min.css" />
 | 
					 | 
				
			||||||
<link type="text/css" rel="stylesheet" href="{{ context }}/js/jsgrid/jsgrid-theme.min.css" />
 | 
					 | 
				
			||||||
<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
 | 
					 | 
				
			||||||
<script src="{{ context }}/static/js/jsgrid.js"></script>
 | 
					 | 
				
			||||||
<script src="{{ context }}/static/js/jquery/jquery.min.js"></script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<title></title>
 | 
					 | 
				
			||||||
<body>
 | 
					 | 
				
			||||||
<div class="caption">
 | 
					 | 
				
			||||||
<div class="left">Process Monitoring</div>
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
</body>
 | 
					 | 
				
			||||||
@ -0,0 +1,248 @@
 | 
				
			|||||||
 | 
					!function ($) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /* CHECKBOX PUBLIC CLASS DEFINITION
 | 
				
			||||||
 | 
					  * ============================== */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  var Checkbox = function (element, options) {
 | 
				
			||||||
 | 
					    this.init(element, options);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Checkbox.prototype = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    constructor: Checkbox
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , init: function (element, options) {
 | 
				
			||||||
 | 
					    var $el = this.$element = $(element)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.options = $.extend({}, $.fn.checkbox.defaults, options);
 | 
				
			||||||
 | 
					    $el.before(this.options.template);
 | 
				
			||||||
 | 
					    this.setState();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , setState: function () {
 | 
				
			||||||
 | 
					      var $el = this.$element
 | 
				
			||||||
 | 
					        , $parent = $el.closest('.checkbox');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $el.prop('disabled') && $parent.addClass('disabled');
 | 
				
			||||||
 | 
					        $el.prop('checked') && $parent.addClass('checked');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , toggle: function () {
 | 
				
			||||||
 | 
					      var ch = 'checked'
 | 
				
			||||||
 | 
					        , $el = this.$element
 | 
				
			||||||
 | 
					        , $parent = $el.closest('.checkbox')
 | 
				
			||||||
 | 
					        , checked = $el.prop(ch)
 | 
				
			||||||
 | 
					        , e = $.Event('toggle')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if ($el.prop('disabled') == false) {
 | 
				
			||||||
 | 
					        $parent.toggleClass(ch) && checked ? $el.removeAttr(ch) : $el.prop(ch, ch);
 | 
				
			||||||
 | 
					        $el.trigger(e).trigger('change');
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , setCheck: function (option) {
 | 
				
			||||||
 | 
					      var d = 'disabled'
 | 
				
			||||||
 | 
					        , ch = 'checked'
 | 
				
			||||||
 | 
					        , $el = this.$element
 | 
				
			||||||
 | 
					        , $parent = $el.closest('.checkbox')
 | 
				
			||||||
 | 
					        , checkAction = option == 'check' ? true : false
 | 
				
			||||||
 | 
					        , e = $.Event(option)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      $parent[checkAction ? 'addClass' : 'removeClass' ](ch) && checkAction ? $el.prop(ch, ch) : $el.removeAttr(ch);
 | 
				
			||||||
 | 
					      $el.trigger(e).trigger('change');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /* CHECKBOX PLUGIN DEFINITION
 | 
				
			||||||
 | 
					  * ======================== */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  var old = $.fn.checkbox
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  $.fn.checkbox = function (option) {
 | 
				
			||||||
 | 
					    return this.each(function () {
 | 
				
			||||||
 | 
					      var $this = $(this)
 | 
				
			||||||
 | 
					        , data = $this.data('checkbox')
 | 
				
			||||||
 | 
					        , options = $.extend({}, $.fn.checkbox.defaults, $this.data(), typeof option == 'object' && option);
 | 
				
			||||||
 | 
					      if (!data) $this.data('checkbox', (data = new Checkbox(this, options)));
 | 
				
			||||||
 | 
					      if (option == 'toggle') data.toggle()
 | 
				
			||||||
 | 
					      if (option == 'check' || option == 'uncheck') data.setCheck(option)
 | 
				
			||||||
 | 
					      else if (option) data.setState();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  $.fn.checkbox.defaults = {
 | 
				
			||||||
 | 
					    template: '<span class="icons"><span class="first-icon fa fa-square fa-base"></span><span class="second-icon fa fa-check-square fa-base"></span></span>'
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /* CHECKBOX NO CONFLICT
 | 
				
			||||||
 | 
					  * ================== */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  $.fn.checkbox.noConflict = function () {
 | 
				
			||||||
 | 
					    $.fn.checkbox = old;
 | 
				
			||||||
 | 
					    return this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /* CHECKBOX DATA-API
 | 
				
			||||||
 | 
					  * =============== */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  $(document).on('click.checkbox.data-api', '[data-toggle^=checkbox], .checkbox', function (e) {
 | 
				
			||||||
 | 
					    var $checkbox = $(e.target);
 | 
				
			||||||
 | 
					    if (e.target.tagName != "A") {
 | 
				
			||||||
 | 
					      e && e.preventDefault() && e.stopPropagation();
 | 
				
			||||||
 | 
					      if (!$checkbox.hasClass('checkbox')) $checkbox = $checkbox.closest('.checkbox');
 | 
				
			||||||
 | 
					      $checkbox.find(':checkbox').checkbox('toggle');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  $(function () {
 | 
				
			||||||
 | 
					    $('input[type="checkbox"]').each(function () {
 | 
				
			||||||
 | 
					      var $checkbox = $(this);
 | 
				
			||||||
 | 
					      $checkbox.checkbox();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}(window.jQuery);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* =============================================================
 | 
				
			||||||
 | 
					 * flatui-radio v0.0.3
 | 
				
			||||||
 | 
					 * ============================================================ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!function ($) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /* RADIO PUBLIC CLASS DEFINITION
 | 
				
			||||||
 | 
					  * ============================== */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  var Radio = function (element, options) {
 | 
				
			||||||
 | 
					    this.init(element, options);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Radio.prototype = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    constructor: Radio
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , init: function (element, options) {
 | 
				
			||||||
 | 
					      var $el = this.$element = $(element)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      this.options = $.extend({}, $.fn.radio.defaults, options);
 | 
				
			||||||
 | 
					      $el.before(this.options.template);
 | 
				
			||||||
 | 
					      this.setState();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , setState: function () {
 | 
				
			||||||
 | 
					      var $el = this.$element
 | 
				
			||||||
 | 
					        , $parent = $el.closest('.radio');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $el.prop('disabled') && $parent.addClass('disabled');
 | 
				
			||||||
 | 
					        $el.prop('checked') && $parent.addClass('checked');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , toggle: function () {
 | 
				
			||||||
 | 
					      var d = 'disabled'
 | 
				
			||||||
 | 
					        , ch = 'checked'
 | 
				
			||||||
 | 
					        , $el = this.$element
 | 
				
			||||||
 | 
					        , checked = $el.prop(ch)
 | 
				
			||||||
 | 
					        , $parent = $el.closest('.radio')
 | 
				
			||||||
 | 
					        , $parentWrap = $el.closest('form').length ? $el.closest('form') : $el.closest('body')
 | 
				
			||||||
 | 
					        , $elemGroup = $parentWrap.find(':radio[name="' + $el.attr('name') + '"]')
 | 
				
			||||||
 | 
					        , e = $.Event('toggle')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($el.prop(d) == false) {
 | 
				
			||||||
 | 
					            $elemGroup.not($el).each(function () {
 | 
				
			||||||
 | 
					              var $el = $(this)
 | 
				
			||||||
 | 
					                , $parent = $(this).closest('.radio');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if ($el.prop(d) == false) {
 | 
				
			||||||
 | 
					                  $parent.removeClass(ch) && $el.removeAttr(ch).trigger('change');
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (checked == false) $parent.addClass(ch) && $el.prop(ch, true);
 | 
				
			||||||
 | 
					            $el.trigger(e);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (checked !== $el.prop(ch)) {
 | 
				
			||||||
 | 
					                $el.trigger('change');
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , setCheck: function (option) {
 | 
				
			||||||
 | 
					      var ch = 'checked'
 | 
				
			||||||
 | 
					        , $el = this.$element
 | 
				
			||||||
 | 
					        , $parent = $el.closest('.radio')
 | 
				
			||||||
 | 
					        , checkAction = option == 'check' ? true : false
 | 
				
			||||||
 | 
					        , checked = $el.prop(ch)
 | 
				
			||||||
 | 
					        , $parentWrap = $el.closest('form').length ? $el.closest('form') : $el.closest('body')
 | 
				
			||||||
 | 
					        , $elemGroup = $parentWrap.find(':radio[name="' + $el['attr']('name') + '"]')
 | 
				
			||||||
 | 
					        , e = $.Event(option)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      $elemGroup.not($el).each(function () {
 | 
				
			||||||
 | 
					        var $el = $(this)
 | 
				
			||||||
 | 
					          , $parent = $(this).closest('.radio');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          $parent.removeClass(ch) && $el.removeAttr(ch);
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      $parent[checkAction ? 'addClass' : 'removeClass'](ch) && checkAction ? $el.prop(ch, ch) : $el.removeAttr(ch);
 | 
				
			||||||
 | 
					      $el.trigger(e);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (checked !== $el.prop(ch)) {
 | 
				
			||||||
 | 
					        $el.trigger('change');
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /* RADIO PLUGIN DEFINITION
 | 
				
			||||||
 | 
					  * ======================== */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  var old = $.fn.radio
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  $.fn.radio = function (option) {
 | 
				
			||||||
 | 
					    return this.each(function () {
 | 
				
			||||||
 | 
					      var $this = $(this)
 | 
				
			||||||
 | 
					        , data = $this.data('radio')
 | 
				
			||||||
 | 
					        , options = $.extend({}, $.fn.radio.defaults, $this.data(), typeof option == 'object' && option);
 | 
				
			||||||
 | 
					      if (!data) $this.data('radio', (data = new Radio(this, options)));
 | 
				
			||||||
 | 
					      if (option == 'toggle') data.toggle()
 | 
				
			||||||
 | 
					      if (option == 'check' || option == 'uncheck') data.setCheck(option)
 | 
				
			||||||
 | 
					      else if (option) data.setState();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  $.fn.radio.defaults = {
 | 
				
			||||||
 | 
					    template: '<span class="icons"><span class="first-icon fa fa-circle-o fa-base"></span><span class="second-icon fa fa-dot-circle-o fa-base"></span></span>'
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /* RADIO NO CONFLICT
 | 
				
			||||||
 | 
					  * ================== */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  $.fn.radio.noConflict = function () {
 | 
				
			||||||
 | 
					    $.fn.radio = old;
 | 
				
			||||||
 | 
					    return this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /* RADIO DATA-API
 | 
				
			||||||
 | 
					  * =============== */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  $(document).on('click.radio.data-api', '[data-toggle^=radio], .radio', function (e) {
 | 
				
			||||||
 | 
					    var $radio = $(e.target);
 | 
				
			||||||
 | 
					    e && e.preventDefault() && e.stopPropagation();
 | 
				
			||||||
 | 
					    if (!$radio.hasClass('radio')) $radio = $radio.closest('.radio');
 | 
				
			||||||
 | 
					    $radio.find(':radio').radio('toggle');
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  $(function () {
 | 
				
			||||||
 | 
					    $('input[type="radio"]').each(function () {
 | 
				
			||||||
 | 
					      var $radio = $(this);
 | 
				
			||||||
 | 
					      $radio.radio();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}(window.jQuery);
 | 
				
			||||||
@ -0,0 +1,404 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     Creative Tim Modifications
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     Lines: 239, 240 was changed from top: 5px to top: 50% and we added margin-top: -13px. In this way the close button will be aligned vertically 
 | 
				
			||||||
 | 
					     Line:242 - modified when the icon is set, we add the class "alert-with-icon", so there will be enough space for the icon.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					* Project: Bootstrap Notify = v3.1.5
 | 
				
			||||||
 | 
					* Description: Turns standard Bootstrap alerts into "Growl-like" notifications.
 | 
				
			||||||
 | 
					* Author: Mouse0270 aka Robert McIntosh
 | 
				
			||||||
 | 
					* License: MIT License
 | 
				
			||||||
 | 
					* Website: https://github.com/mouse0270/bootstrap-growl
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* global define:false, require: false, jQuery:false */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(function (factory) {
 | 
				
			||||||
 | 
						if (typeof define === 'function' && define.amd) {
 | 
				
			||||||
 | 
							// AMD. Register as an anonymous module.
 | 
				
			||||||
 | 
							define(['jquery'], factory);
 | 
				
			||||||
 | 
						} else if (typeof exports === 'object') {
 | 
				
			||||||
 | 
							// Node/CommonJS
 | 
				
			||||||
 | 
							factory(require('jquery'));
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							// Browser globals
 | 
				
			||||||
 | 
							factory(jQuery);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}(function ($) {
 | 
				
			||||||
 | 
						// Create the defaults once
 | 
				
			||||||
 | 
						var defaults = {
 | 
				
			||||||
 | 
							element: 'body',
 | 
				
			||||||
 | 
							position: null,
 | 
				
			||||||
 | 
							type: "info",
 | 
				
			||||||
 | 
							allow_dismiss: true,
 | 
				
			||||||
 | 
							allow_duplicates: true,
 | 
				
			||||||
 | 
							newest_on_top: false,
 | 
				
			||||||
 | 
							showProgressbar: false,
 | 
				
			||||||
 | 
							placement: {
 | 
				
			||||||
 | 
								from: "top",
 | 
				
			||||||
 | 
								align: "right"
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							offset: 20,
 | 
				
			||||||
 | 
							spacing: 10,
 | 
				
			||||||
 | 
							z_index: 1031,
 | 
				
			||||||
 | 
							delay: 5000,
 | 
				
			||||||
 | 
							timer: 1000,
 | 
				
			||||||
 | 
							url_target: '_blank',
 | 
				
			||||||
 | 
							mouse_over: null,
 | 
				
			||||||
 | 
							animate: {
 | 
				
			||||||
 | 
								enter: 'animated fadeInDown',
 | 
				
			||||||
 | 
								exit: 'animated fadeOutUp'
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							onShow: null,
 | 
				
			||||||
 | 
							onShown: null,
 | 
				
			||||||
 | 
							onClose: null,
 | 
				
			||||||
 | 
							onClosed: null,
 | 
				
			||||||
 | 
							icon_type: 'class',
 | 
				
			||||||
 | 
							template: '<div data-notify="container" class="col-xs-11 col-sm-4 alert alert-{0}" role="alert"><button type="button" aria-hidden="true" class="close" data-notify="dismiss">×</button><span data-notify="icon"></span> <span data-notify="title">{1}</span> <span data-notify="message">{2}</span><div class="progress" data-notify="progressbar"><div class="progress-bar progress-bar-{0}" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div></div><a href="{3}" target="{4}" data-notify="url"></a></div>'
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						String.format = function () {
 | 
				
			||||||
 | 
							var str = arguments[0];
 | 
				
			||||||
 | 
							for (var i = 1; i < arguments.length; i++) {
 | 
				
			||||||
 | 
								str = str.replace(RegExp("\\{" + (i - 1) + "\\}", "gm"), arguments[i]);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return str;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						function isDuplicateNotification(notification) {
 | 
				
			||||||
 | 
							var isDupe = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$('[data-notify="container"]').each(function (i, el) {
 | 
				
			||||||
 | 
								var $el = $(el);
 | 
				
			||||||
 | 
								var title = $el.find('[data-notify="title"]').text().trim();
 | 
				
			||||||
 | 
								var message = $el.find('[data-notify="message"]').html().trim();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// The input string might be different than the actual parsed HTML string!
 | 
				
			||||||
 | 
								// (<br> vs <br /> for example)
 | 
				
			||||||
 | 
								// So we have to force-parse this as HTML here!
 | 
				
			||||||
 | 
								var isSameTitle = title === $("<div>" + notification.settings.content.title + "</div>").html().trim();
 | 
				
			||||||
 | 
								var isSameMsg = message === $("<div>" + notification.settings.content.message + "</div>").html().trim();
 | 
				
			||||||
 | 
								var isSameType = $el.hasClass('alert-' + notification.settings.type);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (isSameTitle && isSameMsg && isSameType) {
 | 
				
			||||||
 | 
									//we found the dupe. Set the var and stop checking.
 | 
				
			||||||
 | 
									isDupe = true;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return !isDupe;
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return isDupe;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						function Notify(element, content, options) {
 | 
				
			||||||
 | 
							// Setup Content of Notify
 | 
				
			||||||
 | 
							var contentObj = {
 | 
				
			||||||
 | 
								content: {
 | 
				
			||||||
 | 
									message: typeof content === 'object' ? content.message : content,
 | 
				
			||||||
 | 
									title: content.title ? content.title : '',
 | 
				
			||||||
 | 
									icon: content.icon ? content.icon : '',
 | 
				
			||||||
 | 
									url: content.url ? content.url : '#',
 | 
				
			||||||
 | 
									target: content.target ? content.target : '-'
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							options = $.extend(true, {}, contentObj, options);
 | 
				
			||||||
 | 
							this.settings = $.extend(true, {}, defaults, options);
 | 
				
			||||||
 | 
							this._defaults = defaults;
 | 
				
			||||||
 | 
							if (this.settings.content.target === "-") {
 | 
				
			||||||
 | 
								this.settings.content.target = this.settings.url_target;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							this.animations = {
 | 
				
			||||||
 | 
								start: 'webkitAnimationStart oanimationstart MSAnimationStart animationstart',
 | 
				
			||||||
 | 
								end: 'webkitAnimationEnd oanimationend MSAnimationEnd animationend'
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (typeof this.settings.offset === 'number') {
 | 
				
			||||||
 | 
								this.settings.offset = {
 | 
				
			||||||
 | 
									x: this.settings.offset,
 | 
				
			||||||
 | 
									y: this.settings.offset
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//if duplicate messages are not allowed, then only continue if this new message is not a duplicate of one that it already showing
 | 
				
			||||||
 | 
							if (this.settings.allow_duplicates || (!this.settings.allow_duplicates && !isDuplicateNotification(this))) {
 | 
				
			||||||
 | 
								this.init();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						$.extend(Notify.prototype, {
 | 
				
			||||||
 | 
							init: function () {
 | 
				
			||||||
 | 
								var self = this;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								this.buildNotify();
 | 
				
			||||||
 | 
								if (this.settings.content.icon) {
 | 
				
			||||||
 | 
									this.setIcon();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if (this.settings.content.url != "#") {
 | 
				
			||||||
 | 
									this.styleURL();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								this.styleDismiss();
 | 
				
			||||||
 | 
								this.placement();
 | 
				
			||||||
 | 
								this.bind();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								this.notify = {
 | 
				
			||||||
 | 
									$ele: this.$ele,
 | 
				
			||||||
 | 
									update: function (command, update) {
 | 
				
			||||||
 | 
										var commands = {};
 | 
				
			||||||
 | 
										if (typeof command === "string") {
 | 
				
			||||||
 | 
											commands[command] = update;
 | 
				
			||||||
 | 
										} else {
 | 
				
			||||||
 | 
											commands = command;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										for (var cmd in commands) {
 | 
				
			||||||
 | 
											switch (cmd) {
 | 
				
			||||||
 | 
												case "type":
 | 
				
			||||||
 | 
													this.$ele.removeClass('alert-' + self.settings.type);
 | 
				
			||||||
 | 
													this.$ele.find('[data-notify="progressbar"] > .progress-bar').removeClass('progress-bar-' + self.settings.type);
 | 
				
			||||||
 | 
													self.settings.type = commands[cmd];
 | 
				
			||||||
 | 
													this.$ele.addClass('alert-' + commands[cmd]).find('[data-notify="progressbar"] > .progress-bar').addClass('progress-bar-' + commands[cmd]);
 | 
				
			||||||
 | 
													break;
 | 
				
			||||||
 | 
												case "icon":
 | 
				
			||||||
 | 
													var $icon = this.$ele.find('[data-notify="icon"]');
 | 
				
			||||||
 | 
													if (self.settings.icon_type.toLowerCase() === 'class') {
 | 
				
			||||||
 | 
														$icon.removeClass(self.settings.content.icon).addClass(commands[cmd]);
 | 
				
			||||||
 | 
													} else {
 | 
				
			||||||
 | 
														if (!$icon.is('img')) {
 | 
				
			||||||
 | 
															$icon.find('img');
 | 
				
			||||||
 | 
														}
 | 
				
			||||||
 | 
														$icon.attr('src', commands[cmd]);
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
													break;
 | 
				
			||||||
 | 
												case "progress":
 | 
				
			||||||
 | 
													var newDelay = self.settings.delay - (self.settings.delay * (commands[cmd] / 100));
 | 
				
			||||||
 | 
													this.$ele.data('notify-delay', newDelay);
 | 
				
			||||||
 | 
													this.$ele.find('[data-notify="progressbar"] > div').attr('aria-valuenow', commands[cmd]).css('width', commands[cmd] + '%');
 | 
				
			||||||
 | 
													break;
 | 
				
			||||||
 | 
												case "url":
 | 
				
			||||||
 | 
													this.$ele.find('[data-notify="url"]').attr('href', commands[cmd]);
 | 
				
			||||||
 | 
													break;
 | 
				
			||||||
 | 
												case "target":
 | 
				
			||||||
 | 
													this.$ele.find('[data-notify="url"]').attr('target', commands[cmd]);
 | 
				
			||||||
 | 
													break;
 | 
				
			||||||
 | 
												default:
 | 
				
			||||||
 | 
													this.$ele.find('[data-notify="' + cmd + '"]').html(commands[cmd]);
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										var posX = this.$ele.outerHeight() + parseInt(self.settings.spacing) + parseInt(self.settings.offset.y);
 | 
				
			||||||
 | 
										self.reposition(posX);
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									close: function () {
 | 
				
			||||||
 | 
										self.close();
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							buildNotify: function () {
 | 
				
			||||||
 | 
								var content = this.settings.content;
 | 
				
			||||||
 | 
								this.$ele = $(String.format(this.settings.template, this.settings.type, content.title, content.message, content.url, content.target));
 | 
				
			||||||
 | 
								this.$ele.attr('data-notify-position', this.settings.placement.from + '-' + this.settings.placement.align);
 | 
				
			||||||
 | 
								if (!this.settings.allow_dismiss) {
 | 
				
			||||||
 | 
									this.$ele.find('[data-notify="dismiss"]').css('display', 'none');
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if ((this.settings.delay <= 0 && !this.settings.showProgressbar) || !this.settings.showProgressbar) {
 | 
				
			||||||
 | 
									this.$ele.find('[data-notify="progressbar"]').remove();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							setIcon: function () {
 | 
				
			||||||
 | 
					    		
 | 
				
			||||||
 | 
					    		this.$ele.addClass('alert-with-icon');
 | 
				
			||||||
 | 
					    		
 | 
				
			||||||
 | 
								if (this.settings.icon_type.toLowerCase() === 'class') {
 | 
				
			||||||
 | 
									this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon);
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									if (this.$ele.find('[data-notify="icon"]').is('img')) {
 | 
				
			||||||
 | 
										this.$ele.find('[data-notify="icon"]').attr('src', this.settings.content.icon);
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										this.$ele.find('[data-notify="icon"]').append('<img src="' + this.settings.content.icon + '" alt="Notify Icon" />');
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							styleDismiss: function () {
 | 
				
			||||||
 | 
								this.$ele.find('[data-notify="dismiss"]').css({
 | 
				
			||||||
 | 
									position: 'absolute',
 | 
				
			||||||
 | 
									right: '10px',
 | 
				
			||||||
 | 
									top: '50%',
 | 
				
			||||||
 | 
									marginTop: '-13px',
 | 
				
			||||||
 | 
									zIndex: this.settings.z_index + 2
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							styleURL: function () {
 | 
				
			||||||
 | 
								this.$ele.find('[data-notify="url"]').css({
 | 
				
			||||||
 | 
									backgroundImage: 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)',
 | 
				
			||||||
 | 
									height: '100%',
 | 
				
			||||||
 | 
									left: 0,
 | 
				
			||||||
 | 
									position: 'absolute',
 | 
				
			||||||
 | 
									top: 0,
 | 
				
			||||||
 | 
									width: '100%',
 | 
				
			||||||
 | 
									zIndex: this.settings.z_index + 1
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							placement: function () {
 | 
				
			||||||
 | 
								var self = this,
 | 
				
			||||||
 | 
									offsetAmt = this.settings.offset.y,
 | 
				
			||||||
 | 
									css = {
 | 
				
			||||||
 | 
										display: 'inline-block',
 | 
				
			||||||
 | 
										margin: '0px auto',
 | 
				
			||||||
 | 
										position: this.settings.position ? this.settings.position : (this.settings.element === 'body' ? 'fixed' : 'absolute'),
 | 
				
			||||||
 | 
										transition: 'all .5s ease-in-out',
 | 
				
			||||||
 | 
										zIndex: this.settings.z_index
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									hasAnimation = false,
 | 
				
			||||||
 | 
									settings = this.settings;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								$('[data-notify-position="' + this.settings.placement.from + '-' + this.settings.placement.align + '"]:not([data-closing="true"])').each(function () {
 | 
				
			||||||
 | 
									offsetAmt = Math.max(offsetAmt, parseInt($(this).css(settings.placement.from)) + parseInt($(this).outerHeight()) + parseInt(settings.spacing));
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
								if (this.settings.newest_on_top === true) {
 | 
				
			||||||
 | 
									offsetAmt = this.settings.offset.y;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								css[this.settings.placement.from] = offsetAmt + 'px';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								switch (this.settings.placement.align) {
 | 
				
			||||||
 | 
									case "left":
 | 
				
			||||||
 | 
									case "right":
 | 
				
			||||||
 | 
										css[this.settings.placement.align] = this.settings.offset.x + 'px';
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
 | 
									case "center":
 | 
				
			||||||
 | 
										css.left = 0;
 | 
				
			||||||
 | 
										css.right = 0;
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								this.$ele.css(css).addClass(this.settings.animate.enter);
 | 
				
			||||||
 | 
								$.each(Array('webkit-', 'moz-', 'o-', 'ms-', ''), function (index, prefix) {
 | 
				
			||||||
 | 
									self.$ele[0].style[prefix + 'AnimationIterationCount'] = 1;
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								$(this.settings.element).append(this.$ele);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (this.settings.newest_on_top === true) {
 | 
				
			||||||
 | 
									offsetAmt = (parseInt(offsetAmt) + parseInt(this.settings.spacing)) + this.$ele.outerHeight();
 | 
				
			||||||
 | 
									this.reposition(offsetAmt);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ($.isFunction(self.settings.onShow)) {
 | 
				
			||||||
 | 
									self.settings.onShow.call(this.$ele);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								this.$ele.one(this.animations.start, function () {
 | 
				
			||||||
 | 
									hasAnimation = true;
 | 
				
			||||||
 | 
								}).one(this.animations.end, function () {
 | 
				
			||||||
 | 
									if ($.isFunction(self.settings.onShown)) {
 | 
				
			||||||
 | 
										self.settings.onShown.call(this);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								setTimeout(function () {
 | 
				
			||||||
 | 
									if (!hasAnimation) {
 | 
				
			||||||
 | 
										if ($.isFunction(self.settings.onShown)) {
 | 
				
			||||||
 | 
											self.settings.onShown.call(this);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}, 600);
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							bind: function () {
 | 
				
			||||||
 | 
								var self = this;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								this.$ele.find('[data-notify="dismiss"]').on('click', function () {
 | 
				
			||||||
 | 
									self.close();
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								this.$ele.mouseover(function () {
 | 
				
			||||||
 | 
									$(this).data('data-hover', "true");
 | 
				
			||||||
 | 
								}).mouseout(function () {
 | 
				
			||||||
 | 
									$(this).data('data-hover', "false");
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
								this.$ele.data('data-hover', "false");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (this.settings.delay > 0) {
 | 
				
			||||||
 | 
									self.$ele.data('notify-delay', self.settings.delay);
 | 
				
			||||||
 | 
									var timer = setInterval(function () {
 | 
				
			||||||
 | 
										var delay = parseInt(self.$ele.data('notify-delay')) - self.settings.timer;
 | 
				
			||||||
 | 
										if ((self.$ele.data('data-hover') === 'false' && self.settings.mouse_over === "pause") || self.settings.mouse_over != "pause") {
 | 
				
			||||||
 | 
											var percent = ((self.settings.delay - delay) / self.settings.delay) * 100;
 | 
				
			||||||
 | 
											self.$ele.data('notify-delay', delay);
 | 
				
			||||||
 | 
											self.$ele.find('[data-notify="progressbar"] > div').attr('aria-valuenow', percent).css('width', percent + '%');
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										if (delay <= -(self.settings.timer)) {
 | 
				
			||||||
 | 
											clearInterval(timer);
 | 
				
			||||||
 | 
											self.close();
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}, self.settings.timer);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							close: function () {
 | 
				
			||||||
 | 
								var self = this,
 | 
				
			||||||
 | 
									posX = parseInt(this.$ele.css(this.settings.placement.from)),
 | 
				
			||||||
 | 
									hasAnimation = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								this.$ele.data('closing', 'true').addClass(this.settings.animate.exit);
 | 
				
			||||||
 | 
								self.reposition(posX);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ($.isFunction(self.settings.onClose)) {
 | 
				
			||||||
 | 
									self.settings.onClose.call(this.$ele);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								this.$ele.one(this.animations.start, function () {
 | 
				
			||||||
 | 
									hasAnimation = true;
 | 
				
			||||||
 | 
								}).one(this.animations.end, function () {
 | 
				
			||||||
 | 
									$(this).remove();
 | 
				
			||||||
 | 
									if ($.isFunction(self.settings.onClosed)) {
 | 
				
			||||||
 | 
										self.settings.onClosed.call(this);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								setTimeout(function () {
 | 
				
			||||||
 | 
									if (!hasAnimation) {
 | 
				
			||||||
 | 
										self.$ele.remove();
 | 
				
			||||||
 | 
										if (self.settings.onClosed) {
 | 
				
			||||||
 | 
											self.settings.onClosed(self.$ele);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}, 600);
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							reposition: function (posX) {
 | 
				
			||||||
 | 
								var self = this,
 | 
				
			||||||
 | 
									notifies = '[data-notify-position="' + this.settings.placement.from + '-' + this.settings.placement.align + '"]:not([data-closing="true"])',
 | 
				
			||||||
 | 
									$elements = this.$ele.nextAll(notifies);
 | 
				
			||||||
 | 
								if (this.settings.newest_on_top === true) {
 | 
				
			||||||
 | 
									$elements = this.$ele.prevAll(notifies);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								$elements.each(function () {
 | 
				
			||||||
 | 
									$(this).css(self.settings.placement.from, posX);
 | 
				
			||||||
 | 
									posX = (parseInt(posX) + parseInt(self.settings.spacing)) + $(this).outerHeight();
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						$.notify = function (content, options) {
 | 
				
			||||||
 | 
							var plugin = new Notify(this, content, options);
 | 
				
			||||||
 | 
							return plugin.notify;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						$.notifyDefaults = function (options) {
 | 
				
			||||||
 | 
							defaults = $.extend(true, {}, defaults, options);
 | 
				
			||||||
 | 
							return defaults;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						$.notifyClose = function (command) {
 | 
				
			||||||
 | 
							if (typeof command === "undefined" || command === "all") {
 | 
				
			||||||
 | 
								$('[data-notify]').find('[data-notify="dismiss"]').trigger('click');
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								$('[data-notify-position="' + command + '"]').find('[data-notify="dismiss"]').trigger('click');
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}));
 | 
				
			||||||
											
												
													File diff suppressed because one or more lines are too long
												
											
										
									
								
											
												
													File diff suppressed because one or more lines are too long
												
											
										
									
								
											
												
													File diff suppressed because one or more lines are too long
												
											
										
									
								@ -0,0 +1,140 @@
 | 
				
			|||||||
 | 
					var fixedTop = false;
 | 
				
			||||||
 | 
					var transparent = true;
 | 
				
			||||||
 | 
					var navbar_initialized = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(document).ready(function(){
 | 
				
			||||||
 | 
					    window_width = $(window).width();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Init navigation toggle for small screens
 | 
				
			||||||
 | 
					    if(window_width <= 991){
 | 
				
			||||||
 | 
					        pd.initRightMenu();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //  Activate the tooltips
 | 
				
			||||||
 | 
					    $('[rel="tooltip"]').tooltip();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// activate collapse right menu when the windows is resized
 | 
				
			||||||
 | 
					$(window).resize(function(){
 | 
				
			||||||
 | 
					    if($(window).width() <= 991){
 | 
				
			||||||
 | 
					        pd.initRightMenu();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pd = {
 | 
				
			||||||
 | 
					    misc:{
 | 
				
			||||||
 | 
					        navbar_menu_visible: 0
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    checkScrollForTransparentNavbar: debounce(function() {
 | 
				
			||||||
 | 
					        if($(document).scrollTop() > 381 ) {
 | 
				
			||||||
 | 
					            if(transparent) {
 | 
				
			||||||
 | 
					                transparent = false;
 | 
				
			||||||
 | 
					                $('.navbar-color-on-scroll').removeClass('navbar-transparent');
 | 
				
			||||||
 | 
					                $('.navbar-title').removeClass('hidden');
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            if( !transparent ) {
 | 
				
			||||||
 | 
					                transparent = true;
 | 
				
			||||||
 | 
					                $('.navbar-color-on-scroll').addClass('navbar-transparent');
 | 
				
			||||||
 | 
					                $('.navbar-title').addClass('hidden');
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }),
 | 
				
			||||||
 | 
					    initRightMenu: function(){
 | 
				
			||||||
 | 
					         if(!navbar_initialized){
 | 
				
			||||||
 | 
					            $off_canvas_sidebar = $('nav').find('.navbar-collapse').first().clone(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $sidebar = $('.sidebar');
 | 
				
			||||||
 | 
					            sidebar_bg_color = $sidebar.data('background-color');
 | 
				
			||||||
 | 
					            sidebar_active_color = $sidebar.data('active-color');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $logo = $sidebar.find('.logo').first();
 | 
				
			||||||
 | 
					            logo_content = $logo[0].outerHTML;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ul_content = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // set the bg color and active color from the default sidebar to the off canvas sidebar;
 | 
				
			||||||
 | 
					            $off_canvas_sidebar.attr('data-background-color',sidebar_bg_color);
 | 
				
			||||||
 | 
					            $off_canvas_sidebar.attr('data-active-color',sidebar_active_color);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $off_canvas_sidebar.addClass('off-canvas-sidebar');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //add the content from the regular header to the right menu
 | 
				
			||||||
 | 
					            $off_canvas_sidebar.children('ul').each(function(){
 | 
				
			||||||
 | 
					                content_buff = $(this).html();
 | 
				
			||||||
 | 
					                ul_content = ul_content + content_buff;
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // add the content from the sidebar to the right menu
 | 
				
			||||||
 | 
					            content_buff = $sidebar.find('.nav').html();
 | 
				
			||||||
 | 
					            ul_content = ul_content + '<li class="divider"></li>'+ content_buff;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ul_content = '<ul class="nav navbar-nav">' + ul_content + '</ul>';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            navbar_content = logo_content + ul_content;
 | 
				
			||||||
 | 
					            navbar_content = '<div class="sidebar-wrapper">' + navbar_content + '</div>';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $off_canvas_sidebar.html(navbar_content);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $('body').append($off_canvas_sidebar);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             $toggle = $('.navbar-toggle');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             $off_canvas_sidebar.find('a').removeClass('btn btn-round btn-default');
 | 
				
			||||||
 | 
					             $off_canvas_sidebar.find('button').removeClass('btn-round btn-fill btn-info btn-primary btn-success btn-danger btn-warning btn-neutral');
 | 
				
			||||||
 | 
					             $off_canvas_sidebar.find('button').addClass('btn-simple btn-block');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             $toggle.click(function (){
 | 
				
			||||||
 | 
					                if(pd.misc.navbar_menu_visible == 1) {
 | 
				
			||||||
 | 
					                    $('html').removeClass('nav-open');
 | 
				
			||||||
 | 
					                    pd.misc.navbar_menu_visible = 0;
 | 
				
			||||||
 | 
					                    $('#bodyClick').remove();
 | 
				
			||||||
 | 
					                     setTimeout(function(){
 | 
				
			||||||
 | 
					                        $toggle.removeClass('toggled');
 | 
				
			||||||
 | 
					                     }, 400);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    setTimeout(function(){
 | 
				
			||||||
 | 
					                        $toggle.addClass('toggled');
 | 
				
			||||||
 | 
					                    }, 430);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    div = '<div id="bodyClick"></div>';
 | 
				
			||||||
 | 
					                    $(div).appendTo("body").click(function() {
 | 
				
			||||||
 | 
					                        $('html').removeClass('nav-open');
 | 
				
			||||||
 | 
					                        pd.misc.navbar_menu_visible = 0;
 | 
				
			||||||
 | 
					                        $('#bodyClick').remove();
 | 
				
			||||||
 | 
					                         setTimeout(function(){
 | 
				
			||||||
 | 
					                            $toggle.removeClass('toggled');
 | 
				
			||||||
 | 
					                         }, 400);
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    $('html').addClass('nav-open');
 | 
				
			||||||
 | 
					                    pd.misc.navbar_menu_visible = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					            navbar_initialized = true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Returns a function, that, as long as it continues to be invoked, will not
 | 
				
			||||||
 | 
					// be triggered. The function will be called after it stops being called for
 | 
				
			||||||
 | 
					// N milliseconds. If `immediate` is passed, trigger the function on the
 | 
				
			||||||
 | 
					// leading edge, instead of the trailing.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function debounce(func, wait, immediate) {
 | 
				
			||||||
 | 
						var timeout;
 | 
				
			||||||
 | 
						return function() {
 | 
				
			||||||
 | 
							var context = this, args = arguments;
 | 
				
			||||||
 | 
							clearTimeout(timeout);
 | 
				
			||||||
 | 
							timeout = setTimeout(function() {
 | 
				
			||||||
 | 
								timeout = null;
 | 
				
			||||||
 | 
								if (!immediate) func.apply(context, args);
 | 
				
			||||||
 | 
							}, wait);
 | 
				
			||||||
 | 
							if (immediate && !timeout) func.apply(context, args);
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								@ -1,184 +1,352 @@
 | 
				
			|||||||
<meta charset="UTF-8">
 | 
					<!doctype html>
 | 
				
			||||||
<meta http-equiv="cache-control" content="no-cache">
 | 
					<html lang="en">
 | 
				
			||||||
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1">
 | 
					<head>
 | 
				
			||||||
<link type="text/css" rel="stylesheet" href="{{ context }}/static/js/jsgrid/jsgrid.min.css" >
 | 
						<meta charset="utf-8" />
 | 
				
			||||||
<link type="text/css" rel="stylesheet" href="{{ context }}/static/js/jsgrid/jsgrid-theme.min.css" >
 | 
						<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
 | 
				
			||||||
<link href="{{context}}/static/css/default.css" rel="stylesheet" type="text/css">
 | 
					
 | 
				
			||||||
<link href="{{context}}/static/css/fa/css/font-awesome.min.css" rel="stylesheet" type="text/css">
 | 
						<title>Monitor</title>
 | 
				
			||||||
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
 | 
					
 | 
				
			||||||
 | 
						<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
 | 
				
			||||||
<script src="{{ context }}/static/js/jquery/jquery.min.js"></script>
 | 
					    <meta name="viewport" content="width=device-width" />
 | 
				
			||||||
<script src="{{context}}/static/js/chart.js/chart.bundle.js"></script>
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script src="{{context}}/static/js/jx/rpc.js"></script>
 | 
					    <!-- Bootstrap core CSS   -->
 | 
				
			||||||
<script src="{{context}}/static/js/jx/dom.js"></script>
 | 
					    <link href="{{context}}/static/css/bootstrap.min.css" rel="stylesheet" />
 | 
				
			||||||
<script src="{{context}}/static/js/jx/utils.js"></script>
 | 
					
 | 
				
			||||||
<script src="{{context}}/static/js/jx/ext/math.js"></script>
 | 
					    <!-- Animation library for notifications   -->
 | 
				
			||||||
<script src="{{ context }}/static/js/jsgrid/jsgrid.js"></script>
 | 
					    <link href="{{context}}/static/css/animate.min.css" rel="stylesheet"/>
 | 
				
			||||||
<script src="{{context}}/static/js/colors.js"></script>
 | 
					
 | 
				
			||||||
<script src="{{context}}/static/js/dashboard.js"></script>
 | 
					    <!--  Dashboard core CSS    -->
 | 
				
			||||||
<title>{{title}}</title>
 | 
					    <link href="{{context}}/static/css/dashboard.css" rel="stylesheet"/>
 | 
				
			||||||
<script>
 | 
					
 | 
				
			||||||
	var HTTP_CONTEXT="{{context}}"
 | 
					    <!--  Fonts and icons     -->
 | 
				
			||||||
	$(document).ready(function(){
 | 
					    <link href="http://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css" rel="stylesheet">
 | 
				
			||||||
		monitor.folders.init()
 | 
					    <link href='https://fonts.googleapis.com/css?family=Muli:400,300' rel='stylesheet' type='text/css'>
 | 
				
			||||||
		monitor.processes.fetch()
 | 
					    <link href="{{context}}/static/css/themify-icons.css" rel="stylesheet">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					<body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="wrapper">
 | 
				
			||||||
 | 
					    <div class="sidebar" data-background-color="white" data-active-color="danger">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!--
 | 
				
			||||||
 | 
							Tip 1: you can change the color of the sidebar's background using: data-background-color="white | black"
 | 
				
			||||||
 | 
							Tip 2: you can change the color of the active button using the data-active-color="primary | info | success | warning | danger"
 | 
				
			||||||
 | 
						-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    	<div class="sidebar-wrapper">
 | 
				
			||||||
 | 
					            <div class="logo">
 | 
				
			||||||
 | 
					                <a href="#" class="simple-text">
 | 
				
			||||||
 | 
					                    Monitor
 | 
				
			||||||
 | 
					                </a>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <ul class="nav">
 | 
				
			||||||
 | 
					                <li class="active">
 | 
				
			||||||
 | 
					                    <a href="dash.html">
 | 
				
			||||||
 | 
					                        <i class="ti-panel"></i>
 | 
				
			||||||
 | 
					                        <p>Dashboard</p>
 | 
				
			||||||
 | 
					                    </a>
 | 
				
			||||||
 | 
					                </li>
 | 
				
			||||||
 | 
					                <li>
 | 
				
			||||||
 | 
					                    <a href= "/user">
 | 
				
			||||||
 | 
					                        <i class="ti-user"></i>
 | 
				
			||||||
 | 
					                        <p>User Profile</p>
 | 
				
			||||||
 | 
					                    </a>
 | 
				
			||||||
 | 
					                </li>
 | 
				
			||||||
 | 
									<li class="active-pro">
 | 
				
			||||||
 | 
					                    <a href="/upgrade">
 | 
				
			||||||
 | 
					                        <i class="ti-export"></i>
 | 
				
			||||||
 | 
					                        <p>Upgrade to PRO</p>
 | 
				
			||||||
 | 
					                    </a>
 | 
				
			||||||
 | 
					                </li>
 | 
				
			||||||
 | 
					            </ul>
 | 
				
			||||||
 | 
					    	</div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <!-- End Side Bar   -->
 | 
				
			||||||
 | 
					    <div class="main-panel">
 | 
				
			||||||
 | 
					        <nav class="navbar navbar-default">
 | 
				
			||||||
 | 
					            <div class="container-fluid">
 | 
				
			||||||
 | 
					                <div class="navbar-header">
 | 
				
			||||||
 | 
					                    <button type="button" class="navbar-toggle">
 | 
				
			||||||
 | 
					                        <span class="sr-only">Toggle navigation</span>
 | 
				
			||||||
 | 
					                        <span class="icon-bar bar1"></span>
 | 
				
			||||||
 | 
					                        <span class="icon-bar bar2"></span>
 | 
				
			||||||
 | 
					                        <span class="icon-bar bar3"></span>
 | 
				
			||||||
 | 
					                    </button>
 | 
				
			||||||
 | 
					                    <a class="navbar-brand" href="#">Dashboard</a>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <div class="collapse navbar-collapse">
 | 
				
			||||||
 | 
					                    <ul class="nav navbar-nav navbar-right">
 | 
				
			||||||
 | 
					                        <li>
 | 
				
			||||||
 | 
					                            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
 | 
				
			||||||
 | 
					                                <i class="ti-panel"></i>
 | 
				
			||||||
 | 
													<p>Stats</p>
 | 
				
			||||||
 | 
					                            </a>
 | 
				
			||||||
 | 
					                        </li>
 | 
				
			||||||
 | 
					                        <li class="dropdown">
 | 
				
			||||||
 | 
					                              <a href="#" class="dropdown-toggle" data-toggle="dropdown">
 | 
				
			||||||
 | 
					                                    <i class="ti-server"></i>
 | 
				
			||||||
 | 
					                                    <!-- <p class="notification">5</p> -->
 | 
				
			||||||
 | 
														<p>Servers</p>
 | 
				
			||||||
 | 
														<b class="caret"></b>
 | 
				
			||||||
 | 
					                              </a>
 | 
				
			||||||
 | 
					                              <ul class="dropdown-menu">
 | 
				
			||||||
 | 
					                                <li><a href="#">apps@osx</a></li>
 | 
				
			||||||
 | 
					                                <li><a href="#">server 2</a></li>
 | 
				
			||||||
 | 
					                                <li><a href="#">server 3</a></li>
 | 
				
			||||||
 | 
					                                <li><a href="#">server 4</a></li>
 | 
				
			||||||
 | 
					                                <li><a href="#">server 5</a></li>
 | 
				
			||||||
 | 
					                              </ul>
 | 
				
			||||||
 | 
					                        </li>
 | 
				
			||||||
 | 
											<li>
 | 
				
			||||||
 | 
					                            <a href="#">
 | 
				
			||||||
 | 
													<i class="ti-settings"></i>
 | 
				
			||||||
 | 
													<p>Settings</p>
 | 
				
			||||||
 | 
					                            </a>
 | 
				
			||||||
 | 
					                        </li>
 | 
				
			||||||
 | 
					                    </ul>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
<body class="">
 | 
					 | 
				
			||||||
	<div class="border-bottom caption" style="height:42px">
 | 
					 | 
				
			||||||
		<div class="">{{title}}</div>
 | 
					 | 
				
			||||||
		<div class="small" style="margin:4px">The Phi Technology LLC</div>
 | 
					 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
	<i class="fa fa-reorder default left action" onclick="monitor.menu.event.toggle()"></i>
 | 
					 | 
				
			||||||
	<div id="menuframe" class="left small " style="width:10%; height:90%">
 | 
					 | 
				
			||||||
		 <div id="menu" class="menu"></div>
 | 
					 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
 | 
					        </nav>
 | 
				
			||||||
 | 
					        <!-- End Menu Bar -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<div class="left info ">
 | 
					        <div class="content">
 | 
				
			||||||
		<div class="shadow border-right" style="margin:4px; margin-top:2%">
 | 
					            <div class="container-fluid">
 | 
				
			||||||
			<div class="" style="height:28px; ">
 | 
					                <div class="row">
 | 
				
			||||||
				<div class=" bold">Monitoring 
 | 
					                    <div class="col-lg-3 col-sm-6">
 | 
				
			||||||
					<span id="latest_processes_label" class="default bold"></span>
 | 
					                        <div class="card">
 | 
				
			||||||
 | 
					                            <div class="content">
 | 
				
			||||||
 | 
					                                <div class="row">
 | 
				
			||||||
 | 
					                                    <div class="col-xs-5">
 | 
				
			||||||
 | 
					                                        <div class="icon-big icon-warning text-center">
 | 
				
			||||||
 | 
					                                            <i class="ti-dashboard"></i>
 | 
				
			||||||
                                        </div>
 | 
					                                        </div>
 | 
				
			||||||
				<div class="small">Last Lookup <span id="node_last_lookup"></span></div>
 | 
					 | 
				
			||||||
				
 | 
					 | 
				
			||||||
                                    </div>
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                    <div class="col-xs-7">
 | 
				
			||||||
 | 
					                                        <div class="numbers">
 | 
				
			||||||
 | 
					                                            <p>Total CPU</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			<div class = "" style="padding:2px; margin:4px; height:170px">	
 | 
					 | 
				
			||||||
				<div id="latest_processes" class="grid" ></div>
 | 
					 | 
				
			||||||
                                        </div>
 | 
					                                        </div>
 | 
				
			||||||
			<div style="height:22px; padding:2px" class="small">
 | 
					 | 
				
			||||||
				<div id="latest_process_pager" align="center"></div>
 | 
					 | 
				
			||||||
                                    </div>
 | 
					                                    </div>
 | 
				
			||||||
                                </div>
 | 
					                                </div>
 | 
				
			||||||
		<div id="process_summary" class="simple-gradient shadow grid border-right" style="margin:4px; margin-top:2%">
 | 
					                                <div class="footer">
 | 
				
			||||||
			<div style="margin:4px; padding:2px; margin-bottom:4px; height:28px">
 | 
					                                    <hr />
 | 
				
			||||||
				<div class="bold" style="color:#4682B4">Application Summary By Status</div>
 | 
					                                    <div class="stats">
 | 
				
			||||||
				<div  class="small">Latest Lookup <span id="app-summary-date"></span></div>
 | 
					                                        <i class="ti-reload"></i> Updated now
 | 
				
			||||||
                                    </div>
 | 
					                                    </div>
 | 
				
			||||||
			
 | 
					 | 
				
			||||||
			<div class=""  style="padding:2px; height:250px; margin:4px; margin-top:10px">
 | 
					 | 
				
			||||||
				<div class=" " style="height:100%">
 | 
					 | 
				
			||||||
					<div class="small left" style="margin-left:2%; margin-top:1%">
 | 
					 | 
				
			||||||
						<div class="bold">Total Applications that have:</div>
 | 
					 | 
				
			||||||
						<br>
 | 
					 | 
				
			||||||
							<div style="margin:0px; margin-left:20px; padding:4px; height:12px"><div class="left width-half"><i class="fa fa-check"></i> Running</div> <span id="total-running" class="right"></span></div>
 | 
					 | 
				
			||||||
							<div style="margin:0px; margin-left:20px; padding:4px; height:12px"><div class="left width-half"><i class="fa fa-times"></i> Crash</div> <span id="total-crash" class="right"></span></div>
 | 
					 | 
				
			||||||
							<div style="margin:0px; margin-left:20px; padding:4px; height:12px"><div class="left width-half"><i class="fa fa-ellipsis-h"></i> Idle</div> <span id="total-idle" class="right"></span></div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                                </div>
 | 
					                                </div>
 | 
				
			||||||
					<div id="summary_chart" class="right width-half"></div>
 | 
					 | 
				
			||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
				
 | 
					 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
			<div id="summary_details" class="right"></div>
 | 
					 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="col-lg-3 col-sm-6">
 | 
				
			||||||
 | 
					                        <div class="card">
 | 
				
			||||||
 | 
					                            <div class="content">
 | 
				
			||||||
 | 
					                                <div class="row">
 | 
				
			||||||
 | 
					                                    <div class="col-xs-5">
 | 
				
			||||||
 | 
					                                        <div class="icon-big icon-success text-center">
 | 
				
			||||||
 | 
					                                            <i class="ti-harddrive"></i>
 | 
				
			||||||
 | 
					                                        </div>
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                    <div class="col-xs-7">
 | 
				
			||||||
 | 
					                                        <div class="numbers">
 | 
				
			||||||
 | 
					                                            <p>Total memory used %</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<div class="shadow simple-gradient  grid border-right" style="margin:4px; margin-top:10px;">
 | 
					 | 
				
			||||||
			<div style="height:28px">
 | 
					 | 
				
			||||||
				<div class="bold" style="margin:4px; padding:4px; color:#4682B4;">Application Summary By Groups</div>
 | 
					 | 
				
			||||||
                                        </div>
 | 
					                                        </div>
 | 
				
			||||||
			<div class="width" id="summary_ranking" style=" margin:4px; padding:2px; text-transform:capitalize"></div>
 | 
					 | 
				
			||||||
                                    </div>
 | 
					                                    </div>
 | 
				
			||||||
                                </div>
 | 
					                                </div>
 | 
				
			||||||
	<div class="left info">
 | 
					                                <div class="footer">
 | 
				
			||||||
		<div class="shadow simple-gradient" style="padding:4px; margin-top:2%">
 | 
					                                    <hr />
 | 
				
			||||||
			<div class="" style="height:28px">
 | 
					                                    <div class="stats">
 | 
				
			||||||
				<div class="small bold">CPU & Memory Usage Trend for <i class="fa fa-quote-left"></i> <span id="trend_info" class="default bold"></span> <i class="fa fa-quote-right"></i></div>
 | 
					                                        <i class="ti-calendar"></i> Last day
 | 
				
			||||||
				<div class="small">Last Lookup <span id="trend_last_lookup"></span> <i id="has_anomaly" class="fa fa-warning right" ></i></div>
 | 
					 | 
				
			||||||
				
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                                    </div>
 | 
					                                    </div>
 | 
				
			||||||
			
 | 
					 | 
				
			||||||
			<div  style="height:270px; margin-top:4px">
 | 
					 | 
				
			||||||
				<div id="trends_chart" class="small grid" style="height:250px"></div>
 | 
					 | 
				
			||||||
                                </div>
 | 
					                                </div>
 | 
				
			||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
		<div id="sandbox" class="border-top" style="padding:4px; margin-top:10px">
 | 
					 | 
				
			||||||
			<div style="height:28px">
 | 
					 | 
				
			||||||
				<div id="inspect_sandbox" class="right button border" style="display:none" onclick="monitor.sandbox.init()">Inspect</div>
 | 
					 | 
				
			||||||
				<div class="bold">Python Virtual Environment Analysis</div>
 | 
					 | 
				
			||||||
				
 | 
					 | 
				
			||||||
				<div class="small">Last Lookup <span id="sandbox_date"></span></div>
 | 
					 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
						
 | 
					 | 
				
			||||||
			<div class="shadow " style="margin-top:10px; height:135px">
 | 
					 | 
				
			||||||
				<div id="sandbox_status" class="">
 | 
					 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
				<div id="sandbox_pager"></div>
 | 
					                    <div class="col-lg-3 col-sm-6">
 | 
				
			||||||
 | 
					                        <div class="card">
 | 
				
			||||||
 | 
					                            <div class="content">
 | 
				
			||||||
 | 
					                                <div class="row">
 | 
				
			||||||
 | 
					                                    <div class="col-xs-5">
 | 
				
			||||||
 | 
					                                        <div class="icon-big icon-danger text-center">
 | 
				
			||||||
 | 
					                                            <i class="ti-pulse"></i>
 | 
				
			||||||
                                        </div>
 | 
					                                        </div>
 | 
				
			||||||
                                    </div>
 | 
					                                    </div>
 | 
				
			||||||
		<div style="margin-top:2%">
 | 
					                                    <div class="col-xs-7">
 | 
				
			||||||
			<div id="folder_summary" class="shadow">
 | 
					                                        <div class="numbers">
 | 
				
			||||||
				<div style="height:28px">
 | 
					                                            <p>Errors</p>
 | 
				
			||||||
					
 | 
					                                            <!-- show errors API. Crashed? -->
 | 
				
			||||||
					<div class="bold">Folder Analysis/Monitoring</div>
 | 
					 | 
				
			||||||
					<div class="small">Powered By Machine Learning</div>
 | 
					 | 
				
			||||||
                                        </div>
 | 
					                                        </div>
 | 
				
			||||||
				<div class="">
 | 
					 | 
				
			||||||
					<div class=" border-top" style="margin-top:4px; padding:2px; height:34px">
 | 
					 | 
				
			||||||
						<i class="fa fa-search left" style="margin:4px; padding:4px; ; color:gray;"></i> 
 | 
					 | 
				
			||||||
						<input id="folder_search" type="text" class="small left" placeholder="hostname" style="width:87%; padding-left:4px;" onkeyup="monitor.folders.search.init()"/>
 | 
					 | 
				
			||||||
						<i class="fa fa-trash right action right" style="margin:4px; padding:4px; color:maroon" onclick="monitor.folders.search.reset()"></i>
 | 
					 | 
				
			||||||
                                    </div>
 | 
					                                    </div>
 | 
				
			||||||
					<div id="gfolderframe" style="margin-top:10px; height:170px; width:100%">
 | 
					 | 
				
			||||||
						<div style="height:130px">
 | 
					 | 
				
			||||||
							<div id="gridfolders" style=""></div>
 | 
					 | 
				
			||||||
                                </div>
 | 
					                                </div>
 | 
				
			||||||
						<div id="folderspager" class="small" style="height:22px; margin:4px;"></div>
 | 
					                                <div class="footer">
 | 
				
			||||||
 | 
					                                    <hr />
 | 
				
			||||||
 | 
					                                    <div class="stats">
 | 
				
			||||||
 | 
					                                        <i class="ti-timer"></i> In the last hour
 | 
				
			||||||
                                    </div>
 | 
					                                    </div>
 | 
				
			||||||
                                </div>
 | 
					                                </div>
 | 
				
			||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
 | 
					 | 
				
			||||||
			<div id="folder_plan" style="display:none">
 | 
					 | 
				
			||||||
				<div class="border-bottom" style="height:32px">
 | 
					 | 
				
			||||||
					<div class="bold">Deletion/Archiving Plan 
 | 
					 | 
				
			||||||
						<i class="fa fa-quote-left"></i> <span id="folder_name"></span> <i class="fa fa-quote-right"></i>
 | 
					 | 
				
			||||||
						<i class="fa fa-angle-up action right bold" style="font-size:16px; margin:4px;" onclick="monitor.folders.show.grid()"></i>
 | 
					 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
					<div class="small left">Powered By Machine Learning</div>
 | 
					 | 
				
			||||||
					
 | 
					 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="col-lg-3 col-sm-6">
 | 
				
			||||||
 | 
					                        <div class="card">
 | 
				
			||||||
 | 
					                            <div class="content">
 | 
				
			||||||
 | 
					                                <div class="row">
 | 
				
			||||||
 | 
					                                    <div class="col-xs-5">
 | 
				
			||||||
 | 
					                                        <div class="icon-big icon-info text-center">
 | 
				
			||||||
 | 
					                                            <i class="ti-folder"></i>
 | 
				
			||||||
 | 
					                                        </div>
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                    <div class="col-xs-7">
 | 
				
			||||||
 | 
					                                        <div class="numbers">
 | 
				
			||||||
 | 
					                                            <p>Folder Analysis</p>
 | 
				
			||||||
 | 
					                                            <!-- Folder Analysis API here. -->
 | 
				
			||||||
 | 
					                                        </div>
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                                <div class="footer">
 | 
				
			||||||
 | 
					                                    <hr />
 | 
				
			||||||
 | 
					                                    <div class="stats">
 | 
				
			||||||
 | 
					                                        <i class="ti-reload"></i> Updated now
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <div class="row">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				<div id="delete_age" class="left width-half border-right" style="margin:2px; padding:2px;">
 | 
					                    <div class="col-md-12">
 | 
				
			||||||
					<div class="small" align="left">By Age</div>
 | 
					                        <div class="card">
 | 
				
			||||||
					<div class="number" style="height:42px">
 | 
					                            <div class="header">
 | 
				
			||||||
						
 | 
					                                <h4 class="title">Monitoring Apps</h4>
 | 
				
			||||||
						<div id="age_count"  align="right" class="left width-75" style="margin-right:4px">00</div>
 | 
					                                <p class="category">performance</p>
 | 
				
			||||||
						<div class="small" class="left" style="height:100%; padding-top:15px">Files</div>
 | 
					                            </div>
 | 
				
			||||||
							
 | 
					                            <div class="content">
 | 
				
			||||||
 | 
					                                <div id="chartHours" class="ct-chart"></div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                <div class="footer">
 | 
				
			||||||
 | 
					                                    <div class="chart-legend">
 | 
				
			||||||
 | 
					                                        <!-- confirm these three are right with new API. -->
 | 
				
			||||||
 | 
					                                        <i class="fa fa-circle text-info"></i> cpu usage
 | 
				
			||||||
 | 
					                                        <i class="fa fa-circle text-danger"></i> memory usage
 | 
				
			||||||
 | 
					                                        <i class="fa fa-circle text-warning"></i> memory available
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                    <hr>
 | 
				
			||||||
 | 
					                                    <div class="stats">
 | 
				
			||||||
 | 
					                                        <i class="ti-reload"></i> Updated 3 minutes ago
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
					<div class="small border-top" align="center" style="padding-top:4px">
 | 
					 | 
				
			||||||
						Approximately <span id="age_value">00</span> <span id="age_units"></span>
 | 
					 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
					
 | 
					 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
				<div id="delete_size" class="right width-half" class="number" style="margin:2px; padding:2px">
 | 
					                </div>
 | 
				
			||||||
					<div class="small" align="left">By Size</div>
 | 
					                <div class="row">
 | 
				
			||||||
 | 
					                    <div class="col-md-6">
 | 
				
			||||||
 | 
					                        <div class="card">
 | 
				
			||||||
 | 
					                            <div class="header">
 | 
				
			||||||
 | 
					                                <h4 class="title">Summary</h4>
 | 
				
			||||||
 | 
					                                <p class="category">Running|Idle|Crash</p>
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                            <div class="content">
 | 
				
			||||||
 | 
					                                <div id="chartPreferences" class="ct-chart ct-perfect-fourth"></div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					<div  class=" number" style="height:42px">
 | 
					                                <div class="footer">
 | 
				
			||||||
 | 
					                                    <div class="chart-legend">
 | 
				
			||||||
 | 
					                                        <i class="fa fa-circle text-info"></i> Running
 | 
				
			||||||
 | 
					                                        <i class="fa fa-circle text-danger"></i> Crashed
 | 
				
			||||||
 | 
					                                        <i class="fa fa-circle text-warning"></i> Idle
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                    <hr>
 | 
				
			||||||
 | 
					                                    <div class="stats">
 | 
				
			||||||
 | 
					                                        <i class="ti-timer"></i> Some footer
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="col-md-6">
 | 
				
			||||||
 | 
					                        <div class="card ">
 | 
				
			||||||
 | 
					                            <div class="header">
 | 
				
			||||||
 | 
					                                <h4 class="title">CPU and Memory</h4>
 | 
				
			||||||
 | 
					                                <p class="category">Usage Trends</p>
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                            <div class="content">
 | 
				
			||||||
 | 
					                                <div id="chartActivity" class="ct-chart"></div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						<div id="size_count" align="right" class="left width-75" style="margin-right:4px">00</div>	
 | 
					                                <div class="footer">
 | 
				
			||||||
						<div class="small" class="left" style="height:100%; padding-top:15px">Files</div>						
 | 
					                                    <div class="chart-legend">
 | 
				
			||||||
 | 
					                                        <i class="fa fa-circle text-info"></i> CPU
 | 
				
			||||||
 | 
					                                        <i class="fa fa-circle text-warning"></i> Memory
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                    <hr>
 | 
				
			||||||
 | 
					                                    <div class="stats">
 | 
				
			||||||
 | 
					                                        <i class="ti-check"></i> Data information certified
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
					<div class="small border-top"align="center" style="padding-top:4px">
 | 
					 | 
				
			||||||
						Approximately <span id="size_value">00</span> <span id="size_units"></span>
 | 
					 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <footer class="footer">
 | 
				
			||||||
 | 
					            <div class="container-fluid">
 | 
				
			||||||
 | 
					                <nav class="pull-left">
 | 
				
			||||||
 | 
					                    <ul>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        <li>
 | 
				
			||||||
 | 
					                            <a href="#">
 | 
				
			||||||
 | 
					                                Monitor
 | 
				
			||||||
 | 
					                            </a>
 | 
				
			||||||
 | 
					                        </li>
 | 
				
			||||||
 | 
					                        <li>
 | 
				
			||||||
 | 
					                            <a href="#">
 | 
				
			||||||
 | 
					                               Invy
 | 
				
			||||||
 | 
					                            </a>
 | 
				
			||||||
 | 
					                        </li>
 | 
				
			||||||
 | 
					                    </ul>
 | 
				
			||||||
 | 
					                </nav>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
 | 
					        </footer>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
			<div id="chartfolder" ></div>
 | 
					 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!--   Core JS Files   -->
 | 
				
			||||||
 | 
					    <script src="{{context}}/static/js/jquery-1.10.2.js" type="text/javascript"></script>
 | 
				
			||||||
 | 
						<script src="{{context}}/static/js/bootstrap.min.js" type="text/javascript"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<!--  Checkbox, Radio & Switch Plugins -->
 | 
				
			||||||
 | 
						<script src="{{context}}/static/js/bootstrap-checkbox-radio.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	</div>
 | 
						<!--  Charts Plugin -->
 | 
				
			||||||
 | 
						<script src="{{context}}/static/js/chartist.min.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!--  Notifications Plugin    -->
 | 
				
			||||||
 | 
					    <script src="{{context}}/static/js/bootstrap-notify.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</body>
 | 
					    <!--  Google Maps Plugin    -->
 | 
				
			||||||
 | 
					    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- Paper Dashboard Core javascript and methods for Demo purpose -->
 | 
				
			||||||
 | 
					    <!-- <script src="{{context}}/static/js/dash.js"></script> -->
 | 
				
			||||||
 | 
						<script src="{{context}}/static/js/default.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<!-- Paper Dashboard DEMO methods, don't include it in your project! -->
 | 
				
			||||||
 | 
						<script src="{{context}}/static/js/dashboard.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<script type="text/javascript">
 | 
				
			||||||
 | 
					    	$(document).ready(function(){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        	dashboard.initChartist();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    	});
 | 
				
			||||||
 | 
						</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					<H1>Upgrade</Hi>
 | 
				
			||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					<H1>User</H1>
 | 
				
			||||||
@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#script_dir=`dirname $0`
 | 
				
			||||||
 | 
					#cd $script_dir
 | 
				
			||||||
 | 
					#/bin/bash -c ". activate sandbox; exec /bin/bash -i"
 | 
				
			||||||
 | 
					`source activate sandbox`
 | 
				
			||||||
 | 
					export PYTHONPATH=$PWD/src
 | 
				
			||||||
 | 
					python src/utils/agents/data-collector.py --path /Users/michaelmead/Documents/Programming/monitor/config.json --title "Seekers Dashboard"
 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue