From ad0bdd2a9c26ac64b79f87864c7ae20f0c7f3adf Mon Sep 17 00:00:00 2001 From: James Inman Date: Wed, 15 Oct 2014 10:55:09 +0100 Subject: [PATCH 01/41] Adding check for a valid encryption context to MailerFactory. --- PHPCI/Helper/MailerFactory.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/PHPCI/Helper/MailerFactory.php b/PHPCI/Helper/MailerFactory.php index b0ec4860..4eb57c13 100644 --- a/PHPCI/Helper/MailerFactory.php +++ b/PHPCI/Helper/MailerFactory.php @@ -28,11 +28,19 @@ class MailerFactory */ public function getSwiftMailerFromConfig() { + $encryptionType = $this->getMailConfig('smtp_encryption'); + + // Workaround issue where smtp_encryption could == 1 in the past by + // checking it is a valid transport + if ($encryptionType && !in_array($encryptionType, stream_get_transports())) { + $encryptionType = null; + } + /** @var \Swift_SmtpTransport $transport */ $transport = \Swift_SmtpTransport::newInstance( $this->getMailConfig('smtp_address'), $this->getMailConfig('smtp_port'), - $this->getMailConfig('smtp_encryption') + $encryptionType ); $transport->setUsername($this->getMailConfig('smtp_username')); $transport->setPassword($this->getMailConfig('smtp_password')); From 0b394ac5116bd564b371ca016040defa6c769bab Mon Sep 17 00:00:00 2001 From: James Inman Date: Wed, 15 Oct 2014 11:05:04 +0100 Subject: [PATCH 02/41] Fixing support for SMTP encryption. Closes #614 Closes #619 --- PHPCI/Controller/SettingsController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PHPCI/Controller/SettingsController.php b/PHPCI/Controller/SettingsController.php index b8dcb556..af3cf727 100644 --- a/PHPCI/Controller/SettingsController.php +++ b/PHPCI/Controller/SettingsController.php @@ -220,8 +220,8 @@ class SettingsController extends Controller $field->setContainerClass('form-group'); $form->addField($field); - $field = new Form\Element\Checkbox('smtp_encryption'); - $field->setCheckedValue(1); + $field = new Form\Element\Select('smtp_encryption'); + $field->setOptions(['' => 'None', 'tls' => 'TLS', 'ssl' => 'SSL']); $field->setRequired(false); $field->setLabel('Use SMTP encryption?'); $field->setContainerClass('form-group'); From f76a186824c76cc5b86df847c50b3be60a59b463 Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Thu, 16 Oct 2014 15:47:20 +0100 Subject: [PATCH 03/41] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 9bdef198..2d245db2 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,9 @@ PHPCI is a free and open source (BSD License) continuous integration tool specif [![Build Status](http://phpci.block8.net/build-status/image/2?branch=master)](http://phpci.block8.net/build-status/view/2?branch=master) +**Chat Room** +We have a chat room for discussing PHPCI, you can access it here: [![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/Block8/PHPCI?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge) + ##What it does: * Clones your project from Github, Bitbucket or a local path * Allows you to set up and tear down test databases. From 259f76b23b97c52c588748f018afad79362ca867 Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Thu, 16 Oct 2014 15:47:33 +0100 Subject: [PATCH 04/41] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2d245db2..e2c155fa 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ PHPCI is a free and open source (BSD License) continuous integration tool specif [![Build Status](http://phpci.block8.net/build-status/image/2?branch=master)](http://phpci.block8.net/build-status/view/2?branch=master) **Chat Room** + We have a chat room for discussing PHPCI, you can access it here: [![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/Block8/PHPCI?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge) ##What it does: From 2a9dda7526e62bf1e9bf062f8e4bec939f9ce685 Mon Sep 17 00:00:00 2001 From: Stan Gumeniuk Date: Wed, 17 Sep 2014 14:59:44 +0400 Subject: [PATCH 05/41] Updating the PHP Code Sniffer UI plugin to fix the line number link. --- public/assets/js/build-plugins/phpcs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/assets/js/build-plugins/phpcs.js b/public/assets/js/build-plugins/phpcs.js index ce302965..edd420f0 100644 --- a/public/assets/js/build-plugins/phpcs.js +++ b/public/assets/js/build-plugins/phpcs.js @@ -49,7 +49,7 @@ var phpcsPlugin = PHPCI.UiPlugin.extend({ if (PHPCI.fileLinkTemplate) { var fileLink = PHPCI.fileLinkTemplate.replace('{FILE}', file); - fileLink = fileLink.replace('{LINE}', errors[i].line_start); + fileLink = fileLink.replace('{LINE}', errors[i].line); file = '' + file + ''; } From 5683fa37dc188f5b60698085f73b49723e480299 Mon Sep 17 00:00:00 2001 From: Schorsch3000 Date: Thu, 2 Oct 2014 22:57:36 +0200 Subject: [PATCH 06/41] Added Gulp JS plugin. Closes #606 --- PHPCI/Plugin/Gulp.php | 85 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 PHPCI/Plugin/Gulp.php diff --git a/PHPCI/Plugin/Gulp.php b/PHPCI/Plugin/Gulp.php new file mode 100644 index 00000000..b79fdbfc --- /dev/null +++ b/PHPCI/Plugin/Gulp.php @@ -0,0 +1,85 @@ + +* @package PHPCI +* @subpackage Plugins +*/ +class Gulp implements \PHPCI\Plugin +{ + protected $directory; + protected $task; + protected $preferDist; + protected $phpci; + protected $build; + protected $gulp; + protected $gulpfile; + + public function __construct(Builder $phpci, Build $build, array $options = array()) + { + $path = $phpci->buildPath; + $this->build = $build; + $this->phpci = $phpci; + $this->directory = $path; + $this->task = null; + $this->gulp = $this->phpci->findBinary('gulp'); + $this->gulpfile = 'gulpfile.js'; + + // Handle options: + if (isset($options['directory'])) { + $this->directory = $path . '/' . $options['directory']; + } + + if (isset($options['task'])) { + $this->task = $options['task']; + } + + if (isset($options['gulp'])) { + $this->gulp = $options['gulp']; + } + + if (isset($options['gulpfile'])) { + $this->gulpfile = $options['gulpfile']; + } + } + + /** + * Executes gulp and runs a specified command (e.g. install / update) + */ + public function execute() + { + // if npm does not work, we cannot use gulp, so we return false + $cmd = 'cd %s && npm install'; + if (IS_WIN) { + $cmd = 'cd /d %s && npm install'; + } + if (!$this->phpci->executeCommand($cmd, $this->directory)) { + return false; + } + + // build the gulp command + $cmd = 'cd %s && ' . $this->gulp; + if (IS_WIN) { + $cmd = 'cd /d %s && ' . $this->gulp; + } + $cmd .= ' --no-color'; + $cmd .= ' --gulpfile %s'; + $cmd .= ' %s'; // the task that will be executed + + // and execute it + return $this->phpci->executeCommand($cmd, $this->directory, $this->gulpfile, $this->task); + } +} From abd50bf4bd6b27e1dda340fd545dbe2a8883af2b Mon Sep 17 00:00:00 2001 From: Adam Cooper Date: Tue, 16 Sep 2014 12:27:32 +0100 Subject: [PATCH 07/41] Adding a branch filter to the project page, allowing users to view builds from a specific branch. Closes #600 --- PHPCI/Controller/ProjectController.php | 43 ++++++++++++++++-------- PHPCI/Store/ProjectStore.php | 21 +++++++++++- PHPCI/View/Project/view.phtml | 45 ++++++++++++++++++++++---- public/assets/css/phpci.css | 2 +- 4 files changed, 88 insertions(+), 23 deletions(-) diff --git a/PHPCI/Controller/ProjectController.php b/PHPCI/Controller/ProjectController.php index 56dc9ed0..dbeee05f 100644 --- a/PHPCI/Controller/ProjectController.php +++ b/PHPCI/Controller/ProjectController.php @@ -62,7 +62,7 @@ class ProjectController extends \PHPCI\Controller /** * View a specific project. */ - public function view($projectId) + public function view($projectId, $branch = '') { $project = $this->projectStore->getById($projectId); @@ -72,18 +72,20 @@ class ProjectController extends \PHPCI\Controller $per_page = 10; $page = $this->getParam('p', 1); - $builds = $this->getLatestBuildsHtml($projectId, (($page - 1) * $per_page)); + $builds = $this->getLatestBuildsHtml($projectId, urldecode($branch), (($page - 1) * $per_page)); $pages = $builds[1] == 0 ? 1 : ceil($builds[1] / $per_page); if ($page > $pages) { throw new NotFoundException('Page with number: ' . $page . ' not found'); } - $this->view->builds = $builds[0]; - $this->view->total = $builds[1]; - $this->view->project = $project; - $this->view->page = $page; - $this->view->pages = $pages; + $this->view->builds = $builds[0]; + $this->view->total = $builds[1]; + $this->view->project = $project; + $this->view->branch = urldecode($branch); + $this->view->branches = $this->projectStore->getKnownBranches($projectId); + $this->view->page = $page; + $this->view->pages = $pages; $this->config->set('page_title', $project->getTitle()); @@ -93,16 +95,20 @@ class ProjectController extends \PHPCI\Controller /** * Create a new pending build for a project. */ - public function build($projectId) + public function build($projectId, $branch = '') { /* @var \PHPCI\Model\Project $project */ $project = $this->projectStore->getById($projectId); + if (empty($branch)) { + $branch = $project->getBranch(); + } + if (empty($project)) { throw new NotFoundException('Project with id: ' . $projectId . ' not found'); } - $build = $this->buildService->createBuild($project, null, null, $_SESSION['user']->getEmail()); + $build = $this->buildService->createBuild($project, null, urldecode($branch), $_SESSION['user']->getEmail()); header('Location: '.PHPCI_URL.'build/view/' . $build->getId()); exit; @@ -127,18 +133,27 @@ class ProjectController extends \PHPCI\Controller /** * AJAX get latest builds. */ - public function builds($projectId) + public function builds($projectId, $branch = '') { - $builds = $this->getLatestBuildsHtml($projectId); + $builds = $this->getLatestBuildsHtml($projectId, urldecode($branch)); die($builds[0]); } /** - * Render latest builds for project as HTML table. - */ - protected function getLatestBuildsHtml($projectId, $start = 0) + * Render latest builds for project as HTML table. + * + * @param $projectId + * @param string $branch A urldecoded branch name. + * @param int $start + * @return array + */ + protected function getLatestBuildsHtml($projectId, $branch = '', $start = 0) { $criteria = array('project_id' => $projectId); + if (!empty($branch)) { + $criteria['branch'] = $branch; + } + $order = array('id' => 'DESC'); $builds = $this->buildStore->getWhere($criteria, 10, $start, array(), $order); $view = new b8\View('BuildsTable'); diff --git a/PHPCI/Store/ProjectStore.php b/PHPCI/Store/ProjectStore.php index 0596d0c9..6f81b8f4 100644 --- a/PHPCI/Store/ProjectStore.php +++ b/PHPCI/Store/ProjectStore.php @@ -9,6 +9,7 @@ namespace PHPCI\Store; +use b8\Database; use PHPCI\Store\Base\ProjectStoreBase; /** @@ -19,5 +20,23 @@ use PHPCI\Store\Base\ProjectStoreBase; */ class ProjectStore extends ProjectStoreBase { - // This class has been left blank so that you can modify it - changes in this file will not be overwritten. + public function getKnownBranches($projectId) + { + $query = 'SELECT DISTINCT branch from build WHERE project_id = :pid'; + $stmt = Database::getConnection('read')->prepare($query); + $stmt->bindValue(':pid', $projectId); + + if ($stmt->execute()) { + $res = $stmt->fetchAll(\PDO::FETCH_ASSOC); + + $map = function ($item) { + return $item['branch']; + }; + $rtn = array_map($map, $res); + + return $rtn; + } else { + return array(); + } + } } diff --git a/PHPCI/View/Project/view.phtml b/PHPCI/View/Project/view.phtml index 3aeb75a7..704a6ba5 100644 --- a/PHPCI/View/Project/view.phtml +++ b/PHPCI/View/Project/view.phtml @@ -1,4 +1,23 @@ -

getTitle()); ?>

+

+ getTitle()); ?> + +
+ + +
+

@@ -9,7 +28,10 @@
- Build Now + + Build Now + User()->getIsAdmin()): ?> Edit Project @@ -60,8 +82,15 @@
+ + + +
-

Builds

+
+ +

Builds

+
@@ -83,8 +112,10 @@ print '
    '; + $project_url = PHPCI_URL . 'project/view/' . $project->getId() . ((!empty($branch)) ? '/' . urlencode($branch) : ''); + if ($page > 1) { - print '
  • « Prev
  • '; + print '
  • « Prev
  • '; } if ($pages > 1) { @@ -93,13 +124,13 @@ if ($i == $page) { print '
  • ' . $i . '
  • '; } else { - print '
  • ' . $i . '
  • '; + print '
  • ' . $i . '
  • '; } } } if ($page < $pages) { - print '
  • Next »
  • '; + print '
  • Next »
  • '; } print '
'; @@ -115,7 +146,7 @@ setInterval(function() { $.ajax({ - url: 'project/builds/getId(); ?>', + url: 'project/builds/getId() . ((!empty($branch)) ? '/' . urlencode($branch) : ''); ?>', success: function (data) { $('#latest-builds').html(data); diff --git a/public/assets/css/phpci.css b/public/assets/css/phpci.css index a4fa440a..faff0ad0 100644 --- a/public/assets/css/phpci.css +++ b/public/assets/css/phpci.css @@ -98,4 +98,4 @@ ul.pagination { ul.pagination > li > span:focus { color: #333; background-color: #fff; - } \ No newline at end of file + } From 680412cab7d8f0a55b873e082c7c75189a6c1031 Mon Sep 17 00:00:00 2001 From: Stefan Date: Fri, 12 Sep 2014 12:00:46 +0200 Subject: [PATCH 08/41] Add new variable %BRANCH% to interpolator. Closes #597 --- PHPCI/Helper/BuildInterpolator.php | 1 + 1 file changed, 1 insertion(+) diff --git a/PHPCI/Helper/BuildInterpolator.php b/PHPCI/Helper/BuildInterpolator.php index 90b78681..216194ce 100644 --- a/PHPCI/Helper/BuildInterpolator.php +++ b/PHPCI/Helper/BuildInterpolator.php @@ -32,6 +32,7 @@ class BuildInterpolator $this->interpolation_vars = array(); $this->interpolation_vars['%PHPCI%'] = 1; $this->interpolation_vars['%COMMIT%'] = $build->getCommitId(); + $this->interpolation_vars['%BRANCH%'] = $build->getBranch(); $this->interpolation_vars['%PROJECT%'] = $build->getProjectId(); $this->interpolation_vars['%BUILD%'] = $build->getId(); $this->interpolation_vars['%PROJECT_TITLE%'] = $build->getProjectTitle(); From 48bb51267aa6069a46e4fa482c2732778b5af07f Mon Sep 17 00:00:00 2001 From: Marco Vito Moscaritolo Date: Thu, 21 Aug 2014 22:18:01 +0200 Subject: [PATCH 09/41] Fixed webhook method docs. Closes #565 --- PHPCI/Controller/WebhookController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PHPCI/Controller/WebhookController.php b/PHPCI/Controller/WebhookController.php index 4d4501ed..4884edf9 100644 --- a/PHPCI/Controller/WebhookController.php +++ b/PHPCI/Controller/WebhookController.php @@ -73,7 +73,7 @@ class WebhookController extends \PHPCI\Controller } /** - * Called by POSTing to /git/webhook/?branch=&commit= + * Called by POSTing to /webhook/git/?branch=&commit= * * @param string $project */ From 4240a65983b370fe7398224956fe5d5fa9fbc37f Mon Sep 17 00:00:00 2001 From: Tobias van Beek Date: Mon, 20 Oct 2014 22:17:40 +0200 Subject: [PATCH 10/41] Add .htaccess example Rename htaccess.example to .htaccess.dist Following the recommendation Close #544 --- public/.htaccess.dist | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 public/.htaccess.dist diff --git a/public/.htaccess.dist b/public/.htaccess.dist new file mode 100644 index 00000000..ef528060 --- /dev/null +++ b/public/.htaccess.dist @@ -0,0 +1,7 @@ + + RewriteEngine On + RewriteBase / + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule . /index.php [L] + From a143386a5c38695133978ccdc504fa485fc8e138 Mon Sep 17 00:00:00 2001 From: Stefan Date: Mon, 20 Oct 2014 11:54:35 +0200 Subject: [PATCH 11/41] Fix profile update - missing parameter in function call. Fixes #629 Fixes #590 Fixes #591 --- PHPCI/Controller/UserController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PHPCI/Controller/UserController.php b/PHPCI/Controller/UserController.php index 2a675e9d..c54ee3e8 100644 --- a/PHPCI/Controller/UserController.php +++ b/PHPCI/Controller/UserController.php @@ -64,7 +64,7 @@ class UserController extends Controller $email = $this->getParam('email', null); $password = $this->getParam('password', null); - $_SESSION['user'] = $this->userService->updateUser($name, $email, $password); + $_SESSION['user'] = $this->userService->updateUser($user, $name, $email, $password); } $form = new Form(); From cce3ab1006fc612ec34804fdcc1af74f0a4c8830 Mon Sep 17 00:00:00 2001 From: Michael Schramm Date: Wed, 12 Nov 2014 11:50:42 +0100 Subject: [PATCH 12/41] Fix parallel lint directory to include build path. Closes #645 directory should be inside of build path --- PHPCI/Plugin/PhpParallelLint.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PHPCI/Plugin/PhpParallelLint.php b/PHPCI/Plugin/PhpParallelLint.php index 30398995..3787fd0c 100644 --- a/PHPCI/Plugin/PhpParallelLint.php +++ b/PHPCI/Plugin/PhpParallelLint.php @@ -48,7 +48,7 @@ class PhpParallelLint implements \PHPCI\Plugin $this->ignore = $this->phpci->ignore; if (isset($options['directory'])) { - $this->directory = $options['directory']; + $this->directory = $phpci->buildPath.$options['directory']; } if (isset($options['ignore'])) { From c58ee2a368e3491805e1997b516f78b216fdb129 Mon Sep 17 00:00:00 2001 From: Jimmy Cleuren Date: Sat, 18 Oct 2014 16:52:07 +0200 Subject: [PATCH 13/41] Add a commit message to builds imported via PollCommand. Closes #626 --- PHPCI/Command/PollCommand.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/PHPCI/Command/PollCommand.php b/PHPCI/Command/PollCommand.php index 61fe0909..f108a35b 100644 --- a/PHPCI/Command/PollCommand.php +++ b/PHPCI/Command/PollCommand.php @@ -75,6 +75,7 @@ class PollCommand extends Command $last_commit = $commits['body'][0]['sha']; $last_committer = $commits['body'][0]['commit']['committer']['email']; + $message = $commits['body'][0]['commit']['message']; $this->logger->info("Last commit to github for " . $project->getTitle() . " is " . $last_commit); @@ -89,6 +90,7 @@ class PollCommand extends Command $build->setStatus(Build::STATUS_NEW); $build->setBranch($project->getBranch()); $build->setCreated(new \DateTime()); + $build->setCommitMessage($message); if (!empty($last_committer)) { $build->setCommitterEmail($last_committer); } From 297a04c82a6746392cf0e7161953cd2e505bef47 Mon Sep 17 00:00:00 2001 From: Wanderson Date: Thu, 16 Oct 2014 22:38:17 -0300 Subject: [PATCH 14/41] Add support for skipped tests in TAP Parser. Closes #624 See #611 --- PHPCI/Plugin/Util/TapParser.php | 3 +++ Tests/PHPCI/Plugin/Util/TapParserTest.php | 26 +++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 Tests/PHPCI/Plugin/Util/TapParserTest.php diff --git a/PHPCI/Plugin/Util/TapParser.php b/PHPCI/Plugin/Util/TapParser.php index 5b099b03..1aa25348 100644 --- a/PHPCI/Plugin/Util/TapParser.php +++ b/PHPCI/Plugin/Util/TapParser.php @@ -8,6 +8,7 @@ class TapParser const TEST_LINE_PATTERN = '/(ok|not ok)\s+[0-9]+\s+\-\s+([^\n]+)::([^\n]+)/'; const TEST_MESSAGE_PATTERN = '/message\:\s+\'([^\']+)\'/'; const TEST_COVERAGE_PATTERN = '/Generating code coverage report/'; + const TEST_SKIP_PATTERN = '/ok\s+[0-9]+\s+\-\s+#\s+SKIP/'; /** * @var string @@ -92,6 +93,8 @@ class TapParser ); $rtn[] = $item; + } elseif (preg_match(self::TEST_SKIP_PATTERN, $line, $matches)) { + $rtn[] = array('message' => 'SKIP'); } elseif (preg_match(self::TEST_MESSAGE_PATTERN, $line, $matches)) { $rtn[count($rtn) - 1]['message'] = $matches[1]; } diff --git a/Tests/PHPCI/Plugin/Util/TapParserTest.php b/Tests/PHPCI/Plugin/Util/TapParserTest.php new file mode 100644 index 00000000..c4438b79 --- /dev/null +++ b/Tests/PHPCI/Plugin/Util/TapParserTest.php @@ -0,0 +1,26 @@ +parse(); + + $this->assertEquals(array( + array('pass' => true, 'suite' => 'SomeTest', 'test' => 'testAnother'), + array('message' => 'SKIP'), + ), $result); + + $this->assertEquals(0, $parser->getTotalFailures()); + } +} From 0e237d7b6b1ad71d117ea21ae69325dbed6797fc Mon Sep 17 00:00:00 2001 From: Stefan Date: Wed, 3 Sep 2014 18:09:54 +0200 Subject: [PATCH 15/41] Make IRC plugin join channel before attempting to send a message. Closes #579 --- PHPCI/Plugin/Irc.php | 1 + 1 file changed, 1 insertion(+) diff --git a/PHPCI/Plugin/Irc.php b/PHPCI/Plugin/Irc.php index fd774b8c..cdc72491 100644 --- a/PHPCI/Plugin/Irc.php +++ b/PHPCI/Plugin/Irc.php @@ -62,6 +62,7 @@ class Irc implements \PHPCI\Plugin $sock = fsockopen($this->server, $this->port); fputs($sock, 'USER ' . $this->nick . ' phptesting.org ' . $this->nick . ' :' . $this->nick . "\r\n"); fputs($sock, 'NICK ' . $this->nick . "\r\n"); + fputs($sock, 'JOIN ' . $this->room . "\r\n"); fputs($sock, 'PRIVMSG ' . $this->room . ' :' . $msg . "\r\n"); while (fgets($sock)) { From b4493cfa0349e37c4c94e07d396ed8a175d06c56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20HULARD?= Date: Fri, 1 Aug 2014 11:09:04 +0200 Subject: [PATCH 16/41] Update the create project form to only normalise project names if a format is provided for the project type. Closes #538 --- public/assets/js/phpci.js | 96 +++++++++++++++++++++------------------ 1 file changed, 52 insertions(+), 44 deletions(-) diff --git a/public/assets/js/phpci.js b/public/assets/js/phpci.js index ef909388..ab52973a 100644 --- a/public/assets/js/phpci.js +++ b/public/assets/js/phpci.js @@ -91,7 +91,7 @@ var PHPCIConfirmDialog = Class.extend({ * @var {bool} Determines whether the dialog has been confirmed */ confirmed: false, - + /** * @param {PHPCIConfirmDialogOptions} options */ @@ -241,28 +241,35 @@ function setupProjectForm() { $('.github-container').hide(); - $('#element-reference').change(function() - { - var el = $(this); - var val = el.val(); + $('#element-reference').change(function() + { + var el = $(this); + var val = el.val(); + var type = $('#element-type').val(); + var acceptable = { + 'github': { + 'ssh': /git\@github\.com\:([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)\.git/, + 'git': /git\:\/\/github.com\/([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)\.git/, + 'http': /https\:\/\/github\.com\/([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)(\.git)?/ + }, + 'bitbucket': { + 'ssh': /git\@bitbucket\.org\:([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)\.git/, + 'http': /https\:\/\/[a-zA-Z0-9_\-]+\@bitbucket.org\/([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)\.git/, + 'anon': /https\:\/\/bitbucket.org\/([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)(\.git)?/ + } - var acceptable = { - 'github_ssh': /git\@github\.com\:([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)\.git/, - 'github_git': /git\:\/\/github.com\/([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)\.git/, - 'github_http': /https\:\/\/github\.com\/([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)(\.git)?/, - 'bb_ssh': /git\@bitbucket\.org\:([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)\.git/, - 'bb_http': /https\:\/\/[a-zA-Z0-9_\-]+\@bitbucket.org\/([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)\.git/, - 'bb_anon': /https\:\/\/bitbucket.org\/([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)(\.git)?/ - }; + }; - for(var i in acceptable) { - if(val.match(acceptable[i])) { - el.val(val.replace(acceptable[i], '$1')); - } - } - }); + if( acceptable[type] !== undefined ) { + for(var i in acceptable[type]) { + if(val.match(acceptable[type][i])) { + el.val(val.replace(acceptable[type][i], '$1')); + } + } + } + }); - $('#element-type').change(function() { + $('#element-type').change(function() { if ($(this).val() == 'github') { $('#loading').show(); @@ -272,7 +279,7 @@ function setupProjectForm() success: function (data) { $('#loading').hide(); - if (data.repos) { + if (data && data.repos) { $('#element-github').empty(); for (var i in data.repos) { @@ -288,32 +295,33 @@ function setupProjectForm() } else { $('.github-container').slideUp(); } - }); + $('#element-reference').trigger('change'); + }); - $('#element-github').change(function() - { - var val = $('#element-github').val(); + $('#element-github').change(function() + { + var val = $('#element-github').val(); - if(val != 'choose') { - $('#element-type').val('github'); - $('#element-reference').val(val); + if(val != 'choose') { + $('#element-type').val('github'); + $('#element-reference').val(val); - $('label[for=element-reference]').hide(); - $('label[for=element-type]').hide(); - $('#element-reference').hide(); - $('#element-type').hide(); - $('#element-token').val(window.github_token); - $('#element-title').val(val); - } - else { - $('label[for=element-reference]').show(); - $('label[for=element-type]').show(); - $('#element-reference').show(); - $('#element-type').show(); - $('#element-reference').val(''); - $('#element-token').val(''); - } - }); + $('label[for=element-reference]').hide(); + $('label[for=element-type]').hide(); + $('#element-reference').hide(); + $('#element-type').hide(); + $('#element-token').val(window.github_token); + $('#element-title').val(val); + } + else { + $('label[for=element-reference]').show(); + $('label[for=element-type]').show(); + $('#element-reference').show(); + $('#element-type').show(); + $('#element-reference').val(''); + $('#element-token').val(''); + } + }); } var PHPCIObject = Class.extend({ From f85274bb8802faef337db495352fe85bfd000159 Mon Sep 17 00:00:00 2001 From: Sam Van der Borght Date: Wed, 16 Jul 2014 14:51:21 +0200 Subject: [PATCH 17/41] Remove un-necessary and incorrect validator for branch field on the project add/edit form. Closes #506 Fixes #580 Fixes #562 Fixes #573 Fixes #633 --- PHPCI/Controller/ProjectController.php | 1 - 1 file changed, 1 deletion(-) diff --git a/PHPCI/Controller/ProjectController.php b/PHPCI/Controller/ProjectController.php index dbeee05f..c4f15890 100644 --- a/PHPCI/Controller/ProjectController.php +++ b/PHPCI/Controller/ProjectController.php @@ -337,7 +337,6 @@ class ProjectController extends \PHPCI\Controller $form->addField($field); $field = Form\Element\Text::create('branch', 'Default branch name', true); - $field->setValidator($this->getReferenceValidator($values)); $field->setClass('form-control')->setContainerClass('form-group')->setValue('master'); $form->addField($field); From 8bd6e1683c3da7ad0255244ed105e534a06e7b1f Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Mon, 1 Dec 2014 15:32:50 +0000 Subject: [PATCH 18/41] Remove infinite recursion when using an array of directories in PHP Unit config. Fixes #596 --- PHPCI/Plugin/PhpUnit.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PHPCI/Plugin/PhpUnit.php b/PHPCI/Plugin/PhpUnit.php index 3bb1c1c7..c643416b 100644 --- a/PHPCI/Plugin/PhpUnit.php +++ b/PHPCI/Plugin/PhpUnit.php @@ -129,7 +129,7 @@ class PhpUnit implements PHPCI\Plugin, PHPCI\ZeroConfigPlugin // Run any dirs next. Again this can be either a single value or an array. if ($this->directory !== null) { - $success &= $this->runDir(); + $success &= $this->runDir($this->directory); } $tapString = $this->phpci->getLastOutput(); @@ -182,10 +182,10 @@ class PhpUnit implements PHPCI\Plugin, PHPCI\ZeroConfigPlugin } } - protected function runDir() + protected function runDir($directory) { - if (is_array($this->directory)) { - return $this->recurseArg($this->directory, array($this, "runDir")); + if (is_array($directory)) { + return $this->recurseArg($directory, array($this, "runDir")); } else { $curdir = getcwd(); chdir($this->phpci->buildPath); @@ -198,7 +198,7 @@ class PhpUnit implements PHPCI\Plugin, PHPCI\ZeroConfigPlugin } $cmd = $phpunit . ' --tap %s "%s"'; - $success = $this->phpci->executeCommand($cmd, $this->args, $this->phpci->buildPath . $this->directory); + $success = $this->phpci->executeCommand($cmd, $this->args, $this->phpci->buildPath . $directory); chdir($curdir); return $success; } From e5cc3a532b18fcc606abc83e04f01cf414e38598 Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Mon, 1 Dec 2014 15:39:15 +0000 Subject: [PATCH 19/41] Updating PHP Copy/Paste Detector to new parameter format Fixes #669 --- PHPCI/Plugin/PhpCpd.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PHPCI/Plugin/PhpCpd.php b/PHPCI/Plugin/PhpCpd.php index 39b6e046..18fb5f86 100644 --- a/PHPCI/Plugin/PhpCpd.php +++ b/PHPCI/Plugin/PhpCpd.php @@ -90,7 +90,7 @@ class PhpCpd implements \PHPCI\Plugin $tmpfilename = tempnam('/tmp', 'phpcpd'); - $cmd = $phpcpd . ' --log-pmd="%s" %s "%s"'; + $cmd = $phpcpd . ' --log-pmd "%s" %s "%s"'; $success = $this->phpci->executeCommand($cmd, $tmpfilename, $ignore, $this->path); print $this->phpci->getLastOutput(); From 1d55ae11b283bb07f87bb44b7f65e17c83b37928 Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Mon, 1 Dec 2014 15:48:22 +0000 Subject: [PATCH 20/41] Adding support for Github Content-Type: application/json web hooks. See #668 --- PHPCI/Controller/WebhookController.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/PHPCI/Controller/WebhookController.php b/PHPCI/Controller/WebhookController.php index 4884edf9..fb3a76d7 100644 --- a/PHPCI/Controller/WebhookController.php +++ b/PHPCI/Controller/WebhookController.php @@ -52,11 +52,23 @@ class WebhookController extends \PHPCI\Controller */ public function bitbucket($project) { - $payload = json_decode($this->getParam('payload'), true); + switch ($_SERVER['CONTENT_TYPE']) { + case 'application/json': + $payload = json_decode(file_get_contents('php://input'), true); + break; + + case 'application/x-www-form-urlencoded': + $payload = json_decode($this->getParam('payload'), true); + break; + + default: + header('HTTP/1.1 400 Bad Request'); + die('Request content type not supported'); + } + foreach ($payload['commits'] as $commit) { try { - $email = $commit['raw_author']; $email = substr($email, 0, strpos($email, '>')); $email = substr($email, strpos($email, '<') + 1); From a92585fcb8f00a85aa7aee89e6c6e9babb8d7287 Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Mon, 1 Dec 2014 15:56:33 +0000 Subject: [PATCH 21/41] Updating session variables to add phpci_ prefix. Fixes #652 --- PHPCI/Application.php | 10 +++++----- PHPCI/Controller.php | 2 +- PHPCI/Controller/BuildController.php | 2 +- PHPCI/Controller/PluginController.php | 6 +++--- PHPCI/Controller/ProjectController.php | 7 ++++--- PHPCI/Controller/SessionController.php | 16 +++++++++------- PHPCI/Controller/UserController.php | 10 +++++----- PHPCI/Helper/User.php | 2 +- 8 files changed, 29 insertions(+), 26 deletions(-) diff --git a/PHPCI/Application.php b/PHPCI/Application.php index 3e15686e..646645af 100644 --- a/PHPCI/Application.php +++ b/PHPCI/Application.php @@ -29,15 +29,15 @@ class Application extends b8\Application // Inlined as a closure to fix "using $this when not in object context" on 5.3 $validateSession = function () { - if (!empty($_SESSION['user_id'])) { - $user = b8\Store\Factory::getStore('User')->getByPrimaryKey($_SESSION['user_id']); + if (!empty($_SESSION['phpci_user_id'])) { + $user = b8\Store\Factory::getStore('User')->getByPrimaryKey($_SESSION['phpci_user_id']); if ($user) { - $_SESSION['user'] = $user; + $_SESSION['phpci_user'] = $user; return true; } - unset($_SESSION['user_id']); + unset($_SESSION['phpci_user_id']); } return false; @@ -52,7 +52,7 @@ class Application extends b8\Application $response->setResponseCode(401); $response->setContent(''); } else { - $_SESSION['login_redirect'] = substr($request->getPath(), 1); + $_SESSION['phpci_login_redirect'] = substr($request->getPath(), 1); $response = new RedirectResponse($response); $response->setHeader('Location', PHPCI_URL.'session/login'); } diff --git a/PHPCI/Controller.php b/PHPCI/Controller.php index 1cc2633c..69be68ee 100644 --- a/PHPCI/Controller.php +++ b/PHPCI/Controller.php @@ -74,7 +74,7 @@ class Controller extends \b8\Controller protected function requireAdmin() { - if (!$_SESSION['user']->getIsAdmin()) { + if (!$_SESSION['phpci_user']->getIsAdmin()) { throw new ForbiddenException('You do not have permission to do that.'); } } diff --git a/PHPCI/Controller/BuildController.php b/PHPCI/Controller/BuildController.php index fb9957cb..79e9eb94 100644 --- a/PHPCI/Controller/BuildController.php +++ b/PHPCI/Controller/BuildController.php @@ -141,7 +141,7 @@ class BuildController extends \PHPCI\Controller */ public function delete($buildId) { - if (empty($_SESSION['user']) || !$_SESSION['user']->getIsAdmin()) { + if (empty($_SESSION['phpci_user']) || !$_SESSION['phpci_user']->getIsAdmin()) { throw new \Exception('You do not have permission to do that.'); } diff --git a/PHPCI/Controller/PluginController.php b/PHPCI/Controller/PluginController.php index 46cba7b5..5cbb662d 100644 --- a/PHPCI/Controller/PluginController.php +++ b/PHPCI/Controller/PluginController.php @@ -39,7 +39,7 @@ class PluginController extends \PHPCI\Controller public function index() { - if (!$_SESSION['user']->getIsAdmin()) { + if (!$_SESSION['phpci_user']->getIsAdmin()) { throw new \Exception('You do not have permission to do that.'); } @@ -67,7 +67,7 @@ class PluginController extends \PHPCI\Controller public function remove() { - if (!$_SESSION['user']->getIsAdmin()) { + if (!$_SESSION['phpci_user']->getIsAdmin()) { throw new \Exception('You do not have permission to do that.'); } @@ -88,7 +88,7 @@ class PluginController extends \PHPCI\Controller public function install() { - if (!$_SESSION['user']->getIsAdmin()) { + if (!$_SESSION['phpci_user']->getIsAdmin()) { throw new \Exception('You do not have permission to do that.'); } diff --git a/PHPCI/Controller/ProjectController.php b/PHPCI/Controller/ProjectController.php index c4f15890..1e2c68d1 100644 --- a/PHPCI/Controller/ProjectController.php +++ b/PHPCI/Controller/ProjectController.php @@ -108,7 +108,8 @@ class ProjectController extends \PHPCI\Controller throw new NotFoundException('Project with id: ' . $projectId . ' not found'); } - $build = $this->buildService->createBuild($project, null, urldecode($branch), $_SESSION['user']->getEmail()); + $email = $_SESSION['phpci_user']->getEmail(); + $build = $this->buildService->createBuild($project, null, urldecode($branch), $email); header('Location: '.PHPCI_URL.'build/view/' . $build->getId()); exit; @@ -119,7 +120,7 @@ class ProjectController extends \PHPCI\Controller */ public function delete($projectId) { - if (!$_SESSION['user']->getIsAdmin()) { + if (!$_SESSION['phpci_user']->getIsAdmin()) { throw new ForbiddenException('You do not have permission to do that.'); } @@ -223,7 +224,7 @@ class ProjectController extends \PHPCI\Controller */ public function edit($projectId) { - if (!$_SESSION['user']->getIsAdmin()) { + if (!$_SESSION['phpci_user']->getIsAdmin()) { throw new ForbiddenException('You do not have permission to do that.'); } diff --git a/PHPCI/Controller/SessionController.php b/PHPCI/Controller/SessionController.php index 4b4f4fc9..a9b60333 100644 --- a/PHPCI/Controller/SessionController.php +++ b/PHPCI/Controller/SessionController.php @@ -42,7 +42,7 @@ class SessionController extends \PHPCI\Controller $user = $this->userStore->getByEmail($this->getParam('email')); if ($user && password_verify($this->getParam('password', ''), $user->getHash())) { - $_SESSION['user_id'] = $user->getId(); + $_SESSION['phpci_user_id'] = $user->getId(); header('Location: ' . $this->getLoginRedirect()); die; } else { @@ -84,7 +84,9 @@ class SessionController extends \PHPCI\Controller */ public function logout() { - $_SESSION = array(); + unset($_SESSION['phpci_user']); + unset($_SESSION['phpci_user_id']); + session_destroy(); header('Location: ' . PHPCI_URL); die; @@ -147,8 +149,8 @@ MSG; $hash = password_hash($this->getParam('password'), PASSWORD_DEFAULT); $user->setHash($hash); - $_SESSION['user'] = $this->userStore->save($user); - $_SESSION['user_id'] = $user->getId(); + $_SESSION['phpci_user'] = $this->userStore->save($user); + $_SESSION['phpci_user_id'] = $user->getId(); header('Location: ' . PHPCI_URL); die; @@ -164,9 +166,9 @@ MSG; { $rtn = PHPCI_URL; - if (!empty($_SESSION['login_redirect'])) { - $rtn .= $_SESSION['login_redirect']; - $_SESSION['login_redirect'] = null; + if (!empty($_SESSION['phpci_login_redirect'])) { + $rtn .= $_SESSION['phpci_login_redirect']; + $_SESSION['phpci_login_redirect'] = null; } return $rtn; diff --git a/PHPCI/Controller/UserController.php b/PHPCI/Controller/UserController.php index c54ee3e8..b6a5300a 100644 --- a/PHPCI/Controller/UserController.php +++ b/PHPCI/Controller/UserController.php @@ -56,7 +56,7 @@ class UserController extends Controller public function profile() { - $user = $_SESSION['user']; + $user = $_SESSION['phpci_user']; $values = $user->getDataArray(); if ($this->request->getMethod() == 'POST') { @@ -64,7 +64,7 @@ class UserController extends Controller $email = $this->getParam('email', null); $password = $this->getParam('password', null); - $_SESSION['user'] = $this->userService->updateUser($user, $name, $email, $password); + $_SESSION['phpci_user'] = $this->userService->updateUser($user, $name, $email, $password); } $form = new Form(); @@ -109,7 +109,7 @@ class UserController extends Controller */ public function add() { - if (!$_SESSION['user']->getIsAdmin()) { + if (!$_SESSION['phpci_user']->getIsAdmin()) { throw new ForbiddenException('You do not have permission to do that.'); } @@ -151,7 +151,7 @@ class UserController extends Controller */ public function edit($userId) { - if (!$_SESSION['user']->getIsAdmin()) { + if (!$_SESSION['phpci_user']->getIsAdmin()) { throw new ForbiddenException('You do not have permission to do that.'); } @@ -244,7 +244,7 @@ class UserController extends Controller */ public function delete($userId) { - if (!$_SESSION['user']->getIsAdmin()) { + if (!$_SESSION['phpci_user']->getIsAdmin()) { throw new ForbiddenException('You do not have permission to do that.'); } diff --git a/PHPCI/Helper/User.php b/PHPCI/Helper/User.php index 065deacf..51f3de42 100644 --- a/PHPCI/Helper/User.php +++ b/PHPCI/Helper/User.php @@ -19,7 +19,7 @@ class User { public function __call($method, $params = array()) { - $user = $_SESSION['user']; + $user = $_SESSION['phpci_user']; if (!is_object($user)) { return null; From 9ea37ffbb9299511dc34c4f7aeef430a34af8e36 Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Mon, 1 Dec 2014 16:03:35 +0000 Subject: [PATCH 22/41] Fixing user profile edit to display updated information after save. --- PHPCI/Controller/UserController.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/PHPCI/Controller/UserController.php b/PHPCI/Controller/UserController.php index b6a5300a..182cc3f0 100644 --- a/PHPCI/Controller/UserController.php +++ b/PHPCI/Controller/UserController.php @@ -57,7 +57,6 @@ class UserController extends Controller public function profile() { $user = $_SESSION['phpci_user']; - $values = $user->getDataArray(); if ($this->request->getMethod() == 'POST') { $name = $this->getParam('name', null); @@ -65,8 +64,11 @@ class UserController extends Controller $password = $this->getParam('password', null); $_SESSION['phpci_user'] = $this->userService->updateUser($user, $name, $email, $password); + $user = $_SESSION['phpci_user']; } + $values = $user->getDataArray(); + $form = new Form(); $form->setAction(PHPCI_URL.'user/profile'); $form->setMethod('POST'); From 1fae0a26af27f831cad9cdb58920b73e003c0aec Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Mon, 1 Dec 2014 16:18:59 +0000 Subject: [PATCH 23/41] Settings UI cleanup --- PHPCI/Controller/SettingsController.php | 1 - PHPCI/View/Settings/index.phtml | 105 ++++++++++++------------ 2 files changed, 51 insertions(+), 55 deletions(-) diff --git a/PHPCI/Controller/SettingsController.php b/PHPCI/Controller/SettingsController.php index af3cf727..3589cd5e 100644 --- a/PHPCI/Controller/SettingsController.php +++ b/PHPCI/Controller/SettingsController.php @@ -41,7 +41,6 @@ class SettingsController extends Controller $this->view->settings = $this->settings; $emailSettings = array(); - if (isset($this->settings['phpci']['email_settings'])) { $emailSettings = $this->settings['phpci']['email_settings']; } diff --git a/PHPCI/View/Settings/index.phtml b/PHPCI/View/Settings/index.phtml index 322206c4..9724053a 100644 --- a/PHPCI/View/Settings/index.phtml +++ b/PHPCI/View/Settings/index.phtml @@ -28,76 +28,73 @@

-
-
-
-

Github Application

+
+

Github Application

+
- +
+ - -

- Before you can start using Github, you need to sign in and grant PHPCI access to your account. -

- + $returnTo = PHPCI_URL . 'settings/github-callback'; + $githubUri = 'https://github.com/login/oauth/authorize?client_id='.$id.'&scope=repo&redirect_uri=' . $returnTo; + ?> + +

+ Before you can start using Github, you need to sign in and grant PHPCI access to your account. +

+ - -

- PHPCI is successfully linked to Github account - - - -

- -
+ +

+ PHPCI is successfully linked to Github account + + + +

+ +
-
- -
+
+ +
-
-
-
-

Where to find these...

-
+
+
+
+

Where to find these...

+
-
-

If you own the application you would like to use, you can find this information within your - applications settings area.

+
+

If you own the application you would like to use, you can find this information within your + applications settings area.

+
+
-
-
-
-

Email Settings

+
+
+

Email Settings

+
- -

- Before PHPCI can send build status emails, you need to configure your SMTP settings below. -

- +
+ +

+ Before PHPCI can send build status emails, you need to configure your SMTP settings below. +

+ -
+ -
- -
- -
- -
\ No newline at end of file From bd47766d631f2445950d0c57a7e7164611d46304 Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Mon, 1 Dec 2014 17:04:03 +0000 Subject: [PATCH 24/41] Allow PHPCI to mark builds as failed if the builder crashed, after a user-defined timeout. Limit to one build per project in RunCommand. Fixes #623 --- PHPCI/Builder.php | 10 +--- PHPCI/Command/DaemoniseCommand.php | 2 +- PHPCI/Command/RunCommand.php | 62 +++++++++++++++++++++++-- PHPCI/Controller/SettingsController.php | 53 +++++++++++++++++++++ PHPCI/View/Settings/index.phtml | 7 +++ 5 files changed, 120 insertions(+), 14 deletions(-) diff --git a/PHPCI/Builder.php b/PHPCI/Builder.php index 6246cc2f..69e23ff1 100644 --- a/PHPCI/Builder.php +++ b/PHPCI/Builder.php @@ -36,11 +36,6 @@ class Builder implements LoggerAwareInterface */ public $ignore = array(); - /** - * @var string - */ - protected $ciDir; - /** * @var string */ @@ -287,10 +282,7 @@ class Builder implements LoggerAwareInterface */ protected function setupBuild() { - $buildId = 'project' . $this->build->getProject()->getId() - . '-build' . $this->build->getId(); - $this->ciDir = dirname(dirname(__FILE__) . '/../') . '/'; - $this->buildPath = $this->ciDir . 'build/' . $buildId . '/'; + $this->buildPath = PHPCI_DIR . 'PHPCI/build/' . $this->build->getId() . '/'; $this->build->currentBuildPath = $this->buildPath; $this->interpolator->setupInterpolationVars( diff --git a/PHPCI/Command/DaemoniseCommand.php b/PHPCI/Command/DaemoniseCommand.php index 2850ff5f..d2f1f236 100644 --- a/PHPCI/Command/DaemoniseCommand.php +++ b/PHPCI/Command/DaemoniseCommand.php @@ -75,7 +75,7 @@ class DaemoniseCommand extends Command $this->run = true; $this->sleep = 0; $runner = new RunCommand($this->logger); - $runner->setBaxBuilds(1); + $runner->setMaxBuilds(1); $emptyInput = new ArgvInput(array()); diff --git a/PHPCI/Command/RunCommand.php b/PHPCI/Command/RunCommand.php index 6f7ea0d1..8149d362 100644 --- a/PHPCI/Command/RunCommand.php +++ b/PHPCI/Command/RunCommand.php @@ -9,6 +9,7 @@ namespace PHPCI\Command; +use b8\Config; use Monolog\Logger; use PHPCI\Logging\BuildDBLogHandler; use PHPCI\Logging\LoggedBuildContextTidier; @@ -73,14 +74,15 @@ class RunCommand extends Command // For verbose mode we want to output all informational and above // messages to the symphony output interface. - if ($input->hasOption('verbose')) { + if ($input->getOption('verbose')) { $this->logger->pushHandler( new OutputLogHandler($this->output, Logger::INFO) ); } - $this->logger->pushProcessor(new LoggedBuildContextTidier()); + $running = $this->validateRunningBuilds(); + $this->logger->pushProcessor(new LoggedBuildContextTidier()); $this->logger->addInfo("Finding builds to process"); $store = Factory::getStore('Build'); $result = $store->getByStatus(0, $this->maxBuilds); @@ -89,10 +91,17 @@ class RunCommand extends Command $builds = 0; foreach ($result['items'] as $build) { - $builds++; $build = BuildFactory::getBuild($build); + // Skip build (for now) if there's already a build running in that project: + if (in_array($build->getProjectId(), $running)) { + $this->logger->addInfo('Skipping Build #'.$build->getId() . ' - Project build already in progress.'); + continue; + } + + $builds++; + try { // Logging relevant to this build should be stored // against the build itself. @@ -118,8 +127,53 @@ class RunCommand extends Command return $builds; } - public function setBaxBuilds($numBuilds) + public function setMaxBuilds($numBuilds) { $this->maxBuilds = (int)$numBuilds; } + + protected function validateRunningBuilds() + { + /** @var \PHPCI\Store\BuildStore $store */ + $store = Factory::getStore('Build'); + $running = $store->getByStatus(1); + $rtn = array(); + + $timeout = Config::getInstance()->get('phpci.build.failed_after', 1800); + + foreach ($running['items'] as $build) { + /** @var \PHPCI\Model\Build $build */ + $build = BuildFactory::getBuild($build); + + $now = time(); + $start = $build->getStarted()->getTimestamp(); + + if (($now - $start) > $timeout) { + $this->logger->addInfo('Build #'.$build->getId().' marked as failed due to timeout.'); + $build->setStatus(Build::STATUS_FAILED); + $store->save($build); + $this->removeBuildDirectory($build); + continue; + } + + $rtn[$build->getProjectId()] = true; + } + + return $rtn; + } + + protected function removeBuildDirectory($build) + { + $buildPath = PHPCI_DIR . 'PHPCI/build/' . $build->getId() . '/'; + + if (is_dir($buildPath)) { + $cmd = 'rm -Rf "%s"'; + + if (IS_WIN) { + $cmd = 'rmdir /S /Q "%s"'; + } + + shell_exec($cmd); + } + } } diff --git a/PHPCI/Controller/SettingsController.php b/PHPCI/Controller/SettingsController.php index 3589cd5e..bc5558ba 100644 --- a/PHPCI/Controller/SettingsController.php +++ b/PHPCI/Controller/SettingsController.php @@ -45,8 +45,14 @@ class SettingsController extends Controller $emailSettings = $this->settings['phpci']['email_settings']; } + $buildSettings = array(); + if (isset($this->settings['phpci']['build'])) { + $buildSettings = $this->settings['phpci']['build']; + } + $this->view->github = $this->getGithubForm(); $this->view->emailSettings = $this->getEmailForm($emailSettings); + $this->view->buildSettings = $this->getBuildForm($buildSettings); $this->view->isWriteable = $this->canWriteConfig(); if (!empty($this->settings['phpci']['github']['token'])) { @@ -87,6 +93,21 @@ class SettingsController extends Controller die; } + public function build() + { + $this->settings['phpci']['build'] = $this->getParams(); + + $error = $this->storeSettings(); + + if ($error) { + header('Location: ' . PHPCI_URL . 'settings?saved=2'); + } else { + header('Location: ' . PHPCI_URL . 'settings?saved=1'); + } + + die; + } + /** * Github redirects users back to this URL when t */ @@ -249,4 +270,36 @@ class SettingsController extends Controller { return is_writeable(APPLICATION_PATH . 'PHPCI/config.yml'); } + + protected function getBuildForm($values = array()) + { + $form = new Form(); + $form->setMethod('POST'); + $form->setAction(PHPCI_URL . 'settings/build'); + + $field = new Form\Element\Select('failed_after'); + $field->setRequired(false); + $field->setLabel('Consider a build failed after'); + $field->setClass('form-control'); + $field->setContainerClass('form-group'); + $field->setOptions([ + 300 => '5 Minutes', + 900 => '15 Minutes', + 1800 => '30 Minutes', + 3600 => '1 Hour', + 10800 => '3 Hours', + ]); + $field->setValue(1800); + $form->addField($field); + + + $field = new Form\Element\Submit(); + $field->setValue('Save »'); + $field->setClass('btn btn-success pull-right'); + $form->addField($field); + + $form->setValues($values); + + return $form; + } } diff --git a/PHPCI/View/Settings/index.phtml b/PHPCI/View/Settings/index.phtml index 9724053a..8637ad2b 100644 --- a/PHPCI/View/Settings/index.phtml +++ b/PHPCI/View/Settings/index.phtml @@ -28,6 +28,13 @@

+
+

Build Settings

+
+ +
+
+

Github Application

From b8421898da8ea9bac7f6ef4e79d32fdc8396b3f5 Mon Sep 17 00:00:00 2001 From: Marco Vito Moscaritolo Date: Wed, 19 Nov 2014 22:31:00 +0100 Subject: [PATCH 25/41] Removing PHPCI's custom autoloader in favour of Composer autoloader. Closes #661 --- Tests/bootstrap.php | 17 - bootstrap.php | 17 - composer.json | 6 + composer.lock | 986 +++++++++++++++++++++++++++++++++++--------- 4 files changed, 788 insertions(+), 238 deletions(-) diff --git a/Tests/bootstrap.php b/Tests/bootstrap.php index 50b285c5..45345d7f 100644 --- a/Tests/bootstrap.php +++ b/Tests/bootstrap.php @@ -10,23 +10,6 @@ // Let PHP take a guess as to the default timezone, if the user hasn't set one: date_default_timezone_set(@date_default_timezone_get()); -// Set up a basic autoloader for PHPCI: -$autoload = function ($class) { - $file = str_replace(array('\\', '_'), '/', $class); - $file .= '.php'; - - if (substr($file, 0, 1) == '/') { - $file = substr($file, 1); - } - - if (is_file(dirname(__DIR__) . '/' . $file)) { - include(dirname(__DIR__) . '/' . $file); - return; - } -}; - -spl_autoload_register($autoload, true, true); - // Load Composer autoloader: require_once(dirname(__DIR__) . '/vendor/autoload.php'); diff --git a/bootstrap.php b/bootstrap.php index 3b951a43..b47a6eb7 100755 --- a/bootstrap.php +++ b/bootstrap.php @@ -16,23 +16,6 @@ if (empty($timezone)) { date_default_timezone_set('UTC'); } -// Set up a basic autoloader for PHPCI: -$autoload = function ($class) { - $file = str_replace(array('\\', '_'), '/', $class); - $file .= '.php'; - - if (substr($file, 0, 1) == '/') { - $file = substr($file, 1); - } - - if (is_file(dirname(__FILE__) . '/' . $file)) { - include(dirname(__FILE__) . '/' . $file); - return; - } -}; - -spl_autoload_register($autoload, true, true); - // If the PHPCI config file is not where we expect it, try looking in // env for an alternative config path. $configFile = dirname(__FILE__) . '/PHPCI/config.yml'; diff --git a/composer.json b/composer.json index 64f9c36c..f0859996 100644 --- a/composer.json +++ b/composer.json @@ -22,6 +22,12 @@ "source": "https://github.com/Block8/PHPCI" }, + "autoload": { + "psr-4": { + "PHPCI\\": "PHPCI" + } + }, + "require": { "php": ">=5.3.8", "ext-mcrypt": "*", diff --git a/composer.lock b/composer.lock index 86271185..532a1932 100644 --- a/composer.lock +++ b/composer.lock @@ -1,22 +1,23 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file" + "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" ], - "hash": "7dc979f6f44c6af5544088b4b917f465", + "hash": "d97c4373b84222bb233cb510044650b4", "packages": [ { "name": "block8/b8framework", - "version": "1.1.7", + "version": "1.1.8", "source": { "type": "git", "url": "https://github.com/Block8/b8framework.git", - "reference": "27c435a7cec78257851d860fa320e1973b164992" + "reference": "cfb0bbd87a2ff71f9ebdfa53fca139d50407e0e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Block8/b8framework/zipball/27c435a7cec78257851d860fa320e1973b164992", - "reference": "27c435a7cec78257851d860fa320e1973b164992", + "url": "https://api.github.com/repos/Block8/b8framework/zipball/cfb0bbd87a2ff71f9ebdfa53fca139d50407e0e0", + "reference": "cfb0bbd87a2ff71f9ebdfa53fca139d50407e0e0", "shasum": "" }, "require": { @@ -50,22 +51,25 @@ "mvc", "php" ], - "time": "2014-07-11 14:24:08" + "time": "2014-07-29 15:49:02" }, { "name": "ircmaxell/password-compat", - "version": "1.0.3", + "version": "v1.0.4", "source": { "type": "git", "url": "https://github.com/ircmaxell/password_compat.git", - "reference": "1fc1521b5e9794ea77e4eca30717be9635f1d4f4" + "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/1fc1521b5e9794ea77e4eca30717be9635f1d4f4", - "reference": "1fc1521b5e9794ea77e4eca30717be9635f1d4f4", + "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/5c5cde8822a69545767f7c7f3058cb15ff84614c", + "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c", "shasum": "" }, + "require-dev": { + "phpunit/phpunit": "4.*" + }, "type": "library", "autoload": { "files": [ @@ -89,33 +93,37 @@ "hashing", "password" ], - "time": "2013-04-30 19:58:08" + "time": "2014-11-20 16:49:30" }, { "name": "monolog/monolog", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "25b16e801979098cb2f120e697bfce454b18bf23" + "reference": "ec3961874c43840e96da3a8a1ed20d8c73d7e5aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/25b16e801979098cb2f120e697bfce454b18bf23", - "reference": "25b16e801979098cb2f120e697bfce454b18bf23", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/ec3961874c43840e96da3a8a1ed20d8c73d7e5aa", + "reference": "ec3961874c43840e96da3a8a1ed20d8c73d7e5aa", "shasum": "" }, "require": { "php": ">=5.3.0", "psr/log": "~1.0" }, + "provide": { + "psr/log-implementation": "1.0.0" + }, "require-dev": { "aws/aws-sdk-php": "~2.4, >2.4.8", "doctrine/couchdb": "~1.0@dev", "graylog2/gelf-php": "~1.0", "phpunit/phpunit": "~3.7.0", "raven/raven": "~0.5", - "ruflin/elastica": "0.90.*" + "ruflin/elastica": "0.90.*", + "videlalvaro/php-amqplib": "~2.4" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", @@ -125,12 +133,13 @@ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", "raven/raven": "Allow sending log messages to a Sentry server", "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.10.x-dev" + "dev-master": "1.11.x-dev" } }, "autoload": { @@ -146,8 +155,7 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be", - "role": "Developer" + "homepage": "http://seld.be" } ], "description": "Sends your logs to files, sockets, inboxes, databases and various web services", @@ -157,7 +165,7 @@ "logging", "psr-3" ], - "time": "2014-06-04 16:30:04" + "time": "2014-09-30 13:30:58" }, { "name": "pimple/pimple", @@ -247,16 +255,16 @@ }, { "name": "robmorgan/phinx", - "version": "v0.3.6", + "version": "v0.3.8", "source": { "type": "git", "url": "https://github.com/robmorgan/phinx.git", - "reference": "42e1c104673fb3958466fd21218a3eb8e6797f20" + "reference": "589319c8bd7f819580bbab11a8987fb38853bfe7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/robmorgan/phinx/zipball/42e1c104673fb3958466fd21218a3eb8e6797f20", - "reference": "42e1c104673fb3958466fd21218a3eb8e6797f20", + "url": "https://api.github.com/repos/robmorgan/phinx/zipball/589319c8bd7f819580bbab11a8987fb38853bfe7", + "reference": "589319c8bd7f819580bbab11a8987fb38853bfe7", "shasum": "" }, "require": { @@ -300,24 +308,24 @@ "migrations", "phinx" ], - "time": "2014-06-29 10:54:25" + "time": "2014-10-06 09:27:17" }, { "name": "swiftmailer/swiftmailer", - "version": "v5.2.1", + "version": "v5.3.0", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "2b9af56cc676c338d52fca4c657e5bdff73bb7af" + "reference": "b86b927dfefdb56ab0b22d1350033d9a38e9f205" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/2b9af56cc676c338d52fca4c657e5bdff73bb7af", - "reference": "2b9af56cc676c338d52fca4c657e5bdff73bb7af", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/b86b927dfefdb56ab0b22d1350033d9a38e9f205", + "reference": "b86b927dfefdb56ab0b22d1350033d9a38e9f205", "shasum": "" }, "require": { - "php": ">=5.2.4" + "php": ">=5.3.3" }, "require-dev": { "mockery/mockery": "~0.9.1" @@ -325,7 +333,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.2-dev" + "dev-master": "5.3-dev" } }, "autoload": { @@ -339,13 +347,11 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "name": "Chris Corbyn" }, { - "name": "Chris Corbyn" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Swiftmailer, free feature-rich PHP mailer", @@ -354,21 +360,21 @@ "mail", "mailer" ], - "time": "2014-06-13 11:44:54" + "time": "2014-10-04 05:53:18" }, { "name": "symfony/class-loader", - "version": "v2.5.1", + "version": "v2.6.0", "target-dir": "Symfony/Component/ClassLoader", "source": { "type": "git", "url": "https://github.com/symfony/ClassLoader.git", - "reference": "6043dcaa25d70f3b2243cfd6a3f6d6bd42f3f3b9" + "reference": "b403af3d4fa3a2c3c926121c05042107e3a5b916" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ClassLoader/zipball/6043dcaa25d70f3b2243cfd6a3f6d6bd42f3f3b9", - "reference": "6043dcaa25d70f3b2243cfd6a3f6d6bd42f3f3b9", + "url": "https://api.github.com/repos/symfony/ClassLoader/zipball/b403af3d4fa3a2c3c926121c05042107e3a5b916", + "reference": "b403af3d4fa3a2c3c926121c05042107e3a5b916", "shasum": "" }, "require": { @@ -380,7 +386,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -393,34 +399,32 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony ClassLoader Component", "homepage": "http://symfony.com", - "time": "2014-07-08 12:21:33" + "time": "2014-11-20 13:24:23" }, { "name": "symfony/config", - "version": "v2.5.1", + "version": "v2.5.7", "target-dir": "Symfony/Component/Config", "source": { "type": "git", "url": "https://github.com/symfony/Config.git", - "reference": "94f0c86c76a74ec9d09ef361e1476d5a66be9ff2" + "reference": "7b11dceebaaf877b75bc1aedfd831a2ddc326de9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Config/zipball/94f0c86c76a74ec9d09ef361e1476d5a66be9ff2", - "reference": "94f0c86c76a74ec9d09ef361e1476d5a66be9ff2", + "url": "https://api.github.com/repos/symfony/Config/zipball/7b11dceebaaf877b75bc1aedfd831a2ddc326de9", + "reference": "7b11dceebaaf877b75bc1aedfd831a2ddc326de9", "shasum": "" }, "require": { @@ -443,34 +447,32 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Config Component", "homepage": "http://symfony.com", - "time": "2014-07-08 12:21:33" + "time": "2014-11-20 13:22:25" }, { "name": "symfony/console", - "version": "v2.5.1", + "version": "v2.6.0", "target-dir": "Symfony/Component/Console", "source": { "type": "git", "url": "https://github.com/symfony/Console.git", - "reference": "2e3df33dd72a9cdef7e9745d930e29ff844fe055" + "reference": "d3bac228fd7a2aac9193e241b239880b3ba39a10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Console/zipball/2e3df33dd72a9cdef7e9745d930e29ff844fe055", - "reference": "2e3df33dd72a9cdef7e9745d930e29ff844fe055", + "url": "https://api.github.com/repos/symfony/Console/zipball/d3bac228fd7a2aac9193e241b239880b3ba39a10", + "reference": "d3bac228fd7a2aac9193e241b239880b3ba39a10", "shasum": "" }, "require": { @@ -478,16 +480,18 @@ }, "require-dev": { "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.1" + "symfony/event-dispatcher": "~2.1", + "symfony/process": "~2.1" }, "suggest": { "psr/log": "For using the console logger", - "symfony/event-dispatcher": "" + "symfony/event-dispatcher": "", + "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -500,34 +504,32 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Console Component", "homepage": "http://symfony.com", - "time": "2014-07-08 12:21:33" + "time": "2014-11-20 13:24:23" }, { "name": "symfony/filesystem", - "version": "v2.5.1", + "version": "v2.5.7", "target-dir": "Symfony/Component/Filesystem", "source": { "type": "git", "url": "https://github.com/symfony/Filesystem.git", - "reference": "92d5e2f4ebc89fa7573688caffa2363ed995843d" + "reference": "3c3e382bd869b3ec10008a3d9ef455b1cc2868db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Filesystem/zipball/92d5e2f4ebc89fa7573688caffa2363ed995843d", - "reference": "92d5e2f4ebc89fa7573688caffa2363ed995843d", + "url": "https://api.github.com/repos/symfony/Filesystem/zipball/3c3e382bd869b3ec10008a3d9ef455b1cc2868db", + "reference": "3c3e382bd869b3ec10008a3d9ef455b1cc2868db", "shasum": "" }, "require": { @@ -549,34 +551,32 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Filesystem Component", "homepage": "http://symfony.com", - "time": "2014-07-08 12:21:33" + "time": "2014-11-16 17:28:00" }, { "name": "symfony/yaml", - "version": "v2.5.1", + "version": "v2.6.0", "target-dir": "Symfony/Component/Yaml", "source": { "type": "git", "url": "https://github.com/symfony/Yaml.git", - "reference": "1057e87364c0b38b50f5695fc9df9dd189036bec" + "reference": "51c845cf3e4bfc182d1d5c05ed1c7338361d86f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/1057e87364c0b38b50f5695fc9df9dd189036bec", - "reference": "1057e87364c0b38b50f5695fc9df9dd189036bec", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/51c845cf3e4bfc182d1d5c05ed1c7338361d86f8", + "reference": "51c845cf3e4bfc182d1d5c05ed1c7338361d86f8", "shasum": "" }, "require": { @@ -585,7 +585,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -598,44 +598,328 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Yaml Component", "homepage": "http://symfony.com", - "time": "2014-07-08 12:21:33" + "time": "2014-11-20 13:24:23" } ], "packages-dev": [ { - "name": "phpspec/prophecy", - "version": "1.1.2", + "name": "block8/php-docblock-checker", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "976a65af02a2a0e17ce6c949f7b43437205628bb" + "url": "https://github.com/Block8/php-docblock-checker.git", + "reference": "1f0a4e6b7e2487b1f4891bb50ffe74eaa9de89e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/976a65af02a2a0e17ce6c949f7b43437205628bb", - "reference": "976a65af02a2a0e17ce6c949f7b43437205628bb", + "url": "https://api.github.com/repos/Block8/php-docblock-checker/zipball/1f0a4e6b7e2487b1f4891bb50ffe74eaa9de89e3", + "reference": "1f0a4e6b7e2487b1f4891bb50ffe74eaa9de89e3", "shasum": "" }, + "require": { + "php": ">=5.3.3", + "phpunit/php-token-stream": "1.*", + "symfony/console": "~2.1" + }, "require-dev": { - "phpspec/phpspec": "2.0.*" + "phploc/phploc": "~2.0", + "phpmd/phpmd": "~2.0", + "squizlabs/php_codesniffer": "~1.5" + }, + "bin": [ + "phpdoccheck" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Dan Cryer", + "email": "dan.cryer@block8.co.uk", + "homepage": "http://www.block8.co.uk", + "role": "Developer" + } + ], + "description": "A simple tool for checking that your PHP classes and methods use docblocks.", + "homepage": "https://www.phptesting.org/", + "keywords": [ + "checker", + "code quality", + "comment", + "docblock", + "php", + "phpci", + "testing" + ], + "time": "2014-10-23 13:03:24" + }, + { + "name": "doctrine/instantiator", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f976e5de371104877ebc89bd8fecb0019ed9c119", + "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "2.0.*@ALPHA" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Instantiator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2014-10-13 12:58:55" + }, + { + "name": "pdepend/pdepend", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/pdepend/pdepend.git", + "reference": "dc582a3c0180664a8fbfc5a34efaf4cc13fccc60" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/dc582a3c0180664a8fbfc5a34efaf4cc13fccc60", + "reference": "dc582a3c0180664a8fbfc5a34efaf4cc13fccc60", + "shasum": "" + }, + "require": { + "symfony/config": "@stable", + "symfony/dependency-injection": "@stable", + "symfony/filesystem": "@stable" + }, + "require-dev": { + "phpunit/phpunit": "3.*@stable", + "squizlabs/php_codesniffer": "@stable" + }, + "bin": [ + "src/bin/pdepend" + ], + "type": "library", + "autoload": { + "psr-0": { + "PDepend\\": "src/main/php/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Official version of pdepend to be handled with Composer", + "time": "2014-10-08 06:54:50" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "38743b677965c48a637097b2746a281264ae2347" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/38743b677965c48a637097b2746a281264ae2347", + "reference": "38743b677965c48a637097b2746a281264ae2347", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*@stable" + }, + "suggest": { + "dflydev/markdown": "1.0.*", + "erusev/parsedown": "~0.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "time": "2014-08-09 10:27:07" + }, + { + "name": "phploc/phploc", + "version": "2.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phploc.git", + "reference": "322ad07c112d5c6832abed4269d648cacff5959b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phploc/zipball/322ad07c112d5c6832abed4269d648cacff5959b", + "reference": "322ad07c112d5c6832abed4269d648cacff5959b", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/finder-facade": "~1.1", + "sebastian/git": "~1.0", + "sebastian/version": "~1.0", + "symfony/console": "~2.2" + }, + "bin": [ + "phploc" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "A tool for quickly measuring the size of a PHP project.", + "homepage": "https://github.com/sebastianbergmann/phploc", + "time": "2014-06-25 08:11:02" + }, + { + "name": "phpmd/phpmd", + "version": "2.1.3", + "source": { + "type": "git", + "url": "https://github.com/phpmd/phpmd.git", + "reference": "1a485d9db869137af5e9678bd844568c92998b25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/1a485d9db869137af5e9678bd844568c92998b25", + "reference": "1a485d9db869137af5e9678bd844568c92998b25", + "shasum": "" + }, + "require": { + "pdepend/pdepend": "2.0.*", + "php": ">=5.3.0", + "symfony/config": "2.5.*", + "symfony/dependency-injection": "2.5.*", + "symfony/filesystem": "2.5.*" + }, + "bin": [ + "src/bin/phpmd" + ], + "type": "library", + "autoload": { + "psr-0": { + "PHPMD\\": "src/main/php" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Official version of PHPMD handled with Composer.", + "time": "2014-09-25 15:56:22" + }, + { + "name": "phpspec/prophecy", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "9ca52329bcdd1500de24427542577ebf3fc2f1c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/9ca52329bcdd1500de24427542577ebf3fc2f1c9", + "reference": "9ca52329bcdd1500de24427542577ebf3fc2f1c9", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "~1.0,>=1.0.2", + "phpdocumentor/reflection-docblock": "~2.0" + }, + "require-dev": { + "phpspec/phpspec": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -668,7 +952,7 @@ "spy", "stub" ], - "time": "2014-01-24 11:03:43" + "time": "2014-11-17 16:23:49" }, { "name": "phpspec/prophecy-phpunit", @@ -722,29 +1006,29 @@ }, { "name": "phpunit/php-code-coverage", - "version": "2.0.9", + "version": "2.0.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ed8ac99ce38c3fd134128c898f7ca74665abef7f" + "reference": "53603b3c995f5aab6b59c8e08c3a663d2cc810b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ed8ac99ce38c3fd134128c898f7ca74665abef7f", - "reference": "ed8ac99ce38c3fd134128c898f7ca74665abef7f", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/53603b3c995f5aab6b59c8e08c3a663d2cc810b7", + "reference": "53603b3c995f5aab6b59c8e08c3a663d2cc810b7", "shasum": "" }, "require": { "php": ">=5.3.3", - "phpunit/php-file-iterator": "~1.3.1", - "phpunit/php-text-template": "~1.2.0", - "phpunit/php-token-stream": "~1.2.2", - "sebastian/environment": "~1.0.0", - "sebastian/version": "~1.0.3" + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "~1.3", + "sebastian/environment": "~1.0", + "sebastian/version": "~1.0" }, "require-dev": { "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4.0.14" + "phpunit/phpunit": "~4.1" }, "suggest": { "ext-dom": "*", @@ -783,7 +1067,7 @@ "testing", "xunit" ], - "time": "2014-06-29 08:14:40" + "time": "2014-08-31 06:33:04" }, { "name": "phpunit/php-file-iterator", @@ -920,45 +1204,44 @@ }, { "name": "phpunit/php-token-stream", - "version": "1.2.2", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32" + "reference": "f8d5d08c56de5cfd592b3340424a81733259a876" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ad4e1e23ae01b483c16f600ff1bebec184588e32", - "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/f8d5d08c56de5cfd592b3340424a81733259a876", + "reference": "f8d5d08c56de5cfd592b3340424a81733259a876", "shasum": "" }, "require": { "ext-tokenizer": "*", "php": ">=5.3.3" }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { "classmap": [ - "PHP/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], "description": "Wrapper around PHP's tokenizer extension.", @@ -966,20 +1249,20 @@ "keywords": [ "tokenizer" ], - "time": "2014-03-03 05:10:30" + "time": "2014-08-31 06:12:13" }, { "name": "phpunit/phpunit", - "version": "4.1.3", + "version": "4.3.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "939cb801b3b2aa253aedd0b279f40bb8f35cec91" + "reference": "2dab9d593997db4abcf58d0daf798eb4e9cecfe1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/939cb801b3b2aa253aedd0b279f40bb8f35cec91", - "reference": "939cb801b3b2aa253aedd0b279f40bb8f35cec91", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2dab9d593997db4abcf58d0daf798eb4e9cecfe1", + "reference": "2dab9d593997db4abcf58d0daf798eb4e9cecfe1", "shasum": "" }, "require": { @@ -990,10 +1273,10 @@ "ext-spl": "*", "php": ">=5.3.3", "phpunit/php-code-coverage": "~2.0", - "phpunit/php-file-iterator": "~1.3.1", + "phpunit/php-file-iterator": "~1.3.2", "phpunit/php-text-template": "~1.2", "phpunit/php-timer": "~1.0.2", - "phpunit/phpunit-mock-objects": "~2.1", + "phpunit/phpunit-mock-objects": "~2.3", "sebastian/comparator": "~1.0", "sebastian/diff": "~1.1", "sebastian/environment": "~1.0", @@ -1010,7 +1293,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1.x-dev" + "dev-master": "4.3.x-dev" } }, "autoload": { @@ -1040,28 +1323,29 @@ "testing", "xunit" ], - "time": "2014-06-11 14:15:47" + "time": "2014-11-11 10:11:09" }, { "name": "phpunit/phpunit-mock-objects", - "version": "2.1.5", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "7878b9c41edb3afab92b85edf5f0981014a2713a" + "reference": "c63d2367247365f688544f0d500af90a11a44c65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/7878b9c41edb3afab92b85edf5f0981014a2713a", - "reference": "7878b9c41edb3afab92b85edf5f0981014a2713a", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/c63d2367247365f688544f0d500af90a11a44c65", + "reference": "c63d2367247365f688544f0d500af90a11a44c65", "shasum": "" }, "require": { + "doctrine/instantiator": "~1.0,>=1.0.1", "php": ">=5.3.3", "phpunit/php-text-template": "~1.2" }, "require-dev": { - "phpunit/phpunit": "~4.1" + "phpunit/phpunit": "~4.3" }, "suggest": { "ext-soap": "*" @@ -1069,7 +1353,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "2.3.x-dev" } }, "autoload": { @@ -1078,9 +1362,6 @@ ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], @@ -1097,20 +1378,20 @@ "mock", "xunit" ], - "time": "2014-06-12 07:22:15" + "time": "2014-10-03 05:12:11" }, { "name": "sebastian/comparator", - "version": "1.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2" + "reference": "e54a01c0da1b87db3c5a3c4c5277ddf331da4aef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2", - "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e54a01c0da1b87db3c5a3c4c5277ddf331da4aef", + "reference": "e54a01c0da1b87db3c5a3c4c5277ddf331da4aef", "shasum": "" }, "require": { @@ -1137,11 +1418,6 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -1153,6 +1429,10 @@ { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], "description": "Provides the functionality to compare PHP values for equality", @@ -1162,29 +1442,32 @@ "compare", "equality" ], - "time": "2014-05-02 07:05:58" + "time": "2014-05-11 23:00:21" }, { "name": "sebastian/diff", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d" + "reference": "5843509fed39dee4b356a306401e9dd1a931fec7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d", - "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/5843509fed39dee4b356a306401e9dd1a931fec7", + "reference": "5843509fed39dee4b356a306401e9dd1a931fec7", "shasum": "" }, "require": { "php": ">=5.3.3" }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "1.2-dev" } }, "autoload": { @@ -1197,14 +1480,13 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - }, { "name": "Kore Nordmann", "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], "description": "Diff implementation", @@ -1212,32 +1494,32 @@ "keywords": [ "diff" ], - "time": "2013-08-03 16:46:33" + "time": "2014-08-15 10:29:00" }, { "name": "sebastian/environment", - "version": "1.0.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a" + "reference": "0d9bf79554d2a999da194a60416c15cf461eb67d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/79517609ec01139cd7e9fded0dd7ce08c952ef6a", - "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/0d9bf79554d2a999da194a60416c15cf461eb67d", + "reference": "0d9bf79554d2a999da194a60416c15cf461eb67d", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "4.0.*@dev" + "phpunit/phpunit": "~4.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -1252,8 +1534,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], "description": "Provides functionality to handle HHVM/PHP environments", @@ -1263,27 +1544,27 @@ "environment", "hhvm" ], - "time": "2014-02-18 16:17:19" + "time": "2014-10-22 06:38:05" }, { "name": "sebastian/exporter", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529" + "reference": "c7d59948d6e82818e1bdff7cadb6c34710eb7dc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529", - "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c7d59948d6e82818e1bdff7cadb6c34710eb7dc0", + "reference": "c7d59948d6e82818e1bdff7cadb6c34710eb7dc0", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "4.0.*@dev" + "phpunit/phpunit": "~4.0" }, "type": "library", "extra": { @@ -1301,11 +1582,6 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -1314,14 +1590,17 @@ "name": "Volker Dusch", "email": "github@wallbash.com" }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net", - "role": "Lead" - }, { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], "description": "Provides the functionality to export PHP variables for visualization", @@ -1330,7 +1609,92 @@ "export", "exporter" ], - "time": "2014-02-16 08:26:31" + "time": "2014-09-10 00:51:36" + }, + { + "name": "sebastian/finder-facade", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/finder-facade.git", + "reference": "1e396fda3449fce9df032749fa4fa2619e0347e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/finder-facade/zipball/1e396fda3449fce9df032749fa4fa2619e0347e0", + "reference": "1e396fda3449fce9df032749fa4fa2619e0347e0", + "shasum": "" + }, + "require": { + "symfony/finder": ">=2.2.0", + "theseer/fdomdocument": ">=1.3.1" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FinderFacade is a convenience wrapper for Symfony's Finder component.", + "homepage": "https://github.com/sebastianbergmann/finder-facade", + "time": "2013-05-28 06:10:03" + }, + { + "name": "sebastian/git", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/git.git", + "reference": "a99fbc102e982c1404041ef3e4d431562b29bcba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/git/zipball/a99fbc102e982c1404041ef3e4d431562b29bcba", + "reference": "a99fbc102e982c1404041ef3e4d431562b29bcba", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple wrapper for Git", + "homepage": "http://www.github.com/sebastianbergmann/git", + "keywords": [ + "git" + ], + "time": "2013-08-04 09:35:29" }, { "name": "sebastian/version", @@ -1366,22 +1730,236 @@ "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", "time": "2014-03-07 15:35:33" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "1.5.5", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "5d973e59cf58a0c847f298de84374c96b42b17b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5d973e59cf58a0c847f298de84374c96b42b17b3", + "reference": "5d973e59cf58a0c847f298de84374c96b42b17b3", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.1.2" + }, + "suggest": { + "phpunit/php-timer": "dev-master" + }, + "bin": [ + "scripts/phpcs" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-phpcs-fixer": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "CodeSniffer.php", + "CodeSniffer/CLI.php", + "CodeSniffer/Exception.php", + "CodeSniffer/File.php", + "CodeSniffer/Report.php", + "CodeSniffer/Reporting.php", + "CodeSniffer/Sniff.php", + "CodeSniffer/Tokens.php", + "CodeSniffer/Reports/", + "CodeSniffer/CommentParser/", + "CodeSniffer/Tokenizers/", + "CodeSniffer/DocGenerators/", + "CodeSniffer/Standards/AbstractPatternSniff.php", + "CodeSniffer/Standards/AbstractScopeSniff.php", + "CodeSniffer/Standards/AbstractVariableSniff.php", + "CodeSniffer/Standards/IncorrectPatternException.php", + "CodeSniffer/Standards/Generic/Sniffs/", + "CodeSniffer/Standards/MySource/Sniffs/", + "CodeSniffer/Standards/PEAR/Sniffs/", + "CodeSniffer/Standards/PSR1/Sniffs/", + "CodeSniffer/Standards/PSR2/Sniffs/", + "CodeSniffer/Standards/Squiz/Sniffs/", + "CodeSniffer/Standards/Zend/Sniffs/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenises PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "http://www.squizlabs.com/php-codesniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2014-09-25 03:33:46" + }, + { + "name": "symfony/dependency-injection", + "version": "v2.5.7", + "target-dir": "Symfony/Component/DependencyInjection", + "source": { + "type": "git", + "url": "https://github.com/symfony/DependencyInjection.git", + "reference": "662d8f5e4a7542dca4194fb3f3bda0a57e65f0a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/662d8f5e4a7542dca4194fb3f3bda0a57e65f0a4", + "reference": "662d8f5e4a7542dca4194fb3f3bda0a57e65f0a4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/config": "~2.2", + "symfony/expression-language": "~2.4", + "symfony/yaml": "~2.0" + }, + "suggest": { + "symfony/config": "", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\DependencyInjection\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony DependencyInjection Component", + "homepage": "http://symfony.com", + "time": "2014-11-16 17:28:00" + }, + { + "name": "symfony/finder", + "version": "v2.6.0", + "target-dir": "Symfony/Component/Finder", + "source": { + "type": "git", + "url": "https://github.com/symfony/Finder.git", + "reference": "d574347c652a14cfee0349f744c7880e1d9029fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Finder/zipball/d574347c652a14cfee0349f744c7880e1d9029fd", + "reference": "d574347c652a14cfee0349f744c7880e1d9029fd", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\Finder\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Finder Component", + "homepage": "http://symfony.com", + "time": "2014-11-28 10:00:40" + }, + { + "name": "theseer/fdomdocument", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/fDOMDocument.git", + "reference": "d08cf070350f884c63fc9078d27893c2ab6c7cef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/fDOMDocument/zipball/d08cf070350f884c63fc9078d27893c2ab6c7cef", + "reference": "d08cf070350f884c63fc9078d27893c2ab6c7cef", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "lib-libxml": "*", + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "lead" + } + ], + "description": "The classes contained within this repository extend the standard DOM to use exceptions at all occasions of errors instead of PHP warnings or notices. They also add various custom methods and shortcuts for convenience and to simplify the usage of DOM.", + "homepage": "https://github.com/theseer/fDOMDocument", + "time": "2014-09-13 10:57:19" } ], - "aliases": [ - - ], + "aliases": [], "minimum-stability": "stable", - "stability-flags": [ - - ], + "stability-flags": [], + "prefer-stable": false, "platform": { "php": ">=5.3.8", "ext-mcrypt": "*", "ext-pdo": "*", "ext-pdo_mysql": "*" }, - "platform-dev": [ - - ] + "platform-dev": [] } From 6b6712f82a0a0529e0ba898367fd130a92b78dcc Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Mon, 1 Dec 2014 17:30:44 +0000 Subject: [PATCH 26/41] Fixing support for Github and Bitbucket web hooks. --- PHPCI/Controller/WebhookController.php | 29 +++++++++++++------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/PHPCI/Controller/WebhookController.php b/PHPCI/Controller/WebhookController.php index fb3a76d7..925cbd89 100644 --- a/PHPCI/Controller/WebhookController.php +++ b/PHPCI/Controller/WebhookController.php @@ -52,20 +52,7 @@ class WebhookController extends \PHPCI\Controller */ public function bitbucket($project) { - switch ($_SERVER['CONTENT_TYPE']) { - case 'application/json': - $payload = json_decode(file_get_contents('php://input'), true); - break; - - case 'application/x-www-form-urlencoded': - $payload = json_decode($this->getParam('payload'), true); - break; - - default: - header('HTTP/1.1 400 Bad Request'); - die('Request content type not supported'); - } - + $payload = json_decode($this->getParam('payload'), true); foreach ($payload['commits'] as $commit) { try { @@ -119,7 +106,19 @@ class WebhookController extends \PHPCI\Controller */ public function github($project) { - $payload = json_decode($this->getParam('payload'), true); + switch ($_SERVER['CONTENT_TYPE']) { + case 'application/json': + $payload = json_decode(file_get_contents('php://input'), true); + break; + + case 'application/x-www-form-urlencoded': + $payload = json_decode($this->getParam('payload'), true); + break; + + default: + header('HTTP/1.1 400 Bad Request'); + die('Request content type not supported'); + } // Handle Pull Request web hooks: if (array_key_exists('pull_request', $payload)) { From 9ceec307acb372140a4468c1788c2bb189b3a6b0 Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Mon, 1 Dec 2014 17:36:47 +0000 Subject: [PATCH 27/41] Fixing RunCommand --- PHPCI/Command/RunCommand.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PHPCI/Command/RunCommand.php b/PHPCI/Command/RunCommand.php index 8149d362..f6aa1288 100644 --- a/PHPCI/Command/RunCommand.php +++ b/PHPCI/Command/RunCommand.php @@ -62,7 +62,8 @@ class RunCommand extends Command { $this ->setName('phpci:run-builds') - ->setDescription('Run all pending PHPCI builds.'); + ->setDescription('Run all pending PHPCI builds.') + ->addOption('verbose', 'v', InputOption::VALUE_NONE); } /** From 37d43e0e8605805e6ed14bb2c0c6bf71fba0f0e9 Mon Sep 17 00:00:00 2001 From: Wanderson Date: Wed, 8 Oct 2014 22:45:31 -0300 Subject: [PATCH 28/41] Adding Phar archive plugin. Closes #659 Closes #106 --- PHPCI/Plugin/Phar.php | 240 ++++++++++++++++++++++++++++++++ Tests/PHPCI/Plugin/PharTest.php | 201 ++++++++++++++++++++++++++ Tests/temp/.gitignore | 2 + 3 files changed, 443 insertions(+) create mode 100644 PHPCI/Plugin/Phar.php create mode 100644 Tests/PHPCI/Plugin/PharTest.php create mode 100644 Tests/temp/.gitignore diff --git a/PHPCI/Plugin/Phar.php b/PHPCI/Plugin/Phar.php new file mode 100644 index 00000000..03415007 --- /dev/null +++ b/PHPCI/Plugin/Phar.php @@ -0,0 +1,240 @@ +phpci = $phpci; + $this->build = $build; + + // Directory? + if (isset($options['directory'])) { + $this->setDirectory($options['directory']); + } + + // Filename? + if (isset($options['filename'])) { + $this->setFilename($options['filename']); + } + + // RegExp? + if (isset($options['regexp'])) { + $this->setRegExp($options['regexp']); + } + + // Stub? + if (isset($options['stub'])) { + $this->setStub($options['stub']); + } + } + + /** + * Returns PHPCI + * + * @return PHPCI + */ + public function getPHPCI() + { + return $this->phpci; + } + + /** + * Returns Build + * + * @return Build + */ + public function getBuild() + { + return $this->build; + } + + /** + * Directory Setter + * + * @param string $directory Configuration Value + * @return Phar Fluent Interface + */ + public function setDirectory($directory) + { + $this->directory = $directory; + return $this; + } + + /** + * Directory Getter + * + * @return string Configurated or Default Value + */ + public function getDirectory() + { + if (!isset($this->directory)) { + $this->setDirectory($this->getPHPCI()->buildPath); + } + return $this->directory; + } + + /** + * Filename Setter + * + * @param string $filename Configuration Value + * @return Phar Fluent Interface + */ + public function setFilename($filename) + { + $this->filename = $filename; + return $this; + } + + /** + * Filename Getter + * + * @return string Configurated or Default Value + */ + public function getFilename() + { + if (!isset($this->filename)) { + $this->setFilename('build.phar'); + } + return $this->filename; + } + + /** + * Regular Expression Setter + * + * @param string $regexp Configuration Value + * @return Phar Fluent Interface + */ + public function setRegExp($regexp) + { + $this->regexp = $regexp; + return $this; + } + + /** + * Regular Expression Getter + * + * @return string Configurated or Default Value + */ + public function getRegExp() + { + if (!isset($this->regexp)) { + $this->setRegExp('/\.php$/'); + } + return $this->regexp; + } + + /** + * Stub Filename Setter + * + * @param string $stub Configuration Value + * @return Phar Fluent Interface + */ + public function setStub($stub) + { + $this->stub = $stub; + return $this; + } + + /** + * Stub Filename Getter + * + * @return string Configurated Value + */ + public function getStub() + { + return $this->stub; + } + + public function getStubContent() + { + $content = ''; + $filename = $this->getStub(); + if ($filename) { + $content = file_get_contents($this->getPHPCI()->buildPath . '/' . $this->getStub()); + } + return $content; + } + + // Execution + public function execute() + { + $success = false; + + try { + + $phar = new PHPPhar($this->getDirectory() . '/' . $this->getFilename(), 0, $this->getFilename()); + $phar->buildFromDirectory($this->getPHPCI()->buildPath, $this->getRegExp()); + + $stub = $this->getStubContent(); + if ($stub) { + $phar->setStub($stub); + } + + $success = true; + + } catch (Exception $e) { + $this->getPHPCI()->log('Phar Plugin Internal Error'); + $this->getPHPCI()->log($e->getMessage()); + } + + return $success; + } +} diff --git a/Tests/PHPCI/Plugin/PharTest.php b/Tests/PHPCI/Plugin/PharTest.php new file mode 100644 index 00000000..69f63a6a --- /dev/null +++ b/Tests/PHPCI/Plugin/PharTest.php @@ -0,0 +1,201 @@ +cleanSource(); + } + + protected function getPlugin(array $options = array()) + { + $build = $this + ->getMockBuilder('PHPCI\Model\Build') + ->disableOriginalConstructor() + ->getMock(); + + $phpci = $this + ->getMockBuilder('PHPCI\Builder') + ->disableOriginalConstructor() + ->getMock(); + + return new PharPlugin($phpci, $build, $options); + } + + protected function buildTemp() + { + $directory = tempnam(APPLICATION_PATH . '/Tests/temp', 'source'); + unlink($directory); + return $directory; + } + + protected function buildSource() + { + $directory = $this->buildTemp(); + mkdir($directory); + file_put_contents($directory . '/one.php', 'directory = $directory; + return $directory; + } + + protected function cleanSource() + { + if ($this->directory) { + $filenames = array( + '/build.phar', + '/stub.php', + '/views/index.phtml', + '/views', + '/config/config.ini', + '/config', + '/two.php', + '/one.php', + ); + foreach ($filenames as $filename) { + if (is_dir($this->directory . $filename)) { + rmdir($this->directory . $filename); + } else if (is_file($this->directory . $filename)) { + unlink($this->directory . $filename); + } + } + rmdir($this->directory); + $this->directory = null; + } + } + + protected function checkReadonly() + { + if (ini_get('phar.readonly')) { + $this->markTestSkipped(); + throw new RuntimeException('Readonly Phar'); + } + } + + public function testPlugin() + { + $plugin = $this->getPlugin(); + $this->assertInstanceOf('PHPCI\Plugin', $plugin); + $this->assertInstanceOf('PHPCI\Model\Build', $plugin->getBuild()); + $this->assertInstanceOf('PHPCI\Builder', $plugin->getPHPCI()); + } + + public function testDirectory() + { + $plugin = $this->getPlugin(); + $plugin->getPHPCI()->buildPath = 'foo'; + $this->assertEquals('foo', $plugin->getDirectory()); + + $plugin = $this->getPlugin(array('directory' => 'dirname')); + $this->assertEquals('dirname', $plugin->getDirectory()); + } + + public function testFilename() + { + $plugin = $this->getPlugin(); + $this->assertEquals('build.phar', $plugin->getFilename()); + + $plugin = $this->getPlugin(array('filename' => 'another.phar')); + $this->assertEquals('another.phar', $plugin->getFilename()); + } + + public function testRegExp() + { + $plugin = $this->getPlugin(); + $this->assertEquals('/\.php$/', $plugin->getRegExp()); + + $plugin = $this->getPlugin(array('regexp' => '/\.(php|phtml)$/')); + $this->assertEquals('/\.(php|phtml)$/', $plugin->getRegExp()); + } + + public function testStub() + { + $plugin = $this->getPlugin(); + $this->assertNull($plugin->getStub()); + + $plugin = $this->getPlugin(array('stub' => 'stub.php')); + $this->assertEquals('stub.php', $plugin->getStub()); + } + + public function testExecute() + { + $this->checkReadonly(); + + $plugin = $this->getPlugin(); + $path = $this->buildSource(); + $plugin->getPHPCI()->buildPath = $path; + + $this->assertTrue($plugin->execute()); + + $this->assertFileExists($path . '/build.phar'); + PHPPhar::loadPhar($path . '/build.phar'); + $this->assertFileEquals($path . '/one.php', 'phar://build.phar/one.php'); + $this->assertFileEquals($path . '/two.php', 'phar://build.phar/two.php'); + $this->assertFileNotExists('phar://build.phar/config/config.ini'); + $this->assertFileNotExists('phar://build.phar/views/index.phtml'); + } + + public function testExecuteRegExp() + { + $this->checkReadonly(); + + $plugin = $this->getPlugin(array('regexp' => '/\.(php|phtml)$/')); + $path = $this->buildSource(); + $plugin->getPHPCI()->buildPath = $path; + + $this->assertTrue($plugin->execute()); + + $this->assertFileExists($path . '/build.phar'); + PHPPhar::loadPhar($path . '/build.phar'); + $this->assertFileEquals($path . '/one.php', 'phar://build.phar/one.php'); + $this->assertFileEquals($path . '/two.php', 'phar://build.phar/two.php'); + $this->assertFileNotExists('phar://build.phar/config/config.ini'); + $this->assertFileEquals($path . '/views/index.phtml', 'phar://build.phar/views/index.phtml'); + } + + public function testExecuteStub() + { + $this->checkReadonly(); + + $content = << +STUB; + + $path = $this->buildSource(); + file_put_contents($path . '/stub.php', $content); + + $plugin = $this->getPlugin(array('stub' => 'stub.php')); + $plugin->getPHPCI()->buildPath = $path; + + $this->assertTrue($plugin->execute()); + + $this->assertFileExists($path . '/build.phar'); + $phar = new PHPPhar($path . '/build.phar'); + $this->assertEquals($content, trim($phar->getStub())); // + trim because PHP adds newline char + } + + public function testExecuteUnknownDirectory() + { + $this->checkReadonly(); + + $directory = $this->buildTemp(); + + $plugin = $this->getPlugin(array('directory' => $directory)); + $plugin->getPHPCI()->buildPath = $this->buildSource(); + + $this->assertFalse($plugin->execute()); + } +} diff --git a/Tests/temp/.gitignore b/Tests/temp/.gitignore new file mode 100644 index 00000000..d6b7ef32 --- /dev/null +++ b/Tests/temp/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore From bfebf74dee9212eefffe3dd11fd865291fae96dc Mon Sep 17 00:00:00 2001 From: Petr Hudik Date: Thu, 14 Aug 2014 13:15:22 +0200 Subject: [PATCH 29/41] Adding commit message and committer e-mail to Git webhook Closes #560 Closes #577 --- PHPCI/Controller/WebhookController.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/PHPCI/Controller/WebhookController.php b/PHPCI/Controller/WebhookController.php index 925cbd89..4274f19c 100644 --- a/PHPCI/Controller/WebhookController.php +++ b/PHPCI/Controller/WebhookController.php @@ -76,10 +76,12 @@ class WebhookController extends \PHPCI\Controller * * @param string $project */ - public function git($project) - { + public function git($project) + { $branch = $this->getParam('branch'); $commit = $this->getParam('commit'); + $commitMessage = $this->getParam('message'); + $committer = $this->getParam('committer'); try { if (empty($branch)) { @@ -90,8 +92,15 @@ class WebhookController extends \PHPCI\Controller $commit = null; } - $this->createBuild($project, $commit, $branch, null, null); + if (empty($commitMessage)) { + $commitMessage = null; + } + if (empty($committer)) { + $committer = null; + } + + $this->createBuild($project, $commit, $branch, $committer, $commitMessage); } catch (\Exception $ex) { header('HTTP/1.1 400 Bad Request'); header('Ex: ' . $ex->getMessage()); @@ -99,7 +108,7 @@ class WebhookController extends \PHPCI\Controller } die('OK'); - } + } /** * Called by Github Webhooks: From bb431482808516b707ff649646a7a82504bcd5b0 Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Mon, 1 Dec 2014 21:42:52 +0000 Subject: [PATCH 30/41] Fix for CS issues in build 1349 --- PHPCI/Controller/WebhookController.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PHPCI/Controller/WebhookController.php b/PHPCI/Controller/WebhookController.php index 4274f19c..4a89edd2 100644 --- a/PHPCI/Controller/WebhookController.php +++ b/PHPCI/Controller/WebhookController.php @@ -76,8 +76,8 @@ class WebhookController extends \PHPCI\Controller * * @param string $project */ - public function git($project) - { + public function git($project) + { $branch = $this->getParam('branch'); $commit = $this->getParam('commit'); $commitMessage = $this->getParam('message'); @@ -108,7 +108,7 @@ class WebhookController extends \PHPCI\Controller } die('OK'); - } + } /** * Called by Github Webhooks: From 52fcf8273c48e5dade0d0881e90994e49d38d6e9 Mon Sep 17 00:00:00 2001 From: Marco Vito Moscaritolo Date: Mon, 10 Nov 2014 22:50:44 +0100 Subject: [PATCH 31/41] Adding non-interactive installation mode. Closes #641 --- PHPCI/Command/InstallCommand.php | 214 ++++++++++++++----- Tests/PHPCI/Command/InstallCommandTest.php | 237 +++++++++++++++++++++ phpunit.xml | 3 + 3 files changed, 396 insertions(+), 58 deletions(-) create mode 100644 Tests/PHPCI/Command/InstallCommandTest.php diff --git a/PHPCI/Command/InstallCommand.php b/PHPCI/Command/InstallCommand.php index e4af4722..e24fe2f3 100644 --- a/PHPCI/Command/InstallCommand.php +++ b/PHPCI/Command/InstallCommand.php @@ -23,7 +23,6 @@ use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Helper\DialogHelper; use PHPCI\Service\UserService; - /** * Install console command - Installs PHPCI. * @author Dan Cryer @@ -32,10 +31,23 @@ use PHPCI\Service\UserService; */ class InstallCommand extends Command { + protected $configFilePath; + protected function configure() { + $defaultPath = PHPCI_DIR . 'PHPCI/config.yml'; + $this ->setName('phpci:install') + ->addOption('url', null, InputOption::VALUE_OPTIONAL, 'PHPCI Installation URL') + ->addOption('db-host', null, InputOption::VALUE_OPTIONAL, 'Database hostname') + ->addOption('db-name', null, InputOption::VALUE_OPTIONAL, 'Database name') + ->addOption('db-user', null, InputOption::VALUE_OPTIONAL, 'Database username') + ->addOption('db-pass', null, InputOption::VALUE_OPTIONAL, 'Database password') + ->addOption('admin-name', null, InputOption::VALUE_OPTIONAL, 'Admin username') + ->addOption('admin-pass', null, InputOption::VALUE_OPTIONAL, 'Admin password') + ->addOption('admin-mail', null, InputOption::VALUE_OPTIONAL, 'Admin e-mail') + ->addOption('config-path', null, InputOption::VALUE_OPTIONAL, 'Config file path', $defaultPath) ->setDescription('Install PHPCI.'); } @@ -44,6 +56,8 @@ class InstallCommand extends Command */ protected function execute(InputInterface $input, OutputInterface $output) { + $this->configFilePath = $input->getOption('config-path'); + $this->verifyNotInstalled($output); $output->writeln(''); @@ -58,60 +72,39 @@ class InstallCommand extends Command $output->writeln('-------------------------------------'); $output->writeln(''); - - /** - * @var \Symfony\Component\Console\Helper\DialogHelper - */ - $dialog = $this->getHelperSet()->get('dialog'); - // ---- // Get MySQL connection information and verify that it works: // ---- $connectionVerified = false; while (!$connectionVerified) { - $db = array(); - $db['servers']['read'] = $dialog->ask($output, 'Please enter your MySQL host [localhost]: ', 'localhost'); - $db['servers']['write'] = $db['servers']['read']; - $db['name'] = $dialog->ask($output, 'Please enter your database name [phpci]: ', 'phpci'); - $db['username'] = $dialog->ask($output, 'Please enter your database username [phpci]: ', 'phpci'); - $db['password'] = $dialog->askHiddenResponse($output, 'Please enter your database password: '); + $db = $this->getDatabaseInformation($input, $output); $connectionVerified = $this->verifyDatabaseDetails($db, $output); } $output->writeln(''); + $conf = array(); + $conf['b8']['database'] = $db; + // ---- // Get basic installation details (URL, etc) // ---- - - $conf = array(); - $conf['b8']['database'] = $db; - $conf['phpci']['url'] = $dialog->askAndValidate( - $output, - 'Your PHPCI URL ("http://phpci.local" for example): ', - function ($answer) { - if (!filter_var($answer, FILTER_VALIDATE_URL)) { - throw new Exception('Must be a valid URL'); - } - - return rtrim($answer, '/'); - }, - false - ); + $conf['phpci'] = $this->getPhpciConfigInformation($input, $output); $this->writeConfigFile($conf); $this->setupDatabase($output); - $this->createAdminUser($output, $dialog); + $admin = $this->getAdminInforamtion($input, $output); + $this->createAdminUser($admin, $output); } /** * Check PHP version, required modules and for disabled functions. + * * @param OutputInterface $output * @throws \Exception */ - protected function checkRequirements(OutputInterface $output) { $output->write('Checking requirements...'); @@ -160,6 +153,127 @@ class InstallCommand extends Command $output->writeln(''); } + /** + * Load information for admin user form CLI options or ask info to user. + * + * @param InputInterface $input + * @param OutputInterface $output + * @return array + */ + protected function getAdminInforamtion(InputInterface $input, OutputInterface $output) + { + $admin = array(); + + /** + * @var \Symfony\Component\Console\Helper\DialogHelper + */ + $dialog = $this->getHelperSet()->get('dialog'); + + // Function to validate mail address. + $mailValidator =function ($answer) { + if (!filter_var($answer, FILTER_VALIDATE_EMAIL)) { + throw new Exception('Must be a valid email address.'); + } + + return $answer; + }; + + if ($adminEmail = $input->getOption('admin-mail')) { + $adminEmail = $mailValidator($adminEmail); + } else { + $adminEmail = $dialog->askAndValidate($output, 'Your email address: ', $mailValidator, false); + } + if (!$adminName = $input->getOption('admin-name')) { + $adminName = $dialog->ask($output, 'Enter your name: '); + } + if (!$adminPass = $input->getOption('admin-pass')) { + $adminPass = $dialog->askHiddenResponse($output, 'Enter your desired admin password: '); + } + + $admin['mail'] = $adminEmail; + $admin['name'] = $adminName; + $admin['pass'] = $adminPass; + + return $admin; + } + + /** + * Load configuration for PHPCI form CLI options or ask info to user. + * + * @param InputInterface $input + * @param OutputInterface $output + * @return array + */ + protected function getPhpciConfigInformation(InputInterface $input, OutputInterface $output) + { + $phpci = array(); + + /** + * @var \Symfony\Component\Console\Helper\DialogHelper + */ + $dialog = $this->getHelperSet()->get('dialog'); + + // FUnction do validate URL. + $urlValidator = function ($answer) { + if (!filter_var($answer, FILTER_VALIDATE_URL)) { + throw new Exception('Must be a valid URL'); + } + + return rtrim($answer, '/'); + }; + + if ($url = $input->getOption('url')) { + $url = $urlValidator($url); + } else { + $url = $dialog->askAndValidate($output, 'Your PHPCI URL ("http://phpci.local" for example): ', $urlValidator, false); + } + + $phpci['url'] = $url; + + return $phpci; + } + + /** + * Load configuration for DB form CLI options or ask info to user. + * + * @param InputInterface $input + * @param OutputInterface $output + * @return array + */ + protected function getDatabaseInformation(InputInterface $input, OutputInterface $output) + { + $db = array(); + + /** + * @var \Symfony\Component\Console\Helper\DialogHelper + */ + $dialog = $this->getHelperSet()->get('dialog'); + + if (!$dbHost = $input->getOption('db-host')) { + $dbHost = $dialog->ask($output, 'Please enter your MySQL host [localhost]: ', 'localhost'); + } + + if (!$dbName = $input->getOption('db-name')) { + $dbName = $dialog->ask($output, 'Please enter your database name [phpci]: ', 'phpci'); + } + + if (!$dbUser = $input->getOption('db-user')) { + $dbUser = $dialog->ask($output, 'Please enter your database username [phpci]: ', 'phpci'); + } + + if (!$dbPass = $input->getOption('db-pass')) { + $dbPass = $dialog->askHiddenResponse($output, 'Please enter your database password: '); + } + + $db['servers']['read'] = $dbHost; + $db['servers']['write'] = $dbHost; + $db['name'] = $dbName; + $db['username'] = $dbUser; + $db['password'] = $dbPass; + + return $db; + } + /** * Try and connect to MySQL using the details provided. * @param array $db @@ -200,7 +314,7 @@ class InstallCommand extends Command $dumper = new \Symfony\Component\Yaml\Dumper(); $yaml = $dumper->dump($config, 2); - file_put_contents(PHPCI_DIR . 'PHPCI/config.yml', $yaml); + file_put_contents($this->configFilePath, $yaml); } protected function setupDatabase(OutputInterface $output) @@ -213,34 +327,19 @@ class InstallCommand extends Command } /** + * Create admin user using information loaded before. + * + * @param array $admin * @param OutputInterface $output - * @param DialogHelper $dialog */ - protected function createAdminUser(OutputInterface $output, DialogHelper $dialog) + protected function createAdminUser($admin, $output) { - // Try to create a user account: - $adminEmail = $dialog->askAndValidate( - $output, - 'Your email address: ', - function ($answer) { - if (!filter_var($answer, FILTER_VALIDATE_EMAIL)) { - throw new Exception('Must be a valid email address.'); - } - - return $answer; - }, - false - ); - - $adminPass = $dialog->askHiddenResponse($output, 'Enter your desired admin password: '); - $adminName = $dialog->ask($output, 'Enter your name: '); - try { $this->reloadConfig(); $userStore = Factory::getStore('User'); $userService = new UserService($userStore); - $userService->createUser($adminName, $adminEmail, $adminPass, 1); + $userService->createUser($admin['name'], $admin['mail'], $admin['pass'], 1); $output->writeln('User account created!'); } catch (\Exception $ex) { @@ -252,11 +351,10 @@ class InstallCommand extends Command protected function reloadConfig() { - $configFile = PHPCI_DIR . 'PHPCI/config.yml'; - $config = Config::getInstance(); + $config = Config::getInstance(); - if (file_exists($configFile)) { - $config->loadYaml($configFile); + if (file_exists($this->configFilePath)) { + $config->loadYaml($this->configFilePath); } } @@ -265,11 +363,11 @@ class InstallCommand extends Command */ protected function verifyNotInstalled(OutputInterface $output) { - if (file_exists(PHPCI_DIR . 'PHPCI/config.yml')) { - $content = file_get_contents(PHPCI_DIR . 'PHPCI/config.yml'); + if (file_exists($this->configFilePath)) { + $content = file_get_contents($this->configFilePath); if (!empty($content)) { - $output->writeln('PHPCI/config.yml exists and is not empty.'); + $output->writeln('The PHPCI config file exists and is not empty.'); $output->writeln('If you were trying to update PHPCI, please use phpci:update instead.'); die; } diff --git a/Tests/PHPCI/Command/InstallCommandTest.php b/Tests/PHPCI/Command/InstallCommandTest.php new file mode 100644 index 00000000..29c22303 --- /dev/null +++ b/Tests/PHPCI/Command/InstallCommandTest.php @@ -0,0 +1,237 @@ +command = $this->getMockBuilder('PHPCI\\Command\\InstallCommand') + ->setMethods(array( + 'reloadConfig', + 'verifyNotInstalled', + 'verifyDatabaseDetails', + 'setupDatabase', + 'createAdminUser', + 'writeConfigFile', + )) + ->getMock(); + + $this->command->expects($this->once())->method('verifyDatabaseDetails')->willReturn(true); + $this->command->expects($this->once())->method('setupDatabase')->willReturn(true); + $this->command->expects($this->once())->method('createAdminUser')->will( + $this->returnCallback(function ($adm) {// use (&$admin) { + $this->admin = $adm; + }) + ); + $this->command->expects($this->once())->method('writeConfigFile')->will( + $this->returnCallback(function ($cfg) { //use (&$config) { + $this->config = $cfg; + }) + ); + + // We check that there's no interaction with user. + $this->dialog = $this->getMockBuilder('Symfony\\Component\\Console\\Helper\\DialogHelper') + ->setMethods(array( + 'ask', + 'askConfirmation', + 'askAndValidate', + 'askHiddenResponse', + 'askHiddenResponseAndValidate', + )) + ->getMock(); + + $this->application = new Application(); + $this->application->setHelperSet(new HelperSet()); + } + + protected function getCommandTester() + { + $this->application->getHelperSet()->set($this->dialog, 'dialog'); + $this->application->add($this->command); + $command = $this->application->find('phpci:install'); + $commandTester = new CommandTester($command); + + return $commandTester; + } + + protected function getConfig($exclude = null) + { + $config = array( + '--db-host' => 'localhost', + '--db-name' => 'phpci1', + '--db-user' => 'phpci2', + '--db-pass' => 'phpci3', + '--admin-mail' => 'phpci@phpci.test', + '--admin-name' => 'phpci4', + '--admin-pass' => 'phpci5', + '--url' => 'http://test.phpci.org', + ); + + if (!is_null($exclude)) { + unset($config[$exclude]); + } + + return $config; + } + + protected function executeWithoutParam($param = null) + { + // Clean result variables. + $this->admin = array(); + $this->config = array(); + + // Get tester and execute with extracted parameters. + $commandTester = $this->getCommandTester(); + $parameters = $this->getConfig($param); + $commandTester->execute($parameters); + } + + public function testAutomticInstallation() + { + $this->dialog->expects($this->never())->method('ask'); + $this->dialog->expects($this->never())->method('askConfirmation'); + $this->dialog->expects($this->never())->method('askAndValidate'); + $this->dialog->expects($this->never())->method('askHiddenResponse'); + $this->dialog->expects($this->never())->method('askHiddenResponseAndValidate'); + + $this->executeWithoutParam(); + } + + public function testDatabaseHostnameConfig() + { + // We specified an input value for hostname. + $this->dialog->expects($this->once())->method('ask')->willReturn('testedvalue'); + $this->dialog->expects($this->never())->method('askConfirmation'); + $this->dialog->expects($this->never())->method('askAndValidate'); + $this->dialog->expects($this->never())->method('askHiddenResponse'); + $this->dialog->expects($this->never())->method('askHiddenResponseAndValidate'); + + $this->executeWithoutParam('--db-host'); + + // Check that specified arguments are correctly loaded. + $this->assertEquals('testedvalue', $this->config['b8']['database']['servers']['read']); + $this->assertEquals('testedvalue', $this->config['b8']['database']['servers']['write']); + } + + public function testDatabaseNameConfig() + { + // We specified an input value for hostname. + $this->dialog->expects($this->once())->method('ask')->willReturn('testedvalue'); + $this->dialog->expects($this->never())->method('askConfirmation'); + $this->dialog->expects($this->never())->method('askAndValidate'); + $this->dialog->expects($this->never())->method('askHiddenResponse'); + $this->dialog->expects($this->never())->method('askHiddenResponseAndValidate'); + + $this->executeWithoutParam('--db-name'); + + // Check that specified arguments are correctly loaded. + $this->assertEquals('testedvalue', $this->config['b8']['database']['name']); + } + + public function testDatabaseUserameConfig() + { + // We specified an input value for hostname. + $this->dialog->expects($this->once())->method('ask')->willReturn('testedvalue'); + $this->dialog->expects($this->never())->method('askConfirmation'); + $this->dialog->expects($this->never())->method('askAndValidate'); + $this->dialog->expects($this->never())->method('askHiddenResponse'); + $this->dialog->expects($this->never())->method('askHiddenResponseAndValidate'); + + $this->executeWithoutParam('--db-user'); + + // Check that specified arguments are correctly loaded. + $this->assertEquals('testedvalue', $this->config['b8']['database']['username']); + } + + public function testDatabasePasswordConfig() + { + // We specified an input value for hostname. + $this->dialog->expects($this->never())->method('ask'); + $this->dialog->expects($this->never())->method('askConfirmation'); + $this->dialog->expects($this->never())->method('askAndValidate'); + $this->dialog->expects($this->once())->method('askHiddenResponse')->willReturn('testedvalue'); + $this->dialog->expects($this->never())->method('askHiddenResponseAndValidate'); + + $this->executeWithoutParam('--db-pass'); + + // Check that specified arguments are correctly loaded. + $this->assertEquals('testedvalue', $this->config['b8']['database']['password']); + } + + public function testPhpciUrlConfig() + { + // We specified an input value for hostname. + $this->dialog->expects($this->never())->method('ask'); + $this->dialog->expects($this->never())->method('askConfirmation'); + $this->dialog->expects($this->once())->method('askAndValidate')->willReturn('http://testedvalue.com'); + $this->dialog->expects($this->never())->method('askHiddenResponse'); + $this->dialog->expects($this->never())->method('askHiddenResponseAndValidate'); + + $this->executeWithoutParam('--url'); + + // Check that specified arguments are correctly loaded. + $this->assertEquals('http://testedvalue.com', $this->config['phpci']['url']); + } + + public function testAdminEmailConfig() + { + // We specified an input value for hostname. + $this->dialog->expects($this->never())->method('ask'); + $this->dialog->expects($this->never())->method('askConfirmation'); + $this->dialog->expects($this->once())->method('askAndValidate')->willReturn('test@phpci.com'); + $this->dialog->expects($this->never())->method('askHiddenResponse'); + $this->dialog->expects($this->never())->method('askHiddenResponseAndValidate'); + + $this->executeWithoutParam('--admin-mail'); + + // Check that specified arguments are correctly loaded. + $this->assertEquals('test@phpci.com', $this->admin['mail']); + } + + public function testAdminUserameConfig() + { + // Define expectation for dialog. + $this->dialog->expects($this->once())->method('ask')->willReturn('testedvalue'); + $this->dialog->expects($this->never())->method('askConfirmation'); + $this->dialog->expects($this->never())->method('askAndValidate'); + $this->dialog->expects($this->never())->method('askHiddenResponse'); + $this->dialog->expects($this->never())->method('askHiddenResponseAndValidate'); + + $this->executeWithoutParam('--admin-name'); + + // Check that specified arguments are correctly loaded. + $this->assertEquals('testedvalue', $this->admin['name']); + } + + public function testAdminPasswordConfig() + { + // We specified an input value for hostname. + $this->dialog->expects($this->never())->method('ask'); + $this->dialog->expects($this->never())->method('askConfirmation'); + $this->dialog->expects($this->never())->method('askAndValidate'); + $this->dialog->expects($this->once())->method('askHiddenResponse')->willReturn('testedvalue'); + $this->dialog->expects($this->never())->method('askHiddenResponseAndValidate'); + + $this->executeWithoutParam('--admin-pass'); + + // Check that specified arguments are correctly loaded. + $this->assertEquals('testedvalue', $this->admin['pass']); + } +} diff --git a/phpunit.xml b/phpunit.xml index 78685417..fdddf34d 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -11,6 +11,9 @@ bootstrap="./Tests/bootstrap.php" > + + ./Tests/PHPCI/Command + ./Tests/PHPCI/Helper From abfea65c318139bb915397e21e52472e59ed9b7a Mon Sep 17 00:00:00 2001 From: Artjom Kurapov Date: Fri, 7 Nov 2014 17:39:01 +0200 Subject: [PATCH 32/41] Make FilesPluginInformation class only try to load PHP files. Closes #638 --- PHPCI/Plugin/Util/FilesPluginInformation.php | 37 ++++++++++++-------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/PHPCI/Plugin/Util/FilesPluginInformation.php b/PHPCI/Plugin/Util/FilesPluginInformation.php index 8366c4cb..5465f470 100644 --- a/PHPCI/Plugin/Util/FilesPluginInformation.php +++ b/PHPCI/Plugin/Util/FilesPluginInformation.php @@ -67,7 +67,7 @@ class FilesPluginInformation implements InstalledPluginInformation $this->pluginInfo = array(); foreach ($this->files as $fileInfo) { if ($fileInfo instanceof \SplFileInfo) { - if ($fileInfo->isFile()) { + if ($fileInfo->isFile() && $fileInfo->getExtension()=='php') { $this->addPluginFromFile($fileInfo); } } @@ -76,13 +76,17 @@ class FilesPluginInformation implements InstalledPluginInformation protected function addPluginFromFile(\SplFileInfo $fileInfo) { - $newPlugin = new \stdClass(); - $newPlugin->class = $this->getFullClassFromFile($fileInfo); - $newPlugin->source = "core"; - $parts = explode('\\', $newPlugin->class); - $newPlugin->name = end($parts); + $class = $this->getFullClassFromFile($fileInfo); - $this->pluginInfo[] = $newPlugin; + if (!is_null($class)) { + $newPlugin = new \stdClass(); + $newPlugin->class = $class; + $newPlugin->source = "core"; + $parts = explode('\\', $newPlugin->class); + $newPlugin->name = end($parts); + + $this->pluginInfo[] = $newPlugin; + } } protected function getFullClassFromFile(\SplFileInfo $fileInfo) @@ -90,15 +94,20 @@ class FilesPluginInformation implements InstalledPluginInformation //TODO: Something less horrible than a regular expression // on the contents of a file $contents = file_get_contents($fileInfo->getRealPath()); - $matches = array(); + preg_match('#class +([A-Za-z]+) +implements#i', $contents, $matches); - $className = $matches[1]; - $matches = array(); - preg_match('#namespace +([A-Za-z\\\\]+);#i', $contents, $matches); - $namespace = $matches[1]; - - return $namespace . '\\' . $className; + if (isset($matches[1])) { + $className = $matches[1]; + + $matches = array(); + preg_match('#namespace +([A-Za-z\\\\]+);#i', $contents, $matches); + $namespace = $matches[1]; + + return $namespace . '\\' . $className; + } else { + return null; + } } } From 6ab7973fd2232e89ed707bb03a48fa1baf953692 Mon Sep 17 00:00:00 2001 From: Marc Aschmann Date: Wed, 6 Aug 2014 17:46:19 +0200 Subject: [PATCH 33/41] Make PHPCI output properly formatted JSON and Yaml files where possible, rather than one-line files. Closes #547 --- PHPCI/Command/InstallCommand.php | 2 +- PHPCI/Controller/PluginController.php | 12 +++++++++++- PHPCI/Controller/SettingsController.php | 7 ++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/PHPCI/Command/InstallCommand.php b/PHPCI/Command/InstallCommand.php index e24fe2f3..a4a0c4bb 100644 --- a/PHPCI/Command/InstallCommand.php +++ b/PHPCI/Command/InstallCommand.php @@ -312,7 +312,7 @@ class InstallCommand extends Command protected function writeConfigFile(array $config) { $dumper = new \Symfony\Component\Yaml\Dumper(); - $yaml = $dumper->dump($config, 2); + $yaml = $dumper->dump($config, 4); file_put_contents($this->configFilePath, $yaml); } diff --git a/PHPCI/Controller/PluginController.php b/PHPCI/Controller/PluginController.php index 5cbb662d..777c846f 100644 --- a/PHPCI/Controller/PluginController.php +++ b/PHPCI/Controller/PluginController.php @@ -109,9 +109,19 @@ class PluginController extends \PHPCI\Controller return json_decode($json, true); } + /** + * Convert array to json and save composer.json + * + * @param $array + */ protected function setComposerJson($array) { - $json = json_encode($array); + if (defined('JSON_PRETTY_PRINT')) { + $json = json_encode($array, JSON_PRETTY_PRINT); + } else { + $json = json_encode($array); + } + file_put_contents(APPLICATION_PATH . 'composer.json', $json); } diff --git a/PHPCI/Controller/SettingsController.php b/PHPCI/Controller/SettingsController.php index bc5558ba..0bb79577 100644 --- a/PHPCI/Controller/SettingsController.php +++ b/PHPCI/Controller/SettingsController.php @@ -138,11 +138,16 @@ class SettingsController extends Controller die; } + /** + * Convert config to yaml and store to file. + * @return mixed + */ protected function storeSettings() { $dumper = new Dumper(); - $yaml = $dumper->dump($this->settings); + $yaml = $dumper->dump($this->settings, 4); file_put_contents(APPLICATION_PATH . 'PHPCI/config.yml', $yaml); + if (error_get_last()) { $error_get_last = error_get_last(); return $error_get_last['message']; From 97ef81ee432c9798918a8c9c041cae761cc50ec3 Mon Sep 17 00:00:00 2001 From: Dmitry Khomutov Date: Mon, 26 May 2014 01:51:21 +0700 Subject: [PATCH 34/41] Added information for windows users in the bootstrap script Closes #491 --- bootstrap.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bootstrap.php b/bootstrap.php index b47a6eb7..112efad4 100755 --- a/bootstrap.php +++ b/bootstrap.php @@ -30,12 +30,12 @@ if (!file_exists($configFile)) { // If we don't have a config file at all, fail at this point and tell the user to install: if (!file_exists($configFile) && (!defined('PHPCI_IS_CONSOLE') || !PHPCI_IS_CONSOLE)) { - die('PHPCI has not yet been installed - Please use the command ./console phpci:install to install it.'); + die('PHPCI has not yet been installed - Please use the command "./console phpci:install" (or "php ./console phpci:install" for Windows) to install it.'); } // If composer has not been run, fail at this point and tell the user to install: if (!file_exists(dirname(__FILE__) . '/vendor/autoload.php') && defined('PHPCI_IS_CONSOLE') && PHPCI_IS_CONSOLE) { - file_put_contents('php://stderr', 'Please install PHPCI with "composer install" before using console'); + file_put_contents('php://stderr', 'Please install PHPCI with "composer install" (or "php composer.phar install" for Windows) before using console'); exit(1); } From 71ce377352e7087c5a50f26684933304515dce7e Mon Sep 17 00:00:00 2001 From: Oliver Nordbjerg Date: Tue, 20 May 2014 11:02:20 +0200 Subject: [PATCH 35/41] Switch build status image to use Shields.io SVG icon. Closes #439 --- PHPCI/Controller/BuildStatusController.php | 16 ++++------------ public/assets/img/build-error.svg | 1 - public/assets/img/build-failed.png | Bin 1959 -> 0 bytes public/assets/img/build-failed.svg | 1 - public/assets/img/build-passing.png | Bin 2344 -> 0 bytes public/assets/img/build-passing.svg | 1 - 6 files changed, 4 insertions(+), 15 deletions(-) delete mode 100644 public/assets/img/build-error.svg delete mode 100644 public/assets/img/build-failed.png delete mode 100644 public/assets/img/build-failed.svg delete mode 100644 public/assets/img/build-passing.png delete mode 100644 public/assets/img/build-passing.svg diff --git a/PHPCI/Controller/BuildStatusController.php b/PHPCI/Controller/BuildStatusController.php index f7304413..5b6cdfd9 100644 --- a/PHPCI/Controller/BuildStatusController.php +++ b/PHPCI/Controller/BuildStatusController.php @@ -68,23 +68,15 @@ class BuildStatusController extends \PHPCI\Controller } /** - * Returns the appropriate build status image for a given project. + * Returns the appropriate build status image in SVG format for a given project. */ public function image($projectId) { $status = $this->getStatus($projectId); - header('Content-Type: image/png'); - die(file_get_contents(APPLICATION_PATH . 'public/assets/img/build-' . $status . '.png')); - } - - /** - * Returns the appropriate build status image in SVG format for a given project. - */ - public function svg($projectId) - { - $status = $this->getStatus($projectId); + $color = ($status == 'passing') ? 'green' : 'red'; + header('Content-Type: image/svg+xml'); - die(file_get_contents(APPLICATION_PATH . 'public/assets/img/build-' . $status . '.svg')); + die(file_get_contents('http://img.shields.io/badge/build-' . $status . '-' . $color . '.svg')); } public function view($projectId) diff --git a/public/assets/img/build-error.svg b/public/assets/img/build-error.svg deleted file mode 100644 index a6567a32..00000000 --- a/public/assets/img/build-error.svg +++ /dev/null @@ -1 +0,0 @@ -buildbuilderrorerror \ No newline at end of file diff --git a/public/assets/img/build-failed.png b/public/assets/img/build-failed.png deleted file mode 100644 index 2aa1e125c5c0206873a645ae94319cb6216941d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1959 zcmV;Y2Uz%tP)dbVG7wVRUJ4ZXi@?ZDjyCFEKDLF*7lRF46!12LMS# zK~!jg?V5i~)b|<3U*GQm$06Jah#lYo6LA3NB-v67unR=CTMkG9L4?o;gNnUm)+c#ICRw?;xVAxM^fa^8~zkBZ(rc2jib~s7w zL>+VQ*XANBME>-?kssHsW&g=@NRv}6UA&0gns58tUQ;iYHRp;@E^;P`(p^XoVN z$*kLZgY=un=o=iRyd*DTN5jExFko$I32Kww)I@eu)2(yc+Zo-pE2z!Q&saV_9&$Vy zAJcU@3OYN(vQN=!$=bFJjb0!21_&tn7vmHBto0z*Z4OoyE#;WWjOo${@BZouGF52+ zZ2nd$?;kmX#{+@@k3Lu;3l31TY8kq6E&uBE?$pU?CtZD(go!?vbe(SA@f59g-f_FZ zAb*xxTLX$7PXhU-3sP$<1)ZI8ga}4J(RY7%lA#fazy4w? z>(<=MC*9}S@k$3rdx!Y`BP#)L%y>&QLGaF*cHUaDRj&AkEV{?Tg5B%BlM)UyCKFR# zUGjIg&4#_bovdx!65*OmBtFh(@0KK_wl=ISEx2tquGZCsC49g{Zp8W(3Q?f6Fb9Cr z!dygAV8Y>?W96Utd*-PFG#N_2@7KQkDyT!Z1F5YIfVA>*(#p#L|C4{GB5E{bH#L#p z(E)fj>)4AghMpJbhaL4*C`6H6uXga4&TfAC+Q%qFftpo?@$>o)z%5C#z*!9qX!Lpj zrnxC|Vj>wkSYXMB_W+R&YZgKH`Yu0x{wlQh&GYCM2G8F*<&y9rc(7y*c zb#9ol;w4Paxahes;=8JefWeG)oMhIMh>^4MuVtU%UOJ)M2|Fk z560Yk+?R|7BCL+w%g?UowSA}f=+kp@qXoQmw+}%8Woinx$!SiWy>iPM%2WlcIvw>kQ4qG{Yd7LwY zqkeYJe{T)e2?u{W*3YzaRvs@c$mZuySFu53O{(Xil=JJ=(k*F+UX)cCzI6+(1D8t zm)Y!BrUlB-M;jZl8w_$86i&Bmp>UbaIE+TwKk$b2+~($xb7T4^_vW=Lc;{d*ZjT31 z5D;&)=JFP2kheG^mZcNQ+{R1hjrw*zG8`lMgD zYQ^nwqkp2B;{0rOZmmJBQqpg^9#8+0B!H+zUr~^aD2lwk?*x`FtnAr)9Ghc`vZ5vN z^e;&Qi0Q@1wvRvO-A{TE1%Vlti;Y#wd3pN=QWVKItM6oD5*@&BxR1^g13YqnAunuQ t8!x|-B#@XzPxAjqG7jH`Bt^dq`5!q~(K%~Sxabuildbuildfailedfailed \ No newline at end of file diff --git a/public/assets/img/build-passing.png b/public/assets/img/build-passing.png deleted file mode 100644 index e74657b7a453901510565b9c57965c8ce7a88967..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2344 zcmV+@3D@?CP)dbVG7wVRUJ4ZXi@?ZDjyCFEKDLF*7lRF46!12!TmN zK~!jg?V4?DQ|A@Oe|B)vBwz=E*@$s)2WiQR2b4m|VoJJ+F%l(eX{RY^p(pJpB%eLT8aec*aU_7i`Y~3L!9F-E?D{)93CT6no9m+ zIgcgJil^NPVqnHjH($NYYkx4Zb;C-wzp$2rr@MKpzKONDi@0`ch{548L7OQ}rMmoS ze(==eaWg!@%$ad`zjn)xd&dZGBJ6V_ACBQe*e&a*rVMLlfl*z zD^{m9;J8d8L!F_H=o-y^%>bw~)W{^Vi1aPDTL4g|E78a`WT$7(NE^!jP<;ufkJSGA z3G4LU{;zn~c#ezKehO3zs482tASD&BZ`9kTQk z08VvY=eK+R#oZ~-4AN!or^C`mfl3~=pGUrLhWSP9VeU9a$;)2A39}XR)mwb@o9CIGnhe0E)l2xe=>l#yh(u7lTqQUhpfGO{ zMFmQZw|kyc=eUcO4qHr4_oYZ)By5|9%s5;Q3>E|CAv4D}91q&YU@-{WwLP^Voo?zi zvE}3zz;k0u6{W}|GE6s2bPRQ1ciE98%c9nXvfr0b5zAL^9kF6_+ORoo=sWe)_SDi? z+!#@`3+ePdpPu2`Ejxex)n?YMc%0AAUZU!4BgfjWQTj{{0HYJ05=|uXv>A5=mTW7R zep_(5+f7{Ob?<2KqQ9U=->Ii#r~^~4iBd(W-+A+pnU=m5Vc+3$&|qnxQdJpnZSUwR z$S9z(xKS8Ix_lkAJ++i(l?unA(T1}>+Wy*IcIqzGq3_h=a5*SzDvQYRArrYiAas9x3F-8;xe9i@x}I)ZKf69SO851C-rDvY*$bk}7VXY)zkS90IZ?Hb z6!VaoS5Cen?3XA?{La^1suQ*=Rh53B-x~pZ@rHbx)5dbsa;jUaG4+~){&zH5Uz+=x zgZ{!jyrJ-&@4eMYD8gp%-(RWXV5^d|UA+Jde&t_(CnfnmGpRvV-M;9#DQt^HBA&`w z7}lU@nD@!NpvSd2+JJej!O{SDM!7cxSEwp5SPU2}hJcJ;m#@P*V&%Y%144pmuo#d^ zq*Ucp`AsF!XniSfDi3;mx~d`=zEg-}BCvw+W!lA=^1>Wp`%nANvg>ch+27nv`<2@a zJ12xB4&dCS8#sJM_NmV6v|P9@?9WL{=2`WFnctLYN=mXyFcurxy<)fDxduxEHm41M zlC1wl0N-ujNC2Msvc9MuW3iD6RfQ139WDp@PCaE!Wi!(HQY0@5`ctMWW4II3GwtHc zI(0Vdzq^=Y?biS}+GgQsn+1Th6bT|kxbG!&NB(W0wfiQyi{~>wF-hCyTYlGi`pGO7 ze=GXMgis9pcpxI3cP^Joq{xzGLim#<%aBT>LKYuvbZO)oG;$3!t7|azn%LR46PwdU zOJ7Ssg%FJvqR-yL;X99elhjZ|v<&;^tIx7ovy3FM$nUsw+{M(rlwBl($C78^aE^24 zVsC)MQzS`j+qgWU4#bn@zGk6JbGRIoHb9P3SlPNc;FkU zGz&CgwGl1DibWz`-@JyGp3UWa&rPn}9OTmV0WMhj{B+xXw1UCmQT~3Si*eUo;rNoQ zx%~2_wJefLqv=On@GZ$gEr$3m?D*E~c9%V%1PfJuMWc;3)veXS^rg+2eq}DIwRgq* zIeyvq-ha07;o)|`Q=_M*%;G1-t9Vh9OPB2q9G;)of){D17h(;UFzBTtX3wDDitlyu{1S6)G+?&=c<-^16 zOu5~NMIyxavO0N28uE;^SS}qGd`G#rjtz!3M=NOSdg_F%9y}SgGEGT#dbY6i>20IV zPzyIc67Btjsy+aW#YVpeXga+%M;md*AJdmJ4M#d~j=8`M&anv&ox6-{^6vBvzXt3s zJGDKvfG4xR{|5S^&QSZU(5W-j9NTbA$nL$#n9XTJDv_eg(+ML=BiBT%jWbN#1x_Ls{VyGr8n979rb@;Pq`Z z+K0uA!~5kMgG{-n&_2JG#S7=MeRCmu51gmVc89XUc$)a|2^S?|(LO9@9Nw2^%|$F0 z^X~rB*uEU3X5T3sqhsV|&yS~l2_673eHdBy*%y5Dc{^f}h>6KbHmv#%Z*E=Btfa)3 z)!$@dayo$FXa|j_dw6D diff --git a/public/assets/img/build-passing.svg b/public/assets/img/build-passing.svg deleted file mode 100644 index 42f797eb..00000000 --- a/public/assets/img/build-passing.svg +++ /dev/null @@ -1 +0,0 @@ -buildbuildpassingpassing \ No newline at end of file From 0b8b2fd3647b566cfa836794d90ef790c3bb08a6 Mon Sep 17 00:00:00 2001 From: Tobias van Beek Date: Mon, 21 Jul 2014 13:42:39 +0200 Subject: [PATCH 36/41] Prevent undefined errors in TapParser if output from scripts failed. Closes #515 --- PHPCI/Plugin/Util/TapParser.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/PHPCI/Plugin/Util/TapParser.php b/PHPCI/Plugin/Util/TapParser.php index 1aa25348..a18e89e5 100644 --- a/PHPCI/Plugin/Util/TapParser.php +++ b/PHPCI/Plugin/Util/TapParser.php @@ -44,7 +44,7 @@ class TapParser throw new \Exception('TapParser only supports TAP version 13'); } - if (preg_match(self::TEST_COVERAGE_PATTERN, $lines[count($lines) - 1])) { + if (isset($lines[count($lines) - 1]) && preg_match(self::TEST_COVERAGE_PATTERN, $lines[count($lines) - 1])) { array_pop($lines); if ($lines[count($lines) - 1] == "") { array_pop($lines); @@ -58,7 +58,8 @@ class TapParser $totalTests = (int) $matches[2]; } - if (preg_match(self::TEST_COUNTS_PATTERN, $lines[count($lines) - 1], $matches)) { + if (isset($lines[count($lines) - 1]) && + preg_match(self::TEST_COUNTS_PATTERN, $lines[count($lines) - 1], $matches)) { array_pop($lines); $totalTests = (int) $matches[2]; } From aa27bf80c721c68049593e193309476745ef39a8 Mon Sep 17 00:00:00 2001 From: "michael.schramm" Date: Wed, 5 Nov 2014 01:15:37 +0100 Subject: [PATCH 37/41] Improved PHPSpec plugin. Now includes a UI Plugin. --- PHPCI/Plugin/PhpSpec.php | 85 ++++++++++++++++++++++- public/assets/js/build-plugins/phpspec.js | 80 +++++++++++++++++++++ 2 files changed, 163 insertions(+), 2 deletions(-) create mode 100644 public/assets/js/build-plugins/phpspec.js diff --git a/PHPCI/Plugin/PhpSpec.php b/PHPCI/Plugin/PhpSpec.php index 181c67e9..7fbc332e 100644 --- a/PHPCI/Plugin/PhpSpec.php +++ b/PHPCI/Plugin/PhpSpec.php @@ -58,10 +58,91 @@ class PhpSpec implements PHPCI\Plugin return false; } - $success = $this->phpci->executeCommand($phpspec . ' --format=pretty --no-code-generation run'); + $success = $this->phpci->executeCommand($phpspec . ' --format=junit --no-code-generation run'); + $output = $this->phpci->getLastOutput(); chdir($curdir); - + + /* + * process xml output + * + * + * + * + * + * attributes(); + $data = array( + 'time' => (float)$attr['time'], + 'tests' => (int)$attr['tests'], + 'failures' => (int)$attr['failures'], + 'errors' => (int)$attr['errors'], + + // now all the tests + 'suites' => array() + ); + + /** + * @var \SimpleXMLElement $group + */ + foreach ($xml->xpath('testsuite') as $group) { + $attr = $group->attributes(); + $suite = array( + 'name' => (String)$attr['name'], + 'time' => (float)$attr['time'], + 'tests' => (int)$attr['tests'], + 'failures' => (int)$attr['failures'], + 'errors' => (int)$attr['errors'], + 'skipped' => (int)$attr['skipped'], + + // now the cases + 'cases' => array() + ); + + /** + * @var \SimpleXMLElement $child + */ + foreach ($group->xpath('testcase') as $child) { + $attr = $child->attributes(); + $case = array( + 'name' => (String)$attr['name'], + 'classname' => (String)$attr['classname'], + 'time' => (float)$attr['time'], + 'status' => (String)$attr['status'], + ); + + if ($case['status']=='failed') { + $error = array(); + /* + * ok, sad, we had an error + * + * there should be one - foreach makes this easier + */ + foreach ($child->xpath('failure') as $failure) { + $attr = $failure->attributes(); + $error['type'] = (String)$attr['type']; + $error['message'] = (String)$attr['message']; + } + + foreach ($child->xpath('system-err') as $system_err) { + $error['raw'] = (String)$system_err; + } + + $case['error'] = $error; + } + + $suite['cases'][] = $case; + } + + $data['suites'][] = $suite; + } + + $this->build->storeMeta('phpspec', $data); + + return $success; } } diff --git a/public/assets/js/build-plugins/phpspec.js b/public/assets/js/build-plugins/phpspec.js new file mode 100644 index 00000000..be7ac7b9 --- /dev/null +++ b/public/assets/js/build-plugins/phpspec.js @@ -0,0 +1,80 @@ +var phpspecPlugin = PHPCI.UiPlugin.extend({ + id: 'build-phpspec-errors', + css: 'col-lg-12 col-md-12 col-sm-12 col-xs-12', + title: 'PHPSpec', + lastData: null, + displayOnUpdate: false, + box: true, + rendered: false, + + register: function() { + var self = this; + var query = PHPCI.registerQuery('phpspec', -1, {key: 'phpspec'}) + + $(window).on('phpspec', function(data) { + self.onUpdate(data); + }); + + $(window).on('build-updated', function() { + if (!self.rendered) { + self.displayOnUpdate = true; + query(); + } + }); + }, + + render: function() { + + return $('
' + + '' + + '' + + ' ' + + ' ' + + ' ' + + '' + + '
SuiteTestResult
'); + }, + + onUpdate: function(e) { + if (!e.queryData) { + $('#build-phpspec-errors').hide(); + return; + } + + this.rendered = true; + this.lastData = e.queryData; + + var tests = this.lastData[0].meta_value; + var tbody = $('#phpspec-data tbody'); + tbody.empty(); + + for (var i in tests.suites) { + var test_suite = tests.suites[i]; + + for(var k in test_suite.cases){ + var test_case = test_suite.cases[k]; + + var row = $( + ''+ + ''+test_suite.name+''+ + ''+test_case.name+''+ + ''+(test_case.message?test_case.message:'OK')+''+ + '' + ); + + if (test_case.status!='passed') { + row.addClass('danger'); + } else { + row.addClass('success'); + } + + tbody.append(row); + } + } + + // show plugin once preparation of grid is done + $('#build-phpspec-errors').show(); + } +}); + +PHPCI.registerPlugin(new phpspecPlugin()); From 308efb603344e7adf57d0f55eae17ea28c34f966 Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Wed, 3 Dec 2014 12:33:38 +0000 Subject: [PATCH 38/41] Fixing CS errors in bootstrap.php --- bootstrap.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bootstrap.php b/bootstrap.php index 112efad4..c2f9c69b 100755 --- a/bootstrap.php +++ b/bootstrap.php @@ -30,12 +30,18 @@ if (!file_exists($configFile)) { // If we don't have a config file at all, fail at this point and tell the user to install: if (!file_exists($configFile) && (!defined('PHPCI_IS_CONSOLE') || !PHPCI_IS_CONSOLE)) { - die('PHPCI has not yet been installed - Please use the command "./console phpci:install" (or "php ./console phpci:install" for Windows) to install it.'); + $message = 'PHPCI has not yet been installed - Please use the command "./console phpci:install" '; + $message .= '(or "php ./console phpci:install" for Windows) to install it.'; + + die($message); } // If composer has not been run, fail at this point and tell the user to install: if (!file_exists(dirname(__FILE__) . '/vendor/autoload.php') && defined('PHPCI_IS_CONSOLE') && PHPCI_IS_CONSOLE) { - file_put_contents('php://stderr', 'Please install PHPCI with "composer install" (or "php composer.phar install" for Windows) before using console'); + $message = 'Please install PHPCI with "composer install" (or "php composer.phar install"'; + $message .= ' for Windows) before using console'; + + file_put_contents('php://stderr', $message); exit(1); } From 43fef1539f8c25c2ba61042d3f2995c5797aaa7e Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Tue, 2 Dec 2014 16:26:55 +0000 Subject: [PATCH 39/41] Front-End Upgrade: New UI Based on Admin LTE. Closes #673 --- PHPCI/Application.php | 31 +- PHPCI/Command/DaemoniseCommand.php | 1 + PHPCI/Command/RunCommand.php | 27 +- PHPCI/Controller.php | 15 +- PHPCI/Controller/BuildController.php | 55 +- PHPCI/Controller/HomeController.php | 24 +- PHPCI/Controller/PluginController.php | 21 +- PHPCI/Controller/ProjectController.php | 19 +- PHPCI/Controller/SessionController.php | 2 +- PHPCI/Controller/SettingsController.php | 9 + PHPCI/Controller/UserController.php | 25 +- .../20140730143702_fix_database_columns.php | 12 + PHPCI/Model/Base/BuildBase.php | 11 +- PHPCI/Model/Base/BuildMetaBase.php | 10 +- PHPCI/Model/Base/ProjectBase.php | 86 +- PHPCI/Model/Base/UserBase.php | 8 +- PHPCI/Model/Project.php | 24 + PHPCI/Store/Base/BuildMetaStoreBase.php | 8 +- PHPCI/Store/Base/BuildStoreBase.php | 8 +- PHPCI/Store/Base/ProjectStoreBase.php | 4 +- PHPCI/Store/BuildStore.php | 33 +- PHPCI/Store/ProjectStore.php | 23 + PHPCI/View/Build/header-row.phtml | 20 + PHPCI/View/Build/view.phtml | 100 +- PHPCI/View/BuildStatus/view.phtml | 10 +- PHPCI/View/BuildsTable.phtml | 17 +- PHPCI/View/Home/index.phtml | 179 +- PHPCI/View/Plugin/index.phtml | 169 +- PHPCI/View/Project/view.phtml | 271 +- PHPCI/View/ProjectForm.phtml | 41 +- PHPCI/View/Session/forgotPassword.phtml | 6 +- PHPCI/View/Session/resetPassword.phtml | 4 +- PHPCI/View/Settings/index.phtml | 28 +- PHPCI/View/SummaryTable.phtml | 69 +- PHPCI/View/User/index.phtml | 113 +- PHPCI/View/User/profile.phtml | 10 +- PHPCI/View/UserForm.phtml | 21 +- PHPCI/View/exception.phtml | 6 +- PHPCI/View/layout.phtml | 348 +- composer.json | 2 +- composer.lock | 12 +- public/assets/css/AdminLTE.css | 3539 +++++ public/assets/css/bootstrap-slider/slider.css | 169 + public/assets/css/bootstrap-theme.min.css | 2 +- .../bootstrap3-wysihtml5.css | 102 + .../bootstrap3-wysihtml5.min.css | 3 + public/assets/css/bootstrap.min.css | 2 +- .../css/colorpicker/bootstrap-colorpicker.css | 214 + .../colorpicker/bootstrap-colorpicker.min.css | 9 + .../css/datatables/dataTables.bootstrap.css | 223 + .../assets/css/datatables/images/sort_asc.png | Bin 0 -> 1118 bytes .../datatables/images/sort_asc_disabled.png | Bin 0 -> 1050 bytes .../css/datatables/images/sort_both.png | Bin 0 -> 1136 bytes .../css/datatables/images/sort_desc.png | Bin 0 -> 1127 bytes .../datatables/images/sort_desc_disabled.png | Bin 0 -> 1045 bytes public/assets/css/datepicker/datepicker3.css | 790 + .../daterangepicker/daterangepicker-bs3.css | 245 + public/assets/css/iCheck/all.css | 61 + public/assets/css/iCheck/flat/_all.css | 560 + public/assets/css/iCheck/flat/aero.css | 56 + public/assets/css/iCheck/flat/aero.png | Bin 0 -> 1520 bytes public/assets/css/iCheck/flat/aero@2x.png | Bin 0 -> 3218 bytes public/assets/css/iCheck/flat/blue.css | 56 + public/assets/css/iCheck/flat/blue.png | Bin 0 -> 1518 bytes public/assets/css/iCheck/flat/blue@2x.png | Bin 0 -> 3217 bytes public/assets/css/iCheck/flat/flat.css | 56 + public/assets/css/iCheck/flat/flat.png | Bin 0 -> 1515 bytes public/assets/css/iCheck/flat/flat@2x.png | Bin 0 -> 3217 bytes public/assets/css/iCheck/flat/green.css | 56 + public/assets/css/iCheck/flat/green.png | Bin 0 -> 1444 bytes public/assets/css/iCheck/flat/green@2x.png | Bin 0 -> 3117 bytes public/assets/css/iCheck/flat/grey.css | 56 + public/assets/css/iCheck/flat/grey.png | Bin 0 -> 1516 bytes public/assets/css/iCheck/flat/grey@2x.png | Bin 0 -> 3217 bytes public/assets/css/iCheck/flat/orange.css | 56 + public/assets/css/iCheck/flat/orange.png | Bin 0 -> 1518 bytes public/assets/css/iCheck/flat/orange@2x.png | Bin 0 -> 3275 bytes public/assets/css/iCheck/flat/pink.css | 56 + public/assets/css/iCheck/flat/pink.png | Bin 0 -> 1522 bytes public/assets/css/iCheck/flat/pink@2x.png | Bin 0 -> 3218 bytes public/assets/css/iCheck/flat/purple.css | 56 + public/assets/css/iCheck/flat/purple.png | Bin 0 -> 1519 bytes public/assets/css/iCheck/flat/purple@2x.png | Bin 0 -> 3218 bytes public/assets/css/iCheck/flat/red.css | 56 + public/assets/css/iCheck/flat/red.png | Bin 0 -> 1516 bytes public/assets/css/iCheck/flat/red@2x.png | Bin 0 -> 3276 bytes public/assets/css/iCheck/flat/yellow.css | 56 + public/assets/css/iCheck/flat/yellow.png | Bin 0 -> 1516 bytes public/assets/css/iCheck/flat/yellow@2x.png | Bin 0 -> 3216 bytes .../assets/css/iCheck/futurico/futurico.css | 56 + .../assets/css/iCheck/futurico/futurico.png | Bin 0 -> 1734 bytes .../css/iCheck/futurico/futurico@2x.png | Bin 0 -> 3446 bytes public/assets/css/iCheck/line/_all.css | 740 + public/assets/css/iCheck/line/aero.css | 74 + public/assets/css/iCheck/line/blue.css | 74 + public/assets/css/iCheck/line/green.css | 74 + public/assets/css/iCheck/line/grey.css | 74 + public/assets/css/iCheck/line/line.css | 74 + public/assets/css/iCheck/line/line.png | Bin 0 -> 588 bytes public/assets/css/iCheck/line/line@2x.png | Bin 0 -> 1073 bytes public/assets/css/iCheck/line/orange.css | 74 + public/assets/css/iCheck/line/pink.css | 74 + public/assets/css/iCheck/line/purple.css | 74 + public/assets/css/iCheck/line/red.css | 74 + public/assets/css/iCheck/line/yellow.css | 74 + public/assets/css/iCheck/minimal/_all.css | 557 + public/assets/css/iCheck/minimal/aero.css | 62 + public/assets/css/iCheck/minimal/aero.png | Bin 0 -> 1151 bytes public/assets/css/iCheck/minimal/aero@2x.png | Bin 0 -> 1409 bytes public/assets/css/iCheck/minimal/blue.css | 62 + public/assets/css/iCheck/minimal/blue.png | Bin 0 -> 1132 bytes public/assets/css/iCheck/minimal/blue@2x.png | Bin 0 -> 1410 bytes public/assets/css/iCheck/minimal/green.css | 62 + public/assets/css/iCheck/minimal/green.png | Bin 0 -> 1143 bytes public/assets/css/iCheck/minimal/green@2x.png | Bin 0 -> 1408 bytes public/assets/css/iCheck/minimal/grey.css | 62 + public/assets/css/iCheck/minimal/grey.png | Bin 0 -> 1142 bytes public/assets/css/iCheck/minimal/grey@2x.png | Bin 0 -> 1407 bytes public/assets/css/iCheck/minimal/minimal.css | 62 + public/assets/css/iCheck/minimal/minimal.png | Bin 0 -> 1114 bytes .../assets/css/iCheck/minimal/minimal@2x.png | Bin 0 -> 1410 bytes public/assets/css/iCheck/minimal/orange.css | 62 + public/assets/css/iCheck/minimal/orange.png | Bin 0 -> 1139 bytes .../assets/css/iCheck/minimal/orange@2x.png | Bin 0 -> 1407 bytes public/assets/css/iCheck/minimal/pink.css | 62 + public/assets/css/iCheck/minimal/pink.png | Bin 0 -> 1150 bytes public/assets/css/iCheck/minimal/pink@2x.png | Bin 0 -> 1409 bytes public/assets/css/iCheck/minimal/purple.css | 62 + public/assets/css/iCheck/minimal/purple.png | Bin 0 -> 1132 bytes .../assets/css/iCheck/minimal/purple@2x.png | Bin 0 -> 1409 bytes public/assets/css/iCheck/minimal/red.css | 62 + public/assets/css/iCheck/minimal/red.png | Bin 0 -> 1130 bytes public/assets/css/iCheck/minimal/red@2x.png | Bin 0 -> 1410 bytes public/assets/css/iCheck/minimal/yellow.css | 62 + public/assets/css/iCheck/minimal/yellow.png | Bin 0 -> 1135 bytes .../assets/css/iCheck/minimal/yellow@2x.png | Bin 0 -> 1406 bytes public/assets/css/iCheck/polaris/polaris.css | 62 + public/assets/css/iCheck/polaris/polaris.png | Bin 0 -> 6401 bytes .../assets/css/iCheck/polaris/polaris@2x.png | Bin 0 -> 16760 bytes public/assets/css/iCheck/square/_all.css | 620 + public/assets/css/iCheck/square/aero.css | 62 + public/assets/css/iCheck/square/aero.png | Bin 0 -> 2167 bytes public/assets/css/iCheck/square/aero@2x.png | Bin 0 -> 4455 bytes public/assets/css/iCheck/square/blue.css | 62 + public/assets/css/iCheck/square/blue.png | Bin 0 -> 2185 bytes public/assets/css/iCheck/square/blue@2x.png | Bin 0 -> 4485 bytes public/assets/css/iCheck/square/green.css | 62 + public/assets/css/iCheck/square/green.png | Bin 0 -> 2193 bytes public/assets/css/iCheck/square/green@2x.png | Bin 0 -> 4498 bytes public/assets/css/iCheck/square/grey.css | 62 + public/assets/css/iCheck/square/grey.png | Bin 0 -> 2186 bytes public/assets/css/iCheck/square/grey@2x.png | Bin 0 -> 4483 bytes public/assets/css/iCheck/square/orange.css | 62 + public/assets/css/iCheck/square/orange.png | Bin 0 -> 2181 bytes public/assets/css/iCheck/square/orange@2x.png | Bin 0 -> 4474 bytes public/assets/css/iCheck/square/pink.css | 62 + public/assets/css/iCheck/square/pink.png | Bin 0 -> 2189 bytes public/assets/css/iCheck/square/pink@2x.png | Bin 0 -> 4479 bytes public/assets/css/iCheck/square/purple.css | 62 + public/assets/css/iCheck/square/purple.png | Bin 0 -> 2188 bytes public/assets/css/iCheck/square/purple@2x.png | Bin 0 -> 4501 bytes public/assets/css/iCheck/square/red.css | 62 + public/assets/css/iCheck/square/red.png | Bin 0 -> 2190 bytes public/assets/css/iCheck/square/red@2x.png | Bin 0 -> 4490 bytes public/assets/css/iCheck/square/square.css | 62 + public/assets/css/iCheck/square/square.png | Bin 0 -> 2175 bytes public/assets/css/iCheck/square/square@2x.png | Bin 0 -> 4478 bytes public/assets/css/iCheck/square/yellow.css | 62 + public/assets/css/iCheck/square/yellow.png | Bin 0 -> 2131 bytes public/assets/css/iCheck/square/yellow@2x.png | Bin 0 -> 4385 bytes public/assets/css/images/animated-overlay.gif | Bin 0 -> 1738 bytes .../css/images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 212 bytes .../images/ui-bg_flat_55_fbec88_40x100.png | Bin 0 -> 206 bytes .../images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 0 -> 336 bytes .../images/ui-bg_glass_85_dfeffc_1x400.png | Bin 0 -> 341 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 332 bytes .../ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 0 -> 5824 bytes .../ui-bg_inset-hard_100_f5f8f9_1x100.png | Bin 0 -> 333 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 0 -> 292 bytes .../css/images/ui-icons_217bc0_256x240.png | Bin 0 -> 4549 bytes .../css/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4549 bytes .../css/images/ui-icons_469bdd_256x240.png | Bin 0 -> 4549 bytes .../css/images/ui-icons_6da8d5_256x240.png | Bin 0 -> 4549 bytes .../css/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4549 bytes .../css/images/ui-icons_d8e7f3_256x240.png | Bin 0 -> 4549 bytes .../css/images/ui-icons_f9bd01_256x240.png | Bin 0 -> 4549 bytes .../assets/css/ionslider/ion.rangeSlider.css | 126 + .../ionslider/ion.rangeSlider.skinFlat.css | 89 + .../ionslider/ion.rangeSlider.skinNice.css | 85 + .../jvectormap/jquery-jvectormap-1.2.2.css | 36 + public/assets/css/morris/morris.css | 2 + public/assets/css/phpci.css | 24 - .../css/timepicker/bootstrap-timepicker.css | 121 + .../timepicker/bootstrap-timepicker.min.css | 10 + .../fonts/glyphicons-halflings-regular.eot | Bin 20335 -> 20290 bytes .../fonts/glyphicons-halflings-regular.svg | 94 +- .../fonts/glyphicons-halflings-regular.ttf | Bin 41280 -> 41236 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23320 -> 23292 bytes public/assets/img/ajax-loader.gif | Bin 0 -> 7364 bytes public/assets/img/ajax-loader1.gif | Bin 0 -> 8238 bytes public/assets/img/avatar.png | Bin 0 -> 27738 bytes public/assets/img/avatar04.png | Bin 0 -> 44586 bytes public/assets/img/avatar2.png | Bin 0 -> 28512 bytes public/assets/img/avatar3.png | Bin 0 -> 32476 bytes public/assets/img/avatar5.png | Bin 0 -> 24988 bytes public/assets/img/blur-background04.jpg | Bin 0 -> 402286 bytes public/assets/img/blur-background08.jpg | Bin 0 -> 378156 bytes public/assets/img/blur-background09.jpg | Bin 0 -> 390733 bytes .../alpha-horizontal.png | Bin 0 -> 3635 bytes .../img/bootstrap-colorpicker/alpha.png | Bin 0 -> 3271 bytes .../bootstrap-colorpicker/hue-horizontal.png | Bin 0 -> 2837 bytes .../assets/img/bootstrap-colorpicker/hue.png | Bin 0 -> 2972 bytes .../img/bootstrap-colorpicker/saturation.png | Bin 0 -> 8817 bytes public/assets/img/credit/american-express.png | Bin 0 -> 2796 bytes public/assets/img/credit/cirrus.png | Bin 0 -> 1872 bytes public/assets/img/credit/mastercard.png | Bin 0 -> 1988 bytes public/assets/img/credit/mestro.png | Bin 0 -> 1981 bytes public/assets/img/credit/paypal.png | Bin 0 -> 2664 bytes public/assets/img/credit/paypal2.png | Bin 0 -> 1416 bytes public/assets/img/credit/visa.png | Bin 0 -> 1199 bytes public/assets/img/icons.png | Bin 0 -> 1896 bytes public/assets/img/sprite-skin-flat.png | Bin 0 -> 352 bytes public/assets/img/sprite-skin-nice.png | Bin 0 -> 1022 bytes public/assets/img/user-bg.png | Bin 0 -> 73815 bytes public/assets/img/user.jpg | Bin 0 -> 19475 bytes public/assets/img/user2.jpg | Bin 0 -> 23678 bytes public/assets/js/AdminLTE/app.js | 1054 ++ public/assets/js/AdminLTE/dashboard.js | 252 + public/assets/js/AdminLTE/demo.js | 81 + public/assets/js/build-plugins/loc.js | 8 +- public/assets/js/build-plugins/log.js | 14 +- public/assets/js/build-plugins/phpcpd.js | 23 +- public/assets/js/build-plugins/phpcs.js | 22 +- public/assets/js/build-plugins/phpdoccheck.js | 26 +- public/assets/js/build-plugins/phpmd.js | 22 +- public/assets/js/build-plugins/phpspec.js | 6 +- public/assets/js/build-plugins/phpunit.js | 18 +- public/assets/js/build-plugins/time.js | 31 +- public/assets/js/build-plugins/warnings.js | 8 +- public/assets/js/build.js | 148 + public/assets/js/phpci.js | 342 +- .../bootstrap-slider/bootstrap-slider.js | 1167 ++ .../bootstrap3-wysihtml5.all.min.js | 6 + .../bootstrap3-wysihtml5.js | 350 + .../colorpicker/bootstrap-colorpicker.js | 949 ++ .../colorpicker/bootstrap-colorpicker.min.js | 1 + .../datatables/dataTables.bootstrap.js | 250 + .../plugins/datatables/jquery.dataTables.js | 12099 ++++++++++++++++ .../datepicker/bootstrap-datepicker.js | 1671 +++ .../locales/bootstrap-datepicker.ar.js | 15 + .../locales/bootstrap-datepicker.az.js | 12 + .../locales/bootstrap-datepicker.bg.js | 14 + .../locales/bootstrap-datepicker.ca.js | 14 + .../locales/bootstrap-datepicker.cs.js | 15 + .../locales/bootstrap-datepicker.cy.js | 14 + .../locales/bootstrap-datepicker.da.js | 15 + .../locales/bootstrap-datepicker.de.js | 17 + .../locales/bootstrap-datepicker.el.js | 13 + .../locales/bootstrap-datepicker.es.js | 14 + .../locales/bootstrap-datepicker.et.js | 18 + .../locales/bootstrap-datepicker.fa.js | 17 + .../locales/bootstrap-datepicker.fi.js | 16 + .../locales/bootstrap-datepicker.fr.js | 17 + .../locales/bootstrap-datepicker.gl.js | 11 + .../locales/bootstrap-datepicker.he.js | 15 + .../locales/bootstrap-datepicker.hr.js | 13 + .../locales/bootstrap-datepicker.hu.js | 16 + .../locales/bootstrap-datepicker.id.js | 15 + .../locales/bootstrap-datepicker.is.js | 14 + .../locales/bootstrap-datepicker.it.js | 17 + .../locales/bootstrap-datepicker.ja.js | 15 + .../locales/bootstrap-datepicker.ka.js | 17 + .../locales/bootstrap-datepicker.kk.js | 15 + .../locales/bootstrap-datepicker.kr.js | 13 + .../locales/bootstrap-datepicker.lt.js | 16 + .../locales/bootstrap-datepicker.lv.js | 16 + .../locales/bootstrap-datepicker.mk.js | 15 + .../locales/bootstrap-datepicker.ms.js | 14 + .../locales/bootstrap-datepicker.nb.js | 14 + .../locales/bootstrap-datepicker.nl-BE.js | 17 + .../locales/bootstrap-datepicker.nl.js | 14 + .../locales/bootstrap-datepicker.no.js | 16 + .../locales/bootstrap-datepicker.pl.js | 15 + .../locales/bootstrap-datepicker.pt-BR.js | 15 + .../locales/bootstrap-datepicker.pt.js | 16 + .../locales/bootstrap-datepicker.ro.js | 16 + .../locales/bootstrap-datepicker.rs-latin.js | 14 + .../locales/bootstrap-datepicker.rs.js | 14 + .../locales/bootstrap-datepicker.ru.js | 15 + .../locales/bootstrap-datepicker.sk.js | 15 + .../locales/bootstrap-datepicker.sl.js | 14 + .../locales/bootstrap-datepicker.sq.js | 15 + .../locales/bootstrap-datepicker.sv.js | 16 + .../locales/bootstrap-datepicker.sw.js | 15 + .../locales/bootstrap-datepicker.th.js | 14 + .../locales/bootstrap-datepicker.tr.js | 16 + .../locales/bootstrap-datepicker.ua.js | 15 + .../locales/bootstrap-datepicker.vi.js | 16 + .../locales/bootstrap-datepicker.zh-CN.js | 16 + .../locales/bootstrap-datepicker.zh-TW.js | 17 + .../daterangepicker/daterangepicker.js | 883 ++ public/assets/js/plugins/flot/excanvas.js | 1428 ++ public/assets/js/plugins/flot/excanvas.min.js | 1 + .../js/plugins/flot/jquery.colorhelpers.js | 180 + .../plugins/flot/jquery.colorhelpers.min.js | 1 + .../js/plugins/flot/jquery.flot.canvas.js | 345 + .../js/plugins/flot/jquery.flot.canvas.min.js | 1 + .../js/plugins/flot/jquery.flot.categories.js | 190 + .../flot/jquery.flot.categories.min.js | 1 + .../js/plugins/flot/jquery.flot.crosshair.js | 176 + .../plugins/flot/jquery.flot.crosshair.min.js | 1 + .../js/plugins/flot/jquery.flot.errorbars.js | 353 + .../plugins/flot/jquery.flot.errorbars.min.js | 1 + .../plugins/flot/jquery.flot.fillbetween.js | 226 + .../flot/jquery.flot.fillbetween.min.js | 1 + .../js/plugins/flot/jquery.flot.image.js | 241 + .../js/plugins/flot/jquery.flot.image.min.js | 1 + public/assets/js/plugins/flot/jquery.flot.js | 3137 ++++ .../assets/js/plugins/flot/jquery.flot.min.js | 2 + .../js/plugins/flot/jquery.flot.navigate.js | 346 + .../plugins/flot/jquery.flot.navigate.min.js | 1 + .../assets/js/plugins/flot/jquery.flot.pie.js | 817 ++ .../js/plugins/flot/jquery.flot.pie.min.js | 1 + .../js/plugins/flot/jquery.flot.resize.js | 60 + .../js/plugins/flot/jquery.flot.resize.min.js | 1 + .../js/plugins/flot/jquery.flot.selection.js | 360 + .../plugins/flot/jquery.flot.selection.min.js | 1 + .../js/plugins/flot/jquery.flot.stack.js | 188 + .../js/plugins/flot/jquery.flot.stack.min.js | 1 + .../js/plugins/flot/jquery.flot.symbol.js | 71 + .../js/plugins/flot/jquery.flot.symbol.min.js | 1 + .../js/plugins/flot/jquery.flot.threshold.js | 142 + .../plugins/flot/jquery.flot.threshold.min.js | 1 + .../js/plugins/flot/jquery.flot.time.js | 431 + .../js/plugins/flot/jquery.flot.time.min.js | 1 + public/assets/js/plugins/iCheck/icheck.js | 506 + public/assets/js/plugins/iCheck/icheck.min.js | 10 + .../jquery.inputmask.date.extensions.js | 488 + .../input-mask/jquery.inputmask.extensions.js | 122 + .../js/plugins/input-mask/jquery.inputmask.js | 1632 +++ .../jquery.inputmask.numeric.extensions.js | 177 + .../jquery.inputmask.phone.extensions.js | 50 + .../jquery.inputmask.regex.extensions.js | 170 + .../input-mask/phone-codes/phone-be.json | 45 + .../input-mask/phone-codes/phone-codes.json | 294 + .../plugins/input-mask/phone-codes/readme.txt | 1 + .../plugins/ionslider/ion.rangeSlider.min.js | 22 + .../js/plugins/jqueryKnob/jquery.knob.js | 764 + .../jvectormap/jquery-jvectormap-1.2.2.min.js | 8 + .../jquery-jvectormap-world-mill-en.js | 1 + public/assets/js/plugins/misc/html5shiv.js | 8 + .../js/plugins/misc/jquery.ba-resize.min.js | 9 + .../js/plugins/misc/jquery.placeholder.js | 187 + .../assets/js/plugins/misc/modernizr.min.js | 4 + public/assets/js/plugins/misc/respond.min.js | 1 + public/assets/js/plugins/morris/morris.js | 1888 +++ public/assets/js/plugins/morris/morris.min.js | 2 + .../plugins/slimScroll/jquery.slimscroll.js | 464 + .../slimScroll/jquery.slimscroll.min.js | 16 + .../plugins/slimScroll/slimScroll.jquery.json | 30 + .../js/plugins/sparkline/jquery.sparkline.js | 3054 ++++ .../plugins/sparkline/jquery.sparkline.min.js | 5 + .../timepicker/bootstrap-timepicker.js | 903 ++ .../timepicker/bootstrap-timepicker.min.js | 5 + 364 files changed, 51736 insertions(+), 1001 deletions(-) create mode 100644 PHPCI/View/Build/header-row.phtml create mode 100755 public/assets/css/AdminLTE.css create mode 100755 public/assets/css/bootstrap-slider/slider.css create mode 100755 public/assets/css/bootstrap-wysihtml5/bootstrap3-wysihtml5.css create mode 100755 public/assets/css/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css create mode 100755 public/assets/css/colorpicker/bootstrap-colorpicker.css create mode 100755 public/assets/css/colorpicker/bootstrap-colorpicker.min.css create mode 100755 public/assets/css/datatables/dataTables.bootstrap.css create mode 100755 public/assets/css/datatables/images/sort_asc.png create mode 100755 public/assets/css/datatables/images/sort_asc_disabled.png create mode 100755 public/assets/css/datatables/images/sort_both.png create mode 100755 public/assets/css/datatables/images/sort_desc.png create mode 100755 public/assets/css/datatables/images/sort_desc_disabled.png create mode 100755 public/assets/css/datepicker/datepicker3.css create mode 100755 public/assets/css/daterangepicker/daterangepicker-bs3.css create mode 100755 public/assets/css/iCheck/all.css create mode 100755 public/assets/css/iCheck/flat/_all.css create mode 100755 public/assets/css/iCheck/flat/aero.css create mode 100755 public/assets/css/iCheck/flat/aero.png create mode 100755 public/assets/css/iCheck/flat/aero@2x.png create mode 100755 public/assets/css/iCheck/flat/blue.css create mode 100755 public/assets/css/iCheck/flat/blue.png create mode 100755 public/assets/css/iCheck/flat/blue@2x.png create mode 100755 public/assets/css/iCheck/flat/flat.css create mode 100755 public/assets/css/iCheck/flat/flat.png create mode 100755 public/assets/css/iCheck/flat/flat@2x.png create mode 100755 public/assets/css/iCheck/flat/green.css create mode 100755 public/assets/css/iCheck/flat/green.png create mode 100755 public/assets/css/iCheck/flat/green@2x.png create mode 100755 public/assets/css/iCheck/flat/grey.css create mode 100755 public/assets/css/iCheck/flat/grey.png create mode 100755 public/assets/css/iCheck/flat/grey@2x.png create mode 100755 public/assets/css/iCheck/flat/orange.css create mode 100755 public/assets/css/iCheck/flat/orange.png create mode 100755 public/assets/css/iCheck/flat/orange@2x.png create mode 100755 public/assets/css/iCheck/flat/pink.css create mode 100755 public/assets/css/iCheck/flat/pink.png create mode 100755 public/assets/css/iCheck/flat/pink@2x.png create mode 100755 public/assets/css/iCheck/flat/purple.css create mode 100755 public/assets/css/iCheck/flat/purple.png create mode 100755 public/assets/css/iCheck/flat/purple@2x.png create mode 100755 public/assets/css/iCheck/flat/red.css create mode 100755 public/assets/css/iCheck/flat/red.png create mode 100755 public/assets/css/iCheck/flat/red@2x.png create mode 100755 public/assets/css/iCheck/flat/yellow.css create mode 100755 public/assets/css/iCheck/flat/yellow.png create mode 100755 public/assets/css/iCheck/flat/yellow@2x.png create mode 100755 public/assets/css/iCheck/futurico/futurico.css create mode 100755 public/assets/css/iCheck/futurico/futurico.png create mode 100755 public/assets/css/iCheck/futurico/futurico@2x.png create mode 100755 public/assets/css/iCheck/line/_all.css create mode 100755 public/assets/css/iCheck/line/aero.css create mode 100755 public/assets/css/iCheck/line/blue.css create mode 100755 public/assets/css/iCheck/line/green.css create mode 100755 public/assets/css/iCheck/line/grey.css create mode 100755 public/assets/css/iCheck/line/line.css create mode 100755 public/assets/css/iCheck/line/line.png create mode 100755 public/assets/css/iCheck/line/line@2x.png create mode 100755 public/assets/css/iCheck/line/orange.css create mode 100755 public/assets/css/iCheck/line/pink.css create mode 100755 public/assets/css/iCheck/line/purple.css create mode 100755 public/assets/css/iCheck/line/red.css create mode 100755 public/assets/css/iCheck/line/yellow.css create mode 100755 public/assets/css/iCheck/minimal/_all.css create mode 100755 public/assets/css/iCheck/minimal/aero.css create mode 100755 public/assets/css/iCheck/minimal/aero.png create mode 100755 public/assets/css/iCheck/minimal/aero@2x.png create mode 100755 public/assets/css/iCheck/minimal/blue.css create mode 100755 public/assets/css/iCheck/minimal/blue.png create mode 100755 public/assets/css/iCheck/minimal/blue@2x.png create mode 100755 public/assets/css/iCheck/minimal/green.css create mode 100755 public/assets/css/iCheck/minimal/green.png create mode 100755 public/assets/css/iCheck/minimal/green@2x.png create mode 100755 public/assets/css/iCheck/minimal/grey.css create mode 100755 public/assets/css/iCheck/minimal/grey.png create mode 100755 public/assets/css/iCheck/minimal/grey@2x.png create mode 100755 public/assets/css/iCheck/minimal/minimal.css create mode 100755 public/assets/css/iCheck/minimal/minimal.png create mode 100755 public/assets/css/iCheck/minimal/minimal@2x.png create mode 100755 public/assets/css/iCheck/minimal/orange.css create mode 100755 public/assets/css/iCheck/minimal/orange.png create mode 100755 public/assets/css/iCheck/minimal/orange@2x.png create mode 100755 public/assets/css/iCheck/minimal/pink.css create mode 100755 public/assets/css/iCheck/minimal/pink.png create mode 100755 public/assets/css/iCheck/minimal/pink@2x.png create mode 100755 public/assets/css/iCheck/minimal/purple.css create mode 100755 public/assets/css/iCheck/minimal/purple.png create mode 100755 public/assets/css/iCheck/minimal/purple@2x.png create mode 100755 public/assets/css/iCheck/minimal/red.css create mode 100755 public/assets/css/iCheck/minimal/red.png create mode 100755 public/assets/css/iCheck/minimal/red@2x.png create mode 100755 public/assets/css/iCheck/minimal/yellow.css create mode 100755 public/assets/css/iCheck/minimal/yellow.png create mode 100755 public/assets/css/iCheck/minimal/yellow@2x.png create mode 100755 public/assets/css/iCheck/polaris/polaris.css create mode 100755 public/assets/css/iCheck/polaris/polaris.png create mode 100755 public/assets/css/iCheck/polaris/polaris@2x.png create mode 100755 public/assets/css/iCheck/square/_all.css create mode 100755 public/assets/css/iCheck/square/aero.css create mode 100755 public/assets/css/iCheck/square/aero.png create mode 100755 public/assets/css/iCheck/square/aero@2x.png create mode 100755 public/assets/css/iCheck/square/blue.css create mode 100755 public/assets/css/iCheck/square/blue.png create mode 100755 public/assets/css/iCheck/square/blue@2x.png create mode 100755 public/assets/css/iCheck/square/green.css create mode 100755 public/assets/css/iCheck/square/green.png create mode 100755 public/assets/css/iCheck/square/green@2x.png create mode 100755 public/assets/css/iCheck/square/grey.css create mode 100755 public/assets/css/iCheck/square/grey.png create mode 100755 public/assets/css/iCheck/square/grey@2x.png create mode 100755 public/assets/css/iCheck/square/orange.css create mode 100755 public/assets/css/iCheck/square/orange.png create mode 100755 public/assets/css/iCheck/square/orange@2x.png create mode 100755 public/assets/css/iCheck/square/pink.css create mode 100755 public/assets/css/iCheck/square/pink.png create mode 100755 public/assets/css/iCheck/square/pink@2x.png create mode 100755 public/assets/css/iCheck/square/purple.css create mode 100755 public/assets/css/iCheck/square/purple.png create mode 100755 public/assets/css/iCheck/square/purple@2x.png create mode 100755 public/assets/css/iCheck/square/red.css create mode 100755 public/assets/css/iCheck/square/red.png create mode 100755 public/assets/css/iCheck/square/red@2x.png create mode 100755 public/assets/css/iCheck/square/square.css create mode 100755 public/assets/css/iCheck/square/square.png create mode 100755 public/assets/css/iCheck/square/square@2x.png create mode 100755 public/assets/css/iCheck/square/yellow.css create mode 100755 public/assets/css/iCheck/square/yellow.png create mode 100755 public/assets/css/iCheck/square/yellow@2x.png create mode 100755 public/assets/css/images/animated-overlay.gif create mode 100755 public/assets/css/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100755 public/assets/css/images/ui-bg_flat_55_fbec88_40x100.png create mode 100755 public/assets/css/images/ui-bg_glass_75_d0e5f5_1x400.png create mode 100755 public/assets/css/images/ui-bg_glass_85_dfeffc_1x400.png create mode 100755 public/assets/css/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100755 public/assets/css/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png create mode 100755 public/assets/css/images/ui-bg_inset-hard_100_f5f8f9_1x100.png create mode 100755 public/assets/css/images/ui-bg_inset-hard_100_fcfdfd_1x100.png create mode 100755 public/assets/css/images/ui-icons_217bc0_256x240.png create mode 100755 public/assets/css/images/ui-icons_2e83ff_256x240.png create mode 100755 public/assets/css/images/ui-icons_469bdd_256x240.png create mode 100755 public/assets/css/images/ui-icons_6da8d5_256x240.png create mode 100755 public/assets/css/images/ui-icons_cd0a0a_256x240.png create mode 100755 public/assets/css/images/ui-icons_d8e7f3_256x240.png create mode 100755 public/assets/css/images/ui-icons_f9bd01_256x240.png create mode 100755 public/assets/css/ionslider/ion.rangeSlider.css create mode 100755 public/assets/css/ionslider/ion.rangeSlider.skinFlat.css create mode 100755 public/assets/css/ionslider/ion.rangeSlider.skinNice.css create mode 100755 public/assets/css/jvectormap/jquery-jvectormap-1.2.2.css create mode 100755 public/assets/css/morris/morris.css create mode 100755 public/assets/css/timepicker/bootstrap-timepicker.css create mode 100755 public/assets/css/timepicker/bootstrap-timepicker.min.css create mode 100755 public/assets/img/ajax-loader.gif create mode 100755 public/assets/img/ajax-loader1.gif create mode 100755 public/assets/img/avatar.png create mode 100755 public/assets/img/avatar04.png create mode 100755 public/assets/img/avatar2.png create mode 100755 public/assets/img/avatar3.png create mode 100755 public/assets/img/avatar5.png create mode 100755 public/assets/img/blur-background04.jpg create mode 100755 public/assets/img/blur-background08.jpg create mode 100755 public/assets/img/blur-background09.jpg create mode 100755 public/assets/img/bootstrap-colorpicker/alpha-horizontal.png create mode 100755 public/assets/img/bootstrap-colorpicker/alpha.png create mode 100755 public/assets/img/bootstrap-colorpicker/hue-horizontal.png create mode 100755 public/assets/img/bootstrap-colorpicker/hue.png create mode 100755 public/assets/img/bootstrap-colorpicker/saturation.png create mode 100755 public/assets/img/credit/american-express.png create mode 100755 public/assets/img/credit/cirrus.png create mode 100755 public/assets/img/credit/mastercard.png create mode 100755 public/assets/img/credit/mestro.png create mode 100755 public/assets/img/credit/paypal.png create mode 100755 public/assets/img/credit/paypal2.png create mode 100755 public/assets/img/credit/visa.png create mode 100755 public/assets/img/icons.png create mode 100755 public/assets/img/sprite-skin-flat.png create mode 100755 public/assets/img/sprite-skin-nice.png create mode 100755 public/assets/img/user-bg.png create mode 100755 public/assets/img/user.jpg create mode 100755 public/assets/img/user2.jpg create mode 100755 public/assets/js/AdminLTE/app.js create mode 100755 public/assets/js/AdminLTE/dashboard.js create mode 100755 public/assets/js/AdminLTE/demo.js create mode 100644 public/assets/js/build.js create mode 100755 public/assets/js/plugins/bootstrap-slider/bootstrap-slider.js create mode 100755 public/assets/js/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js create mode 100755 public/assets/js/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.js create mode 100755 public/assets/js/plugins/colorpicker/bootstrap-colorpicker.js create mode 100755 public/assets/js/plugins/colorpicker/bootstrap-colorpicker.min.js create mode 100755 public/assets/js/plugins/datatables/dataTables.bootstrap.js create mode 100755 public/assets/js/plugins/datatables/jquery.dataTables.js create mode 100755 public/assets/js/plugins/datepicker/bootstrap-datepicker.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.ar.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.az.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.bg.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.ca.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.cs.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.cy.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.da.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.de.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.el.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.es.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.et.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.fa.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.fi.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.fr.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.gl.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.he.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.hr.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.hu.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.id.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.is.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.it.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.ja.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.ka.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.kk.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.kr.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.lt.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.lv.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.mk.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.ms.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.nb.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.nl-BE.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.nl.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.no.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.pl.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.pt-BR.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.pt.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.ro.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.rs-latin.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.rs.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.ru.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.sk.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.sl.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.sq.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.sv.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.sw.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.th.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.tr.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.ua.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.vi.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js create mode 100755 public/assets/js/plugins/datepicker/locales/bootstrap-datepicker.zh-TW.js create mode 100755 public/assets/js/plugins/daterangepicker/daterangepicker.js create mode 100755 public/assets/js/plugins/flot/excanvas.js create mode 100755 public/assets/js/plugins/flot/excanvas.min.js create mode 100755 public/assets/js/plugins/flot/jquery.colorhelpers.js create mode 100755 public/assets/js/plugins/flot/jquery.colorhelpers.min.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.canvas.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.canvas.min.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.categories.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.categories.min.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.crosshair.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.crosshair.min.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.errorbars.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.errorbars.min.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.fillbetween.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.fillbetween.min.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.image.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.image.min.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.min.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.navigate.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.navigate.min.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.pie.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.pie.min.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.resize.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.resize.min.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.selection.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.selection.min.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.stack.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.stack.min.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.symbol.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.symbol.min.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.threshold.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.threshold.min.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.time.js create mode 100755 public/assets/js/plugins/flot/jquery.flot.time.min.js create mode 100755 public/assets/js/plugins/iCheck/icheck.js create mode 100755 public/assets/js/plugins/iCheck/icheck.min.js create mode 100755 public/assets/js/plugins/input-mask/jquery.inputmask.date.extensions.js create mode 100755 public/assets/js/plugins/input-mask/jquery.inputmask.extensions.js create mode 100755 public/assets/js/plugins/input-mask/jquery.inputmask.js create mode 100755 public/assets/js/plugins/input-mask/jquery.inputmask.numeric.extensions.js create mode 100755 public/assets/js/plugins/input-mask/jquery.inputmask.phone.extensions.js create mode 100755 public/assets/js/plugins/input-mask/jquery.inputmask.regex.extensions.js create mode 100755 public/assets/js/plugins/input-mask/phone-codes/phone-be.json create mode 100755 public/assets/js/plugins/input-mask/phone-codes/phone-codes.json create mode 100755 public/assets/js/plugins/input-mask/phone-codes/readme.txt create mode 100755 public/assets/js/plugins/ionslider/ion.rangeSlider.min.js create mode 100755 public/assets/js/plugins/jqueryKnob/jquery.knob.js create mode 100755 public/assets/js/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js create mode 100755 public/assets/js/plugins/jvectormap/jquery-jvectormap-world-mill-en.js create mode 100755 public/assets/js/plugins/misc/html5shiv.js create mode 100755 public/assets/js/plugins/misc/jquery.ba-resize.min.js create mode 100755 public/assets/js/plugins/misc/jquery.placeholder.js create mode 100755 public/assets/js/plugins/misc/modernizr.min.js create mode 100755 public/assets/js/plugins/misc/respond.min.js create mode 100755 public/assets/js/plugins/morris/morris.js create mode 100755 public/assets/js/plugins/morris/morris.min.js create mode 100755 public/assets/js/plugins/slimScroll/jquery.slimscroll.js create mode 100755 public/assets/js/plugins/slimScroll/jquery.slimscroll.min.js create mode 100755 public/assets/js/plugins/slimScroll/slimScroll.jquery.json create mode 100755 public/assets/js/plugins/sparkline/jquery.sparkline.js create mode 100755 public/assets/js/plugins/sparkline/jquery.sparkline.min.js create mode 100755 public/assets/js/plugins/timepicker/bootstrap-timepicker.js create mode 100755 public/assets/js/plugins/timepicker/bootstrap-timepicker.min.js diff --git a/PHPCI/Application.php b/PHPCI/Application.php index 646645af..16fab7cf 100644 --- a/PHPCI/Application.php +++ b/PHPCI/Application.php @@ -14,6 +14,7 @@ use b8\Exception\HttpException; use b8\Http\Response; use b8\Http\Response\RedirectResponse; use b8\View; +use PHPCI\Model\Build; /** * PHPCI Front Controller @@ -91,18 +92,30 @@ class Application extends b8\Application $this->response->setContent($view->render()); } - if (View::exists('layout') && $this->response->hasLayout()) { - $view = new View('layout'); - $pageTitle = $this->config->get('page_title', null); + if ($this->response->hasLayout()) { + $this->setLayoutVariables($this->controller->layout); - if (!is_null($pageTitle)) { - $view->title = $pageTitle; - } - - $view->content = $this->response->getContent(); - $this->response->setContent($view->render()); + $this->controller->layout->content = $this->response->getContent(); + $this->response->setContent($this->controller->layout->render()); } return $this->response; } + + protected function loadController($class) + { + $controller = parent::loadController($class); + $controller->layout = new View('layout'); + $controller->layout->title = 'PHPCI'; + $controller->layout->breadcrumb = array(); + + return $controller; + } + + protected function setLayoutVariables(View &$layout) + { + /** @var \PHPCI\Store\ProjectStore $projectStore */ + $projectStore = b8\Store\Factory::getStore('Project'); + $layout->projects = $projectStore->getAll(); + } } diff --git a/PHPCI/Command/DaemoniseCommand.php b/PHPCI/Command/DaemoniseCommand.php index d2f1f236..915890bd 100644 --- a/PHPCI/Command/DaemoniseCommand.php +++ b/PHPCI/Command/DaemoniseCommand.php @@ -76,6 +76,7 @@ class DaemoniseCommand extends Command $this->sleep = 0; $runner = new RunCommand($this->logger); $runner->setMaxBuilds(1); + $runner->setIsDaemon(true); $emptyInput = new ArgvInput(array()); diff --git a/PHPCI/Command/RunCommand.php b/PHPCI/Command/RunCommand.php index f6aa1288..b384100d 100644 --- a/PHPCI/Command/RunCommand.php +++ b/PHPCI/Command/RunCommand.php @@ -48,6 +48,11 @@ class RunCommand extends Command */ protected $maxBuilds = null; + /** + * @var bool + */ + protected $isFromDaemon = false; + /** * @param \Monolog\Logger $logger * @param string $name @@ -62,8 +67,7 @@ class RunCommand extends Command { $this ->setName('phpci:run-builds') - ->setDescription('Run all pending PHPCI builds.') - ->addOption('verbose', 'v', InputOption::VALUE_NONE); + ->setDescription('Run all pending PHPCI builds.'); } /** @@ -75,7 +79,7 @@ class RunCommand extends Command // For verbose mode we want to output all informational and above // messages to the symphony output interface. - if ($input->getOption('verbose')) { + if ($input->hasOption('verbose') && $input->getOption('verbose')) { $this->logger->pushHandler( new OutputLogHandler($this->output, Logger::INFO) ); @@ -91,13 +95,17 @@ class RunCommand extends Command $builds = 0; - foreach ($result['items'] as $build) { - + while (count($result['items'])) { + $build = array_shift($result['items']); $build = BuildFactory::getBuild($build); // Skip build (for now) if there's already a build running in that project: - if (in_array($build->getProjectId(), $running)) { + if (!$this->isFromDaemon && in_array($build->getProjectId(), $running)) { $this->logger->addInfo('Skipping Build #'.$build->getId() . ' - Project build already in progress.'); + $result['items'][] = $build; + + // Re-run build validator: + $running = $this->validateRunningBuilds(); continue; } @@ -117,6 +125,7 @@ class RunCommand extends Command $this->logger->popHandler($buildDbLog); } catch (\Exception $ex) { $build->setStatus(Build::STATUS_FAILED); + $build->setFinished(new \DateTime()); $build->setLog($build->getLog() . PHP_EOL . PHP_EOL . $ex->getMessage()); $store->save($build); } @@ -133,6 +142,11 @@ class RunCommand extends Command $this->maxBuilds = (int)$numBuilds; } + public function setIsDaemon($fromDaemon) + { + $this->isFromDaemon = (bool)$fromDaemon; + } + protected function validateRunningBuilds() { /** @var \PHPCI\Store\BuildStore $store */ @@ -152,6 +166,7 @@ class RunCommand extends Command if (($now - $start) > $timeout) { $this->logger->addInfo('Build #'.$build->getId().' marked as failed due to timeout.'); $build->setStatus(Build::STATUS_FAILED); + $build->setFinished(new \DateTime()); $store->save($build); $this->removeBuildDirectory($build); continue; diff --git a/PHPCI/Controller.php b/PHPCI/Controller.php index 69be68ee..57ed81f2 100644 --- a/PHPCI/Controller.php +++ b/PHPCI/Controller.php @@ -72,10 +72,23 @@ class Controller extends \b8\Controller return $this->response; } + /** + * Require that the currently logged in user is an administrator. + * @throws ForbiddenException + */ protected function requireAdmin() { - if (!$_SESSION['phpci_user']->getIsAdmin()) { + if (!$this->currentUserIsAdmin()) { throw new ForbiddenException('You do not have permission to do that.'); } } + + /** + * Check if the currently logged in user is an administrator. + * @return bool + */ + protected function currentUserIsAdmin() + { + return $_SESSION['phpci_user']->getIsAdmin(); + } } diff --git a/PHPCI/Controller/BuildController.php b/PHPCI/Controller/BuildController.php index 79e9eb94..a46a094a 100644 --- a/PHPCI/Controller/BuildController.php +++ b/PHPCI/Controller/BuildController.php @@ -13,6 +13,7 @@ use b8; use b8\Exception\HttpException\NotFoundException; use PHPCI\BuildFactory; use PHPCI\Model\Build; +use PHPCI\Model\Project; use PHPCI\Service\BuildService; /** @@ -58,8 +59,22 @@ class BuildController extends \PHPCI\Controller $this->view->build = $build; $this->view->data = $this->getBuildData($build); - $title = 'Build #' . $build->getId() . ' - ' . $build->getProjectTitle(); - $this->config->set('page_title', $title); + $this->layout->title = 'Build #' . $build->getId(); + $this->layout->subtitle = $build->getProjectTitle(); + + $nav = array( + 'title' => 'Build '.$build->getId(), + 'icon' => 'cog', + 'links' => array( + 'build/rebuild/' . $build->getId() => 'Rebuild Now', + ), + ); + + if ($this->currentUserIsAdmin()) { + $nav['links']['build/delete/' . $build->getId()] = 'Delete Build'; + } + + $this->layout->nav = $nav; } protected function getUiPlugins() @@ -141,9 +156,7 @@ class BuildController extends \PHPCI\Controller */ public function delete($buildId) { - if (empty($_SESSION['phpci_user']) || !$_SESSION['phpci_user']->getIsAdmin()) { - throw new \Exception('You do not have permission to do that.'); - } + $this->requireAdmin(); $build = BuildFactory::getBuildById($buildId); @@ -168,4 +181,36 @@ class BuildController extends \PHPCI\Controller return $log; } + + public function latest() + { + $rtn = array( + 'pending' => $this->formatBuilds($this->buildStore->getByStatus(Build::STATUS_NEW)), + 'running' => $this->formatBuilds($this->buildStore->getByStatus(Build::STATUS_RUNNING)), + ); + + if ($this->request->isAjax()) { + die(json_encode($rtn)); + } + } + + protected function formatBuilds($builds) + { + Project::$sleepable = array('id', 'title', 'reference', 'type'); + + $rtn = array('count' => $builds['count'], 'items' => array()); + + foreach ($builds['items'] as $build) { + $item = $build->toArray(1); + + $header = new b8\View('Build/header-row'); + $header->build = $build; + + $item['header_row'] = $header->render(); + $rtn['items'][$item['id']] = $item; + } + + ksort($rtn['items']); + return $rtn; + } } diff --git a/PHPCI/Controller/HomeController.php b/PHPCI/Controller/HomeController.php index a4f8003d..0bb176dc 100644 --- a/PHPCI/Controller/HomeController.php +++ b/PHPCI/Controller/HomeController.php @@ -11,6 +11,7 @@ namespace PHPCI\Controller; use b8; use PHPCI\BuildFactory; +use PHPCI\Model\Build; /** * Home Controller - Displays the PHPCI Dashboard. @@ -41,14 +42,20 @@ class HomeController extends \PHPCI\Controller */ public function index() { + $this->layout->title = 'Dashboard'; + $projects = $this->projectStore->getWhere(array(), 50, 0, array(), array('title' => 'ASC')); - $this->view->builds = $this->getLatestBuildsHtml(); + $builds = $this->buildStore->getLatestBuilds(null, 10); + + foreach ($builds as &$build) { + $build = BuildFactory::getBuild($build); + } + + $this->view->builds = $builds; $this->view->projects = $projects['items']; $this->view->summary = $this->getSummaryHtml($projects); - $this->config->set('page_title', 'Dashboard'); - return $this->view->render(); } @@ -69,13 +76,24 @@ class HomeController extends \PHPCI\Controller protected function getSummaryHtml($projects) { $summaryBuilds = array(); + $successes = array(); + $failures = array(); + foreach ($projects['items'] as $project) { $summaryBuilds[$project->getId()] = $this->buildStore->getLatestBuilds($project->getId()); + + $success = $this->buildStore->getLastBuildByStatus($project->getId(), Build::STATUS_SUCCESS); + $failure = $this->buildStore->getLastBuildByStatus($project->getId(), Build::STATUS_FAILED); + + $successes[$project->getId()] = $success; + $failures[$project->getId()] = $failure; } $summaryView = new b8\View('SummaryTable'); $summaryView->projects = $projects['items']; $summaryView->builds = $summaryBuilds; + $summaryView->successful = $successes; + $summaryView->failed = $failures; return $summaryView->render(); } diff --git a/PHPCI/Controller/PluginController.php b/PHPCI/Controller/PluginController.php index 777c846f..de9f5e0f 100644 --- a/PHPCI/Controller/PluginController.php +++ b/PHPCI/Controller/PluginController.php @@ -24,6 +24,10 @@ use PHPCI\Plugin\Util\PluginInformationCollection; class PluginController extends \PHPCI\Controller { protected $required = array( + 'php', + 'ext-mcrypt', + 'ext-pdo', + 'ext-pdo_mysql', 'block8/b8framework', 'ircmaxell/password-compat', 'swiftmailer/swiftmailer', @@ -31,7 +35,8 @@ class PluginController extends \PHPCI\Controller 'symfony/console', 'psr/log', 'monolog/monolog', - 'pimple/pimple' + 'pimple/pimple', + 'robmorgan/phinx', ); protected $canInstall; @@ -39,9 +44,7 @@ class PluginController extends \PHPCI\Controller public function index() { - if (!$_SESSION['phpci_user']->getIsAdmin()) { - throw new \Exception('You do not have permission to do that.'); - } + $this->requireAdmin(); $this->view->canWrite = is_writable(APPLICATION_PATH . 'composer.json'); $this->view->required = $this->required; @@ -60,16 +63,14 @@ class PluginController extends \PHPCI\Controller $this->view->plugins = $pluginInfo->getInstalledPlugins(); - $this->config->set('page_title', 'Plugins'); + $this->layout->title = 'Plugins'; return $this->view->render(); } public function remove() { - if (!$_SESSION['phpci_user']->getIsAdmin()) { - throw new \Exception('You do not have permission to do that.'); - } + $this->requireAdmin(); $package = $this->getParam('package', null); $json = $this->getComposerJson(); @@ -88,9 +89,7 @@ class PluginController extends \PHPCI\Controller public function install() { - if (!$_SESSION['phpci_user']->getIsAdmin()) { - throw new \Exception('You do not have permission to do that.'); - } + $this->requireAdmin(); $package = $this->getParam('package', null); $version = $this->getParam('version', '*'); diff --git a/PHPCI/Controller/ProjectController.php b/PHPCI/Controller/ProjectController.php index 1e2c68d1..69d8b95e 100644 --- a/PHPCI/Controller/ProjectController.php +++ b/PHPCI/Controller/ProjectController.php @@ -62,8 +62,9 @@ class ProjectController extends \PHPCI\Controller /** * View a specific project. */ - public function view($projectId, $branch = '') + public function view($projectId) { + $branch = $this->getParam('branch', ''); $project = $this->projectStore->getById($projectId); if (empty($project)) { @@ -87,7 +88,8 @@ class ProjectController extends \PHPCI\Controller $this->view->page = $page; $this->view->pages = $pages; - $this->config->set('page_title', $project->getTitle()); + $this->layout->title = $project->getTitle(); + $this->layout->subtitle = $this->view->branch; return $this->view->render(); } @@ -120,9 +122,7 @@ class ProjectController extends \PHPCI\Controller */ public function delete($projectId) { - if (!$_SESSION['phpci_user']->getIsAdmin()) { - throw new ForbiddenException('You do not have permission to do that.'); - } + $this->requireAdmin(); $project = $this->projectStore->getById($projectId); $this->projectService->deleteProject($project); @@ -134,8 +134,9 @@ class ProjectController extends \PHPCI\Controller /** * AJAX get latest builds. */ - public function builds($projectId, $branch = '') + public function builds($projectId) { + $branch = $this->getParam('branch', ''); $builds = $this->getLatestBuildsHtml($projectId, urldecode($branch)); die($builds[0]); } @@ -173,7 +174,7 @@ class ProjectController extends \PHPCI\Controller */ public function add() { - $this->config->set('page_title', 'Add Project'); + $this->layout->title = 'Add Project'; $this->requireAdmin(); $method = $this->request->getMethod(); @@ -224,9 +225,7 @@ class ProjectController extends \PHPCI\Controller */ public function edit($projectId) { - if (!$_SESSION['phpci_user']->getIsAdmin()) { - throw new ForbiddenException('You do not have permission to do that.'); - } + $this->requireAdmin(); $method = $this->request->getMethod(); $project = $this->projectStore->getById($projectId); diff --git a/PHPCI/Controller/SessionController.php b/PHPCI/Controller/SessionController.php index a9b60333..f7bfa982 100644 --- a/PHPCI/Controller/SessionController.php +++ b/PHPCI/Controller/SessionController.php @@ -40,7 +40,7 @@ class SessionController extends \PHPCI\Controller if ($this->request->getMethod() == 'POST') { $user = $this->userStore->getByEmail($this->getParam('email')); - + if ($user && password_verify($this->getParam('password', ''), $user->getHash())) { $_SESSION['phpci_user_id'] = $user->getId(); header('Location: ' . $this->getLoginRedirect()); diff --git a/PHPCI/Controller/SettingsController.php b/PHPCI/Controller/SettingsController.php index 0bb79577..09dd6bf3 100644 --- a/PHPCI/Controller/SettingsController.php +++ b/PHPCI/Controller/SettingsController.php @@ -38,6 +38,9 @@ class SettingsController extends Controller public function index() { + $this->requireAdmin(); + + $this->layout->title = 'Settings'; $this->view->settings = $this->settings; $emailSettings = array(); @@ -64,6 +67,8 @@ class SettingsController extends Controller public function github() { + $this->requireAdmin(); + $this->settings['phpci']['github']['id'] = $this->getParam('githubid', ''); $this->settings['phpci']['github']['secret'] = $this->getParam('githubsecret', ''); $error = $this->storeSettings(); @@ -79,6 +84,8 @@ class SettingsController extends Controller public function email() { + $this->requireAdmin(); + $this->settings['phpci']['email_settings'] = $this->getParams(); $this->settings['phpci']['email_settings']['smtp_encryption'] = $this->getParam('smtp_encryption', 0); @@ -95,6 +102,8 @@ class SettingsController extends Controller public function build() { + $this->requireAdmin(); + $this->settings['phpci']['build'] = $this->getParams(); $error = $this->storeSettings(); diff --git a/PHPCI/Controller/UserController.php b/PHPCI/Controller/UserController.php index 182cc3f0..583381f6 100644 --- a/PHPCI/Controller/UserController.php +++ b/PHPCI/Controller/UserController.php @@ -49,7 +49,7 @@ class UserController extends Controller $users = $this->userStore->getWhere(array(), 1000, 0, array(), array('email' => 'ASC')); $this->view->users = $users; - $this->config->set('page_title', 'Users'); + $this->layout->title = 'Users'; return $this->view->render(); } @@ -58,6 +58,8 @@ class UserController extends Controller { $user = $_SESSION['phpci_user']; + $this->layout->title = 'Edit Profile'; + if ($this->request->getMethod() == 'POST') { $name = $this->getParam('name', null); $email = $this->getParam('email', null); @@ -65,6 +67,8 @@ class UserController extends Controller $_SESSION['phpci_user'] = $this->userService->updateUser($user, $name, $email, $password); $user = $_SESSION['phpci_user']; + + $this->view->updated = 1; } $values = $user->getDataArray(); @@ -111,11 +115,9 @@ class UserController extends Controller */ public function add() { - if (!$_SESSION['phpci_user']->getIsAdmin()) { - throw new ForbiddenException('You do not have permission to do that.'); - } + $this->requireAdmin(); - $this->config->set('page_title', 'Add User'); + $this->layout->title = 'Add User'; $method = $this->request->getMethod(); @@ -153,9 +155,7 @@ class UserController extends Controller */ public function edit($userId) { - if (!$_SESSION['phpci_user']->getIsAdmin()) { - throw new ForbiddenException('You do not have permission to do that.'); - } + $this->requireAdmin(); $method = $this->request->getMethod(); $user = $this->userStore->getById($userId); @@ -164,6 +164,9 @@ class UserController extends Controller throw new NotFoundException('User with ID: ' . $userId . ' does not exist.'); } + $this->layout->title = $user->getName(); + $this->layout->subtitle = 'Edit User'; + $values = array_merge($user->getDataArray(), $this->getParams()); $form = $this->userForm($values, 'edit/' . $userId); @@ -246,10 +249,8 @@ class UserController extends Controller */ public function delete($userId) { - if (!$_SESSION['phpci_user']->getIsAdmin()) { - throw new ForbiddenException('You do not have permission to do that.'); - } - + $this->requireAdmin(); + $user = $this->userStore->getById($userId); if (empty($user)) { diff --git a/PHPCI/Migrations/20140730143702_fix_database_columns.php b/PHPCI/Migrations/20140730143702_fix_database_columns.php index 6594dd02..809fc878 100644 --- a/PHPCI/Migrations/20140730143702_fix_database_columns.php +++ b/PHPCI/Migrations/20140730143702_fix_database_columns.php @@ -9,6 +9,13 @@ class FixDatabaseColumns extends AbstractMigration */ public function up() { + $dbAdapter = $this->getAdapter(); + + if ($dbAdapter instanceof \Phinx\Db\Adapter\PdoAdapter) { + $pdo = $dbAdapter->getConnection(); + $pdo->exec('SET foreign_key_checks = 0'); + } + $build = $this->table('build'); $build->changeColumn('project_id', 'integer', array('null' => false)); $build->changeColumn('commit_id', 'string', array('limit' => 50, 'null' => false)); @@ -45,5 +52,10 @@ class FixDatabaseColumns extends AbstractMigration $user->changeColumn('hash', 'string', array('limit' => 250, 'null' => false)); $user->changeColumn('is_admin', 'integer', array('null' => false, 'default' => 0)); $user->changeColumn('name', 'string', array('limit' => 250, 'null' => false)); + + if ($dbAdapter instanceof \Phinx\Db\Adapter\PdoAdapter) { + $pdo = $dbAdapter->getConnection(); + $pdo->exec('SET foreign_key_checks = 1'); + } } } diff --git a/PHPCI/Model/Base/BuildBase.php b/PHPCI/Model/Base/BuildBase.php index 97b427b5..119290e2 100644 --- a/PHPCI/Model/Base/BuildBase.php +++ b/PHPCI/Model/Base/BuildBase.php @@ -110,16 +110,15 @@ class BuildBase extends Model 'commit_id' => array( 'type' => 'varchar', 'length' => 50, - 'nullable' => true, 'default' => null, ), 'status' => array( - 'type' => 'tinyint', - 'length' => 4, + 'type' => 'int', + 'length' => 11, 'default' => null, ), 'log' => array( - 'type' => 'longtext', + 'type' => 'text', 'nullable' => true, 'default' => null, ), @@ -155,7 +154,7 @@ class BuildBase extends Model 'default' => null, ), 'extra' => array( - 'type' => 'longtext', + 'type' => 'text', 'nullable' => true, 'default' => null, ), @@ -382,10 +381,12 @@ class BuildBase extends Model /** * Set the value of CommitId / commit_id. * + * Must not be null. * @param $value string */ public function setCommitId($value) { + $this->_validateNotNull('CommitId', $value); $this->_validateString('CommitId', $value); if ($this->data['commit_id'] === $value) { diff --git a/PHPCI/Model/Base/BuildMetaBase.php b/PHPCI/Model/Base/BuildMetaBase.php index a979e1d9..0ac8fa93 100644 --- a/PHPCI/Model/Base/BuildMetaBase.php +++ b/PHPCI/Model/Base/BuildMetaBase.php @@ -91,17 +91,15 @@ class BuildMetaBase extends Model 'build_id' => array( 'type' => 'int', 'length' => 11, - 'nullable' => true, 'default' => null, ), 'meta_key' => array( 'type' => 'varchar', - 'length' => 255, + 'length' => 250, 'default' => null, ), 'meta_value' => array( - 'type' => 'longtext', - 'nullable' => true, + 'type' => 'text', 'default' => null, ), ); @@ -238,10 +236,12 @@ class BuildMetaBase extends Model /** * Set the value of BuildId / build_id. * + * Must not be null. * @param $value int */ public function setBuildId($value) { + $this->_validateNotNull('BuildId', $value); $this->_validateInt('BuildId', $value); if ($this->data['build_id'] === $value) { @@ -276,10 +276,12 @@ class BuildMetaBase extends Model /** * Set the value of MetaValue / meta_value. * + * Must not be null. * @param $value string */ public function setMetaValue($value) { + $this->_validateNotNull('MetaValue', $value); $this->_validateString('MetaValue', $value); if ($this->data['meta_value'] === $value) { diff --git a/PHPCI/Model/Base/ProjectBase.php b/PHPCI/Model/Base/ProjectBase.php index 5e1f4f37..305cafbf 100644 --- a/PHPCI/Model/Base/ProjectBase.php +++ b/PHPCI/Model/Base/ProjectBase.php @@ -38,11 +38,11 @@ class ProjectBase extends Model 'reference' => null, 'branch' => null, 'ssh_private_key' => null, - 'ssh_public_key' => null, 'type' => null, 'access_information' => null, 'last_commit' => null, 'build_config' => null, + 'ssh_public_key' => null, 'allow_public_status' => null, ); @@ -56,11 +56,11 @@ class ProjectBase extends Model 'reference' => 'getReference', 'branch' => 'getBranch', 'ssh_private_key' => 'getSshPrivateKey', - 'ssh_public_key' => 'getSshPublicKey', 'type' => 'getType', 'access_information' => 'getAccessInformation', 'last_commit' => 'getLastCommit', 'build_config' => 'getBuildConfig', + 'ssh_public_key' => 'getSshPublicKey', 'allow_public_status' => 'getAllowPublicStatus', // Foreign key getters: @@ -76,11 +76,11 @@ class ProjectBase extends Model 'reference' => 'setReference', 'branch' => 'setBranch', 'ssh_private_key' => 'setSshPrivateKey', - 'ssh_public_key' => 'setSshPublicKey', 'type' => 'setType', 'access_information' => 'setAccessInformation', 'last_commit' => 'setLastCommit', 'build_config' => 'setBuildConfig', + 'ssh_public_key' => 'setSshPublicKey', 'allow_public_status' => 'setAllowPublicStatus', // Foreign key setters: @@ -109,23 +109,18 @@ class ProjectBase extends Model ), 'branch' => array( 'type' => 'varchar', - 'length' => 250, - 'default' => null, + 'length' => 50, + 'default' => 'master', ), 'ssh_private_key' => array( 'type' => 'text', 'nullable' => true, 'default' => null, ), - 'ssh_public_key' => array( - 'type' => 'text', - 'nullable' => true, - 'default' => null, - ), 'type' => array( 'type' => 'varchar', 'length' => 50, - 'default' => 1, + 'default' => null, ), 'access_information' => array( 'type' => 'varchar', @@ -144,9 +139,14 @@ class ProjectBase extends Model 'nullable' => true, 'default' => null, ), + 'ssh_public_key' => array( + 'type' => 'text', + 'nullable' => true, + 'default' => null, + ), 'allow_public_status' => array( - 'type' => 'tinyint', - 'length' => 4, + 'type' => 'int', + 'length' => 11, ), ); @@ -224,18 +224,6 @@ class ProjectBase extends Model return $rtn; } - /** - * Get the value of SshPublicKey / ssh_public_key. - * - * @return string - */ - public function getSshPublicKey() - { - $rtn = $this->data['ssh_public_key']; - - return $rtn; - } - /** * Get the value of Type / type. * @@ -284,6 +272,18 @@ class ProjectBase extends Model return $rtn; } + /** + * Get the value of SshPublicKey / ssh_public_key. + * + * @return string + */ + public function getSshPublicKey() + { + $rtn = $this->data['ssh_public_key']; + + return $rtn; + } + /** * Get the value of AllowPublicStatus / allow_public_status. * @@ -394,24 +394,6 @@ class ProjectBase extends Model $this->_setModified('ssh_private_key'); } - /** - * Set the value of SshPublicKey / ssh_public_key. - * - * @param $value string - */ - public function setSshPublicKey($value) - { - $this->_validateString('SshPublicKey', $value); - - if ($this->data['ssh_public_key'] === $value) { - return; - } - - $this->data['ssh_public_key'] = $value; - - $this->_setModified('ssh_public_key'); - } - /** * Set the value of Type / type. * @@ -486,6 +468,24 @@ class ProjectBase extends Model $this->_setModified('build_config'); } + /** + * Set the value of SshPublicKey / ssh_public_key. + * + * @param $value string + */ + public function setSshPublicKey($value) + { + $this->_validateString('SshPublicKey', $value); + + if ($this->data['ssh_public_key'] === $value) { + return; + } + + $this->data['ssh_public_key'] = $value; + + $this->_setModified('ssh_public_key'); + } + /** * Set the value of AllowPublicStatus / allow_public_status. * diff --git a/PHPCI/Model/Base/UserBase.php b/PHPCI/Model/Base/UserBase.php index 514a0db9..e9be15a0 100644 --- a/PHPCI/Model/Base/UserBase.php +++ b/PHPCI/Model/Base/UserBase.php @@ -90,14 +90,12 @@ class UserBase extends Model 'default' => null, ), 'is_admin' => array( - 'type' => 'tinyint', - 'length' => 1, - 'default' => null, + 'type' => 'int', + 'length' => 11, ), 'name' => array( 'type' => 'varchar', 'length' => 250, - 'nullable' => true, 'default' => null, ), ); @@ -259,10 +257,12 @@ class UserBase extends Model /** * Set the value of Name / name. * + * Must not be null. * @param $value string */ public function setName($value) { + $this->_validateNotNull('Name', $value); $this->_validateString('Name', $value); if ($this->data['name'] === $value) { diff --git a/PHPCI/Model/Project.php b/PHPCI/Model/Project.php index 702d9c89..98283d77 100644 --- a/PHPCI/Model/Project.php +++ b/PHPCI/Model/Project.php @@ -88,4 +88,28 @@ class Project extends ProjectBase return $this->data['branch']; } } + + public function getIcon() + { + switch ($this->getType()) { + case 'github': + $icon = 'github'; + break; + + case 'bitbucket': + $icon = 'bitbucket'; + break; + + case 'git': + case 'gitlab': + $icon = 'git'; + break; + + default: + $icon = 'cog'; + break; + } + + return $icon; + } } diff --git a/PHPCI/Store/Base/BuildMetaStoreBase.php b/PHPCI/Store/Base/BuildMetaStoreBase.php index bc1589cc..f6158c13 100644 --- a/PHPCI/Store/Base/BuildMetaStoreBase.php +++ b/PHPCI/Store/Base/BuildMetaStoreBase.php @@ -56,7 +56,6 @@ class BuildMetaStoreBase extends Store $add .= ' LIMIT ' . $limit; } - $count = null; $query = 'SELECT * FROM `build_meta` WHERE `project_id` = :project_id' . $add; $stmt = Database::getConnection($useConnection)->prepare($query); @@ -70,6 +69,9 @@ class BuildMetaStoreBase extends Store }; $rtn = array_map($map, $res); + $count = count($rtn); + + return array('items' => $rtn, 'count' => $count); } else { return array('items' => array(), 'count' => 0); @@ -88,7 +90,6 @@ class BuildMetaStoreBase extends Store $add .= ' LIMIT ' . $limit; } - $count = null; $query = 'SELECT * FROM `build_meta` WHERE `build_id` = :build_id' . $add; $stmt = Database::getConnection($useConnection)->prepare($query); @@ -102,6 +103,9 @@ class BuildMetaStoreBase extends Store }; $rtn = array_map($map, $res); + $count = count($rtn); + + return array('items' => $rtn, 'count' => $count); } else { return array('items' => array(), 'count' => 0); diff --git a/PHPCI/Store/Base/BuildStoreBase.php b/PHPCI/Store/Base/BuildStoreBase.php index b67d5f73..20927caa 100644 --- a/PHPCI/Store/Base/BuildStoreBase.php +++ b/PHPCI/Store/Base/BuildStoreBase.php @@ -56,7 +56,6 @@ class BuildStoreBase extends Store $add .= ' LIMIT ' . $limit; } - $count = null; $query = 'SELECT * FROM `build` WHERE `project_id` = :project_id' . $add; $stmt = Database::getConnection($useConnection)->prepare($query); @@ -70,6 +69,9 @@ class BuildStoreBase extends Store }; $rtn = array_map($map, $res); + $count = count($rtn); + + return array('items' => $rtn, 'count' => $count); } else { return array('items' => array(), 'count' => 0); @@ -88,7 +90,6 @@ class BuildStoreBase extends Store $add .= ' LIMIT ' . $limit; } - $count = null; $query = 'SELECT * FROM `build` WHERE `status` = :status' . $add; $stmt = Database::getConnection($useConnection)->prepare($query); @@ -102,6 +103,9 @@ class BuildStoreBase extends Store }; $rtn = array_map($map, $res); + $count = count($rtn); + + return array('items' => $rtn, 'count' => $count); } else { return array('items' => array(), 'count' => 0); diff --git a/PHPCI/Store/Base/ProjectStoreBase.php b/PHPCI/Store/Base/ProjectStoreBase.php index 410a305e..dda946a5 100644 --- a/PHPCI/Store/Base/ProjectStoreBase.php +++ b/PHPCI/Store/Base/ProjectStoreBase.php @@ -56,7 +56,6 @@ class ProjectStoreBase extends Store $add .= ' LIMIT ' . $limit; } - $count = null; $query = 'SELECT * FROM `project` WHERE `title` = :title' . $add; $stmt = Database::getConnection($useConnection)->prepare($query); @@ -70,6 +69,9 @@ class ProjectStoreBase extends Store }; $rtn = array_map($map, $res); + $count = count($rtn); + + return array('items' => $rtn, 'count' => $count); } else { return array('items' => array(), 'count' => 0); diff --git a/PHPCI/Store/BuildStore.php b/PHPCI/Store/BuildStore.php index a1da7cb1..b28142a7 100644 --- a/PHPCI/Store/BuildStore.php +++ b/PHPCI/Store/BuildStore.php @@ -10,6 +10,7 @@ namespace PHPCI\Store; use b8\Database; +use PHPCI\BuildFactory; use PHPCI\Model\Build; use PHPCI\Store\Base\BuildStoreBase; @@ -21,11 +22,22 @@ use PHPCI\Store\Base\BuildStoreBase; */ class BuildStore extends BuildStoreBase { - public function getLatestBuilds($projectId) + public function getLatestBuilds($projectId = null, $limit = 5) { - $query = 'SELECT * FROM build WHERE project_id = :pid ORDER BY id DESC LIMIT 5'; + $where = ''; + + if (!is_null($projectId)) { + $where = ' WHERE `project_id` = :pid '; + } + + $query = 'SELECT * FROM build '.$where.' ORDER BY id DESC LIMIT :limit'; $stmt = Database::getConnection('read')->prepare($query); - $stmt->bindValue(':pid', $projectId); + + if (!is_null($projectId)) { + $stmt->bindValue(':pid', $projectId); + } + + $stmt->bindValue(':limit', $limit, \PDO::PARAM_INT); if ($stmt->execute()) { $res = $stmt->fetchAll(\PDO::FETCH_ASSOC); @@ -41,6 +53,21 @@ class BuildStore extends BuildStoreBase } } + public function getLastBuildByStatus($projectId = null, $status = Build::STATUS_SUCCESS) + { + $query = 'SELECT * FROM build WHERE project_id = :pid AND status = :status ORDER BY id DESC LIMIT 1'; + $stmt = Database::getConnection('read')->prepare($query); + $stmt->bindValue(':pid', $projectId); + $stmt->bindValue(':status', $status); + + if ($stmt->execute()) { + $res = $stmt->fetch(\PDO::FETCH_ASSOC); + return new Build($res); + } else { + return array(); + } + } + public function getByProjectAndCommit($projectId, $commitId) { $query = 'SELECT * FROM `build` WHERE `project_id` = :project_id AND `commit_id` = :commit_id'; diff --git a/PHPCI/Store/ProjectStore.php b/PHPCI/Store/ProjectStore.php index 6f81b8f4..4657fb8d 100644 --- a/PHPCI/Store/ProjectStore.php +++ b/PHPCI/Store/ProjectStore.php @@ -10,6 +10,7 @@ namespace PHPCI\Store; use b8\Database; +use PHPCI\Model\Project; use PHPCI\Store\Base\ProjectStoreBase; /** @@ -39,4 +40,26 @@ class ProjectStore extends ProjectStoreBase return array(); } } + + public function getAll() + { + $query = 'SELECT * FROM `project` ORDER BY `title` ASC'; + $stmt = Database::getConnection('read')->prepare($query); + + if ($stmt->execute()) { + $res = $stmt->fetchAll(\PDO::FETCH_ASSOC); + + $map = function ($item) { + return new Project($item); + }; + $rtn = array_map($map, $res); + + $count = count($rtn); + + + return array('items' => $rtn, 'count' => $count); + } else { + return array('items' => array(), 'count' => 0); + } + } } diff --git a/PHPCI/View/Build/header-row.phtml b/PHPCI/View/Build/header-row.phtml new file mode 100644 index 00000000..83bd4524 --- /dev/null +++ b/PHPCI/View/Build/header-row.phtml @@ -0,0 +1,20 @@ +
  • + + getCommitterEmail()): ?> +
    + +
    + + +

    + getProject()->getTitle(); ?> + + getStatus() == \PHPCI\Model\Build::STATUS_NEW): ?> + Created getCreated()->format('g:ia'); ?> + getStatus() == \PHPCI\Model\Build::STATUS_RUNNING): ?> + Started getStarted()->format('g:ia'); ?> + +

    +

    Branch: getBranch(); ?>

    +
    +
  • \ No newline at end of file diff --git a/PHPCI/View/Build/view.phtml b/PHPCI/View/Build/view.phtml index c2fd9381..a6ecc6db 100644 --- a/PHPCI/View/Build/view.phtml +++ b/PHPCI/View/Build/view.phtml @@ -1,17 +1,15 @@ -
    - - -
    -

    - - getProject()->getTitle(); ?> - #getId(); ?> +
    +
    +

    + Committed by getCommitterEmail(); ?>

    -
    +
    + +
    getCommitMessage()): ?>
    @@ -19,8 +17,7 @@
    - Branch: getBranch(); ?>
    - Committer: getCommitterEmail(); ?> + Branch: getBranch(); ?> getCommitId() != 'Manual'): ?>
    Commit ID: getCommitId(); ?>
    @@ -30,35 +27,19 @@
    -
    -
    -
    -

    Options

    -
    - -
    -

    Quick links

    -
    -
      - -
      -
      - -
      +
      + $(document).ready(function() { - PHPCI.renderPlugins(); + ActiveBuild.renderPlugins(); $('#delete-build').on('click', function (e) { e.preventDefault(); @@ -86,41 +67,38 @@ foreach ($plugins as $plugin) { }); function updateBuildStatus(status) { - var statusClass = null; - var statusText = null; - switch (status) { case 0: - statusClass = 'info'; - statusText = 'Pending'; + $('.build-info-panel') + .removeClass('bg-yellow') + .removeClass('bg-green') + .removeClass('bg-red') + .addClass('bg-blue'); break; + case 1: - statusClass = 'warning'; - statusText = 'Running'; + $('.build-info-panel') + .removeClass('bg-green') + .removeClass('bg-red') + .removeClass('bg-blue') + .addClass('bg-yellow'); break; + case 2: - statusClass = 'success'; - statusText = 'Success'; + $('.build-info-panel') + .removeClass('bg-yellow') + .removeClass('bg-red') + .removeClass('bg-blue') + .addClass('bg-green'); break; + case 3: - statusClass = 'danger'; - statusText = 'Failed'; + $('.build-info-panel') + .removeClass('bg-yellow') + .removeClass('bg-green') + .removeClass('bg-blue') + .addClass('bg-red'); break; } - - $('.build-info-panel') - .removeClass('panel-info') - .removeClass('panel-warning') - .removeClass('panel-success') - .removeClass('panel-danger') - .addClass('panel-' + statusClass); - - $('.build-info-panel .label') - .removeClass('label-info') - .removeClass('label-warning') - .removeClass('label-success') - .removeClass('label-danger') - .addClass('label-' + statusClass) - .text(statusText); } diff --git a/PHPCI/View/BuildStatus/view.phtml b/PHPCI/View/BuildStatus/view.phtml index e8536bf6..3b5d29a3 100644 --- a/PHPCI/View/BuildStatus/view.phtml +++ b/PHPCI/View/BuildStatus/view.phtml @@ -66,8 +66,8 @@
      -
      -

      +
      +

      getProject()->getTitle(); ?> #getId(); ?> @@ -76,7 +76,7 @@

      -
      +
      getCommitMessage()): ?>
      @@ -97,8 +97,8 @@ -
      -

      Builds

      +
      +

      Builds

      diff --git a/PHPCI/View/BuildsTable.phtml b/PHPCI/View/BuildsTable.phtml index 4fb5fa91..d45a8730 100644 --- a/PHPCI/View/BuildsTable.phtml +++ b/PHPCI/View/BuildsTable.phtml @@ -47,19 +47,22 @@ switch($build->getStatus()) } ?> - - + diff --git a/PHPCI/View/Home/index.phtml b/PHPCI/View/Home/index.phtml index bcac0775..db351c2e 100644 --- a/PHPCI/View/Home/index.phtml +++ b/PHPCI/View/Home/index.phtml @@ -1,93 +1,102 @@ -
      -

      Dashboard

      -
      - -
      -
      - -
      -
      -

      Projects

      -
      -
      - - getTitle()); ?> - -
      -
      - +
      +
      -
      -
      -

      Project Overview

      -
      + getBranch(); ?>getBranch(); ?>
      - - - - - - - - - - - - - -
      HealthProjectLast SuccessLast FailureSuccess/Failures
      -
      -
      -
      -

      Last 5 Builds

      +
      +
      +
      +

      Latest Builds

      - - - - - - - - - - - - - - -
      IDProjectCommitBranchStatus
      +
      +
        + + + getStatus()) { + case \PHPCI\Model\Build::STATUS_NEW: + $updated = $build->getCreated(); + $label = 'Created'; + $color = 'blue'; + break; + + case \PHPCI\Model\Build::STATUS_RUNNING: + $updated = $build->getStarted(); + $label = 'Started'; + $color = 'yellow'; + break; + + case \PHPCI\Model\Build::STATUS_SUCCESS: + $updated = $build->getFinished(); + $label = 'Successful'; + $color = 'green'; + break; + + case \PHPCI\Model\Build::STATUS_FAILED: + $updated = $build->getFinished(); + $label = 'Failed'; + $color = 'red'; + break; + } + + if ($updated->format('Y-m-d') != $last->format('Y-m-d')): $last = $updated; + ?> +
      • + + format('M j Y'); ?> + +
      • + + + + +
      • + +
        + format('g:ia'); ?> +

        + + getProject()->getTitle(); ?> + + - + + Build #getId(); ?> + + - + +

        + +
        + getCommitId() !== 'Manual') { + print sprintf( + '%s (%s)', + $build->getCommitLink(), + substr($build->getCommitId(), 0, 7), + $build->getCommitterEmail() + ); + } else { + print 'Manual Build'; + } + ?> + - getCommitMessage(); ?> +
        +
        +
      • + + + + +
      • + +
      • +
      +
      -
      +
      +
      - - diff --git a/PHPCI/View/Plugin/index.phtml b/PHPCI/View/Plugin/index.phtml index a224c752..15e20590 100644 --- a/PHPCI/View/Plugin/index.phtml +++ b/PHPCI/View/Plugin/index.phtml @@ -1,5 +1,3 @@ -

      Packages and Provided Plugins

      -

      PHPCI cannot update composer.json for you as it is not writable.

      @@ -12,10 +10,12 @@

      has been added to composer.json for you and will be installed next time you run composer update.

      -
      -

      Available Plugins

      +
      +
      +

      Enabled Plugins

      +
      - +
      @@ -35,85 +35,104 @@
      Name
      -
      -

      Installed Packages

      - - - - - - - - - - $version): ?> - - - - - - - -
      TitleVersion
      - - Remove » - -
      + +
      +
      +
      +
      +

      Installed Packages

      +
      + + + + + + + + + + + $version): ?> + + + + + + + +
      TitleVersion
      + + Remove » + +
      +
      + +
      + +
      +
      +
      +

      Suggested Packages

      +
      + + + + + + + + + + + $version): ?> + + + + + + + + +
      TitleDescription
      + + + +
      +
      + +
      -
      -

      Suggested Packages

      +
      +
      +

      Search Packagist for More Packages

      +
      - - - - - - - - - - $version): ?> - - - - - - - - -
      TitleDescription
      - - - -
      -
      - -
      -

      Search Packagist for More Packages

      - -
      - +
      +
      + +
      + +
      -
      + +
      +
      + Build Now + +
      + + + +
      -

      +
      -
      -
      -
      -

      Options

      +
      +
      +
      + +

      Builds

      - -
      - - Build Now - - - User()->getIsAdmin()): ?> - Edit Project - Delete Project - -
      -
      - - getType(), array('github', 'gitlab', 'bitbucket'))): ?> -
      -
      -

      Webhooks

      -
      - -
      - To automatically build this project when new commits are pushed, add the URL below - - getType()) - { - case 'github': - $url = PHPCI_URL . 'webhook/github/' . $project->getId(); - print ' as a "WebHook URL" in the Service Hooks section of your Github repository.

      ' . $url . ''; - break; - - case 'gitlab': - $url = PHPCI_URL. 'webhook/gitlab/' . $project->getId(); - print ' as a "WebHook URL" in the Web Hooks section of your Gitlab repository.

      ' . $url . ''; - break; - - case 'bitbucket': - $url = PHPCI_URL . 'webhook/bitbucket/' . $project->getId(); - print ' as a "POST" service in the Services section of your Bitbucket repository.

      ' . $url . ''; - break; - } - ?> -
      -
      - - - getSshPublicKey()): ?> -
      - -
      -
      getSshPublicKey(); ?>
      -
      -
      - -
      -
      - - - - -
      -
      - -

      Builds

      -
      - +
      - + @@ -107,63 +52,103 @@
      ID ProjectCommit Branch Status
      - -
        '; - - $project_url = PHPCI_URL . 'project/view/' . $project->getId() . ((!empty($branch)) ? '/' . urlencode($branch) : ''); - - if ($page > 1) { - print '
      • « Prev
      • '; - } - - if ($pages > 1) { - for($i = 1; $i <= $pages; $i++) - { - if ($i == $page) { - print '
      • ' . $i . '
      • '; - } else { - print '
      • ' . $i . '
      • '; - } - } - } - - if ($page < $pages) { - print '
      • Next »
      • '; - } - - print '
      '; - - ?> - -
      + +
      + + getType(), array('github', 'gitlab', 'bitbucket'))): ?> +
      +
      +

      Webhooks

      +
      + +
      + To automatically build this project when new commits are pushed, add the URL below + + getType()) + { + case 'github': + $url = PHPCI_URL . 'webhook/github/' . $project->getId(); + print ' as a new "Webhook" in the Webhooks and Services section of your Github repository.

      ' . $url . ''; + break; + + case 'gitlab': + $url = PHPCI_URL. 'webhook/gitlab/' . $project->getId(); + print ' as a "WebHook URL" in the Web Hooks section of your Gitlab repository.

      ' . $url . ''; + break; + + case 'bitbucket': + $url = PHPCI_URL . 'webhook/bitbucket/' . $project->getId(); + print ' as a "POST" service in the Services section of your Bitbucket repository.

      ' . $url . ''; + break; + } + ?> +
      +
      + + + getSshPublicKey()): ?> +
      + +
      getSshPublicKey(); ?>
      +
      + +
      - - - + + +if ($page < $pages - 1) { + print '
    • Next »
    • '; +} + + + +print '
      '; + +?> \ No newline at end of file diff --git a/PHPCI/View/ProjectForm.phtml b/PHPCI/View/ProjectForm.phtml index 7a2b93d2..a7a5abd6 100644 --- a/PHPCI/View/ProjectForm.phtml +++ b/PHPCI/View/ProjectForm.phtml @@ -1,34 +1,29 @@ -
      -

      -
      -
      -
      -
      -
      - -

      To make it easier to get started, we've generated a public / private key pair for you to use for this project. To use it, just add the following public key to the "deploy keys" section of your repository settings on Github / Bitbucket.

      - - -

      Fill in the form to the right to add your new project.

      - -

      Edit your project details using the form to the right.

      - -
      -
      -
      -
      -
      -
      -

      Project Details

      +
      +
      +
      +

      Project Details

      -
      +
      + + +
      +
      +
      +

      To make it easier to get started, we've generated a public / private key pair for you to use for this project. To use it, just add the following public key to the "deploy keys" section of your repository settings on Github / Bitbucket.

      + + +
      +
      +
      + +
      + + + + - - + - - - - - - - - -
      + + + -
      - -
      - -
      Loading...
      - - + + \ No newline at end of file diff --git a/composer.json b/composer.json index f0859996..dbced983 100644 --- a/composer.json +++ b/composer.json @@ -33,7 +33,7 @@ "ext-mcrypt": "*", "ext-pdo": "*", "ext-pdo_mysql": "*", - "block8/b8framework": "~1.1", + "block8/b8framework": "~1.0", "ircmaxell/password-compat": "~1.0", "swiftmailer/swiftmailer": "~5.0", "symfony/yaml": "~2.1", diff --git a/composer.lock b/composer.lock index 532a1932..8e769534 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "d97c4373b84222bb233cb510044650b4", + "hash": "650fe5576922dea4ac3b1be72d882a58", "packages": [ { "name": "block8/b8framework", - "version": "1.1.8", + "version": "1.1.9", "source": { "type": "git", "url": "https://github.com/Block8/b8framework.git", - "reference": "cfb0bbd87a2ff71f9ebdfa53fca139d50407e0e0" + "reference": "3952dabee84cbf5be3dd8d20eadd13b6219e7a6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Block8/b8framework/zipball/cfb0bbd87a2ff71f9ebdfa53fca139d50407e0e0", - "reference": "cfb0bbd87a2ff71f9ebdfa53fca139d50407e0e0", + "url": "https://api.github.com/repos/Block8/b8framework/zipball/3952dabee84cbf5be3dd8d20eadd13b6219e7a6a", + "reference": "3952dabee84cbf5be3dd8d20eadd13b6219e7a6a", "shasum": "" }, "require": { @@ -51,7 +51,7 @@ "mvc", "php" ], - "time": "2014-07-29 15:49:02" + "time": "2014-12-01 21:02:58" }, { "name": "ircmaxell/password-compat", diff --git a/public/assets/css/AdminLTE.css b/public/assets/css/AdminLTE.css new file mode 100755 index 00000000..cbb95dc3 --- /dev/null +++ b/public/assets/css/AdminLTE.css @@ -0,0 +1,3539 @@ +@import url(//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic); +@import url(//fonts.googleapis.com/css?family=Kaushan+Script); +/*! + * AdminLTE v1.2 + * Author: AlmsaeedStudio.com + * License: Open source - MIT + * Please visit http://opensource.org/licenses/MIT for more information +!*/ +/* + Core: General style +---------------------------- +*/ +html, +body { + overflow-x: hidden!important; + font-family: 'Source Sans Pro', sans-serif; + -webkit-font-smoothing: antialiased; + min-height: 100%; + background: #f9f9f9; +} +a { + color: #3c8dbc; +} +a:hover, +a:active, +a:focus { + outline: none; + text-decoration: none; + color: #72afd2; +} +/* Layouts */ +.wrapper { + min-height: 100%; +} +.wrapper:before, +.wrapper:after { + display: table; + content: " "; +} +.wrapper:after { + clear: both; +} +/* Header */ +body > .header { + position: absolute; + top: 0; + left: 0; + right: 0; + z-index: 1030; +} +/* Define 2 column template */ +.right-side, +.left-side { + min-height: 100%; + display: block; +} +/*right side - contins main content*/ +.right-side { + background-color: #f9f9f9; + margin-left: 220px; +} +/*left side - contains sidebar*/ +.left-side { + position: absolute; + width: 220px; + top: 0; +} +@media screen and (min-width: 992px) { + .left-side { + top: 50px; + } + /*Right side strech mode*/ + .right-side.strech { + margin-left: 0; + } + .right-side.strech > .content-header { + margin-top: 0px; + } + /* Left side collapse */ + .left-side.collapse-left { + left: -220px; + } +} +/*Give content full width on xs screens*/ +@media screen and (max-width: 992px) { + .right-side { + margin-left: 0; + } +} +/* + By default the layout is not fixed but if you add the class .fixed to the body element + the sidebar and the navbar will automatically become poisitioned fixed +*/ +body.fixed > .header, +body.fixed .left-side, +body.fixed .navbar { + position: fixed; +} +body.fixed > .header { + top: 0; + right: 0; + left: 0; +} +body.fixed .navbar { + left: 0; + right: 0; +} +body.fixed .wrapper { + margin-top: 50px; +} +/* Content */ +.content { + padding: 20px 15px; + background: #f9f9f9; + overflow: auto; +} +/* Utility */ +/* H1 - H6 font */ +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: 'Source Sans Pro', sans-serif; +} +/* Page Header */ +.page-header { + margin: 10px 0 20px 0; + font-size: 22px; +} +.page-header > small { + color: #666; + display: block; + margin-top: 5px; +} +/* All images should be responsive */ +img { + max-width: 100% !important; +} +.sort-highlight { + background: #f4f4f4; + border: 1px dashed #ddd; + margin-bottom: 10px; +} +/* 10px padding and margins */ +.pad { + padding: 10px; +} +.margin { + margin: 10px; +} +/* Display inline */ +.inline { + display: inline; + width: auto; +} +/* Background colors */ +.bg-red, +.bg-yellow, +.bg-aqua, +.bg-blue, +.bg-light-blue, +.bg-green, +.bg-navy, +.bg-teal, +.bg-olive, +.bg-lime, +.bg-orange, +.bg-fuchsia, +.bg-purple, +.bg-maroon, +.bg-black { + color: #f9f9f9 !important; +} +.bg-gray { + background-color: #eaeaec !important; +} +.bg-black { + background-color: #222222 !important; +} +.bg-red { + background-color: #f56954 !important; +} +.bg-yellow { + background-color: #f39c12 !important; +} +.bg-aqua { + background-color: #00c0ef !important; +} +.bg-blue { + background-color: #0073b7 !important; +} +.bg-light-blue { + background-color: #3c8dbc !important; +} +.bg-green { + background-color: #00a65a !important; +} +.bg-navy { + background-color: #001f3f !important; +} +.bg-teal { + background-color: #39cccc !important; +} +.bg-olive { + background-color: #3d9970 !important; +} +.bg-lime { + background-color: #01ff70 !important; +} +.bg-orange { + background-color: #ff851b !important; +} +.bg-fuchsia { + background-color: #f012be !important; +} +.bg-purple { + background-color: #932ab6 !important; +} +.bg-maroon { + background-color: #85144b !important; +} +/* Text colors */ +.text-red { + color: #f56954 !important; +} +.text-yellow { + color: #f39c12 !important; +} +.text-aqua { + color: #00c0ef !important; +} +.text-blue { + color: #0073b7 !important; +} +.text-black { + color: #222222 !important; +} +.text-light-blue { + color: #3c8dbc !important; +} +.text-green { + color: #00a65a !important; +} +.text-navy { + color: #001f3f !important; +} +.text-teal { + color: #39cccc !important; +} +.text-olive { + color: #3d9970 !important; +} +.text-lime { + color: #01ff70 !important; +} +.text-orange { + color: #ff851b !important; +} +.text-fuchsia { + color: #f012be !important; +} +.text-purple { + color: #932ab6 !important; +} +.text-maroon { + color: #85144b !important; +} +/*Hide elements by display none only*/ +.hide { + display: none !important; +} +/* Remove borders */ +.no-border { + border: 0px !important; +} +/* Remove padding */ +.no-padding { + padding: 0px !important; +} +/* Remove margins */ +.no-margin { + margin: 0px !important; +} +/* Remove box shadow */ +.no-shadow { + box-shadow: none!important; +} +/* Don't display when printing */ +@media print { + .no-print { + display: none; + } + .left-side, + .header, + .content-header { + display: none; + } + .right-side { + margin: 0; + } +} +/* Remove border radius */ +.flat { + -webkit-border-radius: 0 !important; + -moz-border-radius: 0 !important; + border-radius: 0 !important; +} +/* Change the color of the striped tables */ +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f3f4f5; +} +.table.no-border, +.table.no-border td, +.table.no-border th { + border: 0; +} +/* .text-center in tables */ +table.text-center, +table.text-center td, +table.text-center th { + text-align: center; +} +.table.align th { + text-align: left; +} +.table.align td { + text-align: right; +} +.text-bold, +.text-bold.table td, +.text-bold.table th { + font-weight: 700; +} +.border-radius-none { + -webkit-border-radius: 0 !important; + -moz-border-radius: 0 !important; + border-radius: 0 !important; +} +/* _fix for sparkline tooltip */ +.jqstooltip { + padding: 5px!important; + width: auto!important; + height: auto!important; +} +/* +Gradient Background colors +*/ +.bg-teal-gradient { + background: #39cccc !important; + background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #39cccc), color-stop(1, #7adddd)) !important; + background: -ms-linear-gradient(bottom, #39cccc, #7adddd) !important; + background: -moz-linear-gradient(center bottom, #39cccc 0%, #7adddd 100%) !important; + background: -o-linear-gradient(#7adddd, #39cccc) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd', endColorstr='#39cccc', GradientType=0) !important; + color: #fff; +} +.bg-light-blue-gradient { + background: #3c8dbc !important; + background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #3c8dbc), color-stop(1, #67a8ce)) !important; + background: -ms-linear-gradient(bottom, #3c8dbc, #67a8ce) !important; + background: -moz-linear-gradient(center bottom, #3c8dbc 0%, #67a8ce 100%) !important; + background: -o-linear-gradient(#67a8ce, #3c8dbc) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce', endColorstr='#3c8dbc', GradientType=0) !important; + color: #fff; +} +.bg-blue-gradient { + background: #0073b7 !important; + background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #0073b7), color-stop(1, #0089db)) !important; + background: -ms-linear-gradient(bottom, #0073b7, #0089db) !important; + background: -moz-linear-gradient(center bottom, #0073b7 0%, #0089db 100%) !important; + background: -o-linear-gradient(#0089db, #0073b7) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db', endColorstr='#0073b7', GradientType=0) !important; + color: #fff; +} +.bg-aqua-gradient { + background: #00c0ef !important; + background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00c0ef), color-stop(1, #14d1ff)) !important; + background: -ms-linear-gradient(bottom, #00c0ef, #14d1ff) !important; + background: -moz-linear-gradient(center bottom, #00c0ef 0%, #14d1ff 100%) !important; + background: -o-linear-gradient(#14d1ff, #00c0ef) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#14d1ff', endColorstr='#00c0ef', GradientType=0) !important; + color: #fff; +} +.bg-yellow-gradient { + background: #f39c12 !important; + background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f39c12), color-stop(1, #f7bc60)) !important; + background: -ms-linear-gradient(bottom, #f39c12, #f7bc60) !important; + background: -moz-linear-gradient(center bottom, #f39c12 0%, #f7bc60 100%) !important; + background: -o-linear-gradient(#f7bc60, #f39c12) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60', endColorstr='#f39c12', GradientType=0) !important; + color: #fff; +} +.bg-purple-gradient { + background: #932ab6 !important; + background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #932ab6), color-stop(1, #b959d9)) !important; + background: -ms-linear-gradient(bottom, #932ab6, #b959d9) !important; + background: -moz-linear-gradient(center bottom, #932ab6 0%, #b959d9 100%) !important; + background: -o-linear-gradient(#b959d9, #932ab6) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b959d9', endColorstr='#932ab6', GradientType=0) !important; + color: #fff; +} +.bg-green-gradient { + background: #00a65a !important; + background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00a65a), color-stop(1, #00ca6d)) !important; + background: -ms-linear-gradient(bottom, #00a65a, #00ca6d) !important; + background: -moz-linear-gradient(center bottom, #00a65a 0%, #00ca6d 100%) !important; + background: -o-linear-gradient(#00ca6d, #00a65a) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ca6d', endColorstr='#00a65a', GradientType=0) !important; + color: #fff; +} +.bg-red-gradient { + background: #f56954 !important; + background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f56954), color-stop(1, #f89384)) !important; + background: -ms-linear-gradient(bottom, #f56954, #f89384) !important; + background: -moz-linear-gradient(center bottom, #f56954 0%, #f89384 100%) !important; + background: -o-linear-gradient(#f89384, #f56954) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f89384', endColorstr='#f56954', GradientType=0) !important; + color: #fff; +} +.bg-black-gradient { + background: #222222 !important; + background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #222222), color-stop(1, #3c3c3c)) !important; + background: -ms-linear-gradient(bottom, #222222, #3c3c3c) !important; + background: -moz-linear-gradient(center bottom, #222222 0%, #3c3c3c 100%) !important; + background: -o-linear-gradient(#3c3c3c, #222222) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#3c3c3c', endColorstr='#222222', GradientType=0) !important; + color: #fff; +} +.bg-maroon-gradient { + background: #85144b !important; + background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #85144b), color-stop(1, #b11b64)) !important; + background: -ms-linear-gradient(bottom, #85144b, #b11b64) !important; + background: -moz-linear-gradient(center bottom, #85144b 0%, #b11b64 100%) !important; + background: -o-linear-gradient(#b11b64, #85144b) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b11b64', endColorstr='#85144b', GradientType=0) !important; + color: #fff; +} +.connectedSortable { + min-height: 100px; +} +/*--------------------------------------------------- + LESS Elements 0.9 + --------------------------------------------------- + A set of useful LESS mixins + More info at: http://lesselements.com + ---------------------------------------------------*/ +/* + Components: navbar, logo and content header +------------------------------------------------- +*/ +body > .header { + position: relative; + max-height: 100px; + z-index: 1030; +} +body > .header .navbar { + height: 50px; + margin-bottom: 0; + margin-left: 220px; +} +body > .header .navbar .sidebar-toggle { + float: left; + padding: 9px 5px; + margin-top: 8px; + margin-right: 0; + margin-bottom: 8px; + margin-left: 5px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + -webkit-border-radius: 0 !important; + -moz-border-radius: 0 !important; + border-radius: 0 !important; +} +body > .header .navbar .sidebar-toggle:hover .icon-bar { + background: #f6f6f6; +} +body > .header .navbar .sidebar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +body > .header .navbar .sidebar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +body > .header .navbar .nav > li.user > a { + font-weight: bold; +} +body > .header .navbar .nav > li.user > a > .fa, +body > .header .navbar .nav > li.user > a > .glyphicon, +body > .header .navbar .nav > li.user > a > .ion { + margin-right: 5px; +} +body > .header .navbar .nav > li > a > .label { + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; + position: absolute; + top: 7px; + right: 2px; + font-size: 10px; + font-weight: normal; + width: 15px; + height: 15px; + line-height: 1.0em; + text-align: center; + padding: 2px; +} +body > .header .navbar .nav > li > a:hover > .label { + top: 3px; +} +body > .header .logo { + float: left; + font-size: 20px; + line-height: 50px; + text-align: center; + padding: 0 10px; + width: 220px; + font-family: 'Kaushan Script', cursive; + font-weight: 500; + height: 50px; + display: block; +} +body > .header .logo .icon { + margin-right: 10px; +} +.right-side > .content-header { + position: relative; + padding: 15px 15px 10px 20px; +} +.right-side > .content-header > h1 { + margin: 0; + font-size: 24px; +} +.right-side > .content-header > h1 > small { + font-size: 15px; + display: inline-block; + padding-left: 4px; + font-weight: 300; +} +.right-side > .content-header > .breadcrumb { + float: right; + background: transparent; + margin-top: 0px; + margin-bottom: 0; + font-size: 12px; + padding: 7px 5px; + position: absolute; + top: 15px; + right: 10px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} +.right-side > .content-header > .breadcrumb > li > a { + color: #444; + text-decoration: none; +} +.right-side > .content-header > .breadcrumb > li > a > .fa, +.right-side > .content-header > .breadcrumb > li > a > .glyphicon, +.right-side > .content-header > .breadcrumb > li > a > .ion { + margin-right: 5px; +} +.right-side > .content-header > .breadcrumb > li + li:before { + content: '>\00a0'; +} +@media screen and (max-width: 767px) { + .right-side > .content-header > .breadcrumb { + position: relative; + margin-top: 5px; + top: 0; + right: 0; + float: none; + background: #efefef; + } +} +@media (max-width: 767px) { + .navbar .navbar-nav > li { + float: left; + } + .navbar-nav { + margin: 0; + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + line-height: 20px; + } + .navbar .navbar-right { + float: right; + } +} +@media screen and (max-width: 560px) { + body > .header { + position: relative; + } + body > .header .logo, + body > .header .navbar { + width: 100%; + float: none; + position: relative!important; + } + body > .header .navbar { + margin: 0; + } + body.fixed > .header { + position: fixed; + } + body.fixed > .wrapper, + body.fixed .sidebar-offcanvas { + margin-top: 100px!important; + } +} +/* + Component: Sidebar +-------------------------- +*/ +.sidebar { + margin-bottom: 5px; +} +.sidebar .sidebar-form input:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + border-color: transparent!important; +} +.sidebar .sidebar-menu { + list-style: none; + margin: 0; + padding: 0; +} +.sidebar .sidebar-menu > li { + margin: 0; + padding: 0; +} +.sidebar .sidebar-menu > li > a { + padding: 12px 5px 12px 15px; + display: block; +} +.sidebar .sidebar-menu > li > a > .fa, +.sidebar .sidebar-menu > li > a > .glyphicon, +.sidebar .sidebar-menu > li > a > .ion { + width: 20px; +} +.sidebar .sidebar-menu .treeview-menu { + display: none; + list-style: none; + padding: 0; + margin: 0; +} +.sidebar .sidebar-menu .treeview-menu > li { + margin: 0; +} +.sidebar .sidebar-menu .treeview-menu > li > a { + padding: 5px 5px 5px 15px; + display: block; + font-size: 14px; + margin: 0px 0px; +} +.sidebar .sidebar-menu .treeview-menu > li > a > .fa, +.sidebar .sidebar-menu .treeview-menu > li > a > .glyphicon, +.sidebar .sidebar-menu .treeview-menu > li > a > .ion { + width: 20px; +} +.user-panel { + padding: 10px; +} +.user-panel:before, +.user-panel:after { + display: table; + content: " "; +} +.user-panel:after { + clear: both; +} +.user-panel > .image > img { + width: 45px; + height: 45px; +} +.user-panel > .info { + font-weight: 600; + padding: 5px 5px 5px 15px; + font-size: 14px; + line-height: 1; +} +.user-panel > .info > p { + margin-bottom: 9px; +} +.user-panel > .info > a { + text-decoration: none; + padding-right: 5px; + margin-top: 3px; + font-size: 11px; + font-weight: normal; +} +.user-panel > .info > a > .fa, +.user-panel > .info > a > .ion, +.user-panel > .info > a > .glyphicon { + margin-right: 3px; +} +/* + * Off Canvas + * -------------------------------------------------- + * Gives us the push menu effect + */ +@media screen and (max-width: 992px) { + .relative { + position: relative; + } + .row-offcanvas-right .sidebar-offcanvas { + right: -220px; + } + .row-offcanvas-left .sidebar-offcanvas { + left: -220px; + } + .row-offcanvas-right.active { + right: 220px; + } + .row-offcanvas-left.active { + left: 220px; + } + .sidebar-offcanvas { + left: 0; + } + body.fixed .sidebar-offcanvas { + margin-top: 50px; + left: -220px; + } + body.fixed .row-offcanvas-left.active .navbar { + left: 220px !important; + right: 0; + } + body.fixed .row-offcanvas-left.active .sidebar-offcanvas { + left: 0px; + } +} +/* + Dropdown menus +---------------------------- +*/ +/*Dropdowns in general*/ +.dropdown-menu { + -webkit-box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.1); + box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.1); + z-index: 2300; +} +.dropdown-menu > li > a > .glyphicon, +.dropdown-menu > li > a > .fa, +.dropdown-menu > li > a > .ion { + margin-right: 10px; +} +.dropdown-menu > li > a:hover { + background-color: #3c8dbc; + color: #f9f9f9; +} +/*Drodown in navbars*/ +.skin-blue .navbar .dropdown-menu > li > a { + color: #444444; +} +/* + Navbar custom dropdown menu +------------------------------------ +*/ +.navbar-nav > .notifications-menu > .dropdown-menu, +.navbar-nav > .messages-menu > .dropdown-menu, +.navbar-nav > .tasks-menu > .dropdown-menu { + width: 280px; + padding: 0 0 0 0!important; + margin: 0!important; + top: 100%; + border: 1px solid #dfdfdf; + -webkit-border-radius: 4px !important; + -moz-border-radius: 4px !important; + border-radius: 4px !important; +} +.navbar-nav > .notifications-menu > .dropdown-menu > li.header, +.navbar-nav > .messages-menu > .dropdown-menu > li.header, +.navbar-nav > .tasks-menu > .dropdown-menu > li.header { + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + background-color: #ffffff; + padding: 7px 10px; + border-bottom: 1px solid #f4f4f4; + color: #444444; + font-size: 14px; +} +.navbar-nav > .notifications-menu > .dropdown-menu > li.header:after, +.navbar-nav > .messages-menu > .dropdown-menu > li.header:after, +.navbar-nav > .tasks-menu > .dropdown-menu > li.header:after { + bottom: 100%; + left: 92%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + border-color: rgba(255, 255, 255, 0); + border-bottom-color: #ffffff; + border-width: 7px; + margin-left: -7px; +} +.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a, +.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a, +.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a { + -webkit-border-top-left-radius: 0px; + -webkit-border-top-right-radius: 0px; + -webkit-border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-topleft: 0px; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + border-top-left-radius: 0px; + border-top-right-radius: 0px; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + font-size: 12px; + background-color: #f4f4f4; + padding: 7px 10px; + border-bottom: 1px solid #eeeeee; + color: #444444; + text-align: center; +} +.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover, +.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover, +.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover { + background: #f4f4f4; + text-decoration: none; + font-weight: normal; +} +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu, +.navbar-nav > .messages-menu > .dropdown-menu > li .menu, +.navbar-nav > .tasks-menu > .dropdown-menu > li .menu { + margin: 0; + padding: 0; + list-style: none; + overflow-x: hidden; +} +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a, +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a, +.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a { + display: block; + white-space: nowrap; + /* Prevent text from breaking */ + border-bottom: 1px solid #f4f4f4; +} +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover, +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover, +.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover { + background: #f6f6f6; + text-decoration: none; +} +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a { + font-size: 12px; + color: #444444; +} +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon, +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa, +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion { + font-size: 20px; + width: 50px; + text-align: center; + padding: 15px 0px; + margin-right: 5px; + /* Default background and font colors */ + background: #00c0ef; + color: #f9f9f9; + /* Fallback for browsers that doesn't support rgba */ + color: rgba(255, 255, 255, 0.7); +} +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon.danger, +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa.danger, +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion.danger { + background: #f56954; +} +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon.warning, +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa.warning, +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion.warning { + background: #f39c12; +} +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon.success, +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa.success, +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion.success { + background: #00a65a; +} +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon.info, +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa.info, +.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion.info { + background: #00c0ef; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a { + margin: 0px; + line-height: 20px; + padding: 10px 5px 10px 5px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img { + margin: auto 10px auto auto; + width: 40px; + height: 40px; + border: 1px solid #dddddd; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 { + padding: 0; + margin: 0 0 0 45px; + color: #444444; + font-size: 15px; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small { + color: #999999; + font-size: 10px; + float: right; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p { + margin: 0 0 0 45px; + font-size: 12px; + color: #888888; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before, +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after { + display: table; + content: " "; +} +.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after { + clear: both; +} +.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a { + padding: 10px; +} +.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3 { + font-size: 14px; + padding: 0; + margin: 0 0 10px 0; + color: #666666; +} +.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress { + padding: 0; + margin: 0; +} +.navbar-nav > .user-menu > .dropdown-menu { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + padding: 1px 0 0 0; + border-top-width: 0; + width: 280px; +} +.navbar-nav > .user-menu > .dropdown-menu:after { + bottom: 100%; + right: 10px; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + border-color: rgba(255, 255, 255, 0); + border-bottom-color: #ffffff; + border-width: 10px; + margin-left: -10px; +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-header { + height: 175px; + padding: 10px; + background: #3c8dbc; + text-align: center; +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-header > img { + z-index: 5; + height: 90px; + width: 90px; + border: 8px solid; + border-color: transparent; + border-color: rgba(255, 255, 255, 0.2); +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p { + z-index: 5; + color: #f9f9f9; + color: rgba(255, 255, 255, 0.8); + font-size: 17px; + text-shadow: 2px 2px 3px #333333; + margin-top: 10px; +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small { + display: block; + font-size: 12px; +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-body { + padding: 15px; + border-bottom: 1px solid #f4f4f4; + border-top: 1px solid #dddddd; +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-body:before, +.navbar-nav > .user-menu > .dropdown-menu > li.user-body:after { + display: table; + content: " "; +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-body:after { + clear: both; +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-body > div > a { + color: #0073b7; +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-footer { + background-color: #f9f9f9; + padding: 10px; +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-footer:before, +.navbar-nav > .user-menu > .dropdown-menu > li.user-footer:after { + display: table; + content: " "; +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-footer:after { + clear: both; +} +.navbar-nav > .user-menu > .dropdown-menu > li.user-footer .btn-default { + color: #666666; +} +/* Add fade animation to dropdown menus */ +.open > .dropdown-menu { + animation-name: fadeAnimation; + animation-duration: .7s; + animation-iteration-count: 1; + animation-timing-function: ease; + animation-fill-mode: forwards; + -webkit-animation-name: fadeAnimation; + -webkit-animation-duration: .7s; + -webkit-animation-iteration-count: 1; + -webkit-animation-timing-function: ease; + -webkit-animation-fill-mode: forwards; + -moz-animation-name: fadeAnimation; + -moz-animation-duration: .7s; + -moz-animation-iteration-count: 1; + -moz-animation-timing-function: ease; + -moz-animation-fill-mode: forwards; +} +@keyframes fadeAnimation { + from { + opacity: 0; + top: 120%; + } + to { + opacity: 1; + top: 100%; + } +} +@-webkit-keyframes fadeAnimation { + from { + opacity: 0; + top: 120%; + } + to { + opacity: 1; + top: 100%; + } +} +/* Fix dropdown menu for small screens to display correctly on small screens */ +@media screen and (max-width: 767px) { + .navbar-nav > .notifications-menu > .dropdown-menu, + .navbar-nav > .user-menu > .dropdown-menu, + .navbar-nav > .tasks-menu > .dropdown-menu, + .navbar-nav > .messages-menu > .dropdown-menu { + position: absolute; + top: 100%; + right: 0; + left: auto; + border-right: 1px solid #dddddd; + border-bottom: 1px solid #dddddd; + border-left: 1px solid #dddddd; + background: #ffffff; + } +} +/* Fix menu positions on xs screens to appear correctly and fully */ +@media screen and (max-width: 480px) { + .navbar-nav > .notifications-menu > .dropdown-menu > li.header, + .navbar-nav > .tasks-menu > .dropdown-menu > li.header, + .navbar-nav > .messages-menu > .dropdown-menu > li.header { + /* Remove arrow from the top */ + } + .navbar-nav > .notifications-menu > .dropdown-menu > li.header:after, + .navbar-nav > .tasks-menu > .dropdown-menu > li.header:after, + .navbar-nav > .messages-menu > .dropdown-menu > li.header:after { + border-width: 0px!important; + } + .navbar-nav > .tasks-menu > .dropdown-menu { + position: absolute; + right: -120px; + left: auto; + } + .navbar-nav > .notifications-menu > .dropdown-menu { + position: absolute; + right: -170px; + left: auto; + } + .navbar-nav > .messages-menu > .dropdown-menu { + position: absolute; + right: -210px; + left: auto; + } +} +/* + All form elements including input, select, textarea etc. +----------------------------------------------------------------- +*/ +.form-control { + -webkit-border-radius: 0px !important; + -moz-border-radius: 0px !important; + border-radius: 0px !important; + box-shadow: none; +} +.form-control:focus { + border-color: #3c8dbc !important; + box-shadow: none; +} +.form-group.has-success label { + color: #00a65a; +} +.form-group.has-success .form-control { + border-color: #00a65a !important; + box-shadow: none; +} +.form-group.has-warning label { + color: #f39c12; +} +.form-group.has-warning .form-control { + border-color: #f39c12 !important; + box-shadow: none; +} +.form-group.has-error label { + color: #f56954; +} +.form-group.has-error .form-control { + border-color: #f56954 !important; + box-shadow: none; +} +/* Input group */ +.input-group .input-group-addon { + border-radius: 0; + background-color: #f4f4f4; +} +/* button groups */ +.btn-group-vertical .btn.btn-flat:first-of-type, +.btn-group-vertical .btn.btn-flat:last-of-type { + border-radius: 0; +} +/* Checkbox and radio inputs */ +.checkbox, +.radio { + padding-left: 0; +} +/* + Compenent: Progress bars +-------------------------------- +*/ +/* size variation */ +.progress.sm { + height: 10px; +} +.progress.xs { + height: 7px; +} +/* Vertical bars */ +.progress.vertical { + position: relative; + width: 30px; + height: 200px; + display: inline-block; + margin-right: 10px; +} +.progress.vertical > .progress-bar { + width: 100%!important; + position: absolute; + bottom: 0; +} +.progress.vertical.sm { + width: 20px; +} +.progress.vertical.xs { + width: 10px; +} +/* Remove margins from progress bars when put in a table */ +.table tr > td .progress { + margin: 0; +} +.progress-bar-light-blue, +.progress-bar-primary { + background-color: #3c8dbc; +} +.progress-striped .progress-bar-light-blue, +.progress-striped .progress-bar-primary { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-green, +.progress-bar-success { + background-color: #00a65a; +} +.progress-striped .progress-bar-green, +.progress-striped .progress-bar-success { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-aqua, +.progress-bar-info { + background-color: #00c0ef; +} +.progress-striped .progress-bar-aqua, +.progress-striped .progress-bar-info { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-yellow, +.progress-bar-warning { + background-color: #f39c12; +} +.progress-striped .progress-bar-yellow, +.progress-striped .progress-bar-warning { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-red, +.progress-bar-danger { + background-color: #f56954; +} +.progress-striped .progress-bar-red, +.progress-striped .progress-bar-danger { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +/* + Component: Small boxes +*/ +.small-box { + position: relative; + display: block; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + margin-bottom: 15px; +} +.small-box > .inner { + padding: 10px; +} +.small-box > .small-box-footer { + position: relative; + text-align: center; + padding: 3px 0; + color: #fff; + color: rgba(255, 255, 255, 0.8); + display: block; + z-index: 10; + background: rgba(0, 0, 0, 0.1); + text-decoration: none; +} +.small-box > .small-box-footer:hover { + color: #fff; + background: rgba(0, 0, 0, 0.15); +} +.small-box h3 { + font-size: 38px; + font-weight: bold; + margin: 0 0 10px 0; + white-space: nowrap; + padding: 0; +} +.small-box p { + font-size: 15px; +} +.small-box p > small { + display: block; + color: #f9f9f9; + font-size: 13px; + margin-top: 5px; +} +.small-box h3, +.small-box p { + z-index: 5px; +} +.small-box .icon { + position: absolute; + top: auto; + bottom: 5px; + right: 5px; + z-index: 0; + font-size: 90px; + color: rgba(0, 0, 0, 0.15); +} +.small-box:hover { + text-decoration: none; + color: #f9f9f9; +} +.small-box:hover .icon { + animation-name: tansformAnimation; + animation-duration: .5s; + animation-iteration-count: 1; + animation-timing-function: ease; + animation-fill-mode: forwards; + -webkit-animation-name: tansformAnimation; + -webkit-animation-duration: .5s; + -webkit-animation-iteration-count: 1; + -webkit-animation-timing-function: ease; + -webkit-animation-fill-mode: forwards; + -moz-animation-name: tansformAnimation; + -moz-animation-duration: .5s; + -moz-animation-iteration-count: 1; + -moz-animation-timing-function: ease; + -moz-animation-fill-mode: forwards; +} +@keyframes tansformAnimation { + from { + font-size: 90px; + } + to { + font-size: 100px; + } +} +@-webkit-keyframes tansformAnimation { + from { + font-size: 90px; + } + to { + font-size: 100px; + } +} +@media screen and (max-width: 480px) { + .small-box { + text-align: center; + } + .small-box .icon { + display: none; + } + .small-box p { + font-size: 12px; + } +} +/* + component: Boxes +------------------------- +*/ +.box { + position: relative; + background: #ffffff; + border-top: 2px solid #c1c1c1; + margin-bottom: 20px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + width: 100%; + box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); +} +.box.box-primary { + border-top-color: #3c8dbc; +} +.box.box-info { + border-top-color: #00c0ef; +} +.box.box-danger { + border-top-color: #f56954; +} +.box.box-warning { + border-top-color: #f39c12; +} +.box.box-success { + border-top-color: #00a65a; +} +.box.height-control .box-body { + max-height: 300px; + overflow: auto; +} +.box .box-header { + position: relative; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-bottom: 0px solid #f4f4f4; + color: #444; +} +.box .box-header:before, +.box .box-header:after { + display: table; + content: " "; +} +.box .box-header:after { + clear: both; +} +.box .box-header > .fa, +.box .box-header > .glyphicon, +.box .box-header > .ion, +.box .box-header .box-title { + display: inline-block; + padding: 10px 10px 10px 10px; + margin: 0; + font-size: 20px; + font-weight: 400; + float: left; + cursor: default; +} +.box .box-header a { + color: #444; +} +.box .box-header > .box-tools { + padding: 5px 10px 5px 5px; +} +.box .box-body { + padding: 10px; + -webkit-border-top-left-radius: 0; + -webkit-border-top-right-radius: 0; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -moz-border-radius-topleft: 0; + -moz-border-radius-topright: 0; + -moz-border-radius-bottomright: 3px; + -moz-border-radius-bottomleft: 3px; + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.box .box-body > table, +.box .box-body > .table { + margin-bottom: 0; +} +.box .box-body.chart-responsive { + width: 100%; + overflow: hidden; +} +.box .box-body > .chart { + position: relative; + overflow: hidden; + width: 100%; +} +.box .box-body > .chart svg, +.box .box-body > .chart canvas { + width: 100%!important; +} +.box .box-body .fc { + margin-top: 5px; +} +.box .box-body .fc-header-title h2 { + font-size: 15px; + line-height: 1.6em; + color: #666; + margin-left: 10px; +} +.box .box-body .fc-header-right { + padding-right: 10px; +} +.box .box-body .fc-header-left { + padding-left: 10px; +} +.box .box-body .fc-widget-header { + background: #fafafa; + box-shadow: inset 0px -3px 1px rgba(0, 0, 0, 0.02); +} +.box .box-body .fc-grid { + width: 100%; + border: 0; +} +.box .box-body .fc-widget-header:first-of-type, +.box .box-body .fc-widget-content:first-of-type { + border-left: 0; + border-right: 0; +} +.box .box-body .fc-widget-header:last-of-type, +.box .box-body .fc-widget-content:last-of-type { + border-right: 0; +} +.box .box-body .table { + margin-bottom: 0; +} +.box .box-body .full-width-chart { + margin: -19px; +} +.box .box-body.no-padding .full-width-chart { + margin: -9px; +} +.box .box-footer { + border-top: 1px solid #f4f4f4; + -webkit-border-top-left-radius: 0; + -webkit-border-top-right-radius: 0; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -moz-border-radius-topleft: 0; + -moz-border-radius-topright: 0; + -moz-border-radius-bottomright: 3px; + -moz-border-radius-bottomleft: 3px; + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + padding: 10px; + background-color: #ffffff; +} +.box.box-solid { + border-top: 0px; +} +.box.box-solid > .box-header { + padding-bottom: 0px!important; +} +.box.box-solid > .box-header .btn.btn-default { + background: transparent; +} +.box.box-solid.box-primary > .box-header { + color: #fff; + background: #3c8dbc; + background-color: #3c8dbc; +} +.box.box-solid.box-primary > .box-header a { + color: #444; +} +.box.box-solid.box-info > .box-header { + color: #fff; + background: #00c0ef; + background-color: #00c0ef; +} +.box.box-solid.box-info > .box-header a { + color: #444; +} +.box.box-solid.box-danger > .box-header { + color: #fff; + background: #f56954; + background-color: #f56954; +} +.box.box-solid.box-danger > .box-header a { + color: #444; +} +.box.box-solid.box-warning > .box-header { + color: #fff; + background: #f39c12; + background-color: #f39c12; +} +.box.box-solid.box-warning > .box-header a { + color: #444; +} +.box.box-solid.box-success > .box-header { + color: #fff; + background: #00a65a; + background-color: #00a65a; +} +.box.box-solid.box-success > .box-header a { + color: #444; +} +.box.box-solid > .box-header > .box-tools .btn { + border: 0; + box-shadow: none; +} +.box.box-solid.collapsed-box .box-header { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.box.box-solid[class*='bg'] > .box-header { + color: #fff; +} +.box .box-group > .box { + margin-bottom: 5px; +} +.box .knob-label { + text-align: center; + color: #333; + font-weight: 100; + font-size: 12px; + margin-bottom: 0.3em; +} +.box .todo-list { + margin: 0; + padding: 0px 0px; + list-style: none; +} +.box .todo-list > li { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + padding: 10px; + background: #f3f4f5; + margin-bottom: 2px; + border-left: 2px solid #e6e7e8; + color: #444; +} +.box .todo-list > li:last-of-type { + margin-bottom: 0; +} +.box .todo-list > li.danger { + border-left-color: #f56954; +} +.box .todo-list > li.warning { + border-left-color: #f39c12; +} +.box .todo-list > li.info { + border-left-color: #00c0ef; +} +.box .todo-list > li.success { + border-left-color: #00a65a; +} +.box .todo-list > li.primary { + border-left-color: #3c8dbc; +} +.box .todo-list > li > input[type='checkbox'] { + margin: 0 10px 0 5px; +} +.box .todo-list > li .text { + display: inline-block; + margin-left: 5px; + font-weight: 600; +} +.box .todo-list > li .label { + margin-left: 10px; + font-size: 9px; +} +.box .todo-list > li .tools { + display: none; + float: right; + color: #f56954; +} +.box .todo-list > li .tools > .fa, +.box .todo-list > li .tools > .glyphicon, +.box .todo-list > li .tools > .ion { + margin-right: 5px; + cursor: pointer; +} +.box .todo-list > li:hover .tools { + display: inline-block; +} +.box .todo-list > li.done { + color: #999; +} +.box .todo-list > li.done .text { + text-decoration: line-through; + font-weight: 500; +} +.box .todo-list > li.done .label { + background: #eaeaec !important; +} +.box .todo-list .handle { + display: inline-block; + cursor: move; + margin: 0 5px; +} +.box .chat { + padding: 5px 20px 5px 10px; +} +.box .chat .item { + margin-bottom: 10px; +} +.box .chat .item:before, +.box .chat .item:after { + display: table; + content: " "; +} +.box .chat .item:after { + clear: both; +} +.box .chat .item > img { + width: 40px; + height: 40px; + border: 2px solid transparent; + -webkit-border-radius: 50% !important; + -moz-border-radius: 50% !important; + border-radius: 50% !important; +} +.box .chat .item > img.online { + border: 2px solid #00a65a; +} +.box .chat .item > img.offline { + border: 2px solid #f56954; +} +.box .chat .item > .message { + margin-left: 55px; + margin-top: -40px; +} +.box .chat .item > .message > .name { + display: block; + font-weight: 600; +} +.box .chat .item > .attachment { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background: #f0f0f0; + margin-left: 65px; + margin-right: 15px; + padding: 10px; +} +.box .chat .item > .attachment > h4 { + margin: 0 0 5px 0; + font-weight: 600; + font-size: 14px; +} +.box .chat .item > .attachment > p, +.box .chat .item > .attachment > .filename { + font-weight: 600; + font-size: 13px; + font-style: italic; + margin: 0; +} +.box .chat .item > .attachment:before, +.box .chat .item > .attachment:after { + display: table; + content: " "; +} +.box .chat .item > .attachment:after { + clear: both; +} +.box > .overlay, +.box > .loading-img { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.box > .overlay { + z-index: 1010; + background: rgba(255, 255, 255, 0.7); +} +.box > .overlay.dark { + background: rgba(0, 0, 0, 0.5); +} +.box > .loading-img { + z-index: 1020; + background: transparent url('../img/ajax-loader1.gif') 50% 50% no-repeat; +} +/* +Component: timeline +-------------------- +*/ +.timeline { + position: relative; + margin: 0 0 30px 0; + padding: 0; + list-style: none; +} +.timeline:before { + content: ''; + position: absolute; + top: 0px; + bottom: 0; + width: 5px; + background: #ddd; + left: 30px; + border: 1px solid #eee; + margin: 0; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} +.timeline > li { + position: relative; + margin-right: 10px; + margin-bottom: 15px; +} +.timeline > li:before, +.timeline > li:after { + display: table; + content: " "; +} +.timeline > li:after { + clear: both; +} +.timeline > li > .timeline-item { + margin-top: 10px; + border: 0px solid #dfdfdf; + background: #fff; + color: #555; + margin-left: 60px; + margin-right: 15px; + padding: 5px; + position: relative; + box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); +} +.timeline > li > .timeline-item > .time { + color: #999; + float: right; + margin: 2px 0 0 0; +} +.timeline > li > .timeline-item > .timeline-header { + margin: 0; + color: #555; + border-bottom: 1px solid #f4f4f4; + padding: 5px; + font-size: 16px; + line-height: 1.1; +} +.timeline > li > .timeline-item > .timeline-header > a { + font-weight: 600; +} +.timeline > li > .timeline-item > .timeline-body, +.timeline > li > .timeline-item > .timeline-footer { + padding: 10px; +} +.timeline > li.time-label > span { + font-weight: 600; + padding: 5px; + display: inline-block; + background-color: #fff; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.timeline > li > .fa, +.timeline > li > .glyphicon, +.timeline > li > .ion { + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + width: 30px; + height: 30px; + font-size: 15px; + line-height: 30px; + position: absolute; + color: #666; + background: #eee; + border-radius: 50%; + text-align: center; + left: 18px; + top: 0; +} +/* + Component: Buttons +------------------------- +*/ +.btn { + font-weight: 500; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + border: 1px solid transparent; + -webkit-box-shadow: inset 0px -2px 0px 0px rgba(0, 0, 0, 0.09); + -moz-box-shadow: inset 0px -2px 0px 0px rgba(0, 0, 0, 0.09); + box-shadow: inset 0px -1px 0px 0px rgba(0, 0, 0, 0.09); +} +.btn.btn-default { + background-color: #fafafa; + color: #666; + border-color: #ddd; + border-bottom-color: #ddd; +} +.btn.btn-default:hover, +.btn.btn-default:active, +.btn.btn-default.hover { + background-color: #f4f4f4!important; +} +.btn.btn-default.btn-flat { + border-bottom-color: #d9dadc; +} +.btn.btn-primary { + background-color: #3c8dbc; + border-color: #367fa9; +} +.btn.btn-primary:hover, +.btn.btn-primary:active, +.btn.btn-primary.hover { + background-color: #367fa9; +} +.btn.btn-success { + background-color: #00a65a; + border-color: #008d4c; +} +.btn.btn-success:hover, +.btn.btn-success:active, +.btn.btn-success.hover { + background-color: #008d4c; +} +.btn.btn-info { + background-color: #00c0ef; + border-color: #00acd6; +} +.btn.btn-info:hover, +.btn.btn-info:active, +.btn.btn-info.hover { + background-color: #00acd6; +} +.btn.btn-danger { + background-color: #f56954; + border-color: #f4543c; +} +.btn.btn-danger:hover, +.btn.btn-danger:active, +.btn.btn-danger.hover { + background-color: #f4543c; +} +.btn.btn-warning { + background-color: #f39c12; + border-color: #e08e0b; +} +.btn.btn-warning:hover, +.btn.btn-warning:active, +.btn.btn-warning.hover { + background-color: #e08e0b; +} +.btn.btn-flat { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + border-width: 1px; +} +.btn:active { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn:focus { + outline: none; +} +.btn.btn-file { + position: relative; + overflow: hidden; +} +.btn.btn-file > input[type='file'] { + position: absolute; + top: 0; + right: 0; + min-width: 100%; + min-height: 100%; + font-size: 100px; + text-align: right; + filter: alpha(opacity=0); + opacity: 0; + outline: none; + background: white; + cursor: inherit; + display: block; +} +.btn.btn-app { + position: relative; + padding: 15px 5px; + margin: 0 0 10px 10px; + min-width: 80px; + height: 60px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + text-align: center; + color: #666; + border: 1px solid #ddd; + background-color: #fafafa; + font-size: 12px; +} +.btn.btn-app > .fa, +.btn.btn-app > .glyphicon, +.btn.btn-app > .ion { + font-size: 20px; + display: block; +} +.btn.btn-app:hover { + background: #f4f4f4; + color: #444; + border-color: #aaa; +} +.btn.btn-app:active, +.btn.btn-app:focus { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn.btn-app > .badge { + position: absolute; + top: -3px; + right: -10px; + font-size: 10px; + font-weight: 400; +} +.btn.btn-social-old { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + opacity: 0.9; + padding: 0; +} +.btn.btn-social-old > .fa { + padding: 10px 0; + width: 40px; +} +.btn.btn-social-old > .fa + span { + border-left: 1px solid rgba(255, 255, 255, 0.3); +} +.btn.btn-social-old span { + padding: 10px; +} +.btn.btn-social-old:hover { + opacity: 1; +} +.btn.btn-circle { + width: 30px; + height: 30px; + line-height: 30px; + padding: 0; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} +/* + Component: callout +------------------------ +*/ +.callout { + margin: 0 0 20px 0; + padding: 15px 30px 15px 15px; + border-left: 5px solid #eee; +} +.callout h4 { + margin-top: 0; +} +.callout p:last-child { + margin-bottom: 0; +} +.callout code, +.callout .highlight { + background-color: #fff; +} +.callout.callout-danger { + background-color: #fcf2f2; + border-color: #dFb5b4; +} +.callout.callout-warning { + background-color: #fefbed; + border-color: #f1e7bc; +} +.callout.callout-info { + background-color: #f0f7fd; + border-color: #d0e3f0; +} +.callout.callout-danger h4 { + color: #B94A48; +} +.callout.callout-warning h4 { + color: #C09853; +} +.callout.callout-info h4 { + color: #3A87AD; +} +/* + Component: alert +------------------------ +*/ +.alert { + padding-left: 30px; + margin-left: 15px; + position: relative; +} +.alert > .fa, +.alert > .glyphicon { + position: absolute; + left: -15px; + top: -15px; + width: 35px; + height: 35px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; + line-height: 35px; + text-align: center; + background: inherit; + border: inherit; +} +/* + Component: Navs +*/ +/* NAV PILLS */ +.nav.nav-pills > li > a { + border-top: 3px solid transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + color: #444; +} +.nav.nav-pills > li > a > .fa, +.nav.nav-pills > li > a > .glyphicon, +.nav.nav-pills > li > a > .ion { + margin-right: 5px; +} +.nav.nav-pills > li.active > a, +.nav.nav-pills > li.active > a:hover { + background-color: #f6f6f6; + border-top-color: #3c8dbc; + color: #444; +} +.nav.nav-pills > li.active > a { + font-weight: 600; +} +.nav.nav-pills > li > a:hover { + background-color: #f6f6f6; +} +.nav.nav-pills.nav-stacked > li > a { + border-top: 0; + border-left: 3px solid transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + color: #444; +} +.nav.nav-pills.nav-stacked > li.active > a, +.nav.nav-pills.nav-stacked > li.active > a:hover { + background-color: #f6f6f6; + border-left-color: #3c8dbc; + color: #444; +} +.nav.nav-pills.nav-stacked > li.header { + border-bottom: 1px solid #ddd; + color: #777; + margin-bottom: 10px; + padding: 5px 10px; + text-transform: uppercase; +} +/* NAV TABS */ +.nav-tabs-custom { + margin-bottom: 20px; + background: #fff; + box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); +} +.nav-tabs-custom > .nav-tabs { + margin: 0; + border-bottom-color: #f4f4f4; +} +.nav-tabs-custom > .nav-tabs > li { + border-top: 3px solid transparent; + margin-bottom: -2px; + margin-right: 5px; +} +.nav-tabs-custom > .nav-tabs > li > a { + -webkit-border-radius: 0 !important; + -moz-border-radius: 0 !important; + border-radius: 0 !important; +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li > a:hover { + background: transparent; + margin: 0; +} +.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover, +.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus, +.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active { + border-color: transparent; +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: #3c8dbc; +} +.nav-tabs-custom > .nav-tabs > li.active > a, +.nav-tabs-custom > .nav-tabs > li.active:hover > a { + background-color: #fff; +} +.nav-tabs-custom > .nav-tabs > li.active > a { + border-top: 0; + border-left-color: #f4f4f4; + border-right-color: #f4f4f4; +} +.nav-tabs-custom > .nav-tabs > li:first-of-type { + margin-left: 0px; +} +.nav-tabs-custom > .nav-tabs > li:first-of-type.active > a { + border-left-width: 0; +} +.nav-tabs-custom > .nav-tabs.pull-right { + float: none!important; +} +.nav-tabs-custom > .nav-tabs.pull-right > li { + float: right; +} +.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type { + margin-right: 0px; +} +.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a { + border-left-width: 1px; + border-right-width: 0px; +} +.nav-tabs-custom > .nav-tabs > li.header { + font-weight: 400; + line-height: 35px; + padding: 0 10px; + font-size: 20px; + color: #444; + cursor: default; +} +.nav-tabs-custom > .nav-tabs > li.header > .fa, +.nav-tabs-custom > .nav-tabs > li.header > .glyphicon, +.nav-tabs-custom > .nav-tabs > li.header > .ion { + margin-right: 10px; +} +.nav-tabs-custom > .tab-content { + background: #fff; + padding: 10px; +} +/* Nav tabs bottom */ +.tabs-bottom.nav-3 li a { + width: 3333.33333333% !important; +} +.tabs-bottom li a { + border: 0; +} +/* PAGINATION */ +.pagination > li > a { + background: #fafafa; + color: #666; + -webkit-box-shadow: inset 0px -2px 0px 0px rgba(0, 0, 0, 0.09); + -moz-box-shadow: inset 0px -2px 0px 0px rgba(0, 0, 0, 0.09); + box-shadow: inset 0px -1px 0px 0px rgba(0, 0, 0, 0.09); +} +.pagination > li:first-of-type a, +.pagination > li:last-of-type a { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +/* + Component: Mailbox +*/ +.mailbox .table-mailbox { + border-left: 1px solid #ddd; + border-right: 1px solid #ddd; + border-bottom: 1px solid #ddd; +} +.mailbox .table-mailbox tr.unread > td { + background-color: rgba(0, 0, 0, 0.05); + color: #000; + font-weight: 600; +} +.mailbox .table-mailbox tr > td > .fa.fa-star, +.mailbox .table-mailbox tr > td > .fa.fa-star-o, +.mailbox .table-mailbox tr > td > .glyphicon.glyphicon-star, +.mailbox .table-mailbox tr > td > .glyphicon.glyphicon-star-empty { + color: #f39c12; + cursor: pointer; +} +.mailbox .table-mailbox tr > td.small-col { + width: 30px; +} +.mailbox .table-mailbox tr > td.name { + width: 150px; + font-weight: 600; +} +.mailbox .table-mailbox tr > td.time { + text-align: right; + width: 100px; +} +.mailbox .table-mailbox tr > td { + white-space: nowrap; +} +.mailbox .table-mailbox tr > td > a { + color: #444; +} +@media screen and (max-width: 767px) { + .mailbox .nav-stacked > li:not(.header) { + float: left; + width: 50%; + } + .mailbox .nav-stacked > li:not(.header).header { + border: 0!important; + } + .mailbox .search-form { + margin-top: 10px; + } +} +/* + Page: locked screen +*/ +/* ADD THIS CLASS TO THE TAG */ +.lockscreen { + background: url(../img/blur-background09.jpg) repeat center center fixed; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; +} +/* Remove the background from the body element */ +.lockscreen > body { + background: transparent; +} +/* We will put the dynamically generated digital clock here */ +.lockscreen .headline { + color: #fff; + text-shadow: 1px 3px 5px rgba(0, 0, 0, 0.5); + font-weight: 300; + -webkit-font-smoothing: antialiased !important; + opacity: 0.8; + margin: 10px 0 30px 0; + font-size: 90px; +} +@media screen and (max-width: 480px) { + .lockscreen .headline { + font-size: 60px; + margin-bottom: 40px; + } +} +/* User name [optional] */ +.lockscreen .lockscreen-name { + text-align: center; + font-weight: 600; + font-size: 16px; +} +/* Will contain the image and the sign in form */ +.lockscreen-item { + padding: 0; + background: #fff; + position: relative; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + margin: 10px auto; + width: 290px; +} +.lockscreen-item:before, +.lockscreen-item:after { + display: table; + content: " "; +} +.lockscreen-item:after { + clear: both; +} +/* User image */ +.lockscreen-item > .lockscreen-image { + position: absolute; + left: -10px; + top: -30px; + background: #fff; + padding: 10px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; + z-index: 10; +} +.lockscreen-item > .lockscreen-image > img { + width: 70px; + height: 70px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} +/* Contains the password input and the login button */ +.lockscreen-item > .lockscreen-credentials { + margin-left: 80px; +} +.lockscreen-item > .lockscreen-credentials input { + border: 0 !important; +} +.lockscreen-item > .lockscreen-credentials .btn { + background-color: #fff; + border: 0; +} +/* Extra to give the user an option to navigate the website [optional]*/ +.lockscreen-link { + margin-top: 30px; + text-align: center; +} +/* + Page: register and login +*/ +.form-box { + width: 360px; + margin: 90px auto 0 auto; +} +.form-box .header { + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + background: #3d9970; + box-shadow: inset 0px -3px 0px rgba(0, 0, 0, 0.2); + padding: 20px 10px; + text-align: center; + font-size: 26px; + font-weight: 300; + color: #fff; +} +.form-box .body, +.form-box .footer { + padding: 10px 20px; + background: #fff; + color: #444; +} +.form-box .body > .form-group, +.form-box .footer > .form-group { + margin-top: 20px; +} +.form-box .body > .form-group > input, +.form-box .footer > .form-group > input { + border: #fff; +} +.form-box .body > .btn, +.form-box .footer > .btn { + margin-bottom: 10px; +} +.form-box .footer { + -webkit-border-top-left-radius: 0; + -webkit-border-top-right-radius: 0; + -webkit-border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-topleft: 0; + -moz-border-radius-topright: 0; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +@media (max-width: 767px) { + .form-box { + width: 90%; + } +} +/* + Page: 404 and 500 error pages +------------------------------------ +*/ +.error-page { + width: 600px; + margin: 20px auto 0 auto; +} +@media screen and (max-width: 767px) { + .error-page { + width: 100%; + } +} +.error-page > .headline { + float: left; + font-size: 100px; + font-weight: 300; +} +@media screen and (max-width: 767px) { + .error-page > .headline { + float: none; + text-align: center; + } +} +.error-page > .error-content { + margin-left: 190px; + display: block; +} +@media screen and (max-width: 767px) { + .error-page > .error-content { + margin-left: 0; + } +} +.error-page > .error-content > h3 { + font-weight: 300; + font-size: 25px; +} +@media screen and (max-width: 767px) { + .error-page > .error-content > h3 { + text-align: center; + } +} +.error-page:before, +.error-page:after { + display: table; + content: " "; +} +.error-page:after { + clear: both; +} +/* + Page: Invoice +*/ +.invoice { + position: relative; + width: 90%; + margin: 10px auto; + background: #fff; + border: 1px solid #f4f4f4; +} +.invoice-title { + margin-top: 0; +} +/* Enhancement for printing */ +@media print { + .invoice { + width: 100%; + border: 0; + margin: 0; + padding: 0; + } + .invoice-col { + float: left; + width: 33.3333333%; + } + .table-responsive { + overflow: auto; + } + .table-responsive > .table tr th, + .table-responsive > .table tr td { + white-space: normal!important; + } +} +/* + Skins + ----- +*/ +/* + Skin Blue + --------- +*/ +/* skin-blue navbar */ +.skin-blue .navbar { + background-color: #3c8dbc; +} +.skin-blue .navbar .nav a { + color: rgba(255, 255, 255, 0.8); +} +.skin-blue .navbar .nav > li > a:hover, +.skin-blue .navbar .nav > li > a:active, +.skin-blue .navbar .nav > li > a:focus, +.skin-blue .navbar .nav .open > a, +.skin-blue .navbar .nav .open > a:hover, +.skin-blue .navbar .nav .open > a:focus { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-blue .navbar .navbar-right > .nav { + margin-right: 10px; +} +.skin-blue .navbar .sidebar-toggle .icon-bar { + background: rgba(255, 255, 255, 0.8); +} +.skin-blue .navbar .sidebar-toggle:hover .icon-bar { + background: #f6f6f6 !important; +} +/* skin-blue logo */ +.skin-blue .logo { + background-color: #367fa9; + color: #f9f9f9; +} +.skin-blue .logo > a { + color: #f9f9f9; +} +.skin-blue .logo:hover { + background: #357ca5; +} +/* skin-blue content header */ +.skin-blue .right-side > .content-header { + background: #fbfbfb; + box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); +} +/* Skin-blue user panel */ +.skin-blue .user-panel > .image > img { + border: 1px solid #dfdfdf; +} +.skin-blue .user-panel > .info, +.skin-blue .user-panel > .info > a { + color: #555555; +} +/* skin-blue sidebar */ +.skin-blue .sidebar { + border-bottom: 1px solid #fff; +} +.skin-blue .sidebar > .sidebar-menu > li { + border-top: 1px solid #fff; + border-bottom: 1px solid #dbdbdb; +} +.skin-blue .sidebar > .sidebar-menu > li:first-of-type { + border-top: 1px solid #dbdbdb; +} +.skin-blue .sidebar > .sidebar-menu > li:first-of-type > a { + border-top: 1px solid #fff; +} +.skin-blue .sidebar > .sidebar-menu > li > a { + margin-right: 1px; +} +.skin-blue .sidebar > .sidebar-menu > li > a:hover, +.skin-blue .sidebar > .sidebar-menu > li.active > a { + color: #222; + background: #f9f9f9; +} +.skin-blue .sidebar > .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #f9f9f9; +} +.skin-blue .left-side { + background: #f4f4f4; + -webkit-box-shadow: inset -3px 0px 8px -4px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset -3px 0px 8px -4px rgba(0, 0, 0, 0.1); + box-shadow: inset -3px 0px 8px -4px rgba(0, 0, 0, 0.07); +} +.skin-blue .sidebar a { + color: #555555; +} +.skin-blue .sidebar a:hover { + text-decoration: none; +} +.skin-blue .treeview-menu > li > a { + color: #777; +} +.skin-blue .treeview-menu > li.active > a, +.skin-blue .treeview-menu > li > a:hover { + color: #111; +} +.skin-blue .sidebar-form { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + border: 1px solid #dbdbdb; + margin: 10px 10px; +} +.skin-blue .sidebar-form input[type="text"], +.skin-blue .sidebar-form .btn { + box-shadow: none; + background-color: #fafafa; + border: 1px solid #fafafa; + height: 35px; +} +.skin-blue .sidebar-form input[type="text"] { + color: #666; + -webkit-border-top-left-radius: 2px !important; + -webkit-border-top-right-radius: 0 !important; + -webkit-border-bottom-right-radius: 0 !important; + -webkit-border-bottom-left-radius: 2px !important; + -moz-border-radius-topleft: 2px !important; + -moz-border-radius-topright: 0 !important; + -moz-border-radius-bottomright: 0 !important; + -moz-border-radius-bottomleft: 2px !important; + border-top-left-radius: 2px !important; + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 2px !important; +} +.skin-blue .sidebar-form input[type="text"]:focus, +.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-blue .sidebar-form .btn { + color: #999; + -webkit-border-top-left-radius: 0 !important; + -webkit-border-top-right-radius: 2px !important; + -webkit-border-bottom-right-radius: 2px !important; + -webkit-border-bottom-left-radius: 0 !important; + -moz-border-radius-topleft: 0 !important; + -moz-border-radius-topright: 2px !important; + -moz-border-radius-bottomright: 2px !important; + -moz-border-radius-bottomleft: 0 !important; + border-top-left-radius: 0 !important; + border-top-right-radius: 2px !important; + border-bottom-right-radius: 2px !important; + border-bottom-left-radius: 0 !important; +} +/* + Skin Black + -------- +*/ +/* skin-black navbar */ +.skin-black .navbar { + background-color: #ffffff; + border-bottom: 1px solid #eee; +} +.skin-black .navbar .nav a { + color: #333333; +} +.skin-black .navbar .nav > li > a:hover, +.skin-black .navbar .nav > li > a:active, +.skin-black .navbar .nav > li > a:focus, +.skin-black .navbar .nav .open > a, +.skin-black .navbar .nav .open > a:hover, +.skin-black .navbar .nav .open > a:focus { + background: #ffffff; + color: #999999; +} +.skin-black .navbar .navbar-right > .nav { + margin-right: 10px; +} +.skin-black .navbar .sidebar-toggle .icon-bar { + background: #333333; +} +.skin-black .navbar .sidebar-toggle:hover .icon-bar { + background: #999999 !important; +} +/* skin-black logo */ +.skin-black .logo { + background-color: #333333; + color: #f9f9f9; +} +.skin-black .logo > a { + color: #f9f9f9; +} +.skin-black .logo:hover { + background: #303030; +} +/* skin-black content header */ +.skin-black .right-side > .content-header { + background: transparent; + box-shadow: none; +} +/* Skin-red user panel */ +.skin-black .user-panel > .image > img { + border: 1px solid #444; +} +.skin-black .user-panel > .info, +.skin-black .user-panel > .info > a { + color: #eee; +} +/* skin-black sidebar */ +.skin-black .sidebar { + border-bottom: 1px solid #333; +} +.skin-black .sidebar > .sidebar-menu > li { + border-top: 1px solid #333; + border-bottom: 0px solid #444; +} +.skin-black .sidebar > .sidebar-menu > li:first-of-type { + border-top: 1px solid #444; +} +.skin-black .sidebar > .sidebar-menu > li:first-of-type > a { + border-top: 0px solid #333; +} +.skin-black .sidebar > .sidebar-menu > li > a { + margin-right: 1px; +} +.skin-black .sidebar > .sidebar-menu > li > a:hover, +.skin-black .sidebar > .sidebar-menu > li.active > a { + color: #f6f6f6; + background: #444; +} +.skin-black .sidebar > .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #444; +} +.skin-black .left-side { + background: #333; +} +.skin-black .sidebar a { + color: #eee; +} +.skin-black .sidebar a:hover { + text-decoration: none; +} +.skin-black .treeview-menu > li > a { + color: #ccc; +} +.skin-black .treeview-menu > li.active > a, +.skin-black .treeview-menu > li > a:hover { + color: #fff; +} +.skin-black .sidebar-form { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + border: 0px solid #555; + margin: 10px 10px; +} +.skin-black .sidebar-form input[type="text"], +.skin-black .sidebar-form .btn { + box-shadow: none; + background-color: rgba(255, 255, 255, 0.1); + border: 0 solid rgba(255, 255, 255, 0.1); + height: 35px; + outline: none; +} +.skin-black .sidebar-form input[type="text"] { + color: #666; + -webkit-border-top-left-radius: 2px !important; + -webkit-border-top-right-radius: 0 !important; + -webkit-border-bottom-right-radius: 0 !important; + -webkit-border-bottom-left-radius: 2px !important; + -moz-border-radius-topleft: 2px !important; + -moz-border-radius-topright: 0 !important; + -moz-border-radius-bottomright: 0 !important; + -moz-border-radius-bottomleft: 2px !important; + border-top-left-radius: 2px !important; + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 2px !important; +} +.skin-black .sidebar-form input[type="text"]:focus, +.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #444; + border: 0; +} +.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left: 0; +} +.skin-black .sidebar-form .btn { + color: #999; + -webkit-border-top-left-radius: 0 !important; + -webkit-border-top-right-radius: 2px !important; + -webkit-border-bottom-right-radius: 2px !important; + -webkit-border-bottom-left-radius: 0 !important; + -moz-border-radius-topleft: 0 !important; + -moz-border-radius-topright: 2px !important; + -moz-border-radius-bottomright: 2px !important; + -moz-border-radius-bottomleft: 0 !important; + border-top-left-radius: 0 !important; + border-top-right-radius: 2px !important; + border-bottom-right-radius: 2px !important; + border-bottom-left-radius: 0 !important; + border-left: 0; +} +/*! + * iCheck v1.0.1, http://git.io/arlzeA + * ================================= + * Powerful jQuery and Zepto plugin for checkboxes and radio buttons customization + * + * (c) 2013 Damir Sultanov, http://fronteed.com + * MIT Licensed + */ +/* iCheck plugin Minimal skin, black +----------------------------------- */ +.icheckbox_minimal, +.iradio_minimal { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: rgba(255, 255, 255, 0.7) url(iCheck/minimal/minimal.png) no-repeat; + border: none; + cursor: pointer; +} +.icheckbox_minimal { + background-position: 0 0; +} +.icheckbox_minimal.hover { + background-position: -20px 0; +} +.icheckbox_minimal.checked { + background-position: -40px 0; +} +.icheckbox_minimal.disabled { + background-position: -60px 0; + cursor: default; +} +.icheckbox_minimal.checked.disabled { + background-position: -80px 0; +} +.iradio_minimal { + background-position: -100px 0; +} +.iradio_minimal.hover { + background-position: -120px 0; +} +.iradio_minimal.checked { + background-position: -140px 0; +} +.iradio_minimal.disabled { + background-position: -160px 0; + cursor: default; +} +.iradio_minimal.checked.disabled { + background-position: -180px 0; +} +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal, + .iradio_minimal { + background-image: url('iCheck/minimal/minimal@2x.png'); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} +.pace .pace-progress { + background: #00c0ef; + position: fixed; + z-index: 2000; + top: 0; + left: 0; + height: 2px; + -webkit-transition: width 1s; + -moz-transition: width 1s; + -o-transition: width 1s; + transition: width 1s; +} +.pace-inactive { + display: none; +} +/* + * Social Buttons for Bootstrap + * + * Copyright 2013-2014 Panayiotis Lipiridis + * Licensed under the MIT License + * + * https://github.com/lipis/bootstrap-social + * + * Note: this file has been altered to work correctly with AdminLTE + */ +.btn-social { + position: relative; + padding-left: 44px !important; + text-align: left; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.btn-social :first-child { + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: 32px !important; + line-height: 34px !important; + font-size: 1.6em!important; + text-align: center; + border-right: 1px solid rgba(0, 0, 0, 0.2); +} +.btn-social.btn-lg { + padding-left: 60px !important; +} +.btn-social.btn-lg :first-child { + line-height: 45px; + width: 45px; + font-size: 1.8em; +} +.btn-social.btn-sm { + padding-left: 38px !important; +} +.btn-social.btn-sm :first-child { + line-height: 28px; + width: 28px; + font-size: 1.4em; +} +.btn-social.btn-xs { + padding-left: 30px !important; +} +.btn-social.btn-xs :first-child { + line-height: 20px; + width: 20px; + font-size: 1.2em; +} +.btn-social-icon { + position: relative; + padding-left: 44px !important; + text-align: left; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + height: 34px; + width: 34px; + padding: 0; +} +.btn-social-icon :first-child { + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: 32px !important; + line-height: 34px !important; + font-size: 1.6em!important; + text-align: center; + border-right: 1px solid rgba(0, 0, 0, 0.2); +} +.btn-social-icon.btn-lg { + padding-left: 60px !important; +} +.btn-social-icon.btn-lg :first-child { + line-height: 45px; + width: 45px; + font-size: 1.8em; +} +.btn-social-icon.btn-sm { + padding-left: 38px !important; +} +.btn-social-icon.btn-sm :first-child { + line-height: 28px; + width: 28px; + font-size: 1.4em; +} +.btn-social-icon.btn-xs { + padding-left: 30px !important; +} +.btn-social-icon.btn-xs :first-child { + line-height: 20px; + width: 20px; + font-size: 1.2em; +} +.btn-social-icon :first-child { + border: none; + text-align: center; + width: 100%!important; +} +.btn-social-icon.btn-lg { + height: 45px; + width: 45px; + padding-left: 0; + padding-right: 0; +} +.btn-social-icon.btn-sm { + height: 30px; + width: 30px; + padding-left: 0; + padding-right: 0; +} +.btn-social-icon.btn-xs { + height: 22px; + width: 22px; + padding-left: 0; + padding-right: 0; +} +.btn-bitbucket { + color: #ffffff; + background-color: #205081; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-bitbucket:hover, +.btn-bitbucket:focus, +.btn-bitbucket:active, +.btn-bitbucket.active, +.open .dropdown-toggle.btn-bitbucket { + color: #ffffff; + background-color: #183c60; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-bitbucket:active, +.btn-bitbucket.active, +.open .dropdown-toggle.btn-bitbucket { + background-image: none; +} +.btn-bitbucket.disabled, +.btn-bitbucket[disabled], +fieldset[disabled] .btn-bitbucket, +.btn-bitbucket.disabled:hover, +.btn-bitbucket[disabled]:hover, +fieldset[disabled] .btn-bitbucket:hover, +.btn-bitbucket.disabled:focus, +.btn-bitbucket[disabled]:focus, +fieldset[disabled] .btn-bitbucket:focus, +.btn-bitbucket.disabled:active, +.btn-bitbucket[disabled]:active, +fieldset[disabled] .btn-bitbucket:active, +.btn-bitbucket.disabled.active, +.btn-bitbucket[disabled].active, +fieldset[disabled] .btn-bitbucket.active { + background-color: #205081; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-bitbucket .badge { + color: #205081; + background-color: #ffffff; +} +.btn-dropbox { + color: #ffffff; + background-color: #1087dd; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-dropbox:hover, +.btn-dropbox:focus, +.btn-dropbox:active, +.btn-dropbox.active, +.open .dropdown-toggle.btn-dropbox { + color: #ffffff; + background-color: #0d70b7; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-dropbox:active, +.btn-dropbox.active, +.open .dropdown-toggle.btn-dropbox { + background-image: none; +} +.btn-dropbox.disabled, +.btn-dropbox[disabled], +fieldset[disabled] .btn-dropbox, +.btn-dropbox.disabled:hover, +.btn-dropbox[disabled]:hover, +fieldset[disabled] .btn-dropbox:hover, +.btn-dropbox.disabled:focus, +.btn-dropbox[disabled]:focus, +fieldset[disabled] .btn-dropbox:focus, +.btn-dropbox.disabled:active, +.btn-dropbox[disabled]:active, +fieldset[disabled] .btn-dropbox:active, +.btn-dropbox.disabled.active, +.btn-dropbox[disabled].active, +fieldset[disabled] .btn-dropbox.active { + background-color: #1087dd; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-dropbox .badge { + color: #1087dd; + background-color: #ffffff; +} +.btn-facebook { + color: #ffffff; + background-color: #3b5998; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-facebook:hover, +.btn-facebook:focus, +.btn-facebook:active, +.btn-facebook.active, +.open .dropdown-toggle.btn-facebook { + color: #ffffff; + background-color: #30487b; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-facebook:active, +.btn-facebook.active, +.open .dropdown-toggle.btn-facebook { + background-image: none; +} +.btn-facebook.disabled, +.btn-facebook[disabled], +fieldset[disabled] .btn-facebook, +.btn-facebook.disabled:hover, +.btn-facebook[disabled]:hover, +fieldset[disabled] .btn-facebook:hover, +.btn-facebook.disabled:focus, +.btn-facebook[disabled]:focus, +fieldset[disabled] .btn-facebook:focus, +.btn-facebook.disabled:active, +.btn-facebook[disabled]:active, +fieldset[disabled] .btn-facebook:active, +.btn-facebook.disabled.active, +.btn-facebook[disabled].active, +fieldset[disabled] .btn-facebook.active { + background-color: #3b5998; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-facebook .badge { + color: #3b5998; + background-color: #ffffff; +} +.btn-flickr { + color: #ffffff; + background-color: #ff0084; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-flickr:hover, +.btn-flickr:focus, +.btn-flickr:active, +.btn-flickr.active, +.open .dropdown-toggle.btn-flickr { + color: #ffffff; + background-color: #d6006f; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-flickr:active, +.btn-flickr.active, +.open .dropdown-toggle.btn-flickr { + background-image: none; +} +.btn-flickr.disabled, +.btn-flickr[disabled], +fieldset[disabled] .btn-flickr, +.btn-flickr.disabled:hover, +.btn-flickr[disabled]:hover, +fieldset[disabled] .btn-flickr:hover, +.btn-flickr.disabled:focus, +.btn-flickr[disabled]:focus, +fieldset[disabled] .btn-flickr:focus, +.btn-flickr.disabled:active, +.btn-flickr[disabled]:active, +fieldset[disabled] .btn-flickr:active, +.btn-flickr.disabled.active, +.btn-flickr[disabled].active, +fieldset[disabled] .btn-flickr.active { + background-color: #ff0084; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-flickr .badge { + color: #ff0084; + background-color: #ffffff; +} +.btn-foursquare { + color: #ffffff; + background-color: #0072b1; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-foursquare:hover, +.btn-foursquare:focus, +.btn-foursquare:active, +.btn-foursquare.active, +.open .dropdown-toggle.btn-foursquare { + color: #ffffff; + background-color: #005888; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-foursquare:active, +.btn-foursquare.active, +.open .dropdown-toggle.btn-foursquare { + background-image: none; +} +.btn-foursquare.disabled, +.btn-foursquare[disabled], +fieldset[disabled] .btn-foursquare, +.btn-foursquare.disabled:hover, +.btn-foursquare[disabled]:hover, +fieldset[disabled] .btn-foursquare:hover, +.btn-foursquare.disabled:focus, +.btn-foursquare[disabled]:focus, +fieldset[disabled] .btn-foursquare:focus, +.btn-foursquare.disabled:active, +.btn-foursquare[disabled]:active, +fieldset[disabled] .btn-foursquare:active, +.btn-foursquare.disabled.active, +.btn-foursquare[disabled].active, +fieldset[disabled] .btn-foursquare.active { + background-color: #0072b1; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-foursquare .badge { + color: #0072b1; + background-color: #ffffff; +} +.btn-github { + color: #ffffff; + background-color: #444444; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-github:hover, +.btn-github:focus, +.btn-github:active, +.btn-github.active, +.open .dropdown-toggle.btn-github { + color: #ffffff; + background-color: #303030; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-github:active, +.btn-github.active, +.open .dropdown-toggle.btn-github { + background-image: none; +} +.btn-github.disabled, +.btn-github[disabled], +fieldset[disabled] .btn-github, +.btn-github.disabled:hover, +.btn-github[disabled]:hover, +fieldset[disabled] .btn-github:hover, +.btn-github.disabled:focus, +.btn-github[disabled]:focus, +fieldset[disabled] .btn-github:focus, +.btn-github.disabled:active, +.btn-github[disabled]:active, +fieldset[disabled] .btn-github:active, +.btn-github.disabled.active, +.btn-github[disabled].active, +fieldset[disabled] .btn-github.active { + background-color: #444444; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-github .badge { + color: #444444; + background-color: #ffffff; +} +.btn-google-plus { + color: #ffffff; + background-color: #dd4b39; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-google-plus:hover, +.btn-google-plus:focus, +.btn-google-plus:active, +.btn-google-plus.active, +.open .dropdown-toggle.btn-google-plus { + color: #ffffff; + background-color: #ca3523; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-google-plus:active, +.btn-google-plus.active, +.open .dropdown-toggle.btn-google-plus { + background-image: none; +} +.btn-google-plus.disabled, +.btn-google-plus[disabled], +fieldset[disabled] .btn-google-plus, +.btn-google-plus.disabled:hover, +.btn-google-plus[disabled]:hover, +fieldset[disabled] .btn-google-plus:hover, +.btn-google-plus.disabled:focus, +.btn-google-plus[disabled]:focus, +fieldset[disabled] .btn-google-plus:focus, +.btn-google-plus.disabled:active, +.btn-google-plus[disabled]:active, +fieldset[disabled] .btn-google-plus:active, +.btn-google-plus.disabled.active, +.btn-google-plus[disabled].active, +fieldset[disabled] .btn-google-plus.active { + background-color: #dd4b39; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-google-plus .badge { + color: #dd4b39; + background-color: #ffffff; +} +.btn-instagram { + color: #ffffff; + background-color: #3f729b; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-instagram:hover, +.btn-instagram:focus, +.btn-instagram:active, +.btn-instagram.active, +.open .dropdown-toggle.btn-instagram { + color: #ffffff; + background-color: #335d7e; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-instagram:active, +.btn-instagram.active, +.open .dropdown-toggle.btn-instagram { + background-image: none; +} +.btn-instagram.disabled, +.btn-instagram[disabled], +fieldset[disabled] .btn-instagram, +.btn-instagram.disabled:hover, +.btn-instagram[disabled]:hover, +fieldset[disabled] .btn-instagram:hover, +.btn-instagram.disabled:focus, +.btn-instagram[disabled]:focus, +fieldset[disabled] .btn-instagram:focus, +.btn-instagram.disabled:active, +.btn-instagram[disabled]:active, +fieldset[disabled] .btn-instagram:active, +.btn-instagram.disabled.active, +.btn-instagram[disabled].active, +fieldset[disabled] .btn-instagram.active { + background-color: #3f729b; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-instagram .badge { + color: #3f729b; + background-color: #ffffff; +} +.btn-linkedin { + color: #ffffff; + background-color: #007bb6; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-linkedin:hover, +.btn-linkedin:focus, +.btn-linkedin:active, +.btn-linkedin.active, +.open .dropdown-toggle.btn-linkedin { + color: #ffffff; + background-color: #005f8d; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-linkedin:active, +.btn-linkedin.active, +.open .dropdown-toggle.btn-linkedin { + background-image: none; +} +.btn-linkedin.disabled, +.btn-linkedin[disabled], +fieldset[disabled] .btn-linkedin, +.btn-linkedin.disabled:hover, +.btn-linkedin[disabled]:hover, +fieldset[disabled] .btn-linkedin:hover, +.btn-linkedin.disabled:focus, +.btn-linkedin[disabled]:focus, +fieldset[disabled] .btn-linkedin:focus, +.btn-linkedin.disabled:active, +.btn-linkedin[disabled]:active, +fieldset[disabled] .btn-linkedin:active, +.btn-linkedin.disabled.active, +.btn-linkedin[disabled].active, +fieldset[disabled] .btn-linkedin.active { + background-color: #007bb6; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-linkedin .badge { + color: #007bb6; + background-color: #ffffff; +} +.btn-tumblr { + color: #ffffff; + background-color: #2c4762; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-tumblr:hover, +.btn-tumblr:focus, +.btn-tumblr:active, +.btn-tumblr.active, +.open .dropdown-toggle.btn-tumblr { + color: #ffffff; + background-color: #1f3346; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-tumblr:active, +.btn-tumblr.active, +.open .dropdown-toggle.btn-tumblr { + background-image: none; +} +.btn-tumblr.disabled, +.btn-tumblr[disabled], +fieldset[disabled] .btn-tumblr, +.btn-tumblr.disabled:hover, +.btn-tumblr[disabled]:hover, +fieldset[disabled] .btn-tumblr:hover, +.btn-tumblr.disabled:focus, +.btn-tumblr[disabled]:focus, +fieldset[disabled] .btn-tumblr:focus, +.btn-tumblr.disabled:active, +.btn-tumblr[disabled]:active, +fieldset[disabled] .btn-tumblr:active, +.btn-tumblr.disabled.active, +.btn-tumblr[disabled].active, +fieldset[disabled] .btn-tumblr.active { + background-color: #2c4762; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-tumblr .badge { + color: #2c4762; + background-color: #ffffff; +} +.btn-twitter { + color: #ffffff; + background-color: #55acee; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-twitter:hover, +.btn-twitter:focus, +.btn-twitter:active, +.btn-twitter.active, +.open .dropdown-toggle.btn-twitter { + color: #ffffff; + background-color: #309aea; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-twitter:active, +.btn-twitter.active, +.open .dropdown-toggle.btn-twitter { + background-image: none; +} +.btn-twitter.disabled, +.btn-twitter[disabled], +fieldset[disabled] .btn-twitter, +.btn-twitter.disabled:hover, +.btn-twitter[disabled]:hover, +fieldset[disabled] .btn-twitter:hover, +.btn-twitter.disabled:focus, +.btn-twitter[disabled]:focus, +fieldset[disabled] .btn-twitter:focus, +.btn-twitter.disabled:active, +.btn-twitter[disabled]:active, +fieldset[disabled] .btn-twitter:active, +.btn-twitter.disabled.active, +.btn-twitter[disabled].active, +fieldset[disabled] .btn-twitter.active { + background-color: #55acee; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-twitter .badge { + color: #55acee; + background-color: #ffffff; +} +.btn-vk { + color: #ffffff; + background-color: #587ea3; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-vk:hover, +.btn-vk:focus, +.btn-vk:active, +.btn-vk.active, +.open .dropdown-toggle.btn-vk { + color: #ffffff; + background-color: #4a6a89; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-vk:active, +.btn-vk.active, +.open .dropdown-toggle.btn-vk { + background-image: none; +} +.btn-vk.disabled, +.btn-vk[disabled], +fieldset[disabled] .btn-vk, +.btn-vk.disabled:hover, +.btn-vk[disabled]:hover, +fieldset[disabled] .btn-vk:hover, +.btn-vk.disabled:focus, +.btn-vk[disabled]:focus, +fieldset[disabled] .btn-vk:focus, +.btn-vk.disabled:active, +.btn-vk[disabled]:active, +fieldset[disabled] .btn-vk:active, +.btn-vk.disabled.active, +.btn-vk[disabled].active, +fieldset[disabled] .btn-vk.active { + background-color: #587ea3; + border-color: rgba(0, 0, 0, 0.2); +} +.btn-vk .badge { + color: #587ea3; + background-color: #ffffff; +} diff --git a/public/assets/css/bootstrap-slider/slider.css b/public/assets/css/bootstrap-slider/slider.css new file mode 100755 index 00000000..a96db7fb --- /dev/null +++ b/public/assets/css/bootstrap-slider/slider.css @@ -0,0 +1,169 @@ +/*! + * Slider for Bootstrap + * + * Copyright 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ +.slider { + display: block; + vertical-align: middle; + position: relative; + +} +.slider.slider-horizontal { + width: 100%; + height: 20px; + margin-bottom: 20px; +} +.slider.slider-horizontal:last-of-type { + margin-bottom: 0; +} +.slider.slider-horizontal .slider-track { + height: 10px; + width: 100%; + margin-top: -5px; + top: 50%; + left: 0; +} +.slider.slider-horizontal .slider-selection { + height: 100%; + top: 0; + bottom: 0; +} +.slider.slider-horizontal .slider-handle { + margin-left: -10px; + margin-top: -5px; +} +.slider.slider-horizontal .slider-handle.triangle { + border-width: 0 10px 10px 10px; + width: 0; + height: 0; + border-bottom-color: #0480be; + margin-top: 0; +} +.slider.slider-vertical { + height: 230px; + width: 20px; + margin-right: 20px; + display: inline-block; +} +.slider.slider-vertical:last-of-type { + margin-right: 0; +} +.slider.slider-vertical .slider-track { + width: 10px; + height: 100%; + margin-left: -5px; + left: 50%; + top: 0; +} +.slider.slider-vertical .slider-selection { + width: 100%; + left: 0; + top: 0; + bottom: 0; +} +.slider.slider-vertical .slider-handle { + margin-left: -5px; + margin-top: -10px; +} +.slider.slider-vertical .slider-handle.triangle { + border-width: 10px 0 10px 10px; + width: 1px; + height: 1px; + border-left-color: #0480be; + margin-left: 0; +} +.slider input { + display: none; +} +.slider .tooltip-inner { + white-space: nowrap; +} +.slider-track { + position: absolute; + cursor: pointer; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f0f0f0, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f0f0f0), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f0f0f0, #f9f9f9); + background-image: -o-linear-gradient(top, #f0f0f0, #f9f9f9); + background-image: linear-gradient(to bottom, #f0f0f0, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0f0f0', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.slider-selection { + position: absolute; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f9f9f9, #f5f5f5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f9f9f9), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #f9f9f9, #f5f5f5); + background-image: -o-linear-gradient(top, #f9f9f9, #f5f5f5); + background-image: linear-gradient(to bottom, #f9f9f9, #f5f5f5); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.slider-handle { + position: absolute; + width: 20px; + height: 20px; + background-color: #444; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + opacity: 1; + border: 0px solid transparent; +} +.slider-handle.round { + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + border-radius: 20px; +} +.slider-handle.triangle { + background: transparent none; +} + +.slider-disabled .slider-selection { + opacity: 0.5; +} + +#red .slider-selection { + background: #f56954; +} + +#blue .slider-selection { + background: #3c8dbc; +} + +#green .slider-selection { + background: #00a65a; +} + +#yellow .slider-selection { + background: #f39c12; +} + +#aqua .slider-selection { + background: #00c0ef; +} + +#purple .slider-selection { + background: #932ab6; +} \ No newline at end of file diff --git a/public/assets/css/bootstrap-theme.min.css b/public/assets/css/bootstrap-theme.min.css index 8dee0720..9c85321d 100755 --- a/public/assets/css/bootstrap-theme.min.css +++ b/public/assets/css/bootstrap-theme.min.css @@ -4,4 +4,4 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ -.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top, #fff 0, #e0e0e0 100%);background-image:linear-gradient(to bottom, #fff 0, #e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top, #428bca 0, #2d6ca2 100%);background-image:linear-gradient(to bottom, #428bca 0, #2d6ca2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#2b669a}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #419641 100%);background-image:linear-gradient(to bottom, #5cb85c 0, #419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #2aabd2 100%);background-image:linear-gradient(to bottom, #5bc0de 0, #2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #eb9316 100%);background-image:linear-gradient(to bottom, #f0ad4e 0, #eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c12e2a 100%);background-image:linear-gradient(to bottom, #d9534f 0, #c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-color:#357ebd}.navbar-default{background-image:-webkit-linear-gradient(top, #fff 0, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f3f3f3 100%);background-image:linear-gradient(to bottom, #ebebeb 0, #f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top, #3c3c3c 0, #222 100%);background-image:linear-gradient(to bottom, #3c3c3c 0, #222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #222 0, #282828 100%);background-image:linear-gradient(to bottom, #222 0, #282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top, #dff0d8 0, #c8e5bc 100%);background-image:linear-gradient(to bottom, #dff0d8 0, #c8e5bc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top, #d9edf7 0, #b9def0 100%);background-image:linear-gradient(to bottom, #d9edf7 0, #b9def0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #f8efc0 100%);background-image:linear-gradient(to bottom, #fcf8e3 0, #f8efc0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top, #f2dede 0, #e7c3c3 100%);background-image:linear-gradient(to bottom, #f2dede 0, #e7c3c3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f5f5f5 100%);background-image:linear-gradient(to bottom, #ebebeb 0, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top, #428bca 0, #3071a9 100%);background-image:linear-gradient(to bottom, #428bca 0, #3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #449d44 100%);background-image:linear-gradient(to bottom, #5cb85c 0, #449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #31b0d5 100%);background-image:linear-gradient(to bottom, #5bc0de 0, #31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #ec971f 100%);background-image:linear-gradient(to bottom, #f0ad4e 0, #ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c9302c 100%);background-image:linear-gradient(to bottom, #d9534f 0, #c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top, #428bca 0, #3278b3 100%);background-image:linear-gradient(to bottom, #428bca 0, #3278b3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);border-color:#3278b3}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top, #dff0d8 0, #d0e9c6 100%);background-image:linear-gradient(to bottom, #dff0d8 0, #d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top, #d9edf7 0, #c4e3f3 100%);background-image:linear-gradient(to bottom, #d9edf7 0, #c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #faf2cc 100%);background-image:linear-gradient(to bottom, #fcf8e3 0, #faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top, #f2dede 0, #ebcccc 100%);background-image:linear-gradient(to bottom, #f2dede 0, #ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.well{background-image:-webkit-linear-gradient(top, #e8e8e8 0, #f5f5f5 100%);background-image:linear-gradient(to bottom, #e8e8e8 0, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)} \ No newline at end of file +.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top, #fff 0, #e0e0e0 100%);background-image:linear-gradient(to bottom, #fff 0, #e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top, #428bca 0, #2d6ca2 100%);background-image:linear-gradient(to bottom, #428bca 0, #2d6ca2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#2b669a}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #419641 100%);background-image:linear-gradient(to bottom, #5cb85c 0, #419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #2aabd2 100%);background-image:linear-gradient(to bottom, #5bc0de 0, #2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #eb9316 100%);background-image:linear-gradient(to bottom, #f0ad4e 0, #eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c12e2a 100%);background-image:linear-gradient(to bottom, #d9534f 0, #c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-color:#357ebd}.navbar-default{background-image:-webkit-linear-gradient(top, #fff 0, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f3f3f3 100%);background-image:linear-gradient(to bottom, #ebebeb 0, #f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top, #3c3c3c 0, #222 100%);background-image:linear-gradient(to bottom, #3c3c3c 0, #222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #222 0, #282828 100%);background-image:linear-gradient(to bottom, #222 0, #282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top, #dff0d8 0, #c8e5bc 100%);background-image:linear-gradient(to bottom, #dff0d8 0, #c8e5bc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top, #d9edf7 0, #b9def0 100%);background-image:linear-gradient(to bottom, #d9edf7 0, #b9def0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #f8efc0 100%);background-image:linear-gradient(to bottom, #fcf8e3 0, #f8efc0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top, #f2dede 0, #e7c3c3 100%);background-image:linear-gradient(to bottom, #f2dede 0, #e7c3c3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f5f5f5 100%);background-image:linear-gradient(to bottom, #ebebeb 0, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top, #428bca 0, #3071a9 100%);background-image:linear-gradient(to bottom, #428bca 0, #3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #449d44 100%);background-image:linear-gradient(to bottom, #5cb85c 0, #449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #31b0d5 100%);background-image:linear-gradient(to bottom, #5bc0de 0, #31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #ec971f 100%);background-image:linear-gradient(to bottom, #f0ad4e 0, #ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c9302c 100%);background-image:linear-gradient(to bottom, #d9534f 0, #c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top, #428bca 0, #3278b3 100%);background-image:linear-gradient(to bottom, #428bca 0, #3278b3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);border-color:#3278b3}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.box-header{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.panel-primary>.box-header{background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.panel-success>.box-header{background-image:-webkit-linear-gradient(top, #dff0d8 0, #d0e9c6 100%);background-image:linear-gradient(to bottom, #dff0d8 0, #d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.panel-info>.box-header{background-image:-webkit-linear-gradient(top, #d9edf7 0, #c4e3f3 100%);background-image:linear-gradient(to bottom, #d9edf7 0, #c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.panel-warning>.box-header{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #faf2cc 100%);background-image:linear-gradient(to bottom, #fcf8e3 0, #faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.panel-danger>.box-header{background-image:-webkit-linear-gradient(top, #f2dede 0, #ebcccc 100%);background-image:linear-gradient(to bottom, #f2dede 0, #ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.well{background-image:-webkit-linear-gradient(top, #e8e8e8 0, #f5f5f5 100%);background-image:linear-gradient(to bottom, #e8e8e8 0, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)} \ No newline at end of file diff --git a/public/assets/css/bootstrap-wysihtml5/bootstrap3-wysihtml5.css b/public/assets/css/bootstrap-wysihtml5/bootstrap3-wysihtml5.css new file mode 100755 index 00000000..44ed7774 --- /dev/null +++ b/public/assets/css/bootstrap-wysihtml5/bootstrap3-wysihtml5.css @@ -0,0 +1,102 @@ +ul.wysihtml5-toolbar { + margin: 0; + padding: 0; + display: block; +} + +ul.wysihtml5-toolbar::after { + clear: both; + display: table; + content: ""; +} + +ul.wysihtml5-toolbar > li { + float: left; + display: list-item; + list-style: none; + margin: 0 5px 10px 0; +} + +ul.wysihtml5-toolbar a[data-wysihtml5-command=bold] { + font-weight: bold; +} + +ul.wysihtml5-toolbar a[data-wysihtml5-command=italic] { + font-style: italic; +} + +ul.wysihtml5-toolbar a[data-wysihtml5-command=underline] { + text-decoration: underline; +} + +ul.wysihtml5-toolbar a.btn.wysihtml5-command-active { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05); + background-color: #E6E6E6; + background-color: #D9D9D9; + outline: 0; +} + +ul.wysihtml5-commands-disabled .dropdown-menu { + display: none !important; +} + +ul.wysihtml5-toolbar div.wysihtml5-colors { + display:block; + width: 50px; + height: 20px; + margin-top: 2px; + margin-left: 5px; + position: absolute; + pointer-events: none; +} + +ul.wysihtml5-toolbar a.wysihtml5-colors-title { + padding-left: 70px; +} + +ul.wysihtml5-toolbar div[data-wysihtml5-command-value="black"] { + background: black !important; +} + +ul.wysihtml5-toolbar div[data-wysihtml5-command-value="silver"] { + background: silver !important; +} + +ul.wysihtml5-toolbar div[data-wysihtml5-command-value="gray"] { + background: gray !important; +} + +ul.wysihtml5-toolbar div[data-wysihtml5-command-value="maroon"] { + background: maroon !important; +} + +ul.wysihtml5-toolbar div[data-wysihtml5-command-value="red"] { + background: red !important; +} + +ul.wysihtml5-toolbar div[data-wysihtml5-command-value="purple"] { + background: purple !important; +} + +ul.wysihtml5-toolbar div[data-wysihtml5-command-value="green"] { + background: green !important; +} + +ul.wysihtml5-toolbar div[data-wysihtml5-command-value="olive"] { + background: olive !important; +} + +ul.wysihtml5-toolbar div[data-wysihtml5-command-value="navy"] { + background: navy !important; +} + +ul.wysihtml5-toolbar div[data-wysihtml5-command-value="blue"] { + background: blue !important; +} + +ul.wysihtml5-toolbar div[data-wysihtml5-command-value="orange"] { + background: orange !important; +} diff --git a/public/assets/css/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css b/public/assets/css/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css new file mode 100755 index 00000000..d8dd3c22 --- /dev/null +++ b/public/assets/css/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css @@ -0,0 +1,3 @@ +/*! bootstrap3-wysihtml5-bower 2013-11-22 */ + +ul.wysihtml5-toolbar{margin:0;padding:0;display:block}ul.wysihtml5-toolbar::after{clear:both;display:table;content:""}ul.wysihtml5-toolbar>li{float:left;display:list-item;list-style:none;margin:0 5px 10px 0}ul.wysihtml5-toolbar a[data-wysihtml5-command=bold]{font-weight:700}ul.wysihtml5-toolbar a[data-wysihtml5-command=italic]{font-style:italic}ul.wysihtml5-toolbar a[data-wysihtml5-command=underline]{text-decoration:underline}ul.wysihtml5-toolbar a.btn.wysihtml5-command-active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);background-color:#E6E6E6;background-color:#D9D9D9;outline:0}ul.wysihtml5-commands-disabled .dropdown-menu{display:none!important}ul.wysihtml5-toolbar div.wysihtml5-colors{display:block;width:50px;height:20px;margin-top:2px;margin-left:5px;position:absolute;pointer-events:none}ul.wysihtml5-toolbar a.wysihtml5-colors-title{padding-left:70px}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=black]{background:#000!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=silver]{background:silver!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=gray]{background:gray!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=maroon]{background:maroon!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=red]{background:red!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=purple]{background:purple!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=green]{background:green!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=olive]{background:olive!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=navy]{background:navy!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=blue]{background:#00f!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=orange]{background:orange!important} \ No newline at end of file diff --git a/public/assets/css/bootstrap.min.css b/public/assets/css/bootstrap.min.css index 85b03e0f..7af7ea7c 100755 --- a/public/assets/css/bootstrap.min.css +++ b/public/assets/css/bootstrap.min.css @@ -4,4 +4,4 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ -/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.table td,.table th{background-color:#fff !important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}input[type="date"]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:none}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:none}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}@media print{.hidden-print{display:none !important}} \ No newline at end of file +/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.table td,.table th{background-color:#fff !important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}input[type="date"]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:none}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:none}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.box-body{padding:15px}.box-header{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.box-header>.dropdown .dropdown-toggle{color:inherit}.box-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.box-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.box-header+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.box-body+.table,.panel>.box-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .box-header{border-bottom:0}.panel-group .box-header+.panel-collapse .box-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .box-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.box-header{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.box-header+.panel-collapse .box-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .box-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.box-header{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.box-header+.panel-collapse .box-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .box-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.box-header{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.box-header+.panel-collapse .box-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .box-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.box-header{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.box-header+.panel-collapse .box-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .box-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.box-header{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.box-header+.panel-collapse .box-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .box-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.box-header{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.box-header+.panel-collapse .box-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .box-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.box-body:before,.box-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.box-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}@media print{.hidden-print{display:none !important}} \ No newline at end of file diff --git a/public/assets/css/colorpicker/bootstrap-colorpicker.css b/public/assets/css/colorpicker/bootstrap-colorpicker.css new file mode 100755 index 00000000..8252394f --- /dev/null +++ b/public/assets/css/colorpicker/bootstrap-colorpicker.css @@ -0,0 +1,214 @@ +/*! + * Bootstrap Colorpicker + * http://mjolnic.github.io/bootstrap-colorpicker/ + * + * Originally written by (c) 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0.txt + * + */ + +.colorpicker-saturation { + float: left; + width: 100px; + height: 100px; + cursor: crosshair; + background-image: url("../../img/bootstrap-colorpicker/saturation.png"); +} + +.colorpicker-saturation i { + position: absolute; + top: 0; + left: 0; + display: block; + width: 5px; + height: 5px; + margin: -4px 0 0 -4px; + border: 1px solid #000; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.colorpicker-saturation i b { + display: block; + width: 5px; + height: 5px; + border: 1px solid #fff; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.colorpicker-hue, +.colorpicker-alpha { + float: left; + width: 15px; + height: 100px; + margin-bottom: 4px; + margin-left: 4px; + cursor: row-resize; +} + +.colorpicker-hue i, +.colorpicker-alpha i { + position: absolute; + top: 0; + left: 0; + display: block; + width: 100%; + height: 1px; + margin-top: -1px; + background: #000; + border-top: 1px solid #fff; +} + +.colorpicker-hue { + background-image: url("../../img/bootstrap-colorpicker/hue.png"); +} + +.colorpicker-alpha { + display: none; + background-image: url("../../img/bootstrap-colorpicker/alpha.png"); +} + +.colorpicker { + top: 0; + left: 0; + z-index: 2500; + min-width: 130px; + padding: 4px; + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; +} + +.colorpicker:before, +.colorpicker:after { + display: table; + line-height: 0; + content: ""; +} + +.colorpicker:after { + clear: both; +} + +.colorpicker:before { + position: absolute; + top: -7px; + left: 6px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.colorpicker:after { + position: absolute; + top: -6px; + left: 7px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.colorpicker div { + position: relative; +} + +.colorpicker.colorpicker-with-alpha { + min-width: 140px; +} + +.colorpicker.colorpicker-with-alpha .colorpicker-alpha { + display: block; +} + +.colorpicker-color { + height: 10px; + margin-top: 5px; + clear: both; + background-image: url("../../img/bootstrap-colorpicker/alpha.png"); + background-position: 0 100%; +} + +.colorpicker-color div { + height: 10px; +} + +.colorpicker-element .input-group-addon i { + display: block; + width: 16px; + height: 16px; + cursor: pointer; +} + +.colorpicker.colorpicker-inline { + position: relative; + display: inline-block; + float: none; +} + +.colorpicker.colorpicker-horizontal { + width: 110px; + height: auto; + min-width: 110px; +} + +.colorpicker.colorpicker-horizontal .colorpicker-saturation { + margin-bottom: 4px; +} + +.colorpicker.colorpicker-horizontal .colorpicker-color { + width: 100px; +} + +.colorpicker.colorpicker-horizontal .colorpicker-hue, +.colorpicker.colorpicker-horizontal .colorpicker-alpha { + float: left; + width: 100px; + height: 15px; + margin-bottom: 4px; + margin-left: 0; + cursor: col-resize; +} + +.colorpicker.colorpicker-horizontal .colorpicker-hue i, +.colorpicker.colorpicker-horizontal .colorpicker-alpha i { + position: absolute; + top: 0; + left: 0; + display: block; + width: 1px; + height: 15px; + margin-top: 0; + background: #ffffff; + border: none; +} + +.colorpicker.colorpicker-horizontal .colorpicker-hue { + background-image: url("../../img/bootstrap-colorpicker/hue-horizontal.png"); +} + +.colorpicker.colorpicker-horizontal .colorpicker-alpha { + background-image: url("../../img/bootstrap-colorpicker/alpha-horizontal.png"); +} + +.colorpicker.colorpicker-hidden { + display: none; +} + +.colorpicker.colorpicker-visible { + display: block; +} + +.colorpicker-inline.colorpicker-visible { + display: inline-block; +} \ No newline at end of file diff --git a/public/assets/css/colorpicker/bootstrap-colorpicker.min.css b/public/assets/css/colorpicker/bootstrap-colorpicker.min.css new file mode 100755 index 00000000..5f315042 --- /dev/null +++ b/public/assets/css/colorpicker/bootstrap-colorpicker.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap Colorpicker + * http://mjolnic.github.io/bootstrap-colorpicker/ + * + * Originally written by (c) 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0.txt + * + */.colorpicker-saturation{float:left;width:100px;height:100px;cursor:crosshair;background-image:url("../../img/bootstrap-colorpicker/saturation.png")}.colorpicker-saturation i{position:absolute;top:0;left:0;display:block;width:5px;height:5px;margin:-4px 0 0 -4px;border:1px solid #000;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-saturation i b{display:block;width:5px;height:5px;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-hue,.colorpicker-alpha{float:left;width:15px;height:100px;margin-bottom:4px;margin-left:4px;cursor:row-resize}.colorpicker-hue i,.colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:100%;height:1px;margin-top:-1px;background:#000;border-top:1px solid #fff}.colorpicker-hue{background-image:url("../../img/bootstrap-colorpicker/hue.png")}.colorpicker-alpha{display:none;background-image:url("../../img/bootstrap-colorpicker/alpha.png")}.colorpicker{top:0;left:0;z-index:2500;min-width:130px;padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1}.colorpicker:before,.colorpicker:after{display:table;line-height:0;content:""}.colorpicker:after{clear:both}.colorpicker:before{position:absolute;top:-7px;left:6px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.colorpicker:after{position:absolute;top:-6px;left:7px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.colorpicker div{position:relative}.colorpicker.colorpicker-with-alpha{min-width:140px}.colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block}.colorpicker-color{height:10px;margin-top:5px;clear:both;background-image:url("../../img/bootstrap-colorpicker/alpha.png");background-position:0 100%}.colorpicker-color div{height:10px}.colorpicker-element .input-group-addon i{display:block;width:16px;height:16px;cursor:pointer}.colorpicker.colorpicker-inline{position:relative;display:inline-block;float:none}.colorpicker.colorpicker-horizontal{width:110px;height:auto;min-width:110px}.colorpicker.colorpicker-horizontal .colorpicker-saturation{margin-bottom:4px}.colorpicker.colorpicker-horizontal .colorpicker-color{width:100px}.colorpicker.colorpicker-horizontal .colorpicker-hue,.colorpicker.colorpicker-horizontal .colorpicker-alpha{float:left;width:100px;height:15px;margin-bottom:4px;margin-left:0;cursor:col-resize}.colorpicker.colorpicker-horizontal .colorpicker-hue i,.colorpicker.colorpicker-horizontal .colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:1px;height:15px;margin-top:0;background:#fff;border:0}.colorpicker.colorpicker-horizontal .colorpicker-hue{background-image:url("../../img/bootstrap-colorpicker/hue-horizontal.png")}.colorpicker.colorpicker-horizontal .colorpicker-alpha{background-image:url("../../img/bootstrap-colorpicker/alpha-horizontal.png")}.colorpicker.colorpicker-hidden{display:none}.colorpicker.colorpicker-visible{display:block}.colorpicker-inline.colorpicker-visible{display:inline-block} \ No newline at end of file diff --git a/public/assets/css/datatables/dataTables.bootstrap.css b/public/assets/css/datatables/dataTables.bootstrap.css new file mode 100755 index 00000000..27036b0e --- /dev/null +++ b/public/assets/css/datatables/dataTables.bootstrap.css @@ -0,0 +1,223 @@ +div.dataTables_length label { + font-weight: normal; + float: left; + text-align: left; +} + +div.dataTables_length select { + width: 75px; +} + +div.dataTables_filter label { + font-weight: normal; + float: right; +} + +div.dataTables_filter input { + width: 16em; +} + +div.dataTables_info { + padding-top: 8px; +} + +div.dataTables_paginate { + float: right; + margin: 0; +} + +div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; +} + +table.dataTable, +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + + +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; +} + +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; +} + +table.dataTable thead .sorting { background: url('images/sort_both.png') no-repeat center right; } +table.dataTable thead .sorting_asc { background: url('images/sort_asc.png') no-repeat center right; } +table.dataTable thead .sorting_desc { background: url('images/sort_desc.png') no-repeat center right; } + +table.dataTable thead .sorting_asc_disabled { background: url('images/sort_asc_disabled.png') no-repeat center right; } +table.dataTable thead .sorting_desc_disabled { background: url('images/sort_desc_disabled.png') no-repeat center right; } + +table.dataTable th:active { + outline: none; +} + +/* Scrolling */ +div.dataTables_scrollHead table { + margin-bottom: 0 !important; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +div.dataTables_scrollHead table thead tr:last-child th:first-child, +div.dataTables_scrollHead table thead tr:last-child td:first-child { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody tbody tr:first-child th, +div.dataTables_scrollBody tbody tr:first-child td { + border-top: none; +} + +div.dataTables_scrollFoot table { + margin-top: 0 !important; + border-top: none; +} + + + + +/* + * TableTools styles + */ +.table tbody tr.active td, +.table tbody tr.active th { + background-color: #08C; + color: white; +} + +.table tbody tr.active:hover td, +.table tbody tr.active:hover th { + background-color: #0075b0 !important; +} + +.table tbody tr.active a { + color: white; +} + +.table-striped tbody tr.active:nth-child(odd) td, +.table-striped tbody tr.active:nth-child(odd) th { + background-color: #017ebc; +} + +table.DTTT_selectable tbody tr { + cursor: pointer; +} + +div.DTTT .btn { + color: #333 !important; + font-size: 12px; +} + +div.DTTT .btn:hover { + text-decoration: none !important; +} + +ul.DTTT_dropdown.dropdown-menu { + z-index: 2003; +} + +ul.DTTT_dropdown.dropdown-menu a { + color: #333 !important; /* needed only when demo_page.css is included */ +} + +ul.DTTT_dropdown.dropdown-menu li { + position: relative; +} + +ul.DTTT_dropdown.dropdown-menu li:hover a { + background-color: #0088cc; + color: white !important; +} + +div.DTTT_collection_background { + z-index: 2002; +} + +/* TableTools information display */ +div.DTTT_print_info.modal { + height: 150px; + margin-top: -75px; + text-align: center; +} + +div.DTTT_print_info h6 { + font-weight: normal; + font-size: 28px; + line-height: 28px; + margin: 1em; +} + +div.DTTT_print_info p { + font-size: 14px; + line-height: 20px; +} + + + +/* + * FixedColumns styles + */ +div.DTFC_LeftHeadWrapper table, +div.DTFC_LeftFootWrapper table, +div.DTFC_RightHeadWrapper table, +div.DTFC_RightFootWrapper table, +table.DTFC_Cloned tr.even { + background-color: white; +} + +div.DTFC_RightHeadWrapper table , +div.DTFC_LeftHeadWrapper table { + margin-bottom: 0 !important; + border-top-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child, +div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child, +div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child, +div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.DTFC_RightBodyWrapper table, +div.DTFC_LeftBodyWrapper table { + border-top: none; + margin-bottom: 0 !important; +} + +div.DTFC_RightBodyWrapper tbody tr:first-child th, +div.DTFC_RightBodyWrapper tbody tr:first-child td, +div.DTFC_LeftBodyWrapper tbody tr:first-child th, +div.DTFC_LeftBodyWrapper tbody tr:first-child td { + border-top: none; +} + +div.DTFC_RightFootWrapper table, +div.DTFC_LeftFootWrapper table { + border-top: none; +} + diff --git a/public/assets/css/datatables/images/sort_asc.png b/public/assets/css/datatables/images/sort_asc.png new file mode 100755 index 0000000000000000000000000000000000000000..a88d7975fe9017e4e5f2289a94bd1ed66a5f59dc GIT binary patch literal 1118 zcmbVLO=#0l98awuV{uMt6P_}u4rcI3idKFP2SpU%ZJIE?RL`X zK?Oyo=*5GG2SxDYK=7akJqV&hrl{aWJa`y*5xh+1%i2y4V}gO?edPc9{r;a9vjc}) zn|Cxb4AYwFmvVG%_ui)U^y_4!ujsO!qzYuv8YUIR!Aw%KiWp=JrG#@>(I!s4#N7H->?w+cxsH2#GA};A>g8lyFDGPKh!5)vuP_{)}*83+N zJUBU!S0_i+E{*Lu1iGsNB``2iK-CyCU7?y_mv{xb_pUh>ESZqe1Y2{eAZLMSIT%EO zFrdOH1W^=3p>Qk~I{J+k#s5zQ@j{%aIA!l^GQjJ zqA1Uc2%!{8qBKfMNh#9DCnKS_*uZ8?mnf!+8@f8xtz#prVg=E`3bCBLWsNmDAX~PG z<(4fQh=UOzE2?gKXRkc9XeI3Er?HlHECVd%SI}3`hy1_du3@$R$r(qT;k@Sft63UX zv;)2Ea_iH>^6+4jPK-lGM{Zw37Tz>~~zlHzO61x51(V4jcaKrcIVDG$-d>)z}S|7f!xxYhfUE}Kj zug_h&HZN}go22$5Ym1}P8~vYNx7-~$TWFJ;_nh!wFYSAQJF{CCo=xpK8^7?iY1^!H haOA^1D_`VC7fU=jcT literal 0 HcmV?d00001 diff --git a/public/assets/css/datatables/images/sort_asc_disabled.png b/public/assets/css/datatables/images/sort_asc_disabled.png new file mode 100755 index 0000000000000000000000000000000000000000..4e144cf0b1f786a9248a2998311e8109998d8a2d GIT binary patch literal 1050 zcmaJ=O-K|`93R^(@goeAz6hRU)S-61)?IaU({*Myml|8vh4x}JJM&z}b>>Yo&vx~s z*1>{0Sk$FMM28~iln?~vp$ zL+z1TilQ3g{c@7*P2Q^6L;g-8^nq-LaWstw(J;=d4x}PF%0Lh|)htXxRiC)>9(Gfd zk2X?ioL0_@8ZsHx!!QNYCTxo8?kU)+mV+2%VAin0^v_psXkh4J`eIPw6kCELM*pM( z2PX$o+GI}a)ajlxpt~Rv0TW^s6wEQp6$@dys4J4Qcg@nE2*J59y%|(mNdO5s5Cj>{ zuW=y`gm{Jzw6(Xlp9TWQb1WyYyx`~C#eg7k94LJ>@#g5mVp5Kkd=V>5k6>(zESt~g znS6jjPL}06J3BoMLGTlV-<`0qTJT$LYgs{tuI3mvHjo88MKy!QahN8NZl++`Te6m0 zDibLfTTpG5XE-mVGEhip#w2PB)JKi0I-PD8)*(7w)xTBHA4Yzu(Y*BKcijk8- zXslet#0bL39YHpb27^FRHN*1kB3@C%xaDHi(qLQ;(?o$W3|;IHBC-_Xc|nkPo{#bo zKE_Anh#c$_BEdk1ROZS^8#kea%Upe%D^%oqqhQ*^vkV>MD%4{RGC?tA(byrDwm?jZ z#$wTmdL^!2ITo%WmnFflUSt1hboq)*k9XV}TViYtKD5ZRJ7lb1H!ZJ`CviJ2M^c5A z%=*Sgk8hr8@-S*Kr`Ol~RJX(fddmmK4eR}O=#0l98WD1Hz^GK+C=e@fhgE~b#2$Ux^~T`1v5)mw1NlIe}zC z+ge9alrMQeN|SYi`>tC{zIG}!O_oO7k;UC8kBf>8sknx65F`zy2d1H-4fel=trX>@ z^-LCL<%6P%3`TJ=Ov$hao1$9VN|vJbLJV@SM>nJN{L>dS(6uOiBq(#Tm4F5Pz>p2Q zhq^NAP_G)%=(c^JwImV&17Zb~j6Ty5OHq1RS0sD)n5Dro1ouYi-$7;N6i6T&f*`~B zRW8JV5YO;|=5RQ?2M8R`v7Es2f}anI0YT(Au=3Evo2})=wA8uci&#;*fUzaAY_V8m ziU9`MJuDxIL|hF)@DqgJ88op{@|#XmML~j&YU>u(kqKNyC5HxZlqQk>PQkENWld+L zOr&6JNwHX-;oOueKw17j)G$`j4o<^A@%~fT$qZVMO+yC_*eYpUzR7iEi3uAj7}*(w z`YKgS6%a;F0a+l?9R#wX>ZWTi<7HV)nhsV>6(*%9O%xbi*F?TK!383rh#(|*p6}q} zd?z25;!?0(hzA2Li3(Rj>VN@FT;Xbexbdo7cN7eZc$T28pMYAYjSR4yvZz;&C0tc+ zg{xJMrKKvDCBd+6WB+P&<%mp=yImbyVyq56G|9BvWUP^I>ms=lb4e+lDSgg;Us`JO zKB6{wH+j~F#-A4FY3K3qm~Z6m@V6}oQ%8?p-E$dw`#0C$PJfmCV8)v}3>Ydha%`fZ zJk~G*M^A3LGk$Td;R`icF67R~`sBOHv)Hlqlc%$jy~9_oZJcNyWxkbb_O9u#|7hLF z-<-NMLzh3S0YA@8gd1Pt(Df|3@16Y-n=aSvsF@AkI`ioeFg>&H3bXU&vBnE6gIChkL+(Ey+0iB4Z$Eze7t_CX>Hq)$ literal 0 HcmV?d00001 diff --git a/public/assets/css/datatables/images/sort_desc.png b/public/assets/css/datatables/images/sort_desc.png new file mode 100755 index 0000000000000000000000000000000000000000..def071ed5afd264a036f6d9e75856366fd6ad153 GIT binary patch literal 1127 zcmbVMOK8+U7*1U&zKRu5sR)h{1;yRWWV^4}ShvZpU2*HWU2!iy(qy)cZ89;Lb+`3m zMbruv!GjkO!3qksP*5)lD)k}=Dp*ht-n@8G5m8XoN!zU+ih_Y;=AZe$?|)|~*Ri8v z(dtDU$2DZy)jV65`|pB!_H}d7Cv0h=sUqzpC0fy3%q0!dg+a#Bx^W(BM*oq=xP{{a zC9_bZ#q2IgCss)FbwX9kVQ7wPX{|b%-is;d!ri7V^Y8E8=YeU+{JuyQW*r6hnC$~D z?i}bS=mWia!r)uCftISo2rNuBP__DOPpZoN6tBeg{;|M=DHYl)^V3chvpJv;7lTL$ z26Y&PAc{gL+#HL=wg3?#C_qs_Vi3iouqZ(YW*(kdbB&UeSJN}Lm?ZN(lsb|iR4SEF zB^)Adw}29fgwG+0L8cM(`faLJgSNN6#-L(PcTI+l@K3y+Xf(g*^61+0|J+O6zN2mb?UNGh6GU@A{1+eF%d@N2(^XdVmhis(y25|iAr;gV=io5OsYy0 zB}Gv|2&GUGrBPB%s*yG^841Ug8a88lRI_zlvuiTDGuXsmv6A9qjS{y&NMEf3ay^6+ zuZK85>5PD^rkl1e`{kLAR>iJ)6dP%mSYRr@k~xQcDE=$%X{_--ITM&Og5Ml}G)wJ> zb)dhUZG9%p4iC23#JFrUCcmwHz{cugMoku~ue-kg{Mj0~%`FeCcz9jAdg}QET-kSG za`+2B_+lRTaeAVz>E`F1pN7h>B=BbGqcz13d%ywZR&4OjkNNrF_U}#EcXDGa@V52B z>JnIW7#s%CHi literal 0 HcmV?d00001 diff --git a/public/assets/css/datatables/images/sort_desc_disabled.png b/public/assets/css/datatables/images/sort_desc_disabled.png new file mode 100755 index 0000000000000000000000000000000000000000..7824973cc60fc1841b16f2cb39323cefcdc3f942 GIT binary patch literal 1045 zcmaJ=&rj1(9IuWjVlWt@h#q(rlc~7%$2P_q>KN??ODrK{#&I!}_Kh{rzS=%m2N%F- zAW={L0VZBJnRrkSCK{q1NKA||(ZmA>6Hgw9o;Z-;>)3_|u*vIt-(X0AeGY5Bm`Mgoq{>2>Xkbiu%Ds= zw2?31f^tL9kQr8eOxQDR!ltPHq-U$zG{j&MP8pU+Z@qp?149?-TQP-IYzdZ(;duv+ z&5z`@`Drbo)5+_g-xG*{39$-1bH;K7Po%550y+EF3=OIfJT20DK^2ryARz~WSeOlI zY%dFXxiA-r#^dp8fM+?DVR?q*LtI>l@B+(%+D8*_j$RaUa;D~sSR!4**cKS3TrP*p zkuY+m7%q`W_!>MPB8ZS%v9RieEVsL^AVXJk3>zEB0=}X;iDt1#lSubcFztq{<<`nX z3dVS<&2VAXPpJ-6l>b9bvw?PT4(`W$ps<^-*pSIV7tJ~vX67YQ8ELa7v~ZoP?{i~^a{W;-ZQ@ymjxh)IjDt*2O<6Dwh=q$vY$VY; zc&J{Ds~-?cjVm3>Wk@iL-`IZ|UB4pJ;~yJiON_?gLyJtiL&kbxZhV_OiPfx}%6s1@ zcXoG^ffrPJ;LQ4(`t<(ickJ1j|E0&fC8lSh8sUh5lwUg=l~QoqsK t`nTanN|e2@a&yVMdhy div { + display: none; +} +.datepicker.days div.datepicker-days { + display: block; +} +.datepicker.months div.datepicker-months { + display: block; +} +.datepicker.years div.datepicker-years { + display: block; +} +.datepicker table { + margin: 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.datepicker table tr td, +.datepicker table tr th { + text-align: center; + width: 30px; + height: 30px; + border-radius: 4px; + border: none; +} +.table-striped .datepicker table tr td, +.table-striped .datepicker table tr th { + background-color: transparent; +} +.datepicker table tr td.day:hover, +.datepicker table tr td.day.focused { + background: rgba(0,0,0,0.2); + cursor: pointer; +} +.datepicker table tr td.old, +.datepicker table tr td.new { + color: #777; +} +.datepicker table tr td.disabled, +.datepicker table tr td.disabled:hover { + background: none; + color: #444; + cursor: default; +} +.datepicker table tr td.today, +.datepicker table tr td.today:hover, +.datepicker table tr td.today.disabled, +.datepicker table tr td.today.disabled:hover { + color: #000000; + background: rgba(0,0,0,0.2); + border-color: #ffb733; +} +.datepicker table tr td.today:hover, +.datepicker table tr td.today:hover:hover, +.datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today.disabled:hover:hover, +.datepicker table tr td.today:focus, +.datepicker table tr td.today:hover:focus, +.datepicker table tr td.today.disabled:focus, +.datepicker table tr td.today.disabled:hover:focus, +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.today, +.open .dropdown-toggle.datepicker table tr td.today:hover, +.open .dropdown-toggle.datepicker table tr td.today.disabled, +.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { + color: #000000; + background: rgba(0,0,0,0.2); + border-color: #f59e00; +} +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.today, +.open .dropdown-toggle.datepicker table tr td.today:hover, +.open .dropdown-toggle.datepicker table tr td.today.disabled, +.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { + background-image: none; +} +.datepicker table tr td.today.disabled, +.datepicker table tr td.today:hover.disabled, +.datepicker table tr td.today.disabled.disabled, +.datepicker table tr td.today.disabled:hover.disabled, +.datepicker table tr td.today[disabled], +.datepicker table tr td.today:hover[disabled], +.datepicker table tr td.today.disabled[disabled], +.datepicker table tr td.today.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.today, +fieldset[disabled] .datepicker table tr td.today:hover, +fieldset[disabled] .datepicker table tr td.today.disabled, +fieldset[disabled] .datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today:hover.disabled:hover, +.datepicker table tr td.today.disabled.disabled:hover, +.datepicker table tr td.today.disabled:hover.disabled:hover, +.datepicker table tr td.today[disabled]:hover, +.datepicker table tr td.today:hover[disabled]:hover, +.datepicker table tr td.today.disabled[disabled]:hover, +.datepicker table tr td.today.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.today:hover, +fieldset[disabled] .datepicker table tr td.today:hover:hover, +fieldset[disabled] .datepicker table tr td.today.disabled:hover, +fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover, +.datepicker table tr td.today.disabled:focus, +.datepicker table tr td.today:hover.disabled:focus, +.datepicker table tr td.today.disabled.disabled:focus, +.datepicker table tr td.today.disabled:hover.disabled:focus, +.datepicker table tr td.today[disabled]:focus, +.datepicker table tr td.today:hover[disabled]:focus, +.datepicker table tr td.today.disabled[disabled]:focus, +.datepicker table tr td.today.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.today:focus, +fieldset[disabled] .datepicker table tr td.today:hover:focus, +fieldset[disabled] .datepicker table tr td.today.disabled:focus, +fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today:hover.disabled:active, +.datepicker table tr td.today.disabled.disabled:active, +.datepicker table tr td.today.disabled:hover.disabled:active, +.datepicker table tr td.today[disabled]:active, +.datepicker table tr td.today:hover[disabled]:active, +.datepicker table tr td.today.disabled[disabled]:active, +.datepicker table tr td.today.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.today:active, +fieldset[disabled] .datepicker table tr td.today:hover:active, +fieldset[disabled] .datepicker table tr td.today.disabled:active, +fieldset[disabled] .datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today:hover.disabled.active, +.datepicker table tr td.today.disabled.disabled.active, +.datepicker table tr td.today.disabled:hover.disabled.active, +.datepicker table tr td.today[disabled].active, +.datepicker table tr td.today:hover[disabled].active, +.datepicker table tr td.today.disabled[disabled].active, +.datepicker table tr td.today.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.today.active, +fieldset[disabled] .datepicker table tr td.today:hover.active, +fieldset[disabled] .datepicker table tr td.today.disabled.active, +fieldset[disabled] .datepicker table tr td.today.disabled:hover.active { + background: rgba(0,0,0,0.2); + border-color: #ffb733; +} +.datepicker table tr td.today:hover:hover { + color: #000; +} +.datepicker table tr td.today.active:hover { + color: #fff; +} +.datepicker table tr td.range, +.datepicker table tr td.range:hover, +.datepicker table tr td.range.disabled, +.datepicker table tr td.range.disabled:hover { + background: rgba(0,0,0,0.2); + border-radius: 0; +} +.datepicker table tr td.range.today, +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today.disabled:hover { + color: #000000; + background: rgba(0,0,0,0.2); + border-color: #f1a417; + border-radius: 0; +} +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today:hover:hover, +.datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today.disabled:hover:hover, +.datepicker table tr td.range.today:focus, +.datepicker table tr td.range.today:hover:focus, +.datepicker table tr td.range.today.disabled:focus, +.datepicker table tr td.range.today.disabled:hover:focus, +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.range.today, +.open .dropdown-toggle.datepicker table tr td.range.today:hover, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { + color: #000000; + background: rgba(0,0,0,0.2); + border-color: #bf800c; +} +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.range.today, +.open .dropdown-toggle.datepicker table tr td.range.today:hover, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { + background-image: none; +} +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today:hover.disabled, +.datepicker table tr td.range.today.disabled.disabled, +.datepicker table tr td.range.today.disabled:hover.disabled, +.datepicker table tr td.range.today[disabled], +.datepicker table tr td.range.today:hover[disabled], +.datepicker table tr td.range.today.disabled[disabled], +.datepicker table tr td.range.today.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.range.today, +fieldset[disabled] .datepicker table tr td.range.today:hover, +fieldset[disabled] .datepicker table tr td.range.today.disabled, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today:hover.disabled:hover, +.datepicker table tr td.range.today.disabled.disabled:hover, +.datepicker table tr td.range.today.disabled:hover.disabled:hover, +.datepicker table tr td.range.today[disabled]:hover, +.datepicker table tr td.range.today:hover[disabled]:hover, +.datepicker table tr td.range.today.disabled[disabled]:hover, +.datepicker table tr td.range.today.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.range.today:hover, +fieldset[disabled] .datepicker table tr td.range.today:hover:hover, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover, +.datepicker table tr td.range.today.disabled:focus, +.datepicker table tr td.range.today:hover.disabled:focus, +.datepicker table tr td.range.today.disabled.disabled:focus, +.datepicker table tr td.range.today.disabled:hover.disabled:focus, +.datepicker table tr td.range.today[disabled]:focus, +.datepicker table tr td.range.today:hover[disabled]:focus, +.datepicker table tr td.range.today.disabled[disabled]:focus, +.datepicker table tr td.range.today.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.range.today:focus, +fieldset[disabled] .datepicker table tr td.range.today:hover:focus, +fieldset[disabled] .datepicker table tr td.range.today.disabled:focus, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today:hover.disabled:active, +.datepicker table tr td.range.today.disabled.disabled:active, +.datepicker table tr td.range.today.disabled:hover.disabled:active, +.datepicker table tr td.range.today[disabled]:active, +.datepicker table tr td.range.today:hover[disabled]:active, +.datepicker table tr td.range.today.disabled[disabled]:active, +.datepicker table tr td.range.today.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.range.today:active, +fieldset[disabled] .datepicker table tr td.range.today:hover:active, +fieldset[disabled] .datepicker table tr td.range.today.disabled:active, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today:hover.disabled.active, +.datepicker table tr td.range.today.disabled.disabled.active, +.datepicker table tr td.range.today.disabled:hover.disabled.active, +.datepicker table tr td.range.today[disabled].active, +.datepicker table tr td.range.today:hover[disabled].active, +.datepicker table tr td.range.today.disabled[disabled].active, +.datepicker table tr td.range.today.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.range.today.active, +fieldset[disabled] .datepicker table tr td.range.today:hover.active, +fieldset[disabled] .datepicker table tr td.range.today.disabled.active, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active { + background: rgba(0,0,0,0.2); + border-color: #f1a417; +} +.datepicker table tr td.selected, +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected.disabled:hover { + color: #ffffff; + background: rgba(0,0,0,0.2); + border-color: #555555; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected:hover:hover, +.datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected.disabled:hover:hover, +.datepicker table tr td.selected:focus, +.datepicker table tr td.selected:hover:focus, +.datepicker table tr td.selected.disabled:focus, +.datepicker table tr td.selected.disabled:hover:focus, +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.selected, +.open .dropdown-toggle.datepicker table tr td.selected:hover, +.open .dropdown-toggle.datepicker table tr td.selected.disabled, +.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { + color: #ffffff; + background: rgba(0,0,0,0.2); + border-color: #373737; +} +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.selected, +.open .dropdown-toggle.datepicker table tr td.selected:hover, +.open .dropdown-toggle.datepicker table tr td.selected.disabled, +.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { + background-image: none; +} +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected:hover.disabled, +.datepicker table tr td.selected.disabled.disabled, +.datepicker table tr td.selected.disabled:hover.disabled, +.datepicker table tr td.selected[disabled], +.datepicker table tr td.selected:hover[disabled], +.datepicker table tr td.selected.disabled[disabled], +.datepicker table tr td.selected.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.selected, +fieldset[disabled] .datepicker table tr td.selected:hover, +fieldset[disabled] .datepicker table tr td.selected.disabled, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected:hover.disabled:hover, +.datepicker table tr td.selected.disabled.disabled:hover, +.datepicker table tr td.selected.disabled:hover.disabled:hover, +.datepicker table tr td.selected[disabled]:hover, +.datepicker table tr td.selected:hover[disabled]:hover, +.datepicker table tr td.selected.disabled[disabled]:hover, +.datepicker table tr td.selected.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.selected:hover, +fieldset[disabled] .datepicker table tr td.selected:hover:hover, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover, +.datepicker table tr td.selected.disabled:focus, +.datepicker table tr td.selected:hover.disabled:focus, +.datepicker table tr td.selected.disabled.disabled:focus, +.datepicker table tr td.selected.disabled:hover.disabled:focus, +.datepicker table tr td.selected[disabled]:focus, +.datepicker table tr td.selected:hover[disabled]:focus, +.datepicker table tr td.selected.disabled[disabled]:focus, +.datepicker table tr td.selected.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.selected:focus, +fieldset[disabled] .datepicker table tr td.selected:hover:focus, +fieldset[disabled] .datepicker table tr td.selected.disabled:focus, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected:hover.disabled:active, +.datepicker table tr td.selected.disabled.disabled:active, +.datepicker table tr td.selected.disabled:hover.disabled:active, +.datepicker table tr td.selected[disabled]:active, +.datepicker table tr td.selected:hover[disabled]:active, +.datepicker table tr td.selected.disabled[disabled]:active, +.datepicker table tr td.selected.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.selected:active, +fieldset[disabled] .datepicker table tr td.selected:hover:active, +fieldset[disabled] .datepicker table tr td.selected.disabled:active, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected:hover.disabled.active, +.datepicker table tr td.selected.disabled.disabled.active, +.datepicker table tr td.selected.disabled:hover.disabled.active, +.datepicker table tr td.selected[disabled].active, +.datepicker table tr td.selected:hover[disabled].active, +.datepicker table tr td.selected.disabled[disabled].active, +.datepicker table tr td.selected.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.selected.active, +fieldset[disabled] .datepicker table tr td.selected:hover.active, +fieldset[disabled] .datepicker table tr td.selected.disabled.active, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active { + background: rgba(0,0,0,0.2); + border-color: #555555; +} +.datepicker table tr td.active, +.datepicker table tr td.active:hover, +.datepicker table tr td.active.disabled, +.datepicker table tr td.active.disabled:hover { + color: #ffffff; + background: rgba(0,0,0,0.2); + border-color: #357ebd; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td.active:hover, +.datepicker table tr td.active:hover:hover, +.datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active.disabled:hover:hover, +.datepicker table tr td.active:focus, +.datepicker table tr td.active:hover:focus, +.datepicker table tr td.active.disabled:focus, +.datepicker table tr td.active.disabled:hover:focus, +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.active, +.open .dropdown-toggle.datepicker table tr td.active:hover, +.open .dropdown-toggle.datepicker table tr td.active.disabled, +.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { + color: #ffffff; + background: rgba(0,0,0,0.5); + border-color: #285e8e; +} +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.active, +.open .dropdown-toggle.datepicker table tr td.active:hover, +.open .dropdown-toggle.datepicker table tr td.active.disabled, +.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { + background-image: none; +} +.datepicker table tr td.active.disabled, +.datepicker table tr td.active:hover.disabled, +.datepicker table tr td.active.disabled.disabled, +.datepicker table tr td.active.disabled:hover.disabled, +.datepicker table tr td.active[disabled], +.datepicker table tr td.active:hover[disabled], +.datepicker table tr td.active.disabled[disabled], +.datepicker table tr td.active.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.active, +fieldset[disabled] .datepicker table tr td.active:hover, +fieldset[disabled] .datepicker table tr td.active.disabled, +fieldset[disabled] .datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active:hover.disabled:hover, +.datepicker table tr td.active.disabled.disabled:hover, +.datepicker table tr td.active.disabled:hover.disabled:hover, +.datepicker table tr td.active[disabled]:hover, +.datepicker table tr td.active:hover[disabled]:hover, +.datepicker table tr td.active.disabled[disabled]:hover, +.datepicker table tr td.active.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.active:hover, +fieldset[disabled] .datepicker table tr td.active:hover:hover, +fieldset[disabled] .datepicker table tr td.active.disabled:hover, +fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover, +.datepicker table tr td.active.disabled:focus, +.datepicker table tr td.active:hover.disabled:focus, +.datepicker table tr td.active.disabled.disabled:focus, +.datepicker table tr td.active.disabled:hover.disabled:focus, +.datepicker table tr td.active[disabled]:focus, +.datepicker table tr td.active:hover[disabled]:focus, +.datepicker table tr td.active.disabled[disabled]:focus, +.datepicker table tr td.active.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.active:focus, +fieldset[disabled] .datepicker table tr td.active:hover:focus, +fieldset[disabled] .datepicker table tr td.active.disabled:focus, +fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active:hover.disabled:active, +.datepicker table tr td.active.disabled.disabled:active, +.datepicker table tr td.active.disabled:hover.disabled:active, +.datepicker table tr td.active[disabled]:active, +.datepicker table tr td.active:hover[disabled]:active, +.datepicker table tr td.active.disabled[disabled]:active, +.datepicker table tr td.active.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.active:active, +fieldset[disabled] .datepicker table tr td.active:hover:active, +fieldset[disabled] .datepicker table tr td.active.disabled:active, +fieldset[disabled] .datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active:hover.disabled.active, +.datepicker table tr td.active.disabled.disabled.active, +.datepicker table tr td.active.disabled:hover.disabled.active, +.datepicker table tr td.active[disabled].active, +.datepicker table tr td.active:hover[disabled].active, +.datepicker table tr td.active.disabled[disabled].active, +.datepicker table tr td.active.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.active.active, +fieldset[disabled] .datepicker table tr td.active:hover.active, +fieldset[disabled] .datepicker table tr td.active.disabled.active, +fieldset[disabled] .datepicker table tr td.active.disabled:hover.active { + background-color: #428bca; + border-color: #357ebd; +} +.datepicker table tr td span { + display: block; + width: 23%; + height: 54px; + line-height: 54px; + float: left; + margin: 1%; + cursor: pointer; + border-radius: 4px; +} +.datepicker table tr td span:hover { + background: rgba(0,0,0,0.2); +} +.datepicker table tr td span.disabled, +.datepicker table tr td span.disabled:hover { + background: none; + color: #444; + cursor: default; +} +.datepicker table tr td span.active, +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active.disabled:hover { + color: #ffffff; + background-color: #428bca; + border-color: #357ebd; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active:hover:hover, +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active.disabled:hover:hover, +.datepicker table tr td span.active:focus, +.datepicker table tr td span.active:hover:focus, +.datepicker table tr td span.active.disabled:focus, +.datepicker table tr td span.active.disabled:hover:focus, +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td span.active, +.open .dropdown-toggle.datepicker table tr td span.active:hover, +.open .dropdown-toggle.datepicker table tr td span.active.disabled, +.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { + color: #ffffff; + background-color: #3276b1; + border-color: #285e8e; +} +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td span.active, +.open .dropdown-toggle.datepicker table tr td span.active:hover, +.open .dropdown-toggle.datepicker table tr td span.active.disabled, +.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { + background-image: none; +} +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active:hover.disabled, +.datepicker table tr td span.active.disabled.disabled, +.datepicker table tr td span.active.disabled:hover.disabled, +.datepicker table tr td span.active[disabled], +.datepicker table tr td span.active:hover[disabled], +.datepicker table tr td span.active.disabled[disabled], +.datepicker table tr td span.active.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td span.active, +fieldset[disabled] .datepicker table tr td span.active:hover, +fieldset[disabled] .datepicker table tr td span.active.disabled, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active:hover.disabled:hover, +.datepicker table tr td span.active.disabled.disabled:hover, +.datepicker table tr td span.active.disabled:hover.disabled:hover, +.datepicker table tr td span.active[disabled]:hover, +.datepicker table tr td span.active:hover[disabled]:hover, +.datepicker table tr td span.active.disabled[disabled]:hover, +.datepicker table tr td span.active.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td span.active:hover, +fieldset[disabled] .datepicker table tr td span.active:hover:hover, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover, +.datepicker table tr td span.active.disabled:focus, +.datepicker table tr td span.active:hover.disabled:focus, +.datepicker table tr td span.active.disabled.disabled:focus, +.datepicker table tr td span.active.disabled:hover.disabled:focus, +.datepicker table tr td span.active[disabled]:focus, +.datepicker table tr td span.active:hover[disabled]:focus, +.datepicker table tr td span.active.disabled[disabled]:focus, +.datepicker table tr td span.active.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td span.active:focus, +fieldset[disabled] .datepicker table tr td span.active:hover:focus, +fieldset[disabled] .datepicker table tr td span.active.disabled:focus, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active:hover.disabled:active, +.datepicker table tr td span.active.disabled.disabled:active, +.datepicker table tr td span.active.disabled:hover.disabled:active, +.datepicker table tr td span.active[disabled]:active, +.datepicker table tr td span.active:hover[disabled]:active, +.datepicker table tr td span.active.disabled[disabled]:active, +.datepicker table tr td span.active.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td span.active:active, +fieldset[disabled] .datepicker table tr td span.active:hover:active, +fieldset[disabled] .datepicker table tr td span.active.disabled:active, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active:hover.disabled.active, +.datepicker table tr td span.active.disabled.disabled.active, +.datepicker table tr td span.active.disabled:hover.disabled.active, +.datepicker table tr td span.active[disabled].active, +.datepicker table tr td span.active:hover[disabled].active, +.datepicker table tr td span.active.disabled[disabled].active, +.datepicker table tr td span.active.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td span.active.active, +fieldset[disabled] .datepicker table tr td span.active:hover.active, +fieldset[disabled] .datepicker table tr td span.active.disabled.active, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active { + background-color: #428bca; + border-color: #357ebd; +} +.datepicker table tr td span.old, +.datepicker table tr td span.new { + color: #444; +} +.datepicker th.datepicker-switch { + width: 145px; +} +.datepicker thead tr:first-child th, +.datepicker tfoot tr th { + cursor: pointer; +} +.datepicker thead tr:first-child th:hover, +.datepicker tfoot tr th:hover { + background: rgba(0,0,0,0.2); +} +.datepicker .cw { + font-size: 10px; + width: 12px; + padding: 0 2px 0 5px; + vertical-align: middle; +} +.datepicker thead tr:first-child th.cw { + cursor: default; + background-color: transparent; +} +.input-group.date .input-group-addon i { + cursor: pointer; + width: 16px; + height: 16px; +} +.input-daterange input { + text-align: center; +} +.input-daterange input:first-child { + border-radius: 3px 0 0 3px; +} +.input-daterange input:last-child { + border-radius: 0 3px 3px 0; +} +.input-daterange .input-group-addon { + width: auto; + min-width: 16px; + padding: 4px 5px; + font-weight: normal; + line-height: 1.428571429; + text-align: center; + text-shadow: 0 1px 0 #fff; + vertical-align: middle; + background-color: #eeeeee; + border: solid #cccccc; + border-width: 1px 0; + margin-left: -5px; + margin-right: -5px; +} +.datepicker.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + float: left; + display: none; + min-width: 160px; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 5px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + *border-right-width: 2px; + *border-bottom-width: 2px; + color: #333333; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 1.428571429; +} +.datepicker.dropdown-menu th, +.datepicker.dropdown-menu td { + padding: 4px 5px; +} diff --git a/public/assets/css/daterangepicker/daterangepicker-bs3.css b/public/assets/css/daterangepicker/daterangepicker-bs3.css new file mode 100755 index 00000000..eed1e9f4 --- /dev/null +++ b/public/assets/css/daterangepicker/daterangepicker-bs3.css @@ -0,0 +1,245 @@ +/*! + * Stylesheet for the Date Range Picker, for use with Bootstrap 3.x + * + * Copyright 2013 Dan Grossman ( http://www.dangrossman.info ) + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Built for http://www.improvely.com + */ + + .daterangepicker.dropdown-menu { + max-width: none; + z-index: 3000; +} + +.daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar { + float: left; + margin: 4px; +} + +.daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar { + float: right; + margin: 4px; +} + +.daterangepicker .ranges { + width: 160px; + text-align: left; +} + +.daterangepicker .ranges .range_inputs>div { + float: left; +} + +.daterangepicker .ranges .range_inputs>div:nth-child(2) { + padding-left: 11px; +} + +.daterangepicker .calendar { + display: none; + max-width: 270px; +} + +.daterangepicker .calendar th, .daterangepicker .calendar td { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + white-space: nowrap; + text-align: center; + min-width: 32px; +} + +.daterangepicker .ranges label { + color: #333; + display: block; + font-size: 11px; + font-weight: normal; + height: 20px; + line-height: 20px; + margin-bottom: 2px; + text-shadow: #fff 1px 1px 0px; + text-transform: uppercase; + width: 74px; +} + +.daterangepicker .ranges input { + font-size: 11px; +} + +.daterangepicker .ranges .input-mini { + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; + color: #555; + display: block; + font-size: 11px; + height: 30px; + line-height: 30px; + vertical-align: middle; + margin: 0 0 10px 0; + padding: 0 6px; + width: 74px; +} + +.daterangepicker .ranges ul { + list-style: none; + margin: 0; + padding: 0; +} + +.daterangepicker .ranges li { + font-size: 13px; + background: #f5f5f5; + border: 1px solid #f5f5f5; + color: #08c; + padding: 3px 12px; + margin-bottom: 8px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + cursor: pointer; +} + +.daterangepicker .ranges li.active, .daterangepicker .ranges li:hover { + background: #08c; + border: 1px solid #08c; + color: #fff; +} + +.daterangepicker .calendar-date { + border: 1px solid #ddd; + padding: 4px; + border-radius: 4px; + background: #fff; +} + +.daterangepicker .calendar-time { + text-align: center; + margin: 8px auto 0 auto; + line-height: 30px; +} + +.daterangepicker { + position: absolute; + background: #fff; + top: 100px; + left: 20px; + padding: 4px; + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.daterangepicker.opensleft:before { + position: absolute; + top: -7px; + right: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker.opensleft:after { + position: absolute; + top: -6px; + right: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + content: ''; +} + +.daterangepicker.opensright:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker.opensright:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + content: ''; +} + +.daterangepicker table { + width: 100%; + margin: 0; +} + +.daterangepicker td, .daterangepicker th { + text-align: center; + width: 20px; + height: 20px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + cursor: pointer; + white-space: nowrap; +} + +.daterangepicker td.off { + color: #999; +} + +.daterangepicker td.disabled { + color: #999; +} + +.daterangepicker td.available:hover, .daterangepicker th.available:hover { + background: #eee; +} + +.daterangepicker td.in-range { + background: #ebf4f8; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.daterangepicker td.active, .daterangepicker td.active:hover { + background-color: #357ebd; + border-color: #3071a9; + color: #fff; +} + +.daterangepicker td.week, .daterangepicker th.week { + font-size: 80%; + color: #ccc; +} + +.daterangepicker select.monthselect, .daterangepicker select.yearselect { + font-size: 12px; + padding: 1px; + height: auto; + margin: 0; + cursor: default; +} + +.daterangepicker select.monthselect { + margin-right: 2%; + width: 56%; +} + +.daterangepicker select.yearselect { + width: 40%; +} + +.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.ampmselect { + width: 50px; + margin-bottom: 0; +} diff --git a/public/assets/css/iCheck/all.css b/public/assets/css/iCheck/all.css new file mode 100755 index 00000000..6439b742 --- /dev/null +++ b/public/assets/css/iCheck/all.css @@ -0,0 +1,61 @@ +/* iCheck plugin skins +----------------------------------- */ +@import url("minimal/_all.css"); +/* +@import url("minimal/minimal.css"); +@import url("minimal/red.css"); +@import url("minimal/green.css"); +@import url("minimal/blue.css"); +@import url("minimal/aero.css"); +@import url("minimal/grey.css"); +@import url("minimal/orange.css"); +@import url("minimal/yellow.css"); +@import url("minimal/pink.css"); +@import url("minimal/purple.css"); +*/ + +@import url("square/_all.css"); +/* +@import url("square/square.css"); +@import url("square/red.css"); +@import url("square/green.css"); +@import url("square/blue.css"); +@import url("square/aero.css"); +@import url("square/grey.css"); +@import url("square/orange.css"); +@import url("square/yellow.css"); +@import url("square/pink.css"); +@import url("square/purple.css"); +*/ + +@import url("flat/_all.css"); +/* +@import url("flat/flat.css"); +@import url("flat/red.css"); +@import url("flat/green.css"); +@import url("flat/blue.css"); +@import url("flat/aero.css"); +@import url("flat/grey.css"); +@import url("flat/orange.css"); +@import url("flat/yellow.css"); +@import url("flat/pink.css"); +@import url("flat/purple.css"); +*/ + +@import url("line/_all.css"); +/* +@import url("line/line.css"); +@import url("line/red.css"); +@import url("line/green.css"); +@import url("line/blue.css"); +@import url("line/aero.css"); +@import url("line/grey.css"); +@import url("line/orange.css"); +@import url("line/yellow.css"); +@import url("line/pink.css"); +@import url("line/purple.css"); +*/ + +@import url("polaris/polaris.css"); + +@import url("futurico/futurico.css"); \ No newline at end of file diff --git a/public/assets/css/iCheck/flat/_all.css b/public/assets/css/iCheck/flat/_all.css new file mode 100755 index 00000000..21647b50 --- /dev/null +++ b/public/assets/css/iCheck/flat/_all.css @@ -0,0 +1,560 @@ +/* iCheck plugin Flat skin +----------------------------------- */ +.icheckbox_flat, +.iradio_flat { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(flat.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat { + background-position: 0 0; +} + .icheckbox_flat.checked { + background-position: -22px 0; + } + .icheckbox_flat.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat { + background-position: -88px 0; +} + .iradio_flat.checked { + background-position: -110px 0; + } + .iradio_flat.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat, + .iradio_flat { + background-image: url(flat@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* red */ +.icheckbox_flat-red, +.iradio_flat-red { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(red.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-red { + background-position: 0 0; +} + .icheckbox_flat-red.checked { + background-position: -22px 0; + } + .icheckbox_flat-red.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-red.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-red { + background-position: -88px 0; +} + .iradio_flat-red.checked { + background-position: -110px 0; + } + .iradio_flat-red.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-red.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat-red, + .iradio_flat-red { + background-image: url(red@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* green */ +.icheckbox_flat-green, +.iradio_flat-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-green { + background-position: 0 0; +} + .icheckbox_flat-green.checked { + background-position: -22px 0; + } + .icheckbox_flat-green.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-green.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-green { + background-position: -88px 0; +} + .iradio_flat-green.checked { + background-position: -110px 0; + } + .iradio_flat-green.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-green.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat-green, + .iradio_flat-green { + background-image: url(green@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* blue */ +.icheckbox_flat-blue, +.iradio_flat-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-blue { + background-position: 0 0; +} + .icheckbox_flat-blue.checked { + background-position: -22px 0; + } + .icheckbox_flat-blue.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-blue.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-blue { + background-position: -88px 0; +} + .iradio_flat-blue.checked { + background-position: -110px 0; + } + .iradio_flat-blue.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-blue.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat-blue, + .iradio_flat-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* aero */ +.icheckbox_flat-aero, +.iradio_flat-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-aero { + background-position: 0 0; +} + .icheckbox_flat-aero.checked { + background-position: -22px 0; + } + .icheckbox_flat-aero.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-aero.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-aero { + background-position: -88px 0; +} + .iradio_flat-aero.checked { + background-position: -110px 0; + } + .iradio_flat-aero.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-aero.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat-aero, + .iradio_flat-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* grey */ +.icheckbox_flat-grey, +.iradio_flat-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-grey { + background-position: 0 0; +} + .icheckbox_flat-grey.checked { + background-position: -22px 0; + } + .icheckbox_flat-grey.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-grey.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-grey { + background-position: -88px 0; +} + .iradio_flat-grey.checked { + background-position: -110px 0; + } + .iradio_flat-grey.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-grey.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat-grey, + .iradio_flat-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* orange */ +.icheckbox_flat-orange, +.iradio_flat-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-orange { + background-position: 0 0; +} + .icheckbox_flat-orange.checked { + background-position: -22px 0; + } + .icheckbox_flat-orange.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-orange.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-orange { + background-position: -88px 0; +} + .iradio_flat-orange.checked { + background-position: -110px 0; + } + .iradio_flat-orange.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-orange.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat-orange, + .iradio_flat-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* yellow */ +.icheckbox_flat-yellow, +.iradio_flat-yellow { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(yellow.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-yellow { + background-position: 0 0; +} + .icheckbox_flat-yellow.checked { + background-position: -22px 0; + } + .icheckbox_flat-yellow.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-yellow.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-yellow { + background-position: -88px 0; +} + .iradio_flat-yellow.checked { + background-position: -110px 0; + } + .iradio_flat-yellow.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-yellow.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat-yellow, + .iradio_flat-yellow { + background-image: url(yellow@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* pink */ +.icheckbox_flat-pink, +.iradio_flat-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-pink { + background-position: 0 0; +} + .icheckbox_flat-pink.checked { + background-position: -22px 0; + } + .icheckbox_flat-pink.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-pink.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-pink { + background-position: -88px 0; +} + .iradio_flat-pink.checked { + background-position: -110px 0; + } + .iradio_flat-pink.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-pink.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat-pink, + .iradio_flat-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* purple */ +.icheckbox_flat-purple, +.iradio_flat-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-purple { + background-position: 0 0; +} + .icheckbox_flat-purple.checked { + background-position: -22px 0; + } + .icheckbox_flat-purple.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-purple.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-purple { + background-position: -88px 0; +} + .iradio_flat-purple.checked { + background-position: -110px 0; + } + .iradio_flat-purple.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-purple.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat-purple, + .iradio_flat-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/flat/aero.css b/public/assets/css/iCheck/flat/aero.css new file mode 100755 index 00000000..98fd65c8 --- /dev/null +++ b/public/assets/css/iCheck/flat/aero.css @@ -0,0 +1,56 @@ +/* iCheck plugin Flat skin, aero +----------------------------------- */ +.icheckbox_flat-aero, +.iradio_flat-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-aero { + background-position: 0 0; +} + .icheckbox_flat-aero.checked { + background-position: -22px 0; + } + .icheckbox_flat-aero.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-aero.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-aero { + background-position: -88px 0; +} + .iradio_flat-aero.checked { + background-position: -110px 0; + } + .iradio_flat-aero.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-aero.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat-aero, + .iradio_flat-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/flat/aero.png b/public/assets/css/iCheck/flat/aero.png new file mode 100755 index 0000000000000000000000000000000000000000..f4277aa4cf04050989b48c548ce0f9ae377bdc48 GIT binary patch literal 1520 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 RY6AcO002ovPDHLkV1gs!@UZ{@ literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/flat/flat@2x.png b/public/assets/css/iCheck/flat/flat@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..e70e438c5d5ed00e7082929e61a0d9d162daf473 GIT binary patch literal 3217 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 literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/flat/green.css b/public/assets/css/iCheck/flat/green.css new file mode 100755 index 00000000..c9d17c16 --- /dev/null +++ b/public/assets/css/iCheck/flat/green.css @@ -0,0 +1,56 @@ +/* iCheck plugin Flat skin, green +----------------------------------- */ +.icheckbox_flat-green, +.iradio_flat-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-green { + background-position: 0 0; +} + .icheckbox_flat-green.checked { + background-position: -22px 0; + } + .icheckbox_flat-green.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-green.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-green { + background-position: -88px 0; +} + .iradio_flat-green.checked { + background-position: -110px 0; + } + .iradio_flat-green.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-green.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat-green, + .iradio_flat-green { + background-image: url(green@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/flat/green.png b/public/assets/css/iCheck/flat/green.png new file mode 100755 index 0000000000000000000000000000000000000000..6b303fbeadb70a90e11d83439189de9b618f0729 GIT binary patch literal 1444 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 Hu0mjf1RVUH literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/flat/grey.css b/public/assets/css/iCheck/flat/grey.css new file mode 100755 index 00000000..a451650e --- /dev/null +++ b/public/assets/css/iCheck/flat/grey.css @@ -0,0 +1,56 @@ +/* iCheck plugin Flat skin, grey +----------------------------------- */ +.icheckbox_flat-grey, +.iradio_flat-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-grey { + background-position: 0 0; +} + .icheckbox_flat-grey.checked { + background-position: -22px 0; + } + .icheckbox_flat-grey.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-grey.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-grey { + background-position: -88px 0; +} + .iradio_flat-grey.checked { + background-position: -110px 0; + } + .iradio_flat-grey.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-grey.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat-grey, + .iradio_flat-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/flat/grey.png b/public/assets/css/iCheck/flat/grey.png new file mode 100755 index 0000000000000000000000000000000000000000..c6e2873ed5fc2cb1f151c333034ed85422d29a31 GIT binary patch literal 1516 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 DWRxc% literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/flat/orange.css b/public/assets/css/iCheck/flat/orange.css new file mode 100755 index 00000000..8c9c9297 --- /dev/null +++ b/public/assets/css/iCheck/flat/orange.css @@ -0,0 +1,56 @@ +/* iCheck plugin Flat skin, orange +----------------------------------- */ +.icheckbox_flat-orange, +.iradio_flat-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-orange { + background-position: 0 0; +} + .icheckbox_flat-orange.checked { + background-position: -22px 0; + } + .icheckbox_flat-orange.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-orange.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-orange { + background-position: -88px 0; +} + .iradio_flat-orange.checked { + background-position: -110px 0; + } + .iradio_flat-orange.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-orange.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat-orange, + .iradio_flat-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/flat/orange.png b/public/assets/css/iCheck/flat/orange.png new file mode 100755 index 0000000000000000000000000000000000000000..ec2532ebe4492b949f48278fd13b46e792869083 GIT binary patch literal 1518 zcmV zZ)lZe7{~EC)0yRr7N(vhAw^EDES=3E6ea^DrB$==PxcS#O*Ir!B7GAoXpkmJl=e!p zHFawK86nOZMVp#`Q>R(_VpDseiB7_kXZ96-TZfC&dG2=Z=kW}>-~)%l{e01fi|4Q% zz4h41-)_-N#%zp6AGk~#_TWQo?Fbd$Klq;mpWmHTx6kY6JG;%lo=QD41Y=Nye8+AA zt@sfqz=)?VfA@kVcE^O- zH5OxT7g}?5ttPVWc#Q2rcPz$7)s3M9UdFV->c%~G<6(ED5_ZWFSb;JWNSWSCz$_aL zGkh{--BrWRFxVwaq6w?9SXS%3q+K>OymxsD53>tg054-&VRd_X?DmSFn~!BC(27!2 zp%HD;sP{_IYMRT{>R4WHU9~zU4--uH5>}xOEl5a<-dm+JjL=ZadzU5d?8cC5Q-_7< zF7pc-G6bgJUh{;Ugaa9x2kokZvkW;8PrMXdlF9w&mE($45Ai3woXJ*ey2Qy&0EGbmk}1 zEq3hYVItI6_R|U^&>D8>1MPEtcB~?vn7t* zrFa{KxJ$3!ckISZ_b^qfu8kK;)eHA&!ARO4$@=GyW~5$;1fHsfb4 zZ%xqh20Xz=!gU_9EywN}*jeq^ZA-N+ZXH@2{-Wh`tGQwdb$ z;_^yQOv50wV?C-Jme)FDx>Mmg_UvBA?p&rC_P}0@gOAw*O<=cg7rSRL7(S*IuH9Z;>B>5MfOpJS%vBOJTuZ|Y zi?@zXv8=i@)CJ@S;uveb3LYat^Me}RyDYD|Kn%;^WlSrqZllL;W0+mzU3}by)=FKg ziLAR5ySvccjh#_-W7vX4$Z}}VN_jeX>#Ef;$I;-S+n|>BE>8({0ZHO5RN`b%L}#Yp zO_=SIT{Y~~qZ+4> zfa@f5&6jF;@3OqMYi+=A%+Tx8_)AXfy%{>Q9%dr%9>q%3>h(n=<)YrJ)tRGVbXnZ= zUGvl3X7M^Kp!cpc%T4dHv|ah(@eA=Vp?8xwBoTDo?`;nq=oZ5Iv+DnY{jVF&-@VRn Ul15pQMF0Q*07*qoM6N<$f=ns@CIA2c literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/flat/orange@2x.png b/public/assets/css/iCheck/flat/orange@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..9350b50624f9017ba8bb3fc64c526428d0bda407 GIT binary patch literal 3275 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 Ef=5*|pa1{> literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/flat/purple.css b/public/assets/css/iCheck/flat/purple.css new file mode 100755 index 00000000..a9760b36 --- /dev/null +++ b/public/assets/css/iCheck/flat/purple.css @@ -0,0 +1,56 @@ +/* iCheck plugin Flat skin, purple +----------------------------------- */ +.icheckbox_flat-purple, +.iradio_flat-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-purple { + background-position: 0 0; +} + .icheckbox_flat-purple.checked { + background-position: -22px 0; + } + .icheckbox_flat-purple.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-purple.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-purple { + background-position: -88px 0; +} + .iradio_flat-purple.checked { + background-position: -110px 0; + } + .iradio_flat-purple.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-purple.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat-purple, + .iradio_flat-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/flat/purple.png b/public/assets/css/iCheck/flat/purple.png new file mode 100755 index 0000000000000000000000000000000000000000..3699fd583289e37e1eca6be2940f22e0daa5350b GIT binary patch literal 1519 zcmV ze`r;87{~Ft)0x$b2BzL6Aw^EDES=3E6ea^DrB$==NA?3mh-xULMEXytph22sQTm@` zYwFadju2;!qD{@8smoUS$ENm2OLP+6yw+RzI4%!%&X;??=iWQ$ffrm3=e(JRhjZDz z^VXB?zulslhWQwWJK-|j*pCme<3_0T{$V{Qe7vF|qwedAruB5&em$Lf&Tx!J2?`y% z33TEIoB|`By8PQu*`L)?w@NAySEB=muoc_YWenY8-QSG5++TBVZ>j*LG89Ef;v&wW zO_H#aahHAi&+d%{UW#{-$t=TSb923PS>nZJDW1X;8Frh|q=45h%heRH5YJ*I9ti2Q zV-e~@7C7y$;{uOBC5l73UD%D2Cg7#ZPTjN{!_)cAje0RC0l~7j{TL51(ADYOz6&}0e zqwE^Xu`rF+LS3uLT6YpAq|u##N!jYgPzEn!T2Xc59=q|VyHX9iWC^T61&X9X#}Y8h zM#Bv6Oc{68urm^N$&zTrdMuaqI+nD{riS+}PvMbvfs5c}Oe?BxKYv+T(RT~6$^<%5 zjvBO}TUvCi9G#}Q8igs#>#eKSjVZun)4hmwXha7R(xGGPbPgjl)bieCiF>*+8L6LKTY2XxQtoU72#pcPd&Ul({M zs`$-#34u?L?{f;Z*FSY2uwMbI$^<^eVTbk+d}dpY-9mhbKhUMug^t})(>-98ENIz& zG~H6iZULrXkxW5>K5Yr?#`0`=pJRCwyrqq}{<;?|@0UpOmNt;U2nDQhCa@8%W6v#f z?5@OHD8}7-{hnhtZo0?dI`-VSW499J=r84%7}U+x0&lZ7Pj;B)-HSoU^|aww(DGs+ zUJm$@X0T}z~7=8bFd*L(17Rj zaCy(54qI^~CGfNB@=5~fPTw4KlNoel+3MzEfgi_{ENYU#tEk0SsLr?Ll@i>CYuJvT zw7hj;%Nz0p8w1yQ$hI828(?R>W4Alt=^W-B)4k-_JpwxigSxp`;QnY}Q7c&3BxVq( z%E#rEzL<%jTH?*9by!~OsOipt>)3M-ICd9e4gQohSmN0I-E<#@>)3P8I(B!X6@N)9 znq0auWOHsuBMUo5-^2fths$f1cov2z@Q+F}@a_lBhgJP*c!m-EG>}GKvv&);OZo?c5vCHdd6FSV796Rx7 zKwva>nJ+{-)rz`%+ngY?#=)zd{1Uz_d#%*ABHQ7Ca8 zo2zqrMvbdcbop$!r`rbyFcCgxKQy7;0cm#6ViH?C)o2W*+L#G|n z@rJI|WUYG*yHJNNhi(_@bj>y2UGC{Fs0)cHuozX?i_37G%ev+nHSAkl#$7e+G@%x! zk$~$Ybj=rPc<-{jwrg#{D9qODGx%H1=-6zXv)Kf4(LI5+sMqTYNXi8rtJgUvqUf@? z>Kf*^yY1q2SU~SxX_K6HS=w}ddHh_$C->bXj!G7~?)SEjPUsb)`dRh=!T#3^=U)u0 VZ#F@RuLJ-9002ovPDHLkV1fY7`WgTL literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/flat/purple@2x.png b/public/assets/css/iCheck/flat/purple@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..7f4be74a7c08a453802d46e6a7971250ee416f08 GIT binary patch literal 3218 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 Ef)^M{V*mgE literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/flat/red.css b/public/assets/css/iCheck/flat/red.css new file mode 100755 index 00000000..34b71e47 --- /dev/null +++ b/public/assets/css/iCheck/flat/red.css @@ -0,0 +1,56 @@ +/* iCheck plugin Flat skin, red +----------------------------------- */ +.icheckbox_flat-red, +.iradio_flat-red { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(red.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-red { + background-position: 0 0; +} + .icheckbox_flat-red.checked { + background-position: -22px 0; + } + .icheckbox_flat-red.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-red.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-red { + background-position: -88px 0; +} + .iradio_flat-red.checked { + background-position: -110px 0; + } + .iradio_flat-red.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-red.checked.disabled { + background-position: -154px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_flat-red, + .iradio_flat-red { + background-image: url(red@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/flat/red.png b/public/assets/css/iCheck/flat/red.png new file mode 100755 index 0000000000000000000000000000000000000000..0d5ac3819b4d2aee17a543497d3e70699a06f052 GIT binary patch literal 1516 zcmV zZ)jC@9LMpx)0x$b7Ny=LAw^EDES=3E6ea^DrDd~F%l?q~q#6@aB7G7nXpkmJlzS%G znmRTAj1XsyqD{@esnb^aU{ibG5}kxM@9h2HbMJ#McF&J{e)o6>ec=U{!#QuZ!_~-5A0D1Q;bQIEp}P02s!Mm> z1iJ7uPQy(2F2DO}`?Ff=R!IfoYINcdwqTpOjG=q1`x~mu{WbUYrV3Ch!%&1IF5^7f zB?&vByX@0{c2f(y6dxkYEW=`RbG>v~;>Bhup2IUCyDex|z-yP~YR<3_FJdJg3FvfS z5gG#)I7HWJfk&be#R1)J?8ZqG@X}?cZrY7uTIeN%8q<+lUT6)v!yJz#3GbNGfzJ0kdp0 z%<#?>x~qnrQLsyvL>ua`Tu)vQp@YDt5#|XFvWB)V;!2%iG+0O*gBoV2o1HocUj_eH->zhCM-o? zncvWoAutmUnkVEm9L~@@jOTF;sVTwB5p+jmkafQP$KX2l+_+=666F{u<(L%Qjedc*+M6dk%<}HVVBG3y$FWSyi~I3< zhA(M`nC3ya&LPtp>ezh^cIG*D?eB3Ou4A9nMULGuurn^88~FnNfNIRedZcDMUdqGe zJ&Oix!4ah9lR!9?)`ZpRGyD>yP_h2`R`;=YYJaq@=VyInSM;p;;zU0`6Co=@b zV3+wqq)V+_caNJd5Bgztz!DF^9B?iJHBRKZ8^aa&njUB}c8l>ne#Btcu3Uq!NjP=~ z;tjmzxV#DTdV%Scpbe{0hP$Lp$M&JbG;32oqu#x|b!nx$Na8!w9fWz9f;b8#u4D6b zPI}b1o{KJj8%}ro;Q%JV$LxnDusbNr?l}yHkLiMIcR)5>*@%zvzWIu|MuLWGX_#U0 zHu5eOs!Ky%K#n7hiRP=|2@*6vso}lL@~R8OunJzrv~tyL_1JCAW!LxspJmZnt7|op zb@yOj7TtZ=6IC~c?O29TqXw!r;`YisDvpV*w&e;Srk#|pEEgJRu5|VOB#~O9ciClD9Ty+ie z>28~N9Tw1gSK8&4cUjtOK0JOUAtthJ5=SM1uKT_1rxW@F-#@GQ&!Ye9gYz#aOK(=d Sl4{xj0000xky7y@!Zce>mF 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 literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/line/orange.css b/public/assets/css/iCheck/line/orange.css new file mode 100755 index 00000000..210f3340 --- /dev/null +++ b/public/assets/css/iCheck/line/orange.css @@ -0,0 +1,74 @@ +/* iCheck plugin Line skin, orange +----------------------------------- */ +.icheckbox_line-orange, +.iradio_line-orange { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #f70; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-orange .icheck_line-icon, + .iradio_line-orange .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-orange.hover, + .icheckbox_line-orange.checked.hover, + .iradio_line-orange.hover { + background: #FF9233; + } + .icheckbox_line-orange.checked, + .iradio_line-orange.checked { + background: #f70; + } + .icheckbox_line-orange.checked .icheck_line-icon, + .iradio_line-orange.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-orange.disabled, + .iradio_line-orange.disabled { + background: #FFD6B3; + cursor: default; + } + .icheckbox_line-orange.disabled .icheck_line-icon, + .iradio_line-orange.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-orange.checked.disabled, + .iradio_line-orange.checked.disabled { + background: #FFD6B3; + } + .icheckbox_line-orange.checked.disabled .icheck_line-icon, + .iradio_line-orange.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_line-orange .icheck_line-icon, + .iradio_line-orange .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/line/pink.css b/public/assets/css/iCheck/line/pink.css new file mode 100755 index 00000000..44c9cea1 --- /dev/null +++ b/public/assets/css/iCheck/line/pink.css @@ -0,0 +1,74 @@ +/* iCheck plugin Line skin, pink +----------------------------------- */ +.icheckbox_line-pink, +.iradio_line-pink { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #a77a94; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-pink .icheck_line-icon, + .iradio_line-pink .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-pink.hover, + .icheckbox_line-pink.checked.hover, + .iradio_line-pink.hover { + background: #B995A9; + } + .icheckbox_line-pink.checked, + .iradio_line-pink.checked { + background: #a77a94; + } + .icheckbox_line-pink.checked .icheck_line-icon, + .iradio_line-pink.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-pink.disabled, + .iradio_line-pink.disabled { + background: #E0D0DA; + cursor: default; + } + .icheckbox_line-pink.disabled .icheck_line-icon, + .iradio_line-pink.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-pink.checked.disabled, + .iradio_line-pink.checked.disabled { + background: #E0D0DA; + } + .icheckbox_line-pink.checked.disabled .icheck_line-icon, + .iradio_line-pink.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_line-pink .icheck_line-icon, + .iradio_line-pink .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/line/purple.css b/public/assets/css/iCheck/line/purple.css new file mode 100755 index 00000000..be4c4e2b --- /dev/null +++ b/public/assets/css/iCheck/line/purple.css @@ -0,0 +1,74 @@ +/* iCheck plugin Line skin, purple +----------------------------------- */ +.icheckbox_line-purple, +.iradio_line-purple { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #6a5a8c; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-purple .icheck_line-icon, + .iradio_line-purple .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-purple.hover, + .icheckbox_line-purple.checked.hover, + .iradio_line-purple.hover { + background: #8677A7; + } + .icheckbox_line-purple.checked, + .iradio_line-purple.checked { + background: #6a5a8c; + } + .icheckbox_line-purple.checked .icheck_line-icon, + .iradio_line-purple.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-purple.disabled, + .iradio_line-purple.disabled { + background: #D2CCDE; + cursor: default; + } + .icheckbox_line-purple.disabled .icheck_line-icon, + .iradio_line-purple.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-purple.checked.disabled, + .iradio_line-purple.checked.disabled { + background: #D2CCDE; + } + .icheckbox_line-purple.checked.disabled .icheck_line-icon, + .iradio_line-purple.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_line-purple .icheck_line-icon, + .iradio_line-purple .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/line/red.css b/public/assets/css/iCheck/line/red.css new file mode 100755 index 00000000..ebcd8bef --- /dev/null +++ b/public/assets/css/iCheck/line/red.css @@ -0,0 +1,74 @@ +/* iCheck plugin Line skin, red +----------------------------------- */ +.icheckbox_line-red, +.iradio_line-red { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #e56c69; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-red .icheck_line-icon, + .iradio_line-red .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-red.hover, + .icheckbox_line-red.checked.hover, + .iradio_line-red.hover { + background: #E98582; + } + .icheckbox_line-red.checked, + .iradio_line-red.checked { + background: #e56c69; + } + .icheckbox_line-red.checked .icheck_line-icon, + .iradio_line-red.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-red.disabled, + .iradio_line-red.disabled { + background: #F7D3D2; + cursor: default; + } + .icheckbox_line-red.disabled .icheck_line-icon, + .iradio_line-red.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-red.checked.disabled, + .iradio_line-red.checked.disabled { + background: #F7D3D2; + } + .icheckbox_line-red.checked.disabled .icheck_line-icon, + .iradio_line-red.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_line-red .icheck_line-icon, + .iradio_line-red .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/line/yellow.css b/public/assets/css/iCheck/line/yellow.css new file mode 100755 index 00000000..8e088714 --- /dev/null +++ b/public/assets/css/iCheck/line/yellow.css @@ -0,0 +1,74 @@ +/* iCheck plugin Line skin, yellow +----------------------------------- */ +.icheckbox_line-yellow, +.iradio_line-yellow { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #FFC414; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-yellow .icheck_line-icon, + .iradio_line-yellow .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-yellow.hover, + .icheckbox_line-yellow.checked.hover, + .iradio_line-yellow.hover { + background: #FFD34F; + } + .icheckbox_line-yellow.checked, + .iradio_line-yellow.checked { + background: #FFC414; + } + .icheckbox_line-yellow.checked .icheck_line-icon, + .iradio_line-yellow.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-yellow.disabled, + .iradio_line-yellow.disabled { + background: #FFE495; + cursor: default; + } + .icheckbox_line-yellow.disabled .icheck_line-icon, + .iradio_line-yellow.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-yellow.checked.disabled, + .iradio_line-yellow.checked.disabled { + background: #FFE495; + } + .icheckbox_line-yellow.checked.disabled .icheck_line-icon, + .iradio_line-yellow.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_line-yellow .icheck_line-icon, + .iradio_line-yellow .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/minimal/_all.css b/public/assets/css/iCheck/minimal/_all.css new file mode 100755 index 00000000..b2165ecc --- /dev/null +++ b/public/assets/css/iCheck/minimal/_all.css @@ -0,0 +1,557 @@ +/* red */ +.icheckbox_minimal-red, +.iradio_minimal-red { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(red.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-red { + background-position: 0 0; +} + .icheckbox_minimal-red.hover { + background-position: -20px 0; + } + .icheckbox_minimal-red.checked { + background-position: -40px 0; + } + .icheckbox_minimal-red.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-red.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-red { + background-position: -100px 0; +} + .iradio_minimal-red.hover { + background-position: -120px 0; + } + .iradio_minimal-red.checked { + background-position: -140px 0; + } + .iradio_minimal-red.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-red.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 1.5), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-red, + .iradio_minimal-red { + background-image: url(red@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* green */ +.icheckbox_minimal-green, +.iradio_minimal-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-green { + background-position: 0 0; +} + .icheckbox_minimal-green.hover { + background-position: -20px 0; + } + .icheckbox_minimal-green.checked { + background-position: -40px 0; + } + .icheckbox_minimal-green.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-green.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-green { + background-position: -100px 0; +} + .iradio_minimal-green.hover { + background-position: -120px 0; + } + .iradio_minimal-green.checked { + background-position: -140px 0; + } + .iradio_minimal-green.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-green.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 1.5), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-green, + .iradio_minimal-green { + background-image: url(green@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* blue */ +.icheckbox_minimal-blue, +.iradio_minimal-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-blue { + background-position: 0 0; +} + .icheckbox_minimal-blue.hover { + background-position: -20px 0; + } + .icheckbox_minimal-blue.checked { + background-position: -40px 0; + } + .icheckbox_minimal-blue.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-blue.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-blue { + background-position: -100px 0; +} + .iradio_minimal-blue.hover { + background-position: -120px 0; + } + .iradio_minimal-blue.checked { + background-position: -140px 0; + } + .iradio_minimal-blue.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-blue.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-blue, + .iradio_minimal-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* aero */ +.icheckbox_minimal-aero, +.iradio_minimal-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-aero { + background-position: 0 0; +} + .icheckbox_minimal-aero.hover { + background-position: -20px 0; + } + .icheckbox_minimal-aero.checked { + background-position: -40px 0; + } + .icheckbox_minimal-aero.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-aero.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-aero { + background-position: -100px 0; +} + .iradio_minimal-aero.hover { + background-position: -120px 0; + } + .iradio_minimal-aero.checked { + background-position: -140px 0; + } + .iradio_minimal-aero.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-aero.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-aero, + .iradio_minimal-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* grey */ +.icheckbox_minimal-grey, +.iradio_minimal-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-grey { + background-position: 0 0; +} + .icheckbox_minimal-grey.hover { + background-position: -20px 0; + } + .icheckbox_minimal-grey.checked { + background-position: -40px 0; + } + .icheckbox_minimal-grey.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-grey.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-grey { + background-position: -100px 0; +} + .iradio_minimal-grey.hover { + background-position: -120px 0; + } + .iradio_minimal-grey.checked { + background-position: -140px 0; + } + .iradio_minimal-grey.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-grey.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 1.5), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-grey, + .iradio_minimal-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* orange */ +.icheckbox_minimal-orange, +.iradio_minimal-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-orange { + background-position: 0 0; +} + .icheckbox_minimal-orange.hover { + background-position: -20px 0; + } + .icheckbox_minimal-orange.checked { + background-position: -40px 0; + } + .icheckbox_minimal-orange.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-orange.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-orange { + background-position: -100px 0; +} + .iradio_minimal-orange.hover { + background-position: -120px 0; + } + .iradio_minimal-orange.checked { + background-position: -140px 0; + } + .iradio_minimal-orange.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-orange.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 1.5), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-orange, + .iradio_minimal-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* yellow */ +.icheckbox_minimal-yellow, +.iradio_minimal-yellow { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(yellow.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-yellow { + background-position: 0 0; +} + .icheckbox_minimal-yellow.hover { + background-position: -20px 0; + } + .icheckbox_minimal-yellow.checked { + background-position: -40px 0; + } + .icheckbox_minimal-yellow.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-yellow.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-yellow { + background-position: -100px 0; +} + .iradio_minimal-yellow.hover { + background-position: -120px 0; + } + .iradio_minimal-yellow.checked { + background-position: -140px 0; + } + .iradio_minimal-yellow.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-yellow.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 1.5), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-yellow, + .iradio_minimal-yellow { + background-image: url(yellow@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* pink */ +.icheckbox_minimal-pink, +.iradio_minimal-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-pink { + background-position: 0 0; +} + .icheckbox_minimal-pink.hover { + background-position: -20px 0; + } + .icheckbox_minimal-pink.checked { + background-position: -40px 0; + } + .icheckbox_minimal-pink.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-pink.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-pink { + background-position: -100px 0; +} + .iradio_minimal-pink.hover { + background-position: -120px 0; + } + .iradio_minimal-pink.checked { + background-position: -140px 0; + } + .iradio_minimal-pink.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-pink.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 1.5), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-pink, + .iradio_minimal-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* purple */ +.icheckbox_minimal-purple, +.iradio_minimal-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-purple { + background-position: 0 0; +} + .icheckbox_minimal-purple.hover { + background-position: -20px 0; + } + .icheckbox_minimal-purple.checked { + background-position: -40px 0; + } + .icheckbox_minimal-purple.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-purple.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-purple { + background-position: -100px 0; +} + .iradio_minimal-purple.hover { + background-position: -120px 0; + } + .iradio_minimal-purple.checked { + background-position: -140px 0; + } + .iradio_minimal-purple.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-purple.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 1.5), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-purple, + .iradio_minimal-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/minimal/aero.css b/public/assets/css/iCheck/minimal/aero.css new file mode 100755 index 00000000..c97acc8c --- /dev/null +++ b/public/assets/css/iCheck/minimal/aero.css @@ -0,0 +1,62 @@ +/* iCheck plugin Minimal skin, aero +----------------------------------- */ +.icheckbox_minimal-aero, +.iradio_minimal-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-aero { + background-position: 0 0; +} + .icheckbox_minimal-aero.hover { + background-position: -20px 0; + } + .icheckbox_minimal-aero.checked { + background-position: -40px 0; + } + .icheckbox_minimal-aero.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-aero.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-aero { + background-position: -100px 0; +} + .iradio_minimal-aero.hover { + background-position: -120px 0; + } + .iradio_minimal-aero.checked { + background-position: -140px 0; + } + .iradio_minimal-aero.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-aero.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-aero, + .iradio_minimal-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/minimal/aero.png b/public/assets/css/iCheck/minimal/aero.png new file mode 100755 index 0000000000000000000000000000000000000000..dccf7740c9cb727f9c1eeadd6b584eec8634f23e GIT binary patch literal 1151 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 literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/minimal/blue.css b/public/assets/css/iCheck/minimal/blue.css new file mode 100755 index 00000000..42477cd6 --- /dev/null +++ b/public/assets/css/iCheck/minimal/blue.css @@ -0,0 +1,62 @@ +/* iCheck plugin Minimal skin, blue +----------------------------------- */ +.icheckbox_minimal-blue, +.iradio_minimal-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-blue { + background-position: 0 0; +} + .icheckbox_minimal-blue.hover { + background-position: -20px 0; + } + .icheckbox_minimal-blue.checked { + background-position: -40px 0; + } + .icheckbox_minimal-blue.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-blue.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-blue { + background-position: -100px 0; +} + .iradio_minimal-blue.hover { + background-position: -120px 0; + } + .iradio_minimal-blue.checked { + background-position: -140px 0; + } + .iradio_minimal-blue.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-blue.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-blue, + .iradio_minimal-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/minimal/blue.png b/public/assets/css/iCheck/minimal/blue.png new file mode 100755 index 0000000000000000000000000000000000000000..af04cee596d5d2f884b03f9d8f0dd25c1cd5a0fa GIT binary patch literal 1132 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 Q$N&HU07*qoM6N<$f*_*2MgRZ+ literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/minimal/green.css b/public/assets/css/iCheck/minimal/green.css new file mode 100755 index 00000000..bd1e3d0f --- /dev/null +++ b/public/assets/css/iCheck/minimal/green.css @@ -0,0 +1,62 @@ +/* iCheck plugin Minimal skin, green +----------------------------------- */ +.icheckbox_minimal-green, +.iradio_minimal-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-green { + background-position: 0 0; +} + .icheckbox_minimal-green.hover { + background-position: -20px 0; + } + .icheckbox_minimal-green.checked { + background-position: -40px 0; + } + .icheckbox_minimal-green.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-green.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-green { + background-position: -100px 0; +} + .iradio_minimal-green.hover { + background-position: -120px 0; + } + .iradio_minimal-green.checked { + background-position: -140px 0; + } + .iradio_minimal-green.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-green.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 1.5), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-green, + .iradio_minimal-green { + background-image: url(green@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/minimal/green.png b/public/assets/css/iCheck/minimal/green.png new file mode 100755 index 0000000000000000000000000000000000000000..9171ebc7e456848eee4440b1e9975282f62fe03d GIT binary patch literal 1143 zcmV--1c>{IP)VcOZuC z(Z^km5{SLDNt`DBrcmj_0Gd;{rv_2Fx)5yM2O257y17aJ+{y)B}`je1K2>!HAD=h>zE0-mk}1AFs=- zs|SQ*jgKke>tmhxcwJ_ltxwy(0{oL3C)Z7Jc``LLlj8*(BN$caYE)f#07um^qdrRU zK^3~1iQEP8(Z^An`g-qy_|&oey$~P4s6wEx_a2CkV=a7|{-rh`c{m()^Kgq`EJe^R z!cBE74%x&9p?!ozeDu??t&g?h^Bk+a5Ffz^?PIO@aA*$AFOElm&pm@rY{`k5J))8l;D*`2`{0PfbR}W z!&WG&*SE4-U)C?NTvIr>hIWz+i76bKNizg(ivrp(lz{KJkKlB6>&yOU5I5Oym_rgR z9KtWlo1=sFzTB7bfC#Az$NDFS@C}A73fKW(6Ywqg2x?iaFRKC3Ool|mA(O%8eZ?o3 zuqb03J|y6~3Nz4A%)ozHtuM=W(w&q}4heyFa+rAn_qbOuyN++NHo+;l-0y=~=tjJs zBtBDp>f5S|ilBQufj)XR8}*wkjtT9YK3QgRuzHLwxkuwXKh};`1D< zeG(rNA+(RR;=`fw+4WBXlJ!ZF=8!~1J@tABo)VG@=+09C&cicxOv6VhKBz!J6O00g zk8m_>>g&A+;^WwcPoKm`NGed!1fu}r<5&xyrhi%b45EG)vY{X(b@jyTJY3-QoVtnC zhC$c~<8TIk!al>}?sX6!cs{}q=p!7>IO|iv3Yxfef+0R$8+{xTt55g1y9=>wf7{22 ziTin|1bo4hgkbDdIRn-I!JINUhvW3A37lZ0M|^079o&#HgD zUlb0+^oznoCI^k*=)W7WIv)gKBeze!#R~dGq2mVrqsYn0x8ILOB``|uWn2IN002ov JPDHLkV1hWAFZBQb literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/minimal/green@2x.png b/public/assets/css/iCheck/minimal/green@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..7f18f96a9c30c6b2d8b726019939ec908a9067cb GIT binary patch literal 1408 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 literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/minimal/minimal@2x.png b/public/assets/css/iCheck/minimal/minimal@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..d62291daaa78d173897d6a713e5cf26321e70cf2 GIT binary patch literal 1410 zcmV-|1%3L7P)l000F^NklC7#7>40~P-}&PHl_&)QBtv`NW=pMOKCMhnxI9OR;=3w7Sf7r)Q#Ac(ggL`Y62KF zCejG*q!`kQ3yVz?)M5}?e%gp3A?*UCEtWRT=e>9rZXlhUGV`6DXOb)5ip-t2G?NJv zq6-%;#CgeDQCV48UKB-nwi4GD$8p}pix-pGXY;#${d!{iii?XA-^a3_vGXd$R@7iM zR$z$*jNwn5M-NV5*fo%!FCRjqD3N{t`~65{pZ$I$w$J|lSz|)`Y~@2sBr^+9k6oxj zben(&&3e3w7`BEP zq_7#=u*tlGCUiRl1npCw`tqSA;;s;B?680#?89M<-zH$h^x*)CupMus0$n(W*D)Eg zPkrjs0TMuYdAYX${{2b=52FN~*nmmw#YdQO3>e2}_zJtxf*n|gZ5T~*pZe6dz&Tw+ zhsRIYfFV?&6;l}mOraH37{UhIqa}%Y#qf* zn6y1>lhCI=_2~c+akl^;TR;nb^AOOF77J*@!jOIHQ=eX8Wv4iJf#&xzR^u}Edu-p2 zMpU349rLx1*Nd6FM)Wj4{d{!;5pnmLefMG7W56_8tzlQ_KJ}?j2Z%qh(QB*ho?j_8 zVH}6ydwp$tSK*Ny>MKAqdNF2t(TsvHeVU&R5D_=eAwnl60t8H;(;BwsNZ)ewA&reF zG8>UbAC~*?)BJRR_!pb(ym@GT)%HD!K#RStB?tNna15zC1fDPd5+|H)Hl) z8mz$f#&{0&{pt{K)^DHYmwg9_UKd3s%+mb+vhPZSS++N>{TRmI7VrQ{k-}!YfFcVRL=(D_(5F82xgH=f z61UW+zJ%+-8q}i+8?oKYX7!>S-(V&wed<%6ZXhCl%%H=R;(64d0uN)U1>C?D44?ny;)Th4uq`w4GpZc=QFg`W&x=(%Ti{dzTXcG|;@%;)*L_~Ceh=_>Rf8mTFRg-4= Q7ytkO07*qoM6N<$f-B6VcmMzZ literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/minimal/orange.css b/public/assets/css/iCheck/minimal/orange.css new file mode 100755 index 00000000..842e400a --- /dev/null +++ b/public/assets/css/iCheck/minimal/orange.css @@ -0,0 +1,62 @@ +/* iCheck plugin Minimal skin, orange +----------------------------------- */ +.icheckbox_minimal-orange, +.iradio_minimal-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-orange { + background-position: 0 0; +} + .icheckbox_minimal-orange.hover { + background-position: -20px 0; + } + .icheckbox_minimal-orange.checked { + background-position: -40px 0; + } + .icheckbox_minimal-orange.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-orange.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-orange { + background-position: -100px 0; +} + .iradio_minimal-orange.hover { + background-position: -120px 0; + } + .iradio_minimal-orange.checked { + background-position: -140px 0; + } + .iradio_minimal-orange.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-orange.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 1.5), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-orange, + .iradio_minimal-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/minimal/orange.png b/public/assets/css/iCheck/minimal/orange.png new file mode 100755 index 0000000000000000000000000000000000000000..f2a314978df05edbfe0da6ab1e51f81070079b44 GIT binary patch literal 1139 zcmV-(1dRKMP)ZO!m-Q8E|KVCp7wFxVqT~(wSQBvH%BDo1XpKv4g1dV0L~DM4h&LM1Gouasx`9- zO6`LV*nP1afbm6QHl)7cHPAk_cDxtbM=&~I^$o9q_OaH}=kDKR2c!yz;IIPM2*wi+ z?JE4L*5c4Z`yjh7mc|ze5n3N}wQuAwz0f{_k=e&w?Ze^l`S-8rfK=hIGY5yE1HR*y zT00l!t9)e*hztlvkvoI?y5Tf*^*x6l1L(r(aUb~mVyS)3`XW(-8?X)U)Ol@e7qR;E zJ%R_U$?T)|HMjxW@J^lAZ2c?q4kEq7QG7^DINUVhQ9ua~p;>_MH@E~JL0z3+D{Fma zzXy@daKus+9}@F#kLMoKuoY0i7EBl5JDVW*y1ez3{~kmZ8xD6!yuxAlFYw`LE!UW_nRy@2w%aE<33mdKVKxY&skqAcQ{;D z*q-rNee`U}_nR!%WcJ}stPh8!f91Xh5sq*a9+H4}wI0L2&<5Y}ty;Sp>Z^R^zXuVn za1UiC~2igbkeUY&HV!57YeJWVC9k)j?w2yPAk2Sga(q4C$kjwbcK0cVdUkNF| zXWvN(#tF6kpMpy;4Lk5BJclc=nz85Wkj)oMnP+{>P4StXgkEOyF*mC(sDHy>6duUw z7lj{i=P=Ot{r6wcLuT15Z=002ovPDHLk FV1hHXFjD{k literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/minimal/orange@2x.png b/public/assets/css/iCheck/minimal/orange@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..68c835915ac81a16716bd7b0c5d83c81a8d5840e GIT binary patch literal 1407 zcmV-_1%UdAP)l000F>Nkl!D`KdY5xdv zq@CrAF|&haV_-GI{Ilssh9KL4rPJnQJbe$YgHA@?Y~J_%?)_cx;W?7~%QeT%0}qW+c#&^?fivhtI|kr1{Cs&ZJCZ2-{`310WuN_iMB8V7|Ew|6KAS8wA`>$mwb+76B;y3! zZ8Koin)TcgOAX86j{EzlG1K(mHPN51tn5^kR6;5HHoi!u2 zKJ}?j7l??vCal1Dti@$a_FTp@IB#b)#nh)h^|@alqBjriZyo9|f?5pXPR$Tr#E6}_ zE`~n!sZSS(h`VX{&;lCqtA~IdG+ID2rpMN&KJ{gxiCc=Wqy4>vMYw=H@HKl-hYHl9 zb*lF9_2NXnM)b5l{e1NXBI52fd+x$5_?lbTZ4FyO_o+{Px+n6-(Pj3cQ0`V_3`T6Fd{Z-lX7y=DvTT21-72z;)7;kcD!`*)Sv_D-SB5oGj^CUve zZ}xn&0Qxo~hyR<$u_^5Sw7)F;j=ly;Cit~b0)M0ZJz&oZ2sP*JIlln z?N4tYB5r2c^D4rOosE(L=v(Fxu+(p#_7~9`h~7l>=Ar$`gxrG1(f;%XBI4$nJ!d1# z*x48^fWBWG0#5nu)Bf`B0@2q+i3u~>-=FqefG}fc<6;5ywK@c}`t8&Hbb*MtIc?7+ z2s3szelLK&7M#4zFN0eA_Gy2*K>SI}g#Ua{+Fz$V*CNc=**IPReK%2q9*j39QH`5^ z`?Nn@AR=zsk)j$i;d^GH+8Wvmr0)_|U>i>0x;cSucoLWV_i2BAzrvFI|5`}<>&H*1 z!ba?e&v_ZMtf9Yv`bN=YBI(oqbb*Mt`v_Hd6JL1zeDp5tu!g-;xsQL6UHgl?PoMFI zl^A_(m4Ev?h_hIL?eI0*vB1tg7`jh=>eB@x;%*G}7SMp4hkzU!EMP0fLiedpeY!xx zOH6*fd1!w}@j33nA(Y}yO(_o9S)ZXJratwlPZx-YyDjL(!}uO^G1)U0N9~Mm)Q9d< zpZemzK=dXe@$c^jUcfm#hU3U#vL=U4EWtTD>qe}7>Qi49nn`3|lgQLHgr{)?PoN8p zcn_msoE6~>yn|x=jA{(U+^0VE=?z50-5{RAJ{03!oIxFCIt0u>9Zq8>im?x?F&KNF z`qY<&M#SAe*o<$`jD^^b_i-3Mpa%o^%L4908FE;I=TTw-=TMK182Z$wKGzE*MRcP+ z^+m1&i&2Yuti%R$JJW@|_!?ue^r=sMdIJ&hV+^gP49{UTD)1m?TfkLZ#94IWI}GG& zpZe67MS^HYed^0I1NhiX=|1(TFGhaV5fRY^A|fK1e*s#49%*Q=;9LLz N002ovPDHLkV1lNixX}Or literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/minimal/pink.css b/public/assets/css/iCheck/minimal/pink.css new file mode 100755 index 00000000..10ace218 --- /dev/null +++ b/public/assets/css/iCheck/minimal/pink.css @@ -0,0 +1,62 @@ +/* iCheck plugin Minimal skin, pink +----------------------------------- */ +.icheckbox_minimal-pink, +.iradio_minimal-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-pink { + background-position: 0 0; +} + .icheckbox_minimal-pink.hover { + background-position: -20px 0; + } + .icheckbox_minimal-pink.checked { + background-position: -40px 0; + } + .icheckbox_minimal-pink.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-pink.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-pink { + background-position: -100px 0; +} + .iradio_minimal-pink.hover { + background-position: -120px 0; + } + .iradio_minimal-pink.checked { + background-position: -140px 0; + } + .iradio_minimal-pink.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-pink.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 1.5), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-pink, + .iradio_minimal-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/minimal/pink.png b/public/assets/css/iCheck/minimal/pink.png new file mode 100755 index 0000000000000000000000000000000000000000..660553c07409fce4efbc979a4985aa2eb6cf9de7 GIT binary patch literal 1150 zcmV-^1cCdBP)CninA;vEhrPvJgn`_>Eei{YLg;J!Kt%9+BJ3tC$lhc%N7=(>P{x)44}O8( zLo_N3>cxLxh79DOqOhO?ix&q%`%F{3lF&6(oodqEIt35ip{pKV-tHeYkZx~%eLWmY zVO0O=dP*QZN4)OEYHGe}wHnpe>-AFcRVtPAeVWnjcBeTUg=yHU1h3&4Jb0wOR@YH>p zx~Dia;74e}zp$YM`(PI8@E=@&j-dcMUu`Aw(OdDk)W^KYM^HM3K3Msf7y0PB$>-d^ zaTtvpLO6a?yTfI;$-}j|P0${|yt)d<3z&nJM!CfYk&h5;@evO3aX!cOR$BFOKF7S4 zCLCLQJp8df=82ETgn2Gcb`AZ`@eqy^jE00Go=vz0$JCms7^V22 z0eWBHZ-V&fCorYhxx!-KeHoVF1AJ8HWnKS@yn}?MaO5#05)L!d@W`QrRhZ7ecNG?30xIf!sp$2U zpok+hh9mI3JcLC4w*SA!By2boumO`9_)f$K&K14B5)^fW*@wd%68mrnpTT7}EW7(g zzJdot$Xz(BcMd)8V4p()Kf&7!e79o+&7#&<)PQ&(BS+zohu`J8;uXv~lyLxFX5jk^ z>d;fv;ZjlSEAkHFnZl9BkVrVp+=Vl|p0Q^K1?+*daA&&@lKW~a;v zV2#$tZkxD1)>!-Ke;*cMLa_*aQ~$=Hh{J)_M(uTVd+)OR7V$dzvlLef%i%-(`O zIKRnp6*iy@Kf?hy5C6ljhS%L&AU=qEghB5M{7#znsbJ}L+!nzQALm9NYf|+Md)+;R zRK{-mxG`zJ5|V*WzmpJ*U)1)02o_)x`tSyx!=JEb+4BzA`2s&ovp(h;eT1Y#FRgsc zwe>mmZ}3IoSV~_M?&i)R(D?8DyAikh5%}MA{|Jx>;=U;K!cZ5)5hF(93y;7Qi|9&h QIRF3v07*qoM6N<$f*O)Mf&c&j literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/minimal/pink@2x.png b/public/assets/css/iCheck/minimal/pink@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..7d7b385146c633079799de2d61c49a8562e15d61 GIT binary patch literal 1409 zcmV-{1%CR8P)l000F@Nkl-QtdKKuQMw$J|lS!1MqHW_F{re`i{u@zNF z<7RWeS%sI7LqB$7Kc@1jPkrjkz{U;@Cx@Gi$3FF`&)r6}qrw8l(T&3x#0dVjfO}Df zEY@Q))|$7_gkCsIxIXo%F9VH;yF#>~!2*V{1N$(Jo6V>hKnF^&1#hAPJ=lX+a6M$7 z`qZZjB!KewhP(v~y;iP;hf#_yRN^|e<3miqWybL-zC;UJ(SViMjIo&e)Th2Va2pX_ z9zUWI!>GbeOiUwS0y|NKVN}`~r6K#&r#@XEvro?WAMLLQ-(o3_qZ)&lsTo8yj$^5v zRTNvF`qZZjM8sViR^u!-;38&vF5)SiwX@n{>QkTk+%FK(n}_zd5%su^T8!dO%^04y zv+A)ihCcPFPZx-YyE*vC0$TB_hk!w}T0lGI#@44k^<|)mTMl7I`+EV)a1OiRYj&X? z6{tn$Z0+Og#p!&F=xKlY`RWZs#NEsG+<{5>nn~=mhOMFd)TcgOApYcxzP8Hm{gq)Y z#<35+=PNtA3J)cyuK>;H#}(6$W)y_!)BbdUh`4zgX>{Q#e9u*MS;MA;^ew^w+OP&C zW)0dffJOfMv_D-S{^d-5zIkYW)%HA$K*QPAl7PMf97OgO0aodIJ%0GtZuv5oYXclq8^Ul|#TvzkS+YL~kH^6VaQ8_9xRa36G=w=?z50%@upj zN0_m*F`j_FUmOCC`|Z>I^6vuC*F|X)X0*RQ?YRVD#?Hq11oU+}1a$iC)BbdUh`2dn z&lLzWb~b)bKwk%r-R74;9e(??KV2aHq|LPdd{Ek7pFKAq%-GpDl7PM&*o?tj1RO&R zZusrf{&azexH*IzYETT{Q;ZsGIFyjS3s{X79K}_06fJlH7yS2We}2EhlKlT#Nc$Vc zPpC#6_QL19hQkRC5D|A@|k}p&O5* zAFX&F6JVSb;8nbhLi~&xjK$oiKK1DhM8w@Fp2Qv$;vJksJ&GLyicpUeco&7(gLN2< zy-$7W%RnRI?*C}SH)zLF?8OH-h#xSB5&UHV_n{0~tjDt`v4GQPLQf2R>QkTV1(HK_ zqdxUTt_RCeizckW7IQn(kKOnhQ?c}^Pknj=5%FURou&-WU>z#(Am&@ZWt_(;^x->< zQi4jm&>IzA|ev+e`zZsBDz3CL`3rsArl=T)dQYv P00000NkvXXu0mjf#dyTk literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/minimal/purple.css b/public/assets/css/iCheck/minimal/purple.css new file mode 100755 index 00000000..1c5dcbc7 --- /dev/null +++ b/public/assets/css/iCheck/minimal/purple.css @@ -0,0 +1,62 @@ +/* iCheck plugin Minimal skin, purple +----------------------------------- */ +.icheckbox_minimal-purple, +.iradio_minimal-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-purple { + background-position: 0 0; +} + .icheckbox_minimal-purple.hover { + background-position: -20px 0; + } + .icheckbox_minimal-purple.checked { + background-position: -40px 0; + } + .icheckbox_minimal-purple.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-purple.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-purple { + background-position: -100px 0; +} + .iradio_minimal-purple.hover { + background-position: -120px 0; + } + .iradio_minimal-purple.checked { + background-position: -140px 0; + } + .iradio_minimal-purple.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-purple.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 1.5), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-purple, + .iradio_minimal-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/minimal/purple.png b/public/assets/css/iCheck/minimal/purple.png new file mode 100755 index 0000000000000000000000000000000000000000..48dec794dd5be9f8209e4392edacd345a1a42c24 GIT binary patch literal 1132 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 literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/minimal/red@2x.png b/public/assets/css/iCheck/minimal/red@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..2eb55a65c7ea2f94073905c81396627b4967352f GIT binary patch literal 1410 zcmV-|1%3L7P)l000F^Nkl@_yje*q+)6GBc$Pi>Zuyoqo7;oQ$>!6d7H}Aaf``z=q;KOqy_m^vqn+F~= zb?)4`Tv1$;TC`|U(V1r#6xl@AxAdEA(fRY|Jsn6X8w4l-ghH(_f(Tf56Z2|Y7 z0vW8sCaf`Uq5;R?FyZ>tr@k~aBJN7ijI9=s#cmwL@B{&arU&~_ip_WfmFUENyo`~M zed<%6E|37mUft*|V8**0T6h@cXvZpyU>82XC|qV3pWq8Lq6u5E0-G=tbD#RuHw|th zqRZn)tU?ym*n`nL0!Fb1)yQI%olzdLPkrjs1v2&IjQ`R8X5w2c#%a``7n3!;sKIG0 zwzFo&)~7!8=>idP*NoM;fc3b7$(}2C0vGJ8=9v1_r#|-!MD*sN{cS)!Mo@=A+^HGD za~QERH^k7VKK1DW5pg#SA6h^Ye)SO0izW+b!SvYr)Th2QG;zxz>}Y?_V+k%|FMQ2j z)T0u0Xq&2ie7%^@*NC3>r=PFhKt$ZVWY66ggRdFG9&6Yhx=(%T(*@#B&gg5a!ros6 z)?gS1;d{Qcv#YTnL4C#8fo@zk-PnQRFn!veE)WqnPa=hO+<@=7fp%-yn2^4C=s`28 zP-?2sj2_JM->3cQ0`V_r3iHiF`>V0%aReI9ww46+72^mpm}oL+$6bE=v_D-SB5s!1 z^AtkOZ}wc8fWB?W;Q!`fYz@0V?Jo_#qpyKdd44UFg1^!J?ziVfgqjQXoS%TcEe-)& z(BiL8`_mhUh@08=yoNAiXQMO$eJdRTR`~7H{vvt<(VK|gJhVT_%NRV4_NO-x5jWTE zIR|0J&c<*8`hIZ;IPJGj`zyQ)L|+%BOqkLB{@i1tQ|+ zj6Ihl%-GrZJpq0DaOyU{4BF?nPy5pa;!n!t{pW+y{<`eB9%07L#)$;<-NGjHVxl>P zTHNy6r~T;y5pmOj9BMHOzGoI{t)U|!eV4HsjW~%L<|G>NC@%Z&)BgN^g(ZdmwUG9g z#ZRcg794=jc>%MnA)BDSQ8b%K`m{e?AR_KQLJeNS=N>;Foq^Y_p>-Ptg2iR^0v`qZa45D`Dd(Pk>}6xN~=4`7Z3T*D>wp$p$( zpiukNr@k~&h<4Pcz5+9VkIj_sQ=j@$xm>PDBO)U4{+G5QBBBdKL_{?I0;Cuo&3X(# Q1ONa407*qoM6N<$f|jt+4*&oF literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/minimal/yellow.css b/public/assets/css/iCheck/minimal/yellow.css new file mode 100755 index 00000000..2c384231 --- /dev/null +++ b/public/assets/css/iCheck/minimal/yellow.css @@ -0,0 +1,62 @@ +/* iCheck plugin Minimal skin, yellow +----------------------------------- */ +.icheckbox_minimal-yellow, +.iradio_minimal-yellow { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(yellow.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-yellow { + background-position: 0 0; +} + .icheckbox_minimal-yellow.hover { + background-position: -20px 0; + } + .icheckbox_minimal-yellow.checked { + background-position: -40px 0; + } + .icheckbox_minimal-yellow.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-yellow.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-yellow { + background-position: -100px 0; +} + .iradio_minimal-yellow.hover { + background-position: -120px 0; + } + .iradio_minimal-yellow.checked { + background-position: -140px 0; + } + .iradio_minimal-yellow.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-yellow.checked.disabled { + background-position: -180px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 1.5), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_minimal-yellow, + .iradio_minimal-yellow { + background-image: url(yellow@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/minimal/yellow.png b/public/assets/css/iCheck/minimal/yellow.png new file mode 100755 index 0000000000000000000000000000000000000000..0999b7ecdcea2d0ef81d0810037cebbc6d143217 GIT binary patch literal 1135 zcmV-#1d#iQP)83a%uQiDc#BG4mfZU$!a@=u_h>{!P;qy&;2%WTn{3vj>_HP@Bn;#rD(Dx8 zMukDW2z^dSAO~GsScn7SMPaCYW-O{m)7{lYHR-*@t&F9^} z5vaxhLO6a_yTd#zu>*D^g0&vZTTtP612fQ0Q10+S*ZhMqKEk1WoX>E*omYLF&oHl@ z5RM%_c8ORY^R$oi8Rq%=Qu{Xydvk{uKKK3&T0p9B7$#vqG{JS;S8FHz ze3h@P0g)czC~{}8UpLG`OW$+2(S;VwMt$J!3#9g0>kCBFQs=eEE|Tce_XrNK zCbN&;*WfN}!zXoKv-Gc&JBV}+NAV#s;jl9S&pb+4fr$cqx8W)rgt|JvRo42-eh(t8 z;RvKCJ|yOEhwnW`Vaua{Ef_7pcP>WoOL^-n|2>E-HXQblIEBOT)$_~In!m5|?UkGK z!3&4`&JpD!jCmAr1pX<&_aH{lDr#Ka_zXuVPa1vC3 zp9x6WcalL4i7V=<*HiF_kjz2a>og3P;jvn?7NgWYn1f_rD2BoK0=ec>U+)@dA8XfQ z`lNk?WDXL2y=$O-to86&`d5~F5cRu|SQ@Yw2O(*zCuW!73g=54S6~Zja1^HCSNIIa zEswjmLHpplFBHkXK(6Omp9)sej@u>}+Q+%o$C_MyX^*>0$Yt!dj~6EIM?wnqMRyW{ zaZGLhC*dlL!Z-K;ui-kZX6*SoWb*}5=2;(eQ+#G8p_iF_%+2ca>R;~{g+n?0qHq^? z4g-z<(SJAM_j&~K2kxHv6f5Z$g+j`t231s4<9|-I70su7lD+@{002ovPDHLkV1ns# BDx&}Z literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/minimal/yellow@2x.png b/public/assets/css/iCheck/minimal/yellow@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..c16f2b7dc5e975766863f9d98034c34f9eb24fe7 GIT binary patch literal 1406 zcmV-^1%djBP)l000F=Nkluv)V~jfx;g z+F8z!nH@A61Fae6pKWer2(lembF(=aPv3*({SG+c$Ua-01rl`yD$^IW}Mo7GnYC zSilYZfeUEIarDD!`2F%=&LmOx{pa6DlzsN^BicUu`)7@j_Ss~i5t*EssKYi?BbgxJ zL9-mMB1H%G;V{PYsZV|C%fiME4JX9}T|aq&8W11VI0FrbfF)ATfqG&M-FST z5v$ERXut_LOt?PvsV@tSh`VAmVT%RyVK)w8c!Gcd(~12k!6v+oO0?ksUdL$2KJ}?j z7f1jVLyvh2=qc^i!ow&-E2=PxUHAxNaG7CzhOe*#jo5-^*oeWH`_!kt8E_jBT^>K7 z3Vo=?9*j*QU<`XujXqS_8D$~+)TcgOAk$B3{EzlG3*TW8&Y=cfn5yYQ4bEYaoi!`A zKJ}?j7l??vCagp+*5MkadamJF^x9cXG4-iWeeM^C=*>g>TaS8-q7DPNTQi84FluM6 zkD*U}>eB@x;%){$wtzLH*DjTX?1nX&b$PkmWv;+7)pXn!wbF)m{-e9d0eqY`y! znXY|&y*Qb#5k2iszhAw9h`4*rp1W}yzUDUeSi`o^ed<%6E)aiGqpz*FsR6HQo!60-_T z=)`>gecGQc5dTt>pKl)8UyVIaBG7QQwG=>K5so5U3_`i7)Tf**7`^&=b=xd;4l3xoY@Hg7uL-xFkP}6JA1qINz*&$#vn*H@@ ze|iHEaWluBLkKf=HcAShZ@ELjGQWM=Uqo*pdK1x`hxR9vavL5;`_mhUh?^VsEJc{H zvoTx%eZM#aob%hK{pH^UqOXe*6K1r(Kkc~?VaCqJl>+E%aR_Mf+o%2M0uga@-kwVl zX6$VIUI2ajarO?s4BGFvPy5pa;!k2G{pW+y{@U%i4q?X5#;F46yM>MD!bEcxwYcTC zPy5paBI4#aQq*ELe9vsuTEp=I>AQ-R*n!g+F{kZkPvNTnKJCx%S6Gt&Ukhn}efSwQ z*o=elIj>-jHS`rw-x!)qBz@YSE)WrSpP&YB;!BU8kKTi~tYP1D?&~S-*8U>z(`US4 zB}QLc<=_4e<02MfCw$FLEVQ!^hwf9K`gDPaxEn`<1?)o3LqHC@EMPmvL-(mqeY!xx zOH6*fd1!wp@CEL}5tQL>O&N~ZS)ZdVratwlPZx-YyKU&iqxb>yFx4{;C+v()G=%O` zpZemzK=dXe@$c^@Uc@Clfm6s~swRhaEX5@|>t?Kd>Qi49nki&olgRWnh-YvNE6{;P ze1I`9&Wi8`-bFFapcaEM_o+{PdIJ%0H-M*c0L6F@7f_Gc4gs@JkMnpR#W;X97>K=3 zed^0XBjWBKY{j=|#v&ZVhd7EK(S?5eWdRSM967AT3n;OGOK3n_41MZTpX&vZBDztZ z`XbkcC8$FKR$-I5lj*=de1q{=`qZaBy@81MF^(2fj_0ukm3SDX7BGY>xQKRqkN$k^ zQ=j^>ND%F)Pkni&AD^0O-KReFC25*wG$JAr?|*44A|kp#L_|dMFA?1xzbBdu1ONa4 M07*qoM6N<$g4YDGqyPW_ literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/polaris/polaris.css b/public/assets/css/iCheck/polaris/polaris.css new file mode 100755 index 00000000..1cb4bcc0 --- /dev/null +++ b/public/assets/css/iCheck/polaris/polaris.css @@ -0,0 +1,62 @@ +/* iCheck plugin Polaris skin +----------------------------------- */ +.icheckbox_polaris, +.iradio_polaris { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 29px; + height: 29px; + background: url(polaris.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_polaris { + background-position: 0 0; +} + .icheckbox_polaris.hover { + background-position: -31px 0; + } + .icheckbox_polaris.checked { + background-position: -62px 0; + } + .icheckbox_polaris.disabled { + background-position: -93px 0; + cursor: default; + } + .icheckbox_polaris.checked.disabled { + background-position: -124px 0; + } + +.iradio_polaris { + background-position: -155px 0; +} + .iradio_polaris.hover { + background-position: -186px 0; + } + .iradio_polaris.checked { + background-position: -217px 0; + } + .iradio_polaris.disabled { + background-position: -248px 0; + cursor: default; + } + .iradio_polaris.checked.disabled { + background-position: -279px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_polaris, + .iradio_polaris { + background-image: url(polaris@2x.png); + -webkit-background-size: 310px 31px; + background-size: 310px 31px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/polaris/polaris.png b/public/assets/css/iCheck/polaris/polaris.png new file mode 100755 index 0000000000000000000000000000000000000000..60c14e6a88f4cc5626d63052f95f5ed87eae5ff1 GIT binary patch literal 6401 zcmV+c8UE&pP)2_+QmV{Skwp@b4jNNk~m5=tnM3r|B)RrPO%pLJ1|5Fk%ZOl%k>{MvJ|XoTh0C#j-3#*L9iimhm3jwykt^bp^s#tDX!N zea`txF6{T(*Jmor$n(z5&OrEOWo4{K);m+yxjgqq*%#!?m1kH&YwU3wjaBP3>mTr7^P@y7n^tzfVe!D$A)3pct=gxt}+|%&;r>x z`PpZ$bSx|N;p){j1n9?ZFQG}|isk3$&&p&nmjibw-YFj#Dd>6No<#nBl*x#DaxF!g zqJG6zoSSew9a;u$fgV8qACXTc?8@=*Uy@ubFE4Kv>h}s<8;YzrQrGTSEaut`-^zHN z5qOACvWP%X=i`Af0`*#qyeLuw5S_Txm`>i&=rG^8mBpVxc zyV%Xm&1N6ZqTK^0HW)PuHyJR-#*Mb80v#1{k#kpZszFEb*blh`BsEH90PK1SeW+g*H-iPOWBv6Sxed9*M#s`?H|va~oozR+(J$ws+;;rPb87dXL4(GE zJf=W3h)sO7gC!!RLJ-X)5YFWwpCjGf-DhRglnWU(YSdWRJO!$wO)cT~DPltkkv|Do zm!sT~hK7c-L5HFwHUkxE&`_jicJJL+1i_vhd3>ghG|K1rA@p8vTK>RVBvxMmVs;cE zxJPf<`h#Ebz%MrK2A&DEXm_@~-eXUgt`YyHA3tde?T7nF3rvbsgu>-#M2-o^6OEa=J-%zIMk31|7WEEMM9SV)b09dj1hE7X8jFfG@LZMnUP8%w9~n(Wa)4;S3ktYsEoLDF4}C1-qXn@Hc4(g zhp0M)rJD1$Wh(Uv>Ordmi8#-^;uwiY9MB-4;NKKMjY-`msg+JW*7mie1 zY^3JN`czR(qSg8JYwve`>z1YI<#TQWsXdJQP6A+kz({Q>>U19KA8L$WFlX?hd%wJ* zWc-*J7#o(D$z(^{M>Pj`{N$-EHSg_jCE=j_+`)qfw?YmF!5%km+!)mPWoY*leGkVO zMru%!7TJu%qCz9^FSZH8xXaL1-N|IK7T0}aj~zR942bfwf`Wn!ZI4f$oUd0_&T>ji z$H2k!olGXFw6@k6+qWOI&zwox5MtxLp0g0&tD?fGNN#j=rWrBr&A_ouDkRN3D%l>u zuHx7f_XiT|I+jo>%Or_gM$Od#gKI% zv03iZ>%OtjUO4Tx-HEfRoi>z+0oSidJiqVOZ~R2u({Ft+6eqEu2VYJ(wqLu64FaKaySUD$J~i4}xpERFeQ0Ozd+;52OkAqH zV#New;>7tDh#sED-bXPS8xPjqci%2yv)$kP+7(w^k%u;3B70~m(Hrq7{nC4Rc_N1I;H+gkNB0Z?H- zEv^3TV87V2X3fgO^B2=@+Oz0uU%YDh* zBf{38VsY{wHkkkT!v~iYUOjzH+A`JKe*Ngw=fCppC*f8pVsY3f=bWy4;A@rI!l`Sv zH=a@*R8t(I@w`OqONVZM@DbZEIRx#1n*9N@o*Ai;DB)zRcSqVPqEbfV-$XLzPAbT)(3I#r3@GjALv0zQ%jrx-U_mKyESOA1UX>ra z+pWwOVdrqIzWGqm4>xXA-Dp)KaS+$7ZyZ|0)*wjj;zwWDW=n-Dl36DR&^8S7oG5#j$BY-~)~<2ftErP3II72+bWS;5@&vv9TOYamo)i0O`ku1QLMK1Rr~bmZoV=ibT00l@3A9rd5;)61rz?Th1i}sKDjiU?erS*0%J-%hU3mvF`VMy<MbhdL>WOmHhVhmk)m7yWbI{Mosk- zxyWIjODuRciPb%p?}X6b!HTUW%i`Q!nZzoY3Xzk(zU@bEsPGxo^sr&`Y(XAoNy$WO z)v8GGAO5hV5YdvrQ4$LmPV5>rY8iSH*AY~g=~|D0)czt!jcWGyP8}T`>WC2|CWt89 z6vKZ@tjsc{{jz=>9g?**K}BkyuEqmkpAY+0vHGdR_I&s@pM^TL>BC~tOm^lfIx-7s zMEIQ=-FxC)5}UaHaX;9w%e5P7&b{+CF0oq8vQYf(5K?kdW++4pP4$84EIIlVc z1asPl-MoK@#C8@e_=E}4v^dgaXCC?MeU&Mypr)l?qhoT+= zak7{CnR?4mYc`T`PY?0CSp z$z4#NBspHga8!dM@|u|Y@-GrQa_-zdFe}^AogmH>6pU}X`Q{tDW3hY?s+yQLZ+z#- zkt^VeI@D!AyT1O6_1I%?W|5jPK&NNB7ITQDi{ZXlk+z|7ZqpI=(b?r_pm!b)=cPX9 zbosEUJcz%2@F*iz;tC8q8=Gywe2@u=*NksJaD)ITSm7JnwoBw9RYRdRgL~4_-93ug zom4ESEmEE{zZ-k@n#=O1hy@$I-(a8EB$pVcQ{X#{#7&YKNnNyoLxs<|oj2ye98Pl} zWf_(=G3OTZi;eg1#YV?D#;pMO8aq>xo0~$B=PIw;Wo08&2-{v_``(}{NsY`YN#+t| z`NHxZC5U+OmV-cH?njTT2b&Ut=zyIr(@}e-eGN=tN#7j%wHJ)IpRT1OHa#P^R3Ktp&CsY$dGGkgD{w?mg(UVvvu zYR`8F)+_UgO+t@~c|*IYr=!H~PAQH7wM-xZQi3vSg@0L5M`W5!y#9rAk|3|E?d|O*@8gsYG!lT&RndVNXu!CMwuHmjo?T?pc1K}!js*oc zsm&EzX?LJcs=OpZ?JG*kj^1)aE`3IfJeJp~9^%avshTanedW*A_Nu4yO~=vkfg zQr>K-xgxe;+Sj+8IUF+?sacK^t4SQJd*nZ#Gt!x^^78UFNosxwh7p)_Dyodon93+l zUT4G>)K)L4vezEAb7ytli4$+ai)=cU$;d4l9nn5^?DgD0=^zj4s0pl=Y}&L-!)r~P zIMG9D1IA9;Lf9!&vfJ3}50Kt@RVwfIYd4H;VQP&VUI^PQiA|hrm3h3*cQnQgE0FgG zSg=WnVYQuZZST;MX+`ZxDJlp~L6jzy=gik}J=N0Q=|FCDk}G-dCAR7 zbiv7N;H2ukCUJ93Y7$EfeKPI;{nne-w!Ob7v{WN%+Df9mRe9^w5yeg!N*wi`SJ!f| z;Xj_}3Wp~|mmrH6sNVV0weMq*k_p1kQJ3-isxB2!lRXxNsb?uDF zB=^2LaPK>1uAO<6xZn4d3)(Fs(`bELbv$h;c}Yu&^kfvhJELgbX{J1P^Yd_BKa=1- zE;;|*>KB_Uog_3lx9jyYsUE-MCv0-AEg8V>9!9-9#w2kKJ4vd25tY}J=H>?81OFTl zw$_i6YqF6&QB%JgW^+j}UT4qF%Qdk|4AJ0nzn|n`X(Uk&6Q;O7x z5>Ip-sr%`M-#Zzj6Xn>e7$7z~NaVz*Njg*Z(BKm1ffs9dKUF$1gsC;6y86SSqeuS? zM=$`S5{#;~x7QZD^wQ3VWu@RJ?EQ@!Z@kgZJ2+U?b$7FqP`z#G?L58LIW)rkH8}Kz z9ar^Nd61bqY4OE~v#-%YX3oS)9^?L3{9UPNUX zH!35EiD-?-ROZ7mGup0Qhs5rT0by$cAt|bN-is=aIR+PHaw=XjyOgubcgYo|oYSLi zq7seH?NwFjKkfd}U^UWH7L6z&e+?| zO16)w5V0$s$C*{DR-N=qE;kGs_d5VIS;I?bw%xz#I?mn6g({iK_uxD5-P#{mwcHvx zcs7Tj*A$K1;1_%C+O@~Uuu5$?e4;V^_WmaZ*=nj(i72Ixu9VoCoAP{+rKY=H+r7T! z_^C$j<>NMuTW`JfgkS7??ztxcn=Fq0sd%R5^*5?KmtTEg5kUvGvu4ej^M0}Kz4u;j zS24K&mtRxUsUJT4I$pw%pVw(n3XcJ5M5?OZjn>z9(iiFO#P&^WUZS`dk;v3Dsh@N4 z5-C$J@#Y%O`-7K}Ti5%C4xNAIwSVo}bzptNFE>4@7#2U&?GYO|Mbr^oxG3Nq8hDAv zLxh2%Hr^{q(o33H2{noi9H<%m-g_@bjvs%!;KdiW#T6yV4Z>VaBhLi*>kiJ{ci){t zFJ292*ENXnOYbDM##H3f-)MIfyXW_>TemLhms~bZSk^vBkKNCc)S`+nwLkRP>xm)T zT@FvhJLs(sthz3}c={bYFVSP)er@6nEq<}H?PeXeZQr}E?fEypli$$3v&@RL4U6Pk zWtQF+uW#Lz`2DLtZhdF}0nV$D6vm7hvzK=Jta}I1b!OVMX-&Y5imz8la2JdcWJ=PL z-vz@jHEf7(y8ZUsGx(zozOYxWT$#b<WrYsZewc`Yr+qK46}b9w=DYO$uK z6M3(``bvIP)me^&P+plcXO4?ayMwHXYE0$IWHy=fLqbX}MB;ieJtXSM3yvv!uk00J z*(lW1hc&05^#IjSR(@qcr{G??K<~gXA2!Qv9FBLfK&IX~IQe4?60tD~B1wwSUEGi`1Zf1FhyUa$KrW3HZxE_W5IvpVhye}`r-LfJPq z?O@aff;0~uI#hl2)mL|7SNt?VmM)&y@h?}5>0ic#2@|T{d+)uIauaZXzsKg_Ph6SZ zv(|iXaP@Cbwp*DWki2?6Gmm<)Rn$gAcn^XMpAL#GR)Bl$K7IOh1?^@&BVp05vSX*F zFT3or1JZ7m3%F;|+_GiMxz(#zXZG#eS4tReL>80u8rxilfK*hPK7aoF=Jo5>w-6hf zsyQbc$nLFMxAtPQeZ}6nG{lV(k#dnkWBIvr=e9^}p8H-rfD<wQ=3RcVX}9<+j6~6EE0uX!c57m@p(^dB1MvPJD^+MrIu|iw z&CSgk(x_Bii%12T=psMH^1KiGky1ghVGC`DfG~+4C5Cu*1Va#==Wuq`i$ zKXAyT--r#*Be~gh+TFW%fAsj{kH3zg))7R7?Tpw(JJ{Ir(#iZMo_J!bB(;F6&yw6+ zY({Q(51Tfaqp-X{g0-I1#-k zkpBVdWs9_1+!s__Y!U{dx3l>EvjbZ?NM`i47*lS_ojG%6C$CFl898#K4IvQ)vfGP| z`C5~~0|Nw(R)!BBo|!RYM(f6n8_y7X;CA;NS-FlYQq^Z~U_%Wbj`w$gJ&*=K-T%M0 z8)Vh{hbG0)Ru%7|i&PcrWZ_s$MWmOrzo3iAZNS)!^u#?uNG-cg28`WT#Nua^1oBXt znwkcTjq-Ap*u_KV`?0h;atTK@2oNmPrS>f$c8Kl$E2tzZoLjA}t+sS>F9ypZ~Nr4Ff0Klp$3hw{_B!`!6X>`!bGD%(e6abKuQB{z8 z?`eGOi}s7E`=`fs$ne|dfoA=V+g!0!=`0A7a>GGriR>b}p{1e3QvN-eP zpv;fh`1!E)(+6*s#PM&*MC|YKRN@&FzY*Pjiv+%`{(B#@;{TjrZ!h>Si~l$R6#hRp zsB{0@_~okqM;kWYiI8tZ`%O<;y#WjT!79`B|M3Xy?H`Sdz#UGcX=S@NDZl{eFfaBn z{2I~tOE$0^7Yz2oGB<9$O$2^JT^)P!QhjS-kxQIjVAn03C2tpPU$%RHch_Pei@)`W z+si6eY*}TSdbV2riZ8U&Y;-$09Od@Y_e-8x#yh7n2>Ai&Dwj{%uj9!6L-;2nBWlEM z+@}b+Axh6AD{|N@C!+n+tDh4=9od{%$D`G|sJFX9&sQE+nbeMehxHaioYvOXZt$E^ zERB>`2Hg+?>|-9PU%%qLh``68V)okk;&0s}^_UA!N5dl~Q))!w|J z(PAQile!90dmhIQeplZi5vPL3w=eC^Uixd$x;{~q1~AQfXlQ_EiD$vHt-%c|j{8)- z5!FVWb}nK;cQ8)`;bQf++x`t|7UpUqiw1=UYM?`itJ?@~>swR-Se3 zR%g1Y#XeIlE?~`i{r>y+V0dO`=JgpDGQUWLHQEyK6iXoi?eLc+S-5fVIl-}rq8-}4 zzDWMOnpI=Qlk!%}-hxaq$PK$cd;2|=8o$0Z&WA5p8OZQ#xeaR(xrO1bnQA7E*@?y& z|JTtDGk4rvTp6z~B_qp(v>){@xyqP}GQ*3wefAe<-c%#=M;*@K%r#088o64w9$Ug|?4h@pUznvxO+s#bgC zvrmeih2JMo|A1vR^NU~|HYp>Q3Ez*H#>jb6O70?}mCH*@ABFkeD_xU!p*W4q1^nE( zl1qvVOxAf|=rpKETH|0#I=OC5K!bxrX7;+4y8P|QPUw$uFLD9GZx>f4mxEqeUNkp& z^~cJDsVie+&hG-ykAE=`I?!wH3jOK4b1+42SK76RiH|9_QtN!qw{NoDC0heDzS!*{%U3RaqxT^8bPe+i#u~zCi z>)&gkDuN3x-T_mfnVGSQ|5`Hy7dt?8l#6<0JPvDGq9_oq9WrNlFU_>%LmaH*F8?&|i*}d8(sarINUbWAo4x%VIspxsbUXJnWX(3q^4#f_x(k zvO$LCu4tPK3Cu1l+o6@XyE9JJ1GxOkAg{&-S5!mF7ShPZ-h63u*LB>CCzW!8&$r2( zM3D^_URgBi0)p9;_!hh*j^38%|re(--vC*`6JWTnT(1R z_KF&&;p(2nniNhZd)2___S| zsPg~|hO_zvPe*3F3VI^UO9WbJ%AfbwTB_FH57C{uHr<|cuE=p9Zqx&sz=}(d-TL=GG&T9KV8Z%fp@O+ff=u)>-Es9lO z=+(&p7N!2C&29z$qC|4Gl$B-xdTNixMHbz&)DQzikYu!SU{UXzU$x=^THU^d0CoJ@alf$KDMkjf{-&4txXPZG|G20FQ{| zAGK0=J2uim?{j%oSO7`cbFwCd7E_gWiMZkil)-8nST5i**PE_L!h7_K*2j}(cvuvu z0>kWQfhdO37CwtPC7H`FwA(HWr6atBhMrzemh*%%yWbW!bc8M%A+O_y)Lz@tS_+UO zID!SA$ixPM2fM%}XTC^93}nz{WSGut)BJXkgD`+%-QACVGYU%>;3`fUw`lh+Ocwoj z^+WHOA2m*)3;{wv%zl}lI%06<2u&Qf#0Lnd z%CFzE(G7E%q!#x^Nnxw3TJa z0}erJq*7^ni~)6jHk!g`Z?CVgfr%*!5sgDo2?<8#=BB%$TAnuLYe`3ShmsgScunFY znh^CRtPLYT9(f;iyrueNr1T`7B-Y76hLx; z)`hNdQNp7`>HW8`u#oN0phaZCOUK{;nRA2i8TgO>nGT`;xtKjcEp8BWZ3aaiLjm+C z-1o?0`7+7!!;&(;3igM2WLxDu1q!-rumtTU{z;1{a2!gEfV1^aBq43%aoJZXN zS0f&Y?)N3{ggO05R#BGfYU=Cj8?kY)4m(-K3Q!luQuK^$k(sM{R6!Q91;0j&&7d^0 zBRDq!Jzp8x$S&`s6t>t;+JBE1Fb9OTw`>@Gq{F)8FS9|wE0d{jtlNONDrNBZY3Q`h z7=|vU(nnwSi|n}tB(f6+RRY`xIg1E0pu@OYQ09fp?p?IS+M@WG2@0UNhO)V%udUW? zzfQWJMm={9uL^x@Rt-0MfDk@i5%^X-mfx!@HCB|1ma)g*hXP#+s9^dT-BWwj?l0qM zra8>Ycpq61dtxu`E6(g*%5A?Mx6?x~#Fn^plTcGsRC6s1K*XQZ)z`Ws?%Mk)dIedn|8sZHe1ds&Nc(yk?;BqSkMwz!1U7=xGKpkqHo5Gv|G4;_ z#oS6V zXb(lPL|!xK`)nHgu1Pvd)?j<3)u*1Mlk+XF&8bQv2Yw}JUhh7KGoRm1dk3{G1DTx8c<9k zxw2+S4m#KYRX&Rp8Kn@!{i}?@4Jk{`C683nVrdzf2KN5RGQX#5g zHb-fu>;9hub`#3t-rkoUI(>h*8M-E9rFO;1)bL6nGBHwc=uEbw@6YNyU00IAa+Ert zavj0@hSX))Rv=1~wEmAM2Jumy2#=0-?bum;gC6bD{4XTn1;9MBbi~t`f|uh*^s3N& zSLuE~#~mk${V>;~?A7M;3F)r_AxNK9;DtWOc^cU0)m|7z_Vi;(^kY|s8jB_AEwx^_D#qfr z^x&3tVn3bB5-9X&v$d4g6wJrV;+Qo`&|%0GK7 z1l?;T9i5K2oUN&GS^aOzT7?-TGUJG`vS z#kOlR&hOOth6wV+Q&hitqLiRJNc|@3F!hr0z6&H)h9Z6`f&~g`-n}ze-r(UVWmZqp zOl%aDB04!*sXD&Y5P96bjq#`hNBWs=_yv$=QtMe>MyH-?bX{A1E(Cl&HK^spyr4av zr%Of)X33~z;bw%Xel+PeRk%~4WV*(th`1Y1-uFY!4vq109Rud&N8v}m(gr6`o3Oj^j@q#;n@3bu zT#S+2GYLE^Xsa6qq88?Dw0IDirAJ%4p8Y&4V3@Zdts$usyn8lQWGkALheNPDy|-K(M(Q2OiR1{z)OIEgcO|Mtm2Uxa%$M=`3P z$3S1&0&k5EMK_Te;mcrocfY#mGyQ=Fu6#@pEc6sHtwT=58bC25&yG(?q@Kek*N3hl z@ZhaGLf;q66`hfc4?tmC+eAma+F-)C+_WCeG%EK}uYF2j@0yDKC?#`wXGHAbRo~>dcJZ62K% zJhJSudj3Gj2cqDdJ*5roTNC`~_2HvFH!%|~fhWrr{}M(VX)WTF7qtM--d=7j%}#m= z?V1P>cD924bmz_0WZs<<^E+%+;Jlu_ThiEimLkZuB~^{+@518tzv1yan7I zOc%1_x9t$C*UNTlq37*Gq?pV=8-rX=!x2xWvL3~(%{;kOHk*#)iqEdL^An6b-oI@M zd48$e_P@uZ;DPoFMTEM3t`qXsE)|XpeF8Zg*)RulHoL2^h-Ey| zh=~HU;uEnY$>Rw0Z}DXKO*8?Ak~}i?9_#=5$NLkL2}~>6(^64O)0;PG|!9ZQb4Au@U!LZ@m&`7>LDV*xC%AHOH`7j z=_@WRb>!2%a6Z%b9aAw@4xfIarsnzZ>^kk;LMyR^HP+ugLyvsaf(00~w$?!^`Ey`W z>W$<@#}i+e91JNwG8@>6{J*8O#ZS%}lmBiv=krl0Sj*g|M7Z>Vg?HFjo86Do0_)JV z>4(}e07AM1*&hm@N!S?Iw&U#GQ^RV|0f!Br`qr5;RUc_t4s-Y~3W?Fa3|f*EY|EQDoRyol z^nFpv26m7i{^G67Z55oS$+S~S#2?Y`b0U2>^W4&IV*F8Q*5Pu$&hszg?jK?_)u8%e zPK^e>f{)Hhz@{7>=A4!(T$7z+M?7^>EY$XKn%39#P)z30k zxnspDJ93f(GC{zDL$J0PfyFaV7w8*`SA>-X%iERVH0AeCccoDg@m48d{YymiQ&)B< zb=mEsTR&Qoue%!dNwD4fo#u@Ji6=BKdaVJU%1=;Q=XRh5n@Xj5QTKQ5?fjE)sR+$9Lu4Kaqt_3Wf-w1CNF(bM6AnkK#ibhVT80-<{>|nO4|iJY$mTVbg1l9`&c&5@t_qDDv z?fSCC6cI9)Pa=M2ol|IOLLo)iGgpO4T&tYg^Q?n7ZISALccY5Uau^SUndKbq(I^{rS-8;bk!ImFodkFO9q`c&axxdE|oxXZ{FeG-XUXM_e%PY(c_TR+GnIxXkHxRJm$M80c*# z11)sy?JCxuVLBQ#*F+N(N9V_dU`ExsVXT%2$pokL`=;L48O@yegKqNd`1|-|B2VNU z`$;1eSg!Hoc}&8JvZ0fl%Ot1K(%d!nb^x`~x|!8B=XKYE(+}AHWXY3oBaRcZ6zJ(& zO=itpiiW5>mfme<`p}dJV%yFF&^tt+^^Y~79|X=8qm+r4m0F{pL4_Gnm+^1;mI=q2LdLMtD)KErP1jW#S^3n zrO07a&+MVhgb`4BK<^jSHkN%`vxIdwnb}-#P3h~>F_xe+OEJfzAe9S(6dUApBP>!) z`mC75cT54<7}Y^$rq3liPgaAPQ6E2iFf9vN76BvCJUQ~mb)L1icx}GcDa`zwVm*d8 z`3U}#wda5tt>Erq{B_zpw@s$5ts_lR;-Zf+wxmnk?sat+p+gw!Si?^(ZV%k~aGe=( ze7(_~mOYuIn3Mnywi{y|$O>PQu_=2D$Mb1lZkNfMo%GtU+lTk~y9v82_)s&i^LNwH zu~ID1dCeXPqBM9Y7U{>|L!priro$AWLy^fQHBgHxn>U}ns6-_u$)G;#P2^dr(AaSU zXX8M2F1RPYD^#{(C%vScy_|22#j@D;t$efG7wqy;ve(p-cJh5rrPr*t`ta0rvb0&FQst*}O|lqIA$(+x~>xt->(B z?ELQbcq@Vwv+NktjOu*Vw-qN`9QNv2UnY?Hkv0-hNqI6rdGu3|@Gw+4|E~ z)x(xf(ho)-_&0)c@vVbN{M|4e?cnaww#{tUJW5OW)`-P)yql(fnSC*-wU+hNnybHLWm$#E+GTqy4L5_y?^MHpIVpiHY*O6Twqs7Kn1|r4^5HOV=y(AT> z{wGKzoS1maMehy0J?1E(DyC=_swmkyFc4APvkaY&pz}-lNJt!xtThShND?ac1kxi+v9mLK+bSbnHO^F zQP+lySHU{^ujJ9b8;_IF;F)seSXoviq1DiHopiL$2<)iq>rV=n$#LG{I5HzEaNhDZ zjzQb5SA3$0fZ6#Ww9GLAPD#ihJE&%Y5stGBZQr>oSzoYu194uw$T7;8?%vnA760c) zB|evkaUk#KqBRAj+`GZI|-)cII$jMsHz`!d9k5I{q zJ>Gn+f{6Bd)&QoU?KWdM%8JAD>xBuW!MP7UPbT?~{svEUgE6r5_a$~EpZ-IvL>YXQ`-U`~DB$h4N z^w`KAO@=|w=vmWr_cFNDxvEjnY7#prk3>fZvD;0!tIK^&xe9Bwlw{*r7%ZL1z4Z5M zhFn5-C@(cCQK#mPqQ%874mo0deT#}2<@XI%2!t9%yo4@`J zI@kF6-9whQ`vi4oti@|G^6Z^jH47kx<+T!K8j(S;+7xA$vJ8Q~u+FU7P$y2hk|Ywc zSv%&FMoLD9$V&cN0Qd(a#14&?-)gd^QS5vW=TVq080iA~FA%$dtYL@DY8T}%{}@*R z1{&4YGqV5cgDv~M0vkYAZ_qJr^QTgiAD2?lXOAK+gT;EErG&vYkNG^t9W5l=>iYQo zURo)?ky{&MnD?rW(BpUo^BOiriP=7m?aZrYkjJ&5@1ml-gnqMLwfnGv7UdpimauK5 zmUsYNRWP@RY3~n_RxGbSRu*G@lBnY1#`4LVZ&~g=PC5S)1=feGng}=#@o^+f7DSUo z*&P@fi_-i~ecvizQ^xzHl?v(IN`JehDatx2=GS~kqm|L$QZ5D!US64Q$IoNohqv+r z0SvQS>4qoNnyGtKdy#W^bUg~~Nz$lj4yi*9R4Daz$JQ{b`5&XtDU%InPRVw3l|^Nd zl4n^fW*-A@l^&=0JYQ2g`?B`T(h@`}a!nSjW6qoh3(Kb{cV2K-TOBzZ;4*Lc{9L~) zaQli{4w>Z46$jb|>5<4z>o-L#li*oK>-#nC)QHa6ghxq^?SQv5Twx_+P{L*_b3N** zdW_%KePd}fTn-DCdX|s%>96xs-iicuoU8S{#=40npA6v+t({Xa?jzkc+QBe&Lm0UU zoSmr*Zi|&YyNUkwX$o{Id&?Tjwj5G>kF8obU!fb2ZWIuFwfxXN*%OrxFPcHJ4&9l3 zv;S?i4+>Z)nb*N^gqyb26(AnNa=FEx`H^gNfD2upXYYVmq~FCZ{*@cn7Wf+YLM->> zO}PLSpka!nlRXUhipQ;nzhJY1YB+v1O{x-^)+2c{Yn7dbJ-*_mq8GDaR)vnK7WU5Zw=UcKs28S&(}$c}mRC6e$J>IO z-v+JKJQ9l}LfJex2eVF>e@Q_Iuz#Edos{h3Rg>TPQSmnA64SiFCR3 zo`Eg8AJ=7GeurVci*#6OYKQwY_V$XE21q>LP2M@T@63o<87uBV+KaG9zDhyGW5JDz%zV3b%`_iJWxcByYG5{N$U+B7FX_&mpO8q z8a>+YK3W6R&l66}WXwOSg}J!u{#7FlvL``AS?wmbo~cTnX@}<6S!sM3OcHOy{L4uV zboQxaS>Bf6w&-YYi`+KeR!5?83GpOfn&u>7De#Rp&d?@~&L^X;&tX-UM^$V~O=+XG zV55zY=X}tTHX@Af{T!R+4>YUH&g82Jk+WkH7Bq??L_cKVy;5;i>z;6ve$E{@vvA6) z*sI_varB2ce3DeRo9r~eLsjui(kZ$^tvSf?w4W_MXXx^q|2;dB!jQrcA%L_TK>W-Q(xEuYZtyd3V0Y{2I`iKKCcCjQmpfS zoW+G+7Mo~DBh=TSMBQa51;aL6jPUq-RT898d_(GI=R1kl12owxbOSM9eryZ zU>uD#lum=ewwZC&evY&}Q}&iQX93C*w(ogw;;G`} z*=t}0%eD4TAIjdm24BiogEXk@XG*BC|7Po9u`YT)Ax1^=@6phT)|J_ww?2F_LT#5SBhp-$|amoPx2)`HZEA-+QGN+;suZX zsO1d~4EG0I+M2f~^9!O#p(gJ2VtHfIJ4z`>b%p6R0yo@u6@7J{DU9)`3bZ}e_G*}% z*AOFLPOuK%k)5b{hQCG@-cq$Mt7Hhh1(`Y3 zt-}%3b#)el@7mlc;Yrs<$UB^4Vq+lBf4zKLzneH(X-GtZ4&q*uSSMbc&`+j_cpr?+ zGe)TOc`~HZV+NN~_wafwk*c;%c{`l%0AGo%L^) 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 t@UE11bp6rDR_i~f>+6;|n>1RGj~WeP1d&iB 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 Yu37qTXT(DE;jD$j4(?=C4f9F*54WWf`2YX_ literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/square/grey.css b/public/assets/css/iCheck/square/grey.css new file mode 100755 index 00000000..ecc57ff4 --- /dev/null +++ b/public/assets/css/iCheck/square/grey.css @@ -0,0 +1,62 @@ +/* iCheck plugin Square skin, grey +----------------------------------- */ +.icheckbox_square-grey, +.iradio_square-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-grey { + background-position: 0 0; +} + .icheckbox_square-grey.hover { + background-position: -24px 0; + } + .icheckbox_square-grey.checked { + background-position: -48px 0; + } + .icheckbox_square-grey.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-grey.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-grey { + background-position: -120px 0; +} + .iradio_square-grey.hover { + background-position: -144px 0; + } + .iradio_square-grey.checked { + background-position: -168px 0; + } + .iradio_square-grey.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-grey.checked.disabled { + background-position: -216px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_square-grey, + .iradio_square-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/square/grey.png b/public/assets/css/iCheck/square/grey.png new file mode 100755 index 0000000000000000000000000000000000000000..f69375854d3c5a283121d10352be8a1729a16cc4 GIT binary patch literal 2186 zcmV;52zB>~P)Z%D!>FuvY(_oi& z45m$JV~n1H4;m)Kf|MM~@vBoy6qFJkuXLd|w$JKkKYFKlfr& z20jOzzyX3_0Q7=((2P0;BFwQwh%rBz#;wgjqkh)FCnUL2W7gd0e<)ZFYh%aeMeqtZ z4t@igKo7VFxIifzqZ7OVegOg!Tf+Uh5*GR&A{)V8G-Ak)Mhe8(xN-U889!@-o{*KG z0=U5i;01n=39>;x8*e9GUyp4AYCS5kCERb9u+U#X9t2g9{FGUrL_Z|dPshYp^fYYV z2e3H<-sh^-r3gkqEBQ0{F`MPzU=z3|k)!#`fbj7NP!GIe9}r7HHJy7wHR`$v_15*X z_KH6$xtc%P_&Gm#y*v#%z#-sMd_i!VTmf}##%HnbaWq-KM2_a49mj`Z6>%;d!gX;SE9Q|>I ze&C8QKiSwk0~*13;EQ2?2Ecjl^9&t&p`XngAG0-ox`9&=9yXums`9f0P6e=!9HQf1 zphok%z!^5?*%*$n&hfQpxbJB+D*ftVGyRFjr8j;aHg5y}0rd&YPd)eD23M9K3YtG# z5>K|~Pd9Mtu?zeI>@)DUj(uFkcIo(+^L%j!@W*kQ%f~t8YFwuYm(bU39z(@_`omL#YA%3H+@C`^XRIcoi$I<`+Ju-#F^{ z`Pb%3&|p+dM+Kc)=r<|!r+fpiu395CKm3st6)ljd7}tW5$}cQlz9%PdX0%WCYVZ#D z$b_$^y6CD_{5jxH;4cQgwmVBlj*j1~`l|j#pb7X)m>(Zqixj`z#QNIlOx*^4^wGy; z{f3R=aNI8sJ^ZjtwahCjUYVO$P?eF9F(W%Czch+qEjTacrO{Y}~v>5NT?>D1UqZuQJ(^k&&5+ zBCc}WpHrX;=DHqOo|ixCaX|usJD0mZ^!z=FZYj7Z=A{uVQTzh_Y1mAM>NmN*s(%jX z5%b~&PQ`C_eVs|&z^kjiE*m#(kr%$dQ|8Yv5-lqpDVHa& z30K&K6)57GqJ&Fs zH@Uv5(*gWqQs{ChezWWANa_Z5H#N%O;DF4SF+-kv{sk#6DUoGg{E|HR&26FLwzOQ9 zw~y6IFc_4{nEu||E#u=sKMtYpb1f*|kvDVJ0%xJCtYB8*CP9XW0_~mcm;Zp*1SNWg z!E~`M!`x1{%5QOf$1MIq)0h?YP3i{j>FJSQ|LT|0*Vij{yIr3B?(lG~(0i?;wRUW5^uJhDriF?-Jk;6gxqNCozE7Vv@Od#WOF*OI7qCo>XB80DZ+?C0 zrwSBU_yKp@g8F)syMal6Utg%m-Q8VsrL9$t9QmD$j*Q4uN#K(^zN?;=+R@RG8=tPc zo$Z%S22t@iHRr)vF)!=Ddx~E`wP7^$qt=lO&JdKPU(G zzbR8SDD0iKOCS8!;8!!9;HRL=;KdO0vDpra760C_-!`93@bbX*bPUj``g2UGuTSy2 z!A?*Qds(V6Tka2j5a(97oCCC0Ohu3n&p{!m^A_5_;O9`?@Ch13G>;s01g$ zeQ`7|UMr`-S3q+_ztQOX8$dBwX<&X<@=&}%$L|&6xvBZn4V*%7Mc4{n0xu`fysxnN zpU}B5Uh{tpwkW^WiqyQ?`SfORUEu$$3;X$R^e3F_dgJHC@~6NmP?5m=RIvF^(xpc8 z4@%-0(EO>{!09ITaE06fehyr*Ttf`-TKP8jg+n(UZ58GA9QY%63KW5RKo%cA#plk2 z?ekSMs;-~URni}Cnxl=Mry57V60jCz$1p$HU@iAKLWf>7|ILI}Ui$Cm9XTcvI5!eg zlWyXxXvh`3%Z3}g%N4Lm`960sSI}>PH^2%Ikm%{;Yj=Y^U^CH+kN*A2%B$DJSFvhq z<9`|CO62s%dP^P7Pao#zFwbSb$9eGpFYwdp08UWKd8!A8W4xtKAE2MN)QOxS5YsJn zCJY?=OA4eWS>}d^)B7;CL%hAqb8Of`AZ+9&Hg+-SllT$%muZuAL8~Y&VGoFO}K=YSI@Vle=KfNoZ z(Km#moI0y4-w=26T3rk0-uf}{u9SCm{?W)r>p$h{n-t{b`}%yZ>$)?~Ior!f?Uxb~5|VLruyqv@ z68^Ds)|U|5Sw9rNlob*Jo_4ggc8^8;ECxhg_)^>_0Ier0W5n`=l2#;=FqKZb8bwel zz2{Hrn$aSpvb4k^&5DP-h9>l0lofkb{x#^NZefO%6CEwQr&gUDZKin+NR!YIOWG|W zK|e}&L|n7FNcGyTiEC%j=P41x9VXjNUz_e@ul`~;*Rwd=#5lNS~zI$8~y?G8*2?i`NHfh`#z08Qntc%TbEZR=6GOk;2fwaDN2GG&>W7Y&U3w_W~aUb^mX+1&3-Nw%Z7|lBRj=X)a5UwQyi06xlNOH zKKY#u8jTK;-5OdplkHO}l;pNd4X$dGYX23TI*0<0C zn@1OGcV1bfS8pPZf15Q@R#FG&@*T7RlQ+O3pj^Bm%(le;3R@!W1jug7sGm!GBCv@j zq`;Eg*^w(RDc}-PZ5UCVKM36NtDZ-lHD6#Jh%uWPrkUq@E3WF|dP&0I8W{&*1R$@c z`|&_^wx66=KGAIi;@1dRhaDDJ$z>}`i|ttxS=)~#d-xj?%u>CD1l_}wk8!~^zy#q{ zhwJC~{I*mIhORaY4I#MITGtpFaqCUkO!`UyLJql@qp_I`on@Z*2w6=nUAcq%uD&9K zC7+L86^EZdPcHJ-LKmUgASx^znTxwcqw2HckfZ`ApDbNm(y; zOgiguTY167bdQ*n%0b7K5o**ml>dCjW&`pa2a>_C$S7L<0e2bqJR7TK3gx(-N!U8DcuPRb`%LaY(algS&(LZFq zb`!60Z(4){hx)Gq@@y-A<+-3k)^N}(vCn6endON9UJ4lPBay&exTEsUj85ZfSJ+q- zC$E!5IreB_V`XUo`^0JOHOnyk)yQUfpU&=EoM9l`Lk%rG>z9V6TPm*DgPQd-R>{&F z?-=6b@(%{ihh`Z0cbPmz_ZczTKRmdsVTWh>8}-5`g+1;JQq@$zuBH<^C>8TCebI@L%ABXfJ1OE0 zi;q*Btf%cgf_~F7zAXD5g2r6p$P+v$-NcoiPv4N=H-aqrg(P3PMfk}wc0}U#NMK~c z3OSmmgLX@lp?2_O*^|R)^=22ng4EOwIfQhNp+rZtAra)S9q#U8?TN=1uCO=Jojj854@y zCBOa;@>Fl7zFQNx5(AF+t~~LnB(Zlc@$ub@=P%7dHYT=3H8lW-SAs@!KDFs}A}&5p zBkFwnwf=T5K`8E}62GMy8HDCK)3z!gYWB9~i@WVxIB@hQ@-bdqn6UBSW79M9pO9+P zSqF@~#P;md81hp#3;z7OR;zLlc#KA)r61DbIlhufDs&K`-iWmBVS$jP-XcD`*z)YX zlT}@DwSXnKE;q_&Cy;#((yo}#K_}4vEGgNLh4@cuksQ{TNbqC+r>AorOvfh6JtaP;1{p*K zwv{N}HLbeL<3X?U?q?*61k1W;X>AnvKIT+XapHVbE|tdPuCK3EWi!g_>)l$?yLQzv zqsw+%f5Xi@5G$81JZ9C<)Z}9p@ydUopwsz5C*%C6;+(NTDUtR!W*Rk9%j7ghpPg%T z{axArkE1~z*PMJoN=VX8CSjsd&;<+}Vd54gfRi)#ib#v8OOAN3_|$XytP9 z^3WubD$H8-F1IxS%Ni@k62fdcj+>aAVd-D?eqGk*4^skzOx#bRP-CA5UrX-U>@5APen~rUiM4%fdh^v^<^9Mmvgc70UI9^M=b7()`Xt&e`+7?Fn-y{l&#QHFw$br- zx#Pb)`~*D{ozVB~6moK|zeA@XDCz8SH(BTdwIgKy*^nVFf{ijX|<^6WlO&poJNS-|Dd(NVg~qeL%g_FcBRgkAB>3;Dst3??80TZ!lc!B^{jOBf-=l?u z$R+vYOs#2m&kG+o+!9@cO@!O*+@tvlKUzqyjqj}A>NypVjXZ!KF$wD=i&gAVv04M_PG4MoUSC#L z)3$6Yyt%wzg`u~h<=E^MQ@H;QHjUW9Ab)FoNIo%IaANKsCd8W2WRwi36Hfn0CnCNd z+`cE(TkySTSSMRi_gf+J_EMA z#vS`TQwAY!W_84lPELk3w=LHvR~jT_8z{|JAQGSaS_2_T9IjFL+}c%188O|ysf_}LRBt*Mh03$M8xIOu zcvxTQqR`NA{EK-)_eGo6E;q)J1|I*-=AheWmF_xv)bRPhhJ>K97ee68B~1WfUrjzh=9zR!%fc<`S(Ph%Y5wZMp8F|e%^UR zmL4sT{+Ae5aK55%PuCtl(dIpsJqxD+)*iW55Qu$$YW~wGOtgAXweMgXYBux9_lb;M!3cQoZ%y>xr$|&HEeisH`*6R?{ zLzqmY9I(5l1{+yq^bnuPQ~aCCVd?|Did?2jDzRiI?}^ec=?F&C@h32o@t1PijcYrV zbPQ$&*lB$h;R&=07MvUB;^h}b=#bS7Z_g&KA~x3o)PkhAJ(2)&W*Oc==%a5o7ns+M ziB_n;**}O^ZV}S9)$N1uIj$sw`#a@EU->PRx!U>hR2Uwqeu>09A5WF&raq1LKc$Ri zN>959qZMk^xKTad@OE1#%s=@1cf1>JC!M4pch&ehf;4yb3tobJ`qS*t)n!P2Bq>m9 z!Cd6^Qnxz(^lO`gm}gtp))7)*{;ezHf*6M*cy!4x8n^INx(B_!gTWfgr6rC(IGl@0cm!v|KDhO4_QNQl+@D+PF)UeE+oWa^T(d88d`QB|d;WZB zMqIOTKb}8>;ZGF{4CJbnr7I)^%Gy`L;uQ*qP}~sp_@Nk67jrUn;CyToWR5A{2r+={t@AA4NccJSc5ct_1Dy5Fy!zRYq+5LQros8c$Lcb&Pw|Vk=gLVl zszn@Uc!kC#Qm9mshjE8Cm1@T^06K6P|9rS#Aa_gBpMX_K&$`lbMm#)uDqR@ zRO~WV9-LmeHGj(gApT7;shx71-(2_fC2jhjN(Xhw>h{61oSrk|&|h~w4Drz99C zy8EodQ5I@o@@SJ?3hZ9(gqGN9M$m*HC-ggHTd(~q{z2%&uPRj=m%ZmIat4mSLY1oY zA<^I54c2?Nf;h@~UB3E%W=U$N|DQcYy~W%&<$v!4dk{{WPIVP`y>>oVgdFXhZEN7Z G$^QeNB@0pj literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/square/orange.css b/public/assets/css/iCheck/square/orange.css new file mode 100755 index 00000000..d0c7a2cf --- /dev/null +++ b/public/assets/css/iCheck/square/orange.css @@ -0,0 +1,62 @@ +/* iCheck plugin Square skin, orange +----------------------------------- */ +.icheckbox_square-orange, +.iradio_square-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-orange { + background-position: 0 0; +} + .icheckbox_square-orange.hover { + background-position: -24px 0; + } + .icheckbox_square-orange.checked { + background-position: -48px 0; + } + .icheckbox_square-orange.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-orange.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-orange { + background-position: -120px 0; +} + .iradio_square-orange.hover { + background-position: -144px 0; + } + .iradio_square-orange.checked { + background-position: -168px 0; + } + .iradio_square-orange.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-orange.checked.disabled { + background-position: -216px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_square-orange, + .iradio_square-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/square/orange.png b/public/assets/css/iCheck/square/orange.png new file mode 100755 index 0000000000000000000000000000000000000000..84608500a670b9460092d68cbf7b4dae77c7d303 GIT binary patch literal 2181 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 literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/square/pink.css b/public/assets/css/iCheck/square/pink.css new file mode 100755 index 00000000..6b706f6d --- /dev/null +++ b/public/assets/css/iCheck/square/pink.css @@ -0,0 +1,62 @@ +/* iCheck plugin Square skin, pink +----------------------------------- */ +.icheckbox_square-pink, +.iradio_square-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-pink { + background-position: 0 0; +} + .icheckbox_square-pink.hover { + background-position: -24px 0; + } + .icheckbox_square-pink.checked { + background-position: -48px 0; + } + .icheckbox_square-pink.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-pink.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-pink { + background-position: -120px 0; +} + .iradio_square-pink.hover { + background-position: -144px 0; + } + .iradio_square-pink.checked { + background-position: -168px 0; + } + .iradio_square-pink.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-pink.checked.disabled { + background-position: -216px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_square-pink, + .iradio_square-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/square/pink.png b/public/assets/css/iCheck/square/pink.png new file mode 100755 index 0000000000000000000000000000000000000000..9c8b4e2b6ce76e1638ab81688b3e7f2cafd901c7 GIT binary patch literal 2189 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 literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/square/purple.css b/public/assets/css/iCheck/square/purple.css new file mode 100755 index 00000000..43051d3d --- /dev/null +++ b/public/assets/css/iCheck/square/purple.css @@ -0,0 +1,62 @@ +/* iCheck plugin Square skin, purple +----------------------------------- */ +.icheckbox_square-purple, +.iradio_square-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-purple { + background-position: 0 0; +} + .icheckbox_square-purple.hover { + background-position: -24px 0; + } + .icheckbox_square-purple.checked { + background-position: -48px 0; + } + .icheckbox_square-purple.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-purple.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-purple { + background-position: -120px 0; +} + .iradio_square-purple.hover { + background-position: -144px 0; + } + .iradio_square-purple.checked { + background-position: -168px 0; + } + .iradio_square-purple.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-purple.checked.disabled { + background-position: -216px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_square-purple, + .iradio_square-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/square/purple.png b/public/assets/css/iCheck/square/purple.png new file mode 100755 index 0000000000000000000000000000000000000000..6bfc16a38ce8d5b2246f25758f2fba8134f6243f GIT binary patch literal 2188 zcmV;72y^#|P)f6B?xpp#8TrQ`SZTl0YbNE?l}`7LwR;Fu9oQsr4LWed6TUKIe$U z_9OjtEPT#SAK&ZO-?5!@9L*OR#>9pct$4;E$j@FnNWbMcxV6Rq&Ih|f{+5gXsj_K) zs^AvHF2Amq|F3LpD#3TaGB6hmgImB2&Vm!559p@)z{jGKi2Rsm`Xh(0E7Rj=o%QBt z1~x_DtH24;K@j*rFK7cTsAFK9IhJu^&QDUgb(m<>M-6;T;wx2F&5iz>g8i^IY1sS% zybg|ocR>@l4Wm06A>D?byE_+XmEnL?TPLKTX0ye=d0flo|OUvp=!ENvQ9Rv9IV! z*t`p|IRpO5RqLiA7zS6#N8k@^mQTP&&?VzX^A`c(;}f7Bc*5QwR)9)6_kl{(btCHC zWzf8e-;gZLZ!~_+5B8U>pdC~Lui^`W9&!!Tu^E4iV~?ZB`i;gz|Cgh9Gb{s3_53N4 zC`mT2i!Zppf}Lz$qcezGU>A?6190d@^A~aZJg8s;-vC2k0JMS=e6BqF7&NG^pU=@B zb&8C}kNL^K=2dVBoCn?r=En!l^O#rZ&50@!#c}-&+yn&XjJ;u(`Nc(k4ta-JZ;_#J_YqL%uhX!-3-@MK@>E9 zhQyu>&7W-G#A65e80Z|&ff+pa#V1B%GEmiz!7S=b7&ctotvhuG> z#pY6(l`&JET)s#qTju8%6lZ1UmZhYmd?_O{r_kuN49<&nIR`cjVh|2Cv+@?*5m7ZUwj~*5wjduJ{G~+q9Vu)o*cqRsURY zTda!*I2FIu^>xN|1Fzk<3PpTQcK&9I^5QFH;&6yuYIMtA-l>%b55^|o z3cIKTMO>S|=!qX@X3d@_%-s3;Pvzt~%LTa~xOcU)t@YFxVxV&ZkBu)-?Xkxqx2S%L z>#I7`fnO{NUFnM7>iVX~bpv1gv`u{dgOWaLhHU@Ui&D76B`en~k*z;k7b@=Mi=A@x z&mYO?Xiz3%`g?m?A3O;9aSAolwV+^I_Ut(eoO!OI+&Ot01sS>@XzOUZ@;B@g6ypqm z>0)1oxSej7-{$&`+WZGiqjuCct{b@f)?GRD`x@!(@k!c@Y4Y>E-> zySdG?$StbhhWdJRS4{J$E4tr?`ugLyfytfQeRAk`HR9>+m8sKGL&d$?a$Sxb`cOtk zf-=!F==b$@wO>6pIy!RK;c%peiaT__qr-ir2DJ@Fq52GbO{~jua7pnCcuLG?4G`6D zaeY;P56HFg4X($A`g-EKfl2ROU#Q48Iz7_b+$HZGJT1e+BQjYMxHstSbhjQG85!>W zV&&~W;ibttA57vuy*#OQdegT!H&2*@Ki|ecU+reV7E``9Y_${q(xIb0mJOjRa z^4724m&qCwcJQ;y7mk?xX{H0b1#X(W7~(6~ybKBy|Gu!lZLW>+^1yOBd~~Y*OpEI4 zRs79hJE#XkcVm>?Qg7abM59OEY3pI*M z1mB?JOre-d&GS1X#QjaClFi_UI4qmo*0_< zbvFMdoeSeN|9`>vw7=Ghpm{fN-wNGfh&@0hynJMAMjW>bmP`mQEtzI(_jn82h+e*KHkFT z&W0WHEE-kU&*w_%k2WnvqhL8$4>BT{pA4{`#~h_YFPi^OOe-(_kMoWkV=;U- z5=)b8;!ZT=)4a<@Gx&fjV3YED?lP{RFM$K#X%GT{fGin5{gK{Mhx5~i`FW3@Wq-?t;>POsk&Ov`OsO3%V zdZUrE(f6Z~wefElXZ**b9X}hT4z+9KRX;1)u;~=|frpL#Hs>>%g#1AB7mnj^Hu8UQ zS4y)l2t_%0R$0Cv9_O{XHqO2MW8hsWAM5<1k- literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/square/purple@2x.png b/public/assets/css/iCheck/square/purple@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..6d3c8b1af31a6ec5303ac592f5dcdddb5e2034d1 GIT binary patch literal 4501 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 QnE(I)07*qoM6N<$g2I7inE(I) literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/square/red@2x.png b/public/assets/css/iCheck/square/red@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..c05700a574071f9ccf8a6110d907440c9dc5d8d2 GIT binary patch literal 4490 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 literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/square/square.css b/public/assets/css/iCheck/square/square.css new file mode 100755 index 00000000..b604fa84 --- /dev/null +++ b/public/assets/css/iCheck/square/square.css @@ -0,0 +1,62 @@ +/* iCheck plugin Square skin, black +----------------------------------- */ +.icheckbox_square, +.iradio_square { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(square.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square { + background-position: 0 0; +} + .icheckbox_square.hover { + background-position: -24px 0; + } + .icheckbox_square.checked { + background-position: -48px 0; + } + .icheckbox_square.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square.checked.disabled { + background-position: -96px 0; + } + +.iradio_square { + background-position: -120px 0; +} + .iradio_square.hover { + background-position: -144px 0; + } + .iradio_square.checked { + background-position: -168px 0; + } + .iradio_square.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square.checked.disabled { + background-position: -216px 0; + } + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (-o-min-device-pixel-ratio: 3/2), + only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_square, + .iradio_square { + background-image: url(square@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/css/iCheck/square/square.png b/public/assets/css/iCheck/square/square.png new file mode 100755 index 0000000000000000000000000000000000000000..2a3c88116c4d39ea9b131b07201a3ca724d097e9 GIT binary patch literal 2175 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 JPDHLkV1k9ADRlq< literal 0 HcmV?d00001 diff --git a/public/assets/css/iCheck/square/yellow@2x.png b/public/assets/css/iCheck/square/yellow@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..6b8e328e1abe901ffa1b472461c858516024a975 GIT binary patch literal 4385 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 M0<$r%F};)UA9(ifzyJUM literal 0 HcmV?d00001 diff --git a/public/assets/css/images/animated-overlay.gif b/public/assets/css/images/animated-overlay.gif new file mode 100755 index 0000000000000000000000000000000000000000..d441f75ebfbdf26a265dfccd670120d25c0a341c GIT binary patch literal 1738 zcmZ|OX;ji_6b5ixNYt8>l?gOuO)6lU%W(mxn(`>1S(XO;u`D+P%xqBvMr|w-Vyr1s z7R|Cn0b8|Hu<=Zmv1mFqh9Fj!NuZfKB2MP$e75`XJ@>=!y!Ux9xR3x;EW!q1^V>X| znVFuRUN`NqJ2)ybXh%e__h!!pv(M|S3+?9F%(K}zyE40MGyhWF5-IDgL&=%2-9`Nk z!1@8uk4t%_{(K~>N;sK&dzJbwJ=$kYTlL=$%#0Pfh>U{%i@~wWbvYsD_K-D`&+u1( z#Ma`>%q<^UhzGvi(hyE`zCD{-=2|zL5>wnB=DE!U?(CZG%q4@lDnCq_%&3DCla#(X zmBhDD+RN$aMWWHm?ig*>1Onn6~r?Ma~N2JKAxN>H%UtRyRqS)6Um!-Tz%-r=& zQmTb^JFIe3W^-kAm`}`2P|niMh>RYyd)S^f(dbrx965?rzbhP|XeP}o&&DSZ4|oYQ z)I{f!SfycYw?3=9W;o-B%U5xs(pP267X~9-7L|4WzaYexC0GtG8wWygm63rF{llCEraxzkc=IxvFQ-y37=_;e5 zJLq^gsSO0Ayz?a>E_?{dmUc+t#qv$)XN8$<<}rQ#)lsiw+pmL&J>~+hgpo>i$m+;l zZIa_ZRIfSeT$~v5d`EBV&*k`apPgjv&B|+d`Q!nyu{L4rs%ZfoF0*Kq8I%ByOcFpL zK=>wzofZo<+0GZLCnWM3oQ^pb(gRSf02;~cEn@LJ>~XB9IkEX{$N#Z`m%>S!U{uPx zloI%bLdo$Adxlh(Uv^yX7s5G&C zLwNRG>~T?G{kzupp8EcyLGPoPf)@&9Wqfw_l&uU-6cexk%5;uQg%wb=0k_733{i#& z1a2p)gV3S2+QG1-K9tZ}E~I<(P0r2aFFY-c{o?TUOz3Xjod#TLE2A_c?*T7t z=1>~%YW450{Qqno4t`}gvLnuMrcu8+#xEBoY%2_+Mb#Z6S38+r*M4O`-+!zl(@m`D zQsi|GA2l3gEy}LFe<#Hv8?$_L#u8E|3-bP$*La*E>B{X!Sy4i6?TKam!49aXCAW4S*P_O^H4^*DpiA40o}Uqw~Eo&veh1`|8i zD2$x+>_b^bXE4N;AW=5>iYak2%!JAh0j1*k1{p#iRCjbB7!cSws~U{1IA@acLII$t z$>X#A+^s6iJ5~DFG!xa?>z{=lxtdi1rzbM-(nqAu3D8h-&64xo6|E!p?pK0xT;qoK z`6%+SpBk+~M?nO}>2mTw!A{yZ6O>Z@kwSd4;8aWU5z!P~tQl?u==^+R`{OmOS}oZh zOXQ3{6kuz?Is^n^L7;9ieB9C+8B{>t+pDrlq4xGDDn#T#3T5$l1g`FTQkU;b-981j zNm{zC`$wn7etklM#qHI4=3m5gwa6DNS{?Z!vSObi_od{4eUo=_S2BKNpkSdiqe(k9WtkeM79;2-%CFbb)aB=&H1?i1}uwFzoZQ(38Kn1zBP ORn*B%u*Wk|4g3!*Rv{Mv literal 0 HcmV?d00001 diff --git a/public/assets/css/images/ui-bg_flat_0_aaaaaa_40x100.png b/public/assets/css/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..c09235f60edcd94315b23a534c61ba2c49df7f9a GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F1SA+{?>A)!QcOwS?k)_>#w|r1Kptm-M`SUO z_5fqIli7AahM1>|V~EA+ zRdP`(kYX@0Ff`URG|)9N2r;y@GBvd_GSM|Kw=ytjiqefi(U6;;l9^VCTf=AesSkh} O7(8A5T-G@yGywo@=rd#h literal 0 HcmV?d00001 diff --git a/public/assets/css/images/ui-bg_flat_55_fbec88_40x100.png b/public/assets/css/images/ui-bg_flat_55_fbec88_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..d48c482d5f7d34bc669a74eb57234c0827bce6d7 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F$P6UUt$JVyq?iMILR^2p>EL%3lLT@(3p^r= zfwTu0yPeFo12XtMT^vI+&L<~Gur6-+#lXN6!N6E*)>aObQY~?fC`m~yNwrEYN(E93 zMh1q)x`qb2Mg}2wR)$8p2If`<2KlV=ttc9D^HVa@DsgL&i&zeFAcLo?pUXO@ GgeCy26fmR! literal 0 HcmV?d00001 diff --git a/public/assets/css/images/ui-bg_glass_75_d0e5f5_1x400.png b/public/assets/css/images/ui-bg_glass_75_d0e5f5_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..c621bd6877ef926f55152fca0c8343d775604df9 GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fCnc6a#?2AmP!?*K(O3p^r= zfwTu0yPeFo12XzNT^vI^j=w#>kdKj3=J?0=@27v6%;IVMUg1JcliIElxdYl6axRlf zzjoc!(_FUE@@3iW-UpIBAN=Qk@QpurwKhJKtwDjK>A`E8?p60quDJ!5u2r;lD_g}Z zoV~Vb=3H*wH!=D_yF(V8(VMzqOVPpQnp?N;GJIZCld^S(TIzDS*}~dvVf|)n|IgrS zQura8|6q%H3BUHj1fa`QOI#yLQW8s2t&)pUffR$0fuXUkp@FWEL5QKHm8q$fp^>hE mxs`!IKC65yiiX_$l+3hB+#2K}mRkZfFnGH9xvXnc6a#?2AmP!?*K(O3p^r= zfwTu0yPeFo12QIix;Tb-9DjR7k?RnHg!{+uf13{~G&Ln=`oO=hJOs{);)V=83A}=O}g86Gs>w%OA6 z;^IdBdxdlMKWE!C8<`)MX5lF!N|bSSl7@%*T^8m(9+7( s)XLCE*TCG$z#yMhz7<77ZhlH;S|x4`auLfdff^V*UHx3vIVCg!0IE=a5&!@I literal 0 HcmV?d00001 diff --git a/public/assets/css/images/ui-bg_glass_95_fef1ec_1x400.png b/public/assets/css/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..398c56a9cb130485289d061475258e0a0b9e43ad GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fCnc6a#?2AmP!?*K(O3p^r= zfwTu0yPeFo12VciT^vI^j=w#>k(V)1qW$CZ|6)SVV-&*#dav<$DMuV&n0Dbpw@a7+PAHnpzne=^B_@85rcV g%D19u$jwj5OsmALK`vssB~Sx{r>mdKI;Vst0B*f;)Bpeg literal 0 HcmV?d00001 diff --git a/public/assets/css/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png b/public/assets/css/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png new file mode 100755 index 0000000000000000000000000000000000000000..1025df02a7da7f97940bf779a807a6fd64a93fbd GIT binary patch literal 5824 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 literal 0 HcmV?d00001 diff --git a/public/assets/css/images/ui-bg_inset-hard_100_fcfdfd_1x100.png b/public/assets/css/images/ui-bg_inset-hard_100_fcfdfd_1x100.png new file mode 100755 index 0000000000000000000000000000000000000000..5888e51ee1d2cc7043dcd7e68dd0e5790740d7e7 GIT binary patch literal 292 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 E19GBNuK)l5 literal 0 HcmV?d00001 diff --git a/public/assets/css/images/ui-icons_2e83ff_256x240.png b/public/assets/css/images/ui-icons_2e83ff_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..84b601bf0f726bf95801da487deaf2344a32e4b8 GIT binary patch literal 4549 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 F{{S81aohj^ literal 0 HcmV?d00001 diff --git a/public/assets/css/images/ui-icons_469bdd_256x240.png b/public/assets/css/images/ui-icons_469bdd_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..5dff3f962cd744033b2aef575491451a8b2ce6a8 GIT binary patch literal 4549 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 F{{RRLc7^}| literal 0 HcmV?d00001 diff --git a/public/assets/css/images/ui-icons_6da8d5_256x240.png b/public/assets/css/images/ui-icons_6da8d5_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..f7809f8566cd0aaef9af00e7caeca9d3720cf1b0 GIT binary patch literal 4549 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 DTfr$v literal 0 HcmV?d00001 diff --git a/public/assets/css/images/ui-icons_d8e7f3_256x240.png b/public/assets/css/images/ui-icons_d8e7f3_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..9b46228fb1e80406b2a9a65b694e5674494c2775 GIT binary patch literal 4549 zcmeHK_fr#0w@yL`gaFc{D^V0dT4;jQP=cXX>AVCfO0SASfFM=rQUnx)SE?W&(xgZz zf;0g`(@-LU^dg-=$cNsUZ|44R|AYI?&YrV7`^?#WcIM1EPmB$3F){Em0000c9kiAy z002C50bBGmXY-_v?$Ox>v$4K8YI1Ss|Hpq7zz(~aoe5+eXliH%;9-#g(;K%v&X&A< z+YjlA;boT|V7jEtse#smU$hatCS@iTEgOsLbpJfmt$^ZhY5a&SuPaJ;Q~Fk*MuY;) zGr6+K00Ge?|9dB0H^0hj_T?=nHJ|X*dq>EBexC&a-qE|I1&E`)fIeG5ebLqdXZDYe z259$sr~&}zoOQI+%^!YWw}&|q>scYa=r_w*&+I?wv6s9XcmDG0>bLUMrpmSHTK(F8YqIn6Wrq^=kf zi;Fjbc2D?5hdN#8S@G9!_$u|oKqF4Gc18K@_tNhPpw<)XfQJU3i4jqQ8uULi2^1mT z%7Xadc2)0hn&8u2g39Z<0^h#?tbSK?C9=Z*oc4k}+sah6Z!-*Z5ih`-Ko}{zM@67| zb|PP;1C^*vg;!4D+G z&{eSPkK%Y-7aQ|VambuVp0{l-1KsAbiO%G<>2%FSuC&r2wjX+s9^UjL`YxO); zS_qLjIr^B9>?3U3)m-{|?_{Xs378(rIwSBafjQo=mt8PoNv;+uEK4Q5QfrE7+#sX= ze4L$6q2-CTtDh3S!4B2>!{J|QRwk&TU#$2b17b;Y>1uQ^>XLRHcSpShjH62Uwi((4 z;oKc0V$PYr16yTN5cCzBhCJNWXqeEWBrXlW0oU0Q9%eqZngw^Ga4tu=?CEUTY&a@| z-dar3RWB|+J+4VS$SN$LM;n#W30ew^j@cMl8VYoF0`xlO7UU60Vt1e?RMoey-x{3cf(Y@pYX%E8qmO{giw(USgbz#r*+=>DDA5X!cRr~ z_xpw*mx^p<7n@)4`I&e$B6huO^Ksbs-{#FDvXQD%yl^Xo`oVXb=oS2wg%e-l zc~q(eJZgXu#6pv=ANa4wlni|eNOe>2q+5> zw9f=mFH2%ZYq05~$B=1TPPETy@f^bfxBXNg0QdZnxu4s+P6qf9y5lx!`o@4oX5z)o z%wC`_?kiPOALnKY-=i}$d0I>%B|Rp9m@`%oDx*69Yd5Mm@C{b>lg0TGSh_uF!+wf3 zQ{x}d(M(=SMwJ8ljJ)4^ZW?@L9;f{5N-UJYku*Qwr2@ehI3rh*p~B%dpgwgLR$qtQ zP-<8JsgxI-9H+PhHUxxdX|jM+J9gN2K6xGe(@39xz9W*Yw1Yq}8y4ylgDbr>TzIho zDq0gF)oO&odw)bKJE$kUV%4xmUp%~j)Il~B2C{1axH%CMEdXkyd!Ui z{QAYOU+goDKhMk<46{>FLqdglguC`rT;ka-U{$&cmYbs9YgV}xQQocy{7IWq{>s=T zBcpbuDkcn(j80khJurFnB6u|Je)V+s{V!=goH?`d}pOWUP&k(L8F9 zdqdKLc>PDIcaJz|m1=r-TE|o0o2D-ROm??yaYW`-AT4tAhlDIEN!|YURcx3T76yve zTUBmPefcdH%D9!aRK;J!{97+SJ%`HT3P`a!SN;x^Y7UUXq`Wq!KaO2au zkC5a*`86x9QWr7RunHHK<8^FF20%T3pT4L=MFi^n?AT-)6Ut?5n-Ep5SGr;Nbf^FE z(h$ud$Esvrm`H5f(Q_kPkTcatWl;vT=*c2?&HCFFwcj*LweqQ6vw)vzT;}1yd>muN z61jGj^ivYwcOo({a4t(0R4ib2E8=fPe}EIo%d)8Ce_5kEwAZ6IV`C+Odbk-jTtX{S zv2e^gn==IXkR#Ax=@3eh!$#x;J;T#Oql$jmw+ePxVn6!z+ zehVabVDQw1JD0?qt#3ZPp)OrrJahPDzvZ-SOLF~bWl0T=7Uumuu*O_Zb+oLCqX0~jADXVT+DsET>m*#>hP(fY{W^X? zBslaH^7vaiYTR(nT715mFHBR4H|q`n+2XND2jz?984QwgK-2JuV!ZHAS*z;!t}f!f z{0-c0RV79Sf`uHjZPg4Kb95j1u3aOc!<0?c3~HpSMP9;T@R8N`cVmYve8)KtHR`Sga?DvBS5Op(kC7+p(Sxt(1CjW4iYN%Jd(z z4DZ_VgL}ER>{TG6jKUO{AisUte%=ycg3dRF+nDx3fn!y6i`(w;;ZJfbcU%BtmTUPK zgGClFm~U#|p7bs!YizxsfEcVg!EWIXPFE{)1th2q_E3HSTA4CAO**6?cyk~-ra2~* z9**w!pf>)d5eoqivRc^m$D1dn54{)-SJN4&y3e{$YND5>Z?Nn#7?ZdWhTrhpT^VC# zoUfqgX0I9(^I-jr#w6P zB@=FwR~J5YjLz2I4@#A&4%?h3DhYP_$AUQq_avsk9EJTfFH01dR(%BFa{9$n_f(}i z+#+#|nf(jCd6gEE1^_j>Wy$;UkWVw5h&8wsFLG~KzpPW#056(ew#9`bgd_tywLJod zL*9HUQDDFM1cBKi9818vaGE4jQM)?QzpRqgNr8-b(|45VMJ1;3aC1V<)^?A5y`%p7 z^M4Ci*5?Tz?3@dYYgg*GCFm2?N#bjAqeCHTn?Zka{o-TfT@Jd;kCcQz`Fs&4rx(5jPq1qfO< zw5S;1rrGT^ZFOjSp?sszSE9=(TA|0tw#vv^%R|+n{CqaQ(Y#S}C|}YbWla}imRCCA zT)5$7vH3!cU@7c?`|cG^g6E&O*UncTg{h$7I-?QVs^*duO2~Eli#p7=bdhdAw#CDz z<$jJ{YlhljtVw~~@1*S|gy?1jtacFvd2ObUtw`VaAQHpu8}=Y6mg26c5nEWjK=r+O zW8P@7cdgoZAV_F_4!$mBlt;YFI66%g-{#!(Dcot;;aIKiP#+SpowFuStb@P$nKkT8~H_)Oy7F>TmP zJKgYkq^Nv!T(I2X9H@#pc6%o<(?K$o`1SWnHbs(qomGu`@*Y7nQ%!9V0d~{HR|Id; zx*@z-`X#e8PEVq6m=LX<)fCH&Q=%Xy;$!3&4cxj9SM=jOTd}UYz!jpl#c%}9m&Ac>P#;r7etr?raRLacEWgX)$d&k=Xw{68B(zaCCxXoEz%ZgR6)rQ~NlVacbEE zA=@A`s4FY86QIhL)6h*2Go@;sn*}#cU717h(L&7@X!7i!OO?l&Gpg$ zO|VjVC~-#M`4hp+$2Bm>(ccB2?(B2N1+L@ec-O_$#nJhZU$2Yu*&%=q%22CP1M~Pl DwY1D= literal 0 HcmV?d00001 diff --git a/public/assets/css/images/ui-icons_f9bd01_256x240.png b/public/assets/css/images/ui-icons_f9bd01_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..f1f0531ad5b02b7f891d84a6b6db6ce7290b65de GIT binary patch literal 4549 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 D=xKF{ literal 0 HcmV?d00001 diff --git a/public/assets/css/ionslider/ion.rangeSlider.css b/public/assets/css/ionslider/ion.rangeSlider.css new file mode 100755 index 00000000..052d477e --- /dev/null +++ b/public/assets/css/ionslider/ion.rangeSlider.css @@ -0,0 +1,126 @@ +/* Ion.RangeSlider +// css version 1.8.5 +// by Denis Ineshin | ionden.com +// ===================================================================================================================*/ + +/* ===================================================================================================================== +// RangeSlider */ + +.irs { + position: relative; display: block; +} + .irs-line { + position: relative; display: block; + overflow: hidden; + } + .irs-line-left, .irs-line-mid, .irs-line-right { + position: absolute; display: block; + top: 0; + } + .irs-line-left { + left: 0; width: 10%; + } + .irs-line-mid { + left: 10%; width: 80%; + } + .irs-line-right { + right: 0; width: 10%; + } + + .irs-diapason { + position: absolute; display: block; + left: 0; width: 100%; + } + .irs-slider { + position: absolute; display: block; + cursor: default; + z-index: 1; + } + .irs-slider.single { + left: 10px; + } + .irs-slider.single:before { + position: absolute; display: block; content: ""; + top: -30%; left: -30%; + width: 160%; height: 160%; + background: rgba(0,0,0,0.0); + } + .irs-slider.from { + left: 100px; + } + .irs-slider.from:before { + position: absolute; display: block; content: ""; + top: -30%; left: -30%; + width: 130%; height: 160%; + background: rgba(0,0,0,0.0); + } + .irs-slider.to { + left: 300px; + } + .irs-slider.to:before { + position: absolute; display: block; content: ""; + top: -30%; left: 0; + width: 130%; height: 160%; + background: rgba(0,0,0,0.0); + } + .irs-slider.last { + z-index: 2; + } + + .irs-min { + position: absolute; display: block; + left: 0; + cursor: default; + } + .irs-max { + position: absolute; display: block; + right: 0; + cursor: default; + } + + .irs-from, .irs-to, .irs-single { + position: absolute; display: block; + top: 0; left: 0; + cursor: default; + white-space: nowrap; + } + + +.irs-grid { + position: absolute; display: none; + bottom: 0; left: 0; + width: 100%; height: 20px; +} +.irs-with-grid .irs-grid { + display: block; +} + .irs-grid-pol { + position: absolute; + top: 0; left: 0; + width: 1px; height: 8px; + background: #000; + } + .irs-grid-pol.small { + height: 4px; + } + .irs-grid-text { + position: absolute; + bottom: 0; left: 0; + width: 100px; + white-space: nowrap; + text-align: center; + font-size: 9px; line-height: 9px; + color: #000; + } + +.irs-disable-mask { + position: absolute; display: block; + top: 0; left: 0; + width: 100%; height: 100%; + cursor: default; + background: rgba(0,0,0,0.0); + z-index: 2; +} +.irs-disabled { + opacity: 0.4; +} \ No newline at end of file diff --git a/public/assets/css/ionslider/ion.rangeSlider.skinFlat.css b/public/assets/css/ionslider/ion.rangeSlider.skinFlat.css new file mode 100755 index 00000000..8618e1bc --- /dev/null +++ b/public/assets/css/ionslider/ion.rangeSlider.skinFlat.css @@ -0,0 +1,89 @@ +/* Ion.RangeSlider, Flat UI Skin +// css version 1.8.5 +// by Denis Ineshin | ionden.com +// ===================================================================================================================*/ + +/* ===================================================================================================================== +// Skin details */ + +.irs-line-mid, +.irs-line-left, +.irs-line-right, +.irs-diapason, +.irs-slider { + background: url(../../img/sprite-skin-flat.png) repeat-x; +} + +.irs { + height: 40px; +} +.irs-with-grid { + height: 60px; +} +.irs-line { + height: 12px; top: 25px; +} + .irs-line-left { + height: 12px; + background-position: 0 -30px; + } + .irs-line-mid { + height: 12px; + background-position: 0 0; + } + .irs-line-right { + height: 12px; + background-position: 100% -30px; + } + +.irs-diapason { + height: 12px; top: 25px; + background-position: 0 -60px; +} + +.irs-slider { + width: 16px; height: 18px; + top: 22px; + background-position: 0 -90px; +} +#irs-active-slider, .irs-slider:hover { + background-position: 0 -120px; +} + +.irs-min, .irs-max { + color: #999; + font-size: 10px; line-height: 1.333; + text-shadow: none; + top: 0; padding: 1px 3px; + background: #e1e4e9; + border-radius: 4px; +} + +.irs-from, .irs-to, .irs-single { + color: #fff; + font-size: 10px; line-height: 1.333; + text-shadow: none; + padding: 1px 5px; + background: #ed5565; + border-radius: 4px; +} +.irs-from:after, .irs-to:after, .irs-single:after { + position: absolute; display: block; content: ""; + bottom: -6px; left: 50%; + width: 0; height: 0; + margin-left: -3px; + overflow: hidden; + border: 3px solid transparent; + border-top-color: #ed5565; +} + + +.irs-grid-pol { + background: #e1e4e9; +} +.irs-grid-text { + color: #999; +} + +.irs-disabled { +} \ No newline at end of file diff --git a/public/assets/css/ionslider/ion.rangeSlider.skinNice.css b/public/assets/css/ionslider/ion.rangeSlider.skinNice.css new file mode 100755 index 00000000..51063a75 --- /dev/null +++ b/public/assets/css/ionslider/ion.rangeSlider.skinNice.css @@ -0,0 +1,85 @@ +/* Ion.RangeSlider, Nice Skin +// css version 1.8.5 +// by Denis Ineshin | ionden.com +// ===================================================================================================================*/ + +/* ===================================================================================================================== +// Skin details */ + +.irs-line-mid, +.irs-line-left, +.irs-line-right, +.irs-diapason, +.irs-slider { + background: url(../../img/sprite-skin-nice.png) repeat-x; +} + +.irs { + height: 40px; +} +.irs-with-grid { + height: 60px; +} +.irs-line { + height: 8px; top: 25px; +} + .irs-line-left { + height: 8px; + background-position: 0 -30px; + } + .irs-line-mid { + height: 8px; + background-position: 0 0; + } + .irs-line-right { + height: 8px; + background-position: 100% -30px; + } + +.irs-diapason { + height: 8px; top: 25px; + background-position: 0 -60px; +} + +.irs-slider { + width: 22px; height: 22px; + top: 17px; + background-position: 0 -90px; +} +#irs-active-slider, .irs-slider:hover { + background-position: 0 -120px; +} + +.irs-min, .irs-max { + color: #999; + font-size: 10px; line-height: 1.333; + text-shadow: none; + top: 0; padding: 1px 3px; + background: rgba(0,0,0,0.1); + border-radius: 3px; +} +.lt-ie9 .irs-min, .lt-ie9 .irs-max { + background: #ccc; +} + +.irs-from, .irs-to, .irs-single { + color: #fff; + font-size: 10px; line-height: 1.333; + text-shadow: none; + padding: 1px 5px; + background: rgba(0,0,0,0.3); + border-radius: 3px; +} +.lt-ie9 .irs-from, .lt-ie9 .irs-to, .lt-ie9 .irs-single { + background: #999; +} + +.irs-grid-pol { + background: #99a4ac; +} +.irs-grid-text { + color: #99a4ac; +} + +.irs-disabled { +} \ No newline at end of file diff --git a/public/assets/css/jvectormap/jquery-jvectormap-1.2.2.css b/public/assets/css/jvectormap/jquery-jvectormap-1.2.2.css new file mode 100755 index 00000000..5178c188 --- /dev/null +++ b/public/assets/css/jvectormap/jquery-jvectormap-1.2.2.css @@ -0,0 +1,36 @@ +.jvectormap-label { + position: absolute; + display: none; + border: solid 1px #CDCDCD; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background: #292929; + color: white; + font-size: 10px!important; + padding: 3px; + z-index: 9999; +} + +.jvectormap-zoomin, .jvectormap-zoomout { + position: absolute; + left: 10px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background: #292929; + padding: 5px; + color: white; + cursor: pointer; + line-height: 10px; + text-align: center; + font-weight: bold; +} + +.jvectormap-zoomin { + top: 10px; +} + +.jvectormap-zoomout { + top: 35px; +} \ No newline at end of file diff --git a/public/assets/css/morris/morris.css b/public/assets/css/morris/morris.css new file mode 100755 index 00000000..ed0b490c --- /dev/null +++ b/public/assets/css/morris/morris.css @@ -0,0 +1,2 @@ +.morris-hover{position:absolute;z-index:1090;}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#f9f9f9;background:rgba(0, 0, 0, 0.8);border:solid 2px rgba(0, 0, 0, 0.9);font-weight: 600;font-size:14px;text-align:center;}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0;} +.morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0;} diff --git a/public/assets/css/phpci.css b/public/assets/css/phpci.css index faff0ad0..06aa9163 100644 --- a/public/assets/css/phpci.css +++ b/public/assets/css/phpci.css @@ -44,31 +44,7 @@ h1 { } -.build-info-panel { -} - - .build-info-panel h1.panel-title { - border: 0; - font-size: 2em; - font-weight: bold; - padding: 0; - } - - .build-info-panel h1.panel-title span { - font-weight: normal; - } - - .build-info-panel img { - border: 1px solid #fff; - border-radius: 50%; - box-shadow: 2px 2px 2px rgba(0,0,0,0.1); - margin: 7px 15px 15px 7px; - } - - .build-info-panel #build-info { - margin-left: 90px; - } #loading { background: #246; diff --git a/public/assets/css/timepicker/bootstrap-timepicker.css b/public/assets/css/timepicker/bootstrap-timepicker.css new file mode 100755 index 00000000..873e0c72 --- /dev/null +++ b/public/assets/css/timepicker/bootstrap-timepicker.css @@ -0,0 +1,121 @@ +/*! + * Timepicker Component for Twitter Bootstrap + * + * Copyright 2013 Joris de Wit + * + * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +.bootstrap-timepicker { + position: relative; +} +.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu { + left: auto; + right: 0; +} +.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before { + left: auto; + right: 12px; +} +.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after { + left: auto; + right: 13px; +} +.bootstrap-timepicker .add-on { + cursor: pointer; +} +.bootstrap-timepicker .add-on i { + display: inline-block; + width: 16px; + height: 16px; +} +.bootstrap-timepicker-widget.dropdown-menu { + padding: 2px 3px 2px 2px; +} +.bootstrap-timepicker-widget.dropdown-menu.open { + display: inline-block; +} +.bootstrap-timepicker-widget.dropdown-menu:before { + border-bottom: 7px solid rgba(0, 0, 0, 0.2); + border-left: 7px solid transparent; + border-right: 7px solid transparent; + content: ""; + display: inline-block; + left: 9px; + position: absolute; + top: -7px; +} +.bootstrap-timepicker-widget.dropdown-menu:after { + border-bottom: 6px solid #FFFFFF; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + content: ""; + display: inline-block; + left: 10px; + position: absolute; + top: -6px; +} +.bootstrap-timepicker-widget a.btn, +.bootstrap-timepicker-widget input { + border-radius: 4px; +} +.bootstrap-timepicker-widget table { + width: 100%; + margin: 0; +} +.bootstrap-timepicker-widget table td { + text-align: center; + height: 30px; + margin: 0; + padding: 2px; +} +.bootstrap-timepicker-widget table td:not(.separator) { + min-width: 30px; +} +.bootstrap-timepicker-widget table td span { + width: 100%; +} +.bootstrap-timepicker-widget table td a { + border: 1px transparent solid; + width: 100%; + display: inline-block; + margin: 0; + padding: 8px 0; + outline: 0; + color: #333; +} +.bootstrap-timepicker-widget table td a:hover { + text-decoration: none; + background-color: #eee; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + border-color: #ddd; +} +.bootstrap-timepicker-widget table td a i { + margin-top: 2px; +} +.bootstrap-timepicker-widget table td input { + width: 25px; + margin: 0; + text-align: center; +} +.bootstrap-timepicker-widget .modal-content { + padding: 4px; +} +@media (min-width: 767px) { + .bootstrap-timepicker-widget.modal { + width: 200px; + margin-left: -100px; + } +} +@media (max-width: 767px) { + .bootstrap-timepicker { + width: 100%; + } + .bootstrap-timepicker .dropdown-menu { + width: 100%; + } +} diff --git a/public/assets/css/timepicker/bootstrap-timepicker.min.css b/public/assets/css/timepicker/bootstrap-timepicker.min.css new file mode 100755 index 00000000..b59d6f76 --- /dev/null +++ b/public/assets/css/timepicker/bootstrap-timepicker.min.css @@ -0,0 +1,10 @@ +/*! + * Timepicker Component for Twitter Bootstrap + * + * Copyright 2013 Joris de Wit + * + * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */.bootstrap-timepicker{position:relative}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu{left:auto;right:0}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before{left:auto;right:12px}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after{left:auto;right:13px}.bootstrap-timepicker .add-on{cursor:pointer}.bootstrap-timepicker .add-on i{display:inline-block;width:16px;height:16px}.bootstrap-timepicker-widget.dropdown-menu{padding:2px 3px 2px 2px}.bootstrap-timepicker-widget.dropdown-menu.open{display:inline-block}.bootstrap-timepicker-widget.dropdown-menu:before{border-bottom:7px solid rgba(0,0,0,0.2);border-left:7px solid transparent;border-right:7px solid transparent;content:"";display:inline-block;left:9px;position:absolute;top:-7px}.bootstrap-timepicker-widget.dropdown-menu:after{border-bottom:6px solid #fff;border-left:6px solid transparent;border-right:6px solid transparent;content:"";display:inline-block;left:10px;position:absolute;top:-6px}.bootstrap-timepicker-widget a.btn,.bootstrap-timepicker-widget input{border-radius:4px}.bootstrap-timepicker-widget table{width:100%;margin:0}.bootstrap-timepicker-widget table td{text-align:center;height:30px;margin:0;padding:2px}.bootstrap-timepicker-widget table td:not(.separator){min-width:30px}.bootstrap-timepicker-widget table td span{width:100%}.bootstrap-timepicker-widget table td a{border:1px transparent solid;width:100%;display:inline-block;margin:0;padding:8px 0;outline:0;color:#333}.bootstrap-timepicker-widget table td a:hover{text-decoration:none;background-color:#eee;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border-color:#ddd}.bootstrap-timepicker-widget table td a i{margin-top:2px}.bootstrap-timepicker-widget table td input{width:25px;margin:0;text-align:center}.bootstrap-timepicker-widget .modal-content{padding:4px}@media(min-width:767px){.bootstrap-timepicker-widget.modal{width:200px;margin-left:-100px}}@media(max-width:767px){.bootstrap-timepicker{width:100%}.bootstrap-timepicker .dropdown-menu{width:100%}} \ No newline at end of file diff --git a/public/assets/fonts/glyphicons-halflings-regular.eot b/public/assets/fonts/glyphicons-halflings-regular.eot index 4a4ca865d67e86f961bc6e2ef00bffa4e34bb9ed..423bd5d3a20b804f596e04e5cd02fb4f16cfcbc1 100755 GIT binary patch delta 19858 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�&-&G!WRnU_dGhO~6@ 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 JDHiiDCMB)T*>@ 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 - - + + - + @@ -46,7 +46,7 @@ - + @@ -58,7 +58,7 @@ - + @@ -71,14 +71,14 @@ - - + + - + @@ -93,10 +93,10 @@ - + - + @@ -110,13 +110,13 @@ - - - + + + - - - + + + @@ -127,14 +127,14 @@ - - + + - - + + @@ -148,33 +148,33 @@ - - + + - - + + - - - - - - - - + + + + + + + + - - - - + + + + - - + + @@ -187,15 +187,15 @@ - + - - + + @@ -204,11 +204,11 @@ - + - - + + @@ -221,9 +221,9 @@ - - + + - + \ No newline at end of file diff --git a/public/assets/fonts/glyphicons-halflings-regular.ttf b/public/assets/fonts/glyphicons-halflings-regular.ttf index 67fa00bf83801d2fa568546b982c80d27f6ef74e..a498ef4e7c8b556fc36f580c5ff524025bb11c84 100755 GIT binary patch delta 4608 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 Y_=v$dDawI{ma%FsiY;MtkB0WY02poREC2ui delta 22555 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 O(9J%VfB5J1as3-`K^%tw literal 0 HcmV?d00001 diff --git a/public/assets/img/ajax-loader1.gif b/public/assets/img/ajax-loader1.gif new file mode 100755 index 0000000000000000000000000000000000000000..cc70a7a8b3d426c30e76686fac70c0dcd4c70125 GIT binary patch literal 8238 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 literal 0 HcmV?d00001 diff --git a/public/assets/img/avatar.png b/public/assets/img/avatar.png new file mode 100755 index 0000000000000000000000000000000000000000..0ef6233d1dc80547a382d0cfee2c3d15b9ca0849 GIT binary patch literal 27738 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

      8*SIASA6s*S%H`VI(iYexc?be}fdxH{d z-8&DF61dVH03H{QzrYh$eY!ryn*-x-?8HOE-x$F3nsg@0R1&#uD>6(aPB;5&!s4 zp_@Znl1*D_KS%U!S+#zCeq?o=mi=Sr+%P9cTXmU|Uko(3)&5Z=`Wy=Um^Qt-l7!B; z4MB$m%czyr9tyh;-+rU?J9_a&ZQJi$Agt|qZ3=m2@)h_acNe)1(7D~{YXfW~hQx&~ zIQ{ekIR#gQtL(aH%=YSInXh&02fgYYcrXA5$5k8D0pWSQCXg^PPnoZENJFX%T7r*U zta>plJO$jn`hUAUp3>>~5}%O>DAPBY2(y{~1u@F5qPtB#vOPZFUAOwEA_}af?%C2uq-vGnc!~DqFilln5^~K&9n(W05JK~d#s*D{j;2{!6uy#UH zN^DI7kE8@#H-o>|(Y^ z*eBsE{XZczPBI6F@=rSV<+sUx#J`KAb7mJL-hCmqa zgK)TnkkiQ*xkc6N9Q2uFIRG`|E4w$lpVfGjS71__eGnt_lnx_DR6;2e5ts9vC)m2!KAu9uy&7oo#!vBCJWxzyyu6#a(V!0`V_h*+_Qt|AT>Xii>kED zX9gNKT6?Jf{39PwdzY;o?S)Wdh)wRJC94&K7kf~4Z;n_6%@MUJ_ z$L-Gk@bD|CZ?GyBpgV}doeT*(nd&n{P*U;nkF6vY13uuf@rq+Y$5gaYZ?$G$SBgIB zjV|F}9H@|oKC0sB@!sEafY{(OR@lWteLPa)uebB`yk%6m;#1QfY;*oS%j6N$T4NtC zHNE$1qG{_09A{|Xeh~8-#`o}isu^d=RP^9fx60mfUvjBQyF;EB9z#FOqQzo40|V3R zrv9wd&v5j$moYb0kHCt}^MbDoCQzvtzc&i`()%@N$1+`yy9V*Pp%+&}V}ZPU&3HQB zQ&9{_bFbM1d@lfAdkrxT=N0k}^O5(nCR}2frGdCB*+QmY|C*Sbn!WY>{7irNF9)|0 zEp1Gjuf(***leZHE>6rbL4&l?cmDEf)~3=Hdn7AR5W!{oOvY(49mGc#kN+*N!mYsMh( zc~ywKCFpwaTWA3PvP$4FY zVU0I?CoOe}3p(g=Vl<%~LbYDV*#Ym+N*<4hygsPV=&Ef87~)+EYtw=(8UL6I8NBm% zfhf9CE$Lh=F1xgiiz*ZYci}xTCX)!Tejn<)IiNUu;{FkTBlspH;u8{<`suQ5GZBI+8rj5nr|IBu0J_Cz zoBe@oqfxQ9Yt8c2CY~Na(3`AQ-d~!3Bjz41Juc1CS0~nI)%|W3H+wy>ZrG!yuv$U` zw3Pe1Z11A6fn}h@mCG#dw}DI$bs2FhyE|h<&aBhps&*k}3;*+rb_kUov-v~JT99Qz zsq~w_tJ&1^-N6r~cMq9O&F4yq$Nk5LfWXHANwK`MoAb-HldS8vBDHyhE&bPZA&#JC{ak7) zWX`D(^oulmk!y zVjPkA94{58ahXG@0#2nbCuMQV^(yttiP`ka(5ODsXdcZ&^|PqWN}HU4l}%9dYHw%Y z_uRGC@$cU?UG#=>SO5CE7F0s_b%_?ru17K&Zc`}J#?d>`F6IhM4+X#}=MlM!dZkyc zCY4RjhSg230ZPtmr-@63*NJ|hOO=yWeJJn%e`2hDes{e0!N$QHWWvU!{mvx5nedKl;P(*X!EmflnFNaiZRTPBF0zYRry*cV4em z{%zgMr891F%D4`2oQGbLK*;%Q4EN$}6_UH%EKGVHsh8_m30f}VK9_$$0}dno4Kr(S zXd@(8C^Hf3{1@tY^rii5B%7B&1e2L)Ul_?3?(4EMx=#d z>zy#oJ|n(t=cGTe7Pr@mTGi7$^8EObTcIBmoM${1H2M=y;=}%G)%|qcVXxC zXMtzEbt?$X2Rf3l1sjhF=n+^4kOnl`bN+B2TjG8nl

      *-`d8R5g^GAe7X9kwhRR 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 X7JJ2FuUPCAi@jp8S1k7bKNkBxb#p1P literal 0 HcmV?d00001 diff --git a/public/assets/img/avatar04.png b/public/assets/img/avatar04.png new file mode 100755 index 0000000000000000000000000000000000000000..63fa709b904eed94a502a53c6805a43842673e7e GIT binary patch literal 44586 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 literal 0 HcmV?d00001 diff --git a/public/assets/img/avatar3.png b/public/assets/img/avatar3.png new file mode 100755 index 0000000000000000000000000000000000000000..b1afb21b9096261bec3fbaf033e688507229a13d GIT binary patch literal 32476 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%0AdeKAd zA`Qe}UUy2e#bA(1zj9u4C~@g{UsAx-QDLh}Vs=kq>Hh~1E|q9+p8n^AgSpN7|n zO*J{pS3DnQ<1*bun-v z(BgkyF?imcpJ7&?(h^pR$37Ci+NJaOu+7TEugGJYjX^2=Y%jQGmm1%o&eN1V2&2y= zSxgLSPmN|V&3xO(VISJiY4+F_s^f;yTdDxvW3pP;wL-XyHpZFK=ggztS5$l)M$!)p z0kuSv<*DJpBUbLeit}v!UAOXWSentIvEvn~j>bg%Eh*J++iDJ6(*_E`EY3Kic)^y~ z$XfN@uqc~3Xlf)Vn}WPfq$uU;XXeo7AU2ve{2B9TnB}obTlsk0BHkSjE}1O znoQ@8)>_AeKbK;}WmYjG=R0DaB{9=1obbX~(Y4W`QrqE8Q`KZtx=(D3*;CZIb z2e1o!`N4cCi6gx{Bf(2KZK$TcLw5zFy_1o+lM%vl6<`&bkQOsMO!w&M0rIlS?<%B? zf+L@_{gbwT()Lf<{z=^{(k^trJ=(B literal 0 HcmV?d00001 diff --git a/public/assets/img/avatar5.png b/public/assets/img/avatar5.png new file mode 100755 index 0000000000000000000000000000000000000000..29ce634387f662bc995e3c74976f4f0a66b16d36 GIT binary patch literal 24988 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

      W9VUU7~UmyFp*>RoKf!p8p21Tp=FiCC^- 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 z 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 K`a)jEf^u?>fhOM5YL7bk8WeSLLV%X{eU zJaUxhP(t{}(bo>5dN-9N>gaeAC*&X;#hQOW{dh0ePvKI7L<)Wqm?(V9INNP@-rTh_1!q65B3hmX|YJpbFbgXR^>k?GhTZokokHVM1}9Bkjl3kNl9Oi`1N(i zJI&uVyQ0%m-!dIyLdi;PSjt)s*68Fkna0T;ERbP}e~H*eG5HQLeqBm=Z|KpjT?dX$ zmaNJT%9t)qBVGlt`1!kjcSM&~5|Vdh;;uG|tqOoaMV$%Z{#y(CKvo*7ePFOk^6C?dqx?f%NfOLE+v)xEVn{Cqe8+LC4Q(M|BGVv+Eh|wL$}z$Mg14D z5n0TJzA8?*ww~;8R=`d|=a}Rsk`|S+zKwWLhZ}%3Q#5Smfr{bmb>uQ`I1lIt^)Ge7 z0EQ|2v%gksNAEEHFX(Y|x(Jlzoq!A>T)DxaM^NB;K*=i~P|pRv01yTs*~ zv2B1B(v6YRRGAq6SiQTGS=CImcfdK(fxZp>e745?^Ro+t#ZFaPhJco_6ZWa z-yKw~*R-57?_J<@x^DU3(tpsLvG2DhTcaH2nr^~f39c&imucnbdLT5pfQ&rJ|L3=u z%=k9;8zp5e??I@*aHxiRgDTOn1NpqSJCZSOlk3XHW@f@kf;~veB7f;mJ-t19V38QqY9EDi<+~#heutfPk4t~JVA2qD$gXq>+ z{>#;78zo|SS}DcOQj;8cVz85bf}iXwb&`HOH`=12ZPe9jzz)!?-SHYQ&Z}xynb6A4 zGWFbd(6OUoV7rP&SYW;+PQ7C1m>0L{4s7qk-ik6s?#E>@t^M33Mq`;B8f;G_KL~TI<_s-)nT4zI z77?KFO=ALN;M3~*mehnEL9p4Yfhw;a0Xp#fXhI6$N`VXWde0t2^aED4e;(Nf8N}Lg zf?39Hm#lfbtdfX#A}2h1Fo`Ei{5 z#kT2UvJ^lXMeWg=5z7zLMLyyT z^;PFs=JUc{vrsi~e(jU1EFz22N|vZbYl%o!%h*=my^qqacsY`eR(118PW+UvTA62k?t%Kl z?Eg+yth*i$tqErLC&$hD3{77Otxj>SconKPf7-##YohGLMGvFcep*FyUeXH#mk~+p zvvR8AZlWay?#ALJ1{bHJkK?NA5n98!s?l9lKmL>CcwIBTdv_t3p8G;|bhbB1)xdRB zys%KwyyArSsQAIDS0Cb!R0@oal-$3Ce)k4-B0{O|N#Pob*_^!M7(*hOhFS+ORD-`e z#=}emuEwkZU_m16yjJek_lvyRhhgNwx&!6_j{E>RqJJoX*k)HB2JM{o?(6@RZydBw z@g7_)q1VqlMBC(t!IXVFFR!PX05uh{n!WZ5jehc;=!m`q@d&378Cg%RrYWB(shNii zb}05SXen2gMhxFB6>s~U4ee1|9*jfUc3!`)jqjv| z!&NTTIna2IcKj{Zqr@%r2g|||;M{|#k18%R`pj;)ECJppT7d~XB@54z+Yp3fmXY{H zpfOh4(dTKyLcwvi+GL%LvG{wAUaiJ^f%;Oz0Q(Ee_w?5sm)`gJ*X{0P7Bme6qc^r? zIUCYhmMfhu<9qR9^-rU`nMDFKKjZtFf&gOHLiQvp$^($5i+}F$;`bbL=7B|d50pUh zj=z-U$4Pww^IA0XB31PH#O6PG`+TwEQ=jjx#0mIP;zUxj#PRu*5Not?&0b1`wQ$?! z@p_r&srZyaKCr-kE%tf(!Xm$mJ^G_FU9E0nHX!>`s&-*Wv?gRp@#{S^iw3DkF|sDRDFyO_mnmg|@sxgxS z!8PPcxu>}^wX5!Xn^{Eg&p5*)1IjCo`(HpZy6g=? z(4s3ZFeIX6s;W?z4pfyD7V%(Xeaw*00{yPfo1TsX#Y}0_ca`CfWz5#N{qbfNlQMM#YL@w58w(=P$d z7P?eE^VP%WKh5ygfW)^k@Q8Nk)qGm_MhU}BcRc?-`uvpNwRb>E{-N>t*JDXC&`XV1 zt^g_2Q-R%_*|c!|X8}d@BlBZu;M*VO6c z8xq4}!Oa&Zr#d*li#}GA6-o@>NVM{%X-3ucm_;23m8O?KDr(g#@AucP?92$Y-ITRv zh#1F1-sieuu2lRg+b7Qe%DX^WGR9lw_FbUaYQDxSO0V%I;0yO&t*64wgsf;7qF_;b zyl9rCU|}DWxP_OBa*Hu(Eo&6B9Etz9`2Oq8kwygcN#}hq4#F+?tz4Dd)-yap$ zOM+A0BUXJqGCw+9>V2iQbSKR$Sf3YXjXsQ-tZCm_2I@UOb{heeNhXd-1e0hk;5 zW~60lIAguKFZcAK%u?WW?`<8R*ug5FH9xqalmEQD+C1@5m>af6QI^|p;TJZ;zMiLN zM1!uoz6&>$y^VY_lt~CTIO2=1i}B~%0lx5Ku>V#$^``ON?wV2VIBcV4%p!)90si+& zls}fKdc)%emSYp#?Rf`Yzom3@OG?f0?lR%=JSLCPjj;)~#V&RjF-<1H_H_xQ6epNY z``~+tH3{xnU75=MeCDB7kBT2H#=tm}d?inMrq!+Er>=#i+g-mdEw5&NldoGI@+9NP z9eT8UxBLv*)3f;C2f4g_gLcU{l#)~P20Ma6** zY_)1Y)*&1XHa87m*f+tWKdtMF#y0G*EZ2PppSGlA1+e$? z6eaJ?Fyi1H)_DhL%<6Tch(6G0^#C#S`nBdRk=QkE)^7m%p{vDcxHzCx*JLRCND0zHse{dU|Dda@bQN+!GoYdJI0v;k38db@LlT;E*LFHr| zia`4MW7#?iuMHEy!N8<;@$54>GJrEA$VQgVH#%~xD>yi&o7<66;g;e2efe}PHkU~{ zm@bAC7d|`d7bl?-zAO4rSFTXxN(d+%XKz^&h&Vf|4;>ZDUbYn%u1A4IVzJWL$;zOsGREQqKqQf1$#&68&<`CAhZu2UIV4@UTp4=i~q6ttxz4 zQ(H1hFnp_wi)g3ve$u&3)cYiJ)u=P{q8X;d^{D_KmE&AUxEd8E)C!)4&N9^0+s&V% z6wRN(;l6lFcA+93iUK2{XL1LQSt!!Qpg2Wm9ZZbkyK>YQdR1>{nG{B=l5F?_DF!|B zNzu>g%S-!7XH2kluN56auLK8W`z#xof&)FAD(znecHMD4Dy~=~rbZ2dE9O~83U#o3 zwUxR9KFP*PgvJ$=7>SGhIsM}y`#@;dSd zt`3~f&dx1avHAwbN*&dx!p2^p_~9%5FME^u^(_ryn>) zHDVu#*#y2Uq1r-u<;-ORV2Uf%zyP8Le;aJc9^lcW>-_8~@P@lvs5p8E-4|4cvSbEo zf-KvMX3lli!OvlkaLXwwd>tM<bJYi4*#|aGP9aj2UgRuQd3-Xl& zD@RJ=M-B-Ex22)jf%E$RBwic z?u|9YMQf%c1A7gFje{+!mO#fTNm6L82Q3g7qUm}uTJE$unOtrQhDBSoojXGZQ;u3= zc^4?`##T55j)P{`AD$s(`KVJY)8{>$!TzTi7>g1muWX89iiH|Zlfa>{hXl=(3aB}Z zqVW-j*k$RNf?a}yg-uhivt#m*;SXfL(wBF-Gb=<*? zAXnyJ3|&~?0f*>g0}>4BPi1mXTh-2EZhb&F>uKGFFC4}*Txu+%sK)c!vi0BM6B zS)cMNnKZf6iJ}<(zY~g(4j=9bLuQHGu%up0dA~27>rL8DLycw zgM*mYKQ}Y~Kp0B+B^-b;GzA^*oni2{;Py!^Q|%G>U^1C}9}?=uu|1di9Ab;Ufc=XQ zsfxM?&w#GrS8!89ZX^?S(TuZF;k|1{hDcqMsfODL&b(&BAn@={MM2Wz>%f30abDlSrHpy3&%no{oVtP35|o?&<%zI51K z0|i0xs@>G`N#6g|6Q#KqWke~jlgM|LemH7qVwP*S*7bWf-T0$h2r0kceTal3|Xjloz zau(AA{>WZOq>0*by=FxYf8)7sYP1x}X5S@Owt`&K&ys9PRPMlzkaQIZwqT@=`n{Zc z@N{j_k`v5yn51H&YD+G}A~o@O>lJdwI=mipxYxc!MP0}lW5q*y5}JJRPDu4`n2<+4 zd?H=QBU|H`GuJ~b+|mfzPQhR-jIy6K9o4a5fatQYMsNxa#cTvYyO5RhcVQ*6Su<7s zzO+#5#she*O150~IHf=JfCp8lv#0jBT#e4?(B>f^Muw^8y5Or+2}yA{|~JP=WR*_4c+w0j$d{(ZDBGJPYcD< zP#xs%x7yzaFR&NO?cZqXAv4$?Qj~^M?q3MbIGd_2rln-TO?P$>C;q8UObr*F>#+Of zMT9}`k;Jr0(dK0wX$k_dj*zd!L({LRpsw5E9V1mxbBE!fs;*Q$ajE{`b97M1bNCru zjdOR|`5mz16rGd+1T>@@j$LxSL2W!pra1Yio=L7fR%MhO*ph?7*TU~-KXOw$L)NVV zBsVa|A6W0O&%vZ`N`_GLC>3hA&@pHy1xmqR1f#MkNsZuCf}eG_?8Ot4!bW1sH>?{c z(Q?Ip=QHwACTy)6I@Q!+F&mH=RJUr7J*cLWlCyZF9cqx6IV$t0n{fkk<$_eWn2nz^ zKgA-k6rAH!u2OUe?(m@pPQ~P7*wvo@B@)V021Ie@k}x>(rDX<9gPPZdo}(Qo(PY0kO`w}`e^!sOZDMWAP9jDf?7TUj#;=l2!?Sb$)IGS z<_@HJ){H}oLID--=q^Z=BmBi$PB^ z`mOYjkr`1ZbG3oPA*ZG3gRbh&UV}Y{#?!nRx_H}%_VnWvl#3E5jvnbgPtx&qA*r+P zvWL&lr#ppOkvJ}gM^HR1w{-nhMA}V7J5LV^4n!BSq#RX1;XMYHt(HFdp2jO(jmuqH1iYE+nYAgZw}2Pk6)=016%)E+=7 ziBq}y(pUzsH*kU!n$mf%0zVLi1xE@UhBOqCgh~@zULH$oaCiW2hE#m#*0Ouj2> z^ArS}5rNnem@lZg_gp0bem8R2qo1UvLV-6P8M5(Ao8i)Kmh$Yrq|M-3o)A9cl&G+0 z`HggS(4)jVhui8SpI{fU%}1FBg+S!yWCV0gkw9CqK4v)@X%i)QI|x=JZD&(Bi@1JD z8SWv0^O_0O#ZYqboFp^?!JS&N6OCEASZU3Sl7Z@AbgZn%*@FUgbiL1iEnSU&op^Py zn=n!)3AP|y%ih3o{5dh6j6G}YQ~Gmx2b=Rz?Dw+%%>Mf%+*vVes20R44UD6xDH&xe z_Ltg0p37oFE?;xFoQ1dqXQ|hu%yrrQ8ow(wU2;>6Mi|||Jm}vmi)@&5KQkaq(QTA! zr~%trwY8GxuRD&2?51QmxN;99W2D6Toe;epgzObPbC7FpuL=M{t+E=RS8c< z9G$lq@=!?x1CZ$;0Dj2k01y|YC<4WX^qXI3utpds#Ai4A+DZ%}%^i&91krs|{LWdG zkq%Yu2X4uKp-mi0m|-tiV+;`pgk?&~qicbLF8XZZ6HI4GrkKi{6P44{@(sX@!Lu$% zFo?(4;y?LcrKVrjy5@YfO64n5#ZfGZw1Jtuwu;q1K@eqMyQ;f0>49BU0kB8Y z94hW2Ns;=l%=t0G23}4*hy634gPIeyqCE?981;V?=6JwQK31+Z+DkE=H;JZSMqGA21{3^L$?{=R5zPT3DSv5(vy3V!}9tM5H<* z-`g2j&7+dV#8>z{X17F`{ZN>Bxe<;-+8q2st)ZpiWk7_qLqgXa=6Owucy|o*?)8%zJxx-; zdQ_+z1q+hU#W*nfv!B>KJO4a!oc->Q=yjojqxn;;e>0V-8)M17t4j-#h2UmzI2T16-U%50oBh=M z1e{C8Qv-D{?RAPNm?^s`NpiSVyEcfD)}u75$OKR`7(RPbGe7=fj{(<%pG25Xj34)fXET3UCVVac_9Rn%>M4=d4nmD1Z#*V|D1NFuft$HbvV`HT>Zp2dgOQX|B1^ ziXJeO2la59ODWf70gqHqUcteKsYurg7%L9ad8sO|BR|SbmI^^aG3Fpt$8(T2xEy8& zr35mME?Tu~I-lV5o^oaBhWu@%dz^w4b4DAWxqb<=E>k3Z)cY?FM2Sa3qADLT9 zYZBrP4D~w2;_SKH=l!+{2hQ=Rix_h#yN2qKX2~NbSvWs+7DJ`AIR#@AgfsH&3G510 zPpiL^TSdug-BMFSzzq+9K!PeEV7t(4GNq^u4u{jPr(qiyLl2?#kU*TGCnVgJ!80K! zrT|xyzxG!i6Qqp-7%u;GsDVZktQN6x%F1ZNv@`Wx4V{yibv@}FK~6j)Mc0JwM+mx2 z%ZRL$tJC#8dibQ?nHA5s^aHlm5-n4=klAZ;qMu3K3{UIAtBruc(mFOhvJ5m4r0V=x z>D>KN4KJ`%WUKEW<`Gk<<4Id!Y)c_0SIPBrD+xr|*RTO#CV2M(3v%j^4NeyF_`<`C@U8q)v?iLkXAao5I>)TARor&_d zGcQl>1d$(|1yM2zd_9~XkTc}cDsp*RWqY_1)n8jx^vy{JZQg>y57`Nr9usR!8WrahUL&jnu+z^z(2 zjiTxHnaA4u#~5;h8aTL3fm3$3l)QjG@jhDO0mF{r38}jz75=8>6Ht2J7$u#vjNWoZ zuSh9S-X1Nh$Nl@0-9H2lxuD)z&gp!GVt=khuuv{j>>$F>C9yc#@3OT*2SvN!_L378 z96Mn(j8U{C&qgv4rAP?ITTZ2^W@De_wYw4$RT^FaluIke-2Gb|7>h5ZLI5c2>MexF zGCW$N^x>RTyv9968UZh5L}!XKYZWPK?9BJHLxmOs1Zs%FkC%fjT9utM&kbTPS|HN3 z%5@{#q(7k!HO#N;DyDZwnDhG6yXD(N{mxqZ(Xj_&JX_}OuN zU~LM@$1ow;Y{fU-hpUXDQP*_q@B#!UT`V}|$&akaB?4l@^rtu&G339KG3%_^4FN>` z^eFS^h^%09_?c<(Yvuy27dZxUG|3AO4@HjYSOnWw7|PG4>1Z<62&I9}dZUkF+-mhl z;Y64s${{?q&WNx;VuP1if^e z?FiBq=Y_fYhwD}qWrUnJkozjG{p@qCfxnn14WRG`GtbMgi{5wX1SZnlv(L;go6BbE z$j#z}%c@4c=9J|)mE_!#dn1<~6^-ExuVA#=3q9XPomM-;Cj^zyRLWr|UgG&mo%hOP zCFl)hYHm_s*Ba5Pzg+8i01~jKOip#pX-*-El82s=r>XPi&t3rz%I2dq!p9Lj-T*c0 zPA8ydomw31bWGUy6_Bc6kHftnnm@%5H3H|jL|Xc&66#AErQq;f?7=BlhA8#Sv%8(i z4Y`9i;Qd{ZkPt#73b%#kl6r*PsW!Saa=mi+Ger`R1Kc3}#3(103CHDI*@@Deo;9+8 z%yA492Ya+MQFtVhZhfDwLII?(EN#MFZ5>^!3JXNDI%(OmJV;IES`eGVd>zd zZc%d)Wc{O0()Bv>n6P$O!-|gkEnQ~hcx%;A1a9!!(ScZ*R3-c?T#7-_LAc&i5JS27 zi13A6mB8f9zGc~8Q(03|)0&X0kDsGJYB&FSg49Bp^b&0TL);b8We2ZR=@@N5`$x*G zlAM#1oYl|_jo{0Hw|MCYn@3eX=@`$z!Gmdpm*|6CLKkcgrWX$2BxjrfsyYK1-cG4U zoxeaX-7bJ<^1=hg{vS(U9+hnne;33B7**wF;I9gc5y=%)9g&YX4$5?4 zU8fzj|NbCNcp^Zg>Z)Gd|8T51y5bdA4T-e6@uK#Q(Em&{BzO&p9CTfMlTl^w#MnaG zo*Os3U*=}6!;qB>S}n>n=j*mSW<`cUSR3W4?&6U|Ok5;p5K$XTQOcHl zJzan*->azTHpBrNZ185mBk_0CD|@-rD%IRqgj_0qPD_1J(wn4|{6XW{RM@F+HZUHcGpzNaw7* zQ~uS}tJu%j8L8;RW!c@xle^U@c}mBpy2^0I`#>G?i>)p(Z=zEdhc5JcV5T8u@N+AN zdtjNZ*ZPh+I-w|+k`*4P7XgPe^3739OqrWw&u%VuS9B{r`Y2`4WqKFTi;O(gxHWbX zdeCQ}d0H~(i=o9G7~dt^Md_>SN3nje3FvTX*fbY*W}M+tn`eEXs&ad2nsm$P(rtJz zyqPMx+Iv`<9bJ1%Qe0dX6y423AElnN+oroKJx0xDGZ(l|CEvujL~>c?!acqftcK^a zst3KXly?Ezou+y{d)nBtLzi7&8@p2Z16ur@gYwPM&9tJB%ICA}ldcX8ykpP6{cIqp z*1VU!zq9_ZT5T9=l195GyB?^+S#b}19xWRbP+(5#s&gM&e>h4@{snjuxJj6*J?E@xDJ0tOQ4hpCnrrO{*1B3#d|KOq<6 zU9KYC{K;_RXak(kQg%L1IHqZs?)Fohk(pjunQ%3Mp_<_2%xn(H_Kd(fAX1=Hf!_?gG4Ut1-R?23Y^XSC62x_8^q zdZ^rb)bb3u9uf=}UJ0NohtXC6x&wkqYA+;ktNrTP!IIM@nCLs~1`NxpK>otqcjqcX zMn`@%dKLpByLve#oUeaRdVeM+Ox)vXPKIqwRo489P`5-qb<%JdfKR?sy#IMDR41jpZOlpEoM52242CkYJC>woiJ( zQ*P1Skke;$NIEb0PAlfPRe?K)$#74r2cfpMxU7l+HX)0}z1IO^%=&ZI?xBxCUqHT1 z1a>(+ZqSa*`D{)U>{Ps`fVs?M>^07Z|Nd zH_8AIsNLTxhkJOjgJ?G>E7d{3qo$lzHGy(>s&`2|0x^F=hT`WqGxaXDs7oMe0WGM( zw!3;QG{W*5y2?5!x9$(`+@*YO?{w#uG0p5ZO@+a}_ge3qr6BJ*R>|&o!2qt|9pXKW z0q!F3usO?JW0(%<<-f+*_+q7&s9H~EoW0ld^M)4-$F1;pLB#4Y)E{uwvO^@-3gW3b zpPvrCw!;TF{$2$LPwU-rKUaP%N_}+{?w)8#B6CJn*quFtiJ9(EPaOn3QfC3H4In>g zR$GwNP8m?6VD0n>+>+D(RAMJf2TE0BW2$Sl4>=Jz2ALmp5FCqEseF>Y>hV=3k})m3 zN?6B;l%RKdp zHwd;mo99?D|KekzvD8Zkdq)Wh*t@%X_445tAXffa?~K~0;tJF{^|{PGS^~1{(3uUR z3b;Ai0|`P-gM5{T;9ItEKl0Qq_$G=)aoVO>qyhTn(rB4W%&#+skq0#kYQw<5BnK9i z5WG{C9{Cm>rKt4T5`Jc;0=92xP=sgouob?vg{e9uuax5|YlWa6cUGSl=ORxXh~#YI z?V7&2Wnd&)JpmN4nr;A*IVD!ir%hi+54k*8kozvw<{iMoHZJrYo?F{LTghiPF3oRl zGo12-J93S&R|l=1!g?pHM_>;}XJqHKml^F+vT(M011)H0_62QM_!sS^EKaoqW2374 zM;}BPQ%8+IlsJxzcshMIHG|!}+nTW!Y0p4S)*?^~v2Kjo`#LVurmal212R2r`B2Z* z^M*hDRrC(nRi7`|#eO~9eh07EdQ{0S6Utl5<03vj7P29P0{)}IcznDJb=BwJNb|^<%$#%}gDKGHi|11M^rv>T$ z*86aUaKPJf0A-uW`oT9U==A79!-~#uA3kbW&kbMD?qM?HV7P=!MX$ElZ#qE84xSz=22oUHq| z=r+`3P!46euAVDPBkTL@-;$^600vQ0=dK&}LEUsc2)4QG-&ULgYjWt>F_ai-*FIs* zI#?Zi3BFL8l)E`5E4&e%po`Mni;>+3kB8mu>2%~p_Rq$&^;~dki2EK$5qqft(trqQ z3@)_Y?ukdfBvDe+;qe<_V1L3olyz?33BDVV5Qr#^6uNAeyXK~?$3}7 z!XI3ogiVL*EOY-|J3YEK@C$X1wZ6lRDZ09yYdU$JMe02)DHFCEBQM2JN&TO4Uo;ZE zoqn?J6@nuuB(Csw^cmwHs0CibR4YyG`oeup91{WS#eL zk=mW5{7f+UICj{P$wwTlloQ!OF2k8~M<=~E2{V$jk&Y>D5F4qJf4@s^6G?>wBE5kjs)n5g|7OzHpL2@TS%X71`b^?KuP!Nu}K_GhJ!iWPG%# zay?7>702tst%j9Ow}niX9QJwRYInZCs*>%VJqEdZ`i+lGNU#utV#K@AMz~41O)p|F z(t)jT8OG(#zo_gcvKVl#f4xrlm!%X3^e0CfMv^K14ptoR7q-})dkwL#9kMbOIPbkW z8;{eyS4^deVM=gxaRE&|*i<9r)z>XhuaI@`l!ikvHCfj@P$OGPqS|h0NA0Ldv=q}C zM76K*th%ArtSe=(-(s@xNAGecthXB$I_7RJya~3tQKfL}O}gEi5aJmuc!k-cnr@-q zF>7W~t@2s+>J0U$SV()3(`RXMi6MA_k9Z3kd2|0TJ}3!t z8k{zQBx3cBEyK9Kt-gPAVZ9~X^;vVWJNYHqMP#^L6&pEPAw3$SsKbQSXYHy{UE)hA zJaej2-Q=I_*Y8w&&&_6SXRU$k=9?OXWZ_r+>mz`DOG*~{zAA+me`3t7MYdU{ykput zy4OT|4mY=onu!8xr=$!vTjdweX3fntXsg}_;+ZjQ$CBXP1Mj^-h6?;@z2*(uO*Sq% zXGaIOJNw*esc*m%yv`Wc)9YA*4)9)`+(gTv#>h7ZqAOoK>k})1j>&0{lp9d!f0k1J z<6HAS&KnPy9IH5>nKF$O4UE_(sGTm)qXGa^6Bk!B9>+E<0EuSZ-E6WTM!;>KAP(~V z+wE(LvTA1r$YkA+B{f)i&(+QMbRG5^>!cKK-|0}bGy2{ZzjkNqS=MQ5uQmLOm>DnF z{l4W!$l%!-@0f}1KYRd9sbsIGv$f1zs`)oZGrIH%tJ67f9ottF{ajkNJ@3q{Z(PaV z%6VFsR@Lb)#74Spr}1gGq@AF3W+j)C>sw7&8WRS^ZMpt$=Pm!x`^g_RB8gm7LwOF) z4P!m}PEyfEk=!;b?23=TvcQ`@J2Vc3Y`;^tt9o_kM&ILp;a=AnVFp<*=Z9uz@X(Qt zv5qyedO~_Yy*I?$cRhpOh)T@OjB+J-KnB*2AJDC5<7KN6r=yQsO1QeOWAa)&8wKF( z>`)R{zMYX>8SMSGM7{!xx~aN9>#YR(4Y~dj_4VqI%rj4y=994?*o*Cn^^HJS3kdO9 zjh~*@uI@b3T?zLm=jW@MS3g~UCR={CGO=wkYP}n%=TzEZ0D&Ip(sl7cu^xKSi#5$Y z;$b>ZEEVAKdwg%dXp3>2c{w2>>>LVn7A&`WaLRL{i-MKK2ZuD*lo#x3tn>q_Y$Wf& zjf56usq3FX!OHKCxcv)tPxPjQw>gR}WiG!)dHenra}q6(a5d|B*80959OWc$JJ@=} zEO+lVo#n1nQaTJbm7bd%4Pf@t9u7k-K}@O>@wJ0bAkb->>o+`I?l0vtG^tVy^ylyQi520md<-1^Q-T# z-{+u|&Ar9L8_`P3%&Z`#EJ%c(8;NX}#$zI1$Bd&^CPI6KuVZ4^H(B*TVWS?G5H^)&ryL`5aHGexsXyWBiPosHV+IzNP zknlV3(G5&d@W9H#1457V3bkq&38JjiNyVv%1Z-acF(m<0OOA?nSNh!Zs*k(`!7$JK zpJn~;)6G8!K~W~mIbAcIdATX_3gn_BG?EXr`~J0akZeH4QE5)wTc|FQO{z3ULqNT!qN)d`;7PK}aXkDg=BlS%4l?D6y@S&hj>|K!{~V4o z=W;(NgKS8ww#d0nYabqwGt)w+*hz-3C;pjNyf!zT;L+t&ce=dccKwjeg}$vLKfLnt zBHw8KB;h%^{Qaa0^FP7G0W}T%hJhhb&+k}&3D2kRP?XmiZgh3$9=E_*SzQ}2l4v#8 z54pHJgw4Lbr9ZabYG`6$*uN2_nf%C|Wq^dlA(!!{6swC9qOVRJ3Q7cpY*?SFc&@N)OhUs|Pr2m7DGO-zR| zxLUR>JuAC|)U5`i4z~qCg0_N?*e-EKSzQk0G&|^k8%2zv)kZZDpqL$*-+imgJe!_z z=lm}osuOE}CY68j6MKJK5Vs8LEB8svXT99?ZQnv@Xw3=q{kX2CI>fo25T0|w3%f~{Dolp$a-rE5>I2&aj?gm>AZ^ZUyoi_Xy z!^zg>hP?IUbx1ml#d@H>PxF4aJ3{!Pg?1-s7hwW9fl@uFgj3w2vRjUBBCCsQLOieS ze+~)_t1abD$S$};E00Cd>khFavu1h?se%q ztzPE(4OCmmMb!%x(zGS!)O)w>tz7TriqzRD86|0}@=* zj`j10+ohiOt+@(S?Cck&vqCODu-jf2f8>WA@XOS10oDD%)lly#jrOf~Oui%68`IHw zdJ6}`ow(!?rL(*Vw*3lu(_Qz5BzQ!d*FDbN|9Fe6uVG86u%)-6vFN?`bCK{iBCDzt z_N4Mx>o!mMOkk#A?j&L>>q6b_$x>Iyd%60Pa?feY?+(e7Wl;~&gs}N(nz`w{!^Ba1@#XWE zk|{VxHXfhu=`0BDz3Me{!Zx{Zwk^2*=TCa<#cgA#EYX%|ik9a$B$KBcnOkl|dsDyDc1rkDro19S_oDXf zHqAzuba8=!G!-7r$A8Op9DN3EB<^8f5pR*j2#0_3dE_rr1l^%&-zr~_*f*tPKGHGx z=v)!-q@wAT7&JfT#Ehd1W31_Z&SNAPR*^;A`^jK^}rpa;$TP4p^RYt#&6o2@6(d=lYJorw<#4D;(NDIV^! z7*1|O4`21@-thXXV>9S%rdT#^hrDDbE=9<0rt!_Wvk)TwHFcg9xvZszp(3WQ`WtHt zF|iY8n$$a`A-mC;)oUSk*-Vg^aZVPPDg~L^Mo@1%(rPiS2v~l8zMO8z&zI@eaRT)i zCO@Agr>@b1^IM3-ox@bERu8RzSll%7!@sjJk#^9n*S{|7infR5Ger+X@nUrd)X1c~ zgPv<%SPWW!SeKNX?n`|YP#vg3uH_gPa$)x{oEzrbK`TXEEbQW4{95%-qh04)Js{oj zb+uC{%0@60fzQ*i$xBpF8 z!%wJEgr^?fuvv^49VQ7pibEv?e*RdO-@<*(z}-Qawzy7$2b>A~TDVzKmJ+ zEw$XX``zh>#NIsCK>Q6Crj3U=-ti4i_2lj4D?iPo=S`&!4Jn5#WXhg(lMqsN*uLAuV=Rsyujw+q&_Me}vE--W~eb39oH8Mr~1g^w0qQJR^P zg}ANEdU-BJ{iT`}5@GQC{@N}j%%T(5{Ls}tJ!z5rT+!L5=!15-%9fX}$ zgTc2TbHrUu)Lx%6pX+k!F>4vSW}v-Z7}+>g9Z2jQ!-!29*)Sc7$(LOt($PE# zmPjO$*dc(gl_Dx*ctn~Btgxq_U?o`o?BWG*x+}XoZ-_Nj{Ow(9I8~>36&GOh{b}-- z(?{Vy|Nk|*psPu4N8;g{)urXr)pyg(_l7PmO)XXQj7JwEL2WJ#*@jsmfJ{mlAJj~~ z#}w-ZT1O~vq3t--amw3bCWz7M69g)b{ki=bL#i>&jqj}9gC6#_A%@LK_%T}TiQ&=)UcpXe3%A5v#9&>JlupRxVZ%P(0Vjq9cS?eM?mBZIUi%+n z&0`+*Xg#|xQ~sM(6Q0;hAtQRG){a*HQ=@sRSJf!&+%>dsR6V9Z z9>gcorq${&uv8vg{X5`n`G>e*se~bwvPF}Y6aK}Seh-k5NtMdN0p6SKm4Z6>q-hVC z%g3#zT*U2zmzULFD&7rBcIaUxC)Xw?`-9nQyUt6GIu7i0?Q}*5HJs?PAP=uBiseOE zzpqBcF4r*RkuH$iruLl*8(r7*61hk(!d-$Io&!b$dWAzn7f0wkrCk74&-+Fkb)5Q6 z8C3zE!3)L^#;Bs8;%(N2$dUH=*;1CBcf**($||Z+k_3(&!sji^gRdsv3 zL_JbZxI+>nbdRs$lPE_sxqKU$b392e3v)OgiBI*i!BOtkra%o9bp+^qonwhoKrvSy z?h}6_PHNh}6n9bnGE+8&z-F7IFX=5LU|Pjf?Q==~tUw;-ATYIB)R^ycKO>YTG6G_R zWgTIXJj?1}0T3Va^$C?Mp}rdMfC#RxasU+6IA6qhFz z8~J9b0su6g!cKN0qCq^!qH8SMySI1NRppV73-PuaZqIsRp>Wsfe?&Fxh+(#_^L@^b zzn&#qJ{c_TDIN+Yxo(O~pwVhaXY(Y762e();p^;%f3${$RAI_IU9pua@;$e#bQ!3( z%f+!l;yGXv2bQud2EvY}BZ+B)8=XN_%+t@Z6ItyUP4Qk?!&myGujwu9!_x0LY;cc> z|8;H97v4l&${oa}#8eT@nma-$wDIi<33Qu2Bh9xqe`B zITD|b5ZJctnko?D`%R3zb)0J6{E2Ct1qw>qUrqkIdBr{URdPB7=bO@tXFqC?+{T=g z@$z}%zdR`S?%7y6hjd*~X!}>u(G>l{Cq}04xymfchO$VU3(Qlf6DzJ!uTw1lDMy!>0HldxG?qxBzNjtKJi^WK33#!LT_xu9gFxJc-HUzV=vj0Bt0z^S9 z5!ssX(haH{@doRdQ<`czrm>hF2D_i<>g%>J{aFw6@z=v1Z_5 zZ%*<(=)Cx4Vlk8cVX5TPFMVqJhLe3DbjoPXWJQs>1#DjjJyb#}mDowZ{tVuiOZ6V7hP}hOB3el3atCW}o`IjPeIaeMnGC^GNadt{Z(!i;#K7Hm z-qaUU2-s|80XI&LzcM4cioJ5X?v_;jhD_7&Z~;{9+TJ>iv206_7E29Wo+Y#IM_ATp zgcm^VpqVcJ^GaZ<6ix5bL;I`?gxGpf8yapO1wg%zl1ilS0le*EyjF|&AHxJxNUe5G zx<+KE)mLzWy@}ha(ju$P$u=(8YukSi+Gwvzmp%_ zaIYS!0g~<;$*!&kpf0aY?hVvt!a-AYMd1z{&U9||MxY)F55!*T4P5Goh04NeWxlT^;w zKwKEX#za94++u)m<4N)pAAs(|KY`^hG&QMjkn8M1Sa^gS+Wg=KQkwGn3{AVLm#1})?U|6c=)+JteE`3Q| zjlTp0*-s3m`Y;D{pJ{ZJD2F{NG3T+;O(oDe>44L|_VEb?lmj64%UBysWqW~mNyBogDr@CTTD z{t8d}7x2;tcC)|baLjUCz_MN1v`YcS<%26$7Oi5j1Z0G$Vfl-d3i0=X@#&vNr{ZK0 ztZ$>(pZ#>X#&DwD1PTT2Iy%qVy}+axJH=OU1R*5jlcHn{12^W|w7)qqdO9BRdv9sq+_=bM zoCf-O3P}WhgQ6d-c}Z#kCcsPQ3;a0M=rPLYaxdJ(Y<^IW*o;2M-dWIu79&8wR%Q@tDr2Y$XLnAT8nXHEI;>7BK_g)0E0@GT|;1tm=bFS}ot)8J^9tsA@P^q(@#tNE<^i^6x!*&(YV2b778L*~jIrS6FCF zasDSJw)&=2XIz{F(ip&05zr3lDn3YSlnqliu=L6kn4k|v#&o#`9=Ps^Q=OXv{U!AP z;y&QndHXw`utc(m_&>otjp#4@+?Rl`|AD&~Uj($oDstR5LES4U>;B^J3RJmgPsH7H zP~B7UoVZS`J6BnlHCQK>>boXcYZ#ymek&0F1-=KiM7-i_s~$Bxi2g}9?TjvX=b5RnZ}mi) z(w{awgf1MBu7zzMvreerBV4TqS~lN7^3eKAL0edAr{!yOZ@;hx62Z+DcVKpF!~jS0 z9$M{hcrpCI{0o|=mMSZp_FgEQ{=vw_FsXY?d^&8gZ|?GktdB^<2Liz#KEI|Z`5{KQnj>;-1BtIqZQ z{1t$dz(OtDI27xeFf=gG3RGOBo3i%!E>s+da#C;#d_OUsRMM5+%f$?exV{b-J##== zh}^qnSH=O##?VtbCs#c25#ePK9T4V+Q+M|S)L!ew6sSjcV_i(riIS9Kxg;fG5wI~n z=srN9uN5(N_%x!k>0vB&XUdeBzcPI`R!;I~oB8X6rx^BAeU7(q9Blg*xwF0;!SD3r z<+npS6#fNt&@fGXzqxu9Z(^>%n{f86oT4n`Qb*&~Y$~9`Y#25p&tv>>b-|>#x5~V zPz{7K=YcAKR4}sBKvFvZFu$0JVP8Q+_KRQby8*I900j%e*FgI0et0(VgTydoNlO2Z zarOkNv<}BgovZEIl$%5OWE_eWzs<&C(?u2>fmt_MgvDAq6r-J>d(gW6A)mz5fIh!? z$V*I@zMaTO4g(4b?=XBpWn$lIDr-z7T9(T3<5ZGLWIm2AyhH_VahDT=VybL(CJ7&; zCh!{K{9=j@-}1royyyD@8QzGyNWcggF<*(-^g*PbIc`6+lkA z`tsRf;0TdkwYZXv%SJ?w+b&Pb=_;m6744dX31jM!}dd9`P`8$}`)R(?zdjc7AYJm0V zMKnw2H@0uTLUVa@H|I0ji2yJCrIN>|MpO|HKGy~2g3YyVQ^tI5_D$f>LIc68TCDIF z5EyE`Q56Tk8u-t8l^+A|qv$>@pDb1;Wb<7e2=Ut2bk#7i-NVBHP-`xSOEvuZ=bnAX zW6(|d^0Qtq@nh)o_cq78N@su?reMaWefgXsQMmYJ6t^7w7g+pqz-Zclsup{{mutl=l?JaP%Vh3tuf zjQJub`sV6d^@D5(10-eNygw4@QR-@!S8mtgfK4Egqw@f7M`bi?{&8jx8Wl2My73(r z)OFfA4Pr1UsoJH|m~oKqWvF9*E5d`c?J898weArK0sl}H)atLJxny~PW{$%ru9Rmp zs|2!f0xsV<#&x*PeZqlF#2#--Zw|q;Wnd-aw z#P@*2^@WpQlo1e20Z9jVBR^& zVoKW58on#u>!HWz#-0aNX0(myHlSgkxiInl9>v&cPAcIOL2x+eeDwmP#%VG~v8j?? z4q9A+y0rY3w6qk51x1};EU3hkA)oogy@~W*o^%y?gUDRTmh)QI0HIy{*lYq&Vs4}b z7*jMqOhOAsePpA61eaW*a-sdJt5rm&4k&4?~uX*>owjw?rr%w^@KP#8(69 z)wTSE6p#O|=TIi$odXYp+-ykQs{_EKvH-#z`JAqpQ}_wG_gGY@W5rvj^$nN_KQ^ir zaI!3?pkDe8>0b&*{yPuS5|JqILzqf|)CKVl`!`r)H2LC; zOcPYqIRf14xxKPvDYD1ze}*{u#Y&9e8p4>Pn)*?AdV&2KosDnReyj=jzYHSw1Cm7e zPCBc9p+5WNpy;2|W1;vpdWQn2nSp96slre?>T?Lzk3JfU4WtjJ)Iy@C6`W;F7wCJ= zB!6$8F@B!zqexYLhM7++roDrrd26Mbr&>MWJU0s6cwAmz8p%ew7I^w5B1{VKsW(V- z!6xAt7kmd%4>m^SQeU5P2qLY;iyF4t6dz_a--a);_Q`|Ehh zY#n0`Z(c}s=`t^bPt=}IttKLbZ1IewMhLEOhWG@Wn^h0|1!=XszU9!IIJd)s7Y}u9 z)@dKl1Y(2mV#z76PA}R=U5ghnN)Yhr$5YVmX;aQA>8p4kw*i0&LRw8>Ak`Ps2x*aP zy9+nmM^AE`1^9oeXCEGRW`8Vr2JW6&v+b8q4P~F!-68~hdp7Z9IxRVU$J?-0@3$TM zS2N*_l`)kWr$BSOl2vRjP&kx@C_mH44>}U`63{*UE$ASM1Hrb?jkWEi(bIY#&?*rp zK%&g*0MPNG6Fy0D%3GhaCzvY+(M!!Oz;jI%Hq55{R%j8heiNa?JbqZ4|5?n$9@*G7 z>uTB~BDO&%Ypf)}cPetSVtlkMslIJ6qj9k+TTbT|g+?qzl~$#|h3Zt=G_x7SN8a#` z&k1GSY|FY=hMn|wvb_fy?QG<><2j`sKB~^u;2Ah(#Ps=WIOHEtCwSLslR3PxiP_G2 z!zc-Zr7^=;#!smGY#C2^oWfN+pos3H8~%ePE3VmM4O+l$R=C`XcJM0B?*D-K^Eo^~ z0H0ufkr(s+0<&#Z<5ek<<1=e;moHV1!T!hC&!tgLf$P1jercTj&%e5hZUq|v&ipbR z^ft`H`2g!hj38Dm8;_YlZ>eIvpfeY`=;xN9*n~DzBp+v#QKF)2pb2 z&NP{C!qa*Sc7B|qPokMvXd_LY=PQp0)s4p>(=>Ql<9nYj2 z`CC~#c=-jL!_+5x9!n>7Nop*4`QV8RlX{f_AwF4Z5{KU)^>my3{O`FOq^$Y3!cF;% zR)7GCg*R(&+m61;1%_BA@fWZ7E2t#*3p3CF2I_(_1T7pev_e<|5%fIk8#BS!0+Q$4 z_;+`Cv)qvokhXANz`(h>hDV4_GjD42?ie;n@+DikhQEfL)i3~)l>P+<$c+?Tc#&jX zGWw%>-&A4nT42|ETs~+Oiz{=<;eh=kzt()IdKfYBJM`T)6Z>`Kv;9-q5!#;m1nstI z{}TaCmK(_~Hx9Jla6$kvGa`zV?=8Awrn9!ndzfnjby`|7NYQFXF@!-j zhA9B+?}TuRcD_R(uM-$uM6D)CD9x6R{WyjukGnYJ&8%zyxAT8*EAO{yz0DN4iY1i73T#^daQ*-+^MQXl`?D|a`?BuFL-P8ao_)=R z>OT*W1&4%=OI@}=3wOAr3=3NaCZ3dGrx(S>RwZRE1S7*k%Lq^?CkOhH!ARU{@#P&% z>oB(LdV~Txta|s^^u_Yz;uHU^9!{|EePyF-G^0t*kmTnt@P~SQYFCXXBZU8Gw*l&{wgbExp@p%ZIsdY7>%_CKy;#Yt z6FtRW8DVLj36pc_tW0epBB8k{;#Ot6etYdk4k{%t;^dXb&<1bcN9Z^{ID< zQmTIs#B?YI(GZ3*)t{f^+f?Y&rQa^w^^NZj-B0Z0zfv)+T%ZQ<_|mGswBN)Nn*eHk zrGYw6(LLJLu)qh^5QvXt#@w0KMeT6BS-8V2MuA3`>Z_oerf#0E(wTg*D;zAKyUmH) z@fmrVH^`+Z#5mRw?`$*Wioh@_q-+H5uX9yZ3oRol0I9~v&)GJZ&tGaMdHAn~AS6GW zIk&(FNh%U;Y=hybA(h7*Wr3?j*f6JGWT!P#6^+G#i<10ff^q6Q1h6+(xD|jWTj(Sp z*knF}j!%0pZ#bWH0i>yItnt&=(ctd+z>Vc9#|Y83$mf#aU%J2j=nJb~>j#TJNbL5F z1QLNHsI%~H`#887WMS}>F8vmN27gljxs9M?;XS~^w)tfjZ@yZ^<#z)oj& z#b#C2{>7;e__0P({V53+c~3chFg?-r<;zzMw>CZKay{@eJ+3D-6d{Vx>b*o3jwq)G zbpvbjJA(O2thr)umS_6P@Ie_JZv$~--EAKs{pd-uy*!Xn7UsbdH>C9RVBc>aiXS3z z(t#c%S4_u`-R~feFs7~)ONI0B9iT&a0#=r01#5aaZ4M9uT6>KZ_*7OFm4VDCb9t(rMpOw{ORYhDnx`In zsI=B8=vc5G$iR0pCIJ=;Zj?ViHFw?93B(nJ#Ll$&D|t(? z-0Pf!plw{<3nz-DP){5MF07b><~esi6}^M;HvpOY7Fbas?QTQyH0OH1SS}eOAxt?O z=Pzt#Z=KV;^`3HegR$2FA4>wKjO^LJlixe^oCxTj|1#E{%$=dW_2|CmL~r4B*!{=& zu}gy4Q_vNV*CI(q(3~=FCAz_4GY^%RwKITn{p}GpmQWHb0ZOD4U;qFyebY ziRISE=RP`LEd!Dh4Bz+B=h@FHOA!(U;TVN^Lop8i%LBgCUol4VUIn<$%~OtF=3--d z+_^s4q^n0f@a$3O=<_-mkZw#O)TmJtNU}2^++H+O$phfG)GeMNos@x%{FsXSA>0z! zxn3L#q%pP9#A5`?tK76PUC{)>9n)p2K=zD|gn?69Mv7z0Tv|qiQwO&j;XW5L3fDsn z%;O4Sm^m&M`@+m{dYFQcG*A!d%pJD_zuD9Q7@4t<)C+&$v;W~Ywy)V^uw(4uV}gsw zu~Uj{-Wo1XI?LXh2Ko*J|J%VBF|)SqfYEyamiOiZsIWz_3deAy$U9}~)Az1RxMahP z14;{!EARDowq!!WjEuVtI%dMEe)N$rRK3J><#ohoO&*s)2c5|jL)Y|btbB_VC#SFa zQIKAQ^o>uXb9z1^Fj}x(r$g%$o6BSSdR7sbHlPQLIVCW)yeb$j-3#68gP|=k&6apX zdpyE0foYUo26})HVSc}L|ELZHTZjzlYFy=?4atvAB5pyqR$j$L*&VlpLjxqgyKD$E zx@`6VmEU>MTddrlrXu(T!p-$I3s0BI0!jWH(FqS40BT$S~y8P5jrkr3yMKZ6I&3%KKdB-t z9|MY`k-Zu?WeMDX=b)!otF0y6UF_1UFV zm$i%GP?EpuY2PY}@*G0y?%j@r*Ay2pO*SKpJo zToc9pS1-9w>WzwuCC1T8qlW89Jw%^+*`ByLBJQHR1C!Lc-RE~~vbbC>j;_pFYQi!e z9LC_r*cwJFG^v?RlV{)PpP_FLy}mWxCr|b*`$~j;LoilQnUOCW&XmgpVemI3>jHTk zAWdrzYL@8!{5B+=#{KUf1a*l8(3-!K`%CW)Q1sdGYytQ-3XrdnmpJ+Ujb%M+1wEqG zqD*N|b%f}7!-K%;d%Qcs9`KB-@y(tI)MspBFER*}hdED?ZAML8#2wfXm6a%3jhGt)x0E0}m6@iN>htuyz%3BZ@n@bKM0(1XV<5!kB|i1F z=IJV_7rT-@9DkWeoZX4}UJ$ZI>IE7F0KM<)(Atkxt?wd)<62k+V4ey8x0-L)RUb z(g4!vgMqF)O2-?kIqVl6l8myZthY>_KQIuH^~uY(`E$gfX9 zS8;2&wTOOi%~Toy_*0I7?_g!X3xFxM=m!9xzKWm$1^D8x4j9W2<6zC>RsdM1N&*Ag zT5?HPk4sR_F|Zb-vrmDVCP6&YWJ_gC z3EiJl0PW@G4!^`G6W(=-2v=d|4a!b#T3jG)I{EZ6*(aV&D=>q1VK}4 zrDaV7O-)I#v}`+PD50pBfO&5dwPss2Fg2~*#~Vb*YG|&ZQOA^;>p17>xZ2Ln`F(%a zKH`Ii5C8DyeO=efo|%=$Xz zqh;X*(9m5=G#P&mNh;zil~aNND@gZmg}rwO{%d+i{=ef7Hmv>s9&*gZ-@Z1UaQg1( zXT0lCKQVLglSr%S=L4&>=ys}nEzzPNU#dvSr+40z+*7_-@_DEnZsenNdo+Ty`?dqe zSr(DfmUJpYa}1qQY$!h=uW_r&&Deh+71C58%nQdq7-ng$^PyE2*l3I}_1{aE%DG*o z-ML4EEZU3QpJmdR3egBR&)lAzJg#Hig?1-eZufsu$}-Q<0hb@p zU#a*62)F#1QN<{HC6z-Hc7e%PqA*mh?;1OBbMMZslUL8uC2RYV-vUg)XtP~uZc|73 z;j^-Oe&%_j84T8Z=qyM6&azh%l9~9OQ(kZhTG>VnY16#kNW77Yqw*2c{%+C*uS8hX zT{xJt(htG_Uaj z;ig6AUzhZ2=>m_#M7W(ZRp7@E)!kK@pFbfWCGJ@Dt+2{wh^3*PA#QiV4y}>|q84E; zKO_)hO;b%9VM;mfx-`FFJCp>kszo*mlVhxRkOk2Q6&HyfQiS9dl=?-tdpt#3V`G>{ zkwdb-`_XYDMs&@-4)8Y~fUaD4_i)y6G?rtWktV-s;Od<9b}ej`Moi!rObO`Ntad7q z7Uemgtt===S|(Z}1Ia|XQz-_EAj0SA0Ma%oP^YUNyQrg)!4Uz*_r6C0dG%|iC8N@I zp6I!{oM6Epl+>9$YYq2I4c5b{Bqyn(MQ9UyWlM4*_!$jvBfKY{y13`Nzo&-(MH?=y zJR9<;Que7UU&Qo?myX%8?=VV+=Jry9?2hN1tCqHXEy(x~(UiIp#DS*FQ~o-`f3}3t zYM+#6t7zzcN{k=9QWh!Eg@xY&-Q5z*c4v?Ody+8(gIF77)d_S$Q;?nCDiHz)w?FjN?=dv3uO;m|tj#cX`BB>Dk*>(y%3*mYUK7=Vsy zNPgZolu(Rdc^aO0ELTSt@7+6YUe4&S)`l5ZeE?P|5>m)bw&^( zp14gW9>Lo+!n*;A_aJGWSRA#sy%l5itEQ*dJeSxr&FsGD_rwCrjB>@eghBgQ#}UAk z0uREdsdG|SsRtYN6{rC^9qxifi9$b1+V#(mx5+Oqk^)X$|H}urKi;CFVTb>Tz7h2JR#o2g#A&RxeWBqTeP3+r_?rcqm)Kb!gOwI8yNb{McKs`+8<7SEa$AV)4 z;?1@6r6=*U4hj1;jC|WXUq414hBUG0p;=`#7!d;81baDH8h(7b@5pt?mS|ppa*uQU zaeZmf1+IY}q`_~c<^UGH8Y55Q`sRb3p8raRDBGU?AMc=LQ5=k*@%lsu=xS&R}wqCf+Cu2g9aD-v``^zRvi^b!zW0r@6`Z7klYi+AGhKFl~_4w5(s- zH~Lf&eVy(5gLhl(@Rr3=Lw0{CqioBW@b^S(jP)0L%cm;asSHqvn`WvGq@HDNknpg2Y=Xpxl(k|5{>=${@{5eJD0aEWcQQv7I>s32upi`*?2p+r zlHmsOLfb?11*K$=em&cAS>nhu{}Te$F1AhU@f&%#r|UGJQa~+euz{zD(MZ7ns0%=; z1)2dhAS_rsO`lHyo`Nnm>XT93U!6YVZrthYcaK2P@#rk}A^^UjMXjpqfnBFZ?UZ{e zd*Rnz>|Y7Xv5`GDw2<;nx!X{4JHkGCcf9BZU)5COreVFzNc^`Cnr^-9DSsx+qq3et z4W!}V)7DmQSfYjX2*urjiUkCZBn0$rPm_OY3HCG%lgoGH>yK;Cb?225bkXey%ofQG zTd{68=mUaaL-Zk~^eZ(C>@(-06YZ6qn#2lwB-Yk^Mo4Ftc;D;*l?BH;@)N$%zL=5nuNUj{%6VNxrQA zC!UQ^e}(H_Ntfa3-Um#b1+2K8z}F>Ub*gHvlq{4EM|z4sejD@1xU!xW)K-PPUn3bh z!~<2+ZtTEg`21O`y@ZZiSV;M1Q)7+`YeS^U67z4d!Aft2gYN2|)xui})z|7f6y^Z? zxW@A@%cP|bH$|?a-yF~>?b1@6qW{o3XU$}K{U?7uR~U#y!dJ;?!97&BI>s{B0R!F{ zgNT8PC9z+loyxSqBBjic>B zJ!}=4{5QO1JrK4yo@`u6Qj8T$mBQXc`3-V0?4|bFbgZofqkqQS-)^X^nk$sA3h<@G zQ=2 z_jyzbMtuM2Y{^`!%t&h zHvrGn{BQS-hy1j&=;t;WXJZt3($+ zvH|K<|HRU|Hkx`$f-L39#&2T#JCyCdEKLTf8*6P-jXeNCOJ!3~sK>Gr9Am`+mjhQ~ z`{F;iJ_afpZi{e4(b>$%`nt55Q>(qOB{pQ-6Z|BMMo<(z<2aT}fl+WZ&S5_dm2RE$ zGsux&sc!qxgnXoD8GOl;AIW!DgIoe=(i#gQHw3iG$j3OQ1l(X*v@sKVi zWv}ula8z=!-;0vOVJ{{|jeNn&TCi2aru1R|zxkc}8W60WtOp(b8g~`d z+{J!nJHOGLBX3nnp1ZPCCOY30tE|dVxqQl%DYG@ zx|G>$2QVDUH900gF^^~Q>#fVF(-;L+{GmlMfs>Y8%z5qu0}I)9Rtob_W;sM+!Al!yU49{D!Y+l%Umv@&)w0(8ECt1T}RU zJEGh=M;Za0nczIEkIWzgieg!3b%X0XER~Pc(73`VPg!>qu6Kis8t_NMX8KO*TXC@a zc?YwKBEBN-P)C6(NUk)`dvYA0O6^N8WS=LFU(iZ^aVj6uXH4y|IT95M&;?xNp}ADi zwUq+#){7rR#8sDsk*)_H35;j=2w5xUfB@6YBmgCAU}0LSRqmHS5(E#hKAJFYk*x7c zeYUtb7o83x2b${lHQI-XG0Mu(roi|z>M+s226{jYjj`U!mXbmWLptiXp#BP52e0Kf zVaph2FAvK7NXK*2)v$?!k|=;FIrJaz<bVzGdqvQpyjNXF!bJYzh(D{9$) zS>G0C8a<_Rt?Nu^m-XRD9$n@DLzoU=7+|*d5~rNYH1tlToWC3_va`k-`DqMcL4*87 z@?ugif0VB&lu+a9xJ2(aJYmsIP_hxUpuEV7MkSijK)@W!Zyuem(ZH6JP$9YA)X?Gw z4Rk(3W6O`ul!VOpYtcKfe{GP!M&P!7s%r}!#rga2S@kN^d}X2pvrxsC8ZJX?i5EXG zt5Svp_>4l|XEm;%M;r(>_UJrb_7lek0O?beTPX?&M(?dHwOka8Nr?&OJ7~^Afu!@f zQs3O>EA{<_qdqz@WY$dJgN+k1HM!YPubFOeZx+R7Z#o%%zvYq_b2r6LsLS<}`mTQe zp)f6wcZ)jRnlj(yv5xLXWMxZ5$8k~YkR%2miA15hAIKu5VH1xOF)vlP>-%a?yGMmN zSQB1ZTK9bieNRuOEPeTs^yTLr*g0+HNk9mq(fno{=OY5S%tt=yz2j0oa@1Zz@HmJC zlZmoF;1%m$k|bDHM2GdJx;5YT4BaG{0=;69%)98PFF~F4BFY8%?^z@Y4vI zS^$7Jo9Y#{1FFcVdstWlaGIT~a+~eeVxh~9v{Tk*mhZpf#)qCxwh+^a1!?ltuntQT z+$W%qYnBxU0J>(9=YsOhDQK8LUD(DH*&nD9>3|@Sk>Fm7;4LZm&r*ZVV}mEoMPj1w5<7GEMpn*{Iqm#j*qt1={3`ipBj{&(xSug8-%h&IU- zVpF3lCH099HH6VVOvVGEiwwX~*6Gj+-Tj>J^TnBPntZV(G+A2W`Gk?#lKsRdw;i3{ zkI;~AbqNEMZK(QofD;}LF5-#$iQo18+OMhaF%g%GE4E0!RUCnC!vKmogn0oyvK@Di zFh*{27S|v&-10J%uAdfxPv#>nG2D~pLS2-FA{pr528)^_Jz7!efjTkK*e!%S` zQfXw%-dg@8r!mxE99d;obT2k{&dZ@+v1kls@bbkW;AUIo1AEvh{$cwj3jn&FGeA3{ zh-r3ocq&p`VQeLo^#5_nI`}&$6o$#`m6wlhjUE`|;Sg(N4hyF%qVi>6#{f_9r zlGIf!u0`3JzmPJdkIIE2yGBe4*_J&+CHP_45*hL$S>Ct*j6b3)zOyw_QxaOk6)C>= zv^H{gxo4$fgPVkfnfHdFF-jCAYoY`@Ah+4~d_G=m&ngNBn%-4@XKfv(0pm>}P67I| zjuz9iC_x?$mq!mD9@2ce+$DlM5hg?5~r&C zKL4dKKIe3(myjB0I%JF@=cLp*xm$-fkKYCVbk6bx*CgMk7{3VY#1`*nN!Y|i_q}b` z!rtWj=3>NEzDa-c`s?1JoIaX@wkVzusesPlxDV6m7E z&9bLf7osJ!1isU~_yg*+e44u5&xWjUJib(IA55G{evsDyJmnl8wNYH6!QB`ZWJC92X zqb{B&zGfa-EWzGSy%pi1wB~SXX2r?&RBcK0(aK_3FC}2+o2?NY?(T+p)d^nhPC#M_ z8Ee?JgQ`%FYf#};=d0-oKOJ9SZWfr6C)D>NCqjY*%?mpLc%udV_kV7y{z87Gq9_e3 zVJD~ga_NEa1iv^;9QxEHT+jl5Cp%`rpWVhZ+e?T%|}_U}cBPI`4>gpOgS4eD)LcT^8$CY(blJ$CZ#~TWgK#@um+hOZw1FWEnh` zeE)4ID1rIvul-S+iNczq8PO8W@(#+c>~BmAp>%;?wN>$yB_DA!3P9qRFLM z1^iuF*FPDvYb8RB0L4j8%?y#6M=Ghb6)PRjmq+|`K6pZR-5dYGbCoy|mE_Jg-3)J` zn(wtj=KPPR^0C%@j$ItW@5Rc<47hF>_YUDcjC|#O4!}ZP4YZ1FbT{YltzW=d8v!ks z&H7!s%%swM&+fEf~Ot%$e_7v;@zV|N#qa~Vd|`dhv- z!ND3~%^`l$?G`0@?J#t?of>G4(L9rJQ3nvkMNd*(@6 zqgi&LXk2J!gqeWhk6Kp`485wKuJ^xzg4DJ<&~pTVtXeU*c)Sl)VigfqTS5T9-H+@k zjztb+ZSW0?OynC{^Ka-}&5zDi4z4b`?qz>Q(@oH&_MVB>Jj0SXZJKN?xroxIql)Pg zlZ!}Q)Q-E@+afID_IbXgJXZk_CpCget-)OiPEf2x;IaK%oKs5KFU@Na9zT9?&-$9J zR1f8BT9EY)yXv1-pq73^!KJi)YI?X#r^H+7ux;+=wysY5w@OJ{WM8Y+a!ESf-hHYQ z$xm_!PUqA}!L4wtLbjxvzaRNCb{vjvb;Yp#Vx8cfW93hS_J8q`v`l)s&hx_;?ZMP4 zncRSj6XN)=UGK5yu%Z$8LiGyvUokeTUKZ;>*2g z-DPtd!MtF;K|0SAUAu_Uh9Y*M5omLb0hVBas{dPAfOdV#en+h0FE*m7pH1T%BQu8z z)cTv+#fUUCwUkhnGTMSI=WQb*paL$EGy6^hX|A25^iSufBW)cuRhE-z74q-pUg!09 zkl~&!yS;Pd$42CHZnD9Q43igLR8Jq?iJ+R=wOKs0$oP19=T4&gE73l~k! zL|iS@!c^}jbisedmtZy(MeJOb=Y$*TmL??mn9D?Oj|tGf%g?)kWN#{!fZC*b>0z#@ zZS-mHsROhdDJ5j~F%(Hv{nA|`i{22DEM)Ug zLg8t~*)sr&On8$>FmiK57}Oyt-T z|Ff{xu5SgKMQ3luGKas z}?F!lY1?&%Wu9aUiR{l=`U30L=H0vF^ zV_0PV4Q)V1F^6t0sFbQe*24Dt9qbnuX9xq>1g)g@*|X5cdJ@)>+zN7}4urn5a533ZwV`|# z+#rfjLfQ|)$>wMJGQ=VEa|WZ&yG^mM`1$&AT)M`_NKNvl-{-$(`*}WU@$Fv1UIJyeW~HGTLeR1%G|6FFjT2&+O_4REHu)0 z=pLqS9O}u-P^ls@M;*DLhr@?6wP!0_AG>Ad|Eu$5vw80Cj2x54@8Rn1;KPKksp!#1 z)W@&t$<-@4wcdO9#s~$t2V@NaNLlj(SI@8sxO+9mDVE48=Xxgm$3ce~l*}RRKp;Dn z>YpOT%J=xGhPx*T*Y*@W3q3-hW}3nHA@Ftgh4z-@+LpmDU5d*Eh)36Ru79}2Deu`q z*cz*4uqz9skcTq95F86OKLd=+v;;Aie>&@sG`rZ~dKe2*MQZryH|66wuPkL6Q6XOA z=6o=w#wB#Qpkq4h0t-QSlaQ_CLAt&)$1pTHAx+1hiIF$25#{omY@5kNKyHFHBWjtk zgL;!NOG@ke6!uDGNZWz59ZscvrZ9d_ie)V24Ot8i#&TG-g{a^b>Xdp=pTL_!+N6S?pRQjcIO@DDw<`rk(~hGoM6)>&q@`H1=5 zp&d0Uh`tT0Aq6YTmrjq~G?<2TH8uATk_nPcsQ%KK+a>VXhWpZUJwjmIZ{3w!^!;19 z52`5QTfS>Ubf{~amL_7VpT8BjIgVAY{@Xik2mdzJ^K$3G;9QG0XGg?z{vuILsnywSWCH z*&SywLNpA{ctIO?7fkml(&I7T!yWmL&c6?>@iRJ-{}u9`M7u`cQhsu1)dWNoe-AK2 zEk1z$(B;*ZBITiVeVQR+@6hfX}|#OG`w4le!?v27IW*l)Z4%oCd2|7Q<|-c-b9qM#wX=`G?>= zQQMsg%%dszyAz^o6?ujpWv<#qP{dQ)qY=scmzsyLr`+7g=sJEYF1m^0yWRaRW19yS z%Q8Jf02_2-P0FAqpu8`aZg7^S&k;*I;%6^88VGJsJDW@ve z1b>yrJ{m;^GqcF(sxE$Ll=;;yj;x0sQ0q2;QAG$mmx2WLVjvyeou^vC!NcZs3&wu( z_iv9=eRy@@loCR48M1)1c`139D9yX)sF{}nG_ms|yswdVI*4;&4@}N`{s+A6-K>A0 z5bg%|J9CF$t!cl-ch{!gBb%3Ao=HB7{=)As2=!(xjfYJob|5<&>BU7$h(r3vaMMP3 zgm1RGpU~y|zWX#jZ(e(9i)=8dp<~Bc!P;kaD~XTZMxtx{3_ba{7n*^9KUz7xzt~@) zX7$?O+>%d`8a_H7I)bW{+^mFqwrxaf{_F1ewxQvcapkU2v&jFubBX-8&6LaM5;JlW z{VY3V3JX(2n}_-d*LS7PG|eEdTQC*zf&m@Ag!~!u6QWCIg`i1*&-;p|=TaE^?n;3bpTc8~dMHip_we=5y%sZ7LSXgk)v~ekM-fc zgVv)o$Tm;A?eN3-di9q>&-|5JWN6|)b@i{_V~R&-HHTE^{cjJ=^2Izg)U#MjRcIfx zUz#dFkutZK|Kaua`lp+`%r_jfEY)e*4(Qe-l5-U=GR~#;vSr=)oqnpJKbPx+&$FFR zz)O6oy~UC)6uSp zU&3^2a-(Bnu|yjEN$fq4E*v-xdm>ex+wPpxUW3}vO8ZfEVx?_#9tcD5x{2NPkRuS6 ztl-?~{&th#4~`ZZ3#sGU3R*AazG5kL`dkA`!_A6El_KjSk+4BdV{{Z5FB|AwBjxbg zG{nph?9g-hzlK9uPsmdtjj@irYb?S;l|G@ujnZGmua8pq8Fr-}%2~<{aP)?$L7}Bi zOX?~}RO3sdJyIY!=DklM+v4r6OsvChcW&rBoyF^Oab`u8;`&fn>}lr|HGs3=xw|w` z=SEvSd;pO&+L4z}H-w%;B`-VoxezL<)SVA-4oPF=5$t>DRzygjS(zc8P=D83A1u4( z2L;XHOchxX5@S-&|HkT6v`AC;0qbqUnYD;elQ+WaubU*hl~$ghAGZ(X1C4SDjars` zLx|u1xMHVYt>N?i58`bnouTaBAeMViwo`smENzeZG27jDk27qR7k#m_0TRLLuH`{p zAA1r$zK9}dfl?N{avG(4XOvirlMROQ4 z%Ux|0zvTi~GN^$g3Pb(u3N&x!gM<$0sLbe;1mfoQhJyS<`lg?vD(5I^1BG5U9 z5=vrNJ2c{KSn|^ezSMN3KQhkjk26gB+TBk{#`N{GSieWLb#P0WilEk#+23^`k2#-? zoyPc6bhgsb*Q^8jWou!c>`w5$x@Cj=4dfjgd+ISSKqXsU5AVmSzxMeRcgslnjQ0;& z&#fx^k&-azO5EPXqScE#Cr4P_L*KIcQ8R8ikUh1&b+jfV^+uSw{_&ijdv8uA*}dmX z#Em`b4ux+>@Hou9XMd|KLLCvD&ze(SCj=*}b-qFSlh1HbqCQT;S^|!x6#Z$9ln!-G zqAX_`sMXjaPT}jiheZhlWDl*6))$$d41CikpCV4_ZZN3sh|L>>6*tZH+~fFY%jd$ns68tA%D?K znHTEV3#QzB&n5WegZU3VArF_al5p#+a;{nbgn6uX8dEvuA_FGNnbNnB)^kIRrhtdg zkyUopF&{>X{jgc{D=Js9>8v9Ac5h?(i#kRv!hln-ohdDuLsb0(cq$E^C7ysEE!Q7$ z_1YwJ^$gm77~^zTfkMZUj{~9)if_m z2He|nRu&mxko^Z_ytbC8xxYEjH~YWJyuB7YVC)8IX>ec3_uM~^-`~-%<=sNgxZGn`%EE^ORDg2vSI` zUsT|S>hU$Y^N2}jetC=iD^|SBf6NQzH}OxU*oyu@_WvRajNgL49q?SyJPRb~c83i1 z#JGHVNhE~WE~Qe;-O=uh`du}&t@o-U%nduzxAsA|d#}1VYDT}^G~x<9QTJylh(>wX zg9+TNJ^BYeFb?=?Uq;Rz{bP0!QE&03!mLDDIHEHVgj!CbQw2#4u+hFLI0{(<13~sS z)aA`7>`QA2DWr}w3pG>4?hO`>M3da=FDj%?c2w2u0~I^I@T7C@pzjaEXU`-Ex$}#P z8|%dU;8IM|iu(F5Nxu^)y~0!w@Xg=LNu8_4cZ43IylUt*`#m;AV!tHa{Ro|h7}vL= zxwgTNi?y-d3Fwi>XZ%iP0UMKn&enui*Q#2dIl*6lp>OL+IKC}Qy z&l!@`sHq}k9Sjn%EW2mZ!-xS*1TaFGL;eHm)CjZlk=GpJaZyiU>`u__3RJ^?_xlQ5 zs7hJ0ulpo1p)2byzqi5MTF~%ZDGi$q6*N}| zcSs-mR&&z`gmL5z)B|7uTM|UquT>VP$Tzf67)2x|yODh*`K2T8M&{r!t{PVJ4;i$6 zd~<}w^P;)2tAVg~^gPOTaD_O4V(<$meNo?Ik>kgbCvd}lqmS7~D>Ce$p3R~Cy63D~+Z`N@F!ZeHqmD42i}>8Tk1%;}GltQg=Nt#v zY3Kb&)`pMVz6@z>SA8kDzQ*eEPfOI8S^FAAm$hkgPnWTw_t04dxxz@)ecjtwAD{Tq z7Z>~eyAA;!W=cpBSC{#jISXn~%s@>zV9h}FD@%k!g(^Fkf--^uF7@$U-Ymn+L5(zp%cbmI~)|!Xw2D5KMZ*^L7>G+7^Nw30QQVE3q$Wvf6aa-D z%&v)+`q{OF8btrDDmpYx&^jTe30%6IwjS+DP3ip+X47E(J>acKgJB%H=Z|)7r1UGM z4WrL>9{h|U?J8xU^GC*+^FiPA+I~ziaYRj>+RxxLWi;|W1wOl4G#27dS(toayie)% zCp$jfmX4V#n%c2YS&*a3PYa(xEauhuxJFvJ*`jZ|xYewt>zJCv4PeS7CQso_T%4dixJCBbG>Dbb zHhOKgrp{a7t9g8(s0E1Rg-IV8%o>c1DPusboGM%$uklZZ>@!igdQ&V&zA?qe>Zw>} zZXwbZt9Zsv<`Mchl+jk=@7UbLv0~X*VdjO*#yTb+li&^XY~5gVN|f?(w>Tb_roJPa zm*BTnlxjRld4APkVBa-fm;tCVw+-ajjC6t}*eN%4t+@^G;q{&ASScl~Ag}I~;+=n8 zx`^{EyM6&%@TUxH{D*kih^Ir+YkPKnEQi*Ja4#gQE~)1=Egv#hB<26W-BAQBFc*v8 zeAbBkPVxXamIL!<^I}Z>FQS+lVakKm@GJ2J$i$U3*0%G(QEnQi_c+8~Vi5(2QxqkB>$URGa=^4Dm5<*rpMNWZpv9Ea?ePq5eOoD$vS zor&fr?hRzsPr(Ha+V$Pr94t53?aWs6@D8tS1k|)XL6(jf3iaRLmcV+i<03~kWj=se za-8y^HOPpG&DyGv?ouW;dan^3=2Fyg6%O#e`d-z~m$GNEr}b-*$4ygUDHV}(1=@JQ zHBU#0KXO2N5~9*xz@M2HU#bU<0Q8`Dh{`p|Spf3WcCgG7v;)V^rQ)o|vV)uz9;+_Zd`fh7w1(2CF|P+Yj;| zI)a8ePbdc}Icth!M&fwB=L6P$5K%u>eX24)1+R|2G>b4Coti+{uf!$afQSzDK8*qd zR&`7;$Y$Rr5Io>ZJwK=XlPzJH_tm*FJpz=3GS4e+n(!;s<0%jBj=AJS015yF@UYh+ zcBZten2rnDPKB;&ANpGPGX_rWUb0#o@67x%#L;0P|I1U*CP9+kjTdc;_hrhmrcjy;tQto&b zTF67sYmi-qP6Z7rn}PZ|eiNMVqZ7-ZqoE}%9fcM(WNqMCJEo8-TVhYr@~5hPg(V{q zVJnCZy6j})=7(dGxw{bkw{T}I{lP~WaDT&$C&-%sA04X|EdL=3cm@Inw*YYa3i*w-BT*>jX!OwA?93uA1%t%}Mj#l2w!WhjZLQ)8h9U-wa0Bm4=`ZC~{4Cs)b836n!aw=r02 z`0?#oWt4A(0gAyr_R*IuN1_+=HF;wj5wN(YZkm=Hwmg^Z7|1$-@cw9t;j;Rlji zmD>>+&4|up%0!jM+$vsHtn$Xp4W=f+AbifPJk7CK$U?g|2N?y(RT}4V?-#@8u_a+> zeb*+y>yWqBDtt8yS_A%|+NK^fStkl>3v)TY`y=mE;Ks2+$LG(^`E5x(q=?5~nK+g5 zcVGX-4&P-4Q=*<&<1v54UsMl0hF@F$(Ye+o(s}{Orj~*$(R8K4q4e)UW0EE=rTS&t z%Y)W}7P*MOF!dS~Du)WmL19@PfjZHZcq|3?p+Fo0?nY8D|Depx@By23QGFw%1T}(% z64JEL4jJF`q9v;!u_q1lJ4t(2u8V+e%0_^a!{X3|Ep# zG^QVkh!;11(v?M?551Rq3cID&v-#)t?T1cfL7%F&vsCedo5@dmS4qb?sS)nQVEBLU z5;g8e1}x)l))xu$sKkhf;cwvgeaPvJV>>qmmgg7H2GNH!8R$6b-u;e*-@q|@U416> zldcd|er&LxdpwNl`$Q9oF88cOoaAeb=8j{51j^iVT zs{*jYvK^aW-nU&)s_$tMU~>q~^wvoX;{J@h9p<=J5_*wD=xMw-B$}t2jSM(iD&h)g z3F278fb1U1=&wvB6=-;vcGdm`X5oyfyI7R=5!W{KJ9N))*Bp?>;KdFCM1Yj0Y|j*V zKEv3>Zu0NzT=r(Rc;!Z=VXrK!s8MO8PpkT9|8x zo*OtIh_I)v9?IZdaLd%L0ke1RzY!M@2;6S@7oFM-)PZ1LN{sP~UhURDTzPh0?5CTl zA){J0;YM|-_aaw=HjFmuZ!<=WSGXuOPef-l6NW!5p5tlf(pS`<=whqE^;Ryf5>Z{j z=C_safVx<_{Z_e%m-YT{k?{!AP5$ivlMwHgsnTS7#{DHL~r9kJZ=1fnQ$7|XZhFofl3Tx_7jD;HH)m8J2o zhn9K{aVI?)L9#FTKh4^nJ%J2nMffbPJ|0%Y@Fyda*cukR*KiD?__^~`Vun|&Q$}77 z6CK+V4u&uR)(4qwX$RHQ!DpiRs15AEq|-f3Mt#rVG>}X(n8y2HFA;qSqwTvWbSE|! z%r})^O74w)-l`-T+X|b|0!mnGK}XB(%`c;b_poCjT?es8w{c`-q41*Y4iEI*Kn0*# zmKh#*`;#m2Dz+&BTjpMl723nk6alf0A{xbq``3zM&4R}nprck<+r(7GuScbgE_`O{ zc6KlBT+XEXX8gHTo@b*h{O>6)EwF)3L6I&1XllXquR&iKT9@;L4Aa6o`a~ND$!vCbR$HTM)-gL+vHR}o_rCNh>G}z zbtP|K^@2uEtf4T#*(214a>=crq~?+nQ&Y0MT;)Z$Fkb3GFD&XQkJ7#M+iq^tTAlH6 z?)#wJQ_>)nlHi`3TP=D(HaD=|2Oq(wDsGxzLxqmhhiKPQ^0Wsl1bwyct_GP8N`F}{ z??(+?HYrfa5F?1|33WL_d)jdI4BWOfXlUxg1RUrbxzYKwCN z{oDAr5!a*Zeha9)@3H)Tckk1?9{=`?t*yV}cB4^L)n$YJs2|X4tlxGq7z{pF369;B zaufq}*El=@k+4b_)l7SrDL+ivjsD2#xiTLz_IoyVC1#}Vkdb6bFnd#(r$y9?NMq+- zAFXi%jMk9Tqz?$qU=NsAWpbq80D_uyt9J6W48(&r_2BAuAf0F-gjTU z_@>~DcCex$+OZfj^`X-~q?qBEr+eI6h~Xn;+fxGTwP53|6O!@WWD}nb=;$MzhQvnv1)gGh*%n) zQPdYf$7X*a4ZurjA6|E3_+izIM3G{R2~L&{`txJJXBt6~LZH8LVjO%PuzupieTO;x1IGIP%~0|$!AC836K9EiyD|!M(<2F+gSeuN-TJPg1RF0c z25IHl8hN8v>YCD^qz#^w3k1br+n|i0XQ4rHu;h_#H-dfSR7Xotqf!iC$W-^N^&QW7 zb!7+U>phC__0idLmI;dOm0zSVr5zc!f%zVppiMf^$L|WqGr~pgCqphYS~i0;#Md`@ z1{UjS9`-cLUbCBj3rhIG>$-Ppc*%$1hp*oKkaHbmBh?^6bCkVL#)5;yXZ%%p-oaxZ z_=M!juHpQVJ1`0IbC~?)#`XR3a3-dv&$A7rn8MugQ2ssDjcwSu+%#pr<67()QfRuZ z@fK0p$N}UFM?*bHKq)#cppily)3>o%u5FiMcg=OQkmv|2L7?GLHyME^RKCCiDWr4|7r5@k5T&fJ3B5DW2;QfXt&^BV{eQVh^M*C=Y)Of_I;SW~Y@!m_dhlBQ~n^Y^~)#|G_M#Xv22i?`d7^sao;)SJ;fIX>4| zED0GpJ@9PWgn}=$Q%S%eXjeh2{Yk2=;3kS5jspD0euf9e?%+Pg2=W#x5My)=2BgdO{;#ZS-TWG8V6r z|JYkhRX5B+OCd-q1A^8GMIup|T?{+sOYaG?WFS(tFa3?(Fl(ci0H%*5IC2WcAYOeK z?E!3~Msrb5^zy9N%SY&;sodaUqW3NWCBUQgf4a`+ET_w+6wJV_w%GUy_v$ltr%(Z7 zDPmm>FW&jzyNym4`*fl)+2!g0#AM*+7$s}B`fq=KOAnaUvhmjpj+5ZyP993H{>~Fc zdPsbko9oTjsR$91!b_j9J#L?x%_80FLUv+|MYE31n&R?Gr2L$J_fW#&O<>&*xim;b zj9%c}Blf;d#Z;<~cvK*+r1VDL9C8Sql%2;MRSkIQA5uLS4MyR0>NC;f_jj?5v~2Mx zD{nqTs&GwXf@$5hcr`}nu6e7cZ5q-cx!h5G8iPb2pisUOq{u2T5W?Zn5z}(iJERVk z%iJ9u(Q%fMDa%la2!wwiVS?@URCdSU@xT16Z`QXaU2{LYeopH`X!O&!|7*dZKOg{8 zYTZO=m7K)GXQ&v2`7;dghWR&KAePr;SIpL-^x3eh0KPA0(dRE%${^+nAT{wXx)xf= z)|zYxaf3mHwh=%6oAw;$Flqe^v?@LPxW^a)NI`YmO^QXpo=?<9 z08(F39o*2(x(c%Ah301?w5Ri*7zaKSpW-Ckn;w50 zSosBl0}rI&U6XGYwKdHCdm2aEbm6v`X&v)WPs{irAbLDiG`x!7hb7^Vpei=n(zGE% zEvSFXe&cfq>2>Gb*WRqJ|y*~(LJ}Go&rh?tJls#1cohoy1);Gb&p|cVO4E=a1 zljuf?w}MMp>!~$I#6`Mf%P-_K$;?oj)9{}bTZ3uLkA1a02*%#X6HG_Iu-e><+%jm| z*Sw}4%_+-iMPq;hn9mW6Ofve_BR&2UtpwB&A`l)i9Dl0X!b)nkjT zgbee2LpQV5^tf`WGI$4#H45iR()2svs!QQIITu_wq`3U0=00YRavyJ)Sg0WDo?^Id z=2&O#$8R}6gRQ(cS(xy7AlC9B@P@5++NJ#w5%N)Ydh# z1T9e;`emPL0LTu@$+=<&Jd$P+B9+OFL2{Z8isvo+OVbILZJ$LHU79^quJ<-)I?CCL z&%3&AQTB~ZphYQ0v|60>us>hxjP*Q-^Vqx_!nHmeDerfQ#nF-X<0IB|f+P80V;dzh z*D|KvFwOE;F%7AW@)7@3`I&lmqt8xjM$AKlk`3GOGee_fZSRAXA~Fy(Zs~A58f0Ed z$*c#*nc~V*4I*e!@>rZmS-f5A3srO)N)gnkr4wHsZ`iz8A!rUDOk(Cw$bR94Ih<+S ztk3Xu(E@PlM&rZVD%09vq@Uyu+2${w$&FCk_!DmC`k9T~xv>RdD#osT+Dx@f8%^XaJ zYwG6_gUUj4_u^H@DNDZB7{-roSJcmY$dIFOD&e$@0g+FhstiR1O-5s}Se&nZH^zha z9#y9Ts($bzDtIN)8U71Dl1vx@ImRo>y1f3f>56ubGnKm!sv)}MA9osoqP_0>9DH_d zgsD|rrwYZwQzXfd@g6O;=p^y@XM)3l&NMsQI4XZ)&xn9NoW7u3FwAL9ecn_Bi#%Mw zyr&z*Dy5u(4FUYUMJgQ3zNpwYhGc6ADT2RtrqMrTGrR=BN+;W^4>}2ZkI#vXJ@0jH z!!*VNW>cpHv|?b|aIetWI|-B$cRpueYIH3$d+5)z<=(u3s|DbHV6J!^FoM7L-oFl9 zKo2&cfj7x3!Sq-B3ueu|9n@D`2X6cxx;#ZXFih>}LQrE(N-?w_9|6I(3uUWx&(&oz zxmiMMOKU564V*lxXke2339vdxX?hP_?S`3qej$9*E}vvft}WB6=$O#y4Ds{ncseUM zpewQ4bLI2)ihuhfhbrzp zRpE|kV$Xpl1ad?RqIYnJ%m!`9IrK_0GR3%IIwd`>n)f+gKsb&%j#4neB8q)Vz7e2V zSTDBXwEVPuG?0q!LO*T@RZN$`N?%5U$zA@MksrFc6?!Fb>l6=>O&GV zy3bMDa%h54{nKI0RHU5!T|0B(txrFJ6DIQSZOzm5wlO)mMtB>UdDv%Ttf4hqRhf!G z35weYGoj_PpF}heE%_Q8e7Emjci@AnQQD7FQ^o*h#a_H}4($aIbB5Hz?Du#vkNP)W zkf>~)j$$?pEwHSQ*kXo3u}*7h=yL%+jqh>ONU+jiF+Hx~tOUJ_7P7)S?yFFG`QtKg z`4NyQuKyxXw@&3GeQ84=W318vC5wkZP+5Xf2=*LWPMs|(En`0+L@!joj6QRdKe!UN znk0|CPKXUaYd0W&(;-hV=hU$8wc{0k`4-LyGkHMkq2f3tY?g9|knz21 zsnOD9yN&q{6}h&zf^iTVn(5P*IDKE(QVo6R0hT(d;uG1Xc=%Yf^!At}>j&bm($?Hg zV8uR#F-E*2R5UM3VlQUe%1dYQA$0|GO%bx5oPg# z(E~%Ji()D|Jp*Y&Byx+y(2n0-Q&n}IeszI=Aq!VZHE+>@n(?U{9E}atZF=RrbMx%;jr_Cp!S#|BV|gm*miSZzC0U%rS=l zYF@w6IsTh&4)L;ixyDGzT&~+l1?)bcI}&6baF$eG4}FXsMR|%^X!CM54jLkAVX>xB;tfiR;aI;4M zToz-pBOzTXtVo#ljh}%>7G?|$5O$)lcvNn>atdi$oW7kMV{~Dbw^LENC3ZAPi(*;F zAdotBBCN#Xo=sjzqqaquhuW5PdFyO#VSB0iIb(74K|r+0?#Viz@ewf0@mFFgXeX`~ zzhm#568*r9-Xv81w_sMiu8r0OEAax_#D-~xAHYZO3sx?v^W!v^IyNetO?R}S=!*)bO`)K$ydWDWEOvQFe}eU{rz7?t^NYI<&bnd3 zYArqkcAph6F*Sjvz^rQ6X~z+@m@@!k`hT`}SvoheZEX|2A2U@AGorQU&{_ys zFNoK*iFOF)XAj*X z#=z2Vx6-VA?WdtX*)p1=3bFL8jOf3tjQu-ub{e(VTik-*Ji1oPK0?X*rWN- zpx2qx>M7!lDGnUd{NhJJ&iG@LcELIT-o__isLt~BFVt7Gx1G%U_zdCq#l{6O*REXs zEN8vfnzz_KjMq?3O=QSQo)!QqC~pzV58x)?*#lvl+@RmyD`P>Fxw0e;6KTV$AhI;r zZhJSAn@(HvD@vE|F2N25^KMN0))FkfeXrm+(|x;~*uKdy)QDcZbS=gD>pdeOUiOE} zjEa(nlD7{cM^Nm{fmC<3u`=F=V*XCWz_s_dAsAZFpj0U6AC&*M?&s)REDS{pfNWg0#v<_1Su-w~C*R;LADJF(bu)H9Kz=)9CYKz#&;ikPB%=)DsIR7;U~?PjGx zDg6;AQdd^$*HVbP$rbS`OnbFc)zpHo>K*aJj6{d-45?n4G{)4VSu?~X>SxgRc>Z%1z`3Y?W_BY(K1-YckPGiLS=xn2I~b$tO_rhMU*jho=Z;BXv8^pFa!c% zv)+`-z5=>UOF01*qe&;(m^-|=EnZGSz0r-C#@LUt=b+LU5unjQ3X-(e%P1j%&dD)#U3xMF1qm(x6Th$u4p_iNyB)Ly1NlBk>%$L-6YWk zPM-Ti6{Xl%rMXJT!NJp=A%u}l=hlVZ7`ZeHi5XiL+BrJ18XKg15ZE7QQ?2eBJMGwZ zAo1=a{Pr$$m)DsAuXB*nz6ozhq7r9K8S~R6Dy=6Zv3UClK?K@M5R1=w`Ip~axwDM; zy5QQ?7;Pq8QSiOwPpc>=`kAuivYx&5D~2|E=u-jm9&1q%ea>=^l@sflUejNf{W`vX zk?Q#&@?$18``eH=J;YJen;zWp`+?DTaIY{h{W0R1?y&UIzmRXynDK+h#-Dh{2@M9) zWnagNg!I#LgW%VA%FTF!Gp5nuIqcbNJ|f5kPm!K)Lm3REYr3WqJfOMNB-QoPi=3EF$@I zmorL8c*38G)N4SFk?f$dBq*rHpVF%_bWd-WH(8#}0nn#iy2;-tX zLDZ`FNex7^gKqoM)zr$W)WSJO+5Gk4)WW;VB31Lx)yAv;AagMbs%yAv89spCX8T>X zoxFRDejH-$Pp$QV!{G4pP#gDEgg&DNW#{sgKj3zUrU{d}v5|yP)DD=H%ak`SK4{>v6`ctCjGod#Vv6a znRtw1DI{?XrJ#Msd9H4jPk1E3kSKYYla0rB^3rpz67?>&^jxE4X>vxH;^N*PkJ|d; zL5KM=o8WkU{Ciogui2w!>xqk}sqwZuZxd1;{QK^z9Ad zdep2kKZU5f5WTBuASV|xkoQ@_&?z-k5oGSIFgJ+lj!OalHkH5rSFI}-xYStY+pC8H zEiKX~cvTziHhuU%n-OO#w&_`;kT*epdc)Kzayzaywd9^QA?Q(5UNaE29Ye(ep;8`U z&@CU6c^eo;gd_xp_ZdfD<<(-cDYs7)IbSqwd6mkxyvm#^1$IxZD<@FN z!GbWNaz`?;!bS5o8b9)V4jOBm`@6ym;r2Ga-|`gtsXF-~n%VVturfj6(_d5ZG&LyNkL$ z0-|Ym$-%k^Hcaj%0+?AV;!FsS!!fo}HZ%&&Waxd=P+2Y-5$9imRV(1pXJRMFEAg=r z$;hNWqn>beVAAwl)4Ldo3YB?}w{SZxy5MW%q?3e8*cIXpZjwQ*b^Hf`*u=1c`u`(r85|7s2 z8h^M9p3-gEQ|Kl{^g=224Al-k;_z3h@8&*NCw)Lw(LFzS^CvB~Zm7ob0g+Nn=6*^T znSh~f6);<8?Wd3x`Z8p~wN8{5F5GtXgf#!B%2`p?>x9$LH*8$)<7Rf(7{&Yh`VBcl~=0NG}E5*8FG$-sGl&PG_7k zdLeCROpW!FSM&0Lo&aa2vdWzKljk0HpwaK?)$Blak_op}*Q3I$TrRFB9qhw)H{7w*td1Im!#ngWZ#Z(s!y)B1PrJeR z(31$o>B&nFucHX;0HMRm|D+Gzh0$pZ50~PLw`Ie$eFu_Jj5YI;TCyd@<>ho+yx&g! zgo^{jvFK88Dtqx#v|awH$|7D-tuk$v7l^w0OE`7LJgWD(HXy+FM*91hFEV+ypIJf8 zn@wBqf?y`twiUweGpSoGcqUl_>THm5eo+kpqi3R}$FWKv(rnKchokmEuBWZkzB;24 zJ`7dF2LVJ*9*+*}`w=fs5Vlvp-ny25{Z-scbl_iLW3J0(jdBLsj{WyT%~2oYma2R2 zu}-nO5lO$deE9+01D;%wJy-G>{|SDq=w5NPeMBNLJ9dtB53gk1tepV+x9fkf$7>aL;@x*u%UMRne2e} z!UTmTF;D+r)qAwp>8X4(y+>hwp35peSbmo`k62NPoxBe0f@QyPE$nI}aWx!X8G4&o z2fwf$99AYmx>mz%Ibm;5>B&(ozRx#6WL-4KU&<)XnMtoKlmIfx-0AImU`P5i&)R~j zoD3cBTui;x1r8%^T5OUcd`Qy;oiy`MQIP)go*HjvcKFR*bu@hXXY)r7Q4lJ>=vca>+6^W^#+(CxAu3= z<&W$8jfa9B3=`vQf8(=%O80kGRrCJveY{HzGBhO|as<=-RQqPNub{3IQ<`*o`I<3WTNO998FxDY z6T&G(JkjkY@5D$~U&ZyFG8}?-Nr`jCduuwtv^fFm>5R@-?fZEl5NWd74?k|q@yJgnYznGxUKhVNQOq1=am@& z5IrJ}L-Zmrxi+ulP!yB5$Qx>5x@15GYH^@N*$k22XW2;@51c=`I71X)hp1w97Bl)5 zqOl@^A==kpd1=DqCC5RcUiNvQ*x|a3UnD0A(Bs{WZKw>Swdb38K_kR%JK18-e2*7A z*5y(P;UI-()|)$BSeHVW*dJYoM?JH_aezc|Y(cuH=FnzWzJkX)Bbq*D<-br{ZoL9@~;*1{wSxm5`^lX&e>&(jmq=mjH3Uxwdq z$)u#~CfB#B?${qrH)#iU-sn%&@uZhb3;G%|Aw3WA_x!a<438P3{YQZTD;dk}#j@N< zN3CSGji%iFl73BnNAZSvMRG_utGy!6?3y3BaISethbI^#a^;r=^)rWc4hG z`WCm$$%rlnYe?u%JuwZ^-B&Ux ztXtUV92#AF8K?P05P;EqCRyH}J^Z)EQqq7%TwfcL!m0vC?WNi?H^Uj{&~+X`X8(kp zHvT0uwD$l;1b}qoxBLq%;3kPKKENLee92-w!QV)W+L~sR8ZU6bFmgRJVEu5R6hNhM zw*8C?9LJ@#)j#@&Nd7ai85ewt8q`KtkEG7dZiZLL_D+pLXxDiUq+^Kh+?zZ+lBaJ+9$lwdP~Fj%nCE~+n}Y0(HnvkB-u1F5L|9eX+&@UQAGfX&_CX9m|UO@;BYmgt6VM^AYwR77rWa`t~@UA+7b-(4V*ivw}(PP-a+cU*2-8fUoA{QwLch(+&=VRpytN0 zJyQT@EhBxp7P^b@GV>~W;%3U`p8lY7v$vuT9p{lXSNw`0PTnojkrsil?fff=il8uL zegI@v?9On)Mu7j53o6tk=BKXv^W!dKSiI(`{njTAu9SrCIfRrI?$ zuDKe1*Zv_jp}W<+iwA~42{x@(eM+=rq~}b}j&aNHJsJc*#{$v4O}+Ok+&!-8?#D<< z#%GHgO0@Bo_w1Vo;%r|DNGqKs9kWr?vKF@w-fc0t6Pwj{)8s$nuWO@Qw4_ zM0vSwPWcEkALkVgJB8GZ>n2fH!Znqcr=k(S8>`|#u3$bv_7$ZrF;77>cK{6pz`IJl z#cN#08l0YrSQq6b&N(R#&l+#a?Ud{(olujyjA9 z_wvJ1T)l6hihhnFHUEu}o#2n}jy}uxgk)x}c{CdV>#=IrvLiB9cCQ_2Q1A+}oUaKZ z@!+1!{*)b}BdTKgkIb@dj6oW@G}}*m#;nC>ACmsIuo1tOBo4n-%rsresy(>m<}$l9v$1%#MJy`HkU zy{Klky6E?o#rU^@FAMkurkd5*MDRY_{@X^?m_3)5A?L+udEfy0k>z(uQPbr}gEJ&P z5b}5ySS7Be7i~MxO1ezR6Nbb8g6daF*I%SQMWuhnFdCP&#`wL^+^I1HS=E>ODGrmz{f#V8i#H?+%iuR)G_-eA7bC=}Kk|~_-;Rw7Dhyoh}BqT4J%)=%4V)9lJOznABFnBv3N5?8mz-I zeOrkhGB4Pd+V}BIkCX2$fQABH*MZv!m2+Ux-R=th#pw~OGqmv=HHmPYYjkeiVRk@9 zag&cu7z$_iOF}|imeL@+@efGG&qVnV-tv?1{L zP9dR}cS3;jfqpwaACGSIX8-``%X=z+r}QlF82c%GE26Y{^3m~^v7~=dkA=4+Zs|Xn zT)ucy9MRb%Xy1k1;;v;J%aT8Yoz97vxr}CCU%R27wN32#fjs_!xDwaU}X z``Sa2i603kG(T@wluoVD{AaWG#_S7o@1mkNizzkKQ|$NAhje?L72g$Y10i#-9&@I9 z{uyEmUy%GErKX)J@HYL&RVmxOfwxexwq%x4>^lB!b)WqnXZklEeD?JEr{1uPhK{<~_;7(H><;mHkTiyAv}HAGpZ=G3TJ|)^d&X zb^7~$mO%j|==tNXXnYLN-Jk~)7hk@uvW}Z?@+(VDROjYWwb_O0YGJJ)$llDhWr)s` zy+zD?cY&LwZN~7e;2@`**jLnA*fbn=FceNe1zSS+J<7N1r?2~r>rgqkKJI{KASY~m zAcr_4vjxlG5Pj&~&TKc-kAusS9l>c2e6a|ee@RCf-ecOYsGL;@px3wn-9*i+q&`P! zUnOVSv!nyRGsNvZyI~`~?(=L+&zehUV`%Wo{?>>tw4ZMv52fEwe}%=p<*Q)lX@2^X zjMkA^wKg$#ayriEmYCMHJ;pj;)}38%Go_C;jewS^mQ@5 z*6*wL-0fTq=|_3bFDhrSTbHVJw1JOP&78XNWu8VU9Nsy2F0^$k^ihwdfjF=V#!<=z)<*chIzrRoQA44=*b%G-wb7;8KX`7B=UlD#;q?tFiuty? z>bl$Vp0#3+-CeUL+YWaAo5^_8y++(A$Yq<&3r-kFmgP6rkiv~XIj2N*&UX#n2>DhD z%L>krqYnF<+cLa@K`BM~XDGqt4WB0CQ&vgdZZ6f3P6&!bVrKSvT#f02$(dN?3XRaH z5Z3lJiWxngtjEj%bfLVZ7OlA-EZYQ`uP#AldP1@hNaa>$`mtHQw{G(Pg~zrs7E;NH z!Z;lor(tVe-KHbfn_I3%-WZ5TYXp_l=9_^2U)OqN8ZICCw4no?`B-` z{S3c?{i!8*{UAMQcuNz0yI1am=A~lGYB(Zaon)Z9LnrW|z8tbemTxSYM7FiwRzu{f z``dAbHdLzPE50xlq7BdLCQS3-d~9WK$D}|9aBL-)h{6J{ITJASqEmg2v$5Q>%nbux z>>=5&Ofbi|1b=y3!j*H&3sgZc*2PLzzV8<+ioqY))Lhv*)1!i%WRIygSlVp;?I`w7 z9d+~TauSvA^d34aW%AcP(k1CfE)W)@MV)8W2&}h{WjQOcC}HVPw}%ua+lJ4fN+NHZ z4gEp-&Ga9=Kt?;qNnh+ru#y=uofdV4_t@72^yx_Yl6)0;t&?+KrK2d-nO6RC_CCU zF?P!QzphG*B)nhq^f%d59qMG`SCtdQ4|rh7tUiwo&3MqQ0}lcV%n zcdU1#r=tgGZSO#B(QV!UeT)9d6$7DEii>E1rtv>;6v~RRmm{(L4(PZ)! zS-QGp*$dgRUhcvIF7sI_9cFJs0U9ND*SHL%69iW86Nd7S%5;)Yu@Gb`2s8UkC@Nng zA43jF-RPm0n7%`56xRJ^(!9H1tv^O%VbPG$n5;YUt&S8A`QK^}utE%*!b+)(g~su_ zUcIBAVo8Pqp4XTQZi&~ji@99~h?stRAZ>wacV$(wDvDjozmP+)wd1JRYogqmICW}k zB5Pmu(8QVpRkr839HVq-^hKM{D=tvpFwslwEd_tt6@K>oOP zCelDEx-%DW)$-NYzMl5H89YBRXuE7qVUPgI(F9%B>COzIP+#5)8UhB8m>xBv`NO9l zA3s}*>jCX(zsb2(6t`xoD&E%KyMSo`eBu+j=cdvA8vrp_7l-Ngd=z9}nle3ljiDGm zY;_eKRmWp^-0vCJ=LXdx))DpXD0)j@L-loE_HUc;l8_+zcPkO@BzO~2)8nYw%Xzo{ z;!S>ZdVsGy)-P6(i^Je0q2H(7wqwJgP}V9S)uFge59Hn4&Z; z;VajJj#6C+L}|6idjdX#B)7Sf&E06Lk`{dq$&Pj7=4*Q$L^FJ?%k{nG>90wZ@nJUTiiw9QXQry?EF!o9yRIuMw^tAV#Z#cqu*0ri2u6H@xGBpYuMISdW z?*mFM_VPdB*(@6jgf$KJUA$_&_!Fn))3)zi1++Vx4AH z{?DA_RAbVq$kza}OP;>#xYJ0qT!A;;QCVwq;-LN4RY9v;k_;u|D<$oe`mPQ7<n!$pD-#(=cxtN9(R%D&#m~G#&Iq$MvW9cu(qzS zLb>yV+nUzOB>CT(#V>W(@Dn-gE}!$$$LExX2}v!uA7+t3J?(|+OxQyC-|7sjtwNthPvgXwuyB}f0O%Z4J6q}cEu^t!zvtE5s~T?dGx+g<-rLG|8{{)xsd zAgWi#dq86o@O4#Qd)@#5?&s-k_w_4U{He8@=LhInzXK;N&kty+(cFJ3n&YUkypXx} zAkHH;vuqX3JAn|zSaJs@a(uz>v+S|0EQhJ`<4aZSh{KoDjzSj=;I6mVROj`@&5_II zV--)Bx5bqh`|z?P-SZ{;AM^8tulUZ!0r)fM+{cRoiQswPfG5wJyaTwN#n81V7$H`MXK5rOTa)92N@6 z_hWdzP-3;i@_7`>-K9^M7bz%UH+Hn6qV!Eo?tVCT{u6iz%K@HJN{S{2mK97HZAl(7q2cK!6+Ohy+4k< z!pP>-cN+M&N%U^TexoU&P`$22W4D6vSg$sFw^4tFSZdO|dpzNdSkvBrO)r@%!L_hU zo#zj>JC7*6c_Hj@VW*SAO9ts#8RGh^#q}yCHqyJXllw=y2gmd}#^q4#v8q+MxRN3Y zj{!CGy>EK7!(!v?Ag^=z{@gjuw6V9oOSO;rlANVKCsZaMhsj(0bGZzNG*LYX3&%qA zOt&A9sW3b{SOeg<*uF0y^%gKm_(3+O_$1XM8E)TD!1Xb>p$@*83bP;4jvqOR!tOBb z<;pF^DHG%<=BAzK((%?O*~U*o6x4Xn+8u)d!Mu{}z4Cx!jB1Mq`y!X^HG!mIM+h~a zqjIrlk7=w5OY&=$lAZqn_b;XN9G>~&sG4hii^!O6a82_eShZh3M+D`>Z*^$Xf5zus zuWxMts(c}RL#Mo35~tq?>SBWAb5G&FYyU?8+RlghNYw;rTk)s}t(`raGxtDdiOoN7>g z?j6)~{2$dktRuqD=b9*8pc;Shq9r~^i#wtdl-5RGCe3Foi-e`Kl-v@;vl9nGYl@$G zeoLYEoiB=h){v~V0|URCV?*ax&nV+iUau1r2r;l~k&si28Io zFf#Uts`n2GB=Ft#jgUbJ(<|0Zdal-2W|GUn~w8nPOaxbiXSiVde{zLE&$wh6u; zI~bA}*jUOF&PFA*##>LaK*9mw%m}_L%eIP^wV#**hoYVc%PUjL)t3M8P3WrlqS9TK zA1`ATN(~FOL9c1CW0)=Kcv4hRoUz305LGo2$#v_M-@J@VY_RXI99aXh})~XD+hA?~PKGQoY?if;cbOhN{D^0?#^!|WZ3aP(8 zivBgf1FoujK7K4!+O*dI(yi*(mhCRT7J}Yviv`T~L(-zpwZgn89GQ%6BNQy^b)*_77Ibauy}3I zxl^Abe}QXAoE2FBOmx#wt{j~5U^YAUKvxt=$Fy$bc&+K(ac;UXQ}#&n7N}<=U?L~8 zsQq=Ujt&KRT{g5H8r7+19ZVqrLoi}dT3SGXteB-6lOl$&fm#vvoQK-|d~9V(_zCGZ z+y{=*5ZDog;sRP-Hq>2IV|p-c&EPBm69XrAlnMauO7>fC+bQ{5)>HV)5b8Eg)f{{_ zW^W;Umaa8)bP3Bd9rL&JSg}24gnwvKPjcRKWlim=GK6&<5Mu|eB6Fa=on%;WLJ2(YhMIR{D4x-o^od2qJ zLY=TEQgqB0q{Q^zOE0I=FUINv*P8+1|FVrcddyx>HTSKS&wV&G?ap6{-Fj1%kl^i2 z3RI1MW$1ywY>U?P4jEdN(+h3|oP?hF)HQ+9wZ-l38rv?ZB6`st-O02#Z<ZPk9dbC>y0+zSlYGCUlgInV%`c74~Fm>{}FC2!mv=%TzGeOS5knAcXBi7F{ z_|D4;+*Fh81E1lvSdMIQ&+|1VE)SWcki*!>FuF#_TS;Oi!r0LBUpB-3NAZ_WvIXcUZ=qn#twyCUqCBh?7ff}e?hvyPDwIvc z=nGG38GqhJjm7J3a9eqO-yk2Y5l}&2PE)iG-4}?5V?RelMZL4uB&;sA5C+8}Gv|$@bHFJb^#P$~lGtwJ5?5#s1+m&IdN4(-B^xB>1lxXoET+z1l2B}y4AUMJOYi3X z#92&fS0s3;6WJ1~=3aMmsJUAd778?-4Ay6y|8=dyUN>uv-&T)-Vw|XWw}Eq6@lofn zC(rHfa*d&{Hr87qF~7(y&^;Ml!&eQA`4R4h(c~XP%I(&g1UERp@g=-3l?~9fEuop@ z&Cv^sdv|P?HZNWB&VSxLBv;S}D7}+w_hQS#qraIwj|siln~QFZouh=_NSGi>3R z%CaMg)!~iRLne*9caF$a13YITW*EW+rT`cnoQt%8LCQ zt%&_MR9R*hou@vPOEH(m|Cl{A&0E-3Y!9Rs9y`SWTZoLi9*{TQ*3PVu-qUh>CLOM7 zSq(Auc)n-C$H5pPe?a09G>Ovxqo&>eN7I);C7ten z-%&JBF$6UQZ3KQG6`B%mIn7@d5!@2%nx>Tsm0PA{I%&;2AR?p~pt)8fYNc%hmIk(r zdr($r)=-gSMUB%qPIs==-09A}@6-Q1Z?<|)=X84fKF|02`F@tCILR-{;osCZWB@-Y zDHc>A9joerNoI$B5j$3;)Y*{daaJ*qOzkFa2TqfZz$d6xpm^hP;_pgt$X*)mY8SDz z4dpD|QfKnp-e(uqRrr~SQ~GP^tSaxc*+Up=e*2(ruo9h zfA$ylLxicl(O(uC8b*r->9?}%q(rS%F!ai$zF-?UB&T6!TInMSb7#-8Qtk?8(@Gd( z)NXD+dxJxOsVOwbsSvRib_J1M?rl$6h>wlmk`v_A1O=!|om{;$nZL+MolU6tQ8-ho zP2Z-IAi$|fd*UT7P8$($2u*Mr?lIIrKnW{f)g^}BTs0GbtZ@!Z7HsD~5j2m_3=d{` ze$Hb_Yz?;zU9u68CHSUQ;*h*v<8fHtC|T`MHra@G-^P~RAwAu)yVfz%OC~?e@UNF5 zth5TriE6Y6IiMF~A?g|eqO z)_&NhLo$Kymc1Ay950M_Vgo4_GoB^-ry*l8z zd#PYrjhZ;|5$7^w5ZkuP$ji&Z6DDhQt zX+X$Xm=yKR>0T5grpfCXSPPSU0ZRwPbD;wxha4v+(B3g%Ypps<&Du8sGCG}ku0CHq zgy+*z84e?7pfd|%ytL^A+?H3AGCDMt3%e8^09jPi@JbJgy_S%ANzSHdT;0BNh7{y* z+wE(FZP=vr+r!N@4RBt4I8g*x&2Uzx`!7l;|2(qz%M}MFuV9at_L?-EdXkw*|Cj%X zV_zUq%)FRq#=yU84zg;@v-^QVmo>2W#7n{l%*ly$p)s0RLkfvDrRiZ9(>!Sq23L1N z!5Si+N1Fx3yt2Hen7xoD!hL)&yt6DEP-%XT&SxqBVkY{~zcD><{RaHc@-- zSZe1!r`gOrdX6&w%UgSisWnw#Gr>t2#L6~J)uGs1#2M;7j6i@5W@oCGcDqc8bK4BZ zP1<$vy4xNm^=_&3#*_hFJFJ{|orPcxA|=~h9-(Wh>TV`n zgHxD>(??=ID*+xVH>5QV^IJMqlE;ZRVCXIwbUA4uG;ibT^! z;PWhk9pMIPeEvY4sdYd{Q(0(R4O@oRqabDM_=PwaDuzd7E>l!sbL`=Z|K>mJE5i?a zlqObk+=|k!a%_Hwq(EBy!t0hcn`t^kJ1*|RBEI^{k2;<>2W`8JE7I&h^cAmY3$@O(D!X=@PAKlNU+VrzNyUga$v!}ty}*q>*?!JwrmCJwGN=_>o5B=j z!UU-JePHRuT+Vyi>ahbjt59VFRcEj%-S(GWig4WdQUFc96C|u2xiKj~7Agm`bl{*r zb)_>Ay15JatSV%cQaSvzK5TL^(8p{`ejjQZP6jU7Gf5?Zh5Tqxt!Bao>q*o5$WRP4D484F3b#gU`LFX9 za~BG?65R^?VC*kpF{hF7$JLu+_YR-V2^8atV;ABdg%J4z!9&B%-P^T6u}Dr=-tT*1 zv6kb?`V`|G0yn`z_zJbXndd&~y^zavVRE?WWfWUFXlh=@cQ%%Jy2J**sLhEvYl#;H zs0^qY0`u7ny3e5{_ulxXW6W^^>Ze4-S|)aDA~5$Ab{oz(RxJDVOkWkX_2G zHi&yv@$MteYPkOl6*W0712id><$y8!QFl_8U)GgP6B?gplj1xw9bB_S#^n^I_@WF* z#!AUAQ#$v0n-9~bvhz=iTvvW$DP)!j%^iOHGo#kc3|e+F>>X1SXjlv+R4E$Q!se3` zF>9AwSoJd*)Z-kR#w;*X{#Ug>JxKdxdr#Njs3#rE{ud62pswq0$YfyX1NUy#vFso0 z`@zmV!V!ei=|A8!uVgP4i$Oc{0h|6F+_TynvKy1Sv84!ogx`quR%vLa;i*PsE}<%; zMmDYupJ=of|8S;d_>?>^t8N8g`BT!(EuuI{YP7NoHQP#~e*sTo|21CMz1Drj*UR%& zU3W`zhTFR-Oje_N>_Lai;)|7pZ3ORe-z-p-<+Qr90@Fe(T$I~>2 zMqKY%2CRLa3yq&803SGUOwC4DH4o{MpfaHn_(?^~OyjxyfTe@^!Re`UC$l zMo<9HxS6nJO*7V7k(JM#jl>p-}Qa+e747Ow0mP-+24bE1akvk^fg3}DE z)fL)uA}8ZI8oNSmUtz3=jO6HJt1$l0%qMbN5T|X2HD6?H&KaM)Qj9wNo*WX)JFzl^ zT!CxJ#WxycKEEXzXkjZG-QzgDkIwLGu?S*Pn~Z!W<-&YHa2T17+U@5uRq(mPluz#E z`MRV2trv4iuFk=n?wv4IkCbz|o+(FPb@VtlT;sYBYRt}ZCHTm?Qtn(sa8-YP;hH+! zt~99U8L)bdN#epxp#j-P{K^^_SEWAcFdx?|5g$eX9y&_W`mH57K*DriL~BX9YpI|N zXEYwbQ9p42b>|J!DrIia=eUW_qjD8)1>^X2i`+ahQIHEq@(E53s0Ugrq&_c{MF%tB zcz9S&pkqEZH<{D6lJS&Ua1cn{xpnT(e<7Kj?dkczmR!|S5E2i&3Q-@eDD{zDVnRbd z=^3dv){f6|52Ml`(np0uoWOT@K0JGPacT!9AEOQpjl`@LM`F~Q7M}eUYfuk1u+Js@ z9TiV<>s8&;)JgjVfu9+D@!%i@CEUsRe9+|-0xOMXj=jqHoj?>accD1W4LSS>T(>R6 z%KkXVl8E!5kzHx9wNUB79J_^8LhqlDy)*{qEPhVh?j+dBBZszQ25Q=7MLbhtX3LQV z)Dy(w7e5l3BSim^&fO}#6l9%~_j~rU)0@Fry&_E2F>D2+whF*ez47JvY$h^6+?N_8 zt)gX%-c3r1GR{Fqvsp*V*8c}js`ux*zkrjV<8EA)1mTp^DhXmY1MWHHI84>S z2vK#Wf?miI@4{~V1kf?LI!%`cT&KaK=zqFwSKSJUbCR>2XrsQK`I}%j&pP-#Kx;gP zi+Gk9yy9}sB{;JY=P}|OV@*TiiNbUleO^4qj6^Td>8%=$hLqFuYiX}nPyXG`IK4aE z&W1ioI8il`+(HWup!SJK*sU^>^{;6)!_&G5T z%#O4AobOAY*;+>$UaoS!uC%5teaXJN+g?1ow4;6{bOW)oYg`|-w{%mDtFe6H@w&ug zt5*5+SeJk|D4?Eyo~WH^w_t@Z28WLVz?zg5bMo zx`cTWxPLK-MhM+t$tTGGJHHJ84%ZxnF*E4??MND&#jb@hoEdK0rO9X>V2SHK!U#N4}i&alZ4%@IRxeu`W-0vvyy}Mu2v7$iT!$17U>1J;KLsYp3 zVU1ZZ-+EP@V^U=tXpb~KU>Molvkpy=W|`#dY<(@!&8myG;tyW8)B^Fw zK;4u0e|gUQ27Y<$y`-!Y|5Nj4Hmd^l$co`->Yi(R$y-Bv32b{($_d3Pnz1{zKD5t! zsvsEZVq?Jq#Y#qZs^kzA3DcftTQ=c1t)Mb|+cHKkrCd||zvt-{oYy%rq zKpbAT07+|sBSTScvun|KPm+(CY-qA^`=7X`n*Iz8P_D{O^*n$1E1tBIfl^6+c7WC3 znF@GJJUjI$S{*dufX?MpR6C!ONegIUh$Odk6QvssSKvVg^qoZkYa?p*8);0gFW`Cz zSGlG?z^g~f?es3+@)9QAJsm@ER;eqnLfS-~3KEJ~7>FLkiife{xx#On3J7=@RAArE zIgNBFU!Q%f3Yi;1`GFYE`A+OJhGMV5df4MgW{*mFd+^ry0L~ADLgp<(JStX#;yB|9 z#;@+lZ52G@M`0|j)M4;~9u2$^@>=m5Pr&&(Sn>Bm=kJn`2;`G9#SK2tKDVb>0>c0X z58eK>D8N!R;;cDFs2nFYiY9R%u%3EjKniGds*sD(vWH4@C;0s?r#j^DN9AJ3BV*8e z8jib9f5SVmg3PNanm%J{y3k;MGWsw7$D!3XW7lwN&C%KW8JGhGs}a`%?_c@?uI3yB z>*963X6x|tI^aeBd(3|*4_~XInE3&+u`OVpTs17YF%W9yit3#T0WY>E6Ino7>r_a? zKZUJx+Uq9XIr@~jN!~<7#y$dioo$fpxSOS>X^lEm7eAUx$x8XyYB*h*>A=7T62j{J zXwZ@IJYJ|z*~hv)?7{)WY8q6ob<6!!n-G_QvaJGq4r?Ga5)QdI;j1P-`(NK_1|*%q zV603vs8rQ*04rn%NGgzVWj%xmIZ-!0S949p@;k?{S9{V;d+{UiYVBEw7RZF5Ci*~= zgvuXrOW78{HL*Mjk)bqezM>oE?zkOADwT%1$?&T@kf;IE>;UW<`~|1Bd?7y~$3|59 zD7)Cv&Z?Q=7g2sIiBo8ZxLHP;=X(1o+%<1D(C2RnJezjqM0VwtfF>v+5+jbnNU$?I zkOTwpYZYGQJV*ELp*&&jWoPfxUy+UXgx++X*E~TEk6Gz>V?Y|tri;*7WcC?WN%%`q z7OoCly5R1$6;(Ocm>ze^=0!_pMoyFRSoU;5^7yUFh%O*az5!mvm;4)avRBPDGXYoX zKXGk@Hfgr@Uo)L+HRkRXOUQ~Bxg~$Zvs4= z6(^93Pc5MJVxR7rK`4 zluw=lE@!7;AE?lf?*;j{rL=H(E8TG~fFP1VrLm+?EGgtGkgk13RmaawlZMBif@H0B2AQj?xR6|(loz9V%A8V<_>vf~^R^Y1%e6Wa<43e%w2h6D$!LtcQ+u9)E&5vsN#WXv?;Xb6RkXQ8=L zGgrDqnU${NyY%v*wS#A23gj6xi)Lbb)$x0tA+_**P*{XOf^2}h(*tVVBtU=1&lwGf zv`DfV!hCbwJw6+rSq#_U9$NMnAm5nbA>rJRad?q>)DN`4NosJp@^pi&N^D7>Uc5_Z zdz{_h^JEm);aabhAE)h&B$vi+ba8%K(QO!HNxxH*f9tF*#0O1mbPw%)uGOY5#{2`j z1y(h!?RFFQE#;1}w#+FDbV04Np%>E<`vNj)cxCK#Qy5IxzuV_#^_Byxh&$lkInCu> zvxusW=Gfx#UE=uBFIH8cbGHMpW1nG5P=bS$d|S(l4|nm2f}dg+{6yrtJz^)mhoRWM z3Od|O3y4Rc524b-N0al=Rt`bC2Cavkk|c7uDfn`X&-t;@G`kY&9_kyuJV-Th7hyRq6n;AjocG6@nJEz+xgE}3w;IrJhtc#(;-Z`8S zaBf>8*#c8^ANrh$L==z4qdz|Yv^B|Y;1O+@-7J~{B20vtU<*$`^RG(c@Ld7%SO%pj zkHFR&aUe@$FuXagUq1XacU7qo3x!*!k$0LmRafeb;hl$0{tmIQZv{AV%RQeaHoT+hXE;In%fipVihsvSyvDCMTUG zTns;cDwb}tQJ8}w(UiisJo@PE(Jkr{&V?)_`e7SJ;=ateRD*=?HDUy^Fk;^C^u0H* zXDzekA@&RzI|@5n2xy$9!GO#!P!GgwmV%_(Nh$YqdORO3eS&Wyx%*tqffgYPXm6QG z(b?6y#vM{i60DIValcO(s4)O-hfkA`tJ>2~$Q6n_v?ktCh)S|?m5>z>0M!SW9p1n# zW1*ZYXlo)R!_;osY)vQ)5JULn(JI)e8u%3S0%p%ze5&szMdKL=255LRU(?Y+-U2HX z7{lcyr2di{*%L-(l1`(thZd!DDKY2F_!DJG9BeJ)nUdg^?@d%+;`A1zKkVXGqU20G znvEZxr6RHl{_tp7Pl!_c)XU@thU+=&JceJdpxtVnkss|}6Qb$lF=KQSvdxaPUr-v3 zFxf9J5#`ClOiynNG|Y|Wc4Z$&%U=B>?bY;^{%|=K-olaUui#j2Zl7?1oEyr|i~;>o zdnDk7HBlpsq$}Vz?*wXxLC%NH$GQl>B`?pz-{=j$P@DvdfHh=*NA_QL$t4jk-m%xn zS(pLb71w&q`s$l*FJV0wf_WYI7~A_m_GZIHb+q{osej_x@+wDr{LvDr=I-MPD_;sl zqQ7q9;V+<1vFjc{EKCQ@^=Ed+1HLf1O0g=AaxACIeYJB3*f8z9PmcCkq(5k+7jE6X zip@;R_c&M`LGbB^PPT%RJ1qhu%WT$Bz-wLuhL+8T6-hv8KAYu|ZobS9jDju%)kwp< zFS;{lYYU;z4_Hx2S}1%Wwo|z^gd0%eA(wK7N6=bsd_dze_yh3pMZ7b$A!0h2o`1TO zp;W4?r~oEWC<-9y-D-`n)C>n0%`GqdKFhL96nVgzShk<(B1L!-W%*5u(IPp`9yk|C zWPp^3?QkKc;nhy&-RfZwV&x9&Hq1*CQATuzuM3>T%dS%tA<}D!8Z1^sRG(p~{f>?c z5)VK=*DpoC)cw5CeQXG089t%-$ln;~nAa>iFZw&K zN7=svH>2#KYtPJ<3_lePzdD+?ma&@~+O8b70$hF2D& zQ8qJpw)8THqS7ppqDD?2ipzvMkXReR0mZRUgxU;zO6#AhDJ7bvq)oGQhd^d289 zVJlz)0@vs*EE(J7{p^^G9qkfg+Bd8@GEo?c&-FPDq#%3`_Y`T3`zW`1$aDef*Fmb& z(b*8v$!o@#G|jWBh<-ZA>@AC1HVN;0Ex(VA{)isOp0+lUjm#r4DR3dpQDbVRn^q zWm)6w!sv-QK{h0&Y3u ztq-t*WOi<-?tvG$T2H|3ZBbu3)+5)T-)`?|h9bTaLaA(OA4($_^KzRXo@(tnkP}H} z&znx5Eb8K(W4yKf=DqmaGE+168TfB1^VyeD?2NM&740tt$ZI3OWbayk9B>98EZ0l+ z*Fppt)aU8{e`YzgO94v}#!q+bM~gWc?OGlYo(^ix_`mODZrinykQ&3>>ncoS$fX@W zGQt`ogp1`N(u^G~6}c(9e{|R)9v$q;R8*}x0#1|jVxG%AIVl@B7bd!Y!~a_t_q|}d zmX$K89qXxT!?wV9&eXSItFYX48EP%c)Xgu;I7EPVTxi=y+)CE`3tO=83Xv7>X(?!N5NzDPRn_!?)T{V_{tAr%L+Ga_2%Vgcj+R@V+Bp*VxS$N?yFmPbu-3OF zg*+M>fhuxC*Q-!H!OX-hZ^+};COHHgm|$;CMP7btOvAa!hQb`l8ttJv_dRn730#7iW zj0DWh;y{vt0s6eZy0knZDxe>C6sai>!2L+ay@w{@&hHL&+TKGWD-JY=2bsSomd-VH zc~<%gZaGkEu8~vU^4>?UlNa5cbAEltv$zW02HM=`2+jd^&*=Ov!gl>VR1;#;3Wub( zHLgx3y##{|+3gOy$Endf@~z6mUO|em&}J@I!aKU0E)$}Wn-3V#@(%$20S_j#b`Pr< zp1LOar_VO|Bl3HVX3Rl#IxjECVYg(w09yCK(?0ZKV7xh{5xrZOr3kcf`k`ET0oiOy zNKGIF+BPq6)o%j`z4a=EJ*EQf(}jydsh&YV4dR7Jd4L^33`=dy1Chao81S>dHbAk%{d9C z?y|kfZC$!~b$RoZXMEL_lnNykfJ! z$Ba|BKSC1^_=MS$X-r{^3H6&T@1)P8D+=tgFQF*R=_FS3MwuEQ{e8!!uyfcSwooMG zUkDfN(L?Tu<= z2HG@>fK)YNYILAy;Z5wr&H>}Oq0sL{CU+0vkOzDjf@V3AP#-xUhk)(nsq~xdiMRMb zLr1AYPKXMaFWK-;?1N|zv};i;f+T_Cr(u{gP+q#kbG!zLGNYlaW>y|^c5p0Dfj1(u zCHon}5?{B5G0o};%}B0y55dEgDCXvqU_R4GgqL-Ono5@kzd&(^#<<42u8#2e{1NxB z{Em5+ej%^TaktmQk`Ot5W&!~r;=PS?h!@j6Z=ebr*Pu*`8;&NnV%h`Q^B`@aTfO!& ztUvuRSV33v4FMrGV@SeL1|SMJzsG@y(fQ)dDG`v5Y3@?B(0}q1V9v7^SD~}T$Tth& zd7v7vb=unD#Vh(OMVdPfQlLCl_{$q!r@v>uIC1&F@Z4mya#9pzwS6lPWq*5M)$V83 zdV7L(+i;7%o!x9f_G8cQof6i2+u$*l{0IEgm7}vWGJVn{GPKktk?}1Pss8m zB+~Bsg?15jm%{w(kp(&?_mJ0xw{d#Zgc)fdu%Bk#21u+mGn6u{J#Vk`I0xQ`KzAR_ zSLkVlk8c=O!Trt_AL~9ALeEh2su~l)Kb2?WToz*tN;lo__<7DXKPi@`fN8x)Hz7y7 z)7yRO8&MG2s*=x#k8bafAO>Nr_xUKmUq*yFdDe2f7r#M#v6rXnE#Ov7U%BILD|tta@XTKdqsJK9k&MwgxOx=3pQw9K zA<#X#Xqg-k826U;U5i9kS!P=@vI~%tucJFqvne0G@;Bump_r0Ox7=S+@tkVW9TN4G za{7jc&=@7W7qaf9<6df;G4x36HPhU`x=VKh%bf8|s^*{I@zKZBL;dzQlS0e-JCe5zCd&C83HE79H-Jgb9t>;3xw4R*#-QjP;K8*cK(Li#+%MS^hRW4 zfCn-i+qlYd+fSu;tIKqdX%%#4GI!7ZzJ_tCHe(F!J;mg8i@YZK5Y(gA;m)MvVp0?I zyR>l$zgyZ|i!UJcw*SJ+D?+&qZ1czq5QpPLI5_A_Jvza8GEPlA_IOi-fZ1Z|74WDZpqK;#$}(Sb5{@#>%-Tq|9JAxR z@%966qOmGeg^T^FZazWb&T}W#xux%MjF0tRafo>|JBGhoR3F;m^TdD3n@OBn_8M?O1ZB8~z~3Klyw>>_xLWNRQ!xeXw=$fa z|1yDL@}vwGFxXvM&Z{_zA?8#!i|*)ecr+}(YFWfhyNtg92whOW!1z7_z6+Y9kql2q zy-fpc2u@-J`bVf>oOC{T^sx_<$+7~iSv`V#Q4%I-Y;?|hG+AUi8Wz6$BU~MMd3d(G zJ9S-#vOsobAq|WD;C&w!ev&eK9#S#ZSa+yBJrq$WC_CmX z-{Z3+C!L%Np_wS)2>X^S9mjKP2%GtMJeG(-qp! zMoQ-xC^KeOvL>*ZUS^fFf>a_=h`$3S`v(A&_P4YEqxgfy9>!af6 zwpkvCdr&098t?Jep=J|xkW?%p(Q@Luq90SQcI5Ic`JjWDRgwSnpt4$S>A zVtha&iiCzk_)z*s7np>n2!ct2VCcn|=5ZQGE$eKRD$3xg^LX!Q0<2e>u7Q^U_02*^ z*LFXX8WsizGJU+;wSfKH9+GB4da9cc=jsmMLX@LJQ8TkOo%UN!Ii`|D`cu*y`a7I$ z=A~?&VcX2SHzuQ~YEAuhtl2tLIg?x6k7lE1dlYM(fKbD5&nb|hnAp;uE$cpzNz01w zzJaqe(OKxpSJN;(korOcbgxezQ2($EjRf1|B4p2L<=tn_rfB6Gb5Q3q=Ne+=5c0l& zfkJ*%fogm;60UD}S-M*dKF9lNLwSUL)C6$S#Aoy03W%k)Nl|#PJ4*KY2_mln)wGvf zg-CYyX4eY{DICM9BA$B*N!L^nmAmE1N$FM3g-ru!G`2QZSlF5D7uqc=@S&9eE#ch( zY@_#{73(g13*wb~MLHVjU@C#pq`ahJc>ZTF&oAhYPR0Az=-RUP`8r>KCcb_VfzPn< zl4=U`2qOWFhyv0%40y?@L}>Q)g8?;k?**=R`k?68WmEn8t?~3x?%Qt{f_z% z(aN|2daLEsPcE@jppp5z)D%_(woB)Q>42vVmR%YQ{%oNZQH6t@F{NJi02$sOOXY-j zhMk8lBy2wcP?rX#pR_)A_z5i@zQ;6SW&a+)Ky|<|rCw-M00*2A`5`PbolUW1A@m|h z+C>RaX>u6>DsDjY#Kbz-O&A6-DA7E{aPi)Ox%Q2CCQQNZw%i;q{|-cEW?eITY8KTF zcN~TA%9&U1X-piq4et$RLYv&*R1i5*?z~-)%0PlGaZz|tKEo}q8D41k%~o#K<&zvO zVUBH4Na`DklG2r4fcj@Cr_;pfU5_fyEeNXfX_s%$szD9g$^$~J$$4!=D|!6&Mg3YV zTEWWK^m6xc=8FWxe4z*@{=QTXzRCWY{A==k0FAdBI4yAg>ivY6RWNRV^~4K%OBt@2 zv0H8E1nA3M>&%`f$c5aWHY&%|#lJ_t-(YQ{nf%>q z$~|_^E{7XxlrTXcg-WE|zUcVhNYCbA_3IRfs)kV}2i~D4L$W@{)Eyp?XE@roxl?(6 z`X}rOH)ai25>myM`Lndf|ntM`rUDh6kkOa^v3y0e`VpeArz=F>4zJ zox9D@xwuZ4kV7$PD%b-7Zho%_hsRVX{8xJ3N64p4Z6lQ6%d6z~5#aP1~K32$}guf^vE<;2gRw@<%U%g_Y zXRxVSyq?Jj=zx!3#k_%R+*I;AKxsrsNB60|%>hHW0d2392IzQ-0YXc#qH8;5uuk

      UyQ@#a_Yyqdl7FjMkeRS-n=1F~$C{R+EJI6l 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 QPX7wFlm`|E-~K)I|9pP=5C8xG literal 0 HcmV?d00001 diff --git a/public/assets/img/blur-background08.jpg b/public/assets/img/blur-background08.jpg new file mode 100755 index 0000000000000000000000000000000000000000..de91f6cc57e259e3e1c4fabd583e01f35fba7c40 GIT binary patch literal 378156 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

      wSZ5SUkhB8s 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

      ~lsuK>hR+}cKm2{Q=04lZ4 z7fB*7hdolzHA36nL@#CbUkksO+$awfemwMYBVrJLe#KcPXRO1%5V|@GQ~+c*WztdL zK>UJ%b-LDFL%pPvO>yJJih`@IKFCukpz>RiZLE(WO#c85_c(^u{2-{+$tY5_{IrF@ z?%mRRMa|f?ONAPx{M^fqc)yYNDSmtfJ|IePY_{15R+9WtPr5Y#b*;%q))E5y8c0Ej zNw8+q7!ltL>~)9G{6hf0^Q<;mNMx&1M1PO5G;f!02bEH|UONr&5d}T|H!U3|{{S-y zLPvL49o;J(Zbj}LN0kdQ6P6i@) z18*t!%G2;nZb|DQV1L*VV)sGOCNC5$H!4OH1tB8ogj4x%h@$pX^<_CPYo}mGQIi#i zb69VLK;n#%Z*q7WMKhjO9Y`{V|<0@^w$8VU{!_)GLXpcQ<_)!Q2keh9+=n0ZBc3-)XFq^Cb=l7fr zlu-)LtO@~L_yQaJuP{!*0C5TR2NBru6M55e43JSt`!&RfCtj1k<=?*6V0`#1v`II%TUvO-{-OX zOpSz@^g18R`6`i!&GESp-zH|HF$KT>09Gm1MBz1^6Igsu+%DRcBmfB(>RfkRaPM$k zzKsO7`&Fnu6dIUixYMKQA19gtjLfT#CHsRu>>Rp+llvzI)$f-708_=Bp{*CD_HKELMfI03eu;5OO(?cc7Qe~D9X#6) zA!X^@nDKbgWl;<1joHSeU7ZM=oi2?jr^54(8U;jiwmb~~0Qrg!T&w&P7Nii)S8q-0@jraPY;s&>{5ZGeJF#`#rn=; zQ={d^gv)=lKkI3xPJpa42?{6fs0K<+{{W^u!`P#)OG&#PPxrgrT!ch>ME-941ab*S ze(C7iN7wu-E)EP5mC)=(TqJ^|5VL}^c zQJcAvmuz4U%b;B6>E5-Re=OX7IQ55HUwR^coPm);LI$wnjx^^X3R^YqRUK}Ze`N0& zRJRUYCoFe(mszAs`=V?VDI)0QjDEkb*uZcJyvhfg6uW9X2!kPx3wz>|elmzkv*a(B zetlFVBuGphEnc$%y#NjV;IXl1HKsr&{Gb(67dInTOvL%*0mj>5c(q3&Ez`_glj31Y zKtWGcxV>XTT+emYutnAX0KoVbpxoZc&C@ohOg_*f1my%_Bk!n3-H`AJ~ z3OT}VXo;SAtp=sl&2b;;3O!<6=71Va!|OzHkk6JEb*!&8&Ox~y&`dJ6r7Dg+3zL(!^W(4!;|fPo^s!tC|P~I z$Vr=08svSucLefUdjQx$(r9DgO zGM3n^g}T9G_nH2r5OWRlN+J`3KWuRI?^D+Rw6JD>&?i{gg ze@n;_p0N^O#oSiHWmkg3=t0N4qoxl)7;_sEE>RKtZZ2!H!DRmcHU)imZ&2rZ66y~h zvtP%Na(XQP0F}qp&5igxSgYyTTsJ4u8RfS^e^I7%{o+6f%kq#U0FczBy`wvQmAC7d zR1rSR>!~CP$1dloAD2m6Tz(CtRf#(<76D1k!|%oQfJOTXcu3i#ehU^~2K0@_tEb@C z(B)sE@NtE^^YD7!2lYeOzt~RkU8P@HQ%ui7#dtTXV6{xbCpOC-6D0deWci znN9g&*PwB_%i4VtZD2*DuG+M$s6Fz71D*Vm{6Lpin))Py5&+D01nm<}@9l2P((Q(j zNO>TFc4u7CgQ|wb(V_3Mmtw7gx)R)z&rX0>VAu-4t{P2jy<23F6v+e@4qq4f*qwpD znCLr$d%I!r&H%O8=7VACov~N69B(UkOHj3L;^F>ugC@>N0`^;KqEmj|ua;$g_i`ob z(}6X*322o;6L=?&zisD8oT2ti4b~!(3#8&=xiVtE{EU1lJUR0(={)Z0Jo9-mHOcFR zu+#~o?1L9qYO&alUB>PxY(Ibqn)5arYSixDYl?X7w$FU8%=p-lRiYj181btRF-KU# zfQ6~!QA%sIRe`7f0Qc?q-h*W#kkia3yKlN_?)W}&eIT@79L`ulp|AV$z9@AI*+5fA z7^ll2eChZ3O_j569_}(r5txwH)4H+g$xtPPa%sgiQ>KS`X$REDvQgIRrSyR&p+=z_ zhc9JQ42Q+E2p5ti2wVa4NG9ah9=$b}o>4A|N2}c?ph(1*onk=;GjH$3bT4)mnaDGq zND0uh^96{|lOZ=@hn-wg>#;i&rBdsSt^3fhn@6klo3A5Wc;Ilrjl^HdP=viH0h)xa z+#vOqZ4s}Bz7e2w74n4F2LS$ZTB_6umokS`>3Z|SrbLpHA!vyzB^Pkg0?BW7vVb(U z(=2HLnX--6R8235AMOovD;rZ+=KVoU{roDwbZZx;WVeT^i90^makB)z?chq^(UI8= zVcyMX`E+lpRn5p~Z0)`k8v>N0yaDO=6qehB$67d(#edI} zz-+HTgU*OqGb{$ICck_H@^~^@sS`6ViTjmoRR$&L_3c>VGkIz7${-;OTASc~QUyow z@Jvfec+J-*J6*7 zuf#1177l<)el=t88EA2<*@cz6l^N-nVhZ$mu9OL7@=V|1s3%WQMAg8u#z}BhWuP)k zdAy>9@ivs9IyRUte)eIp0_Oy!&WR)34si+sW{u$HVT}Qap=C_M-oE|vQMR3NX&qjL zQF1l07bluu&4>-Z2$8|2DdFjqaaFn$aBS~oP;*XXr7$2`ct^+Zf)pdFtwP}+mYgWn zr8zTtuPoc#k=wrMA&wqS_MvSK!a+<5!%AX*pGn-lzrH2sY7RFKI1_on*R6zrO&EV~w0rwu43e^6VWET#A|18M3WFCA|Ytd*i4i_+7IqAmzX}nxfI$-3qhK9?|E&r@^8LU zJCzZkGm;g?my<~1h^appo*VN(Sdr&Wj{#UNWO-T4E%i0Z#^Xc`(fkMJCuQIOBRNTd z$@q#wFQs(SbuKKZvfy|~pP0mtBQulcsJ6J|XB0=2Xj45IK0{Ul z;P)Ct4B2CFeXSpU+JUjoDI*MyeXP(4BWNllmVU588E@p7uigu8ktjSrT$jzomk{wO z!s^m((MUb&jK(}LO5an1s$?H4qri(|k}z+)vku492km91+3Ss`N*mi`)(O<8tpTFZ zSFyg7_||Vh`~b3HEa@K+f%R5lsT&uTqA&=|39#q9+*M(l@6#W~ZQ3!mk{{hAv7`EF zw7|ca`iXuMCxN3j5y2hc?01yqizJ|;i<*@-*>yW`<)|F24vi}?iq^_-?UgESml&lF zx8c6tU*4Alo&@(ouPqYPd;b75C6#@Y{VT z`-X7+ULP$1zr@M5!b$xLQV+Ks{{WZ<7R+>bg=PlsiB?XI_|bK6p%l?-!VI~eUjrFb zOI22T{LSaexZ^K}myNB@& zjCY}hyd@Nq{{VG;zh_08f~5tU$TqFMaKSFiitZ6R#M`KuOuXrl!mds&bSHv&fuDMp z)K1xjx!~IsQaqjo>VuLe-+Ea7@hjR9)9HQm92s324+I?gV7G4@@)SCYQ z^R<_irhuACKk#|Xgp=U&7CboNR4}w2^}E?onzrnzSoHch4Ur<@UZ!_*I~%ft=4DjF zPWly)^^;MCw3q(?0*L2t3*m?-9y>Rjp5fp@U9f6c2Zyo0@$BBX3sD-Y@^0Osh;7vj z`6#6qdGT@~V{CP!3SAaQaHpr2X16(1nZYd5JP0w~$0WVbRvPRx0!=Aq44BFp zK%k!`)H67?p@2N?xadB^FV-oPybK0lf9Z?)UO_&3BETkXySQGui zv7uzin*!Q2#u_Jp(5O3as&e|3&#N7x6LFxg>G%>>mMZeNcqQrIygZ*M*AM}Un3dF= zk~}A|KG2}nsiOAnkUpP5!VK|MIE@XiJ?#C_v#Z-+!^p0J7d`y?2l^x9?7=pESC)Xq zc}iC>d@U4!xrpHJc{aHkWX1GoFl+;7CI)En-_bu~v++7^yDu246Atfz>ixk~k-`9f zL{Foe0Noe-!UPa=*r-ruYzer)Vr%hX^41n_YERe+?yosJyJ?JvFWO`D2w3Hme9Pz;^^1F8_51N_Q7LL(%JDV z6ky(akc>Wsd7gkjsuL6tO&6olKxE|-;!;iwpQqt4Ad=wCl&v#eCe*h0M*TxbO!>CX z(SW|k(T0s8}_V=y%B0%Q=L167R?PE{#esRAA&e9-++mGi&95u$tuNnwyUr0jpa8Nt;t z7r!Sm$B0mPe_VQNIKip6^0bjaNrp2F&gorVar=73Jk+V-i&J_=Wi2jRN!?MRMCrS|DBZUvOFQ*5O)ioT!; zM~@G`e#q*M&8TWy^w`Kgy-cbaoro6)@rDyDXd*Yh-Q*K(ww#IF)y~1JmkLB(9Xbq{ zo>Xb9UAr(N{{Z;SyNPz|>bvQSqYnT#Mzo#l9c-$~6Em({J1MuvY91OE)UN9WLYWHQ zGK;x)YE*`{tYtuzs^&Sgepnc01cLPo<7w_KZcs40?k33CIxWn6f=OSYE$w zq}V^uDY`aVdvZy(Dbns?=Rk)Fsf3c;Ic|2*g7K8xYqV@P`3zsuBPN~Z61L1pyTW3N z)m-Vk@Q1Fqws~(&QP)^ZNJm5q3`scE%(>wI097+Tb2|OmE^&g?zOBQjs-WR;0gL$z z+Ep)5hpgP~?QHPjf^~a~LAhk8*DC01U@q$;^YQan%6s;}rrsk*(1DS#TmnP)dx;<% z9Guol*fur=ZPh=o*KynZAdDC=*k&x7NvlP^S17m=i{a_XePf}4pRJr0GrQuYY=Xm; zXx&K3{{RetG927vvvM%$MWF8IWpUDzcC+Bn=d~Z6I!Lwu0Ki|79V?wLEny(!+tedv zX2=y1ZE_K(M*4A^h4yB*i+!h2dCKJ%f0G-TeAOMtkQSWFK$9Jd)Lz`96zdO<^ex#C zUTMF!k2>^pI8L(tG#86MjW+VgBmHaYEO`=bKYd5@t6_^4Kt@8|?2p0u z)CoJu^@vIqQkEd}_nDx%NWM9cja^7U5Zr2x7UQ`g^o{;*p~{lG=yigI%#9Vxh5Rq* z)JQW!tlD_?aJxv!Hw9(9(*q^Wn~oUkc#k+5?se6Gp0mj4#~J0bGY)WMH!bU(?#%=D zj)-f&3Wr<-J2GXLBs1p79HUZUv#~^C+ewo#NIZ@#2{WPMA1dYl006p-_uxx@fCQ4q zWkyF!dI7V5JoG&-{a1e-D_>0L$yFAz)fKu)>JVGs3c^{ZWy%N8^tV; z=6-knsvcxE*H>CD&1#U3R5PC;dhjC*;cUebN!#yyflEs}7{+_T_{AteEmT|WEzANm z_0K>|O*S!sE9*S0M?(-&!o^qJqbl*81byY>4e!=O2+tl0kUfvbGr<1<2JxYiGwl{9 z(?fP=>g2!k86z8NDZ_DflXBSQ{{SXML`x?3P^8%319>Zf!N7vJ@d7l|$2<yo7am;gAG=gO1nX(JKN|{n)6ZI5N9zvfhqsCfPd|2e>&iI!i*kUaMKmerKJtR?bHoh(Z zyC?9O7N0RM@Vh|XwivpPAzWzY`?r4=?3Kh+SICL=tH|XL0vD3y2c@hDvn<48vAV!( z#d-ZGQ53ztJ9hjyxO5}zTn#YC`q%Unwyh19TKSc~t9Lmo+r;2$HTERJG?ZjK+0{1L z`T)rR2@TZHW;`Cft0I4_(f31Dy}12-;&3Agp~Vc{C>MHWTIqbXR^G@`0rfRbJjLgE zTIN_92#TJCr&tf-k0UA!2a${LxK%6v09X-QRnp#foZg7803ohiQFGd~8CgSH{d@;R zp)cf-6+!K=<{GhIGTK&Um*UrcF6j^Ok!ewoimaj4)2@f#_nBgcp>fRa)Wr{HtCLj7 zraek_S{&_8`))!sM>$3zr9`vhEaqgN0M#tqU-M{4+{Jl_rAG4- zWN&t)nQrA6Zm;ay`hvdGtCKo{IJrF@UgbFd09qPeE2;(d8|b}h?)$kQme{<5&e{U6 z0_|n2PC`cAbP8Fn6~>Txk{YK=q>(uOxm}@5HjKx;aju&nB@A3+=SEiBaM4GfvXrBa z)5RstLCW(uqN<7A`H65CY&oO%m~8_KYb*zie0)mCz9@%5!4ed1dfTt)-{urjDsFfc z(Zk8sRNR8(>6*);`dQa%yPg6pf1dXl+i{%q2nz)qHp1=i*z;TX5qoksEY^p9N{B1g zSPCuM$;G?(ap^~&%Z1Ya0AeYBerK|s%LJ>PS#_^T!5ge<%*DZ+v4^f%BTXk;9uy;O}C@T=0dT)3-D;0M(tTO&XC;^G%vadW{+ z+kB_-Ze`U@fdak_aEgs*kSAktJPng7PU89nW~|&C?_G{-bB{XUwmEv0ISXe0eG*`ILrjQ ze#OJz_%}skTdS^fh2AyZ?oGsRw+;=~`pOEDJL30QB%Zwzr{-Dqnw?`Ig%kD1r_MoJ zt=n7arh0%MoG)(>=**(rAl|z#R8|cJ--%REBy$l?2EfRZcoK|5Q3chf+ckML>F_q&Uxezuv(j2tjTVm)e5RM@~)(n%Pq6mUG_zH zbC>@B<>p!bdDK}n;NK-#Kxg|-M*jf$^zvmT8;d7Y?(-;l{ z&1Wx{fjF8ha>iaY1l_-hhb(c^P}+xbRU(zzkS3!=4XV?xe(6N>Z!3;llA*eD&bp+{ zeTo6;;kTFZB&+b9xpv}w(0jp$`b`zte(Kpx>~gPKt`ULXZq0NY1%090SsX_0$*=E) zl^@YnLEJq2gkcgR7zIiwg^ zi)CqBY3E4*RPyBTEVv$6@8%22$uH~itGIWEPDVGKI5k~_u^v{^e?sW!xao}THFG{D ztmif(#ZnUw#IflDvA*MymPzkpr|ZM?2s8y^R}*&iq;|LXweNhp?piw2&&?)ay35TL ztFw@L{aFE018X@Nh!F)zTTmGW_B%ExJ8n_zWZ0`0I(IDoxrsh{01fB-1?d9az=*JzteBp% zo^EtF=arStL;65g*~ER+cEnKP6cS}CJ@I7OJ2Hy)d^C1eJIJ=G~dbq+v^uo9G zG-7-Ya6Au2x(vAN$lJ;l)CTQVdw#KD7&idk!2IL{nrpM@&NE{{UyaT0IrB{{ZQPOph2#;lZpRFRE;J zn{r*#vqn4tU6@AMz@ySL$M&p_ph{=)ay)gEF#K%Ld>}LYD;~m{OC9WS5}a?a6BiLTAt4+sGbzm-G+VCQ zKlz0z1`gt6dK)jhM>30e_N>PQTZH98Y;PTW@>v7prl zA~gdL3!A4%qpyi-7*v}wCEyQz3~?fqr-fq+bp*0tp-ie)OuU@P3#Q_+a2Og+!?o)J z(tSkW0X#_naB={3Oh8WcQ%1tTMUG0&GfN&n`^fsDE>8=;*6I*TB*uVg+)n{7vg5a% zB;L?lYQdjE8)?NM{{X)<5AK@FXn6#Edl?ndzMqtYr}(Ys5_<4E4q~B_rNkp+a6F>FAL`n~$(!en{ZAcwDY2?qx!gl3 zhG+gG!cNw(F(*%#yQ>)IZ=?`nx+8#0+;tL8Cc!NLHmdx;Wlak|mZjB@C@e5^FtlH~FHdT)(M7=kOsWv438Pbqc zD>` z2^p}T_Hc>On~{ZEB7Tl$`AE?6k0`!wVf}LxkP{WV2KMm8fC|`Lctemm;!r1?FxC;S zVaQE;^{`h9j=w5Paki}Xm7lFNo$u&ASUxf#scv219+m6I2Z?LiFAg&^ z^2`36>^g7OiV}<-bpT1H{w6{R)Q_0`MPy99N!*O*Tx<32<*f>85LBOnE2|{*6`>0o zN|N5)mMgn~AcyhV)UDd;92y5Mp4`sG^l~C<5nqK{?th7Ts$Fb{ri@C6at)x(#|zzS zwtiMHgChhYkHn(Ftp3~NK}3%GQ_+X1%Ki*jJ5k6 zS8cIM5c-UDF%xkXQ7$O&t1hD#bR?a~s2c1aypep20`G=mn)@;PTM91lCVx$=wuNMR zhZO?f-Og$*7#bQkEej1J_^TVAnKUql7oI9fzn4{x#TXj}!}RaRe(~L0sSxW0nB#&A zQWsQ#l#=TF3+9x(#_en=M)HYLypnZ4Bt!p%Ro^vO{t?!v9dP-V;5NWykz7FDazuf_FCHu0pP1a%y z&o4Y^tRbCXy29XoDpt;ch&AHB1Ayc0%J_S|iq&?n9r`RskWiSF~Ls)XQhh6YK;+R@sx|TMEJk)J<6K#t3 zPk&TRXt9xiG!_O|6bX)9M)}_EIK;7a-(CZJpVI9+xzKbOUmGpr0cyq2o&dei7E*_p zWQM@KBbDj?4LnG^r)F3d5~3&bc~{gJ4M6N+#Ly6A8_~5va>m+k8D$7pqghv0hGhVr zRhzL#E=gE)(m<|z^;ON3Ys585hHShQ8fFps442KPtF`?t+fJ(B{t~TZd~4c(e_a}y z@=;Vk}m6DD5x_YDB!-9j-jT z1;eWe4DcMgr~3YnM>SPj>%trap!)!4G8c;AI2{wEZ0zfauJdF~P3T9&j~z9@k;jFG z>=7k2@~G`FJ~f?EdalUt9*7&C>?J=x+?!BgzNMLQLu+IKOjOA92c(V4sy)&JPeijK zjm-XOnp3^XcoZb4~u>31@$80CxYuQx<5>8Tu$sT7)i7NQ>nFzQnD9YRzs?xmoQ?W$+RRZP1 z_{M;}k@II5T(dqRZ5Ln*Lw!@x6l42iQ&w=En_0s5y?+UZFUsXpM^$=mmEv@X1=1L5 z@)S51C1O6LucJF~}*oSc@oZy6DD%e}> z^?@ji{`DjO0Mk5j{{ZsJ{9=~o++T#0Z%U-_UL}q|=nqrh$3mVSm(7Y?BZx*5^=`JX z1h8-}OaWU*D+;mK8Vde6kTlUD^H$~uF2$#!24~H+6t#CUJ?p6qzWqV-O00Y>L9sdr zBWF!XcEtVuT@eGjUhK73DN#LmPq}bz^j*d%z%Te8vg6Q1D01Mryi?e@_#=m)&n#@0 zRIRN1t_QGAk;$7qXR#Bjo^lYc;89^0>@mM0xKl8KM?EPi=(mlZDzJm$iS4pkz^A}5 z*#27UAInx=?rz_iKU)bt-kyRk4L7rS0}tF08zvk708wv=E(^8Rz_{aIltaLTnU)Ig;VoLWvQ;#ehT%n`S4(u%FKE%5J&@u*0R><^33-cVp{#_8J_fu%~l< z*php|mJ`S(Xud`lm9#U_6?1@3cVg@@v!*+866@^vzO3?i{>i%V66 zZ94jDE`XG1o_xq0N|j9YCdNT&aQ^_BDzbKFpLKfg`mNcp>5#)j;O}~^)#j=u3>eA% zel7IJCt5a$*2-+CXl$>^!*DH6;uVLNf-MN@{%KQ;Apw>+U@lM%{C-7DVsN8;VY_9) z8wfKCLEjkDaSaP|ePA(CEd!&dMSDP`ACP9Z5etl#95{NU(?x1yD69%0!HL^s5}2#a zp=c;s_#LL?l-o*PFtUDdawnV{9a;fk?h#=Sqr$-E)&?7uilN ziXrh6W$f)K*Oe+P^UdT zM$UGLXnD_bm18h`o5yEoFOU3qrNo#f%o`^gzNXSE209DvS?|EE>;RB%zMJ%R0Qc^;QxT=a>J}Yu_8E#?Q@+wZ`*9$B1^Ym@N z2=VvFE2J}vi}xko29SUUhsecR;i>GBmz4=+ru|F>BVsw!8GT5(a;cWi#L%H$%0|IP zRdN(UU)I%~h;8~iHbbR%0-`1C3QWY!OK9%G{v)**O~~)d9n#_9g8f~?Cg+q;;Y>iv zs@ii5mNrMhq83T(;Hz$F8^orE1d`jg8po;Mbh^4PMJtc%zNlMmx8fti5Ug&XI+R`4 z{Q0GX zg6xsT2;?zSPLcRzme@_9jg4!v($QIhy%^%^ezw+PUl_YAR_m$u{F3=xRH;m5M;%z5 z94Z;~Y}MW_G+&HO%pb@jhu>3T8)zvmPZ}J&BbI^1_y#b&~pHK4fXLcAHaTWN<8;7Pe1%4H##dj>l zM&A_&DBs23__u5~)qRgRO2$QQG^+Ge;l@{4{(!Q;hwmK_TVPACQ)<*?J*Gfoj#_*J zf5K*VMyDPpXVZJ6l#H{CXnB-gsi{#WU9Qy0!WTn}IyXGle<6-E;+Gedh)q%>exHJz zSY^fP3Ux+MPLsyaYq*J=IvchU?b!xs^xlmVvgtlWn3Vg6Oo$9aQO*t8?{T!xE6m~8`*3Q2p$ycU4Kb)wo{L@=UVBAQd5u5J zTYfH$VT4Lt*7T5SrW`JC%Um}F!W>-(RFd!aw=|UsXE|`-9=XlENO9+ES-El*t{jyk z6;cs3_ck@nk+$6CR$RHum5Hf|EA1O9q9MlU|Nj2xaDa1w=Y4tJ_qq3TKleVL`>}2Q znz!lewVvh9+us)9EV$~006E#{xMBlcbD5y=fGO9hLF2qYXN^;@O)g8V$J>4})ZOh^ zHNA5fX!sJs|Bp$OM;w04!pc{Jta<#EgZ}xE$`wd>t@pgMQ*;i{nx~0Xjr{CPHXjwy z7B21$J^D@~XFcN$%8Gw#oiiF?#aho3Wp!5m&Z$>I>v^c(iIUb@YwY|TMo8#br`4N< zud#v^X2g^+D@Y|{PVOD64l~cPMO?`Ur3@%7@md){hxO4drvYr76V{m{_-i++t)(p@hv zekJMc6?7Axt*;9IK+Q^{8 zhdgJE;_(Lb+1FvOw_Bu5230h}exDEf&neIC$M>4qGPv`mxQ-4EkY zYos&^XvO9-u{f!FOtpsTy?S;ge*Vy3koe6PR4qx)K9#gOL3!(9oldUirl z?FLGEk#fTfpXYO7Y!PqD$H7UzRBxLly=gB^dA;ePI|TF%{wubZBXLtV0i<{8muqLh z3|GOdE+$jXuRQbIuieR07LAv#MFqLGUj$05pPHIpiY}3>s(LN>@blg?qlr1jmt%#L z#^IZO*ZVPMUCThZ)St7m?bv$X~$^LEG$S01< zs=OGk#r}1vIeJ#)mjmGzFN?hac~p2ErLVG-)osu%{^{Gt-!b7ae`{pkb@90kmAVYU z=Z{won*K|gy4adhIA^?m?hO6Ld;#)WR<~*6XU|)*xC;Wy#Bs~=o1ka6YhON0;^qUi zG_J2rL0J!ZHR@lwIe+ek=Nyt>O~2laYC#$~>s~{~-gQ7^wmMXer#QJT3Y(5;YvWrr zwz3lc{_^gGzq_nC!1}#I@XdcYPbJ&9bXNB;MoTs|mA#n;61sdZG}6{j#>CkcxBtF2 zXEWNay^?b2rFt<<%Y(1YH;O-k_6aBAzO_toD~ES0lC6^x?&=*5WY^1Nw!N?r)UtVL z%jKf=t=c)b@y)kE*j={jzo0J?8Q&UgjYUAupWGCV;N=cn%B?B?p1F&#^CWeamtWeS z@UWI@Vy$X9wm2o!z$NDlM%Ao>o ze^1}ZW=(a_Dg-OVYPQZUyYy@QZhE*UuV?uDE_dA9!p_?aob%lm-7in8^D3(ZI~VYM zQb8_=B3k7n`w3?IZYkrh&fR_+c&|ve@O)>{a zyxtGb2%eUtyMH{N)ZR+ZDLH7Kv$W79?fdF-XI&VrQA^|a6$LbYKBB)ox)boTx-*_to-`(@o_6z&nXDh*Wa*zJ77mkFkvFgzyEp1gFX(Z` z(zv$FysA^}E-##8dd5O8U}UK6$kZhFyS z;}^_dzEXm!kgsJe(S7)gZOrX{)ij)KJoiyo_@2fFU(*k_{p4R@)iCq3Vf&|Tx37%6 z-<~`FV54Ko??v=J7btFl!5lMbRuXvMoBwU*=t1r}tPDRbei2K8tI?nsM4Is(i#bLMr(2dR~C- zRn%NnN?AZP8r9qvHLxp@E1Vyrgn6k3X8n|By6=HG2)4~5)$ z6r6I{@oJ{;^!51jU)x(bnLn~qA4~Msg=m`?)->|}tnU{pcC_~j`>F%G5B}A$ApAyJ zlj3&p>O-H1f#myJpa61#O&DHr?#(6nPstPOmdq7m(Qj=u*%XwYYZ-MKEBqQvy(w8P zuy`DkgmNeUHx1(RU+fpNcS9V8NOP~AGtAYFRKb_6G_q%Z=JDCO_XZJX#}ruW_ARN} zER|x~XycFbof_Jv6`~1lUc9%~1|{dLbx!&~lqVlsuQnbMYvmtF8(o^hetjp9J12IN zAug)CJP4F8~>x;H*FC5@G z&g{XtJu2N)AMHGS{coge^xka7&$dXGrCB9T+{4;7tNYE(KhG4O*-7p>_~yOSZOw6V z)6Gz=S6hFlTfy-AHFdu~0ewEckw>m-o9j8PGOr~J{vs~)DKJ%^tCDiADyeN@c{3K* z(D@fXdj>L7ku|6K;(>F0Zy;!mW9}W3uVT$p&iq$8Cts}M*+}0umjhsjGLfgRVcvo` z4>H-K+haXNI%i5Sp%J~o8irSMx~zCVI?s_r9}}2!YWj}km{DX%PMxBET+qHP(_~>$*S1azPmZ1`v}^sx1dWVztLX2U(L9gOQ}he{C6QD0 zOF3ruXMgG^4Ckww>3%pZQoAu|P4bGFW$)|X$g5a`;iv0KPib<@zW3&yUj1;moul)1 zAcg$ozD0+{U2@my)~A1(yQa!w8-?vhrM7}T8qcS^kJPgu&1D2UbAu(B7G2D_BNGhT ze|f{Zx~K1_Yoz8>-Q{&A%RnRCPCAQPJ zIdTmsEB%|h4(-5Wr_(dZDWSl2RM={Z;j6UnX!$6pop4dGO2ggv1e2tFtNf?vFV4ev z?YF?H9lm)_0sZ%4+nC}b_0_)5xt(k_?T?&a)`Bl3e7-k78Xg}zo%^Nsg61!#H(eYg zT;i&^P`-oj%=_)b{Z}lz%4UHT|M8UFLfj5HHO*}LF3>pLCFp`(rQtc6rE|Mpc#yYZ zTUydXALdJEh+Ae`Niy%bh3+ZXe|PBHK6B&34@5%LXwg1J?XPMZ9cKR9p|9zY0ISI2 zVpov^|MMWMz;WP;=3bJ=$YBfpMs0P}-g~^@g~5;nf$dRK(YtRJmVfno%3drnm<+gQ zE6kxk&)yFM=#Mu?F~5r=;LnN7~PPY?8OvIolwO4Psx>6+0P7p!{XjM z`&{8X-x#a)+TrO(AJJ6hJC09T`iVxr^a7CDNmc<-1^no{+EdC#gz`+a7Jp|gk@gac zk6G2G=E76gtv3D|;fQkCFPPrldv;AqlfohJ?cUa}qgRnZx*$jRz7Tr{$|hGXEjT}){jQXWi0S<{i|+LDmELT_uf3MJ^Y*(%Kk2l@6y)JK zV~Ok#4O5KAsduYyjBJYiYWSYdYV`pe*22v3G0!?zDOIY*jOX;@wtzqOd-r7So|9)8 z>(!~f#ZLBqSY)B<=vV>lEmwWAb9+}(`Eqx&gXO^fpRGmf50$R9zpbU`_1JzvtSMheD3AmCj^96N6sozZRi2nqyI0Nqt_3={_x-3>K7o9oq`t&mlj1Vmbqb!)|@onK`4A$AWz3Yqu->J@gJWbc8wg zUF&zw>8Da()$Y4be4>{Ki8)s2T1jvi_VPRAs5HN(2hRPM|2^MvEXOp3<9$E(=Zg~| z1?aa%=yy9m#pRwJRz5=tJ^%_2&!`+bh22U0Y`YP_B?KKjIhW?ezbLY;htM=AC6xU4>v+%tYS80n=897ey-D7m#S%>Ud_ z*Fphq_>1Ao7Jc!jzIQf7x3U%zD>NSfkK^T^}f%18X~T6_WzySY%f@eYvg$D5kIsJh@n8TBvJb0H_x2 zZdHapFA-ZeeEP@i+rVDN9;Z8O_Tj=Bs{@oN_ubRTIkztsFI>i!eP93!J{S5s?%Yc? z@a3u2=377(o>-g=ANDlCcoslE*TL|dZ~YX#I*5Hjk>C^Lhx6dA@CB^9Q>mTO{5??*$}% z-&VXD|G&*KKfpok>h@&@C}$! z6$F}h|Kh_jzp9(ruP>E2H|nuI$;7gnU#JYf;`a5JTAEWatl>uS^_jhFtmJ$F(QM;6 zOY6+GI8|;(Y%IM2nfEc`dzP`Ru6%IZ{oS$SUPId7JGEgN`A?ZkjmKVvmVCc$lNS3b z<puLW8l~ACI&PRYdCDWXJ|jcOFW@sheqfT%5qvRyQulisPOB*8Mbcz7j2G2*w?)7o zY4L#Lu}gO+}sOLpBYxgT%E zwo{C|JB@S(B|kV;l-=*-Ku%nptL1WAwA?T>ro1@jtC=!-HU7H%!kwUuDx*i~^7l-C z9;U6K8g=Ce9Lw=1n4*wI_T@|cjfcO!|8399nHCUD_jFyT7P%r5P=Z)`{u?31U*f8) z6vnkfKYRa8IsOm%3?7QV(rv08slX725 z@A`F#)#|}--Qmq^z7z||2c?SlXZMy9*zm)j1>BN*^1t*QZY^93++AcG3G4MERL;t^ zxXVhaR3}U2*+4_0WG*$u?4D_z6uhPERl8S%>$v)BTD=N>Lov15Vkj#?Yj0s7J+q+2 z^pJt?Y`n;u_Jn_C>briySX5R8{@`j=Z*t+UlUe!W!f!VsXF#onoid8LuYNa#USopZ zaaoesGrmS#Q_ebA+`j!5T&dYL_9C;V|MxBB9C68CjSEqEPfQj~eRNsgL_REF;BWSI zQT!$@efOHZ$)n|Sx9ikga!PQ%X9DcFGVoc|zGWo@%(eR8cgx!Dw**2A#V4Iq2;F)( z4Q2krl=jQIkkQAVHm^DB#M|&tJ3;HY)Y+FA9QiaX$uNh;8%a4hHq}h1p^qy0#cAF- zifhSg8k5d#H}z1FyD01M6cs9Q@VZTu=Z1t9>+3Uqb~o;S^Dbz8b=0ulcX_4${uY7s z8ST)&zMGP&|Nfx+uytdhM3Z#z4z&Qy|5()XGOul!{(@a?%qiqun2kmFAKnLo>imyS z57rg8!=@pZO)uK2TttVkF+MwPoBLf3eW2O7%WA1sdxHnTxlSL-ap5@gN9?A&#)~_R zS9T4)UU`#N3XWx{- zwQ^2J1n`bKZNDE~7g6oV)6ThF$k_sjbmV&T442mF2g+FPyx#ixrDXi-Sv$S>sH@*> z+?ju4Z7qA{D$azxeA^SKs+!6F;Z9W-*zQEtlV9kZfYM%9z8y&Uh3zc|AMRIWQ5*Hj zoIh{yvstANela>Vdj5fW%G^sCm>KqGeC~^+dM>-Wmxeo?9F>pWKm8tB`P@!e&s^!f`2!coK3x$~_e6B)q%a^Y+*E_3K?P6P(fXs$?ZAsgkNc zq_flUM{kJip1WId zK>1{6`ZziZv+&fdR7H1!jI0#D$9&;u)orO=0e4%)YtoY3Cm9P4_s5!f{9_iM7SA(T z&x{Rk%UYei6{&OmA5#=LlP#I^BRV(;FSAJpR~g_-)-=%+JvqKxzp5=)cGpk5&}8_x zuQyB&YTZ09PF(#NcOjq%zs45473(Sx7U@!1GA+E0;2HQxJpR#DXSpQle&^C7g}zUt zkdLYo*2cYMWBPSp?Br9k;~|r$58eq32;Zvi9=~b!_>_6XS9{~)NKK6Ib?Cm!#qFh_ zBW`Z?A(S4_YijJ>gQJHL^VY()x4Os51S;-m0Xx}^-NugbVbMiy)EY!NxNqE(5F**Ya#db;JJ3n$i*y!8*G_yx@BZ#w|a zF6y<#V$nwk-J?51AY|`NK&gBL~P0?YIG*56xw2B1k!$yciU3uKgmHzw3ev*BWQgOhVnm5%nQtXFqhy1JO zd_8OOj(qI)IdizdTnVd*`&;G)5&^U)lb> z$8%5ribeAE#p?6hnrE~Wwvrw?_)IFQUD)VQyo_7~cNG}=xvD!KN@AS1p&M&O}oYyn==plDkLITh~8)#A|8Lon5 zmps2LMofJbRn9a01j{-9+}t=c%J^Pl0XGZh+azagjjC0>sHSyT3hE(abke_CdFtuj z`S6BjXws{81#&-Yyq&yLoRJ%;c7|j5?6n5*?&kKy4aM=DCttU@_&;Uryck7*ErO0} z#g85e(9C|l|Dso3EE$!QUTUuqP5&#T;`ONQ*1jG3;s}aE_}ib?E}lHkrB|bkC0YQr z@`L2^fI%@q;v~s--Fa;HzyI8?o3)o?CM2(a_Uq0x(x|R$KY3vjW*dbOR~A)xHvk0T zQrVOYSrnq}*A8KD_3{%J|0sC{#e4E>Z`%>cZ71HFH;YB8x|J5Z<6c!df))*YEL~hE z++(MkieV0BD<7y2GjeOW>@z<%gg@A7lYvMjH+}n$I`XaWSiNjHaw4I$RBIsgZwm;A z*u=3uUw`3aw)#qkJeFA(cFw!M@cDV!9WJpy%lb^$Z|406uS$_k8MsyY9c>YJ-snGr z=^*ADWAdk#`vN-g6HgyJ>MXzi@W(si7`)h%mT{-=W0*{U&i!k0T7m=8J&aO~_P`d^ zia&b8=WS#$3eA~M47j{OZ~n}9vx2C>M~8ANi!a)<#>eMA#a+*i(2@Ob?32&330MBZ z&u9Es?2gzMzCKSUscw{w&>O&#G5%(%GK5?Sm(Nch6N9DB{TVL%ocmTZt5g1fCAfQU zI*nEDr8gc&W$j5Q0fg&Hr z^-mA;xO_+gvL8~`t8H^_PCXv2TWo`f@~sGE#{PMk-&EBt#=6qN3^9*%Y1E#3g)Oih ziF|cM*vRrHARNzr>J;-S7}r&I{mF4>5kB5tNa|J3aR=*`Ui{Z^UXY{qF)n_(^vEcr zub8J`v(VDo-Rr)I$0b04gV)5FmkvTChI(iQ@9Bc*AY&e)=Evjxbo*Yb;BT`3Nt%(A zIar^E^3?1puZIu12gMTYrF0?mJpIaL1~i7EF^|Q~N21Qr2LdxPdN(Pk5vo2Bf3$Ic zS|c)0cxuhzKc;gBz$W;9U3|bA3PuP_`(TBV2d7Oq_Y)$R38$maTPWp+n&*kYKp?5j(m?9Q@HuPe@p@OvWr%G zt6OCSR1^WFLjFw6iz<_)Y5=8755^da24%ZxFeT*e*>F^A(1dIk)T0bIa8nd82yV`G zi3a=(z>_ZIl0X0dMPZAvN);gu7q2zJ6f;KW2&=om=suCF z6VMz~tGUJ2YSu_NRV9aBythj5J@F^ohd|pmy2=!52T`qdziGwC5JC`ns2iJau?0+c zW6jUxDC`mp)k@s(LAtMwVO1zV>s6%t0RvOCPZJ%XNucm)Ck(Ft3^T|De`U)K{xPwy zEUe;7-BIN=gGTNHKx@83cT{X5kp8Qns9?w1e2!1Fy7-4_GEplRIXdwF3{WuQ zLvmRe1(vbRfO2j#E_MUV9Rcz5kcMiK>0+3tyAwxCf;A7>Nmy^HGX$2+u8EQ~Zl`5# z;1La;MJn*J3yoCqPo?oBwp|HtG- zM4G?F2|uC=cyjh3h~Qc?Lj0cl2fY*My^Vb;7rk)MCPGgb?06#bRRbsyu5|xvTo23! z{Q7wqbb28h43)p{vtzdp0-cNFWU$oZ(er$~Ub0zAX#r~|kaTLyKPG0P=*gzFaUFwQ zvp!bCW>QunoQGk$IyOO+)_}MBRVJG7%#t)KV=LB2#R+J93E2EVuGk6gKTgjWqp9oH z&``}cTCTUCB#p$TPZ-?J_9#@`32aFOxk=9n_5)eM`r2upx-ksk5=mGXQ6LAHmfjP{ zq`2(1svi{fL!K49~kcaG+%_f;oG*mKy&?UtCPP7c&IV z4U(@%NbV9Up)vdam@N1okKqyY6v7_st64AFu%iD8IE!m1KoeaT7N9tLL&V*+?h9O;Y}$ni%{mip;yzaaW&0-Lo5-OplqA z=2#E4%`h=>$WOjqMA5~@c__yWOLOHhERr|mIT3hU_Yg&O#V(;V8DCt$_l^4pT2ws3 zKOAf$UGAmBlPyd60qEvk@V9YIp9Kdd2b1hsR@b@wLxfddWHt_xG_5YX^lKB1++<@} zD&n_jX`t1H*}4jAo$`l`YpE7a_zHC|1q&dK)$eKuX)sVYg+F%c~HPM8niSU80QS@J4j)? z6UdXZhdToLRGe!DztG4c&PvNnwSnE6J4hq1;wxz2Rkp>kdf4&fARHt$LW5O+>);J&Q;t@lQ_3>$8 z#NnI`o0v2Zv=MBeGQH459@)ONyvVCsuzG3AN1Xc@QtoF0;^Yh>hLF_HYY#z$7fm zbgq>8ELKFksW(IoJBAeGn#mZ#47v@PTC_|f4({voZ}D$|Pv%v|RhIUNG9)c{MIr?n z!)G@#n)ro#Px=^wwr><=@8)Qi8i3#M;|0s&=CV~-$kHSoapqf2vDzV1L1Ut9(TWlh zMBUvF5=6b-rYO|u@I{qu;biG0kxwVLQ)@=&It-JKp+7kE0oxnD2RC(74afWA5F^YM zyF~Y_rY)}T8-KNSsgP)@=xJ~yG-(bWNMtZLv)+J4Eh<5T$p00b?Kgezd>R-kz*;>}Hlb8g`OCem@JYyG$zs$` z{IWPqiWe28|-G|r>Vqq>W`I21!q8m{-G zay`~EvCYBxevrm=l`Dp#PQBAK0wtOrCRsezAOu#ragLgBFsxm&vP##glZJXQ-31f{ z+==M<3>Gqj&6x*zmgw~8yTi^2pg(d9xILStvHDQUW3iYt-pw*8?WJ=G`n+1ym5yo9(2((^W$7F1Jlus{Vv0ZaXof2;#a-t7b@xaV6P{Bvk%Rb2AOBFStWyUx&#GcHbPRtw9)>JSaZRIJ>`7F*r$0&axj10VSa>pyF-dlV=5w1@;n#Vx zL5?Z}#1CFC6S$SQQd;2J2SR16^b#!+|U%f{c@vZ`{-UHS^&4n=&#THr<$W(YmcYdN-8LBhp$lVZ=W8~h~ zy~x&&Op@%Z8P#-=fYM}_<8e`0{BeNcoNJP8WXF`0vnM64BfW0f=Uen`qM^wwa3`C& zMxyY!A*;Tb{SMYd*F+qW8I|oG(nnp`@h2KD02kBCsdY>-9EUbxCJH1zK|0Vgv5;da z-=X*?dzy`8 z##O`g*6W1v!)h&;a>~o89Um%iySRtEJ>kN~#SGVv(xRsF7RxM+)siA>2;bhFRuqOzN;-pAp7g?M8u>nS_EaNW8 zs8jn#w#oPMq~LhF^`P6Eh=PvgQ17b5AgqVXNHe6Y+7&dK4>GcicQokVtxfae_5>@u zuszq2WqCk_NQ#vppI++WCzzh(Y-clb%Q`I@W_w{4 z?Z)hwJP9rHmyN71({yhmMnur@=9VUGE6Z_Q80wz6o_uI>A{A`Bz*2aXvk%Qv<;Dg* z&C9kiCQuk(pJNBa9G(GGy1HXMlvct> zlKzN6GgKF-Ixr+bhdkMvpHimj8jU2DPn^+VR0TZqpbzmkrVxDP|3~5 zR{1aav*i45qoFF>LcwMyhJ+F$H(s@!Q3*7XwMdc(Q^9AjCRCYlgFcMJfto@;xA z`T8?yLqAqgakTQjnKG3PMiJLZ|5WdJ+A#e9i>0gVa&|l-Mq>d~c*dlJ;)DPYlqO5Ey8>=L4!?A*)iD z3j^ez4giqrW#%Zgdb3qn<3kvi{C59V3{8-F<9v%n=o!{{07pz=OZ0lV8Gdf z#6U=zkwVH^nvc~^mwAfpe*uP^MXoYCk+70w9+(L{k?}k_Em9;{V?ol2q!v{#4S;xz zW;6%j?$g;}oYONRb!Rz1)B{GtOj_p5LA9pFG|gOy`~#xa1U!!6<}f;MO`KTKkXTE$ zxaxHAM#f>1_-WgEp^T<#~NVWq^`nCavuHl^7tFb}B)`e$eD* z@<&3FH2*$z2-fGq7_(E;tXEtNY87Ouus9_f zDIFnhr#omx%ABWi9L=C8=J24N^Dq_-FXX2PXy!r#Es>eVI)P72Kqf9@M1ql=IpbJK zr%qXq{Lz}xd9qiauRQO@k!BWRcn1kbu2zUbrx~j|fh5h~#OPEvaJMM`G2t@Rg4u!) z(=)Qq0Bs{Tj-h$ydxsO(Q9BN+(0Y=VD>k-ru)G?Rv6xl>Bl=Mm{$P@>mP`1QUz&yN zq%{V)SMXN0+a_I2+*f@$G`;XB*G3~8Y+^=HJl2&pLHNNo?U3U7!u-H?C)kc>uyjQP zPlM#g;{j(H*iRTe&)W-)bBu^UWE<9>46f+|UPn%PYP5*Itgm1Tjs8yEh{zkT8B3&s zdQ#B?H?fkYgAR*stNxr^h+_28iP+4j?Kz@Yi>##cpouolag1m12EOVOEZ|<|R+475 z3{jISPaHE4<+0w)l@$A0G+%c(8g(BH?LGl8y<{9%&OQi_g-)-80bbc_Gdf|P!CEgB zm9?kYBw;urWZIpzXTQn-3rbOQ_Uy5%cmyR-{eQH`(HxejWsaMsem6{jjspI?(e2y; zog421TUG&Lhyyc`SI&UL&9&g>!|^^uO}jxMl~@e40pMb4 zJkr4jQ*EezQaN5fWuKmDG_v|vIE;7PJ+2f$@C#H3^w~5GgFeRcW0B4PJIC|3ew=4ULtIHw zqcr(~=ocs_mv!6NsDHonRvNGW7O;Mc;f|A*1${+4oBr6G#LcJD$!n8<_W+gi+5T)XL!C^AOp_()` z5WYBm+BR8K+z$2tGI-bXt}aNsFDJaAhyvkOU93Eo5f!(p80)~54nf{nDRWF}1;rX) zAai|N9pk&a!7gD+W~dKEB}<75f;-|dqcTax$3XHY32@^&1RLRKE)$MkYjJ@rwiDhX z*m>#1XdZ4J`~2(svl~=kqJzd?W>26QJAT8z(|}HGkls1G-yEcb z2pAtW7saXj0Op_Y67_|Y2X7#y4PW5=_i+J$<#(74(}G)(;47SfgDU?Yyf6GV zqXNxi0Kq^o?7W6ox+7~w8n{3X2`x`7sYq8Xk`XH!l;PG*C~PMehEIE@-(h4&`|x+>^b)ZS}|+v}_9w@K-vA9g|<>MO;M{ zO5gVPo}~=6Tf66YZ+- z>!@MIv#$r}HyMMHdp24@mRQdT{0T?F>R-S$2UF>Tp~zpb$7P*bcD(ou=okD6zwVWl2)>mPo z6LtsN;uO2+2HgRU20&-i&IC$CuMY*rL&v;nED94R%cfqB)YwNcLwOH`bJ$R_{mCPn zNe7Hzq#Rlvu(5?Zfq>nJDcD4D_I*7m*sK{dm9L?AJrs0(vyn9{q>pT9+v4)&ym*ox zg|uLX)9yeveQ`)h;7Y={>*XHnKq$0Siur2R?q0;>;TlPEEq4NfVP14;?e||Vr@pTO zbr_ZSMPO3HaRFT@IPlzimTUkmACWwO{Sl!E613ge)_{3AQ?pk5Xew_xpa(Dn@CUeu z$x$e_#G`*q!_u2bSb5E3ZI?ilPJu}}NHss-A=e?ORjk48A5(J&4?{IiIQw`=hG)){ z2NHL43fmd1g%V|l7XSbpKevy4)Wn-r9wx)blWWar9`mR@mq0{s92r<8S1FI6KiJj} z>+(q_w%#jin1OYm+bBAqK#(Y3LGP`yoM*YRA;g2m2%Z#S-Y-zawSLuk-qCr9+nP0) zb_$g-rJc-h$D`5hQl?fhUo5TKWka+p)FtBw?fY4?qq+PpDu@-yop8xEvMhpBizSJ} z6OC-9r89h;lasuzH*&?BYrCy;bU|NS6?Grx8InER3_(jm z8+>a)AlMmY3(C343}&LKY5$_B!k`GPOigYBff*`{w;z2$Ojs|IK2Dr+gYC?H^p241 z=Z&qKq@dXP!5yX%kO+u7D=p1_ls3YAkdU{+F|I_ydX!aeHcQ01Hr6Q~j)5>{m| zXM2CscO9Ts>KUAqkBFK=w6zt>px9MOV{%3#z?Gq%O@9JbvzO1FMoi+`Uxn2pm=F&;!(6b0DyX@@td3}as8Ag=|H0FivPJ>DNo+4 zcj-jiXkk?hcGNXqyN|XmMqVOe?Xr;?wz0yLl2*(xV^!GsI zOa*tiKl%B~h28Tt3T0A{oCqo7^vX>v;`s_k6z>uh;<$^PG5jo1uRz9J&!b+7nFd-f zd^ICzF8^c7IiP3pEf8;RA*VN7>K8u%Z)Sk+X}td~K{ET_`&KgoypsW2G$_~wTTmr8 zu@AXTZMFZ}9v1O_oL-@8i~OWNaH4|my-H48R$1hC$J#EcFyW2e*+$TU9|LA0Ap%uSQOc*MkP>mz^euYDSQNJZ zT*eOKWRr>@7%22DbwU$Y`vtwo+<4zTojFO_ta3(83lbc|FsEZ)0?7Xd3|`r=u!)p( za{x*sC}}P`{stLC{-bkP0#dThar3SuQT&i9R3Cz&KM$=GdBkRr_Og;n(AhmPV`H6 zxg?uUcj$`c0SN#u3(hgz7x!5C>_LaJtz=pfkB~TQMr#<2k#3R3j&`>Dqo%*rw9)y` z0T#?J6zdr?l>tObXIxgI)#^Jg_M}1YD~|z=p?@$3;IQI?=wLdwjC`y8m|78du?xF% zzkmU@#;$?&R!|oLN7|^KjetrNs!?liRn#=PH|En?N&-<921DWU&gyQ)-vz?qTjxg0 zg7E$}g-iQ6_Cfnfw^S>+%uE4ggJ@3I6Ish*{FQ<@uITP@`6i1Cz=(lepyRS;x14ga7+w+?2 z8`vrKK%$lluRQp=on-(VMZPAlwAUEurGxl@sVQW03{WY*Gv>iKhV&wD}jfBPin5H1# z9IqTxWE-}@$VC1JCmQxWcp41x6OkZNJTAraeSG;trB6H ze<9!n0CYf~8yKX8A&}DI^|G0$A^;(^&*dgsWO2ky1K5QUfVvL^q<~{<7-2rI2Pq@G z%$U}Q!PN2k<7;r9-{C>b2Mf)RBCk(R@Se~TA#xfDHoY83=w+~O7;yrQ8n@Ks&E`&lL&)^%^*M3jbhKFMu97FyleU(=_PK?Pwd93fXp{6M8XhV7=Oct%8mu+ zOqhm@^dr|jho{z9MAm!0O5&Fk8GeQ$0FY0Rm1Pye04gfoe z8@YjtqH7h=s0srP%qRdyE}ZB~Vt@<;;KPK(7n=3KNOQ&@wa&a3v7MF{%@HM;@q|`S zPIQKw#T3rL>sX8&r~>mJ`{?mhRAc4;_$&Nyms+K8`siG$N4;e1Lc^R(+HKl59h%AV^5KxstnH?cZXll>ql2M<9u_xHBfzIOWDu}Ses?_fqf|h4^IHY5qfEM=Gy9!eFk>3>PPU9Q4_HPIPaWp=DdHZt-patDs7m2Q@{uh%*qc+-3V|5r0$$ z{BF@`wic!V}VTPQ3cq`7aqIo_6p9XZkH0-`B~{dO$l>bO8s znH7)s{f0I@o>PrckD>3lV&0p;ozc_HU0!P`xiX{c>H62o;@Xz|keLOb_j@u~m0l*YfK>PxY!s8Q zT-Ke7#5O<6v$Pz_u|ezu9D<~&##J1m)LeSmPu-n>M!zS*W8WFqMjI<3&0D2xL4Ent z6S%3RhZdWc!Y6pJEV>CShRIP-w}W|= z)Vuj~#2a_HBTSU9xqs*-e00dayN7OMk4^`nCHpCPD<1EB83&xX8U7~^8ZuYo-D!Yn zGbO=JMG3M@riE#*vVc^Wt+Fypae8adbsuLyHy<$?)!I(0;U5u=fqIYoJuiHCqB+^M zPUP(Lfpq_AGIC@yMWsu)HUL3SK9*hGCmIdgw{I>zhaqy-wTQzR4gV`Eq5UrmL5`Ji z(J~j-GDz}-kxlibO+@$rY7oW&hBp4Z;fteJ+Wn`NFN^nizrp+f7l`v=NM6qZcBXrI zYm`Yo);sCng#J{eg{dxrWh~ehS3tcG+DicR!OleRP|Yo}=(s8FG-_H;uZ2s06LEUK zZ!rSK+nE9wEclZV`bhIRg63j51&OK8mCoHn;{K1LE00V1{{Q=?sbnZZOTz;Z(Jm!R z%;v#YG4aUEwPq`mc~s_+M@?-aOhttyA|6>*lG>_uA$F)`f=Y_kQdfDT1u9PW3l*(# z$g$tM?|(i@J_4Wj`~7;op4X@FOm!gK?6Sz^!MEv(REdK>Y5kFq?yKkb^ErxU*ZSCawVtKsTJ-MYrlS8$Gjhh-QuxG_5L9kz;cimFf9SDble9 zk{T*j$CLT@jc;9$%nxVru3BY}xOnYX`_;MZ@z|xbf;7TPaq(s%zL2GGRl9bIVm*ZW z`fmJc`$#uq?^f3hqwnRS=B#n8pUMEV{P(2R&=26{KSN?cS8KHYkXDCSQmHX7{7=5@ zJg7s_o{-#F47R+@@SIAITC1zeB3SLNBI~x7pHn*OMCY4zmTU#?S5!h^ zlq(Pu1u46J>me$(_2@VFXmDM7^YRU*nA2mIbM19?u%8A{4>_t-9--@I950D5Mh(gK zQh1(>GYp>k>)_5ygcu6YOFplE!8R8OW@xJV3sQ~T zH2{E+zRx>87PQDcsXY#nf>k_J7toqZ$QXTwX^-YAb93bQghU_BN;*k6ya2wYCix=X zv+qMm2YUseYCcM2k1M7DOj91E8YoJOnOc$z>H##9&w`Es>a8Ebyz5pG9^}~GeQ0(& zHsiJyI+&vp*W}HVt_1L;mtDMaU@_2aA8B2u#TuGR-6qdhMuCo^EwsV5BRmuB`BS`C z8?85|kj_-pkP;qzc42z>Ox;mKP*Pch4iF+(h0AMI&#~r;AvJuoZ5fRrR~}^9)4#UX z8br53A|B%rcJ$jlvy=*Hc%&lo12zHzM>=u{oS}+p0cbtd$Ni0e%~y-Yt;lT5c)*s@ zq98@Z2)zS6pC+7+@jqPcCui&DQ}z)R^K|q}j+&ukbl`^l1VvK@4-FJ_qc>nh$$?ho zIZ8(0K77Ou4s5utq7lC0t#(o{6hwJs`vR>i{8=K^k|5=+iR=*}cd{=&6UeA*4u>S4 zf3bnzf`Ka{;~Z=0X=3T2u~Qm2ljNK6y+ymb_MCMUiiwbu=>EOzAB&a=9N1{Hh>Du0 z8ao2OXrg)a2{Ml}K^DKy0blkh)q$c7bNkX)D3(s3CI1uZ9YPH$*FwpthQT<)+?00F z%bq3poZ9($@5~CLljK8m3*f~8NPA4a(|k0WgMNd|(C;5$ACi>O0&5V$nNaysT$Z zXbG{dO3xUcoNb(o5d!@V#Mes7Ub77Mq$#*(=5!mMiPJjQZBb$r{c`-mT@G^}Df33L zoDh}QX(Emtl%5yXcA0ek_5NDbQ-i6mZMBOc>e#RX0cOveQ0sAm@UlqLJ(^6KGL+Js zXr`CR)ZWgy=hoopZIV$FV*9!fvV2|{>?vB+2yRuE=_Cimmhv@KQ&7?>7biV^SQlI> z$4GyYW&*zzX1`fpgPK(vZ~uJNegW$FjZHuK^QmcyL(u;=J6=`~kggsil|Y_9<)LP` zKz&kHeVfRGZF8-&7QKMkq?%-JvON2Z9gROEJxjo;bHgkjm644)2S0meC**XZuG0L& zrg)zXJ9Pf~68)62O9LJKxzltJb>2W&>{~+jn$a*|FfEIFHBuV;GJRTSxgfEi2DM&V zJ0KDvOEZnbup77BOL~2{=(}**2P7PhIF#RjIF}TmL*KKz?u_1|hJ5cyGm4!!o~Bz; z;J<_UA5dyo>DjA&p+u52=<|4GZ+=yJ(3hgNW>!Oh^YW7M)2kq8SBO+X9` zPyEAPz6t%NBz}F!&jjy~q(Z>FAYwl!vx1-VsoemUEB%ifD;-{OiB3GY60k*!yhY{+ zv8yDfi%ma7z<9>`dD8Ksqo+)w2p|3^{MM`^@$GPAtJ?5FX`A23YBz)&YkoUZNw7q? zeHXbWxiTJtZqoGcC~CamrQFOj?W#!j(x`EL3JOj5jQa{PnKBWWzFAN?n*K>|rA|E7 zX9wv>u&*C*?hc+z3Tq#$RNxo-rLLOoD%`l4=fx`-&I$(OQeb+*U;e%H%7q;tlj@)Q z_ne;BOzTYiQDdV|p5LCr4O`Pamvs)q8uafz^E6L_=N=Vt8HiS9KvT6BN`A0~fKBtu*AS%Vyf-CL zjVy(y-qZMlPwXfTsL@qhHR_bLB*@=V%r?^lIVJBiehk2&clxIQWis&`@aIW1HPSxM zqs8804~b5r&Lo17jJ){dIbxFd&PnRpBM`UX!sdMKGRXzvP*j4 zQZ@$eSkzeS9TM7Ub#rr)WX*S!sBO&?{N}4F17V(%r>h5dtY+#$WISv_&-hIdDFaG3 zNFE0e9_Uz88NEK_SSiIxw_&$tyS8bfX+m$kxcf+=w%ps1wrf0i(vv__{E!eA3AB^v zh>?Z&vW)YtSdt}>!)58!tK2Nn&+p7$wKwFP6 za6Nd*gnH9yJY@x+*HF63{@{ZWsQnZFE{xh9xDOi(Z-Gt@&TQe|H<<8^xm9h+9%)qL zN1!LZm_%{ay1>R`oOd0a%uke0Lun~?_mA8P3G}!nx@;}O-yQILdbXL(Td4rhAN`_cQxzGoEfJ> zTMbBMP_9AL1kqVMV`tI`^V&y-=dw%IMT2Uz6~s)eW02S%#Q7DYkAGc^PBZ_bF563k zQQ%UnJ02|tI1!Aquv0K_$nMT;8G3ecV$)(M+VYpt$Lvc+T-ep-v(cri+l24uoBpB_ zXhjO7d|+D_ialfO`0rQ$ktEC#ID?qeA|=wnN)V49Kt@*M)th*0^0+mY57Y@{81?m& z3SBUg5cdQr;0Ox9Eg;59#>TS^mXIkV;Y9vbmcOUYvblt7ocj*6esO(9-<^J%lrx~! zS$Ip61_uNjUcsxmWtC|RI2g)JXI8;rii{uO+H=|5I08+U>sGt@?0=7se&`h^sR1$D z(1e=aF`jqVMZ9m{%YfbV*{Q}jyX)*#B!WiEZ+-)R-2>XbEPPXkR95&dNog1Q*kwY& zH!dme@?q3Ncr3kPXS-&oT`R|ODbrbkJ*Anwh``f%%mz61hZg7X83eflf7{jRD3DjQ z1ZL<*98(bOUV4K-Q60ae2=R}WWF34mbt@-d18?dbP#ZEznnzJO+^MKvB|L2_I< z7NVCjYqD4cbfwAMJR)^;teZ| zgv2{&%Plhn5QFiTA(%1}zgxz1B{`Zt?Z#0gN5);f_{LPuz)5TG-%4s>s}M54}A?sMmJbU6jsrS1M+ z$-`te&06FlRk zlR79~eBp}(nmiw;@6>F~-sG_Mp2ziGAkm>Gfz{kJw=eZspY#i)z&eL2>8HyIrKRo+ zPcQ{yOZXN>(Y6f@cm=i}BPem&=T_p3VJU5YM#5Q*ahddXgYknFl{3xwcRdhdHV%9C z6$uo?PFRGFnZ}FD>I{B}9qtPn@1h2=nBN(K+IUaD%Oz%qJH+I+bvmSPpy$Bh z%TzmSTEXp*Y#lA}Y4`Vdi!~ot@ZQKf7FRdIyMBy-d>?Snyk_N_)GFdEGfk`2n~UjJ z*cV*l=@~Ch3N?w1QP4wX6?HD~)Ys==XR#&^oh4?SGF}#T!uo_MXC>e<>Akd_t z?!6yGSfw5!IR`qkMsC(IWF~)?eEaon(t6tAkgIj@9Her1aa#*cpvMSni%X?H80j;L zcx~jG^9qMaD``@%7>tV;X}7}9bKpc*RPE3>wugDri|{(ZAV z&X~?dB2=Ny+Gmx#FYh58uTZamCq(d{%p`=a?3N!$lO}19IGX&_3=ran>NIxi@qp%% zCzXsktXp0snEODjRAljdrtqz8%`AS %pg&g7s1`*S*#qSKb;M9FB^euiWJe<)DX@eXkGpudHK8yp>{f*)u~iY0*4X830EO>Mo8Y_n`87BDSg<4jZVv@EgtAQ{aT0Fw;~wA)DUx9^U2WqONF2`D zUox|bd7qHfNHAWZ?5MXgOT{h*<^2lJnScXm$&V*~Hho&Gb{OfX(^ZWXMkw$!*ToPW zZEtSw-!%`Z%gx z^;0Woooln3R=bmH|#c*-)wm%Le2Gin^sh^$IT)XR*I2u<5-g954J3 zR7)5^-t&!|gVli#<((XP7E>!d+7V*VGF-S1_*c6{MdVlgJR!SPnzx7V1GqycT2ghg zSMg+_lwt?5RTUzEjR`e>S-Z^0(6}lxfFN?OFL}whcA1$|el}<}1<>h;&`*nAu7atu zr`2Z$A2>yPK|D~)hF(rAxXcR3r_J$bEP?4EM(7@Er}cTndo_um3gmF}wo zu6nmTv+CiT0qBwm3hLlo0V#b>JN)41s>w8EVEPj>jni7XHh%g%sHh2vZPA|$gG2BB zpkd?B2tQ;1cGTsx^(Vt0??ZJp4QlYyz%))EzBC>=sI{d$Z+r%R!Hc?1QgHJQq4L!W zFsudZY{7+2yvPE-)=>$prVrJzRArv|(n^{dqtxokmC;KIAPgWVci*?J)B$hf0&Y%U zqmAzz5cE?}mko!(Cov4nk!e*@aB(vGwSmPg_*Sqs(dWw*!F9e|>)3V`al-qu+ z&%SipYq4}e4>g44`MT9U0S=}#);XeEbh=~`sT>-&_*GX8>RY?MOwbyqP6AcEfTfAi zuaq0T)$sumXcI#@AAmEGZ@EQ5((UWtxs)^^BDorU+-6B<@58i8gk3{Mr?EQ_EZ+I2B*Z-= zrdEC{q_Rdw(RTedEY0Xp+q<`_WWdfWItZ}qz}8yr?sF6b>8BO+Z7gqQg?UGf{D6GA zY&hd{wdZI;;6W%vg7}=3Tfg>&%N~N|jzY3{$oPJW@;)`N)M6xb=NTM2NAaxJ7nwv8!`#ryhD^0C5n1a?sm zSnNcL60{|E{L#HyuF`+DOZo+I?V=Ld1%Q=R%Tk|O_8Dzgfld#Y5N2LtxB_X>IEwMH zdXE~6`;U1tHcB|!jm$NeF8DC^VUM_Mq~Aw&=WKLAbS7s0Me6i29G+VqRC_`nOUlJ5 zf$(lyoHPV`a3iZ}B{0mD;+-Nn=@fJKx5u53L18;0{yh=V-gP4BPu{aC^A_*;Ohp8) zsIbr1Kx^=0FJ8_rDFtshKJ8g&4{~M>VhPXJUKKbGi@Bc=ny8NmVLPP?LhT8f0cg7< zFor3tu7X6}nzA_SedbfG&!Q+W8Q@}p&{L5%6~_!_dB)d9y~Ei1BG*8j|6$8r=v>U9 zov?kRezS6q2haarrvH%Ku;EDf?PrXD>smmUo@^!+MrOITDu8CWD41fdE!KCx*pfwO zkc!3vG4YXtcX0Ra!=>ZUyp+|=#VZ2RBSX-g>bxC~I=f@n{^k4>t!A=c1Ce`r?P8R5 zQ7xMT2JzcC57)wV3&NWmw3=ER0}AVHIq8YoulRnZE==iHxU}XAB|Ic)K|Dof?N+!h z6Ns6TbZJAMv&LXjZ$i&?6>1%DPgr?~5BXY-mKwcU6n#lO^d?VVHKVLmS(dJ%$_MFM zB~qz}=AEjQvY@C0F~O=-?rWso$u(24#{jYaW)@0r9zXMtTGai&zStj$V$KpAM?r|1 z0w6b-Cj#RAVdj$7rhP`dRL~V(?n`SJ8P<}1PD%y;@}l6{D8s+M5oNTrch75EciM4N z(^A8Fg4L--9!8sO6W8bcT0RDJkj>3@K;07;j*dE7Vb z?M9YKHEN{D+AJxo&7B&w=&A(51HT`4 zuj`&Gzn9*Q2#i`EGOLDnxMq5zP06P%)*OwTtkFWhb3ZU}tqJ~{8cq!wyTXief(SV0 zAbT|qLsbd%EN`0*6LHza+vpu5hA?VRVIBlldq7Z_$G<)TPtCkwz^`tPjkMW^URxC_ zO5tzXQSn;Z=(OG6tY(aTX6}LksC*OwTda&-`K?_xk~l)q{tOOo?cEwBh7s9y?2^Sh zILp%ouCn7OJ!h$+!cchqNa&8#X9G)jx4#E4a>pG6b{? zhBOgR1|8Exfd+J|3wjp5&tVU)T7X2xe$)Uls_xqkS|!vMvfQ9%kCUc7F+fr)jh3bK zpnlPn0KxI7Z(MpB>qDLXqk-K8HuE+>^_EV5gPLeFyzlk7m1F?^F)z8m=$Xf0+v}P^ z&?l;dFF*hw;D=X;xUZkQLzQ2O@FzLUD-6I`p6Hoy9P~B%^Ri=HwbB>NUCP8gM1bF* zFh4Dp%4rRE_^~#%Yvy3Fu}C=MT;UWnt}!UX@$*uA4wC*xXBnjRVP?C2QoX`PFD=HU zo2SeKrbxp?Y|TclQ{)^NPP)XGfqVEa{w`k9>#SoOi9aMsjWA@2tB1EzC;o_~9o@b~ zV6DsYJAVoqhtD5G<5kiaR{VcU-1pvA_YjZduYj6#(vrhSiJ0R34LPb>$Ob$3!2L5Pmua?E(t*@?E*OH9D2ATf zpuhOX9@z?O)F}3Vc2sBUe&7vY-+*ZFe_9~Ep>OJBmHCRE4Z1AyD&dLE$|pU$M}tZT zBE=Yn#wq7uYT2oqQ~JL(L{gtW;Wg@lHIUN?=W{pMN{=&ZmiT=*H5~NY++p74lyRz8 zp!^$PmXU)qY3Kz}VQ&${-_h26n!V$w%aQIF^J@HlD<#&k`t^#Z#!!OJ{R9lgPU9FQ zZCvi0mal|2^*|w=#s7Y_W5iKS-9e{2Cmp5+-ITRH?AopFiSga{n;z}?3dQ*-LpR*> z14r#{f3>JcdbMv{KVL&7boH!YlVUJeu#FLxbnMqF?lVUk|Lp!hW~O2%7{^_f!LC9L zI1F*}SP)2LWz6RErDbNs?)OvZzo~}MVlt(o@C4p7yI$nNQ-pbkY9UcQh9G``ljg-q zp3~k%{O{$kK$9jB+A_B?2EA2{K^r^STP->(g4&4DbBJrBSFm&rq_pb`sTXM+YqnVX z#cGJP&34v^P-~u=531pX#ON-m3uSPHRFL<=fBjqrXOqK@o9`-~+G-u%Gr=ifT4vke z1IN%lAC#v6E0Nqe%Gec*+}}qQ=J(rw(m`k{nj-6=&-RSGP4<9Cp8&JhGL56={?fTk znqQ{jf}Qzz()J#b+?ix_DCh{p;#zUYjADu)}kK5tkN{qEUmJflVL4wXrh=R5KQ+W#vRoy#|^fYcTZ)YXKazj7*8Jf4hoY z$@3o@JyD{&Z&{>=j>ZWJfG952b07BMzWvp(5!hA56-M&;zC!4r0-v(fKVaWw(qzph zjB&?CUL$?Jp#SIgtCQoBA(MrHOA7)e_VAnBWAyhc?nqAoCUe6F3Dqad%>%D+Czw@G zGumlujxJZv=0#OTo^_X)QrxLO0YzwxIadtUf=xBBViauU_xm9D==YS$A1~Biadr>g z{QNy4H9YbiWOAI;14~KM6n1AS_K#VYV9z?IK@L1!dk45E%)+q6`?H;-NqKMx^bkZ^ zW%uz9$I2gkbn8sA0y4fSR1i-o0(N~3@kRH-nSn?%&lC?eMjBE^&kYz(qQ_ftI8xF$dhAbs;@*aK;B@QQ^+W);2MChQXVs?n`!?Kqar(f-6Qqvt z3@T8>m0bICiI=HP1BXTV5HQH+tPtx72`9xb?)}fb>P6(med#@O&utkfOP^xZ3g4vk z1Z7{KcW&GuIN=p@_4z6$cz~zdoQGMFmXD%_=Hs5oJr;v^FYb=f&SB&qxHw)*8znxLKeVWXJ-^0;9#^>xI7yWYekBT9dzX8(kirm>Gw&Cbnn^UbCxi9^MP%d03};#Bp4m< zlc@L1QU&w6;Ad~NdW+tVt+Jd6@T3Q&rx!80m#gqvBnZ<)I!j@kHeI=6W(nv@!C`QG zF*=1~c9Vn@{>5j|MQC??W9uZq9PgjfL$i}gjTEj^tXR?q zP)~qMy3^$5=5W})tlUebYs{*{w%_0AQqqt;^foXlf^1su(0haa&?EJ-3;lNDhmFG+ zx-|h4Rmto1K|R#!)+ZmF(Aqzmaw8-?Z~1SHota-lXn9uyrWAB|4fhQeFQj2K!dM$H zKni8f8OehuO7LyIptKB6%;;FeO2px?-5^3RM+1MY^Oz53=ep1ZmC4XkR|Lk3{(xH) z4qbqo7q~$ltzelJcYtHQ?0rv{_=f%w$(JkOJF?pv<0wNY6=W6e( ziik?Zq37h4i-kqsWG(&P>rHDnUUhO zX3d2sC)WO9`6C;XNSu5~5;sT2Ik}G2zlD5wZqJhx2BMr)zZx?li%zdw(yg;hs%^VA z7RI1H&s_UK@8p9UzS;KCurALEsQL1>l~5PwK&3@zCP!VPhzgnHuHt9o2}TcQbQio9 zz2ua&+I+*hQ?;O+{gwy9(@;Ny>^Z7r#=s&sE9z1nIKBp+SKyldC_7$albixng{Ry6 zgLy0(@%W%TS^e5)JuUt7e{(>d8u7Szm^Q37(D^sns^TxPCf&p3REueQ9g7?H;5Djk zXjnP+<~1l0@;;-6Qt3ByN-tukXYW%_V!?IImj+^1yGX3zIgyRF@eRJ#1)vI_@b7g$ zBRpxrq(5w_juy8eMOVzrcIP4&pPHA6KfB%bbj{jJe@vMHtZ|blLINgCznzEj1)r~= zy>iULLH$~ro_euv-~I?YMYy{AHO@N)5jkg0d}p1`$)TK2k;UK&AU9Pru(0133{acK z8Ck+nL4llz;4mEe+nF8s>%fTPs=(_k4~`vmokur#EqjH8aUV1uEjk+i-RaI9Zx4sa zil*|C!UU&hjwX%*PfTifsrXt7DWjH>HS%LS8FO?#;DIhR>gwD0P`7w1D|fTq)-qg+ z)8SJ$oVUtD2ZK%&@hZ>9s}QqnQ6Y>DE17KcU$?+_o#Loz4Z90FARRzX{ud*bMo3b2 z|Eh=-a%?Ip7%Rg9^Oa<0JPq4$ZW=CDgmCL6Voo-S?L=LL7X}fOd9Y_swK}^#sVk*X zn;HhWgozCrEFk$H3-3$#fDN{mxH9v#%#Nm5iR^4NTS4iwOGpq?aT_}t<0NZykE?Cn zqw>LN0)}`kl$$;es6@N0i*w~Bn2A*+UjR#%dybw6(05phQlDVM(va(P9L=}LDJD}~Rrb3Ml0_gCwZ{{N zY5Y&0Iv!&6<)|uwxWxb9^3Y>}E3|&^LncZVVNQ29&d{;aHP}eis*f4U^tb}JrbT_3 z;{ArP6v35e6*E%{*mV&6aHIi?#Df&wcW|5X?P(zm+-v;LAAt z`bc~r4LBeDjcwIfhi*NbIuqK3ZU0VL@$XlW^AoK~3b%pBh>ErR@ux@qs+fqU_b3+L zU<}Z)P;qK@^J%YRmk_gPUYv?2JMFp1w4uIk_D1qAT+j8nm8$O~`2vo_)JPZnerTyc zaOO#guJI`m$P3tmaTl)OLv&EGX|cn9zEDHHOv)+XX(}HoT_NsM7#Nbc)|n+vlk5!0 z+aZ$rE%r~_XL*rLe@XJ3Y9y>7i^t8=>q%1o-cn!MaFYh!9ko7a`OnLT>y2+bL8MrQ z$S$UkH`T6tHm-ty=zu0e&09MKLrj6Vt~*%Ydz&CW)hEvzE4i&A4}o18HFe4p75+He&k3wf?SzKY1sU3!>rn|PVH(_ zLm^B}XK1C|UYiS@HljQ52DF>OdIf**Bu-dSv#U^~)p%2w#`oZb5MIB@L+tgyXyY3` zWf4{4tGxjC_!d^_*H6E-NB{#eLC}Tv;!2F25)ou$_?tw>HwcQIXC6JuMF%Wpslc)t z2%`t}d>1=y)&YsTzRZeuLYp}UYXbdWzPz7jZ> zxa%Euso&<-w}D`^pkNO6Q|T|WI?e;)k17jj?f}kgHBsRuiv*+1WP_9Reh=s@a?$P{ zQVDD0)AiKroN;J?OLW2LX2Dvu;lPA&=~SvxP@PANJup*l1{}B3yJ@a`6_EV~*Kao9 z3I;8WVxusbQeSB4!lukI>Nmh{AN$Tw0)jzZ@1qobc5D$fgo=@n&a5KUWhHgKn5Jem zda*eNHVk;CzHRz1>Oy-ZIDL$c_fHy1@0W0mqSQ3d@p7j0>;HRg+yOPb|J;hVtYqk; zEWZfg<@Q+@-)DdA_IHB-Ls-?TU^O(O!!dWepmw1DUlH|?aJ_CXfxze9qO-@-a|jwH z$cN$5-}KAK>+aEsf`*6f4u-XlRO-GIwKc(s430R5;%?D^FYCKb52X&86miu+6OQ=k z?*66&!&YU|tlCOq**aef&CnM=90J-vSIfDen;8HS?I@eNsorGbQsU+bLKw`8>4L{r zjx{>->ivI-V?h_vNbVmC3D4nUMH{tDl(@zReGkMoWPSOlKOjdxF`r7Xn5gc!tqsPP z9WQ*1OxY0~asfee+6fCOimIlb{Dg6&2PwPrP^LPjj)uKJbsb##3>j^a=NAAnwVX=_@*Y_SE9HllIx;`JbIp1)F@E zvV8fs-k@zh%7A+o+}Y-d7C-hZwBzd;wJnB*8XJKTGT!I0`z?G9De#I>;ao{RcRppn zReIVZBA_)3@XdWfT`urgf9WJ5vhWMMdHJs9KkoT8sP0+KB~bwoIwZ}J`}dar-%Otb ztPgSCU8pAHCwcFk$b@=p@O?Fr4B}H2@1%>o;mDJ!{;{O6riuJNeE`<+!0uGjlTu=Q zkvxg&W6Mad#wYyLAJrmD9{{;bBX9=Q4BN54SXP*nf`Gi(pLmr)Pp;# zr9Vb}Hh@9%u4hi4rC9XX;GS36T8+LhGi*2pylw8R9BX5if$$1d8M-7G2XH7sSWO#M z_x$@6gmJ7FSl9}H{UttU#S^zC1KZ}Z>=nve6L_q*mHrT@<8MgJp~>nEl#1HeApRB? zcwIM8|LTi!=y-*v(4&E+4?d9QssllyV)n)A?|rBIs+YOz6(HxF448^Qu3d%vy@amJa-Lbg?Qz#+EgFFAZlIEI;Pm_}^qvLqJnk}&$-Tc-G8`VaRN@U=XN z__g#j+jKs^?DVf%4-IUlKm`^=Rr8?ZWyU|fHw5F8QfeNu!NH7TF9O~L5aAS{Hh@mz zi+U}C_~poAk2A?#-Fy0Sf?#!;?ipyDc{r#YkW4kA(>vkF#bglY*$cYaz$1?BNQa>| zo6qM}hGOw3ZH+9YSxJA0)1P5NJ&Ri_2mz zM;h|Z!GMy*m|vjJjNg5svxHnflgLfytS25q6;)chboq08{EH5=c5XLJsdV|1*0dHycdu&9^$sGqBH2t^xqZMnPx7O%tcCs z@vn}zCLXHb_X(998~crmDF(*0!|)zd!8yh!IA%${75^tfWmA1@@blg-^5^i$^IZ!- za(e60;tz{xs%T+H=!34xZ>Bbq*#dd|UMVt{cw7+`ivk;dTi5Yi`)rBCwYj$rI1y{j zgUVWo(Hsq$SD**dLVZ3+7ZE7&a^UbsUmLd^BT7q!I+ENr+o5TBXdFmQf!UB48(dPB zDF#2}sPvX9p-v#30W@e<&Vi4WHspyX!WWXR_p-QKez=o55YPyrW{7!8t|Hs>W#6V`1+b|-}+d?6vu`;>=^g1l)I0PbwAp+L{3j%HS!B$VK5 zONwvkY+WuOIa)g&hY;pGF2!y@kWD3OB=YyE`!+TCYKP(hJmK>;e-9d&1+15m97CQW#u#+0e6KVtgp(1VrqU&=SWVaFv;lZH(59^^Kpz-~ z9cpa?+;`Y9`o}q8#jS&VdU&oM&-hD20`GuW`y@PTILD0UC+GmkUqHwTv%X|R?Gq&C zUVQqcSG8aT-!wj+i{e<06)$=!Jcl=db@5X_&^>w`ExOlma|)!P7oF~@e}`QT{xGW{ zQm1pd^86w{8P1S}qvaj#7oC_(&!|1o&Uhi4)mK zbOG-a?KQOrbQ;8f+i$cQJIV&6e9&}F)MDq*=n3>nCfz+WV|YhRJ~TdeK0FEVdZU>Q zUiBL<4Jti7F)uzi_AXp)7=RNvx9h(po`(C(LciO}?fsT@_YZsSK^!`{EwEcPrN;`dM2%48`aF|kopcJjQ~_zO+^|}Pn2$I56bzqwYdWC z$F}U3%*7v4cQ3SfODyk@uA1iJB45CWx20|~GH3BXCjR*O^ zuQ_n3wpkaZz*&DjaOL2?UzLhO7fEfklkChb{*fGN_wg|{!?8*@`d9!A4EwN4Ext(R za|b!&6S?6Wm0lckhh7*Mn2X36z9ITu_v^8e&Ro=lu*32%YzrBL*lFiaH5hl4ckZ2A z1y(8karf>|DCU&8>r&z?2Vc>bs8#8lI?Z zYnN6D9{2wM(sys^+314u9@KeTcS*yY8-hfDXW#jZ2MHx_%kWQ$%VRnqMHcERw0|OA zA}c`WLjZ^s!BQ3pwFu_%d%32+EMCVhxYY|^3umM`-D4kX{DaR=Cby9?Zm#vzfbOA3 zIILs$J6Q1w>NngU1WyVn1ygSe>St5}vUOk^NNXRbJ?JitX=s6eZ?GA?vTy%IY{xrM z_XK&*qGy&>FTmDPAa|q_hpR*IuUkgVxo6IAys~f>OGc$b!*uoPl(yQ>``m+zyL#Zb z{vN3;XG0y?=ITIB!X9XF1THDdm9Piz(W7vVKSBY>C3dT;BD*_f#@U)CES;Fs4wbYA z{i&nf#oG29&I>T-K1W2m0w)x(C<-_zu$^wIE_H+fNqlC{9&l6`k6oy}#H#K4hk@l) z1=`UU52mK%g4Uqc%vlz~IM$<(UJBz0-{cxjwq2}NL42XLeV+p%P6V4v;c&&b3-snn zM|ym^Fr*LJx3vvZ&7~OssHN*=q<}wwwg##ovi5_({oF2y@C3uo&v+ zT_D66eS0@BxLVIB{d>=&$4;peqUS(FaFkGojx|Ag00&zf2yP*ko9MyUJX)hgDi8d$ zl8r=__bC%VYPiAhI`TWfsdF<^OL8iK# zkwui2jIPaY-y(n26Xd@x!z;f;oaDJ|=rbLco%L4x6dk(=a{NJJ)N3C`a+$Zl>3qu48c zO!HE$9zq-5y@C~n7Z8T(dL^uB$lg!=XirJeFPAlr0OSCtfes>pC8OP^GmUSGwauL$ z%{zJHRE%;x z0l1)udLYbsQ4O@mH?-A2zif+B;wee_EC)D2Z}-LPJkhs`Vnzae2k1cTXr!OMo=Vr+ z`X3lS!|(mm9(tjCem=h_zUlOQ^3(=oN_Eb+Kmz|<0nE|mQTrj|S4DVP$Q)N5!-Ck0 zHXctbgpVM5NZCi=@JpBDUmAiRN0iMi>mflYyjKn?rtZ9ufqmr@PcD^c1`he+U4<7a zm`{tv&!2QmHPL-|ocnWGu4~dfvU6jaYAoj3-HZF?d~4@cH~PB6Mn4%WP*wcCe#GN% z?<|9`ZRb8)Fd!bnFMFg!c0x)XKKoNYQ*pWRJ82Ye1ooDU+ye>2-*#8ml8g~#XE1m4 z_S@noLxvyjSO4U(SrBlqr>O8yOEw(sUTpUltoT}$p`|J{>{;(kzikBrz_jtj!XGruJb4IXEHD5aP54~X%Yw`zgthUui(!$HNl$5nG+eV1 z?ChL2-nd^x4Jy2EYTOtJECS~X15W~+(q0Gg5A{!AXVHrm7t>xb0qZ|1KCi&Ex26lk zb8XLaaeWe5<1t9cF_5F$xU*v?e(c6DNd4pc@}$WW*!gaxg_cGvXzlkWB&AGQiacp;ksJH(tp(@D}7H5f$W*21{`YNYoG8 z(PRGxt-D&1g}(4?Xs&!+<_&PAKD!NH#1iY$Hposjlq_UWN-c{(gcBGYA^?L%o=^U} z0wC+)7z_IHWSKv&F0bwWJ3J6MAiX>=3whXA{(Wwaa<{cmxx~Sg61M4~araQ%e~QI# z_D~@v>;+}1xTdqWEChfVTh-P!vvK!64CWq5kqtACD%?CHcr;~%FKoC65|!b67W9?~ zZswj|_6nA~Mp{QaV%S^qxOt@iMuzqFx}KoXFX{+emB{Cc4l+5#>s!I|WRbFC|9(ZI zHMr?lJTb|FpqVWu#fx}8dTYfMNcP4@Q&nHLo>m7Q(Vz(hY3PQW$O0AQlzDQXhgXjA z%eUte;U5RA>k(~L@v+kf0?q$mZbaoQ|4Ko-L~f_UU+$j5tClJS55wkG=~|{A7>G;o|D#_!AkBP zq+hv=y2-!6xY%JVFYwO#MY4R^%j_M(F_YRIqqd#t-6?g!sDx!E-d^fn+X>?Shd;64CD z;6V6o&ILLnr6EZc!!k?RR(zo&&J9=8?$LuK?@43Y)U>52N=qJ5@;e@7yvY$OlSGTV z3T~GzIj7FLN*D2vgRtj<67)c-+Df= zT+&oHwLaoeamnq*nU$nEMZ|f|EzzPgywm_mPk8NmrXA6IITDgIb^gF*x=aQ_-*pu= z4UY774RSF<11CR&ejAuRXC@894IM?YW#IqG%rcR{3=C2L>1TTyYO;s{= z|-^l>|hF4&a?astnh4czF6(i7k9nSS#9Wj z_A7M2--ulV)R3{kzv)=VJpD|4(bqM^db3pEc>x3!AS9PjKTa?RARb+;MWPisRuT7U zE%k#-9Hj@YOQo`*UD!K{Ij+cw{s_t@Mh?13xN0)L;`sK=MjOzd<(^8J&LI+3U&{=`v5E@U#S-$wat z`1zH8G(Cepkuy#*4X-%_Fz!XO?PSBH754{yj>U|0n6|PcFj+>*R zl5NbP-w`uDY&JW;%jf$Kk4M(L?YiFA`}KOho;RgJ(jEos6IyPY3eO;C(5jEXIlN7N zgQ<9~c?ck6e48?zQt7yr(Drp}%es~~X^wreghsrx&$n-$zRjCM?lO!LFD&%F`+sC! z@0}A0JvVDWjMpvzU$%I3K79omwx&bAo`Q+)zLniwqf4J;CxQW?TXZIvF_NRgABv&# z(P@Idv^F}|xjKz~20cyBRzrU#kh~`xO4kf$KvSWk zO7Io1OT~}iuQ)Y#)E3Jr958*P#0lljtKfg_UVuLS`^_tLK?-=?9lDra`-`v2tyP7; zLe5s_t-1rSZniyUL2A)tJeTX=rpBxto&oe_itlSRd6+DvgoN_{7Y{{wDU@Da>}xtn z1W+LKf4?JrBR2}Xauj@X(~DV71=q^rkjr?(Jo3=J!+)nED<*+PWF0dNe)qA}6uHZV z;Lyy28y88M27l(h&%)tnUEhNf8X|Uc%v4cyVt+qaS@=4v;_*j|WuN(p*D&x_ZS(El ztFr?>HDQ79LMtRS)#ATb*RvnKN?(6H24ovCO^+P^S^hIIv@b2&zUFDIwOGyjg5k}m zsl;iZ>0b5!s&{9Zyfd{|>L?+;s&k%39R;vT5jag;(s8rr$1m`t;9jz}!ydGaT**z{ zF5ivF#oxC1+U$Q>QwYY_p9@Eet>+F0Gm0d?e>6EzUv>v1m|$xGH>BgHDhId4Cg)7#g|cFKZ(6mRa|bnF1Pj!}=iJTK0y*{UoTkA4z~ zRr)>IcMc49>Nm7wOnq>aXleqZey?BC{UC6AjQ{f$5RyJ5e{ToYf1k`h5nz~emPw?2 z%ks z@{;+y3ug;*o;(bbn|&{-MzrosM8&S+gFjOrmd8<% z)SNHqe#2vloU!5S(a7_lOB~#go`MIU^SoiSBfl+egQpS3xE6g-{U){@Pz*nC8_olX zzY0W;0oEVzo+1ktT1YP4f!QUK@lgpe_|Hm5( z3$4sL0a~iB;6ZBMwYb}+V0^_jwD9xyyJaVs1WWK1)Vnm8vJYf2KGte1566iXT>Dc)}3KGhaY0o z+>>+*N1N&@o@0LBaPAcgM(ES`aTnhW^&=QmfK*F&JIR(TmSMLgw`xo|2zzpbsypw{|O8 zjzc3I?^LDJz}-3;NdBmGaX7VMY*Y>IkZ_jM%0VoUddi$tyr#{d z4B9~2`>j$VV;&nn5y(zR;%_@=fQX^>Ec#}80hK!zo~cQj-zfq`ls9=DKs2Y~)CHk0 zi$QJHn~J)>s_0NpY|R(Vf^kjZhlly8xp#hxo+|on5n*7<7i@>PFMwf#YZzyze6 zf-9i^qd%cRWRZ9Pce8FD@bA6x5v$%hXAXw2eGOA#XH?<`?%r^3JrZvXd$+a_8W!e! znx@t}{IyF6Hi1!`L<&eQ!!^@t?M=JmN_iRN$AIb>CIS5@YpOuvJ}5O@?t5Vp`Y6Fd zQ(Juf2cz>auGs@(gD7af^)2;!W4QtyDKbh@g%@V70>=?X%L>Nm6OkE$x>YW9X0dz+ zx}O}W)GzxyA(Vt+E=w}c7y_LHcBrtd6y|3a5Yurp^P~r%B(;38^FUE5Ru3wJfXFEH zqHrDN{(@=*GtzP*iCB5P#}WfPL@#+oAL~&zqC(0^S102+Q*hxLE}0a6O1_Po1YEUC z3*KmV+_TI?jM|sbdq1|c=XXzz$OA1)*#bb=)tak25q?*Snz4Tw6r{5b6kRvhoCI#T zvG~Rc!Cd4qQPxStb@#W1S;47ft9AMalZe9rGj+$P$N^^W~w@L}sD`=`>*gP&aiAl@Z z_1*SD<@PR6YGGzCx8qi<*`OI?;Ucc%G~rRu-x)5!k;*;pdb@=>k!#~{4$W?|IYW_xD(PX;A(4m_g~u+rC}Bcp4pSm(*{ zbJMW#;xqKk_HdsxDQ(fPlw2UQ)KfWv0bwIMFX~Vuu<2&gZ(ADE3zml7d5Xh5!Co*X zn)~;oEbq}MLCPcMwDwZktp}guSL#0J;Os$3M5GrX-F@C1 z`OYhdy0@|T7#Ke~`%_%ZPpHD+AbV-q3V$ER-g8*$QQBDeUVRJ+wS;FYfp_gEWmh0z zCQKvTSeE-aY*WgSKZXUV(}zTqkad}A%S5m9hc(pio-jWH?Kh7g^{W*48->=Q2Y?D* z09`Lysm|@@JH{g#Jy3<~FTqo$ZMX3}G$?X+H)+lp`^2({KS(1GfGD#l^XS4=>z`{S zD+w{r`gY@YX;(U<+qY=&&$&#=Qrx>y?ujO@pLs@0`ip}r77j>}*I@h>nEhP!M}w~V zA=d*W;KyOpLip;ws6y%Y-N?Q0y-Ia`g(Q%rho4QtNUHsOx_tiR_KE=FbH2nrRr}Lc zwMEA;&>tud@tsAtN5S+hzGHYD7#qt1ai1DNP7b$I4A>fO@#$Ant6k_~H52ztj{CB4 z92jwoMM~$d+ES!w-iedepWocm$NmTa1H1Zk@Fz~O?|oJK{(Q;$L!o?+z&QAK?aYdK zYY78m(iM<74YH;_R@0tZMZsQJ;c1K}D|3I(%jx_;bW02W)MCyZdqDmH17@1 zyl{Q6=o9gF{>*;-IM3FP)~<5}Wm#3)G4U}_XLSl*OrQv7gGU+0t>hQxxJr_+(;T`9 z)|)TKzrjf`7UMC;gYcDrgJ2T#_jPfd+Kur{C8k*$*ft%OdHaTEV(r5livu_}8N9KQ zIA9xBu0X*anC)Jtn#&W^zG2>4kTspMBiH)W;>v(hAAg)}gu0$e-D`3K=%#(9)-O4k zdY^(SL~bH7nsVt!en2tf12VuJLc@5=fW`6RyDMW&TQ;4n`R)pe-~fPiq(_m1>ISsm zB|CJ}sm|mOm)!}@AkZ|pU^&I+WX;KHB`)_`s?!xD!vrLmJz7Q8Ea@E#*^vgo48ze^ zGN-g>(iAUVSmN0oBDwZ!*qjyZs3@jYYN`}~PBR>cc}-U|CwrDM6l(5`l$ttfK4!@D){CfaONlZdEp{5)?YAB+1G!ENIYxR zv%1dG84&x}VZEL1-pL@l*qn%A^Fh8&&`#9dD`(abz(4eya~c3t63;q*7uT|$W%0&0 zmb5>3k84tR1fX8bX7-~d>{&X*evgI5cf>+9u-eys=k_hI3=$>Pek_YQrr@<@_bV{1 zW3GLcdj)r-^x{LV>I3g=v4181O`Po)I<#$@Uv+>IAYLtCcv;_4P5oA3pWRy#N;ldy zHTCZ|$NYh|h!rPml%oi~gXFnsMuP}QS&8i$_XA==*$=Ew88(aFspxE`2anu@4i8r4 z{kp^)pAT_qg9)B3CuAOv=9)I~wZkF1ARozR73|#GFc<4xs*9>JPk2gB=+??dUP-sgd z6l(PYxC!2}5>BK+q_92UOmA}X%`^we7lO-InYq)lAHS-zHO;=;;#%Hab(1l!rMz-@ z##xFk@CG3tp!ah2MT;)@nz}zQEX!O;?{zsmX9Wrk%|3K!>73@{RqKDH4Bw+m)AyeT1ygX@@M7<5RXIpHvjC%3FgrgGxjd@ez4S?e<#8N( zTD@W(E1fYN!$6a8;Ggw^-i_^`+@+l{Ja#ty2)JAao^zmR-l$DPZ(RX)A=XyC=V?hA zJmaCu^;7A(>a!;zqa0nij9 z1QYZXXE#DlRUP|4Ppf+S=I$Y0$%BWX0>!LnI(b1ZXnBT9KiaF%83`zF|GSTSaa9sB z1EeU=2|;ff%_m3p{kRU2DxLBgtGa1&dn)z90bX-i@jS+OYATuY20Pk0VRmZX`a%8V zjD(#FoC2Wxp|+l2;S-6NZ}-j=NF6{hK(ZtgHC8Ui&~-g2fi9nk?JmL|G<~yQt~ot3 zUM2pzw9*INjhM1e&)E6R37g2_s+a4pvTm zl}5&Qes->R(~RHVI%0L6+=b6-@jKOzY5=Nry=`_WQ=hV)m-b1^l)G>l7BTGF5$BB6 z#N8ys^I-|@w|9V}0emIe4&pX9utB=*uPBUGG_|FCDSO~2^{?o(Jx7;HXJ8E(*42K8 zY43H)m2)IvBTEmHgtatocd2Xc{)}ppMS9~nU$uYj^0P=yz+4K_b42LN92#cb;*(C7 ze(lZ2^)ko{$w3HLvp=Lpu7hX2iROsi2KY})8a!@P!|&>?PdUO(7$fKMT{fKSehJpX zzJ0cqWp>N}8M%7gKvgWUu%?6^HVJsM&{0MAj$@+F$^@q;zk4Ix zfQwJ9A7>^1qYmq6^vyLtG~It9SJwKoR~v>#^l9XX+4N3cKi0DT1dfW! zxIg79*Gm98F#Ra*bA2;Juw|!6U%PSRxjy|kxy^hc!e(qWVP+Kyg0-#o90gOmXDAw zmgLg9_^7{jSsmv0`yr@xmirvt1XAl4)(wF6XE3@1+398HE9^pMzCA26Qy((d@_-!l zKZVv^48&+;VNBiCF8Am;>y>n4KVDk(fq@faK{e;Oprpqmk}%Xdu@yZlE7UZ2wAI*m z#?-SI2r21lP2{5Ms9KIN>w0KMjwCfzPuOXkvY=HY^3+(60PnD#nh=1n4{x7L>f|;I zc{Di!?qF(lmy~FWNJPEW;YiJ>QM4Pp#~o=SVaKEIkrK|nP5<1)Pr{3i4#w|;?&`kG zwLU6V@{PZr3fTfN=JxMT@TG<}k&Qye+@XtE{m5(^IZEncz0i1FlyQY4N1Y!WD>f`- zyFhjl_smnQpNqiY_VR9i6`*gr=%|k{y^W|L!r76G^sbNflEdR3l`S8-H1H`*;4SwR zs1Z5=HRz|@ALl&#c07ygTf)X@j}=~8PWb@u9i6?DO3plZ1igB!Q`rOPOyCCHbKc?K zZ_@d~sEkz>qv)$|_&Tc;%rJ0`pMgsFmqp3EMQ=&!c1HO$7@C0=v1>)`3SFBwDm#L! z$(jpC90BW@)p9kpsQ;sV-q)QWQxV)jvLX|wNdsJra~riHdF&m~qx(!^?;#SP*3hEo zSG61CJI8lBIK3XLriY($sw1r#4z=_LVmywjCS%JpvE58K0SkFnEujE0rH?EM|j#v9H*^P}By1r%fogX}XbGjxkwh z+)EeyB2BcL^p)T*%1uzb3>s7%{X}MoYUt}i4ZSmQcf%*6?8gE<7p~#Ye}@x_qALxd zr#}4q2rG~GHuM2ZQIoM6dO|*1Ad|NQZoc50Hz}>}wCIl1~ zySWXW<^{#zDVJ3ZYITZ5uds2$rT`0y1Z_#oMxsQ)%0}|i`F@d$eKtrs&j~eV{d`$= z#cwm%6aTCB&ZjeZqS#8kxXm4r8RO0;V_VPYjU5Mx=Ml5&Mgp%YOEeas>(aD``I^CvCEFSQjK}n^vr;0X>issqRO)Mg9gCH#lSyFoTF@As zYOuN2IyPy;agsuWo&$VmgKZfN__@FZaA}=MT9JUo<_>jhod==Fb3I%{O&L}xa~92; z)0@7`S*ut``5qaMJ0zOlW);u01VVkB?sPE`iwW1k_B}|#7J<0?5WjIVyAM(Vg&zJ6 zhAcb)i(HWk%-AmImBNp~5r1%3Nac z2pj?LFFM{^UgNntu7@h}xN`Jr`vkqCu$a#^?{#-CcD01PgBlB;b{if`4hV3k9IF-O z7G^&JQd5|p=}q>5x?6+*aPAk5viEfqqiT*HlR25sc@%o;_fXP%-II1%){~{~Yz-D0 zZ(4#WRby>^>BDpD@Hf%67I?#VK#@4L9Pk#erNBNvn{4=QA8^vS&N+g`*OIx+dk@YJ@?;wtptHEr-MF|)D+ zh$G5yTKQQDmhm2fJs#SClb%W~=*2?be$Ek8_S!$ueHF=Ludsi$7sV6UO`V(g^`q~srDb~S5{ZC!roOb*J1&c-aXp! z6uS9t_fzcMyh_I{5E~Ecw#T-+GGe{SECuU-lmHLk|?JVu{qPVok5qqjxIQwuq z2!8xMaGQhy3_uAm6&yD1Sx{6&p{Wk_4!mBD6?dulz?8tglDCN&*@*RaEZzG+B}sP>Fdij8ptN>mAiD=EoY?HpKQVulR@yu!Q7v8skB_<4{w#&!h{9 zzDfP4*x9c*sqr0UsN_#a?Pn@1X#4uG^cN=#-Cq=ckbght-&ir`VFY*+zA%^Dgibdj zJL8TUKMSN#8!Q-gqjlcI#Dkzw4;6a5kn`Vnyoj#9Bjv|g)d9skDh zoI&|+<+h^`$l<14Ivhd+HajORv_ZZ_0s#6W!@|!k%+f`+qGT z(w*qO%^e362!wLGU~E`Bqi1wBnuP#CMZc9g9|!Z#dV13+$<+2T7?}#!v9-a!|AFFi z>$(?|yPJLE)tfeS<7Zd?pHqFV`GFFX*&uTUcP!vfz1pwM-ptG?`QY|MdW@ONsxsMS zmN?pl6#%op>?hl&LOWV^KLvD$$&=lL>^myzJ#MEqJKlj;NgGj)%m!5nt(*&6Z95Yf zwPp0NCyvKf)ISi*?O?o0=fV|e2H}T{R+cWCYcwmc=(9o@;e=HvFoquk4DEJU(^nA2 z_A$bUaw<)Iw3%cvfXa3EbPj%X%Yi(z=dMI_vi;~C)j5BdHS>EJpd1mhQ@#rKa60+P z-8C8e|NZ75d+YOl%0?W5SO}I)g;VuY@XbyarZ!JqKS!j3d|3f7-e35CSOJArPDKQ2-Rv2zHA*v`TkRw z3d(i5qRv@E?SMIUcgGGz9s0Cp(XBwQ>LH8kwN&3vt>IrE{eDVQdn_xY%jq@)q)p&{ z>+((jDNj%C0G?VsER{8?mx3VmV>59#fl6Y-e7mR18=STOx!mzi65sdO+4SFU=Hfps z75-l##u#MJec7h{L6*i7{YR;#KPZX>Y*&*An#aq&PkozPK$pT6oCib~GMg(9{D;w4 z+(r4~%@uPm9w`bBp!f$kpZyCpExrdyq^d8|_sP1_p2oNIeV{|MkXapKkmBK9KI&t9 zowACW&zM82a&%7lyaJ=ZY>G3kL#;kg`M}(jYsG17V*#RUk3B2N);B(CuyafAa<@4@ke+(I z_7~Qskr>!dhK0>ySkvefJ!3y@6;Pv&JDE|h$gKT4ecZF-dVYKmvXvX+v-S4SQws7} zlg4cukx%P;)GhoSvfRl?i_%sYKyk5uPz?jDxLbQs<$^+YcW88{U;CU#lc}XC9uGoR zkpOrlk49D-V*+k z=K7A6E4!b#XPuz9%~{0nm1E~@4A!todcdJ`^B*AAz7VwlW+>J_oLe&};s@@qA*Ff| zUNq@3nhq~Pw+%~`UBsd;?7F3mL&MCGhE&;Y?7~+S$lTyj6G-uKa_k=Ant)7T9iE|_ zH1{7c7_m*KmB2IhWDg26>U!?gh=NDQahf*Px@~0o+zPPfKRut&{u9W3igA6t$Y_?k z#cypqy)Ky9toNx`wr;3ZHtv!Up*?210rNLo&ajDh(stmbPxw0wZA^JXRKyhpEt ze!BS#y`wbMgkG=!JKd$zef!7@s?nh^JP~#0{|y#pn1As2@||O9A)pWKkYku?cZy58 zZc!SzYKtsQ_=%vc!_qdqk-d99 zuA_LUjhBHw9;BihQBFvr3zuUCMV^gs_dFAs zT#V+E=>)A?p_{z(-dyW!(qFM!WIXk9G3ImvfgI!JJ4X#{2qF_LJ3r^Kik)+4Hfzv+ zjsiHwJ?o8OYwdGJgUNU26Ra=w^v-h;DJ)>);O|zJv&9xk(IrzUZoFntD}ff<+4(|u z+6p!wru(w{z9=mVaY6fhp(uJ`>?Y9TDt8Lw>)-tLPq${9%3dvLqyV7a0T z1w?Vu7isJDxwpQ;2A`tuA-oQ-nSpawbP|5ABdBiUBqdff^)Z!ZGilpgy30ek+6TAE zO-4{8gD zxHCp8hArdpRxFY8KmzlbBC1T2CJ>o-7GQMeK-67TUMA`vc;jfSL3wg<4CNFzYS5^A zVV*F4z38|n?(G~s!xR$swg|p`sA3|kWYAkucuNmUzu(2K>lbNSwaa4-j!_a?tMzo5 zr&d81I(grik36TtzpddlgF77_X-qm zlS=_|-f~|b^2;QAa@Bs*%ch6jtvgj5<#(3AxFHolrsr%!$4W5lt+m*i6PZ84pHpDt zkm36#tsk6SjInjOS(GH_lNon1=1jt!s<>Yf`rTmJUW)*r`FcZfa4rW}8O-#)1E}ZL zr#9^qZWFBw^WYV?e@E1Rx3?9=O0eAA0^J`kjmweaSNjn4p&L_dy#cXl zrxkw0*2O#~LKRCH_nz9?XPrWLTc%Wo#i7h|vLDb0+-)x9_VA1cgq^wr7Bkwls_Q&< z8zO0)87pQ*S9SS;H+cuj*07jqmaE{&!s5>{DB@H& zPiV5he5Ty>XMr#9S9kC0k~$*x@@E!Wg))G?$jr&M(Y51JGeH*H@Lh+?@YHYbdDs4g z`D;o%llpaD^}eOslPok7iSu@_dx>!G+QtkS;m({{jqhvh5CG_%k8y1V1fn^}2bb=H zEG~}c83j_tJjDCt6DahxGN>GN>xdT3B;h4*0A(^Z3h<49G9!n~^OjV+si_>r4{$R9 z)Z*_c^rn4Kf^*9t+r=)>u!QDe`sga&teyTKy>qk|)W}r=iWAa#%pJdvOE;MObe4ZI zZI#&3SgP-`@x)9XX13AFqhbFsWH-hrzJPq=CQ_yU0SxW zSh|&%KgO8p|rUS_m_hGY1n10tH3J_nsnf@)qy6?wUu4rn; z!%nIms+9E2{?0Dj#Vc1#dEELp(T7@W!hHwXTW=PDEm6`glnhyclujz%ss4>5z~hCN zbIXlx!lMBE679y&P-C}HKsjL+Eq}kus(ppfyF6mIAv6sOQpT*al2m$FC6pN>y1+j{ zNy4m{Z+#*)rpD-94@BS2=9>(L zb27%6WTz_D-c|d&j07{ins|V5r^JfTVd7M+)Z0XmvGk**x;q~}m;=?|_We!WhZOw@ z2!ZYd`geJe9_ijtO{R``9Wr-)BDL6mwD-AME7G9nssq$)Vp2C6Z{BrAZo9*r$h~9a zzvG!uW+wIW9Teh>)_L_C-iae2u<|F=Uqbj3;1qrZCNEF{5p|?2!{oU=r(p#jA{4P; zpL5+kngpAI@buxERozfl4a~`3X!5>?>%D^NQG$lUeIlpvc!N zusmafxPo@yF)J%8M~dqZTY0E$RY3+A=himZ7A)=GZ}O+2C$Z!e>krHWB>Kd6G4s`c zHlX?SlO`>)2jJ3M-zSB>NBryqqDFzBt@HD2NNBZYcJY(yV1r~A#4M~zJ6aw8`hytm-7pIH0r@i)fHXgnK4V&0+t{MO zSZHU!+2<|Vw{#M8Tb(IWplH&ma9)}^bi>?7{4nnty(B+0)3=XK>TVut!DxIu?dg*HYmAU$hfk@^v$KY*fkD=vd#{8XZ8mW}$Lj z>Z?){6?y1x=YOF4J1>VFIa{D6b$PFlQ{^B{e(L7B2ljzIFR1G{hxVUqmyF0L$Cfc zIP`vTbgeIYJ7V|)!1}i4sjB$7k-!kTKoabC|2DyRW~pY&*1E2OtPWe`liv4ssH@bx zd?qw+oW<6JEX}l1;cW3f+WR6qJ#y@AbwWkR+Ur2yp3uYSlKgK;Q)?*h6Ih2wL&0p2 zmiHab;<}}odH^T!nbDNd(z~2@98P;Y=E>cG5Z!8N416U=Y}Qlf@?tdTU#oMp@fdL#>ntCCShWw+uDw;yypGBk=}Y6qbJXd z29czvR_$^Zrgqx{J#g;^MPFbJNFq2@L<5v4rl7>#1NIXsKGKJYbZ6Yfdr!hpfIPw6 z!HoSe1`da{&1R4?@fK$nv$L7*mwcve7JX$$GlQA=OIWWHyk0~kd;GBuAgI_d5i zVbZs?1?ky39wAjjx4(}R*B_O577W>nWIDZ0``u|Opj;a5@zW3$=WL@;A5bhG7Diqx z*mEb>H37?ynhXyw^V?eYVdqCl>G9(xvECIL3(5`v_>wf=@RrozpQC4E8Z%>qS$_3z z$~nJcuQ5h7BiL8{px72^D%VgmQ#(t2(GE~};~sRNm9Mm}G~AAPMA8C2WUrK%K% z-&pzZ#(m(mh!PlXOUHo$Mc2H1$M}Mrn7;%FIP|#)1tRuL1eJjOs8mka!6KTvWagxT zCn~ML$Y@)_ZIx5lkJNY>X@!Ok@T*ngB)g1Sk`Xsoh72_*9GwWU~ z>dtlAPk;=cFrF}=kuRx}R2%Ek*WK7#L`?h7?^9qd?>Evb>pr4mH;T>R>g{5mtwkG& zJXmzB`zuj8#k)$pms1Ro$9vZO;b(gRw7T_PmNP|*e8{zJd$V9$PRF~k;+Upy?^R!BJ&7X<^~lk~-_$@=%ZqUegKm0ebN0Ij&<_qK0M)Ol+gE}6DU%nVY(f0y`* zCOMlDCursEh{Co4cKm@GfUI+hdNH+@t;L!6r85!ug>?3MH$8k%Kig^#RK6rC5=v=jky#PS|AD9@45Olf1&8PAYu?u-U;*om*)lri*~4C;X-3RWfiS3FgVca z@(Fc!U25*Aak0i}-`Z}v$--C8R>BT+sL>hs+|0!pC5nGy;TdJ3EZ60Jr5t%-u#%7) zhx9(r<~o^yoW~h>KO)pUNB^qUXy_>9jzp{%C3~QK#nYzV z)AvBs3D{I7UhTWItWV-~cJ)F=m>6WPxB9?)oCN~*pxN_JWFazGCaOnBwkh^LUN*{3mO;`Trb~l0evY z3hSh|FSP;qCUS2d;B>qv&?j_s8Bg1P{fNrb-V>u3v;tBTW@wMJuNheL%^#-Lbw9NV zV;titWqFZNtI#pvJjU3T%>yvEwM!l* zNfp=Q8sCLxl?p4ZBippIiuu!OaNC9@Ef!lW0x2~ckoiPG@Rl1{BQ{+pi?X_M*}QBHrd;9TVz@AR0|Ijly`4CN8ZL> z^O*sov3GtfH(f>kB)WyuwEhC?z-$77BYWn!2Ll2@(->jAJ=1@A13d*U`1dFBbF?=B zIIah9M@cg8$xDAy6Pj!YAv(Gx$N~P$w%}0ml(re2Ywm;VSgEVvWz-G$Kez8LkW80e z?(6~)nR%DtStS^R-d!t_!nVa@geRGj5Zo*}7*I3bDv2*v#)kPZYp*Nk9QjGA-RX@= z5Yby=0h!gLwbPg{Xdp}J@Rkos%E=)H!6%eAD@jt5`^L+6y_Tbfd}c7Kl6h;vbBb`I zU_gBW#ar?uoHLXeR0Wy)_YO}>AKNN!>6E<(h8rRBpkcJXj0k-O=m2F=5|jtOh8^vw zz%5^dD#9pn!QC~WYW(jS8unAuabcN6J5g`mi%|{_B`W%jrLqn55bCO($S(<4`71+%) zMmvVyqFbHnyN+j!hqAwOu%gYhi!s68GQ%(q}UnF ziaq8(P3EXJZb>U(!R2Zvj5jS=w%9!MjQeG9Qx|1Hl!Us>#~7Xd%85Up3hs%& zj%0V6U~5JcCfK{6OOF@t#q5Lioek3hSV)CJpg=3N)#{v1<8;Zck7!QpfSX0J;rn`& za6vm#tPBYBT`|Y-F+l6c>rZwA#7Enpbl0c9cQ|i+^bH)DSz24}MO7G`76v?QB7pdG za2a#4MEa_4EO=tqhq=G)bB%wSmJwpF1D;u5!yCTHgU6a`YHt@6ACGS6(=s7`G6s$` zAp1<`8PqVP$2zuV_)=Ebj4emy0)&kvQ{>6+U#jKB<;*#mA z!luH*{Je~Q+_Pm(Y_EpqQE{-t5|0vJlL{H(iU$jJv^bK-HTS2SLA{oET&AJ0`~cs% zu+uTVXg%J32$-zMyV1UgAF(|0T-1Z5fU@MsIqWU$t}*Wy?&ggHIELea;cYObsr83^ za#$2AN)@JEDkIIAVE>~3ifJhc-R$oo1I5OQ4qy`4Vo^L*qY__XLFeuE**@=a6QWwq$8uip@s)UA zlO(hsT;Z|d-YM63PjKUDxBVTnEk>K+P=XeEJLq$v$a|+qK&Tn}56U zQ3aTvv4Euqw#k|GYu>FG5RTY*dhrSgud7xkDK~$b`SQimG>m==cKWK z=mG><*mFOw+8MS-E4C~onlCP$^Nge^mYc5-4B_gUO{hGJsLozUDssVuMCF?PFddDR@1&S4naM~mDp<}@sB4AJHHw?~n$%q6^ zVB1xhAn)Q6`)*u}h&R)kKY~A;KHKd*T!|9bS>fvh18DZw!wYmhxL34|??`wewj3?D z^K_7|6bbM?vzbX4Tw0SPNMF<@Fmh9<7sq9drBaM(uqt=n%*Ob)x97E?b?)9|cG|z+ zymu7#0w!X7S741uVomlc&yeyo39Dl{aXH|$``Z>x&nn7UP#z(tCfFM1h$Z(q{PNTX|Cf%4Tg0SQ#-@>x8dz$SphS-&KX)xm#o|h7Qwjy zy*@t0Xxh@(YgtJ)4v67gvqK>C@+m*@*oIXDq7u4uaM@cLaIZsBF0TGTA6v#cbol{J zFExdk=(jrx;ho+CfsfF?)5hB6TF9gy7#bL-%hO=IU#jE#(e7bKml$~F{k1Nn!Z!U^ z15^W-h&7lJ#D5L>r;_H-aCu!D(KgSMdKOTP4gT6;lGa)8z#yPr6B}B`8OL;2n5~Sv zpNk!jm!win1vC0NGrbC1%?3dHlz*AWBn`?5a(Ds1YnrUBd~f@>_rvx%&vXql%l(P~ zXa9(}j#i2&NPVEfzFiJ=-%V5I1~cvrH8XEtIVJ~<6iB>bTXv>*e_Ta22IWP1^UhNZ zHZg?PVMzcZF(|9#QzTx|mWNA9rb|+gOE=5Y_ShJ*6Zz+1cjla^aaj@^)k_r2 z|7}b4fo{j6w+NvE3cAwVvcG!!m{dlzOP&3dR$il4s90{W`}2twWHEgh-jD&dQpc;# zPBnv<1#G7DG{o2I%#r2bY`XU6%XdnZIKg^%$dsM)(2b%Mf-jmP{M0z0MITnvvH=F5 zsw5ko$+_5L*CZX#3VOMkADU4Exb>4CLo;#%U8baIJg_QEUO0n1vap85m|kbb$Skc0 zgFQ#|Uk@}**w=Fpv)J<&+~Wt~Tl*g}K>A7$?FT*vlw(IMwgWz&T@ zT463Ylj^K#@nX(vgEO}Tde*E8Y}r)xRDi_Mt+NYO{kK!y#ltz;y`$l-Z7_cxwZ1Ee zTi4U(=%cySdaw&?&;zoBz`W$nobyTXyp>6WnU=$0=0>>}8Q@{uBJbuO_h_+<&lhe& zajK>o1)bfV;e6eaWS5VtIE~EDA+~ZX@`LZNM!rHl7-s}9ShFiTdcjHm5H)$8=?{6o zAnaVZb+-zfq8`Ay$X7R}{lu|rlJ@oPd9&NueZ~s^b=HZtBZxf`b7a%l-`%!EP%jS< zfjbF6$Z^KvG+ETj>Y(r+cu`L0hDaBR+&~mi&$cjb=7$cL#7W7Hy7|s$(4pzRvVb!< za^IkcI4TTtligW+Gs?#p(JprR_Nve)KI%)WF{ZBSZ4|V6yCN7=p?*SJZ|eR;oOqgQ zKIxwgL3M1T2h-V?Yd^iumIyWe4hSgobUevcyu{@0F|2w8wW(n(gq=F@eQlx&wXbeV zSifOo<4FER;eJnq7@%6b?Khl^a|V7fCWhgR4dquNE}X&HM(k`?ujbr(Rr(q$h)4ip0xY{r9KF#5n`fRB<&^yykdBmSsu@njit}$C*98k1Nd&4R!_m`;Fl{H*%+qU@VB~xe81IK{2~S zIE{!5(nw662KBHhB|1g_-){<*va@?%4!joADSzh%k%j;K`wi_?zW^hP4@rn7ODNOY zo#Z0B{YluNrhe7WzdFkMLCfmaQRSZbQQa-@@ z_C5Fb{MS|>!IO|{vFXIj4&gqlvzh#1+@>quxf0*^WvpH{rnpUc*NmT^;37fvc&Ne_^tiodwR6Rf5~GZ2XMC2opm4ipEBnegb2yJ^Nb{P1nw0P<|-{2YE~Z{ z;Ln?HtP;83V0bKumpq-_`%bl`qe4~N+J6O`B__wsN*Y_~>Dm^$({davPlZot_o1B1 z4=qj-fcN;EearkOLntXV4N!@wG>Ej_ccGdMk1pa3kmxh@6tDRn9V`bPS&h)B6 zr}1S^tzn6nYM=KVl|-e&nu*mq`x+ZALw9<)hl|U6CUwxx$K9JkZyZ`+qSQybTCE5H zrCQ#pEZY8h*!XFe3A@+H>v?zgAKre9yT8|AzZbsJ;vX3GD-&_~2>`T2l<>kuP0qJs z?pGG9S{p%?^)xoAx7$W+U9usnwHIGqRsb$4opMV01M01c&XG9+p3bcMqT|+_=Lyvs za}Ees;w!)=cgT5t#79GxAV(|uS8bC$HAtxmZ{DNo;mnb4)I+UgN}!xSPY4&p(j0!7 zR#GQ{SS47FUf%ue`UNeToG6~2`XeEGAzRq7tfqJVDOczJZ=^@$RhG%^wV}nqg>iRb z`ztD^u)-ZvH*y$eQ&TGsj!BW$Oo@VLF11}GPl_gai8DSytNJ92O&!mUgT?V#cXB2#i zOr^cwd1^{4x!gWA-1n1eHvw1yEa}-W&(P^nEV!@S{Pjx&EDe}=tYM46g$c8g#*qHW+g z14pPASC_J%$g=rJK+TU=6)5pi4j_3QQoF4IlfmrLj-ZBOGaJKEoL0~STD!p&?aGu& z4HDT1qZQOd%Ol$c!!pHsxsfE-XR`f@Wy0m`>}=>x-%K%K;`oc+eo9y4RaNm3^IdqW z|4N$j!nA^Rjs*l9H8)6h$Z3Jhf7P+w{UB`C{lZu1t8{KNJGpBooz6tii* zb~zT;jvTQ{PLJn{xwM3E!M9@Rq1Q)xa&AR7c5|*@s5rcKM0-;Lg8>vTt`I9vUuHq) z#U}izM{ezi3@-8q$B*W72kb>TMu861^-+{b2*S^T@E2!?7*LIXN;ONp=G~;=V;{^J z#d?@phW%tsHYN-ehD|_I%e1~`;;2B0X-8iYLkl_3z2xcCb-*yw?~MsN)Bf)_i{iSE zNA#)+Fff04Yw*CN>wvFlTA!nem~8gAFTBU(i-0_5H;!qt+o2y)Ky zM*Q}#>VU5WI86>OwXoH`v_%n`Ht^;HeUriPtAZNornQUr6WyF(J|m9P^n-3X&HqvC-QeuB2NcUj{i6p4C^$W35NaLbXOp8 z1&oC~^i8K4gaF}j86I;he21*kGC%MrfAW?4iguiSrAS60m&HD-tCyPE-tsIw6=VlEX9^hil+*PwKr#V>8{cS^%e~UukC>E+fk(&OhB~R zUkLIr{RrB(wJY_stfK2#ZEcR0b`vNikbQ zL*YBFy)BwGjaHT~GNz6jnzqqfY_j8cu_5-6y+%#;sJk7QWJLf0}XmL5VC1ajRvZpd_t6+7DM|$AqQtk(uC4_6)Fb?F*AV0OiVQ2r<6Sq%Pf4aI0-u7I- z7#9@Q8U`D7fb;S3pFIt8@W)91y0@G8`QE{3v%;dOOLu@9g>$(ehFwM#%$_R?+oSy2 z*WV@`-^0c@61DwMqB~HYf>g`T3h213qfjd9q4NLSxU?T?m^C?n94QS zO>1)?ZC%TZoP2-Juwgui_Te88t(jRz06#Pha2in=`v-kf97y}2u30v|%+-g{#UE|k z!lqUUJG-dFooP*1vC<+7*K!SBmj5i*AfB@AFhPyNxOrHaOR|cVoHxk z_XGDXGn%IOc0MV+cN5oap5DOPGJav8{SNNRJrS956jaMy&3BFm%D%dJdsVQ^Q9 z4dWk&Fe#Z;i^sSkkjac6o2JI4a%+l*5Suct{}J$f+yG$^78M|kyPs!wZ~1>_U<)4f zqj`gy-%oXd2KV#26)FND4qgIf%%Qc;0N@vFxmP^(mt|A=dQ0rW)^#ZNC4=4TZTR^G z<%%Xd)>;h?As1N;t4?6$i`Me#ZxQy#t{uMK(+aS6obWl^_JV~tD9-6(Hu%E7yE89> zR35li=XYYczh=A8&hC`Qfj}+7UPb8H>!fZnh&upPHbO+@jY&vpLVcAm{R$e-mYkLdIU` zhq6T?Wv;SM<;^)-mOD|FCb>uq41UD~*Op|4yp-!~o7`+jIMCXCD0oy4udr6x?Y~GI zL}8tt9WCiH_{OXWqhJ+V9{74-GUQv1F3RW<{dQkk=q~JH0y%_<^>*W2jyJKmpWX#b zSVECL_ek7)6H$tBy<<17_~=J`NXLAL& zUufLE?}~mvN2$_;2znpNOBqvOWRn!KB>_TjI?u5IY577E>sHjgsJjGUpI@_npORr~pp zVLxAFQQT0JimwjJHdlE{a>-W~K9~P!X&#+4IHT-yHO>d0-ZYhwFBDAYIBX$Lk?sHf z*J=_Wxa>rEo%T}@7!uX>`)Tb7XeN`mc;aO^z2cqesb!yJrlkKNo(ivbZw7~c^oQ3q zeduMqcmrc8M|g$>%ROO&CbWH)66f}?XW}EoLdr0)lZ@%`s)dAquh}3CaJ5o}4PP*b z7L*ry2WE_RmMt;$d%};cVi&`7Ve2xM%iqtDG80EsLWTUL*CHWgYQeP%;l{ z49*?1JO@}SCKjA&#)Nj;n$a8Bt%{MMZNRb~+m89&ND{0*D|f^1T{8%KFk{fe zBcRh8%K2(ypSfzGp6B0+2+DT2N4`>)CK91sMH+8S0Q4;m822?I=esCZateB+BIy#`rL5=Yw}KurnmeuH0n0Sa(8H#QP1w>E0t&`VSC{oN6t1rX+JEJl1MH zzy2pWCc}v%au_uJ|H=jgP08fNGx;^6z1>6ekRqPisKvg)dx<~d!5hZ((&B--9RR}X zz+`XrVa4L?ClFv-@B*uO(<(u_PHv*#Vf-ny%MP}T>prI!o4J>Z>+zL2fqulopAqYl zwf`}K?W)H&*TSnor@^+`^W64>fnvH$CG;hExH5sxLUC(x?)ig7T1Ho3Dk<K9r>^Y@i#xe>eorQde7`zKy=U z>IKuJm0Nw;7_yPL4!n(vfB20saCu1Xx4n!de?Fx~b3X=F?FkED{6eWj*5A1?VW=jvWFqa!UtBq{P**3^sjJ%B!a8m)P*Y*B7Tyt|!mO zV%#tA^=?vyT0c0Kn-ctH$ZmWPv59QvwD?0fC2MA&Cn)I>^z-nwfc3HG;fb*$W`_kC zV8{Y2ln!Ild%D8OVpJ5FK-N~dTCnNg>3@|h3`~63P$C51Crocm1teFnUAaESi?0at zUXar(AdGBVF)0&EGg*W2D>Hh#2+0Ri4QRbP-UB*gVcZoG#clM-w)1bJAPSrLT!c#! z3$o>AYq|b-$BpJ<;jc_|0F4885)!P=on@XpN3cQ%rVqqcW5eG+HAD6m=3wDRbadA% zsvjYRaq^ce<$PI?#_wGkB!5Vh<5>3EL5^Nb9-XNIr@vg@-pBmF^ltb6`5aenBvpTj zae zDYusEM?Qk743m1mvJ#}=ex9W;T8)-wp6JX{`QQI)(xNGR*g8>?M}3YycS&@n(~Df2 z?=qwtHp#T+&}NtdIe*lU$p*dk4xz1V15nC#>(8(fIR& zCEA`QXlAjgZRcR({MLmHTEf-=!*0`j4tQw=3V#4jlU`!holi(XSW`IyH3;nrTkxv8 z1Kv-3@tO%%k(r4vFt6du=U*Fam3`R-1{CUEOp{SplZYQ20i6 z5(pyKnX2jZS$jdh(jzmrfWblC21|AP>t=xntbuKHyrs%u%ZuH_;r|+~I%F7BYnHoB z^iDT{Yo6Us7^iz^d6ef%3;)$Ofg>$kueJ}=?)3kOl3(1rQq1UoQd|jm!oJfN!!voY z>vAvfV^^`kJCO~_06q0+y54XY91qTg07S$KRdzRR8#ld z8M(A?<`SqGspQ*!ux~Z+wgty~4;`8{+XeRXAR~XFKKX3in#j(1zz)pWu|A5ee7haw zsqL3;Bi~-NB?=Pe8nV^V=;{)AyFEcvMO8cjn68S=p9KNyWuo%`bQDeymB4Ex5;ORe4}&lpnT(X_408WFx-y zCG7{c(xA&au4Ktsa*uab@IshM@xn4D{qJjpdGo~_O|;6WjE)B4Zg8*_X8zxU@dd+n z2o-W?g?YMmZb9AkV0N?(&&}l7@&-X@>#;WbsD;OrY&-n*@0!Z8O)My4;JlqXPee&u zZQZC2qNFVhNMdW5vY8=DddJXZXkCI~=<|+Rp$SwNa{hdyC_B25l2Skm%{(;P_x2(a zd|5DLsF+~n#Q$=)bqWGuph=E)aL!)How4qCpN`U=KgC-pfeY?( z1AvBdit7v6k_ok9T>K%Ew>?PfexkFH$60$bWv!H-JyzcT{SIldEVoS#6V-PTw{+rs z7oIi?3ZRd0nG$J6Cl1u`RY4cz{GLP7kBAB`_d7v-st1&dr_#LR-@->dkqk6OZs_vFYD3uwE-%&8_fkK7UChGpP`cmmrUL^`u zy}PLo-gf9NhE}OA8GXnHdh|7uO_EuIb3bvr4gmXAsjKbX+1+g(UTfvTD=vwjvrLK) z=7r|i^fD~r0t$R(Z4OzSAp&p2?dE@AtI+b$&kZgA;Ke{^W~215Vl5V>JbzEcH$ix9 zs0tpvpnOD|!|4Dp%~9a4#BKmoW%81s6RVKVLnZ0S3y`W6%dnJ5i7n7DQ~*Cr*}MbY zOaxuv((U&QOS#uv>q`s9AqHkWRL$Jbx49$|BzezEtiz|#sn&o0%m0aq3n-ERYqeSHT&wR?a-vQ4s!u*__JN$ya+Js5Wc@O@%3q8I#W$uL7&nNQKgC~ zX*KjtZ{NY0g%nlEmMp=t7fN##z056X*fW7xnNe%0%?l@4hwS?FfpAYZ^(&sk0U0J3 z_ibBr0WD-Yrs_mK;L^i@Phn$Z%6BIsA@vkA$@;A98h^77cD)C2UF&EYa^eWGX~zZ2 zJ|3z>6{k#zVRt{XFf~lsdssD&5W14^5y?wTgTc7*Y-wR9ZWCADaj6Fv9xlpuMi%8c z_Z`wZBkKY-Hi65To4+OPOZ@tYUMf3DU?t};5A_e&8c?u1<%=ol&6A+dQ{{CadWyEb zqefFPeH8uQDzoj~#ka-G-2f0k(qa2w)M$&%i`qkCp3$pL*LgXw3gGL7172&b!UFbG{G43yATGZ_;iCThEE)mr~`_-s^jqN?mR~pHmdPf z0rb_pzn4p#(EVaJ=GOS#$)RNE&ZtUsjpPiNAqpwO_D;j$+xnM!u*F@x!OygT0goxz zJKZ*Uds~Y8jd7KM%2epRa`V=JVWd|m2j&y&ngi+$kq)neOBa)GJN>Z9#yWyQ=T;bKV5&H{b~nCp-AH1zon69#YsAAgLBbm7{Jwdb=H- zcrkjxhQZnM5`D5R<;m!)YvBw4In?JF zY@g2(q5))ZR~u{xt1<~k;Xm%J(6+lOf0}n1jCD<$e3!Phc{a90-B>tw>3sEN7IUG0 z;%LU$2`urSBTK@(lOsYtB*zw#c+v_sy9XDF3k3uQ4xDCqt6VB{nh+|RL5ia4|L6pp zB1?sS+CQ4kn_cB+U@8#gv&X8NJ$&x$JN&&ygaGt za?O_cHO-+xy!Z1wiaucrAxfH}r%CC32zTlWF`ytgFHpWQX8q2I5Xu+vGEL}Mvpwk-%W(g>iit0$j7!qC}AkKuXCzS%?Tf5&hx!~B5$r!rvj$XXC zLSdFK@`C=zce**MG%f*^iDheSArBA&L02lVB48}7_{G@+`7|40h7RNluQo!tW#V_%OL09gb`pAqcaM1zVIaLUShrDeTgWEo?bAl?jCX)UogQ+z-Z$D z@QMoF+w>8n#6>ERzX0oRi}gz?-#1nbi~?qXeb}x{6GUx5xK72%6Iy|$wP#hsBiZy= zytDo(%Q|!Qy&N0)K~0Bu2c*z0dAPaU>T+Q=*Z&v0b10ayFoS`M3P~)}oK|?U=U?^Un0@NL7)LIf zJ;t7Z-R3Mn*&&?=4bHyLzBV)aWC~@9%DclO!>Fa8yh`rom|omAsuJ^R>RdA-TaX#h zjXt(jv`5me|F!;hcgoJbGS)Z7tGpKFtFHa~Un%}tOYl=B^y>lx^4O}|sJ_P;LEI4} zilL%&b}9>AfxI6*eHPE(8b)#w&2u=Q>~>jL1Ks;IJSb5C&1s;k0m)gf!FqS2-T_4& zzNW}X3lA+<2$Y~V6CFbfdnnSQHf_X44P=i??W0##7&x+tsWh>scBl*p_YM?Fpz&!O zRLDXm2h$6oAG}r{g!UXt7_rp!J{jw# zRxidliTk!sfr$Q`SP(rm9f#WDt<(D}ss;4^O<|#;-f%T zFgAn2>%nfeZ-<|xIk>YJCXQ(D)~#1jOt>d__qP&4m(CwkrY&^g?i$f^-Ax}wj{hu& z8Ct`@?OXL}!O=DzP-%Q(aIwvO2c2hkN{}LF0qNz4mn4lH+dTCjCn-^>#F4&jix{H6 zL0Mg;+o#AOM{!I77MoBTih^Hq2sGC6SmM`VdfoNr)paq4x-72rq z43F>^pw_a?uz$Dd1&v11Wj%e;*PFuMrf?>hoa)3tY#sDM+0OqB7?-re?_hS*pIux5 z;LMlQq_;yQkh%-j@Rl&~;u1*B&GFkp#1vYBDB<&YHXp9Xu%~@WB*p#B)zZT8uI3pA zW;4baUfh=MLWwVC3@u^4gqKBF7pa2w^w(lX%jfTaS({z2Z?A7i(qJ~UCI-Ch`7>ID z-ocA5LsA0W?-dV!jVL@{VBMI6%%~?+JrTt3$zg(5NfSwGKsGA8M1*zodgwwoQ}bSy z4()E=FH5)SJ-S6hy5q@hCtAf5Ms~(yQLYgce98n+7wdbAqErRIatoXm8jHQ2Zlzoz z#10`-=GSBkdS80gst>Nd?3H9@d(%%YUM*c-szFxp}A$Ap-{NHCNAq&RbVDTzyQnNShtk=K=oCQIo!M7nD_p7UZfHHCFwXz_ zj4JZzDUC;i=8F!t5qhtdAwL@FT_3wCgTyLqSo6eRdYEBE4pIt!Tx0a%HjV($x3wL$ zh@(vJS!VXVMy8}YP~}{%o+f5qe@O=1-J--q%k+=@Q51*hmuAP{z9NJPJ)Dsvx4)T0 zM#$0-Uy$cb?DIwyPEgoEFxmzcNZ!lHsm~n(Paa7~`H2rgycf@3uE&-1*}Wdw_ko$c zZAN>bWt;RL+-a}s*5;SRIK~Z2Vh*YNDKz3UkATJ&JV)7Qp_;QCfAShrvEjK8MXOjy4-J?jB{ie1&BF#VqX;(Fo+p$*36imBB4 zB#vT+Hr&a#X}Ia(@#HmO-RGa)R$ha(N}38=Z@6_FyTZu%EyhjBtO;>Ub^!n-k8OgXT zO_aI+LGVT+_f-q-C1(w^p`>Y{bE5g`zjjLliiJY^8sPiPm1T>RGQLs1YO5FSTmbQ1 zl-hr6N<|$`pq!D4*GAFW=R7jUV@1xsQT4G?9(D+n3s%~ll?{Da+*Jd2p9xA{^%-ww>TZ?{3iFKgii4WspKgA^ zSTm7q#KCW5YtG$O)ovbcOMA6$g!MN5cmDtl=4aS1xBYPQT!yLap(tDUhIbpxL&Y;z zgEs5n4STh?rV2q}z@0pgpfh(K#JJtsPOXg0!mh_`(uGhVj}J)Bvlx9vsZ~2t(Jyqp zwvzy*bPt@I%6*Ko3{^R1;*Ra$pJlikZ^W`hRAp)_E180v;oI&AE zgD8uVuI3)J)=TBeyk`*8FO`V&zz5@;FR0M+jak@O;-c2SK#-8$hjLM`0eZgx!6EZ{ z%cTMhT5%hoF@mY)y<@#u5HzpH3)ac&fkfr9soZK?4ndbqZY~e9gmiIMQ64H^VkMSR zlP*aI5HZ1ECnrQzWb#kydW<<9qEr)D*`SQIK6ryH+&i`UAH~6YR{kKx<0Pdy4a z7;|cl5IW^v>uw^(+A8l)!GvIqMI4b ze2+xZ3)=yf5O=3rk;zG!xX?jgWMlkFAy?q~C9Y5~p*=(sWjnaJcIB90l0;k+7?#pl zghVc3%ja@Xek#h@`Fe8m9Zr2ltsTPes7618K-Hs^xn`%52}OsTQ+LM;FLhhIf4rEPZm4#iHb0*4w<@Sw}wC@ssK1pAW(u2RUe%MF7ndf zuygq|V$lO^RVO%v#CnoVUqCGZv5LOT1TDLyeD!2x(EqJ zC9LOj>?ov@O_f)dB#*Wsz4~A*VN>k;di|wx!m&K0`?LZ1_@7@|f8sj%;*$e*3n;&xz#(x2-zrc<)75?nU~#!9O|G9u#^311y0!Z<-2$HFKw3LFb?K5zJ$S zI00hL0+Qs#=^|T=p6=vm-*OjmnWJo5;%_xX%Zfp1RIg>|%B9x{2(eU0^tFgO`~x`d zsYE80Xq_%mX2;fnAU8^ZAP7D13=+w*2s{7YT9#ksA>!xqa~X|2@bJ|D>T<1&??Frgsc# z?GP?G%9uZ1^lPfOUDCr3^*@XV$#d3Xga3Rigij;Z?QjR6r)w&@{ujO|)yUpi(AV=$ z5)+^4L8Pq054uGLRL4~XMwt8(QyT2Ns*`i0(>Kp1P6j0`voYHg>6LTphgNfTr-Gb)6Y;#bhm1R8cH|z`-B9R`F8T(Pe zK&XNIW#1Iif-pO#Z5kh##yt(4`iHkc&VZVwDC_Dl(c@}_0j@NY z_x1VWlCE;A54Eag&lJp)>X z8K4^Sx&wv)>J1=cVV&q|7}!V)mAQJl1W0nZ=U@RVZ8y`R3Yx4 zCDRVc1N~{}fKs5;x{5uWTzIPCbHHfV%F$63@ji?N9+>2gj%q=V*aya?@6NL@M!IT5 z*~a4S6v2i^+ccJAp$~=e(`%ax`c@ddHmvkpxAB#Bqv3ejkB*pW$5)IVU5K)fl|Ki* z%p!H0UqCS}WF*kRb@KcTv@dac>+qh?(aFWegyxq#k{&wELuwY9J) z*AM@Uo1Crhx*(R}Zl?3z!~DIXVEsl&8f;I77JWT}jOWf2KO?NiBDz+lqt$w1m)tOt zQQe%7AT0zGt8!k^f=Gnrp4;0-xDUWU_tSz#FCz~f4_fk^FATH`1S3a46qDp(&O zYljy4$n8cg9G+Z=tA_KA2d0Dj{vpuj@lL3yFpk#kUiEft*7dzD?3-=dZTu?}dwMrJ zi)4|N00Z7yGI!g2_eHOL_zzL@rQI$2*m+(@ZC{?AFHSigkw86V2q;eB9dD$COtO@Z zdy6#i9xD5Fl|w#z{67QAEf_bz-2-l2NOoon?71RuWU{~%5)gD4VN3v$vmE&<6ZgAVd)@2V)!CRLtp~dr5`3DY{ zFUgA`z2d-%cyUW*G1g%j)vml@6=g9G9A%Z6CX!BOu)i_Z1-bC)Uh>~Rq zw_DDSpsSLooDvOIT)0RvJ3z|tTSwG9UbnVywWMba&$s`W45?bS40i_<7>Z{B&kvsp zgN@FPOLrsbt{KqF^g!qgcKvrr^*rRYtm9**xf^yCNc-su-Y%`@{Jz!)Zlg8ALDFFl zZ|XMXiM&{DSXPv>QRm?Ru}+mIJ^y~4Geg1ia>tl#*p1EAk~;cs+xw8zS4g~qBglY! ze%O?=QOJ_d1SqxE&9NW( z0u6|=98rA*~tmYhu>k-C$ekw?*i^KTx$I* zZ-_~tn$!D|3oT(@efWw2&fOemM^bifwr{&(c)5|w^i zZmNSRFODdWGB`{R4+@6Ql0|%XJiPS1=M@DcHsjEvJov@XvgD;*gmq;4hIq^R#TkZN zI4jJp3WGObIIsJ7+;^-8zBhEJ{k$hAdkoIdQn$nK<@Zg6Cg&&q* zx1oYmIb@TdtJV@CRvYoqUlfiN-9-M$KDjzv6lSzswTI~|jP%>=gcyYTU@DL$CqJLFU@Ed+kHsD7U4>cxe+LJFEfr#hCO zywKaX33k&HE5PPDd=@JwDbIIeY-^N{e@A^&UDhC6-m_9G>g~0?2qdVxm)tr? zAvb7&=?BBFM>f4gd*f~i+=c=(-q6-71~Wg&a~)WBwJ{t1Stce_h1u!6u>O=0*2aQl zV;*6CKDHUda64uAG$pqGhD+tO!CCkFM+|%BW^TUf`!%}p^6kHR-6w<6n4Y~3=oXD+ zddVj@B^BLKBEwN8!hMks~K3hv9BGkPSF_^F6;rKJ1P#=g?h z-q5~7UWAd4$Y-e|R+=08rjN^;T*)YL;S=WX=H~LaxS@C3sU;#x`SN(_3Ih@WecXaqL^qN( zLu8Fv-hd>=-(@XyO;Oo%0DVfK)dziie8D#A>(76_M!v#UG&7Cdc7RepO=k8(r@i&D z6%Ec-&_7`!oiFO9X(KYd;?T*fo<;TcQz|JM?U zXO_jt15S~KVlADB4y&JiTsSv*UHr88<8VcsVjF`(<-87bPh_-?g6%N|lT4!CIQD=QtuTjq1N++Jiv_eQMXNfLE+0Pnv!mK9r%iT# zA55Iq?giM~=(w=PNX9R8tl?HGLn%Tc|0+-D&=$h?#jrGaR zxTG~Cn6yQvL=2yC@7QrXP5LZ`3<(F8?S0g3 zm*0Hi{bSD`5x2D%wjD8irXQp{;VUj-ZbYYcQ}4>#hES!!gT(&S=aqmsh}7>$gSPmb zLW~r?K#GC^w+ZADyp$}TNGrhJya4p^3#9m)lr-o)i3G6GxX|S|`@Xrxf}TH-$ck6& zxBN|VTG)91B>Z&yzchFY9O$wI{9Y&T9ogkMcDM~by~A%USn>FdGXIG?VI9ePmz~&)L;w@R?q5n{3|4%9 zep}e4=GL}Ld;a@6@%ZW>hH2u6cRVgyMyBvm(Kk+UdLFxvH_v#?bGp6*qBy3_+gF~O}o4r^2oz&xN%f@Ns z>#+YO^1~qtQyfs|&Y-@T2+kp0rzRN7mP{nr?OSkXlyA_`qPl#fK9fWANKcmHS{F=N z*{r%c!7@u{E;~!jB19?EqZBrh10_?1?Z~qi1ei^-h#-)g7C-q98hhR=NvB`anJj`e zYmEvhb<>gcr6Zd`v0^5lf`I{8-VwW_T42JMao8~Oh2fokX@45fH7 zCdj%l!a7RU&{?IT(!k7AbX2w5snQPB@#qQXv~42yYIM%0|5*x!@3?TvK`r_D^=|m_ z@J}|k*;Y^Vzg$Da+fBt~jD7pSW=s$ai~Ql!M%(lGr1r=|Gu5k6H!ywyMd`bFjaf%t zis#Nh*Y%>ev{LR(1}%H`B8$={v9aaUxfTcgC9O$r4@RI&DYCt%7d5vBe{`J*C0x@*%k(JV zJQA;#bWc<{HQM}!`GIg!Zvup505K)jYrd?#uA+c{6$MvP5&xOzlHK)jS7N)$6?ECb zqDalqbgBgmqnTZ-K~4rCBGeV$1TfOFgM4<`EZ_fLVf3SI4iKvt7lDxS-+sV3E3H1D zgN^i>NgbWo5G6)X@#^mGweBSZcRDR4WC~eV@x!Mvm+a-6&pj=t)Wq6HoP2itdi=%U z<)b~HreLI=w!_YyS(x?Xx0?3ucx)T{6-L$|zD-28-gU!J8Y47B_@%+lQvW-p<890E zQ>+)o%80ltw#HInyk$dRJX}y1%1}H8;=3n3h(Eoo=CAz(-D$N9|89&gQDt-nPwb9~ z!9etGpGf!oy2yL>rb3?uU~JWnH`6JA#<`!04K=@v1eL>AXPDQ?x>#yuqZX7A3invo zgptKGd4r>g3dSdIHvyatZJb zf{bUn*df$&WYLwkKHp6vQ_@;+kC-YSW{&rdwt8O=FW-(qIa#ngDi~ahTa3x_K~qXz zmv?8B2hnBNjppxxCIbdG(7f4b^Cy_@;w>oi8KZYa03)nNLS2T=vTs?spf!51XC1Y_MTdLay#7#c z&9(ejnz4%c`(NJ2ep$jb$x=7JjER1&#o6)#^9`Tz8kDUz-Guavc1(RH^ZkzGVYp@U zb}B>z?G6xR@Q9=i7!Nna8}zA&sv!BWv~K_RrbRLyQSEx-R2>zaSE2lIu=g5mmDe=1 zS377by`gnm5(I`#b6mh=`dgi>eoki9x~x5c!lu2t$UNIHr6r)}kiorpVmczx;?BtXM=VPc(+bT_In6!3mAMA!rcY)_>7WDHyC5F#pU=^ONYtxRLH zIbBNx1+*^xqlkQ&+`ulwaVfn^=MK?F&CCU>t6oG^D%~nL`XTm5I;vuof*QHYj+ z!dSOU1-gAxNNyZWALNT(9+NtHOUHV)<+GgUm z4yIUkfz9r=SmmaqnRa|T25pv%LErkE?iMVjL(6lO1^;^(``RP@VA^N6A>?Bu-RiCX z=xkA98g#Mo%b}+&pt@?0B2neqr|RF`4Ui-@@#7AB!0A_V-5X&}Co+Klw|;mjj%QJH@l zNr%g0t*%BVg-Fu#UIED)=A)fF;Ma@de_zXw?l6NMd-{L!Hxo7jGCLx6-8{81wd&fq zCiBRvW)>v${o`r)^q?%G{(FtGu&rFIq#T!z=?yT1hW#!`9aZw<3AU9Vkb;9LN5MMbyW=&0kJ%;Nf z>pu%Cvlvw3=_F*>HI4Et;1+#a&$ zES#DRryV7%i_P@ElXo^`uQvA92nSS3fZYW&m3pm#y1$^O?&@~${hbGtoXmoOwO)Mr zkXhac8oXK`_uKuq0PRt?&Ofmh`NCxLD{>2*fG4;lKkpy2tyfI(>TiCA{@KisyX3?< zNL?085a8OBTel{jGqOhF#}2!lg23Im);WDQ273k%#iX=axEbG07@<|rsJ7!Nl+#LH z8cYM!RCBQdM@!~#Oqsgu3!L7*1L?RUCC%aTMEEjJ~RhfK+b zf^1j|y`g8X+!-Y?)sS;gh0U}e4RVQAsH<<-qsm@y0GHUP)T15Qm_n02AJPzAbC-l8 z=m2Qvh1He^gDAiBzVxFoQL+yQ%+DYC2SbEUL?f%mQeUjSG z^U@%jXRD+eN?;lLYWs|p&1pi7hk0Z+A2E=7aie~X-Zjhkiv{`atO<4=&$yP~do8D6 z_HJ4@&M@)A}U`v*c z#peS*iK%q`n?D<)c(>cu1^;L1pQ?4gmkWDGl(K0EP77K3Ov?a9k?rBf6sxD6qc&`7 zkY-*h{|}B>RFOwp->88%gwI8W_19gcdq-}~Jw%i2N<8}4bj(HCV(rpF1Nzy(ogMs$ zq=>t2r>X{2$n?80ZU+r}Eju1NP}#K(=ng&BURT#V5hlaUS3wa-q!w4=pIY9Ab%fpn zA71!>Bz+4!)BFGbInjk$)P!TQ5F@dpqfNQ&n`=cJ-RQ!;NU1QFa%r=DNv@41(FHp= z((N>(+=jW%a0=C_$=EQ_F*D=r(k|!!?)QH@dOWH}ZL57gpV#~Kdfr~bm>BW&t5z5$ zqXC?bYk)<*>F5i`?}U)`xxAKs5r!SP>x^h9(cLqh$L=TUX`^u*arT>gk=OH9zZtjF zMtBSH*(@ohyPIQpAYzu?w^tmhGxD|}=g|vPwnJhz`nbGTUmlS_Be;Vs2zsYm_9tFa z6Q-*zP|QMN_6j;t@zD3uH}!FW36b?vR1%QnkVgBYIZX)Tj|8J;>dLKxpcFCc$<#Yo zW~2?TeyVSo&D$(VHY(0{a`0KSS6y9RE%|2ypX(oYIS$%9p&^SP15;UZhL!V{VCELa zmU&;;f)3#l-y)g3wY|ZXRn?l!^yWD2Tb?J;uZ3uk3IePD3_QLx_ABh*hWl%YZid1* zNHC=(yZzw-ybie=JSWXr!wmiEj-ni37ks!!VgJMhJ0i_g3OK`_Zt|wZfi1NEQj?x9_1j^;NMAZ?*5p z^IM_TyWJPmnKwTprt+CPi&Q#F@$S$8m`92r^tNVQ`q&ao(!a&Os94Ugh1zO4)$Z9p z8(B?17y_nxz~k>z?CBNT#`ng~6mAgKL>jQfTw~Dabmt>2A(il44u`j>_XB6#7d*fN zvr1S^668~c%za~k!zM!ca~KSz7oA-89rOdF&+sseVa6YCje^?D(6>)3&0Xdx6xH!k55Cg`ByIcj8<}_p^wpGgz=>J_ww6) zQFT#fuRhe_uGpi`JsG#h^%bpHTdL70V9SD7B&X7OYp9C+At?TI0gtIQT6v3p8k!k# z-SG8nM$1|}=dMvw7Z>{EDhqlQmach&zV&KJ?FJHJRc0E3XaSX*^*pnPhlz)$SV!3m$Ojqc}58b zJ^8QvgXc7TOzJu{K}Y6H7Fox3J;0XOP-x6w;V2N*ne3U-*3J85F^e;AB8(+ZvdA#Xc}H*X;8PXgHGkxFmP zWmC?eAo4UXdVgecH%D>^UmEkeiS+`c$zQ?M6Jo{C&&H1& zG`qOw&JV)lB>mg~$2P>15bI^S+f?t3(a$&W&WK4h-L0z4=~{IZ*RzZsOd)Oo(mFRi z`WCddOkxdM)5&_3wt6Vvx8hOCLYT)5+oSc5JPc}W6W{1?5#YQHp|;#*?4MQZ=C@Zl zIwOeMpX~;{lgZxe=?Du6KX8Y~-FxoqwP&69L@Rf%c^1q7yDlRZKwgam-OX-Hl1xj7 zu6G%y-V%gMEP32Hx39$iX^LB|&0l!(gQG!mVT`h*CSWdk?9BI*w2bcePI*k$F>j@qfnha6mp^vSYy~~OR-)0aGgq{_oLRW$aL0= z#!3wRtBejz7IB2z2fL()iIzmH*2?IVV*Imbe2m5w0;IYQVrm?t&AjL|K5roBUEDz8 z622sq73NlOO6o$?7Ug6wFQjMn4|1~BK-I#fbn(mp{5B7n=u$+TLRx1g!AH@xGM2F* zFeU=8(hFWgj0i(-Gf2eVP`uHJsiOKCZ~Mc?wlJ`SirU;8_z^jZsTI3#N_+8=d5cmx zdVliQw#fLl&K~EeS{ff0A^GXDlDrW6OZEei^*h)k>@yO_=0e{v9C*zWu+OkZ66=TV z2`L+dA!WS!^3>hHG#CEdtlztTNl-(q+I`2aqXLs5GRrqgEf?@If^Hr z39T3s{}xa-Y^l9a$NfHn_VJ3_bAR8H=8wHo0lkmhM}R|TetqC3J{v;Nc?F);a7B0^ z#d%=HqH^J3ME5V}OB4o1Lc}C&WytAQf5c>@&zlaDSc4I>nTj-Mko%&Z3Bvg9L*Li} zb~JPBTS07|+*ZO)MA2jVz8*blTk^Oa^5AF)hG7rX4XUF=jcx+$*B069_VE6wi__4aq2f0FthZt z(mZ+{7N&9v_6vk(R2zZOWr{id8AYw>W?M&*=QZg_x-zV;)ymiPxdGTO&Ux`Ft|y^L1_i<5 zG|Ilc)9OcPZh&dPS?ta%Wm%?o68EJr+|jRvx+P}lvc%fkede+<*eOmS*G3pf1vqUO-YJ;pI=Fp_R% zv0xI+_Tm=K_-ZLuql@;*jTyqkpze%=xo44c13S7vEOTC{Gfd1p*H;HGjsH^CFgwnw!_q z)nAEO{5$7P27;$?YM8Xnj^9?%4=4IP+rK9@(3_mTzz3afSb+BnT-Yp097l@0){czm z0=Go6F zI*R?XQ7zT6u{!YG;bNP^Q1?0FnXohIoJW#XZ^7}rTx5s)I-$sdX<>9{BC|a|i%mmH zZRF6g>2Fa<$-$Ilv{GMQ()WpS(0*&AY*X}!D#vk*_|z&_vAN}JqTO<}YrZoyZF^!Y zt;sj}KSu`jS|8tqiXM3IDDGb?zu0`jS&93^wQbf9HkY33-pr+CmiR}vMiM`3hOAEn z%%&`rswfkYv1J=_Qyv|F=Oqw|UK58n3rCTAz1jc?uGmPBdpoOd9K%)_E_sp!VY?u+5rq zj+eU+R8ZH=@zSsSW@JSzf9aDll-?d*qkwy)Ged;#j_d%VRNNYDv>e9a2BO1e1h1JL z;jIlHvSnU>d)iFGJ~;3QGmDUsM@sA(eK%?FMOplG^=cP4pf^1Wz{TySv%kn-FRp}5C8O78Mm2KcFvWdnX`*yjAW!Fma}+cz zzS8~^83>yqk6HXpep&F0pj*2~f=D>3Dl-ZD!qq7lgmPo)jt5qX!o7`z$6w};VM~MO z?!BBL&IDo_N;e^$d|Nm2B3}O70ZyjOshL6`i^Hu;$TPl`zTof6t^hUNdM57`BGm{d zIUQ^e$E$LmliEp~xLj&8uPLXAeJx(-cZkD0E(9mEIzucKo%fs-)+gPw7L0}|Lvj4)XwsTOXv+s{dS%`hlmz(h62eVvV zlhZt|;UeE%Tr^5;jJnOp`SG=@VP1Df_#ZY??Uc4)BC2gpk~&z#;IoVCW$_V_sDGA$uN)f;Zri0$gL>^?Xyi;*~s{#%R#Jlxu^(|OkF{t@=nlgcJUsM&aGn0Aj8q9%Vta{{go zp1vwUIPLq;@fzH)w!ai-RkXpuL^LD%?@wh9&-N_JHIS(O8ZOS!h^7* z;4sO8Wc8;Rf$cq{qV>=Kua9HSZCw{h%U!3n)2qr@F>b1hn@ZsLE+-94;KF3?CB zr$@_}&OFL`g<%i2lV`CyF4xT(rC}&(iT~m8{X2C5OjvZy_bz7-vPE@_ITrtfXw5Bo zd~;UPX^>fDt8*hfD|NqKufie@66kKy(yR< z-b!aQ))#j1iCU^`m$J{h&d_DQL)wx`i8xXaUeI6a22Z-qooo>Ba=X$O(a9OhDSx5TkiAJ`61w}xPbZ?@nL$5{;ge>R5h_I4Kf!Gw6t+UQObLhJgM52bsd z@AqQY-S{07G3G)9Z+GY=-ShW$*}SGJ zHg~QxulwK`Zga0vbx#51+in$nuxq=QN2J!OROC%A`)d7cVVVK5(5sB{ zpPWA_xgIs;%!R{Q$|_5NU-%4aJR-q;o=xkbUJI$AxV*wYsOx&3Noh{(KUck~zB>`I zYA$x3(`eHsAaBns0kKleDY64RcY;vzB)Wq&GRry({0{oPDWyP7VkbHa#;|^R^*I>x z0t$tqG~8}F!H<8qVT!LZI(|E1$Gy$rRLuxNV>V(;f!9{W#n`E&L=Jd;D4e+tk}1{-REs-@P@GrP z__!FE1R>vQT)ZQ#pNw=q8Mx(%cRvG`nL_m8SAeJ~@=16`gZpffK~~xx$*DPmS_ixD z*WKFVySh04J2_N>v?!^K=(%uYH<08VR@diTzrpW91EYnQ z?r=%ODXu@3e*JA0TUF_??PTq>!P#POuLG7{yrx_8>=OT?%grV(dxN?qwb$Nk+ery^ z_tr{T5<7f6GqpV!3_R~);;8~Xd}eGsen@DwOe6L$`#k4T_RXp*HALUAfx%p6_cqRx zniacF2oPG5*4sJFk$Ld7m;^5WI2k-=TTp~-mNKx-Xro=`@1T?4JWEb?>FV2R77SO=`-itFv) zdN1>1&5QVjMk92NDWrM$fY%`}wEpJT=sTE# zG4>DObwFA|5I)l3iPdkz*T-hZ8f+>xJ`=rTL=afD{5db*0KM63_?*H-vmUz4zd}X-xMC<4(2jjQlR>Dg zuP>jPdA&CmhY1|!3#ak9|Eb|m6l%MAeHks=;r>NsV6Zw6q0#11{`w&!&Jjfm1-f)Qr3-GPp!h;uwGT#b*ZSr zOeNW+aaMI#ba-4DLGETokc})?dLHWa#pT9aB$ICwPsg`^7nTW9SlRQbm~D!!t?(jY zEZ_$sg`VUhMroRHFG}^j1DrnxeOB_0pIv6P8#5>{btCf{;JK>%DqlhJuVau0Mj@s# zF>#Hrzq_e8y~)E1o`Qfiso_UMsLxx*dY#1Yic%&IXAQ*Jpt?fX}t`YJY^y z{99>A{Dl+n7k@?U4&T6|GX;VE{JwwE0nIK-t`@|V;g$usdhXTP3z+cNk`QQ-+zcuT zeaB;EFM4L1YbEH_3FDVLU@xc9g1Ee4QApO;#)|CGhoI@*kCTIvB0-o$UcV=(N&^jo zn_EA7qK)rQ*gB$J{)Cq(Y^ycA83mgrbK}bls`fGW(gwr4hFimq+PpZ8baYaFnfALi zh^3$hEu{SN(AS!O^4qIjOa9QUZ>LI5geGZpN$Uy^TdtqiJx}^-`c8Xx$M%kq|2@g+ z-Uv^?B<$NS+@mnKy0qhs9mD7gB9N2#3~z)lR?`3Tq{vFM{xMU`{Dx#7QZT#g*8P$D ziDGFY<~$@oT-p$mzl5E#7iseBKid=v{ToyoU4#Or$bBk9X11$UMXTGD#eil`p#oZk zkJ(mN>{`@!b@HxsSZc?9|CUwhwH(c)s~LLh)Y;D`$;yQo=N)uFZk}SjoxP~(-I@cp zc!@Xr5jff~%~_De$!cYHfp z0V8a2Bd$4klE&HwLgny0pBLhGNN@{>f$>bYohf}jhKEcbb)*qyKXC{ZBi)Vjq-BNe zAemN<*zk#6nf1PZ%x5uHhRBJmYKi{cMqxP z;WsHEtd8tGI@xzU5`GErOPPz_V4xa#29m4#%F~V)-n9hKo zA4w}2mY?^Mz1@RmkxX`mdQvy)9ttkbD>;dVJnFp`tM^)mVlz3f->foF=d1D*CWLze zdRqCtH23v81c6hUVLWJ6h*;rw^e33EowlneiBIsVwblObZzrt@`R#X$fkuJNz!b~u z-agPe5&8=*BH<7s!Q|Dcu5xASLm8|*Ye?Rk_9=L)V-O>}voa>#nP7j67CADcyM*Q~ z=*fx}7cH+C>6H!^FJYMm^m%LhCK#aj#C&gObX!$AB_WJ{n@>oJ+l%IVb4pl$ZSP;w z_t5ePsTf^4L)y6RP?j{gm$13!LTbd{N;9IiNdv0`jCc*eca-25kIsgvU%8!5w&y%Z zMEli#pBAYUH$wmn)^5g8p5jyY@P%j-nTf^1vBwy5w|5=%SbEzq$pnmT>`MOUz;b{j zc5zjCeJpF}&2(_F7^tK*Z$T~BnH2Gz8CVzp;;avX9oI481kT+|bM;;=jufs7&*={$>dUhyKeTqWKOrG4hK)xdh z^rWF9b_%0QB>u7dRcQKy=7fFoq;aczZ;*fLQvmC1q0)v=>ip!_q8e{r7sbVKsaCcr z8sC{CS}yu0oouRSi^*|9^VrWrEzCD@O(ve+{^IOhnCHiG4OqxaLP^fvQXHZ9tPh$3r z!oXg3%QHb|AuvS}bGpE1Q3-B&D~(nLB5?^qyBo+ypymD19mCO;pJBYN8PaYu7Wx?g zq+ean;@TB;UmWIMaqHZ`&(f*unyv+ELjBq6WhV@1gC6MvhXZh3liS4Bs)ly*t;M0aL>$GUjg!ZkR-JUY$)i+Hru4BHvvbU%Z>x2Mh+ZB*Fjj zeMJ_9%gcghZguu4F8s*uJSjV)5VvVxIS%OT^%b=BS-zRtXfDhJ@x&`I?KLOfbS5end(h}i2 z3`J)8Rfo+M%6AhC8EVyx)X|bDto-)}VNS2zc}K-k=@Cn2M0M3bg8bfG;ekt&)ZO1J zPN@hzNvGjBy||yFb7s=cG+VB~DFdGA6FnRv46Z3$15$X-7&770Ua@At^ig8!9pmdY zr;IF#Au1oUHbFdiwT3#*-_@ZsI#sUD|EdpYi5QXb0RK1$JRoYNPnb7qHk7d!G9R8N zrEeataW3WNfM->@~SdRp2uoarLbOFnI5YuE8_o zW8&qS_=@WEESXz&c^+99n8N<+9>99vrbRxL@6lmlt!z|f)bJ)yE5sO~7)JfHtbz0) zE%H79jmH_EuW{`pku5$AG{Om{M#Z_A2?S6{ie)f+el2oQC4&jw^B1K}NB2wT5X$}yeZ(Eb9F3G5*(6R&_pTwqoYNsa2mJcZDY z!*mbOlj6h0@Z92 z_RBlvw&Jxtf(&;7RK7Rk9Q5)BTzABUKGCR($`2AF;p3`)(n4r2&LYE76gU{+J7Qe{ zl&yC5iJ)QvbxG1I%(jEF?Mxhn29zBh0pDE5l<=qN)U`BJy7Jzf4s)eXb%Fj(#SKlH(3VnVZR1<5D+t879a*~B`842Ml1OV@x1YZx3y zX(7W~P?4utJTb-^)4fIEJ3F$5o-70!0`h?v09JZt$|A+H%3b&Y&$(G8=F%ECaFoq= za4Twnj!Ke)=hYBU-*2uUlihOdQ;>UqlXaYtAeNBVv*-~YfsX{>#=*Cd$poV$L*lPf57Ks2U8T2z+S))*%fJ6u>0E=cTwc`1mLn+_BF2v4tKg%u2`yku#_cxrQT|!B%Wv~ida%Z z?yE?b=D=@xWQhK_5~<}~Ac~1nGfYu<(P4q1E`NA1zeA`L* zFF*FONKb4WyXH5c)X!RCTGBF2JkvQ(d$Np}Q$ue5blqR|;#b(Tl}-&f zhk4@oZM9G*xyfw(0Kd&1j3aSIo;OVHT(~Nz#}$9bR_eTw+dC2a{bM15Rmm{q&ihr( z=4YqaPjvt;E)01nvxi2<9Dh3e@SJ>f!ihQv!H>O`oMCoU)XPn1>?wf4Emd>S4bl~Q ztM>5g)eY0ZRw6VsB2m-#_NTM3>g$B)HuD+{o7g`)A8F*@v5K`~K>r{w1CLEiSZ_-p z09}V0c&yy^lJg~TAk&gZsjl=<>#EAq+jZKBdC+pQunqX*)AbloOYnveRHXv71{!b9xaJnDzMwpkjAc-!R_~ zC^BYM#mEnxyaq<6X5$QUpX*)05iy}CX_rSknUJSF<*R6%2AQrtHJ5}4toZ7eQY_a* zMPFjy<9+36AVw-sR}M24DhKXqHiq>dzJiv!)yVYvi2he{@HnxH)HAGCbjgj#dN)_p zhhq;ziUy=;)BwpCCStu&0!=Sw?|xDOSRikCX^`W4%T$a>-Y7tmv`&dok>0EUsc@g_ zL5yDuh+}(M3FoXSfUaTeDaYdoabXf<5VjWFu;Ch&IvD3+4J6 z)}A+&{b}&Ol*)ApQ&~5!Gn_r0jDnSK{u5M} zA#}BE_1({cW;3m16?s7TNBqHG15Tn4&y+gm+(44$HUISclP;dE=Wiy|&MyP^k^|G( z%jEbQvP_j%wU3u5f^f!n2Mc0%F?YRR{zp}W~{BBv-oVO0P3(s1x$#>(A(bX`*WVu?zM}0WGk%xgGkrO8+*-tzNAyvO~VZS z{~y7i3e9bsBMt$3ip_HXq)V(TZNDFruHR=B%y@9g@jIa8YzHNXN#f8-_eSI1-dc6H zkl0r39Le*Z}oZ&Na2_XP~XaExjKTsL8L_okTVo@lsVSt~A+T_F| zb?caGXFz%CQr)k)HbK@YYZ;fRcb0)$FiN(aeo#ITc1%vHQZ#b#BOk)N(%h=2n;3M#fO3nJz;mCM4S;5cp)L}ekf~i`1oBj%f%DG9R8mwtb3s}V zd*_|`$ihTSotD^CZ<|KzP>xb>Qj=TjY^pc-h}z6s`&GDg{ZOaxxBuc8hEsh`XcP-( zdc6icW7{(=yz1H0a z3Q5a6rRCO~(*E|9;R(rEgmGVQ_Q5-`MhMAnnCKjRHT$#rw)Os?XO~~k=BQwSUBBT{ z*cCiJ-qAc2!s%dIz=*&SqESMsT5XPCwBj0Gfi$_6xaIDvQC#zAAOx1)naugE7HT0X zxf&4GJHa{3lGY9OfOJI7G2O})LMeI4yn|4Xvn10T{p#Cyqi2CW*4C#?Ux?Fr=L%*v zta1EUodv!VxMk-vmfrQ;6EueJgT?qy=sJ28v<4lP_`v*%T`2cZZkgX?YK&d!Gd*lPr?1 zv0fiH^NlpqNGaFq3&OSPaT#lF*Rtqz+J z`D-F%oBxasDUiXTQ%=jb^Xhs{jfBW>t<@wsvNdG3O!erpAvmK5V37 z8t>s$CIsLDoj%Wb{EPTUt5tGxlT+xx%s~<6N9JB4kO6n8HasUcwvGRpGN6X}Q5sD< zh^+E=SzD(u+HM?P@^ELbN?#Rd3HvS_XBA8qVH3I*h?eh_yWGE6Q(gZ30h{p^j8%Lo zap1{#V8(!Ho=b_`yq4XbALQy7Q4(6Qn&h)~9`%WS-D`AAXUwtXNrfl2bM{6h5VmcE z!s5|qrsp>`uT<3skk7#y6?1`9^nZ+FpAOnQ5}8H#*iauULX^0;kk8rHcm@ zEmXaO zea!mOPVNJ))BPROL02^!grQbh+!Fs+ppW)zaZ(sr>+g;vA;R4>KD=&xnm01%mc$;` zCJxCGv4r-J`&EP;3LBaQ7=onGoL&VoVdMF5Usnk4_K6Q^8# zw+!5ELD)wy`+(KxC>iQJW!^nOtRMpF|0&~_Ibo57f!`!$Ig>c|yE~?Or03q7ZZi@) zGvMDJl;R}mPm()(oZinb7q^%3#Ay)l6v@md;w4iKc=OIkW<}#0GM~4Mgi+hQ&6uQ27OjqR)P-iID~51OR}m3XkKeBCOF2Wg=6Tx zy$U#=5ZKB3^TcD{mdT!*{9t~If4DF8|(NBnU+_&=zMNqW+VS-GIW2^4pt#2P*Qo4P~JRRLSW_B!< z$!Bh?umP&gP}XtxnYcfR_zRnXxy_O&^tKeE2%9Hs(!^QJsGcL=Uu;qN36i=-t7tHIQY15cQyl8T zl~UVNkf$$VRez#2>rw#dUM2B<1pVD0T|aO+3dqzyqRo19Q?}tX1%deOjvZqRufKk} zU`F)Qg_gtwdg%{YtPErZv&Y59AA*5{q;+{`)~vz=3CivN%58z}D6j3byVu_ujCWPT zg%nsra%6hJ6I4}%4c8S!i2(uAy_#54MAtuRBhP4A^(L72Us4#!`p=GbqtriAY$a!^ z^Ts--Hb0knvEzc|TkAUp4nO`ZKK@wE05SI7jt6s^TJ{pHl<68jsr$wOg*%-601lm2 z-2*&*JiufM>;{hlQaIh9HYy4vdZpNb(c9xf>|5rG$9EJEI7xDKvio4XmFUoJi_$Xq zATGi2oWWP|DK>M>mn!)WHN)EJ?XWuU6-r`bq!~%lcy9!6ye>@p%a~pcleChLvj`j< zprkq?lktIfsNCK7-*sgE0R?;KM)=sALE?4Q4zaZa|0Z?(qK4Hu-+n}Vm7DsWq@)R7 z9FfuboP=e(4kr;$f=H^8-%--Wj|)JGPJ2T;UE%l)K9eW0a(zLxp;@L+WPkQl-Jf8O zrI@JlS_pb8Z~?}8|9OKoC(lt}rx}MBeY2hF1w;WJct=H?<&4HS=g@&^r3rE^1W-hz zNN=#+D6(_IJCMk8u>+w0FioNRtSA!RH7^)HeehB^aX^vvfz~NKcw?9Ic$3KR3u_{h z&SHtikC}V$X4O0VO2qB?VOi%<=rLv-?%) z^p1td`gHRHGz@8!E2w?s9OU+{a|FU%c%Lj)6QF~uYRP`AD?UX{QFxyE_lKaf?^k=> zh9C>{bXCd0uvxERG@s~=t#&PIslY8~fEH_+UmNvIXJECemF`B+VM^^=c9FVp(mq8P z5iGGd_~ao@=kHY59o$LKgyWq(w^FD5BFzLs&HvzgK(s{H9Zng0q{Er%!$#JPJD0Pd?SO7#1s$&=2S~!Y4^fK7&nOYAHhHv{lraK}T)m)ImeIAyFEsoN zYj5nqm>(}EQIp*-Lu8Si8@U|7MPjyfE){m_{V+Y&Xj#kVB~j@>qvqYrEc0bHQ$W_K zX^GryRqCX$@$@8D25V(B3W8ov>P*wqbjr{hZq*2EDp8+q9|x3SJgPb{lPnZrX{!bF ze?Z5Wktf>;SrmkMIW~(?fMf25)g-7OwBkE=nU+9qXaXINQ~;fuO;b&10p*d=B}#{` zcIFLIL*BdU1zaGmDK)R5x%%()5jAYAmnW*6%_i$DQ(B&0_j+$rp(Za+s34!RFZTwk zAc(;pEdM>zowt_2EllEZ$=kY3C$OZ9cO%4LrOApWOSSQw-1aLeng``xkEecpbi^5~ z%8~DvV@Qwl)3Yn4H4o0dS391uR41dF;R}^L9W?&9clzC)=F7{RWHI==FH@N7d~y6R z-)YCDFO}K<^r|=ePh9+TsUyCRn)59xCC44|a%3%dRvvX(f^2lxTMGrmy2oYSTJSQ_ zxIFT?;FL6?F$W)gwOe!l?)NwR<8MstHaY3>K?deMG$nA&ce?Q9Tb0q|H)#5M^*)7v zY$sF=Q~pAPf6bFwkBnopu_+5hy_VpmUPL(fl^WU&Muu)pzN+Y^`)5n8d|&(KfS-iN zG@AvQz?6{h=VUeagA!7G9AsUb09b@n@1HKlLf8~qdQ>Is5IgO@cytbj`%a7 zlt7EPuPWAQ1VMA3^5$kC>clIh%#{i9$s=MWWU7CEct5S8Nv%I&K7&aSmy5N>jHpKI zvg>&Cou6wusDNPddM`Sx_>_xH5d&f`>?rXKW{s-tt{cj#7#Btry{YWp2a{b;Km)Ub z1xcd*?>X(Vl5kr4H97*c7BbNX`BF7bI@UeXNF{ydir0WS4`S+%S zE;c1K^Yy%B#3}HVRGWy-!$ji&8>T^%snH_(EJ#g|3618f#b3U3r|Fn6ZsVGeYN!eG zHl*~e+1yPd9jV0ibW2nX@#c*Vw&?8gtoR&ZiJ;@9gfwjI_F2?q^Iv$k4F|Kb-;I9G zjnCpw4Y!^3^t|yYDW~;>+<SG)dTjZJqY0K ztYR3EM$37^xCR+&8F2FV(tHQu8DQ_OYo${WW-zz}Me$1ej&M@s;c0L!evtQ$IVuu( z#noj_)lo(Q!e$#LMi4xBl)&nYKewD&(zrNcc@ZHBLZoPp+RR_<>B*03B+kmlTwY-i zGL4tY5lf%VjGGfZ_?GVivOoX*fn{s_+XRz;LgcwD6Fb|=RGXZawW(UGB+@#c<07E+ zPeIT7l z9;KIL{}q`7x}U_8TKr?kbQ4s>%7{z!MOCa}Fo4o256a zI+w^w-Rtu=*#MO=K^EU1BgkRyB)%#+K?YBM>H;&VVEN^teoNCS}Jzc?MVf#0G(lUEPTJ9KK2nnQa&mY5^TCtzOJ=ipSgz(!+wlJRr5T!qt)DKc3?40m)lX&%tw$F#_8Ae* zH2hT8#kFML9Xu{Nq>ZPDh`s|RHr4syxQJ5NCMZB+G`2KI`$A2?OxU+w8JGx{yMhdB zgGgWYlM|xdByGqgIaFtC-(Ktk3!(}VoM5?k8DkaL%9-c<=RQ5ys)D^rDrUmj)N8{~ z-J(0x8|mZc$CxSF^XpdOdG3L6eYPp;qQQKZyFAT~iJM<=Je4714Cq3dw*+*Id{91J z-Z5I>oqOKjYO%r+1X1S^?eQm!G z)0`Ab%%)o6GO7hQPV6Mv2Qam=j%lL*xZD|_WRWj@I-1pH$H-}sDXcPylXs_+)43R6 z;MsXk>5iAd%^^Tk)+xk;BU27}LvP%L*~UctZw#^l=tkr_L&?D{VKz{LuKO)=Bf(7t454hiQ)qX*N1s6!ML!qA_Q8-4~+6} zY?a;;#d70x$f7cZ%UDNgN+#}YfhbrIm;dvGVAmSBhq%z+55TIsKAA`JvU0(Q{o!yq4^bz>LMEHL3~FNlG< z+GFdaC3~b1nQBTMa+%K~>vSWD0KY2kqxt*OkMwD*q&p;+yKx+UGK1POkpWtrMAy7B z?LgA{ySFudtK@<|Z_fDMzs$WVLB?0;ty;1>dP%#t2^1vj3eNL3BnK3ptK&pg#~@CT9j?5vVuD#fedJ6IJ0zC5xx!Jq*u;-!;C5_wA?&n}A)U zS}LXR858sDP%&nB!*edJd);c_`TvF9=LF$7d?(LC zn)RX+{Pb7#vM6WYE?x$GKw)olA7n~dM21g;HK?|K$_&YzxWfmP%iLPdUnG(jq3sek0ZBPq{$80`s6XbxX|=B`kRG;?{yznQX)KdbQEDI8a?5L1>hYAk+hP zvjBJPC5XuWEQRH?>K#TrZdcP=PHi5c<28QlR{$m^6^#wgE|EKQKD8{wA}4_Q+|t?@jHXpp{~ajx9Y~qKk=j7eV+5L^v#f1cI-!zp`lRL*R%irP&+le zUYgn)<_u+8##a|*NUN0wVACJ=TSQegN`$ni9k1mfhJigcL8g&>$zVI&t=^+u=hTh5U@7iu9NW5p(B zGgZyei_0?LjBm+WQ|AY>2mbfYlc(Co8QX-k5T2*r*!5KAP}wW&D4a`#&?=0uR<|Hf z&m{3VCQsqkb94{0YwByP!*uZ75=0AnvjkNpv9^}iBpAl{(?5XI{cddjBPAb4(hC21 zVOpirtuPLY&OlJwA%By9N6dhVVgDvB7OE3v-Z*b+3r{;j6)0IUDYL4I!5ZqZfHZyda`s=AkE z$(xQ%2nSAW*Sd&WUVfd%iqO=ynhMA4MfMfUi@GH7ERM zTn2sVr7RMRFt)43)*+9*+}^LI(j3v2FK1$P@C(Gf7(A zyaY10mRid}qV^>=ub#T028hu3v_Ycxm;EyHRpKUa7xvB^9$vjp-L}t4q*g)h&$gN! z>2F-tf6x9@uR1C@ICmQp|JM$2cFx}*>p|3nzZpnrv@B!FG`^md2LRBZ3QS$*M}NQU zC<1fM={%(UQ40Kux^M$}nLc1y)j3REm_ha8-x;fXjMGbE&0Bi8G3tT?rs*pWU%>2p z$nF~!9yFOFx+=dP>e8Skzvube-P24O-jtTKRbRtNLxT=7=}kfVV6Vimk0{Sn!$+1H z9TEA{;YLVz0X-Gcgf>x*a-oDf2!;Z6Ewd;}^-v%ETo8br6}&I5W7&I80+Hg2SAj`g z6Q=R@IpWYm9fpC4G|L14JTww@5z`f461$z}S%C&l;DKu497eCh$&z!Y)YZuak4#vnaqrr1zMm5udL}}X#X4gdN zUT8$sFR=S|X_!Tm-AIg!E5K z+XS5lFV|g5pVyQUy?5LL%J%%AW~x8|@gtPx{RwmQO^R~|L~D{)#h`GH;P(~YNFlmNQ6Qt}mtQgzc1%~k;UT<6PuE%MD|_uEPL&;9Aw zYZOR1DBB$?4k-iPt{X+rB1i#0-_h09Rq zOlTygRGxmgKmmKNy=&z_PD)GxM-8OSYv$8eitqEY(+j=W+V zM<~f!{6bdPa6RM0eESXqtXk;6a#nqLb;hSaP{;nvA5$h9t~M)RxkuI6)6tU!DuWj_ zBsMj&C8%SuX&Yv}D5g_ky39S#c>IgcN!E;uUK6-@4c$$AF4&=BG_u}2t*Q->Cj5*J zLRr|N_s}F|U|nP^9>NK{muAye=`&*_*Ims__{4n`P%bwIJd}!pcJ?7$QejxQ&sq%A(k^6U!Xhux*N6<(HnM<$nrV&{f$l{=o8SRy%+bUitH)s$^am z1lTz6*)9=M^P^eA2X-AkNd#ayK$OIGoa%O9h-&jKcBPhy&v+Z0*28~uTV7F{DV4ti z9U7vK8Ikp#MRuXgD|Zpc(nOgm1CZc%mnW2jEmD7Ia1gh8S-grqjFp#MZqp&<+z z7@Zy?|9dffk$3~5Hd~A~M`)AunjW@UT zNz~iQIf5;xHp6!jbPVk!iuu1Ry@pf6c}iGC#HG_3nnJb}jvNS!0t+^hT+7}*EyJxM zFl09px3EHLv1(`MecNm0c0Sjo^@VYnyqYU9YaE^YRq`Yb-b&mNUH&H?CxH9%@W&W{l^lxnCZ$5k_ie z4uL+U)~8;Z#c(DiJA=mKnmcB`qLJV~lwm|-kWeCqfoFjukNTU2XvMs|TO2tQ5+luO zTD+I|b$xti(0H_b*LbMhuIDQxH+Q_R-5?xVPX-o+uXToNbDCzwo)6x4=Y+cB zSLamy`HLQJ)0Vz=IP_c^U0iy;`^L$J;HL@`6P%;8Ahch=V$^L-;K`zQWGyP&93HJT z^2^IarH;*eR)&q0Hs!mLZUk1kh4gb@jTl|Yh71$)jkJ}Yo4g6}g;7b`buUHHtl)Py zn0*As{$>|^NN+(?W*r1pZg?ECQ{pntCYhSjnyc)LHR9<`cY9&{zv-;qdp_?=TprEB zh+{h-2eG-4(A&`9zac04A2dr8^DsgUE~->JcHPPL_Ye|jhXp^KxI}!TPA28oEr(MG=DcQU9%G;t3!+?UYkC)$f zc)e9>uQrX}ZzaQH2C3wH$Jf3){&}8?*tlF?i7@I-B`|Yo@zB(zL26$h1U4A-ad*R%T@+OBf zt>dNrr*p5Tlst-pV0i1s)@vlyw#Rn{j}Kd=WyDiSXo8J{_!4TT_^KJ>=Yh%2larK% zH->fjY%UDQkH9n!kR_)Z=u{ftciFIsr15`>bYMJs(tK z=WWHVeu_YbNZcxz;zhTtyyme7cP+zpzrzZUA%4C-}cO?a3<@sWmVUib>%VR7s7@e zc6Up+2a3WSHx@VEKPQl23nWjJ7^^^;7jfQ%JDc&m2!itQ;VEhugpCVzGzsz7taWML zs5gndqMw8wLGEf@X8fj@_D{&QTr{EBh1(%NV>Tl@l1dPZ-kKbWVp+R@vW#+hXEZ8D zAt5ih(25o~8g>Xjgc&50-yr8{UM*FVU^oJzH7`tKXy3})Cm{+&az0L-MeKxLYw>%(#| zoP*bI-GGAg#;)n&L}bu~f7@4aWkAfX2Pu8LQ4GD(?3y*>3VVPmQZ6|I5kw!5WY%Tt zq^>jF);Ykwo|v`cnkz7cTEh{<$`9XZ5h#fO6&*@r^d?8?F$A}BUdI>`M$^)VQ5t$1 z#TzYe2bGb~cS=F;q_>vC>XrU&69-JM{#@fH{(0PVF({6#5+u%RFEl$cboE&V+-ah0 z#~`FM(adbMYeFoXqHta67p+k?Vim)jLWi|RC%v^8PiobuELzsWMllnbqRGNXwzRdL&1}9R;k|P6btDrhXPgTvcK&A zioV3ZYB4U_+TL&OLi@+QNoz9UIwi1=F|m^AJ=RHxEiLa7xEDgGpBp>a;6)*Qd10KnOr>I0~tVF1)Fyor{Ix8i|UD5d+$1*D<3Yd&@FlV6*tChe+nkCqY=% zN_rcRuvyw3(2hjN_DhqP+O1N%WpeC^nRC@J8ExFR!*$V;S}3t-pcpDZKawrxzwBA4 z;NPdrbZCupK3MdbPk%)xgv7iiLKrXO%}(X&rhf5Use0dr#&N<%S(p;P55N4ms(NnO znJ#k4USs}K-Xtym1Xu|M#C<&qyzvMy-{YYKYt^|{jfAy`-pQC)eSAo?~W?TCX*%0XjB{2l7bbS>7LGVs|Z=E(|#XO)A;#BldZS>ROm3sqKm1h zd=uf=dK5BpKBL~a>nRk6h6{6^Y2do8s>oa>`|1pwZ+t=t{rOT`zXUezlfte~vV|GD~ zVn$E~Pf_RM z$*ZLJ6|KQ_1#{PD#tB*6ci$xl-C|2;@!vMNk8m#@LRI^7uFt$(za#T4R37DCDmJ_l zUMh2J_DLO0D%2L8Q>t7SznWiEN^4cYXb4M(*|K>qGiw=!bIXB$fUqc(LXaP!UFl^p z2fgK3`7v5jPl2%cTc-g*jl{lx5cxL5d-c+Sg-vIiMCH7O#bRE&``9sZ2_735jrkQf zw@|0B4s|EH(^E-zH<|#iC3B3U_-a>)vwA|})EvL_j&Wz0YKP7%NTTc52?4y{b7vi? zgO2pi`0Y<-VcjGNw!(O!E$VDWnu!uPXGumgoi+K^^$;gDh9$FE4AuOW6fF*~2Zr#n zK26*q0^Em0yVHl#gj4Sf9-B|8nb*y3A=X2SgSJC$)Jp6e9qJ@yA-&@|Gs-;G(B%ES zhNkZAOF(aTR+8CuN9yUV6p8II&elmI-}aLyXp8Ed_C8c8leOTh|?=NE6l{F&5>e{-nmxIi$Gc%%O_R&RJoR2o_-7?s=leBJ!Z{V?M{GD8-s)my0x zNQ!Nu_bcyT=uw$lHW8AG&n-&aTTcT`%mSz0QA0TCzK;nX`Bi6`}Dlu z;+7~0tX^&nuAjAsj*3hEfJ`1mnq(zCE@~i#yU%$l4MdnNB*50)cCpNQk#_6wP9UT=8 zQv4g(_=5V77Hjam_VCV$lJru?*A#muAj*|9`m`|;UlUMvzr11+%*KBhgS?IXSbIrF zuVt%fOloi6@|m9LTh##kbtg@}5}*|W3Ma4azYk_z8SEM^vOR)db>rk!7^RYLE`6>7 zqpGy)V{F2<#S190B%#>Xbx*=H_!5h}RH(5xGXJ-(OG2|2SJ}20lq7YWj!TEz?ntJg z;3_G%gqWjW@bvhfN_4IS?G(sJgmdgzW}Qp<@H%+0N1rL?1L2N)G3vhXFJ|j#EsruH z3-*qTN0YRxxV=JRCn<4@N01kMsUaP0Is;kze6I=Q6VwtI*uF63z~oX@sPrW30gU2O zHCmWb@$MglAc@{fWh380imh)r8z09x6R_|vv7d)fTva1GqbVM+nO37aI!nce0%|*t z{0z$ba+|&+NqFoy-)Ho;T~B8>qq=zhg0m4dKy?F@*yQ)o`HX{=pw|Xn4t0uXgQVqiUmw{3Zfm8!6K#l>jSPx#Mg|^k%f&oGKa;CB30H z1CZc!nw`HF2D3hLe#bhtYARTDFPg2l`~w{&J4GGnlta4#{xYbPj6U1x42Iv!Y)I_- zP8Oz8P3J1U{|M=hn=byyU9sXycDdk2Cr{v(usVIjzY;RyZ{0AG`G>s&|7TpH zalJeqQ*{9Ma#{gCv{5xWP2oy-ge&=1*H@|y(de%aCV1(nQzN~CZH*s;S~k6fp4)@< z*W%5N{3Nw*NPmx80{OOyA-OR;Z288xT))_>{C|qeIoYek2h_bSy^s2o-#>^3uj6lm zv{y%m;Pt(snD>DwPy?_dIpKog_T%|Nvu8_V6Mox7(km;Exu1tK7PZ)vxtw_?(}MX+KIPo zh5l~>v-vASzzAIQfH&@*2pIN45l!LHZFYC@tEe|gt+yD7Q$PLpjki^2c%;~mYg{~l zvI%h1R?3rSfZOn&kJQi9J3>Cd z4T#R3a!6DC)7C_i0Q3KuYZDY{!X?kYY%N#sp|)T zk$T^If&2mjx#~qk-sH6yuf2FA+Xn4o>HK>yqt020t~|=_)f%+77@*PSi#;=%2%o_p zG$#`B&!WQkZM6UND_Bx4J!21#a#CB^teoB9YdtbRG|h$Wjx&B7^e_<`{nP zrlnHMd8OSmb%+WXO?qL|Eik>-$m^ zvvLGU#4=?h|ApG1 z!3j*1%N9F>zy3LO^I5S|`=rkW#=U^trU~U6FAh>Uhgq$IPf? zyncVEoJw7&wi{-yZeZh+vUT)d8hG=*vW3j6w&u#SNbr>%S{gZ1;F$JB2egB++Mz=z z$1lX&x=F$PHbEEqsJ0M?nZ!Cunc95Yah+_S-c*y?nA*djWE4cs=`;WP=Jm;hv-w!L z>-!%;rq~|+@smKgT}2lFD5$9vJE0YQV|-A6DX};S4&EqMobZ(vaU&*ME5EA=od<x? z1ZLCBI91Q8V8V%G;m38fsmid#ZBxS*!UZW=79VOOR&0q*klU&!X#Kfb3hjO__Pp6o zsFfp4des`PIW{oS{*-@X#dOjCR`{sV*Uy*<(CF)CC&}~eQzQ$8-DSwz9DxvxI2Mvj z|7>DwVwNDN0&`_-lRI;v=?^*#gg|tS8RmfYRm8ohJ$IiEwe21m;X=p_hPV3j@DB(dO5;%eKx?ogWrgPU`da z9u!*7qw_*TCK!49DRymj#~9wi2UvHbmx#g% z?Xqnw-KbSLb!C(6MAPDvqVVhDgw689huk4dor+|C_jKUfebdwQ6SsJM`3dgs+&J`qz|=bErVh6!Zu| z0*oP%_*DfswiE1073!_?4iWei?G03`gs2E580r33=_IC}#R4;8{d7VhI|XA+mY3HD z#drI`nFd8R4R&$C5wKdb^b>x`Rs)!;+!V-Tj&ap5>>7L_MYY^F%l>_23bawzE(v?z zn@spEj>9nr%WEUo-c8uL%dhUTfu^K^b~##w-hV^4v~7(J%6hx`eRO^-S{$TaGr~RW zOYy~9qdw&vj)=qezAI?nToow#(xbWcP*Z$3^3^+rSe&-j#nrd5jrjnC;2C)v)c(7L z5>nJ46k8wtrFCc^rM>ZsQtb>>^;=o29OToF5|ve;w#cw_|6{Aknv;kJT`^uq^*5`d7+{L z=;(^+(K=MI>t=t_Txp*2-(ijum0?W|rm<2cYGIv0u3~CiSdvL2jA=B_4-a^n!5S)Z z3zxYJM(Dmjl#YXI_PJ3eIZye|+Y$yn4CO%0_4}#FURO`*Weu~)w|*&k;uKAIP)LN# z>2$>b`{y%SGl7zAB?TL`Dj)P04d2b^jUvu99DrgQv+UKhJyGmXicR7O$VqTa9b5Ux?>GYpx^uP3xDrzAPMh|o<-irI8Z#kk{UQOYKYExf_P&|8dhMgxy zwIJD`OR6q(*fdek7GIy?Y1SB1JUd=doP!^#9S$ACI^JDFdkq*I%6(jcMnti;m=8Zz zmwqJWs!)$@x7G+q;S~lSf4PThj$dwjfdAWYD5+?13yLnr2Dyv|swNdzmfHV=3ecr1!8ib+zFl{hCI=jy2$W#eR=k_Y}xUFdh|``%JBi=aMXL~PeBjx?o*R@fXG@S z@!fFWqE&MRO&3lf%8j+@_|G9}Qdlb%e!n!_JOhrjBs#^!TID3& zxuGl(4|E7ay?dX}wUJ^Y1e~cXiITv@N%sQwQ=nOw&}Oe)HV43t@kHf>HouExs@^$_ zAe}NI&{w5?OXpbLno+an~u&=S&9xcw&@PlX6DF4`t$2fVw)Qvtg4r)IzqOo@p3$byX;)aF z%)<{+0RPE+%}k~kZ2z@ES6r3aFFk&z=w8c3qM(X6EyV@9_;r#@vrIKg@OvN?1s7tv zKc64G?(#>dFJpF>&_T!e(^SLtdz<aG01T7&t zbfM|ea>2pLAcN0#LVk1$+7Uxt1ToSc+SHGizJI_U=~X>_Rp`eV+`ipo7;7AUiI2Q` zu=z|EGyb9V=FqEgebCtcEWEMEd1;GznTK0MoNnpbzSVwo;*Zm-(`|NWzF{iuQ9Jn>Jiz#MVsaOg1AQ^ z5@WBwmDZrAbH?Qck+DOHoBO(XODbuV*Zc5CaPIY~AjeE_Kyype6I^~FCS2h^?uSqTPmfC(m%;M^)z068&A@*2(*)&Gu(k4a5RW5A(Ar~ZBRY2#$+?ZCQ##}hp zuyanAZZ3}azZ`(Q^jUM}ohG+)BdC>vC{2YXyEYV#BK=g-n|tV3Y*IT$zu4tX>SMqf z6Y?X4pS_$Q1@~4YPw-P?6P}?cX<&Q+oaj#9YAmJg+N=u|eQE!~PXdqH4hBS8C3S@0|xe)l!qw<|w1`kUEGHTH;28o=! z$eK`&ogl*Rw%`aWM~N=c-Zwf@Zk5(tb?s{3BkdZAYN>%h67_q3NEvjiA1WEpt!UCH z^#{t_MA++-!Z?}TYibE?SiNm(NaY|u_E#v`@}Z`WEAaQWxaJv{hz>s$FreBt2?c(i zDjVD9ThK2 zLnd`Cm#Nnd1qg)<4L&=+nCF*jrHM=~AL_}|w}y4dk-?t-zFA?RdJl8llDdbMy1hZsHiXXT?51kYJ~=&D=tT{1~jJQUz&sPEQKeLjk)Pb!ho6P z92;CTdmawRGiKp8f%FN~F{If=hd({hK?DcSn1eA}{~@=3$5? zKs^BWd^cF?gq)(2S{m@i%`b;32Q=efu~LNj*?Qm-ytdDdx+&LgdqpI+>gN-ED+GGBuDP@bV4w2 zWCx5=x)dZ!O)B&t2^oNo#{Dk7!jI;s?NLjjrNH2|c+SwE_Dl!k=pR^6SBpD-z0a9{F}?Yyrws1 z@K2K%3I$3xRmKiza=@F68X*U|<_S5x_7OU=ye!D4n6sH=O^QtZB0qleaqi=o_KZYP zpE2Akf;{y9V?kP;RYbgPLw;0)zUxRp4Qrt}f%zF%wntJ~D>vS{X6fIuGw+_dg5!tk zhfGDY#4(0%ESevh6+m_iZN(`m_LOQsD2`&*#GBhN_%U{n9;&cCsrMPG{kib=`2Tgb zhFr3A(bDQ4o$%r^c8TjtFX;`3dSE5>&3eN0*SDG{w=1p&S;JBZx#G2l6lYX@7Zdf= zv!S4tD|SnmEjH{j@-D_#n@V&qfvXIy!!+3u5 zoW}>!_gB-oz9qDkg`7cRo^B0oS%e%% zLPo!CxuCY(QS!WJXog=GN?kM@Iyu8mQaSLTc{_!)Rruh3HTIv()mKQp*?MYn;}d># zyi*%OL$xS3M6a4uZ#FIu!QsD!ysoA9!tR9~{7DSD+8Rmm%UvE=54U(Y*JE7pQy?~c zKgD|M00%B`aMO8-1a@PD{!YVP3(w(66f`%XZC%odXi=x}PPU6)ggazli zHLA@??INv@)NYh%sVb#h3`hgW+nQW3L|6n@p1uTK2qX7NwO=;lL(yE!!fuFnbh$f+ zr}95>1_Xp3r2IamtB=A~etZZ5Qk16R(*1rN25JA=1sM&9B0exzC$;x*{w6V*G77bs z+wh&rOoCHviJs8+FyvM|t-l-53idANnqRMFeaWh)%h3(D9*xdk+sgd9dhY99Dx+7= zi_)d7@6^)n^owIuE-kzw4I3sCasjUo#blp0>=q^6ES2qqs=fdSsEv{Pm*5HF zm|VRF`f&(q&uvX{RmSvcih&e=Q=ozZ5_F-N*kU6?_T9xEv4%r(Q|t^a-oF)nRT8Uo zwHY?GgBwPupN`>ETVr*|psOJ_hF#AxfXuMoA|WFDj0L#U?OMdrH_!*uV3IO2`P+LC zWh}RqpVWv#F6neKTt!7AX$?&w#}$Wb?_J&y6CtPxtJ70-T{#iydugu(L1Po1%9Y%_q;xAQ8$q%B%)x=NAypyBpzW6Z`d+IT*iH4@B$P6@6-Pdg+jPNUC4 z8XI5`o>gBlAr5mofVwEh2NTwVu$E1regy!XC*<^tpZ$der2*N&Ch3llO=KcdPkY?< ze@``4N>2&OHXT6lB4`Ymb!l{p&I5fGsK2MMn^P%X2o*NO5UzPYt-F!ehXmP-$ zlp3N%nkmFi*Tv-Uvf-jJ&%=o=i^q-^PG{8;wW}Qy=g_X=?0pLYw7G;D;bdv`S=NPV zrQdHlW~WR~9i4?>1ax})aEDDc-ZZ1W8e3nnJqB;d%262!u%VbIEDqE9xbt_T)jtl) zzV9=HlNTcZq)@O)IE_hsvnBf(@H%FD3eb)QYI|kpnurCZIzfwo=+80E_JoZQ*T-jpb3v|Ixh6M zp~i5M>5LPVhs1CZ7FtLG=0Eg$@k)rsq$$_ zq?9}#O#uJliE^^nuW7F*1r)brBs2(Yqy;U5R7^@e8;Mhy!j}duho9B#@j^P>ZyOwR z#@$Gt12Q$lhqU`ru$Wa{#Nxlz>flu^pL_+9lmis=o$F(9Pz*>$-5E~keGtfY|8pz5 zT5Sw*p#uK>AR=scnX;LX-S&G?djh}iK#bK( zQ**_JYooL$B4TL7`tB}0n<#pr#`BrUbtlxDF895X?Wy=!jA7tL@=YF3az?Ie68CH; zenRCyv^e?%3+bc?soA9VSb~mQw zsk_4Jf~RzF33%SkFjI%L8ylFG`L8bs_~G^0xUE|!Dw`t! z3O9>mg;HR{zyY?@m^yAGN1JW~K-rr=4t8-?h_D6`E(o1nqfqGyT1?jM!BG|MuGfe5 z`+b!P4|B`^zL{L?Mor!$L+u<#rfc?-TBlG=_?}gdY!l?QbkCNx%0__x0yYRDK zzi|9u8O3`Vof7TaA9>^onlG8 zht{ABgp0_uCWE$8!2zJAmPtr`3ud<{H+qTukL$zoWGAH*yMJ*L^Ih!_?M1aIX|Noy zB4qEytnLh&gp4o#5T|cB8DS*WdFAeu?3RK@jEy5{@ZWk$q9}_S2w37cJf?0DAR=N5 zsePVID+pgJUZ2{-;mRJ2qqiq{x6soUV1(+fHSa4JrO zJW`(#(V=qYdfunKyZ1?P61OBQ$i1I?%uN(CQxh^egC5p*n9J=9Hu=BA`uz1Y`N_k9sl_H(JA zCWO_FtWO=u$e{RGq|gC9vb9rK6C>y^8s`t|gBu=8u56p(jC@>kWwSh^$H>mWcCrIh zZVB0p2^G3@d1O3Wpgh+0{_L_?M!V(4n$vZ*fWZ8Ct)dwsacw zHC)&I)9rz~hV4t3_J>ddqC>XVBk;~-B;W4v+}gA~V@u>myqKc;$H|TFXdQ1KIaA!b z%0<4x)eR=QHTenp1M=&)7^;m8D8W&2bmAM8{U~}$9U9rWKx?37muDL#yUD3Nstv)F z_+8Hi?%>yxT1GxcZ<~r7#A#6)`@@hP!vH`dtm(U?_B-$%B`*tDJeJynfazPTw0Kt| z_%p$d^B2s`HlPxU(lG7GQ#pcySDM1DaR>u{kvMEB?r(HmXdzStK#YQ8f`q9Zlx;2I ziYW_-DSMe4SvIKpqBgZ7qH+~pyi~nYZTCutbVh||m|n4uF?z+?Qj+y)EawBl0J&Jl zhqe{zphLrl77>KJ0{vpLnc#e5M<{rUd7wS2?}Rf)$bS}G)9hJFOrfppXoynTKN!+3 z#}Y_ehf8B2e2qB2Rvv@NkDRqcD-!0PK9ZrmvPJ7#ea46#?Addnc=z`DUt;(Nx*9Ss z*G%g(S#g)Qm&1L2bq(GvE`(DWbttMKHP%t3Zd>uvb1Ve(i1m(~qT;Y!>#JgD`u5MZ zrTmw)zMAJkzRKi8f{#a~(xT&4Oco;qf!mGc2F4t89Ki*1%Z^M4%e zJ*$)~qht*QVq~XcAg)TdKQ;zw-}F2ia*e{mLPHf)8&h>#kY{G4E1udM8_Q!mlg;Da_i^r2BP%WEin2*Qwr+vziBI54@AcZrm!=P_xc zCF*rDLL5s77;4Af+!N*9`o+f|)2$ONJ0|%DV^Dq0U0Y3`I|b%j9*AcO7MKuvGaaErLnmJRDb`Qx-Ia$nFc7uNizmdrp+@GlodBF zojOIPP3MVg>_6^r!xO%}Kv@W+xmC)_dlot4CRHTUNCD`X{8H*3K&G1jnET&~dgAN5 z(NU~mXWSuUL0RAMiicZi>-IEWFEWaKAMWeRZfu(H69h=e+g&7=Vtd#nI{K?asHX3S zjaT|rIzfr@bn5%t5LSf~KYPljTSc@N^(5?*>6c|>unF0XS*RraP1%tj`yAm?=brSg zWWG~=@giEosP~)?blkFdf@gFqf27&lUjx#J?{ygt%QjU!gq)ZmaCtz`fJr^`$`RFO zuNP%JF2(XhkmraW(Wi-ak-73_nnZQy{%zfPsC(EEU{-}rrhy%jIL?v>H@*T zgwR=C-sIOUNaz^Z3mSZ1kDkJ0IcQ4Bk)5$md4FBwKdE6$qv0azbCS^P3a5mO*r&*&x04jvjNVg67r(dzFKx7s(AJ(^YgI& z(R$DRROYN^!;3@u%Q(!74$It>tJnU~>#qN68h^8)Kqh)mGW$6O^=~>RK3`Jb1jV&! zAf2+kYRtTE7Z5T;g6+BbE`+jQcHDU0G1!GRT>t=_gh-EXc8OGNag6_8Ex4q?VlL*>&cv3~rv=CZCL)v!W$!V~qm>CL4hjNQM7LS1 z(syHOso5n=OYKToKl0U_I*R#v8gEDEm06a@C-IVI3HhGe#Z8l(NIt-@fata)b;>E$ zP3~HJzhgdrH5&f6*MzxUBMB5gOfE(JF_ z!T5q|>$cyEy2u$_kt&mj;<~9}AGPt2(idd`-D`mc@2o*AhV8I2WiAlcEUxkT6Eu{g z5twj#mE(qP9z)4jhi%0yKeWy%AYbW`nKP+1>d@wh=<#{99P+;1v2Se0!$Qvfba?a` zWf4kK@o=Bj)^{3)n4!uCxZK(0-4q1#;*vi{8~W7SOJ;sTs~tTa zbWCV(lQ!strTjo9lC{irK}dn1`0?Nv0-%=Kq%6^V+X*Aipf}p5*24Q(Afvp~?#(aU zAbzJcs%e?+nL+3q4_s6rIWddYuGr4vNzp>d2l2a&T~Vo^ysGcyr{d^VNYo<*Q-R8w;k@Wpj2d%jWOZiRS*C3=p9A zZK21x2(1D=#pu6vCUjudpJ?*|I;aLjjVMaG28D_F)Klg%!oX*1=8M08T~ax4|7m}x zbkb)W9n7r>y`WmRq>h>0!YR9fbyO|)U1xUx$zwaDGmuaG=?a`QaqDlu&QZjTZET+~ zJwA4Db+c2#mC%r@yS5qhLfDnHNi0|n50VZ@$fz>jb$AFjQTK-lyISJ%N~+G}`flg^ zh}?c}Oy_59+v3-ZFlI9k&oO^{9MxbpiVm(ZdZo6k`_kXk!66LcE%QkFt_Fy$c`>Bi z6gck*43!WSJUQhGRt|_1B-Oi7)KSri8$v#e8T~c{by%no2RY>OqA8x4`FN9Kf!U;@ zQFW@WD)5c#S-SM#IdPdSfG8Mcj>EMNj0(Neqi|YRbTc5&beUkV9u- z-=WOAGsw3I(H2MZCJH819;|pB!c9+;J+0&KW!2U({qTi^+yaKET||--!ZytlR@bZpDMy#)INH zX@fHpeqCJ{gNUfVeG-(qV>bcui4|^%B6b==?*`xtg72cmph&HxI76<)IhlV4UTN~Q zYjq+_77@4lAJmhy>HRPKv7DA%{XyK&+x3wOTc@C(ES2aAlTrP5-9s;iB(29wDOA*oI1}ik}dU{`7n||N#RfFFSjuzCwQ?=zv?SmUijXAlHltR+u&jnvn>lcoAo10xEy@$?j z^zCSGYl!nD$iOdkPFx%e1C$)+AEHH7)@uvCVt$RibK^h>Fs$#|3+~%_vz!m!m`)vN z=DnmW!-Xoafnw-bAETlD)E&$F-5uA)@oV_9d5qFyG1ugfc2q7CkeuEaX22>ryOL}$ z(iY~3$oI-aA)6_9qHaenU!X>BI?(_z5~v!%Q!uCJNw5lsd4r(ADNuEtO~ke}Bd`@L z{?Oi7eL}9g$EA$#?}>wb;yx&dQ&i?A{w_QTPmZHN66>qf`5G-9ouSHxrdIpA2~-i1 zGe&`^@~(9Wj_jc0%xioqOBGln6thw^&35sM?IqSAb3JfF5HW~}PABNI>S^>=HPvdV zCTF-VPFj6B#PQFz%&xJ+&D`&szMI1GxA*vyvY))DTanLGVHO2er9+ z?3JBjbNoM+LhFOs`sCe52c{nW_swV!_hOt5pHhgQ8r|-VEzj<0-|!@U{~$@R%fDXc zyfI+W@55+&?3*073lzhnP6;pd1|xUwM052kR@Q|)JUWrra3)-WYV#>Rwoz zC2@a9=r$?RqP8Rur|IYK^skPO?4i;ZgbjVQtko@RYX4aCM$t!DnZPxEJP5wR2)f6f z%zbv8d-9*(Yx7yJYB5`0I!5ZZC$$P0HD8@ki)(xyT_2T)5s^h`&z4yCmcQMuYSU*z zN#p_n+785(x^bUW6n{M8FGZ6l%B1*n zP}ug?d>cV+{>Fs0Vw>U^ap$)2i)Ry?Ukp3_Uqh-~ur|1cp?lm-Ox9$ac9{F>B*i0( zTVt?u{bW<|`F#>JZN$6JtNSxy?NeT_7JqilXo(W7u^9VaAQ6h9HTXU<=3}0UO8o)V zGz26$aayf8d+5J!x?O!{WaKJ(0Wki4%ogg$K;{IsGzgy)w9FnD$;CZjj5pslu6ega zX|7>Ny=tvyH#rEH7euz6-2DxC6M2G2uBWc6f!-RW$umz_t#r8=rAA}Yk55GBxxDxP zV;mF-@g&a~XL`1_g+yB^gllSmMspp{C;@%4o5wAq))D|?za=STUh|CwOneCqKN{pQ zsRWM=e~6d%eEhjDN&*7B3OHa8~gs!yLa!&yT54QOD1qw{Hvu&8rpPau9KK)YSd?C>TMFWt7`rM&m>Qmx0OO zkZi5z-+bvhShDdll`8rvsoH~fMbD#MUbmkvccKgBk+Z3So?obEZB`>tA*)bDnVIH@lhQ0y$z4@#(8{OEvwu*?7N{W5Pd$LF=4WnnT_Jqb#KIj~}a3Wzh^>f4+1=2JW0t@}%v+y{hs7&+uzMKMmyB41x z-e)%dT~zF)I_l`n|Nkcp1!L-}D{!ds$IwcuTV#h)Kf7|&Y=|nM!{I+z+>^2d?NS;{1HRF92$K%; z-0?dgGb^v(5TkNfxV`lVIg;uzhF z=xv@oG?T{8nPNSD(942*uGwALJ5}aj)j12d_%d`_C2HlL@EY9qs#UL&dT~C9&PT`T z$n=*K@6>m$2O=hx?k%pjbnOV0=7IyK1lm5k9eKm}92Am5TT_%eBMkmHlUYAGqq2bb zCU3Wk{e+9LNHR!W!|J&SwdaKKeew}Up-uwJJMGoPI2ysoiR%xq3yIpdOo^CM~p&UF(Ijr$=Y(7uUMC#5h z-WVn)Bs&Luq#Obxjw?47WQO!>DSf-LCYi~*Z-1T|x$y{BozdDxX?y%Lwy5<3yM5bc zITEHMRM0xyr^cduDHfPT7s-)36ZJlO7~=5WyW~})1?w`fnQ7f?1uYFIW=N$B-8`Q- zc9x{i(A+T9JZSjr5|THTWiZ5r$TmX-HbH0P1S2^|dv}qkaz4iGolB>saTC9c*FQYyu1ZJ@h6E z&&CWbI$`q}@QGr?;X5rg%cGUW){X6%Ya+bHPW?ZQ-aeiQ{rw;RybCofYI8e>P-cXN zhLf#d*mN{B90}>L=B6g2PPth+?uIdPf44Zc+;mczo0>vq%y7tZPL0HtiQY$=<+%CO zIp5!_PycxEkUy@yUa#wUJ)h6(x<*_0|4e}bU1!)}Zo0>8Hzmt&xTWl1MyI_#>n;XN zb8fJ-?y7D=1upK>c=l+_^;Ra&T{0rR6UbjknDL8v%XmM2!UVy2mCkVK`0t75iTApa zzQ{a7*U%>{qxy0_noe{tmUP*Hg%My3TXe%6(|2h*_R^tX21(G;vl|pl5&vq8l&pVpI zBAvcsuWeYuqKDZo%@*5??%V{0f5Igs#-$SwCsm0~Un2+RhyGT>ijK+i;#&jfOQMjU z{@?%XMZ8YD`AplBNbfIL%ROGJdLCU|3g|O5re96f5F@z37{739YGGty1(dS$J~(v9 zrVTknB0P5mI%Z4R2DjFq@%=}p#~LY?-@kZL3`Ft;y`QGGS^w{UlCEMkoxySH| zOImpo1p$bR7qs{-vd7+Udv6l#3{qWyK46{j9vB!*HI@N2_Gsmi^A>c$*nvGW*Rf*> zY!9cOeIs3LM_YQ-I%fmd#sa`76~NfXt3-L*4Y!{9m(p2hdtAXH>jfT|&vDzk+`E)s z3KqlpVqZL0PoWIbS)_FY9m*8dpW3l~%v?MARpV0<_lnE<$g1D*C%o^Te^z3W<8=nQ z*IZI;jJ1PVHo( zK3kXgkZkY&t$6bF3-lr1RwY`f`eHj8J14!bptb*{^Gik9r>z}Ciw+&z{pKUYR&|$CtA_l)ym`4MvVCJL4i*wT|WXr0( z+Ls+0RT6EvL5VZG(-`*!y7r}fVdbIL3;xuf5YSuSnW>xcJ($g7?s1jkko&*3_sLh( zf0eLSKPo463wmVn-(`=vc)ho4P;W@z4)6Lt`@gWXWJJlJJLLFE@!<%c+!>~r+ruTX~QV7xN?aX>E%@K_wPu7vkDztr8Zo-?{~;j!Zh@vVG+%8{)`u;ltH zGhlFnk-cAW_j|La>Ha0jk1yIU_x)49uEIxv1!KUDPzUFNA%6>Q)Z$SyW#%L6VoR?R zyNZt2fhIw9pf}>YKaPCts7*G@n`@eT)3ANv#Q@-p8&;bHg!)L^g@sRL=}Tt(^l#9_ zIAsQO!R}x>G63hWO#IOrY2ju4R$(RP#!;F zk$OwpPv;JVyJNi#sem-{MbqBqv+@hF_3Lg*2U%;=*03->Vc-s-(C=QsUKcmwrJ&wo zg?9$`{8-Q*pT0(Z2)FO8kX^|aJU{F;d@Rk&Y21$a`5%M1_>>DBxDWITGoF8J1IT0v z@CR}Tkm$%ED)pnllghnxR?%c)&VNJib$9mkFWH8>G`=x3T?L=-uNWy+4UK6~!Dpr8==Yp^CXWCU`7*xfa$? zhWN*rMnARXc|*iITTbdIk7X>Vr`+P5sN2D;VX7=+R?jZ|JNA|LwO}qzx|RQuWpE9w z6V-NGEOA=;w_q)x@llx!4AKEMCukb=fik=I*+*%=Mji!p=?G`f-jadR=(3bLuDE*t zU-7LisO}pc?VH1`dG=qAz~xawSa0nOV~d4buXJq0_?i%310B&=<%YHI_(+%+avL-ajSNi%VAg?k(sv{#5-|x#K3hROM~Upc!38 z=);$?*Q^!Sjl}K5`=ag_gWZPw1dYw}@HA?|Io#3scXBX70gs7|A7nHB z=JeJxrtxIOQ|lSp*wHsRYK=XuaI4O^F1Fo1Il-)ab4sY*vAP)TA z-N@$CnUr%j2OE8YypVKhntJnaCaa^wO#LJl?zfnso>oqQITJ8L<3Gs!I}h^xlI*`X zGl8({JoGCbWjw@ARae&^t#OC2I^RNeCbAYYD^~2+!n93a2i<0;rXtRf*KW8^TQilALuvAmFPbGV&cs`&EN0;z3=Is z=Fs*X*S!jtMt7LLnoRm9oX*z7dH1>yW_9CPcNpu}M?~PSWsiurt>26v&Qj2|6UZ{Z zLTbjdDgj{=W63}irb6Z#EK^b9Zz1!%r0c@7B0V{}0~*?9d|cXa=r`Z-e8zl+N)a<> zwozwxP|ZBTv7;f6NjS`_XaegJwO^~+Bmdu6 zc@et$)Nto`;t*qPIu%TS>u#r~e6T+Nu5jN_Bk%#==7XPxb`*aT8 zbE>TsjPuK`J8+6#Wm`G%Umxu9IGl^}nzggNU>LfC@_ELJD(720tJvoh($-|B&$mI5 zB1w2xdwpFhl2h&%8C!EUN%mUJ!^={y$sX>gE72`$o^ZovMlJ5`CrG?(3|sG>XExbb z01UHy7_SUIc8>G&>g+bm=AzQ2tkh3!teS6~J5c?)^w>ak^Xpwuu8hc+4vnXuR`}+( zjE)GroRON@U*Y~ukLD4^g-^FkO-I_!%L~&_>5N`aA&VotEml8iSWTP0_WV5-o#@D= zEydC=?zn!J%al>&x#Ic9q{kQxj&L3-aHm=CxI&7{9z#DtSILTmcIi{oBd>nE$(Z(z zCbu(z1$p163ZvkX~ZJmM)ZA^)zqC6oy!K3 z!5``_?1~~ssK?ffj#xyIgB~OW@Z4Pru`8)CZrIB6$TORatJ&+5?Qf@tU-!G`4t%Y; zmT)(Yhh9lLXXPTLL;kEv>_TQm_Lep5z9DpHjQnndgF*>F}^EEPAN(dN>T>8^!u`l+>pe`S73d++HN(p}n1HdsXSSFhX-^hSub!IK4rS zDsQrfHKFKwmwpp$_dF@ z_L%j|hy?|ifp#L6W!#tk(}NKPn&Ry|uj+)PUh}&zA@wLh@?GiUrRl_SRiRE@rmWj+ z#BWOO{NNEF!dI>vfRicS8l;-~rS zIU~Wv`JoL!)vo#$mpEYI2^0i=*dESRv>eK@If5d5%7jPd%kC3Ocu7I)ku=Wy*w~nz zf+3#RI&f{~9Q|E6F~TRjyzyk5k9ize!I;k{xwq)n_~bm%sLq>UsVQ5T9%#q%JpAPn zT|PIzBJy$24lrzT@)zfjwa5o@_jo$wc4ukB?#r5_egCW5GSJY2zsXWZc}+NWPpTCY z(+8uXYr4hN)s>8qCCHo$y78yC3v`-LMyxp#V|_)xG6{Q+;UxC^%H}nS=g6V1Ze;#k zD6EB!iyV0B29;ptHyH1@WCcC4xX@*}(Qg|Rcb{}h7+CaruJ~=yKF?I4LUvxKL}^}t z7rz4);=3C%1@7n$IHS_7BD~=oD$3OCFw?+O5&!$qdT_6Gzes-86um;sy!myOa|s?# z?ng-Hvqe*NsC^vi3>S7&~6UZcrJ6r797U^~Z+4P??y?Mv=uxi#05_$pY| zvd+M^LFS*IiY#IrD~k)0hI5`-3zgw8GfUYsGq8BhB^8<{_X1@b!UOyW03cY1gU2|A(%Rn6#+k~N@cA-{@L{2j4*jy{8 zbsmWyKP;gL@N9@d{>Cm znC$f~n_<|2M|jW#9lsZ;2>)}Sx5)RQD~yx=!&^vxZE|x>x6;bWdS>7?9m{rIoVJtU3DitN!Ox{M6%j&e(E5|E#|JwS_JrC1sc{J2{F6Ch(!y)6ovuo~-7c9HG??k#EThQD> z5ynW4#pH-R9Qlz2*PdyM14%>=-BTHs7RTne_)}eB6v~QUPr2Nuy^WJ%?RD~yon`cw z^6>mgmOeAs3NzuDjIkOrL1uP~XPw1kXl^Xg_k8WDl~v90#_o=0|6Q~v$8dfcGc78b zgZZOfH>+!u<|LZu5t#G8KCi6=pE4YU{zX1W+4Rm4RNx6tp4YZ5;f(_uOU_v%IloeE z;PyPoUnn`w5{~PHd0bNo6;W3`XU#G`YMBb1Q^<9yZHXV`a4K|zNNH7?EHpnDsl~KHd2Ix! z&G>wc#79rm8K_;1!UWkmi%a1|j^fOs=Fmn!J_nM0AP~T3n*$PMxE0L0B8t{kuQoL8 zbvZ-R?t4&ARKKyc?K$3f9eu*;^+4{4!|V;%w?q4+B*`kS&V$lh=Sl5pZcvXUa!7i4 zNmy;aMH&B6;nm`OU?;frtI3M&Nr(zDqd;oB9nnq`MyhZG7v0|6W^AJgnvB^mUOLIz zf{nhfo>#8o`~aX?A=24xI0866^>Q9~Gq>&BbU@rT?22M+p@!f^d^4VWTv4Ovg8`WP z$T$2*^*kgRo`kSg=@1c?@%K~$wMaMw~D>Z^Q$Az&*t*E5^Ckn~(V`S4s@6RI}>k~hTL z-)1$T2k+Dz7Wh~NS=~FGqsyV-Vf?%^^-F;i>*{(|6jZ@cIUnwe$}b!E4W+#h$(DA+ zmjl>H&vzvWvm*bgnzY4GpK}+DZ&}>?0@-%nKB7>_;tlkTZyjbAofdfE)P{!EvOoJ= za3%Ufee;VmdXrE$if-u0nh<6sE9pLA;O2^lWt7nm#gv>@x@=pREN81{-s03prMc;3 zvObYzWQBAUcUsY6{;AP>S8~dff=mdT^v`g23sIR4i860^E~=4~E?V9NS(HL)jCO)& zOkyASOf*%`Tp@zKLfFhWJOPi0i7FgtoRI;PWEc;&n#xrHRUR`xaet1ifc~YE;mB#r zp82_i86YPtVsnf_>JFHdc9gfMr`TC9Q>}Y!hHY$6zRV!&kf5M|+XTp41^-Nq*X-!I z&Zw?1bAv<=a{~(oOA}%x&Mvh$Smz3hO3;9z8V^hBwKA{C?{G_e!D@P>uOs@zp<~R~ z7Exh?6kC`_i|X8qT~R-DbdQc2%UUci7pbj<#elp-l$}C3r}fwjQdF_+xvFrRC|cC~ zX|+O0bnr|_y=ji(*a9L!C+aFO4e_zk#UyH;alJ;WLM<^CZHU<4(Bqmkqq#IV-SiYy z&OW*!`tL;V!@l;fh37&rH8eW;WZ$(%fn)?%zh)>rQuWRa+MF{wm*9Dg&icy^oJ~Pr zF+e_axRTrtr?WU!%=A3Xses(= zkoXKq8?vH@#xMbSXfI`JUTogB9>6YWJA`%hur-l5Et~PFuIxG|zWq9~HhnO<-kR&Z zD`r4a;dpGIm*rSB(2%vrh8b8ygRG2H)N8z&a4ODlYAD@tKG!l(6E{GdwhZ4J9^!aY zhYb5X@HgYxqWIt4^U6D82|QQqeSlA%8O=j~EOL(QD;Rj2D{@GZ6i*&6+Jy1XYpYN< zcuJ?90lGf=Y2O$Ytqi=q?M8i{#K4URM=ZLms&~L)lJSlA2=GBN^Jm~v1A0QdZEzb5 zn=@CEcZy=d=@5fFuRVbCPsp0=buPk`mf^~iq(8I(Wu`nRk7s-QQ7H`_-VA3oC|`fH~Or(q3-^vHFFtVWy`5+AEF zVQiwy6Ug?(=Dd}Jkf|l&Lxu>av5^wBN&Z~4gGGO7Y@M9Uk|lWCu^XK#3~R&*csCPE zhm0quN#5f5>bJ&@65c>9nc@nqA|nvex1l38q}xkVJ+6^_(S04@=alwFN=Yj0v7!)e zY?G9a8t^_60_?vZgoie1V*r*{af+kl?b|5tNd&FQy&&s`^&@iNT+_j{4=HVTZvy>Q zYq_~fWUpV4nCL^Im;b0IKb?2dB)^Ro6u{blj)xIX1#tNC^ zmE_~mk?lO8$x<{KwAXK%C%E~CIeSYzjErT(dta-xd>fr&*5dV5iM$lukRb7E!1`p* z!ieDUymdJ9RM`bpjh)e;`MYjev9x@%NI!61aN6&;-9si)h z`G(L;&6(O-BTh$O!(k?GjgiqeCI$Bx_R85)S6H7KeQ4J6 z!y?zcP6oTDkHg~))G$f_gc28^pKNf}Iflfjd{#LH?>1GgxDUNC7L`0fA>UB65zp`g zy+USacQqaF22?CYQD=#I}h;b!`)#A_uHq8o0`-5UyFjGt@E0?~F1lRAWHKbAGxNi@ zcExFv92-}9Ow#Z+C~@i9vE-E|3Ot~)_5coCTEPC0h!J1Q`GG`8|Mm}-;CFn`Mn;Ae z7W#t{A9IT4*tnXJL=#0)4_P2b=Y`m;p%S~9|KN=Q=00mMnGAC%O*UMH>^M&}y2opW zW56Q614@8)F6=hj6LVxd+iSq5+5W5$~em|qsJRH8!XSnSGYgHY2}KblGRlF zs&ZQxM13lfE)|%Nl{B1IXN5tPRpCcQ2#BjF7Wtop_^zvHAJ z-?WtdQXj!Y`Vqzg*!6FR6?XdaPRiv{MU#!2EL72iBKeF3$gTQ)3l@xF=Z)jb+kPx5 zAmr>FEcZ2la-)cn#zTk8D>b9Il*oW`-@Bog!2kk^z7mh4%a`Bu&w*fNP?gC#9mCI6R!l%)Q5ApRAS_1sB&(FQVDE2FR2 zqqhgLx)#A8DM^n>xFwXBds&kau)>M(7WiN{j6c=wF*33`f-xp0w>N>Z+n47YP+ZPc*t`Lpcm^CZf4qYSpQ~wn zu)0RiFVWk>+r;;fqI8h@Pe|-!R)}m#qT3E!#*=QxR-S%oxxJb8s0TD*7$p?`g+%J z91W~|Q-spqAvvovTBfvxlEvHGrV_H95kN&-xqHVK_6f}_ZHf0f8D>Xi=%nMPeBGa2 z9CI%KDm1dXXly@ ze69^pv^G!VV-97%#A!%_f`TrnQGYPE*t?>4;D`86(2M>8ubIy1;q0lFs|2QJbPiNc zlY-D|f_<)bl>yfBi_MxBA^R&!QNZgmAIDh5eXT=;5Q)B+crEd^t*6z*qfAhjUp#j9 z@IOmvcZjfFOTn4u#Ib2XB(=Y0VnhalMxD~%!`H>V%*2sh$?a1}TK$RJ^C8!2O#ePq1mkT~Z!1-l>H=riT5xg5I-!ZYd-3(BW0|xHbnY1dh0>G}yMm94v zw{p#Bph+j=DK5@SG{px%ibjJWCE33ZA} z_nOZZH>h7Oo&M#{unpOxnFcVt`s2~J2BV{N`Qt$L)luX?b?Ie%PSa(Xr@!I>9r7|6 zmU*on{rH6jwwzfb!{!SGGow*B}&pWP>xUfdyWS!0_B-2`U6=&wN z?q^-9V0LDfrw$v|S#KuhtOXsDHQ5atg)VE7sIT#;zzI~StwB#1h7c4`|Bl1S&+|H$ z1K}Nq94e5tH4PF^hxl4>WQBngN>tOya18an&)EN$rFX+()icVCv*Z)NJ7JL-Dwi<&4r8H9u6~e$b>t3o3EyQY9OnF!#VX`n4c##01KVk~{fl)Zzgz zqViXFC{6HC*&W%2Is9dkJ!_H{l6<*`pxgl-WgVb;hFk8zX`>p#v3l!*Kh! z4l&J>c4hTrE)c#JO<%d`#ClGn#5Lo{mfUB*hF?U26p!YbzB03XSHN4W5GoSBl|C+y zlJ1NQ>>MxV@+kXm^AW}B0`iKB;#uz13;^wUVji&$VK4e1jf!$L@J#r%-arSyft`{6 z^uZH!G8?7wO%%UJXJUEi1 z@JCnnsUOSHexk=E5-JOF(jc#E&k5R>GrO50Uj!KXYhZ^efbrRgnMoIqn+0aP=JriAYjEz_@34R1 zQ2^xBc;`++suJ1i0-@WxE^`5RJB`SQR(e5A!SUZwiL00-w?UChu$ddWFqHa?yQo8y zoj1u9=w#gI%D9RI??iy9uz)GXB$=rjgCviMa3C}6MfYv6&_?VMKM-#Qr&60z=z#Aq zQ#a6UGP5B6^cD{z+q+(crw*Hr9bSe8#`5{8vPV$nM1Gs|q0C3rpx7q+1FC?I&N=E1 zAUS*-6k!$?sB^vrb7y?7+q+2Tb(!HLOfVHJ_pmVcBxG+*Syzu4J6n4l%EmCqkX*0* zXDO3YWBQP5Lp{$6C;Quox9>tR_RbCBg!A1R^)sJHy-?g-)SfSn$!CA zV4|JZTK2k+z1oWm_vS-&l2DW~9H)tWw{fh<*-zWWyZQPkSRE=D*kmm4z9KJ-(eeD5 z?Csrkz9?+cZ4O6!I^*ZLXi82U06>UdoaI@SwWu9sK%RFd11^OyG{O~cj_fYCa^cBU zG?d~>ysj$7=zMXQ-MOS2CU}RE{$ayy1fLEze9d?{hX9g}+NXw)ZVM?hVm#ti5I~nr zbEq5HPZ)pdQcYil&gpl0Tfx)tc85*kuQHWSO8y8x*xGto;PF}=by^a6y5e|_?`_H1 zD@-e~w1i&X%Hdg!RUN8>%>9{@4G&9}1n^~#vQUrIX^0!id$WX1U*KoBr0)<^R6rCUjn->uHvDVpDV&(@~msW zZ{rEeS5t3XWyEDgf70wkZ=FZ7B53CjO8mEA?ZxeF#AVqV2T#-L*B=`shG zOv-pk4zesE42uvqbl8Ev)N;Yk-kKdI4CYptseAZoC_koE>99#3$~iamhvbB3080+P zu!!)nA)l&$KT(G{n=dPr`t%Ia?rV-S$AV~fwRnst9>1P9l)b!%-^1W>W_kxvG`!pvO9`EKgbi_ar|i}+nm8xgrB>?t$sdSTfac0{SGm@r=Ga(3iwbEvme^%ggWPqkUgLFtpek{o zhIUsONNkoi8Gn@@e^-91ecQA~EOM|MH*ty*JV)C8x^X@MYPe~Y zv={c&-V}(rc(am}!H0{lVmE`sZH76;Qt2D~ggu-S&4$O9Ij6vbNq#%`dV@OROCX0U zVn#`{rbFSe=I5EPz5|482`#q#>wATT5H)AOa$rRd_U0nV_Sp?rV7c^=@m$S->Drc0)Z24$(H5bob zFQ34<9a**sQ^hCYj+VJNc#>&pfZG_UG-Za@j2%I|IC6f-=@ zcR8}!`ZdRf9$CJE8U8UmtU|+^Z0(P+0Bs2yC?)U`X`Fqh;vn)^PEg*WMVlm8Yqaxp ziJ#PW$u+(s|KUu%=Y z^WT*R%KSHDXJuPjm+_a&&S%TG*E&m^gOLgeP%Lm7bIJar?vNd1#)%naI4LP4Xk4@5 zaIDm~Y1ImFOD0vLw3fpZBR_ABeD#6O<#73@@6WRf7r~?Wgi&O;V|Fyc`}QV!$LNQV zfz5lqhMTS9MpsPZ1pSNi{;^zI7g~i@(Oi~wM#Xe81M8C8oT8&qDDT)dvjo7r5^;4@ zoMyJiTzOs}{Sls;;=(K7u@=V=ZaP^WZ;J~txTEvq!T%>wvXYW7SSp@qWG2($-AKl~ z^%zbQ^8pBu`79oqi954_mrD zC;fr#F%DY31qlz}$RB&zX$KQ5mZ}8!a|6u5d9_Ctc}*VFov6&%A87u2BbKxqZ)Sr5 zElg`7>G8=BiM!*y2p2%}&%&HXWvw871N9S#6=dzR{L6S1T}%9lvxCf(*QSrS_S0$; zC^=0z{)#C-PPa0YdQW9jzwNLB;;pXmTak3iS`No{$*2Jh>ZE7g;@;fu#`OY!i?yO0 z1(vRpoCeEMIb~h6a>01g$TGUTd(FmheXM-TB(_&Oo#0@frAYI*qTk7Ib|txvKPVm* z?*L7x3!keQj(%!Ilw!F(;%^0f`nhy(k=Y@&PiN8x)BVV@c0dtfE789ZJ(sOQk}&QV zoDZ^b2gt+^VHv+|8tgIegR*m1G4U*;*r8#Ba2d|08SJ)D$VgqUAUqXmy%N+$9O>W6 zfa2&^xcn&ylyhCrUWB9Wo`VZ z7S>+aRWo(}lFOGfU;1e=z-!tDd*neGb=Z{-oP%P1D`1rd(+clQHGBf%n$;9H;=Lpg zO#ge%eXAwjG#CxGuIuYy8%2JoONwigs7|=1CNCLow^&QqZ7y@qHVu^<@@s*&hc1D_ z{e7BF#)nGk5>Mq$lPls|iqY#wM+T~Q+&dMt9ABMUns8Zv)ur?IkB%~{srmmkbG7_w zlY#TwMV>ai)E;9)xpqDl1i05!<1a($j-b*hLkhliD*0J$@}?F~<{tzl zQ@Juv*;7f_plOZ&|Mbe|9OsVB5vLYyy!7^=mx5y{DByj2VZ~(DU&cr7rdXOc6@VNc zPZ=y}ixq9n z`Lc(iY$u|p^W(TOL8yWlF|3M{Kbhv>)a1?aCV=F40I7JGeE|t#4B)5Usc8(bcO*sz z+QYXX{IuK@kB5X_$j)Koq@+Z^o?(me!kJKnFP`xTUo2Imf`Uii9GibV1f6UM%r737 zbGeE%l)2OuT%5{%MC?3OO|nX1dF_q+86;nZ|fZO(pJH;9quSbm68?oi$k(;tq_M=}^V9(>!(kay+ucXBMNkD?4sguOC2zsI~1`UfVg4Mq4;PVL;& z73*M$s6lX}m@r&2P7_7r2VLIJL*YZa3Gdp?@hRFyPcLSDA%$&lEDmpVCA3kLV zWtO+{a|gOrHvYg$xS)1(_&75hMlH-c(*%p2F?@KohwG6!C_60ztY~v~ukPJIe}w1d z=%S<3vROdUyUfLls4W5@yl$hEq(sinFjf*bqE3{xKArf?xF2I?w5;ePE(IZ%+2N#z zb_(DrcC}>K(GJRe(GQmp_CM45{WRZ2e@4XWv#T>e4Ko#L#8R0o=D=!xJ zMiysQMUNXh{Zd1(_ejl}c9T47GZo=-q4l1N#@fVZ^Z%z~hT53AngactZ4bCIJ-_PN^WS7+9ZC9<<;-FAoT7`uq(1XVR;W0fjOn>O5B8wXF?gu?c-9eVtok($O zN3HW^1L)?W0b~b(clK99!CxIggdLO4I+UbA_(33N?N|WM>%oPn&Y72dH^uDs$ga3Y zN!`k%vkQ_zC$RhBt= z+KYZ?>L-C##8u)P$A&(P>y-5hv!hZ??}#^)5uUDECfVbDK_7ER2Y#G1vrLZ3CBM;h z*ZrpAPwu{Ak}GoO$*zwa`8>6o=h(Zj@|(nc`HD_QFMN)DTw{C10id^+_|~mm*rl>N5ONw~?2uvQdCGs_ zo;>noIH~HewO>V@p1E4iT5NbePBbAufz*!Ow%58Es>q}3aazCvd(8%WD;{V%2lpVaU2u&zNfb<`n6S-e&b=^UwT`|8(p`)RG||uNvyNicCi?Y2 zeO$+uFt#iGs(8nN9fD<@Tz!D<_GWFdjMmJ6nQNb~(KS*bHPy`6ek2Q^e80*Eh4kWB zGJ--(b&V`0a!qR#Xzi(4&_YnB1LaZa+H`UTC>u<2yKq{&e>U(GtR|2XS8VTxP!Rld@N3V`gBY znXFep1t6^Tiqi3mUU71J+oi=y8fjJ5gz`Cjs)S>)e}7~nFG3FzSfnWycm7movqrG} z$kIJ6==6Z{{Fao#Lp<6;{rp;ITj`8$_duKF0q1sN_5s4}nxqFV*~M&o{MqjyJFqkN z8(Hoxd#h({=w$T9 zA)Wj*e5teFd|=4KD*MyS(BSN;t|4X3T5fMYfor%izHDIfFiZ$aOjuTgPBhjvB}!1~ zN_&%>YMN_Rn0D4?&GnTt89+Sp4V{|YcF`K{d!MOU?l;m29hyFbR$@T^d&tT{S-WyX z5P3auhW{h9eHb!;gr9p;u6^B z)=flDo@Zd?48#vCiOR`)U$B`vCZvnRn{!7sztT{7l*k(HF4AwIg@B}`G!My9! zmC7cRSDkJ)s*%V0arDeWAz_$P!Mk-xWlrDUe~Kx2Os@)s4aT1CKg*+)qC%dGYL)s( z%htStE*y#?W@g6vi!eXBWZ(M?T>N^x6Yk~V#_*3*(_(qi-9(!bdu5T4h-Ec)h%o0@XToU{Q+!*` z8!^^&c5ZhOsko@b8F6;snXXAPcEo(W$XgSs{&-~af|JIV>#+L<1JxTZ4p~)?7$;>< zdhZ1Tk@%@FL#c?=`Ahx2UF5Xp!GUcA?LD@f{v;T%D6lD!avP3FfNE@D(O9U6w8EXL z-WW@XRGx=laV)%|-%;2J4G;9KKv(F2f5r!rsMnfSfH?o$!YiDmm27$ORD@?+LJuuW zwq*kM7r0kO@=iY2kd|XJIcpSlq_{c2nR#eom)GN<>`xkE>kI0XtJ$&rnlPh^x|LoM zL{5vX|K1qYu@nkNX4DdDy28XcCKWif@p{e7dtZ#BC4oY##UtC!Awf>W=^cld>@R5R z4WKw{fV{K9_q|~cc^Wp_75B9=uIwpnp&y2wdJbTQ!Y}D+_h_0s>9@0lji49iuI|T- zI51+mA7NQAiSS5=8a+0%h)Sm=OXiZD;)^di^@!72+Y@@EWV4czn5$yCiMyMJNe8_i zPdQ$k!FEk4KKXs_=%D;Vy~ir~|9p3IHpz-_c2VO8i~Z+CTRa&61Us-=SJE|y=p;aF zv9({9kA4hby{xjEo+Eui_68L3 z!g?ix*DR_y6%{!g;CrC&FEP`o4#m&4Q;Fw)U(DoT)=9qozV@2&mGB>Hy`LFd*IQTL zd${C*13xuSLtKnH)7s|CEwRK~SMvv(C*FN|CwKBV#w0!b@w}EgL>BK!kOV5~)&A~4 z0&p8xZY2R6)>T0>&3f#$C&6#!iN7(O`GnUpa=11I;pHeeKH7D)D;)D8!%6l8P%M{`I(AvHa*`Nj1RAi77JPO%Zs%=Tzs`OM&&{vlMvSD-(8wGzqJJ8pPs zNpZ#=p1gn1+s9^#A<$j|Har_F@G{D3$!>ucuY>lX$4MP&XV#n%&s|du*SRwa^tL-A zICqJ1AM`9`zc>OKW#$X!=PM)0nqlA-ND~tawdzgRh+Fhi>h690UpsA7dL8;R{(MX5)OA z4%FWgjye65<8iqW{qVVswujfPQrL58c}il3YeCiNu4kk@R&Fgc;N7u1PBp=v%?YsFaH1fc%s z%M5gi4s=qqVjj`I?-72hnrJI_9)}A(% zfPxCrg~2u!moaQZV{U_%ICvL%=30_rYidk=#2vecZ3RvPtO?j^tDkBp>*)aQ{3|xd z>)6O^v|~FkHQp0lIlzyL>`KtBIdG)gzyNY2gcMtP0B_#N!=UC`shPBN0BJed zk1Pr@U#6h&rCV?tkG4}KkryIuyb5GtmTPhQNAbRLXA)Lc4PIc)K_-V&3%`TF40=zx zA?z_O* z__xzrDt|7x;)coTe(3eS`cEKX9Ruxhpd%y=vgix<*Y^7dy5>Z6$GShMV*Dk&_lWN7 zP7}5IHGZgzT%r1+TVI$L%2|I{Vcp#Xym-%kokA=e5U-!=Ysspsx#G?2S+czb?%;@m zt}||u%PV|3BiM#09*DvU1DCnCEB z8l}0Qrt;r)y5G`g^hhbxVOe812TNxBPb$8`QM096KQoI3bwO&1~cFkMrt-TE@35SwnoXv}CIid8r za7|}gP;mdgWY{a9#!M@Iv;>KcO}naccKcR8$d&j}ucV3o)}T#1DJJJwk921#s8okvbAri}J|iTuF&lf{?} z2BY=lD=p?qUpV)MoiKzu^AlJr&b{xnuvTQN4j$R-Q-7)AnyT^V14TRDrw#_4FFo8mtQIlLC-yBv~=LB0bk-oQofJZtm z{g^Y5;}aAcaE){yz7o!Sn7!$@(u8qLxabh=x6)S)LR#|h8=>g;D5-yY(LXa8aZaX) zu{3>LknYR9)A+hY+-MJfINtdhz_=G4Mfc8X4_D^_?@bOO8>oG#404&m}X!_C5UzwdNz z?7pTlGn5qNw=`p&Zf}APo!*V=`Auw_gCVu}pfV}9v9fgsHuJl@z~~a!aAe?)NJWa0T*=R9PPZS|6yp0y*iit+y7-xr;y5=B>V8q*rHtW(*FDtS}TPj?0HIJaJ%SJhSZ; zQqtv^5G|pX3FyqX`l|SNTF}3~k21|hFX%uvW6X93CbvIoe@$G3Z+YCP{}yfB@3Y%> zh|WQZy>VY9c(-X=9?9`A;2gRUf^Can$OBE=N0uSCXJeDogesQ@h`kpm%pcW5Ut%h#PcRx{sgp{$2Hx`4YWJX6RWHn zR)GRS6V=(B10oJjNJ)i=!pdA@bm(Z6;~zM05uz|H=+nM4R~lVMMx_a$HF?B5zur?O z7j*AgO<_qs7YS#rH?ucs2-DZkJ;&2Ft+%RpX!L3-%B%HniFoSq|Dt>X8tr$QP)3>o ztbB|eJYKW&yx8vW5eeRhgj_g~f6_Tj&}K7X@$Kb6p2}VyZR~*XNPbJ_nKMxH@8yP7 zC0>D1{Hf9vfB4zbclrP3Wp`(@%HwNSNag(55myP%TSe{K#wdPtBE0$n%=?#1t~TOc znEt*f^SzMN&uZW|L?9ma=-EUdOC}~)V zLO34LJcW6{6x)fXJeyW#YJ+5AVInr3V0>Q{LGwU(&d>&(%*q;3GfgWM1+*d^%h1dq zaI_gxBFDqj%-)axy+71dT~~d0dVcq_?sc!VZUs2*8&zM2hi_?YfcvxeIzHtayP_g; z@ZB^DDo(ODVbY<3J)=hw9P)Vcx>%f?}H-cBeovL8Bk<&CvCmAmSk`mFxyZ+=M9}l0+uV5?98VJ?{6moKo`3lEGiwFv zwP4Cis1l7Sown0P$8cUx{L1$#^;6r;O>TQ!4B)Y}*v1CD4O{JFG36&~A52a@@+DUmd}w-FoIA2QKXFOGw@a^?T}{IbJzN{77+H!bUCy zuxon7n2+Tpt+;c!sB4{IG#R#Cv9Bd5UBIdbPaPuL?9YI!VBIX3-lTNChHr@eQ_}59 z1OgAa?>Dt~7#OCd*YY$Z@9)r{SB7&ZW_!_K%GEDA7x_dmYd<4yA;L$#v57;}(>!(L z$R90Anx7}}8T365yn3>Cn;P~b@2OBN0 zFv!9_bHCx7xRTC=Lq0+J-)iKCzjS9XRwEI^vfg_H3Y82f2p!TrBxskP=wzmM-Kbnk zMw%oeZ@}06LTNSJy0M{$W3)r%E#bn8s4=Z zhUrtgN34pz)w0hxRW3tGT1=XFov}ZimmDxm@3hnaJ>=WT*X>&>G94#jBS##?lv7EU$s=26G$ z5i9TV3V7P@s*QGVN{j(jJ9#DRd~C)5jDE5l>J}deU@nVOe;FUVc}N z)~Y*Y!*OfMcG({1g&G~BtR62Vw)OS$_f&S0NeO$KFEaw4d}pQXjkVpSEVa!+?z@t8 z07folS?$XXGsV6&WdBg3l)cXg3~M-RML}oUJlcn@9PS~t-BUX#e>2>$FkiMgNiGYC zbnfhYx@{52i@#Imepd|x1>E=vA1+UBIao%froFldmvJpDJu_7-C0qC#60`J{s6Kh+egc5G zPG%p=7IZa;yNTJU17Kxcw|Bw)Fko}rj$k%;3OJoNZ3h#y$Hr@a%_}tM2dWSIJfT>X z#oBY2-ztgVf+oZxswb|ru*POa8lo}fq_8g{K9{@27svIud0)aFpL6hX&5)>hY@PgW zR|T{>A&8WsUsfi)wui&vn0yR28TGKXNm#&x_5!K4dF$n=lilSC2q51yE>J6AtV)!z zoBLeiY_9nD^n{xiw+D-Pbi_H0C5MhkY$i?e_Q@kN%1b)y^rw$!-){K+*SwoxKk(xl zeik9KuH*KG8(a8dN~z#t(U()W2#2kjykRryXu~BsdKhRNEN*b$TTk+Xb&8S_b8XY2 zA|A7Z_FxK(b(@b@eZTrosk9|t)J<{2u&eSf*sbjhc~m$7avR;1m*i|j7<6tyXYhKf zIGjkCiNgRgEGfX^TvVU3G{?xCOpD2tT?Q}XqRvkBdW8bQ7U~hnX*oDubo5FEepX~V zm+cY^+-7whWJMyi1<`>t*v?nH%xV=sV zJ(gcfNE4OGJN8}SXI!87WjJ~!sObB;%V#b3?aMud#zBOnjwySi!%pXEpdP%ZJDtZ- z&S=mxO@gXI1+ptF&-dGnY40$Aj+H5`G@fUL?^j5-BzUn(!Aq}gMd1Xqg7IkUiFY4! zbLe^(b?ML=U9!A98uN58)pey@dl9Ny*CS;wgkF6Cz2kZkRlm{V!~p>v)wl2c0Hny9 zcK8&aOES8AlGOv0oU7^0ngbrXASOC%j^=Z|j2<=g`x^gz)BexnC9gfpa)DQMi9VH7 z`j~rg)2rhf$`3Bxz#?7?rYrV#(*@@!xD{wGj)z0VfUb0@mA&(LU6$iEqMn~XjS0B# z+(?XQ39)@<0WbuYds$Uh{A9pW^M0sv_H(8)A<}-S(;?GcR8vm-+FXU z4+myA=i?`Sf6j75){}xPIS(10-__rMfE5MaQ(L~+=cqNDdL_%It?lOd@!ojICYIm? zzZtOor}7Whq`y!0bZO{Dl03ch7RuRK+0?9Z)8L)oqw|xuMCN&Zw`j+l*!Br6&PO+B6LFN$2RZ7P0EkRnYPgvBVq^Ux{mXhp*i+)d#bW z4IFT5L|+2aqyduX1!`iT0+q(;Q>PYAD$z6Yg%o8rp=AxU-%3jJk9q-SpN@Kq4#c)1 z<^(iTDxF@E*G6vjVKB#c6{*DW=-U8c0+b#d=H$&@k0>XDw&!rp9{a zmy=e?$B>Y-+tLzAzjoBPl*&%^?E&$OV#^{-pby_Y=y;tpeCL~RFD|B&lWF+K&>-Ro z#2|&4& zl1)%fYU%s-u2HQ4kD+&gr#Y>r;xL~G1Kt6hLfne(qyz=ubk{08gVL;>Oc*95PIHP9z3q!;QK1hxT6IBp~m%~Xb2>O)UQBs)bZ@F zGWv&Qy==M;N9~o~JXPa?AM<1nzExg4WoTGp)X{4j)LVI+db#a zhduZ<*5t{+G37*23Y^nihuGJuxfU7t6C$RJ9NvX4v!8S0YeFa=&rM69{~terKGhdH zg`M@7p_lYUz8q6YyfK1gL>zLZ_aV?QcQ!2^L3d$|z_>2F3)RDz@@v3-x&L9x0}zcl zmz-PC@U@P=o=9_(d%Hs?JsK!oGEg-D6VY+qk@xWE$EFy!cCU&^0qjsmOVt?i;D%{s z*SSOgTf<>MvrQw z-6_3}+QNubv!@fUhI0`^>GZ0EcbKT8FGYSfz&moB=jChTUgP)eLrqPV?SB*R4V)UR z#z|B5l{m&oACCR-u;ySLwd95u#A@*II0vx^i3)tXH^6I;Qx!Sp6toX4<5-SLJYc6v z>;0K410&J8DnFm3qQve~1OllGg8G(T4Nxse}M5-b}p&a8T;j|q{~@Err!{pYqY zv8i^Ki^r^T(R6!evYu2ydRVZzXYBm7p)r430^P9W1xmnG(@NIps6{)y{7;FS28CZh zfQkrOn|9s{^QS}iKc(qn8hlzf2YCDB`VAc0yhNozy?J870!=o2oyF_9+K`>FXlH`y z7e8cKa5OOr)EdQ8k6XT?)#hJzNkxlMdg~ac)AzGl&pc5GD`Y1$6iI;1rM)xf*%zJ0 z#=>GA;K#2ik8G!H&0dV(TT4gQoTy8=$#y6|Rl+F3wD5m3{>?IaGQ-`!zvOyK(#qa7 z6V~=5`20^__89JymKFN?o>s=%Le1-LT3a$@Jrs9Y6XmW;g>Nf5^X$Y!#&zMyE%U^P z#j>=H2V-g55`5Po9(F1R&FLY}HCINtoAn6i7joclPWkA$;th(48+p(%%@ac|c zBbn|wAJH=no-9J0c&#f}+K34*HhBSJaGw(a=U+Pb_!;jp zJIA2#cfB%wsX8XD2h6oDlNaLLrP=88&hj{~{mQt7q0UK4T->i7KkW@ux|C*Uj+aax zwf(~A@2q*UqaD_dV2<90_N35jx%BFUZzYvnNX~GYIyzX)^?7f_1y}f3S8#q*Fj%;N zAx9=*(Z1z-%ZhI!p`5Fegv8X670-RPezq+>lR=W)%;I038)!m~bMCc-Ca?>u3PBfw z2spAu%m;w(IrQF|;drmzS*_)Y6H5ukyyfUqMNNM9oI_ixlp8jGY`9FGudmDZ6wgEn zurKSc<7Ymx?J=9cQY?_s7r^?}yL$Lo1bjH9@g-=Y#qZA8yfgz^locdtauOskRa~7e zlI12}UE{?b7}9v1CVkTr*Bpg*|5Hp80reSG`qB&2`w#0u7-iGM{B@YI(tF1ObDUk6 z4|F9qV8n3=y0qqDNUYVKJKr!=@&|G!W)pi9x*s(eZVyx~e$utunP!yvN2n_qYmUd3Q9}dbkNz{1*A{X6m$*nQ^;Le-X6ewEp9Y zyzuiBiU^!@*wBAtZVu;)o@Rs^Qfa)yJ*mjg;v45(!5om&K)LWKgVlPRcek!?QF};; zHDNoHpQsxY&gKcq4fR5ZAk9D%{gR;lfYrhjJ*bk7%z`25tWjYQta*vAqRmLU77XcN zz)XZsoo{kM?jEhcY;M^ga$BT-Ypr{7JLpJEKmXJI7x4LtiR?^=fF8YkFpwHd%q`0$ z8WWjsy$-%J-EQhaCsqsW&kLe0iSwn#3+3=8p8sDIQE83JI!46*D626{TqdZJX8ilB z35SJV_bH-X#SSG5^Jj^v<~O!!UU=9afUPw7{wyu>G_2BzlhsJy=l^$y+G0U%-RrBl zXsDANDBCoE4b-L>NMLl%kdt{q=(q1Ol?h<+Cf~N2Gjx`)Ws-`uJNJ{i_%~N+a}POM zdfoPPASsYJZe0QY<@6chmB~v{k6hI6!XUE6D$*MA%b4)maz&oMO5!eEkKY|UQ%gsE z(9jOCD{iVJK@x-vC6jg~1pWOZ0bOu36vC z#9{i|GvU&A@Rw#8<)+)yOq>_^pY*s11?9Z=Lw=Hklb8HQ#}Mc$KijdJU#?ia`_S2g z{w_@Q%dKsRXZihu)wb5shl52u?#GnPQAf5-ri-iXRJNNQ8)gVP#kc6cJ2^dB#>bQq z(RcUoE%M37IM6*YRp&ImzSdx^AbH--HjvpBSm8giV%^#Mhs~yie@CBaNMeNU5}~^c z8&w%k7BrOLZrAkdvB@HBbeBiuW&pqv8@P!cJ`k2qaA~rOkCe*T;lwRCp%U>P-BHGu zT_A_?8W44BZy>=sc3955oExCA>X}y zkv~@KSVlK{mcakUF>#08>slTBs3prN{LI{f|6g4-6{oZog(%&wcoq=+H-HobNu@S<`Yek zosj1178=X?W|v3|cand+rh3YvzIbeov0H4n+QFBI<@H}<{H@OAtcBoQ7X_=KRF5Yt zgCo|MZZ{~rQ0%Qo6hA6kCcUWf^w}Etm0cn~RA%Qu{_R-Bvh%&4E6MlmCzW6{)zYY3 zl^E?8mMsu{US+U2B$4<%0d({rl8i0=oq7dmJW=&G2%wS!UJyS8oNklja$e_T+q2Gh zkb`}=YvkbAQCr_R5A$K>HQ#K!-vP(uN{LRo)&P<~dJM@*a#$>kc)KA&Z#z}RNR^Y- zRvQS|m!g%TgAe$JeE@{pFf8f{Jl1L8HhSN$(`qbG`k;uBw&%N3(qjYW{zdIBKU@p4 zCLQPKpV-^BVKAN9(YJIAbE4G|)7+Wm{|veCpefA5$YiVcNHuum61LEAep-@Qk%IvD z+O(RAo+(Wu++R{ELKHG(>iO1_%zj==V*1dgU#KBzJ+4F*<{_o;y|l==%_=pFS^aWr z=XIHBvgQ1_nHPaoR-lF^k7myxT z9Ls@qOH9|Rs&OXChq*0G+?^QjuxP=Bl9dDQr-u9|nxN$*($DMFY-z^@-uvCI%f}U9 zX)?tGpA-{!xw)o}2df$*P%F<`8CB+t!oE~|D5Nyb`2IRH_>h5xJ>A(0`v+Q*l?3}D z!ESmOUaeV5SU_{gRm$*On8r>T(Q`@~-0zeRh_-~0N$))AW#J8QznKnzhdbSx4zvLd zpaTbG#KQpGaP0*o7?>zzzI)gG+QL#w+=Ysq*i>aA^(bZ#nVIDDO zau=#s`tG~$DvWgL<@@IPA2VKybVK8SbEBg{pj5{11A;>&FWcqE-L-(P&uDiCsiO3< z#1wWtI{m;XJNYUQ#7`k&lFif!FZWBf|1|OyL``{?zd+i6hUoq~oi64j2|O3IMg?(7 zhdP9@TS5(B@S2?b1mTX37!Q{SEr}mM#*ZnQFDR6D|Gi&U9<2SKwpAz(cr54h+bJmZ zZ>p15KxRy&t3U7uVj$3=ft$)SA*?;t5%v-u`cCeItyAc19I$%p$ms7HObGV7xlB#r z**zIfmKeaAqYm&%i&e664cf&j^E1@!l-ifE0*_D@4P(g@{7#5P%(3920|#7=9w>fM zH`XFMe=X4AP{823YhI>Sc!+A#QqcnVqx~OS(<^-CqQTd*2Xd1dus?!nE1*Er!N+h7 zJdlO&kmb=}Zlz)V;iY5R0Wh`q$n^k=fGbx-%E#A+#Bb6MyB?H&E8&+DzA$k-H!tr1 zNkaWQ2meB;sO2k8lJUMsdTI&iIPp;b%l1XW~sRK>j%Nx5p;#nrN`MZBcpV3|6@zI}@t}N18nN zjYnQf0zf3AtI3yEnk^%Twa-y;hf%noaCm8?b`lc7~X&2L` zg)c1L7OP=%I}H_J2f5N9Rd0A;C#Hzj-A>!j>^&244_Of*{Q238TywVXrYG8h!+&0p1A>OWqb&{uaHfW zH~FAgj{w0R(Mu8WR0-MxmslXUMOaT|{_c^m2&Z8u<`BcNlc8NfxN5TOINOfv@5}tQ zS6NkAW9nt(u5&suegx08QYJ=K9P{mt0Tk2K z+O^YzRp$cVVwHGu5cTY~<}^?Jj!JVE#~si;dm#2O5QH|qoSTcdJ4Yvcl+znWmvOvWQeJ57mJG=Y=PU|%a&XnF zR0G+%$3JWizs3j<%eeNOx)?cksi!kMBHMjGN+`M&S_+1U6_`tcVWF3?KySwo4`e9k zCaI2KX+Bf73yf8_IIyN_GuB_w)_xQ3v*7w&0weJlwEP2T0GnaUFKTYg!*0QgjGmZ* z)9mjY%0WB=gV7xYr^t^PPZRGgbt!|s84XsELrXS1-V>0JlJk)cC5H;roh4Y= zIThq!WuYZGE{vtB$9p&>`hmqwyNZh$#r~;~R~EkNR2_P8uSE=<=p&0Pak&UlDR@*0 z9r=x$!u6E?tDZN)Dv;kwHnD(x+Vq$*;BwRWK=gSZ)671r-FIQDqC3CEKJ$pl%jf}$ z0aaK-$r`G@ab#&#bCLMbP4u7~kWZ_^kEB&}y8PoL|1b`7p?MZm>(Z0Y`1b`L*wF51 z^$OJOdjaYDHGT_%at8_Fe;DnW3&COf_#Gh71@ea>o5L;;p^TEP*t@7j%_~2@qU*}b zG{fm+I(K(uW=6{_NWe6~aCc5@VoR3jTrCBP>*iO%WeNAQ9u_@t&PYeaYb~X9)Ncyl zH^@C`-W^J0YSJCoo$tdh6{kRcVcPn6)(xsTv^pgH_u2(}D##BT4+q<7AyN5hX^?OZ zSr*)nWBlABl0yh7G;XQSzu!?TYM(jRRsK6NP#yT&zH`Bq8?eL#zZP=vm|%2NY>B;4#;V&Ixy3Q>oy~14+N-~QcbiH*^-2O1>`Jp>1T#qKw zl_nCiLLTaYUGJpSC^8On0PxO^OeU_Sis{Cf3fPTGwuvQ9O4$UQY6__So%gj*#5yzv)BC*8p#&)S1M@}!EWRHN$dfrpNVxUYHb#v9q*sakFXLvr%t>V>&R*!Q zkfvSJ<`xDMmFJQ)z8h{u3lvH?;HYJ({()4=QS#b3muD`HVR?QsMaTtmg2?7cnBL`7 zO-5__ts#NQa?#VOM$~ipS7=s%=d#1c+7$NL?V5@J)h0G?M$X3Ca35w2n6<(sHUkhJlAKgwXYg2vVs+9%iU2L`}fx~KEi&O>F1z~Ep| z9ZPjXbP1b@9w@)NCi{ODDjbAmDla3fv(VeWnfTk%B5)*U$2bNEZQke0Gn^ZR2tjl# zl9Kuo|1s|$Z*dT`{h8Vw>w#p)#++F!klWT;q?YQ$#BPeVok}v&WV95-^D#CV>KLoJ zGuVk*!#<^Q&F4Kf;oEfsyK}<{VZILrEN2X1=VFwRFxSS;D?>E>W{h=+uldDY(}v;^ zOG-+4wxLA-@ij1(J;ryL=??DB)PGQ+t)eSGM}1W;hkvDq`m7c3(IIGT|m)#Xc6v zr{`R#&i&E(h`l*VOI)iifrHAsl!8(0~ zvXGVXWiJB+>jpmm5zy_La=2J((O5_Q2CDw^TPIFwN!`8L6|W=Y-^#OJmq0q3s?>${KGC?BnROqpOQ zDHEeu5)E_6`4Cu`hC|UvzUN?0~H0V=NsLek@ zm!^{KOrX)|ohEnWZNM?nGKXtVZxJg)??KrY6h}8b5C}D911_BP3(3aupxrMmsU5F~ zn%Kv{2?!wGlotreCVH_RV9qlsqU~R5@;BWAI=EitwUFgQAkHNJA-qzAoz zZghrPJ${ylBiMbulK!Pg**p(>{JFtFPGW7F#~P}uXI{dC#XSf_N{ zodjETz|Kj>i5us^L&+oF;Piu1sB+&#J)achZ+e{S8#hVeB2%}}iA5&3;wY9)4qvba zT2IDT5Eq%IY#9xaUw34-BFr8%c5b}1P|~A1x<99NyklDsvH^?21qv>a9sqOHGC8HM z5cpD4NzJGk=S>limJU7MN<;Ay4HixbxM$I|dWBc#D6Meo(Mx8L@_gN zzBUv|jA9mw0D{@iR1B#?lJ{gg5jlh5JswTc+$8Ww^j6@fB|B}vq^C)=ZAFiG(i#hh zZaPH16i%Es9=9KruDQR3sL0tV&L#-+;&F4>Wk+CKyll0YUz$%-yG8yN8w`mXd}P#z zkr>s9Ylbyxh2@YOToLcUpHBHUR$0<;zFANDFIIOXVcx!Ny|6Egfi1Gz#|jp#U%G4L zYPUm)XF=fc)$XNZdl*Dg@fyOPO%Uug@jw@HoV3yZx#QrR6<4xp`5s(nrCf)!maP2< z&`{IQOgmo9n)C;l&+0!=AF%=O+ea;d|J8lOik+UFtSig&d$8=#yoM!CPfAAqFzluP z1@9!;b?%JMB5$GgzE=l}`H=Y~7IE_v5ZO>iCo^$}tr_6qG$@)&%t8Tl5^n@Xxn+Sz ztmaGsHe%zapHcGyy1`tS@5$Cp^PBh3eS~NM5%{5~7{~9Q&9DnO<^Qsjq$IX9FSKZo zn{4)(@f9h71Fp)U4fC z@V@%gM)m5l(YCB-moKpWa7E*?$NPL%9eoGN7aUcW!u96OL@O#P>$`h7ZPur8xfCoo7+lbmi7gy+~$tqu-U?1&j)(Djc&rEwft zrTMsi!}(%H2V3_j#=v4Y0kZS<&;g4xR{KIO>Yu@yRy!=s0wE3HqqOg>d2CwYu9>+; zb~b*dWn!^L+DFhfasH_~QrgT*@xvBr*kk6```V8InU#&r6ZMVXt*Qd+#-%iqmi+Q8 zM-*6?ky7?*;qu`d{0sA_s3(rXuUy45y?oC)-(z#R#1jMy)N4oP|MP!=z*KSbPdBV9 z$^n5g1xVOxkiKAWW9Ku}@FlL+UvM=@vbeRqA9mu*nA^ z%kunzNzf3RgVYj@ji}=Fs>I<@hrPq*7j%GRY&#Wa%aEs_C5HBAw_VN& zf}Cpl0K<_H_Q7LiN1kh zADkJ*0Ciuj^o_Ax@d*qLfHzDISfTh{i5CMp>hftp8q^|t+;5#4;Squ<2B5{<=mKh0S5v`j`)Ob5(aPE}J*=O*xx9sLFJ&y&jF``i^ zA4-|3Tw7s1f2N_Fe6lkQqAK9Tbm0+;c`PX7x6;erCLea}p1}kn=*9bN%Pj z!cB~b8qDX${RYAU8j!c>y*(6*9mg-l?R{%5I2|lWvi!|x+bLPEVi9S_=$AWwkbSBd zuy40C^Rk*toGz-+9~ij#uJjUWIDQ^ha0>FSTT4?IcE#%nV8sWiZ2#mGxJcc?}8^g{9?1#>{rPSjLHT>CFxlOkS! zP*)MLX%D84;O+EVdTJrdP3j9%oHD`it0p+t)1b)PgeX+~H+C8Bup2WZH*wt~<`>}~ z>mJj_3kDCK;2&NEL-$PG1&~*&#&C7O%WEvGi&TKj&?oXA z=JG^WUk9WQ0PhQ{J&jNno{dQnJg4CUpvHq?B)W2Q2uyy$BNiBv9VT}omwL+I9P1}m z#O*e|B+P--Ldwfr>ZfAj$_;F0wl6K1By;`@c68~uGvmwR+ZBD=OBdwR7WB_bju#lh zZdtPaODOTRdJj43xB@w9_n9$J0s|La>-P6GFl32U$>MjV;@?IR-=3q;35m`aYkzVx zZNztZi=Hy7>F3>{!7%ri z!oC7K4|o|9Cla>WN!9{#rBA{>pCHmrpc!1wi&)nr3@7X61t=G2C9icZJ795#ai4Vl zi_RCAR#jUtkDzh;YV;a#tCq<&aC38UG@7Qo`F&4`rJvAgFpV@*ue-K`` zq8G09^@mO2`}8?w49Ge0*7`$G{2KqnC3`s?-ULhmAZ6}(pTT4%<};Ig--Q@!+&VfY zDdqM8ef5l(Hu~xr*;`Aq=6cx958(&Di7>)>L2CBt1g#4UYm6*^sgF%iV539g;;gjF zLs2S9MS|h+W&4{6Mn0z!X9lm<3`c-ie;X^`pKFGrl>RI)$Wcg$l~Q($Z+R7LU^4Mh z`h=AnH@Aq11L-l4z!%kLhN049P}dR#gkZ-UAn3;#4B566;-fcFPqbX~!V`Utl0cE( z!Xe$F1-)dO1-+RYXx*v&O~W^R;|1yj!IXVg$2Y*FrXB_NI}G`2dN$~Jq_6R>5B}{k zZFKb;59AA}GWxR5zkT+5*{xcz=Se`J#p@_v=?$XvtPob9Oq2x;P@EJH{M>0x;!(S*{4QUs_G-)NFZzt^;^0%z<6f>ix&u?n zeImCS%E`euKyD1<^DaWOtb9ITQdA0}2B!k|bq!YnrcAeN=wXY8jhIyItSM&`HP%Kc zP;$z%JQ5U{Sn!U`HqRRNxse`!-3JZ%#JVTfyZBx&jJt|9?f5J}W$#;H4>pPh+)*1S z_0_z9$GT5>LN6+;9gR#}M}dWL@Nab;(oMKzbpEATY5qNSf$Zp~IP_PPZrFYaUPcF! zp9U|}ZNx>-88%0gW7v*8U)bxtbIVio)?}vwg~Z4oe+4s(KlL~t%gAxh;T=hLwUxbS zZ7@eeVlKt)HbS9el2tT@f$G!;rC@Wh^XbROr{G+cAEwNwzGAS672sd%?_L&2R!`opN^D zDOjo2b@TB==&rD>ikxN>z8bR6&peyt>fc}}l9%lFF;UZ;$;t$HZ8wz?_F|;6KO;mk#K0JgXx5?P(~GBL1y> zsby+u>Dfu4H}&Q}Alr#rvGYX@j@9BHpSBZsC?K@fwjwuA=ORV)G#jc z?;lrv!9t@=(dK{h2I2T~JCS{mLl2Jk4jOGYB{UiG)y?m-yJXld@Le7yV zwIEvJr$ZMqYSm5t-!5DEu6jAp7d8x3IRrEN7=~tJ1hAbxUn+*P3_W$uNxQA) zYUDOn?~xE?(14ZJeHb~23yHIO$K~5H`qvFK0Nz0e)?y_`f}PA6ub*V2bdzP#P|S5J z0-hpmQoCx8Y>OYO(C;~Fg9f)2{3!ax>i^u};dlwa5>G)kgm>66Eh`8jBHsL#{kJ5l$G#onXQ(x1?bTOl(3~sf{8cOXd3cJV%AdZ78>$}8FE1j z%Uemdo4are6xeC3fhp%xRP`C&S8zXsN352qMY7m)jAe&kFFPy&RuuIbn+5fEXLh^= zZra>w_$%qd_8cRhm%1`44oiuicqL*Q^u8y6$%(wec(MGtfQ%z)Mnl#Bp}`Wr=dAo< z@P(sbdS5_IY+%p#Fqc44Cy>t^ju(QGOTbo z?#1`y<>*<9U<9cp;N&)LUUJXv>R`M7|WW2_*T@NA?-iYY(4U7T*&I zfxpS9Mz@hft*&zmkTnCkK8{zqUnB~Sj$?~o5;pCiS@6F=G(J8rUEC=2_FX=;ix??e ztJv9J4pNcYL9}MMD5zf4>aE=gI&EOv+C)%p17EV381GHdpe9Ot0UWN?=FDtryDqW#Z=EB%?Q6}iIIDGHJF?DOg%SYF<~v&Vr+o&+2IV2>~-(U&Ut z4FOhk$4(4z%O-UiG8h#BPLQK!*~5{Mc8r4f(JsbTk%*U@nUU&1f$*&y4!N8ET_5ap z=q}4g1}aT$ak0M{)>p^~ay|I){>Ft8nBoT4)f;ls@ChUxJaZP(3;KQ}^$P+%ZpUxboVhg&fVL-gxp70A;VywP-!MJAoKQ0x}z z606NV%4uHLfH{RV282v~<3k$vFnD5?mHy^1FcS{;)jR+BcE5->sEHA=$c{R_6ypn~ zIPLV$bwb^w>qDjW-iJN*S7ggsbzt}|%QUs}geso;D2YGiDL#g0^qlq+!laCcMdj{A zzc~6+D)7p{g~D8;y^9dv9G&b~BhCR$UHSoaE#tZoHVB;EjsdhPm_H2b4U&U?>JiMPppNFuq;j~;~+>t z;Y`zzhgg7E_x^zvO-uMN3ujOyAXbm_s5{dWxr7hZ<9rT_7=Q>dUjYtlbJUi=pHbEU zDZ~&s7RV;(0{8rWna)6cSu;&&GnKD z{}-%#b-~pd0U>0T{p2F6t6*g}+UC+rZp?GJ}< zPy9fazH9ly6tHK2=$>^W{cQ9}m&-u+F(8mF*rV!&7@3rs2?rZ8AWQUeQh0~>;Fq_} zf2^W!Ps|8zA7+?XV22gZU+Ip!T&~tA7!FIMpaWKvZm?b_yvyKtNt%~d@lhML*#R|Y zF7a)BkeR&$B+Dalq7D*Xd5Uo#_H>(1v?2y{7tImj5?Hoh(Qoq^`W()J!KO()DZu=n zgRcZpvY^sfYh1}4$AgoOW03-DVShOkz?XaFm$*=pk`@shF%=S|6Ov0*c7WK|t@B*N z4xa%RmCH-t(Zci&a#)Hhk48%`wlLj^bGT3E)+=7o4Cvrv<(e4G9q6D(Jpp-Jm{0rp zN^h-`^|K_rSJ7hvVf`{d%y;r90%T2x}&?~(5gAmRCQ|AIfgS+D$?B?~ds(2PLv&cmA z%J8N;ZvE%b|M~=iDS<3J`%HvLFw6@yOVjazC}YAtoVk_JZSdqcIKn`mh@ht7vph3|}Plwt{JnY%{E1 z6>V7_ZV~ymW8*ND0}}Hk;4!;^l&A*bdBD|6Kl;O_y}s!(R5pd5OMkp~!y^&7)Kv7Q0OIlp8Lgdr{wl^SeG z<4D;}>4vRHuc{aT0~V;{7+e!L$c_dhpLMW|4fTD6&#Zuk>lAxEnCJn^9urSMA!#6o zLxmw^P{8{XN8q8y#MM40*i{U(R>_W=Y$xOn<(X_5FV@~3Z|ggiR+fS&(&-yu)*1FE^r(ASn6Y?b zoxxjnagC_K3Z_g7HR)XsP?O_^uMp{KM}h#P8WMJc&<0JWU{Qw$#(tZlhkq{D77PC{g?~Y`$uhA?xBjEX?U!uC>y^b&J^iU5 zuxw_81}URohc0yhNiSC`zB>o-5dJX|ZQ_8D59-}uAL`m5e$jAJ?QrOS5@~a;{-(z` zF=00zlwHBt9oK`sCe{W5r2_KY37a@P|9y2#+%8p2v?Hb0<0#jrZ&((%FjN}+^VPDT z5Xv5WhFA*9zAgZ8rLA5c+DQ?x}cI9=9Yp;7^2VEA+( zFE6dCF*P}mn+!T+ZD3%R(ouq`TmJz#-i?A9nKc&E6NT=4St%0CJ=WZ{{xC)FDR~V% zEPnxS&(0W;M6cjgmZ?SZe@a9Zcz?3djxxIJo1PKS72$Zg6uc~9C)KZQ>p9rHn8{*3 zrxR-p-kQS6m_OZiDbby(#6`Vi-Rw|k#O83iT%J+KTy@Mfc;h<>HGPQ3b@t&TMtXyN zE!Ze)2Q#Y6TNBtsL6Cw$8Omtdrd-s?hcKF@EcCW7V58ber*xN5>x$Du;%XRdS<|v; z>ug3i;t|ZdZ1&VR;@|DlhBb)cnZbAZZ|IJMWt{wWb;qhia00nFm`glky|mdfFYFH0 z%g3bZ3=Zh{Oj%klO^O}9(!e<3FER22Ryt<{%r3C4J`Gp;*hVCd`+f)pQoH+mPBzfU)&Y9%WA-BTl~mFMl%4d1~?I;dAKbkA~1*!0073Odg<5z ztial`xcJe@U3td!;V-rRA>7{pQ6jK;Q>OLfk)=5!&fQw3E5I4xWg_QF*V;C$AAwxQ z45kC=>h<0u=DD8xS&vbIOF99%Q$P~fJiA8#T&94r%%g4samuCuMCH0=Vv)ChG^VVu zF{!)KKu8(qpeUk&Ubes*o6806h$&Gurmv+MqXubWVnE7XG!lcq>+QRUwh+_w=M{n? z4?ot>bD~3x5=Xwo(|8AaYqPe^Q9-&$4t8tL1MV)HP~l%DI|Q;#{YzYxoAKHGoZcarVUghJy|Bw zS0eK)boyuCKM<4S;0n4LUYnD%E7@a%XK>}aFzQT~WV5!x@h%4L{ z{(BwXXJ8%zSZVc4slupFoYY{tU3T-9SK9X85k=wRPWfOQM6^3Qv))^Wl9S~DJ{Dl; z)7@%O8-ZR6xJtsKoYLK!cBs5}q9fFsCa8zZLr;!POGmI4j!X`QpS0I^a`B3*#36F;Fs8Zi(+CZO6hSY5%_cMM{tqePzLPG&OfUxv$qN`ov|X^L6@ffU!CS$!I!9xOl?Mzm z*}C+StKJzy3v7yLaHI?*za?Ll0PZRU<*~mjt80!<9B`4o^B3a-2$!0`=lb!tcVKlV zy?p2sK@+2vd4FdOqAF7Mvr2)74E%x8g+#;4Vm;Yafug|;{az2}HS8`W2!cP@JG4X- zNBADE5@+am`QkaW>?sYN3u#d3C4U*-`s;ggTf84ptneQBz9lL7PtPZe-=jU+1~@e$`n z$68rA`k=w#%}szvZu)imL(;r}R>?^{-Am9{G{To65{R>)PyMeKgu8E!i?j>3IMV-@ zqH_;qdjJ3U_sFGLGg;=cHL+|RnM=tgtZ#EY#c-13QfGE#9k-#7?R3HnF)X>nC{#M< zs4UVDnYj!nQRmcT*fNJsOS3vIznt^^z5C~!{y3NV_mP2jDA=? zs|hj?PwV3xG_h*3L0`v%$dfoPZ(>qa3FdSN$@6{eG~p=M;ovtfJ*o>1=-!Dcey=-G zIZ$C^GTBGjyBEPcv#+o#B)m2k^1;wSAF(SC@=K_Lp0w<$w{b-bCE8{7+s6J0?p)tv zPL6-US(vp0=RWpi-7A|6RccTmeFInF{s-3^`s1O5NiVS~Wgx*cZjfcmJCf2PC z>;w%O2fe;Jzt&Dpu`Ox85oc*_L>wy;vpyAU%h8s8INcjyQtf} zFnQlCzOT}9*>3W{8ocgOd36-6 zFd3Td8fx2+>Kv~t8yrICNyq!=^~QrmVprRfy6xarVS~4)vp)jy);o!fVt+mf8sbWH|{esNel4d*|>&Tm^LhL7tY^6g1x zCzoB&e&QJok^b0R9=9c1MpbG<=Fc05<=xe3glwgZ%^M>Dw}w91_Z=x#dumum{E_$j zp4s6c2gSN&F5O{hpK@stpDxx;1wT zNbamyQQ~~I$MZj1Qf-6JTtyS|%_avdY7Qb}ai3kI+{^sSR!jEkJr+2JXPz zR&LjJNqp_u$8#|Nb0|D! zMM`az)8lA8rF+kpgfkK9b>j`GK=Os?8H%*RCd*i8199At73tA^dh1I1aBkMBm5$;= zNqA(Dg4!h7Kn*TsIyg&{g{@hBqz}1@_uN%xf0i4dYCQN0eD&*+#cf@ptYJi7mU$he zfZ9|x@Hejx@t(_3Xa)r5@SWTTui(WFy2In&1{zbC)P=Mv@Tdq%=NwrgEhR@)!Y^b5 zLa=3>!?cuq>$Hj?=oJ%d7o3K3GslgVa`i!b>(!%>4tv|@Rf4(QLD}|1!&y>))WbQL zg#UAq-f7Zvg2`aMTYT*M9JDRsiA`kwwnUrdq75-GEZhTk2Q&u?Hawe&50Uv(R8*lh za1vxx;#*7R7h$n0%iwYwQ)K@9Zs)QU0C!(mqW=jmsuD-#oCPx;XJwQf$esWkqa7>? z$YD|8p>0w{x&?3t_N^5;Illo&IIsDgT<0<9_R*)s3q`P>>wQFI=+E5naWDH!jXl^K z2As21(oPUZ=|Z2^1?1XhooB^l-{<`=0LYIf8Wziwfz1$sST2D8k7VBM1Ks(2nzp%PbXhF&M37VKc*!#^_sji7nw{!8g@$k9rR;lk;b?i zH8~8B9{<|TjziJgQ*(==DELy-*m-fcOTIpZ$c%ae@wwXQn9T@kaNuxS=W+$jY`p%x zf&6xC9TWs?W*AQsOzcrHCt%73O$5h2<0Zg$Ur{F&gM^-?c;HIvFqs5UeH4PZoI%PE z%~;6Zb7wUhE&~_N*;&4wB$!& zUr@NlS_Zh{Lp2~KS@h^i8esr0r#ew;NgM@h??)+t``PP2)~eFrsF=}3W`AR z)Ffpf%T`Bm*wyv{jcE;3be*J%LJ@ADAMny@I5Zjra$>T>mXn`%&_u#ax-2;JZ6M9s zJzrY(5>R0dw4|CWV|C^P;f0E;4-X$71nEM*?eV=R)=f|wNd45{0Ahq2`TFo1K8amEI6kY7}u85 z#xdbu4#pMd$VV@@VZ4x~_GEpHOgl87*es1lxB6&PN#JRZynUQu7VcAvQnP96=5rvn z3!HR>lRu7;4Tg^9th%A8k~DZZpI*Jc;GdFt)t|&*O){wXNJHeK<{PAcj~WaiirH=a z3?o0Q5#~kT;SmUrUKj2n*=C!#z7c=&A6}>OQi{{3OK3paYIGibo zVHWZZa6ZF~i-Q_ih_Bz7tyRId1yGB!m0Q&|P~Ntt*kgWQnPRHPW#9(!58P_gsEPvb zqM5m^kWh{`IvIr)>W-?^%w3hO!bU{Qj~Jh~M+_Gnxc3GdJTye_+g91qs~AnEm3cfp z#M0@dMt$JLZaeqMdkc5iG4mA-_F)b__o`B~{)6{vb6z35B;L+pS$t@`AMHk6CS3)7 zUMpN}6w=g^Rv+$_WV&CpNdsXOa=Q!cSdF9o1rSDT@t_ng_$~4FG43h4f(q8o6|GdT z!w*@aDmKjJAjyO5yD2b|;SENlst|!w5FI=|gHn?}N*3f``n`;%>P@W2r8t-JyHZfO z^IryFaV7)S|N9ROY{lkUVSg;qnUscj!s!!Vo~o85$diIx=t-tihbL^gG;V8BFTWA8 zI-9aXIx#o4ubAQg9`C??V*v^ol{ z>p4%Tw5jlU=4UfdTp}BvN(9lQ#nh0fA#g&)^v$rLw zV`se>Y@Rw3-$Kl7eUy&^7YM!5%7%G0%MYt~Epdq}F`g09OC@>s3iFsq?mBQojuM5i7qHX&PxkJ6ZA!97by31= z9nX-N>uV&!sdfLHwkuwpM`l42+JkCYCi|iQf(oAVPNuf^cQ`v{g^eI>TRrc|@WOPk zxb~ICbCHS8-5_!f?F@X0;PJ5PIIG0RRu*iqf&x4(S%gz>zOdKs;N{EYlrF0+7{`UG z*7|w#4L8_OI$ZZ}JP-d=6~8U0!wS#~TyY?;{vc;b zb3Fn7nKWSPYH#@=e-Vn-{lm^3dIfvc#te%b9NMYj2!QSyX@+O7lD?0s8(;rMtT%qb zz*@QIYCnx=IEuU6DjK+H&RsU?pImmEzXc{SH)g*N4~UHMT0{VZ`v6xl4QSI%{5_$z za<<|+Ut?Rx$*@CIvv~|=U*yZQgm2moT7=sPUIcyva!L02eUV-c!y~_S z<$tA#ruFbXKwF|;fSsUzcB_I&FOy@2LcsU#*;ZOi)_cO|Ef+D8BwB)+Maonf8ToNu zrF1#FRi5O$wxb`*nTb8z@JI&nG4o2pw zX1i^`y-WdGHuMT4zF`cS18pGcZWexsJ$dw&JyCaZUxi&%Y=S?VhV5-t`LmU-KhQoF zfvAjxd59^jm?2Df&*9+xMy$Ve_@^X%!-^D%$~_lnwB{CP%|j=2S?NyNA#y{23YzNB zfh&o2`~lYgf0lSB`aGB`7yM}Cm4cZEm~1kr#)5~Xpiyg*tz)dPtf>c}kOnVQX|eU& zDi*1Z%Z$j7T$)RnM(fY7O3H@*w&(-2u7l3naIGbJ&-&n<%=YC}l*kkII~l5P?J21q z0-7al$X&oKJeP{fH?;0j_Cu+q;Ok}#x2G=2k?t6SEm_uH7H3)q{(K<79Bb;&%%sL1 z!bVTjflV30AP_ZpG8VGlG$_h2!whStGfYe4I8gPcf@v<-8W~3^prUaHZL-s0VDmNy z7mGt`c@8u@3e9ye@*YXa6C3R`Tt(Q8hL*$D2M~-vgmgB%oyDCtL0uD8e)6>5cfxPT zP4QuwtlQ1&u-^}iJg-_s4#u5pRwNJvl?2M_y0OnFHLGrDu!UW!uX6L6*ON!cUct*N zx#{K|ZDZ&MgDUcm(D|L?;a)C7FQN^Gz;^1R3HH_`=Pt4V_mJ(&@!#2{0@OskX2T5) zUEDc54tp1~?2+N1QD#5HSec(($zAwv_Qv{f>Lk#tCD_9n=gzhccgQPWmxhmd7&AW| zRg#)rb*5DRZ?Kg%=y_PU^yRz^R)D4u6prLTl4Kh7J92L>jWPW_Vpj8eB+0xEgXl7! zQwKf6_5&#cqI~mPvr&3ciK;)P3SAuOMNv?{tLcnVLi;+!pf%aR=Ey{dn54q46GsMQ zwYdyh&JVa-J8(G++|ao|rRP>$&wo1hj6xb)%J>qTvcvZI{Z##NX63FbN;KN^&-KB* zKY_tpBLxgD%i8lh*mc6lc~>wprLsXPd;q@ZN?WgeTo#!+uk!H^$}n1JVGC}LRk*@tTk>>ep>zTSLU@YqhG#pM&PGTGn=Lz33dn#wZhC>i)*cn zdxYh4JKQ@Jd$#+ejSaypy0VP(KC{Fl3*pMmi(5XWB_apPv7S{Cvomu7dKQuNochY@p<%okPn*;a>dn{zUY4sZyv- zc`#GlJ@gvcI)ivG%l)zJ;qz(yk&Bt+F9D8`8(7x|k2y;dz)OTMe$-Z+(eFK_*H;^G zudFr2!km-5%@( z#u}vIiFp9g=O?{?Vs2^E#=rK?zg1JUC1Zzbea9wGDIm~0zXQCw*FgLt*&!|j_+)-) z1S)`SX7Gn^!Z#4J!yRPb)*!EW@1m^{^yx`yU~l>2PHw7f2%FSAf4pf_pu|<#8tOPc^IGXn=mt+=FoEbFk=B#ynE?ti$ z!6Om*G*}gx&PFSO#SjiWk%ql{UDO4U|T&*84IGzFSU9?ke1PVlwWuQvwr0+p+9<5J^p6`@C z3c`OSva+BaqG`t$oqL~|^~q69mj*N$_N#CKqF9xRl4R5R6!;wyf)}t2Z=lpn4F5b6 zd=(o6zb#%>MG7`Vy^wPrE|tH;jK2W5RyRZ`oRXo+T)^}fPIendnuC{=%ezn8JS!d3%wxFZw+t!DZ~NEY$2ba(jz0)cZNm&*Z?KeqT4z{g`MZOCpJI z_5^F)O#!?wAe91XKam%77jTYB-$7O-he2-DW8-7R-pmtaSLQ2%zDf<8)TDCS9lq-d z7D@A@1-p0W4MF$DU8cSQnKDKgvh&SYoZb07DRlC*27yKBEC=lud4k5CFB1W9{|1l19GX?T*U?2#&$a;IneJ`{z~`^|i#cqe#lw-M??SQ0*knQ_y@ zAkX|tK*0h`7I^!_(FTT7O~9{L8XH^&-RyF$4|qS1>CegeVcU%wi;x3HI1?QO7Pu$} zz1z+S0fZufqmFM){|gMSjk_`Ws;}m$CLkPNQH^L|ux|fp$1QRKkTn(L^NXDwzU&?ZjNZQHo%-2~;_RUQ>_Rs>D(Aqk? z2@{*>p0S{>M4smy-h!T#K}cAP+qXK5Lfxy^$*N}2vpmOyOS!WSZ>Nzlg|D0@ruhxM z(x47D3uqhEPu?R}m#y3Jik~-mR#^W$$DECU$J+~WB^INmL9&+H*Vr`cJ<@dXm!*jb zQI0ACcS65kL>FgsB~>?8p$i1+l@apWOFRPp@+J-^+<(-;jEQ$wW1d?*D3FI z%d&FvQaw~Jty5S-78D_Fy%m>-z)+C;olyKNnT)Ao1I`bS;bU!sJ5t!Q1WIvYjl>4^k z)@hJTRZ%#{?>KGi^YNM@Xym)P0n3=#Yht5Jv>Obv+JA07^8^Ps>HP`EDO4Oi^@fxQ z4#mE*ye4iyItinraqzkA2$ljA6b->6mC)c0@jaY~(HZoFB&hLDz>QT8nLG@K>^po2 zn_*ZGN>p4u0^?1(1`s(7(Fm=xb#MPEKTAZjJwK+4u%IRGh>I_px1?s65Bz+SMk&kkR! z!UD649evT!2t@#oo#t9Cvxb*n`Xmz#v#s=AYR3JnJDXb9Gbt=9JhpZ0u2KemMMM(K zXWY=c zcM!EI(+q09mXjq(mL*xE(AFh~vX=taKz`@Xb1;(1w;-&Bk<@QxiCQUPzV?cnd^T>J zvu0@tf^nMb?iYtxEU=Wxz7yRR!F8kzNcwIp66=o9`F`kiCc&uh3g3I;#%sHnEb9VA zAYS(mgv)VV9%R>8wk|F-6j!q=5QpouLj=O6A<^~bQ6V0g5XkCqwvp~KBIcFt$vh1x zJX)s*cFh$B*`S`7&nL7{%jOYZnuv81Gi;v42*9KhnzB9X7pBHmG3~8$Ii=Yvobhkw zAYxAhNQO(=>V=?uDJ_W5yLI_DZCxF_KVYX{nJdB$n3+WDHOBzS}m@j#o zNp@OA1uIL|JN5w=@)pF`b7n)jN`{6$`2(h`WS(XDSOf!cWJe)9V7VTlTPyx_Io7&P z`flbGduI{Qwx+fPpv07?zgFkp)M|tSRP;syCD_wiFNaiR8$Ea z>}tH{4H2D_cn7%4;0I?@L~QoMx-~Bu)n9DA}bl*1Kw)p+vQXTJ+Z=3M-`D- z0SN)Wc!?a>QROI-hQ{P^`p>3vd~MvnUv;GUeJpVkCuheuIDmi6EhWKHy{Itk7JHm=P~--!o$2(x@<`K*x3Z@^BB1Ig^+i0u+iYP z??n~$q^s-y{-d8iv>TDhrYSojtLpU_Ny3%i<%G9vh_DAMA|Iijia-^9#0EwqcK&wSt$-9mBCHt=VzH^PUd73WaOOuu|i90|M*_sH?86bZx zYm1{*?!1SPt-fuo14@MD8}M{3&X*8n@2TN)^u8qcIO2US^F4D_*=WY^7QRJ0t7GP* zo7n8`lC=(0%fxETpqh9QTqFAAbGB6dN&iQ#>@$x|_Q4_jH6)2yE+aT};Kr-mst(K+ za9G8jDZpDCscC$j1Mxj@7u|rvDk4T#cWo9izV+&hU`E8exIK{9C-Ts1)@v>ad4Onr zm?xwqLVB)1V^&QXCrA3OXS+J4HnzA*54(mY7DYiS&YjjD44xU(1d;Bp^wmW17WR-P z>fA04LrpbbJFN~YgqTI#|Nf)vQsmcHm45u1u%{B-T!vHf=P0pjQ6QFIC0(~Zza2NQ zsq`pKNRG>Ohv&}e|2-+$2I}W|TMltzeNSRzONNz&s{)Yt6aXmH;VIC|mri@VewOb1 zxHPv7iJHA!D+V?3_N3u2n=&c}S-Da|B801>pMzIed#r53o%b@Wf7N`$G9IK1Yzc(t zW}nH=O*yP#I&hiMA@|;}%vZ;lbQrXWlhHIg?(@6(-@=3WfW(<)kz_SF4*3#RqGldS za%QDVek_t@d7TSlg1=Cq^n!c+8CPH^HK8mwIC7Wf8XID<9d=Lm?UAXCQR0ZtZ z0arpnk%RN7S@xcRlHhUO*UW&hYd(-aveTih0l~vYm6{L+j-iHdMheSCxYrgBA6V}2 zaHWt;Y>KP-mS7?p9!@nW^tBi732P06vW=5WD=t?kW=yR0l^yBYxI~&*VRuq4Ug*y-i}Mf|8P1t2!KV7f6z1a!lddDp4B}Pi zvIF&GM#IAmpwH6F^A9WYEzP??NEg!zJ8Q~&QBk!GH}Sd|4B$WH#>W7T&1n*7$&-B+ z9r;?~L#Bdk^jnt<0N$f{lknWzSXtf$-0V8*CE`FgjyNKoo37<_l^NDf`3$6$62 ze1@&spx(>RDH9$AaID?OEo;vR(CT=oeB!lVYj}0SH`Rw-J9n_Rmu*Pmvk%B89yL0j z(!WthLRd65U^jL|_LrS9f+&vMPjTq~6MfL0pfs*-_uQ9Z;(aHQ63vmTGmzE7@qu5~ zJah+J2u&Q*MoJy$Gt}F|sRK7U^y9!Fh%~rb@4W~t=RTR7rNYz`d5vCYQ9l{z*||!~ z)-)hou5Z=ZT4^AaV?`BKSWPr!Y1$+|>mc37|E>U@ts(0*wh+ZO2msxKQnEY;RgveS zc)xfSvk!NaiOl%u3fTh?h4Z7=Q=o;LVKMn>?QhpmpbT__iF;^Z_JsyMC;|5@XR~fR zoD3yH^Q9ZWT)Y3$y45!7w)ecrgX0$n8%y9=x3m!hZ9`|!$au3dfgPeb+18Obo47ID znKXX1ix`cW`pHYhB211MlIE!+wiSNGj8OsHyBO%?#uR^2QAZ7Aa{?uN8rERVfOwhG_EnIC+wKB(I&B%Bk7a z(SXxZO>c*-5_V17qbO$!@99p|*qKBXVjm(W>Nru*0Djr;cHp2te4uYE+vQrwF+_j{ z5oaJ0^+R(d&=`{);XxgTF7d@-Tk#Wj?%5Aot0j{iyTkSnjV?T;XM|@au7dbl-fzcO zZK&%kOBYIf`4yAY(*{_@k%Yi26%J6}wZ>P%kNW+nm0JC!0iq&lXNfWYCXt``JS-Jc zq6mM%#dq?#&YIKMc*ks|2v>jFoXsl=vm!C=!5eEZ2w8sVxntQ^$>KP&DcuhyH233D`s02(O%hoNoWHFgE_H|DtKQG{6GWg z?jcLDljqWrfX!GLE#Tr$i^na&4+*krk>UHUe}L)PMfAI+yXXOnLi|(8_nd6!oEoOR zFF608e@@^jOh^u)B_sp8*6-7fIc?VkzZ6{C-T>_MyJ{(r=f;7J>z;$JI?k<(e=cl4 zMiFOXBawrOa+8Mm=z_P)gr>fTIFuW>NvmiOieJ#V)H@v%jBlw?=yQ zztW3I&fd2d0VZxardt&%O(qpxR@58DnL3dco-9VGsv{7YKWD)TEzd%36Q>~CTB*Er z{Cka@1jvy&yV+Ay^lE=rmIcdMW4j0qgp|kG1D;LR)N7^2 zb@)aXRAAV!VftmValeK82k<;9*7w>a8w?pw2PDwGuMNl|12a@|X1Osnn0(>SLei?Inngbk_m2{A96y+y88f>mnRKsZ`~a&_v8+eT zP!nd=S#vH%H?!lsn%0;}uH7BP+|vhSrHMDv2&7r%=&F zcfvTYY}`QQvF(fT+u^bYnYj|aN^Y7d2d{g3-a?7jJfVviJOG^HXHDUJO~zo2oupHm zoS90Z_ai=*tGZG54T{v6R$J^}SoD*8Ccx3-Sl)Ws5uc)NXGt!24yyuKU;Mw|Z&PEa zmWxNbB84Afe#&m^Uxsz&eo;~2mzj9q=+7{j5_&&{p|vbMVg}}WfQ$m9tNfezllP_E zMz2idFx7n1d1%zSZ|13>a%B>8EN=HG$SN|;u(8UvjQMD{tH}mgKwzWUTjQ_dWyMs% zK4{-njE50K{t(iuJNoizh43H_H_K7fe!Z_ZxRwzpbjeB5k7cx+;JXe?TWAIp*C3qV z0{gB(gwE+(|C@bCr4%sw0Vz%d{sJfqZ#Vxpb~L>d_Rs z($u-jdC%odn0qSq1MGwE<(+r<-?|Qz&3*4_9~!nYhL}2*Wo65@cRi^k6kkXzrKGR~ z)@MUbz1a~fTRo(A7V@)yT8YHUOY%c$Nx5PT)?6R1A_^aS3ih|rv%q=)it+t$M=A*Q z$_t2EV540fd{ZSXRP%OVtlmBfa5>)Zo73o5!E-F;iF+_x6hgF-c{HmA4K-eG0u9Z? zQ~m$_$C?LiP@Z=$Z1To$(0EGSAc&Bm07l_7~k4KrE{j-B$(RukuJHA{NRe0FADn=0*tcjsaE_1pI zX?q*op_Fz-B%=8eCr?Q3PlNnBxCyZ)_fK@-CVsWJ=e?tBz>&?w4ZKC7a%lVhtSA(+ zs)kS+-+|^W7mr+?8~QrDir;ywNO2sRaM2lVB)RA|c2Q64Q8k44=etd`nb@N^37ZE} zt#sUC9gE4#>-<9#omNhXn$S-SY->ZZ?y}3YRW9?Fc)_ntnc-~Z$9&MeY&cv78lw5e zXp8&z&zP$h0Q#`C`VRm_L}-bD)x&*%2Qf9^z>jto80i&=vW)A;(i5Iu`)-B~P|&J5018x1|L|ZX!4XsOm|m*I`G&^+3@_J5fKV0wbE%9GntM@ScDZOF!E&W~p^E&n&q6iJvXR9d-$o2Imw%a6{LU71kYg$H^PgDw z(-E=J;9ZG{o?^$`{1(YZ@{|=eWeTd@U{BG=n8Qf=3OK51pV6j0Xm(Als%E!ooPm8} zh){!jek%wfyk&J1bryDqsEG7hyfNJq1Wd%kC4M>*xu?ciWBt)jxMkj+*44g`0mv>r zLrifgB~Q39Y|ozTnzt(EJ%zovwC+O5Fc5DRNkr`>TT(*0?yQrLSPtWkJhW>Kq!FqQ zAd%SCp+7NOQVy@czv`7tN_(yW_;&A%CJUT)H9*03ytpW;e_ChR^2qO!>{I?N@6B4c z_@}t9NS^A8x_{QA)W^5FHX>IO@UET$$ikC8Rh|IN=hddw@V7BIW}Og@^4MUk*5$hX z%7btB0oAfm9cSZ>P;2U5>_!f@;AFo{Q5w<>!FIfJmEKXsFO!EU_jF(BoOO1&TyD2u z3JiGV*$4V+PU}%}7w{cP9aXDcMc{dWK(y2$=H8?BEyd)6 z--tg}jYk&KXqp2Uiv|}@aE>^v5?l87!YK{PyQTaM*wUJNy-zV~Vq;K4+#V_!oD+^V zgNlpawLfuN^0WW;Tm7%e~tjUr0N<-;j1CY3EO}m=@m6I$`03Bj^NlBrUv}VGc_BE-$6f{ zGV(=ch_h|hpBf(V9T0xkoL26Cw_I9p5i`*ZXF@US$?%fF|rHWCp4BubqS4Q z-0o^rso?aMEP@2h&3%!X$*!VL10Gr=P?NhtI2eorp zm;v?(PAx2_H+QlZdRV2|Z;=Vi5>O>+oPSw!@qxXA8uX31Fn%5yJC51dvteH6=6#U+ z$={fgdu~FbOudq?Y?ti)-ueW4 z@0n*;GBJp}fcPDOJE*mLO>QC>l>5^1Ub9ZUc}U@YzAJYc!Q9y4si;GE8}7T^Gw@31 zn?v-d%P#ooPW7HWCGc~51})bRQO-ZI%>@%r}d8KpFcQXdjSG#ww>0Vba|25;V5$@=e2XEcYe#3P6 zc+r&APIT%CS^ZH(98`V}N=K=~qe4p-+!Tx-Hj#{9wVr#xkg#YDPDf}{M;k`E$P$j< zR<&Kp$)@Ys?|h#lj@Fm_V<65r`b#KN@{GLM|pZ9;tcQ4#qEQ^lozqD63d zXCkfJ$wp3(3tuLTdjaQ=is^!>MZL5b?wifO$t*H{46+pMRmq`QsLAuoo_6VuOOxwLuQXs6f+Y;uTfoY-_4-t;G+L6IjyxqP&8FqUiODqU($Y#m!gNuJhf;WI_(8! z)>Z~arSv~xPtjP>Ot5lW(xwq@rO_;0)mCqmk@r(>MZ*&vZNwp+3nV)fHs+Nl(s=Z8 zYpvb)ID{7Wj9Go1-^8FQX@)paW`JS=8m098y5b3ccfn^w7xH(6a9C{AFUwP$dJ~-W z+U>PTb9Xs!YlLxC8b9G^o5^*9F63Yjn&JNq=C=sPY}WzlVPcB&g~EnikNSEv?SwCd z#Am}b$D9X+74X>Vo6C{hO=GZhW>{rFng;osEA>-~WU(Q?gGk!DUAk$cy9qJ1?ilOj zrVQJpmCFH82$8`?3m^6q>=nJf&ZcJKT~%rFUg|k+;s5PW1-!z_HqC$$msd)2pH!!h zfsK#i2rbZ}LHeG%;u9`(6$Cdw-@c3r$Rz9C#H(0t+oq5Vkou7BUYY9o9xkxLYB95C zR1WYV*bK&CD^dTi5z%5o`eajX7C^c9uDQd@&j9B^3#ywS+pJ%7CsRKqsgr$b(JT@r zC1hhTm#)R%Pk9^S)>a4FYTirdgQ>Y`;A;oC@l8R!UNvi~gQurT624^#oIlW!+?5P< z$cLCT#ZL`=o4Ta@@P{M5o7=UxC#1w3A_Uq0aKjMi#lRqg^5=#P8$~()Oy_KQUzGsa zX=7H5m%T>(Di6FJfuAbuza9GDhTAw1g4^j^{YYA)2sE^5p!%3M>%?>S^y(Qe?g?~0 zu(1P-!%V??M0HITq6XP<_C3mwu#alQTt^Nr+v%x(`}_k&KO)_B5y;GXH%ktTUx zf3tXSPYp^#F-_l#?M&7MQ%DS!&HK&GrE_pfK~*pCR()D-+tC-3{H)O|wY0T8E60^<-2Tk?x5VC{mNdzpHbreK3 z{wb-kEdliA0zDP3dP7`Jp|wv9M8V*E=k^sg+`sh^{{viL&PE$;dEP8y8>@+_lcjVp z;sFAyXIoY41~93!tIj>5%f>EXIy@65-cwz}-x_CGGF{uryW}XbD8f_ZLf2%%Rx$7_ zuz+TH7q)6YAvx6M9kQGnF|_ImJ{-MTP=2A*p4RaR35T}49LvbdYl_V+Rm68@^cu7$ zZbF`AcMt0XC$S4>FGw!x%C4Bp_lhcZl?65)BE3Xlo3crHz5}n=B!npN-Vt0VzUZ8E za?eA~xKqUrMFc)Az(<0-E?h40zVjFY4JeQ6GBG@$M*>8m+qN^b0LK(S%<4k^>!ZBF zMs)3nv&;;+yr!6=9SrL=G%KqySwpVx_`sP<0d70(*VB-)+AiZzPo=fl)}!FwA-ROD z}xW9(2>EFEuS-iBemlxos_k3SudfK3c z9jAuBTJdH9#RSx1z(BZjJQNs;ffM%77Sv^!z-W8_tyjI^3KAw{QJ!NeNWid@z0_6r z6bZaybX3=}D>3+@Q}QRGUq|rjKOn9*nbsrFUBrv#Qrtia>MDM*obt3vv{|^uMt3E= zmHuI6dtb(4o^5#NHF>_*w;SO4H&DS@UX*hSMy`ZfB#8JP@XoZ3SFqN1@9mYKZeGX9 zAt5(ASR#|AV|0+deYLC&x%2{SO5u20LfRc&a0udvChTiOK)v4b;dlU-usI;D%_-wI z*w}5B4Z3SWFZZ9lpK_q@>hhjFuSD0+oCO^XrNK{&6Cvx@N%Ps%Bh@uA@g;A5YB+GD z(}$8n!g9lLos?45H3OebE0337-1=?(d`50Ds_E%%J{!@E_y>BX#?Q(o;Z7#i?Aeyt zZp+iSalOsO?1KqMyD?LW<9(kzp^=FDarSYH5>v#-zL_PWEN?1!G=0o3mm-<96t~v7 z2@FST%>h(yX@ZTQn@=keJ>h<|y5WvtK8X6R+0|)9B8G3c*DwxFj-s8~yi^zA+lRR0 zphgCHzmjHHJILHb1?7s?!s{&L-BbN_MFuxLZNwTUxs~xn{m&5DO`>eod)YP6@XWonK?>?nQC>2Dg?~>fj%Jw?QCJi)Zi;ruF7oGn1pToXH z1t&$$!V6HwiWk|BceUfHCtJept(|J4pweGmwXCfZyuvCEW87t-?&p0j1g-7X8Z&N? zj&VEFHr-L@l^A?W_dWPSp(e{|AZfbrS#Ew~MpRMEzdnjnx;M(VKa=J)%~-|=&}_`o zbU6qKf>hiyly&F)IH)=wl63b3aBZ0uF@*Eben}L@nb@&AH8)h+wNpv zt=;Bgc}@p2g7Rh^&wtDYt-qTUCq*0nE21-D5eDKH?s*UPQcszBS_>eLG$8{e@D$?N zc+7Cav4>`&8LMK}<$Ck$AlXCs#5SBh3)w)G%Fa4VyQ&kb;Ki0N_o4urHH+*U@AYCQ z$b&1Mc%8qcn9O*qW?7LK#FE zB|fzT+3L{ebkxM(LU-xvA^lFw82pUGKSd4q{sb_C2jcEw-Q3k3^dGCR0o2q3is{|h z;{JOJny@h3pgVv2b`yv=LswS7IrF(z9fnIAg31f#ON@f=Tz(}EujPh-=?CogZl!kj zElP2aC=hq{J>>R{>-3{B@qFiCa6{SL3de!v3Ia(tr7y(A|iCERpXa&06A? z!v~}_jG&Qk6~RGLo`>(Aja^L}{jy*BlUr+-al3NPmd)opMj*7lapgWf#5$OekyPI8 zn42S_6kVAmxo|%W?U^CD{%cq!D*{_fTFb z;jKu4Rlw3Q<`$Pv>%Qr^hnaUlk{JgDM0Udb-u%*S9(aS>ZpwN+pw<_#P0MEC=!OnY z*YxJJ1bb5Kd&P8i4?SBixQ?!xQbrf~<%1E(8=zT&O#^T6SuPXrR@%G6RzZtqEcbbN z6dlKfsgrupH#P|L;j)Y2n}y?ki=e=J3(xs0!^P{lUDh(5CK`H-wmwt3rLU)zex6lh zy_6NYhIm}cuM}_Toy3c5x?RrJ3`ej2=&X(E7R_}R!F-X=gitV5E6vd{8U^Q=J5CxMOevsuFz+iVT2>Jz9$ zxX?X&r@t1m3ht&9p4bx*?^JdR`4l^Kd0=8<*5x#~0f$Mwy3?v(J5U-XAvF_Q;&+l| zb87^IT)rrmFDh6mmW+Q#T%Y!)P}4)h#$b;83v}&?^ibJTha<-nKcEu=wWHOW@YA@d zzGk+ICp;lGoV9mn!mkY<^V_35dEx{%?+Pj)kTy^<(w2jFM`QCsnT zEt^YuYYF>f`OAmZoYtoy97A)L^T!R%KfO&F`dlS?T=zC!wplvzgXdV6=O*msshQHR z-eq@d_vH_|$z~V91U+6<-;tV%d70nHn-t|WtTR0!%d4oqvdMSZ$!Fvc#TP$SmX~uc_*K34=ly=_Q%gajI#p0>lkVq&1c#wL?;CoT zj%)F%HpS0{?pi$Au)1!d(JrRH-{e~8iLJXPh5K3(LMfj=$qpYI_Amy4BMEm}j>B6g zsfN-hZ3NrWC-If|1U)B%4ziI3mWQ9@h}6-H@`P!U>+VBaFK+L<=H6DtLLG`}zIkZt zyy`@KjqG)jk*0)9b;WmuX+GuMEs_R$RtTI=S()cCRL4s!l6J^|DB8#?9e1_D75oCs zsBr%^IBI{i>CNah;OiNC(SXQig4)+wczm0Fk0>4P<<@8$x zr~De;!rsjpZQ)@IF3DZSy$~&|bIIpGxftuv^K|>Pylahw{9bMYJ}I6HlW?r_Hdis* z&Im6twJKM|iw2g*ebmGqE}=ovHR(Sh$E0~h)42r2VkXXt`H98D@Il;6!i%G(Lzv3| z!-EpN0D2=ZS6hNeX>V_e&Hi}32it3xgUs(OG%~sI`~&rRy-iI^Up~ETA`N25Q!UxUgB78l=O6it#$%2+##5 zT5I=BQzqv7GV8vLX)&v&ar zr+tOXi5fPX;)kv!Jq=DQ%!oU*MfS*lz63;5Ox+*p*i8;H8hV0t;mp~bSO1t-v)9bD zaQ3L*{H>mM`n-jA7+^F}Dpr~ey3OcWllrT!cGc{99mZW?2Rx($)&V*qK=b;>=vIr1 zOypkowoL}S)_v1zvZU{KFm{Ya>!OOhe(bKXZlfAzLiFczGyJj@q_mEpgogs*`%0ki zy+w%YBOn|WH-g{Rao zK{N5x=0hCb%0}y&cD+0~dw1*a2yI$vuBwOMk59)9yjbMF(uDG^X0F8~{M^O|j(Xp5 zzq|0r<-Kz`w_Q8IxWMU?@Dxl=1`4zFlP!rT0P}f9xo0Ht0#URea-FfDl$i3=$(f9j z{^ZVh;C3r}oexj*_QcAwVuSd~UrzkUl|)JuNu>!3r3vS6ALxl?1KFUcCSvsv7IpU9 zze>HlnQJ7NEQzrSHk48{sjH}2?$VfRr0`wr<-)&;voJ_T)?{OTwt`96uyT5l8{0(r zGXF1pCyxcS#RlrVOygpi#_g`G5T99j)+blgG)<%8i#>Uq4lFf-F7 zU_mdFe3Tbs9AUTYy>9*gEPZ`E(|iB__bPJJnY$U<Cry>yx*_a z^HvLW?BE51zVTJCOijuZkh=HMB`Lpm`=HmpiaKSa^LAw zM~~dnRr2X{};zL^LJF!iU(y|H>+db!-l{~Atks$M-tV+|TMNbYhgKwPNu*mR_9*xc;i za1!N6N*tVbIolU`l__G;wmHy;u6bmY*aCUdn;++s0G!>Yf)skzxii{J4q_)=Ie)FG zQM|04xPaUIMl$ZwU=-JXtP_6_@|68CZwmN8Mn}#8JHw$4G!<*FFz~gFH`-!*IXz2o zL8hOTInW4b3b$)oo#9A7(#&R&`fFyWot756+Gs=tu6G0S=g)iEq$@S5WlO5%5w`q2 zW??`jVrCMOy9+-N4&3R#?uCg^ezyZ>+EKZvj^4LM%5utW_s zAPY#;tZUmgwm?CBiQbHtB(#C7DuxWLw}Yrn4&{Gs%zfWFEq90YSu4^1+oj-3Y#B`0 z2dj9(33ekAQ8PI%gpB0dCYfPk8=2ucw&<$(u~H`ri@LTRP&ffimzldHWa5UvCiJAj zw|4_2GuLK?Ij>jMghV#qBzp|>?F@3=#34ssi(Y|9u4Ywhli0F*g_5=Mw5`lG6z zRyajgv8i%7t^@bm3i40wi!uvN&s&dyZJDrk?|^rzU%us(?IelpULAg9ee%EfwnsrT zg!6gIir$*ZB^DVt1NBL^AJVX+uk3%M#I~#fYdd`o&-ujbBK|e8BU-(PunFw`rEiSQ z*s=lGFW8O*2^mAnx(-4@aJ=rIA?VD)9P%>j-qFAYBN{ zM)SPrDLmV5MDF&iiv>gkmV^@#coyUzdMt<-Y5`Z}ssYBmA&YzKK{76lQPja?c< zK+c{cL2C|9^ku&`&9w6MW!s$UZohyz^GNd2TteKj7F=%avXcabgzxvGJmKhUk0ko% z_OzFAT|B^@%-9H(;`dYsP4BKx;6Gd+4_tG2r}rY_!&zt#T5^JsYVHPPXJgY?t*N?a z<^~V7PI905us$>=kYEviXNAfqH>cyjaK&m}38$GEt zCZ?Uk&P}?4rZw*r>u2~nP}UQwRRdrn!@r^)3NwC;d#pD!kZ}M6sF?I*{_QIEzBDk} zk$9byeRO7txo^zwhe+y{o?vdWPl{($WCT-dB^g0=e~CcK*+P@G_q#`nPM6%S&B!!q zkZrw5E}rpil6_TAuqMvm2E~@jC9gx-Y{`AK$XPb~53sf}U8n8s-u)GoI_WYVwB;Fq znySGN)LyR?@tbFEDVm7saTih}?N#zTVmcxcg}&DM=6uhH*rVO9RpPu?fH~6oeNmf$Dm9%v{X8>)u6Vl2 z$LwukDw<#F>2FCn{ZO1;yJBd&j+0@+<$B9>KWbd6SO`2=UgGVsqXqh1SH-s%LS<+h zJow#Sy>ZM05xwAk2b@=9Mi+a`%%WKl>&~51eJgz7OC+rprraetk<;QnbEoW$!YaZk zWhn7c7i5v$|IWqLLe;I|s5zqEDNH4355ifuy{L#k8i2inlsc$rAsS*nWGILvIQga* zNe@13jWywj4iO?827A{AShyrZ&WT5zR5Jn1hZB6!&uq%;Ki(tQ=JdZ?0(Xvn-Rd_l zHCdK4F-sb>7V(K$wk5oiZ>%=>EJwQDX7yo#|4)7#A}O~- z*+TrwJM1}vI;)gYuZ?CW=xS~JWI~9mWMd{+`<(q{P`8Jz)zLR*{RlBMI2!6hC@8o$ zP@e1GFE?-MUC>z1c6cW>8SrfxOk5;;SB^!TrE8*~kz1gC-m89_(Bh&i4f}9vM+2q? zq#{~sH|c6Yk2OtJ6`?-#h;#Q8@k0cUepreYd|5uj?Qi`{L8UYPF2cUj@4~ICwlbrj zM=!Bs5)krS_<)V@dWm2bM{l%#?)kh#sk8l?0acr0umK zCJQISVq^&JnkBvCZ0@I<4Vj-V3R1u%{2^v_;8k>ut={aH8qTXKFJStAO`(AWO7BMQ z*Ai{b9xd<;kl#ydf!yzMPeV+5G!XbSfF6aH^TBU8Hz*1IqM2EugP{mJv!ple0$9VF zAYd&k+wun+rL9j{;!xLtt+7rDzPJHIIY?qJ_dLn`RP4hayJ~?&NO1y@iAqqY*xe+e zk6MfDI}GNJ^^ooHbGk}h{H5IUyFY-^dP+i9GGtp6**lg(K16ZyIN~p6t-9DUO)(gD5Zg(*Ui%e*MVE0V;XxzreUjAp@E-i zSYz2refD{@_8yeM#*DVLn3qkzIlsSU$EJj>@%SA60}U>H<_V@g`;8)+K(1JD=?yrx z0+`(_x3CdYFPNsF<}g~DW5s!bx@nwVuv9lx=R-Fh@3n=ryDbhkx&_{d&AK=qDk`{? zU1WnR0xhfvsYA+HK{;jF*kb1G%h7T1!`9C$5BTT)`CQ*_OXd^lf7?Bp7WQ z!Ttziwi1Vi1dDnrZ4nRfw8|Eblr&X$y;Z@RiJB}CC;@ftdW6s!8>o3#Fz;2hgGE%M zuh~N&&TkP;A`wn~U5^DCCPqs3!^t%A40tW9YKwx~^%ej}NM26j-oLU=&Ko}JcR+HU zC!t0yw{8I1D<|An1+L@YD{}sr&)z5Xqd!Y zxTaJjc&t?D>$q=wBA;Makbg_PM;`#c;Ec=e(8?6&!a0g5Q-z8`$uK9IZ= z4bqmc>TC@Q7FRibvm&d$$`jq~c8omE=cqgTHylj=T%dN_{R{-jB%p2PZBYKn{fsQ* z>_7{xKEjRuj2P&vsu^5DSV_7R#NH3Ud;wi|Gy;`K8O~$kwaCkqG5#u)GXNYEVk#&? z6kLg%=kyP)3cWY*#r^KM2wSPmw*#yhEos{8z1-3e`B41~d<|CdtaE{B=_(f&8it9FATc!BW$$?BQ&*B_+{JD4Hpkgd3-4 z4{jV&dUr0s(omkrP;)-2v`nu7Ulo@TX`rx~dSngKU!;r(FRuflk|OUD>y{V1CF1n_ zyX!LBL%OLpW8Gc6z=OJ4y|KE=%EULLyGDcC7mp^i+3Z-R4lG5TJBpnMbZ>1HnuAA? z`YHE)49x29<6GFdBC!`XIk!l)I@z$9Z1|bfkzOov_&&CK13HwSalnE1bYL^@ZpzV6 zwdn)zCxzhSJvaN@cvhTPq%}6cQgx9GOC5e5N_Bgu&>7q^r9F-BGZ!dMa?$3MYcvH1MoaWZt*aV4_}D5$8sCQjW?N= zO#8r0&5;7&IzU^WW75zJ>Y4{zMRQ zV9@N>-9Uf>w~>p}?d-q^tdXW9q1HfL=e&nF$67owouQy@oL*$BH72okaG$6e?Wx?x z${Y?fEp)XHG_RJNTB>|b2hv}-3(2M0l|S(kji1g?QCAw_*mdHW`Pr*NuYUKcJq_3@ zi~U^Qve=fCbQ#xI96H3fvk;uP^

      okNJq#DKV#_1$`$AJv8kxosCCDq{T@Of9%WAAM>;8^p*dhk znek4h-r#&v7`CxwNfJ0`oOFba?9Zf2C7{0(CwOU*RN`*!jm6$M;v}fh$#z@JiX_Jw zO6Y#{9W=tl%>8JP*}WO0`MSyHY*7w@>}7B02X#A5po4h=sDso>Wtu=6fytgdEQ5NG zy$iH%MbA9Uv~n~mIp`ur&GW)dz5nLdgzuv~@+#O)L&+BFRsy-bQ3YCN%2~Vg7$d7PwIHQUf~3r|G)psB4wkx zNdVI6(@HeKjv*SpDKxGdc202DaUz!slT@%(9cT9s8EnQ#tyZ}UhSpeouN{QYeq$PL z6GQ{>HukR0W^U8ONGQTFLT0bP-m~@VXH@XXw@1f+-g^d%!{-n{dC{QxC!o}X} zSIx)FZ1Y48hVfPNA80Q(cC{pwYyLi4$@T|c`Sq(-;V$FfekQ%W4Z?>%eDc`Ud2`^a z9dqF8-9&x0_Vf9JTl!f839Z$Koxo0fR9{;=wRH<9$cA3dfS!2UAKE<&7{1*NXG&9Z zc>Z>h_$2-v*8M?Sxc-s3$^UASZnuiM${>cU0w6<*G$K^O|9n($TJHJEB$HZTbd(n1 zh&&|;QMW7jCha@|YK{#hKJ9}{vvAf~DX}xza-WwnDBJwr&e*NR1#6ZnD^}EeN~z_Y z+rtXft>_;8eKCLYtBG~9RI9U0ma)K(TOp#)um`H{6CxuFo6we*oa@6}45`YuT1MOY z7IdKJpCQ&!)-`f31hX{teh&a&j>%uAtE9Zh@?c@7G7|r=F}oYb3^&T~4*DmjMP(QJ z4T7Y++`&l;{)=agfJ6oB4Hc)jReaimJP4uMuhj}r%`TozZ_g2$em!5^w zr@g%)4RxnP)wUq&!$N#t>bQUGD3yp~KR##GNm&s&7<_FPZbMR?Y%hy{N~$4e90(hV z%^JvnU}BoUhc2~@9|}|5Ujg2?RGqDGqs4|d6FZi5L_B0f;RuuyojdFWy@q%qT)Ws! zV}|ON{izx<3M|J(=Pu@chbN7FNbhd~w~2o{t7Ub=^3oEs+QgOrsqvoCXF-O_zC`cU zZFG;lovO>6bUt}Yf~V9Gw_6nK)E?HCkBczkc&QuCWgV9x$Nag*`anLOc5@smDuA?% z*?6U5$jyyWykOsYOB>%qhd5MHWc)kRv(wNmXro4@k}`S+N++H%EaE@%+E#ny^_+EF zyd05G=lq_rHMkAi(})97vWIm_OG>_Jk$%NSJGcpr`fX8pCeg$etl34bMjDY&LR&V| z(0kdWSnkVfGHY=41(WW&}SliX9$P9N*z;PIF6mUemjtAP7i^P2w&gl1@AMzBtS<`e1GTwxs@IO~$4;0!$mveZ-0(-!^7Yd<%MM<abPob2C$#=kqW0+kz>z>)LVO=%j`EROL4(8! z+Z66P9Khuz&spnjg?5dn0_oEj?-Sxb;5_Whbuebvt-j_p!Rv)L zoKLTOSnL}>u*>Ud@XJnV@br1HUq`543qa;gr^{E^AKo!r!@O=E)!Ji*48_H^-bP3` zAr|7SyV0|q2BO7JIhsSxj!`>idWZCspOtR_@e0}}S!o9c=JHz{hgIOF@LJBIcx@xW z3@@?BC-{dLi^9Zr4pjB+Xyol%=0ANQS3~d*TSK@2dEFI-r+x@9ayjYHrf5 zpcOcbs5N2GzS!)gncJF5hwkw@!i}^!r~lns$T{5vMI)8B28+a8${R(O9m}i>$5Q;Z z;4acc-vCTM_*b)S$2*h8jMGOy+{~i)ueLx^zJnpFnY^S<+#*N6+=H?xL&SPy`FvlX z_38@e;D`FvfAjuSf|EEZhAf;HEIjIp%$S%6&0P=ulw0i1P`#B6OuqZcAW0=_4o#85 zi?q3m2oO4$9~DF#Y89}$EEUH+X8hrLm)r-Czzo%W>#0~VdR;mw2R?=)`}ZskA7JxGEQUi?(nM09Y=PMSPADN)l%Wapb?8=CCuH z$+*QiKjp2&mKKu#^&*-+=nB_cyx@$AM) zM^usWEw+zQjMBXU7N|ppLK~|nCI{1?=|G>mXugh`7`duQW&4be@zyOqcqpMPVrnU& zJ5b4pFnj)o5RCLm1lH6Xsu+L@LiH2^%YYx}X^woLd>YF4^3j8Q9}BiZsdzS!6h+uU zW2Y=xU4kx_!?agB{V9)j;|rsjc4H%4Zhc}m(LW@a3bC~Suu*~XPV`U_!jkoL&_=wt zaL%a3u1+FucWdfd{VyWLXvj1EV`5U{c!)WzGLe}afRzPfSxvY_NWa>hXlyvrljdp2 zHT~v()|yc`d-z4tXJR#&2QO0-4%h?ocr#7aX(Q;YFs84zJvxkkg8Po4Lf?4nUxtb8`Jt`^e;WIhq;PlKp=u%1!m?= zlLxW+6O{dlSslt@Y#(dh40>qiyA$2RNY!Tr+OO>JK9$T$Ub*Bqm~QtE353TA6veD7EZ%KM!_ zod3%YR1iIy?EhkaR`GdBJU4M$?*@X#5IX$42Wj2hwu{((dk@rUBE8yK3QwK`^A9A3gqrFoCCUfGBa}ghj$RLmEuwb7ZJyvTx$K#YIzrTG_?K^s5p_lBktb# zn?DM?P)xUYz(>mi3z{B-(SgIHse)V04gy(9wb8PG{CT_iPSR(RKp52kwDSV0;LYeO zy^>AAD`x~~C66M-ZaCv>X<8+zBRP|^Y(KbRuX|EOxxtqDTA0}Rs^f{j&4o{rsrecR zoM@Te_WV-Dy9^ls$OKj1H{z7PxuZF@eIWlj&RHdDhcVg>=ny1kG(xr6oMal z&ccE*L-oVyW-mi)!6_?Djy{lx(v*)s9beB`Hx|t&ox9Ia-hoCYv}T$l%XqHi_6T*~ z^kG3A$c4J#7kT%hZfU+bu25T(8xVLyI`z3E49|Fy*)hg}sP$HM;=+7(5ZCwJ59)3ZR8~HQus^%f?GL=o zdV9=uKxR6$s&E$vw(asv##UsCYiq_(det9?s0B+*{+s*jYd^%3FKKPFpS{;}0j}Cc zYAuex33LFzjq#Ue_b-}KNz}#$L=E&0`~vU$5|=pbdi8LJcOR1y_aXknOx)J7JQbCc zni#$ngll}--A^&O|goWtO!Pt>Tn|? z1E!EU=|E_js*xt}IJ?RdSd@~6TS1wU5ZIl<+)B%H$vzus$&tud?ww3WW3s@jzJP14 zT~-O;MKSr6cDI~m(y_M-lHp#MgWLQ-CDz$8=`1f4<`NYdflHQqVbCD*pS4#mOm$GE z$BR=nkZqQ z!wxC2i?#3xM|HsW%o+=@Ls#pAJ>%ZBka+5tijH9uLkZu$uGgzfJF--@ouSnB8M& zry9bOSyBK;u-ILH*k!)|C@B>r^M4$K4F96HN}ZW^Rjjd~>WY#gp6fzlA#=g}y=?^W zWT^P54x-l`6|-hK{KrpicoJRdmpENzdX6aneBj5`r>pW$qPz>G0(#HS+sdYo&So#m z)z6s$>e0Ekl;EYmFC)!9d;ak7$`4*J0BQXYcAB+Uz;YqfOL@o5!P;Q7%)+c?+6~-J zHd#8z_f~2``J+&E7>mT%Zqp9(ax@A*LV)HF!40Ql&aJA$#%c4tgg)cy?2a?$-M){^ z7msY56+CJ$k5^i{b3i(ODWL>nS+<>c@-w4B7!nhce5y0xn_{?$-9=sqMl7bzlfcYR zYuir5VG3-a(XS=`{g=W;t<7tq_@wctopCSZ&$n(%13LU%EmfAZLlKWwDRHW_h_;nZ zWTmkUf>yd|twP+w!|s9t@C6YbsBn5KtqKHpg9>j*E24K*Td9d#%z;%GKTrni0HmRY zQtZp(v^2<+Rgd2OzPt_+aON&a{I?uUx>Gq)Yc{uDUtMqi;WX-v4M$}9z1&@^ zALBnP4Bg1n*|BH+f?s%3O*KggldO@BiZ5q4|0(EY##cDFl9zP8@<5JEt;JYCidV))(i>hRDQ3`kZtd3Q6O!pUY7msS%HyY#BBJ*u7kFATLUjNLi4X zaCC@7N^$Wom0Mp*XY1>A6NySqCN>sOqfUU8aImiYvg<~18bw2DoyI?QT4+dtsPrTe z#ZY=O?kh$06cO+6YsFzB8{QxMz$;dHy3@_n(8gDR+gyK}pA8#PYaE@bfohMtNPKKi zEC+ca-=AyR@0B86uxs}|c-8btr|CoPGC=>stefwcp?if0G=~ zFM|A@mV!Nl@tfp&ba!g?0fr8ezPU9fc`8X(|DoTti>g`ERGWW1qQmeI!sd4*K$#j0O9@Ef z5d*sFLeTx^q_l+07NA(4&#Wq=5$XIVE;RjuaJj z@+Z{Ht>B>Sy#nk0L8drFLrN<;80i;X)e$2#7kcnEeD=}9)kv%xGxp1j)Qqa6@D?`wXraiolDJ_-E z@;fg{ZBeFGvnzM`hTKz}Eh}q=RnTJ82A=apzE8O>ga*$yHmDxFh3$h5nCQ zu#-c1UO2A~jOh7|Lw;iKA>Ye37MBxR=ZZK_@qAaEIQy71;mbZp?k zU~G4b^J1MlYoGVq47qvnOjqQF`MaO1JP92p&Xb<~a!V6CE~zj=YWd02*@`G&xzv#Q zd3x|@6@lZkYrK5l!Dtw28Rke2%xAz!q$9QM|@+DW$$4niZ`0 zYC)O=4n}1V`z9|D_bnvw8hQO5x!ro-4!i~e!=G>>^5Yd>t8)M+x&E)e+-^^hm@HRL z)Mq**Lh{<2m%!>D9?D+?je~fld*c$l(i()1>%f18-b1D#T2m*wyY{DG&=sFufy9j* z&jfhC+lmS(f!@3EiAlA+yl@jB#0*J>^R|0ULukWB*lH?igKUD(&CM4jbR`uCfI0_| zYUi2!vHCw#fuN@af^m>rulj>TpbEA-sbH#<9d^3j3mL}M|0Z;bZJiXjf~Wb)+DX*z zl%z^;*((-xrB9#NiT|rxNi|dx-XQMFW3nV73wUITol*~{PZu(WQ|nASSXQY5HEZyJ zm3j!D7@edJJ~EVsCtq~#dr_xWTzp621IXFqf^T_S+b(OzT%V<`cm(4dEA0RMNnWB` zk@I9(CyGDvng5i>?})i$M9|0vQ{ZVY{K5YZK+oiOmb?Y&H90Mcw4%jK0^9TMmx25M zRQ9rIzgX!JIy$=-VLl}Ej~!P$NoGdK!!ZG^sMzs_Ac8nI8OV5`8~)*PwT!2{@FdD9 zWCDHKi;>~=JS&zy)lPD|y>Pzpru_}3U^ObC%#H*mn1khBFSlIv!Akz|$+TU?{p95D zi*~pur{!&J?Vhe?92<*EoE?Qh0=<;O_^;sLUD60x1zqcg9n8a4}9|O2&cZ{a1zt;>maO1P%&dYgSivSIx&YkBLYYN%;;xzuB|_ z6}E44IA2_euU%&OEu*h(4^IYd+47gxRGpHjOlHz|F!`Ws=UEHg_KUvc$!BA0t-#MB z!81XS5cQ(b5~*})7AO(6@xb@QDSkjL1!{MGysp-B()q~w_5t!zLwZjE;$SHHLg8w* z6)Jn7|L0XCM^D2UM(-Q`=H(!9BLJN+wOrX;SS+Y9-!?ZlbDx+P3s&G0eNc=Pq~VXE z1q9CoHF8JZvpo|t@?Y3Ne!ZTX_g-aw*r9=j9S!oS6D5gFXV(F<-EFcD%dmCjQW>y) ze-cV<3F|4g`Q-lhg|$W_z<`N|G=qTk z#H_@8ylHU5uQHGZGq4$M&&*7Ssz>0nuAKY`rlAJ0xUXunZ#-{L*P7pfbImlWk1w%S zEB%8s(`h?U$^;LrfnaZ^cEr$h(|@-B>wAb}d1NGd*(In+N&zTh{&-OXCHR{5iLSFEgscT+WK2#jffe}?mGFgczsoT?ttNY#KT!#@?e z7GsHSL9Ur;YO}#K(POEPajnv=z+{<&`|w^3JoGS4H<@yF$JiX)LJ4h{f~88q{Y&HI z&m<3VlfOR~NsXc*y}eVybsoi6lIjkshbP@5F={RXD^UiZ4QAboE@Sc<=!G0W$m;dG zusaiKtzALq$0x?U0WeN_H8~6p0}UGqJWh)_AZ%Qq-e`|2&K>>V|GD_M{wkw;AH+yA ztY)2Z^9HJOVu1&mUgG<9CkqriZ~*fBw9~;1Odj!%fgLT6Sq6G zflm5T6r!OggL0JDM|U-}FDErw)bVJ_sqhptrQ>kdBY6`r)q!HSn`Km`;~g>8Mv;8F z;>UWm;%uYA<$r5t$PF?%Vd`Omk#{g#%dCuHjOiv;;<{9#SsZ#qYg}HZLWAH;kLC6| z?-nT!Ci+&wmE`3;PX}OR&7calxSxyP@XpM$})Bgye!2G(`Q(h~j0)Mow^ zdA;H;f5>D%b1+o?Fv}c}*(@Rif4Q79WClGcYnlQ`;argbTv?AHPK=v9(1!Cb%7q}L z^i_ANM-X5`_W2e#g3bi_4OsC7B% z+^KUFrRUNRHx7Kv?Yu1T|0De?=kazAW z5_%|xYD=AE+TFlq2CBoTg(=$Hdz412AbP3EKy_5MQp+&b*UB-uE&D}&hTMd&q5SBG zXkseWv>#Fd^a$VIsh{VQtObj3x0aFflW8M>>&A-mGe)ZXF+G)AN5#N;bR>OJ)Lzzv zPdw>2kVIKLDgv>go(~cBDz+A@S((0F5st>s74%KEu)9h-!_I#k-qU;c?ZAH)_?t&g zl(>&BuYojn-M4`f>>TUx6uy{p@dv?jR_jZr^An@RB?`lOmFp(TRr56bv-7*E*Ia@e z_s@0$Ptku;vvTvYBs$9!nw~1_@6)&KW~V&>NHV(e3ubl@L_EOC4E}-?rrve(iv^$ixdJ1#`Mm5PFI|>6?1$IufzEqu%-M=( za_VZgfBu&Xb!DGlcYXa$ZSiws>q7p5Qf|4CbMMb_!j}#P4=}?cy~?UT*Kn(90MA_> zdA+Tz@EfFX+awcfzEIG=_6)jVk_LrUgrMd$!(0fF7o5pYxVNPK1HCL_FKY{CZWb&x zIJIbJ$%<)t&j4be$j;8#X$Msn^&lhSjJV&*UD`L&tC1W?@&L8x!j_S9ZEqBB8dF}0 zA9nlDhZ5*5!#$)eXl)HF#jwNojN`BWfthDwx@}3bZ9OnZQviR`4VT2<3=}?tiK*gM zn2HkM+p<%!q?tv+9hSsUYDzV~r(EJbL<-t0Gl#3@B>!k&70j^V6G8 zB^yT<;+IYKjd(mr%zh6Bj@f~|+u3W#jbxK^q)^j@)-lnuZMaF29e>CEpr*cN=%ITO z{9_2gs_%Ag$!c0cx1T6CF!DHMM_pbuNjo~b8Va{#MUsRWgZaa~4NkZ7O`-}~v(1e) zeO>NgPU;QIj12PKd`lZ5r&J(YZgsrfYBbVupUjTDXy_2LFYGEjJ^PkU--PL~s5+8< z4+L~p49b9ySz>AQbfC9Lw9P(FtyFYEs}WlXr>aTLk~D3WZ!jS`KRbu|a~nvT6xN^v$qzrEvDeci?n$|`bKSpf} z+U@j<_bO8F8w8WcWX(D5*DKt;!K8SPWriU9gre<3ppZasbSwmT$W;e+73_X^cVJh= zL19%v;BXmV$LknkFfVcw{7DbV&$hou%*3xAiY<<@dc3Pm6;Vmz@4WQv1y#3MZ9mAt z%MKCzxZ^fDf<0BIg$dPx+YB4(bWO}>$9HNVO?@n1|+lhOl?OL^Y3RTgtzW!Clk2lBF@x!^}#A>W-kw~0KDSoL@Kd0Soue5bRyIY*o zl6X%Hu-P1OT%!Muc58N3AHOxnOUt80atYkGjGC9PpW(dN=XuHs)ej~MO@r!@ zNQzg*BQK%bq-a~I$yoH-lx+`_(|en(#h)syFXTDu5ED_ubYh^O_*4bG9-G7qrd5RR z_u2^Z4ZH+`4T9IvwgCC;MZ=|u0Xv4etMtO2vXW!UlUEIs#*YCSy67r;DyNqRC~3AOPtOUr}W(BR~_GPq_!QvH@ise!F^=obn>ae=5Iof=l@tW>op+DN;ggN z*r3?2Y%VzuI479yZ|6DHWR5m>uVe}G4X8ePRA7q9l}c&D(f9GQZmGFPFen@kzCg?O z*|(VJGl4c5S`*AZDwO+&9{K!0L8f-35%kCWY$Wi}2FgcaDaEH!)4+=A*-#Qp?A52+ z2T)FJM>7yeL-o4=1<_V&dEcYdQ}L>7si080Y!v@CuAJ`y$;GFO+*$VCn{DY zu$$-WYq}Uh$Z(&qlF+>0kG>$Ky8WU?y1%Q7AFV)b;h8)Sr`W$suv7-)-sle*2j1TT z?+BGKRSno;8&~D+V-JV?67<$x8>tLcH=jVRtU(m_*s5;-tK8QFhXbP@{y0Rdlf-gs z#n<%ZB{B6}gyhA)`bR!xQ7uRdu@;EK(x?xh=Aq`-qo0w^kOr;nM=M#F{)2EagJWuVA;w+Ow zOI&<|-MTNRFGxJQg0Jsu+qLq!v|*4hYZ}HE-vL$KO@EXfNCpG-P-H_ERqU zxlO-Y)l1-LGViW0D79Nq&o^FHcaW>r@D#a?*eSg{;vaP6;y`&fRc_V~3JgZstllF? z;{3jdgQ8|j!vjm>BL7CTfm_T9q?DE|Ds7&1AGlN2;3^N>=7k=H9aFX}YZ+bOfjPWK ztzVgs84WmHttUGoe*95s+Wl5zA%2Ld)}kJm+=NG9Ky1xt-d*&T&FuP^AiIb2e71j; z^032 zwpp0R=>v7Dvp;vWA>c$1G!Tg!_*3jvz3w8YmwWqKznlY+8zXqMxWbJbx-(%S=I3}iGP#C=y96^V;!2>p{6 z<)eWA+7`Qm5rK{BdNCRcB1HDoO1v>8%3xsd|8nS@q3yUT-SFk$og;7(!L{{K`mJW_ zOB<(!4ob-Z&}on#(}|tSo<}VXNv)N4fFr?IZ*{{u1@|0;3B<6Qn`gt5n~e2Qubm{i zS@5ifS$W*elK)(xv{OiWod8bo5U!jV@i_gbjtH#Ur{jQ%-f0yw=iq7iF)dC;O(K+BG`wg_MIhq`$F=l0h ze_e2LS?2I*KX-!4W$4^!>C2|y%HYv2-{^CD4;^aHP}$WqvKAF7YmooZZwQmOhfB%%MRH0;YWZ}*S47A0JXlr_g}(gP62{xIvc$rPU8VkaAfav@nviMG;X6>XZW-DCHj2!)*En9p zZxB6J%#NOjDSd6uE%mO(#Pa){O@I61u0~ki@0nvj?<6#i9u!Lv7dB#eo?g0A%*3QP zvokS(Anr(O?J94j$d2Mfb4OQMIAMumH=;MuLeo{err4t1I3C0648ooqPYQ#7$({90 zIV+6c(}i^Ygil80&iu9n&+?3~WP`3F&Ue{H;pnvMupVo4Vi|e)vQ$5l%WzKut_3Qi zOhSIgn74zhEBXd)Z6>cwK>F=;`*QKeXC+iXQ|>a8c6c9X%35PQHuVR9M=j+#{Jhko zN@CpXieOR^{GEpLKyc&Wy4Kxftpv04z0ZlghzuQa3I)}c-cIQZjCI2<+*EvW14!G{ zzU4lI6=3coNZz6cGPJ(rmx44yZMqVbRf8p{*BENRVdl_{LQe38u>@ON@d#q4^r1|S z3DwWaP){$CkY`&Ma5Nfi=Dw$2JV=9^)@OKl0p1zyLJ~bH>M^KbP8({V^*IQ`17%Xz zhzAx*g@rj(5Y}!%k0dnT6Q5NoSkE2`bCD#N)mJKQgFV;q z?j;_39|3SMb>f4qew4?WP2`6hDr6h&a`*fs5Q2Jm83Br9rJ+ua9ehUI@zR_Wr#*f+ ze?b~N-qnUahXA&TfRp!1|)e;qD^Fj9KVzP*8vp|Syv`5Cvy`KV) zQdO6M$vGJ1NtNkH&;L$w-CqkyCDzuhzOQW;V8@=Sf>ebV5U&iR+{{okJeJgaEs)!> zjC{M&*%<=X)!etmG&mB(S?5CL4|SHfNM!H^DDX+7fI!m&Jpi4M*^pfh?CKinl`cnH zvzcQ_3Zh@qAX3CENYOrk!#Jo6-X6{EB7Tq_`ej>Z(=z#d{)feoi~mv@0L8A{-t5EG zgUtL*f)!4=hW$Vx#q+^1X5ZRQERFWndFvXDP=}#0ycM^*Qx4e3tGa#&PL)hg2lRUTGw+y2jN^A$`Y^+YGD}Y(m8>o2sm+Ej%S^Zk}m^ZX38wv;tpC zf3km|ph4(={3^c6!DHjF#6nxpRmN_Lfe9XV>l&p-?<)O{nc6zCXvqmo`kdt!SFN=X zde_JJ3kbW3F7cLI5V;5wM$KukV??IL-#Nz*B!Wagrv>}cQmTHj#Wlp-7{Y*gGzg2W zD^WMyv4afzJH&K?^wn6_bCA0VjH!b3; zIFQh80AU3+O7J=g5Q&|j3#(R4LR1?ma`h^J4p^@PU*P>k>fr2kdxbCXW`ZCGl~*Y@ zo>3~+k@AU{!uL_@@3H4S|+RWDR`R%i~0&Qno2`fnNbhK zK^7VsYAwiqqhX|xp8ui@lA-~0G1SL!!;aSc)=DJOEd1XKy>pZWca*P7^i&O&NF+on zsdbVQ6Bo=BbX9uwR!oe8?$n=DXMucdX8_#bgw0!Su1nQONybz`|NG&=>%HdOho(N$ z&`3%>#|j&6+Dy>q=DSC@XAcXi9zikWd>^@)D(~u%^g=V}y0ewUw5vS$ZjHtUpgeGs z24Y}`b+mE!=ZY61Xq71=QZU<NWU%DZ)krGjdw%h&m>&A;eAkC;BdeufjI-MskgqKAt|9kFE;&#cOQpT`>& z{4>_&j%R|}#rH+`h1YccbY#`rIK8ZYCCo_t%JT;sE3lRWGgnqjjVX`><_+6ww}SSa z=cJ1g{OxU?822C;EJ9!0UoH&l$n;A8bRu7KJtzc8|2V9z>7-0GGts247-XE+?FR{j zI-4m&;-|mo7F_@_0M&@OR*<-DE1VSwK4+>#m=C-{+8{NMQ1o8GqZG^5yG9!{QdtC# zRxtg){~P!we}34(S%chY$*DIoGP1ARzz+$Hj8KMJXpD3g{8gHZdi`-rRQsU@m#C=o zQz=M^A%1*=2I;v0D<5wVZL6nXsomBK5MZoClUuh99pw#uouQuhljxE44W8k~7^1mw zR;~P;W?-_tq9#tf5L8vCPTzrB7Y1kx>%^Ld`Wi3Q8i6626MQJ*A_}-2CVCk6c>2kM zw@$BRWku%>d32$`wC4oQ&mu|ejkAJl<}?s%x;AopS_?%fgps{u}3RCdq^%MU>NWIQzPR!-*LWX@zj$Z!7s%6Me9B%=02jSUc zZ6K>?3*WY$q6ZKH&xEdsQP7>}Rco*Coc<#7^F=#-%>8H9&m1oaQO%o0YQTFGlsBpx za(Gp17aj|a$csNg6H^#VskV$Q#2f^CMp|F(RNdi*cnatW*?~7$TtsGG=|A-#`MgAm zajANj`}aR^gO~klo%%n8=;f$wrC{;O)rQ#7JIO{y_&RQrxO8t-QOfw}GRv;M>Hg~40)*DNVU#PMEzsaN{7?b{Ui%~oQLo?e=6&$Nn>%rc^146}M7H`uEd!;2rWe6OIuV%*DKyVsry5_{q)=4pWJF4a)cUtXF%+b>;aHC-d1DPeoh5#Iq&v;y1 zy?6PQHni3h47R9XUr0(T5l6Rm`ujV%J-VMv zRotz1p|qDZWJTqi@b>tB9G!nW(|iB_ud7BIXR-JEYDD{uLNvef>oPOHe?<`@L&=Yf zI#HG`Gi(?(6CoNUl@lw8NXD>rPNL4KDb-{h=X{Q%r7m&NxxTOS{m;$KAMEY@dOlyz z=i_mI6x#P4R-Cw+wP|Gd6>B8SJ(L!wxK`mAG?(V1?tJaCTfuJ~X*B&*D&H@6)P?=* z4H}&;d*OjmOZG+{RPu>U631db0Ut3+My|xdZp1PP-oCj1WYZS0;wJ=6b>0IyU zVShKXCg1eJ*Yuq8d3KFE{j<;Xo0mDNO$5kXa4ddX_7eybIQn`OBtY8zy*+r5s{v+y zKa+J!rT3bPcc<8IB6c}j_*@{*JYzwLvv7&}i+&MZ{aX9W8KbxIcr&r(moI^o0448k zcsIUnfnDd*|0()(luydezO?Y_o|>%NzLJRR~DQ@m0x>m^Srp7J@|J;vB;g$(L_`$gC6B>=+0G* ziU+QeG@Zlnr$w&(_J*DglAyy|TYQGRsQofW@>_oKdCn{48?iXa4k`zuotVW9zjhpVYoU zopH+hJAF6zv7_Yn`*T22CvO3fG(Z!L)i620Z1cGsDD>R;x?#sJWV(&jlq^m8{S#oJ z11pqj0QNj38R_W-Uv%f<%9{-SH!X-j{|78f?DM@L(zRx zJl=Q!wYO{5U4UELl_78QGU>b}F;z2PGWJ!4oWYZYwqtER*~M~Sj{llp6E5CZAx@b1 z)EnN=Es3@3f5<*dVm0D+4f`4u$k9ihU?}~&N8wJYxA-Mxll8}9<)O@2wXnI-_k2&} zK!HwysI5!sBzu{ATiGpH@l&gB7~UCOH}!u_Dg9}omO+#}02_8j+g$YPN)e#nKFM<; z2_pA6Wq!ZnICpJ~eR8S)dja-A8Z+z*Wpn<)(_=gDnX>eh>FDIs=Tz++3v$nl&pmTs zjJ27!D3_q7V^Lj4B=h@diahPJeButDm z1wbhn)&CrxEPC%r&iMp4tL^{d8FCSD?)8d(FuYb}Z#%W{+L~|jDw)Il{jsTX-HegO zz`T(@q@Qu6Bv%I8hRSR8$grIiUCPm1pb_YFLNPMTm zul>>5c{a&i)v|4wMmwc2KIXO@{kG9nRXupb2-p5484TjrY|McTojmJNxU}QI8ag%A05>+vt`@d6p&OnP)z9qMeFx_{(}rQQ%Qi$x zxu$peIg9C^2oJs`(O%q=S*;LH$x>U1o`F?#@!il6z8(w8by_0L!f${D^>*Zd*|8dB z{TbJFXTG?1f}3_urOsMaeZ>@5+~2D4Fg?kad}=TH*nDJa4Cq5pB;||WgU;H_s2rqG z{l^C))vV^D=h*pTajs*KDhh&)!rE`X?ue@?;*}44c z&&6LUw6i!b>5jzH8FSOmh6L`sey4vuTk=z;aTzVYHk+dJBL~78+kZ$aa*82c5_f;c z-dDK&EEWa+bSUMleplD5B;iWtTO5S4o!B%Tg>Oi(?udBn%4 z3y^V6pOwaW2A%GQdh>Ut`*po5&|d@71QR5uIwKJt5JxbYB2e`}tfB8ZM@*;-t4j{5w% zWr2Bvs`y!(Y8eF3Fvq{~BtMuY!Z1gkklRm(R5z1obmFSdt)5oVe!OV9^S9EUEeFP{ zjxJ#D9{VJolzPafzt1HdR248dUokB3Yxzlh(ly>WZMf_D9Z%N1h+nM^KOz+RV^LkR z?9)A2c?Oh3t<+RnQk>O_913FJ8Hx<%F0i?CLW9@XwXw8ecq@UrMp?%#(OphSm-jrI zl^Ex)`Kf}HO}=0CLz}#CFn09-T>hl)V%X__2|kyC=K6^2=q*#M1hb6Q9HQqah*yJi z%tzT71FGFD6p(!_N0ql~kC&_(Ec-E>JV2>8WqNOzN*&sTqkT~WPBN#SPK{sxxdo)F zll~@Zb+_-254m0py?hNd^{n$O+DKPkSfDqmE{@XpvOwQ8v4I?$3wgso1McD`Uk;J| z`tkv1%Dk`i${IQ?Wcxxu^<|*2QN2s*{lcesX*HUW z6@9GP^ys_fe^1_rVLZy_E;V9FatHJuO3;sOICMp(y ztP#^JOr~CHuVoMG-++sF$mgkNth%QR@AU2;1FZDv7K0NLrjKC#1#714^U60WRzXeP zchAs%dodpp2LVFXd{X@} z&;k!&U@Rc{JtcoCO!5HOmnW|3v;yVjv6ZuWAgA2y@4x_&`OhxfeI%suC+4dT6J93H zMkfK$(TH3o|I=dYgz{rjA9=$pvqE0;;^_+vfZ|~LHkwM_K5m4f9vGgVjK=MNbNBbK z+sZ$j=WN2c1gFBDc>wo%m|Mt)UKBZ^y0B zycn&y=40v^SVOaAXK>dwI2jl`DQVPA%*Rsho#s8%XYSOo1^zV@xE#_4RR#EECe_Kn z^oS(slPk{Wo%RdU+^8&}0qLMpeGE)gz!{}gU;v0Rx;c+Vn#bu*_1g%|{72G232pj~ zi)mYCRvjN8MeP-B*p1W|%-o5koIAHCK5l(E<$7AP6vOuxSDynwyeNTNb@IEBcg17d z#J?W^xc|)5%4Ctd_QK^dRiU;sARkW8h5wAwi$^{mna++_A#s3Pf1B#zAWy&1LZ4Mo zSrDG#6CQ%3+0KJ(7dn>&b~yO&e@fi?O8?a^5ThY~Pww={HZH(b7o`=9J)eF723X^ob4a73GQLiE^mSW%J>%%>o|+6r8*FBHqU#zZHCw;7 z)b3)~nf;tibpeD$HbD~_|KRe+|J|B>k-+8a`|<_lSoo&Cw|gCi8L3uZLV#W1S&tI? zdvk@l=I>m(7HfSH>{0N@%&d|Olqg638o%q3c;jdjb(NQB*&e)(p!o3-Z6csBg;N=i zTnHc8fAO1~)jt^KS%L?9cvy`;2^4F`P4JFDTO&PRe(At&2EEx}-Lds(_nt>Jt3Imk zot}OuAjd$P9^p>u{QZQ23rB+=3Bm*vr%Ovt{OtznobURlPlAD&UUK-XB+5C|Xkgc> z*EX#@jHmWIh=G5I>`m9@SD)n1477F2zj)apJ}L{6k2RWR6g^VTwq4^sc=$BuZIF}4 z(q-i@=(kTUn=9w?dKLhwio6HZ@RO3IjN@M9oYFsvzi%#mEd@&Y@T9vVSvF@}lD-FK zXv@ATKl#_YHFNn)(+cIE{3G1XvNSs7#2@{tavdDJ^Gk`z^fNrCFr@m84iftV3fVhl zcJ#Hbit=s?f}bwlo@a~?5me8G;9#5IshVIt!{K$R%1zx5h^|IVb`dNEmB{AI9u99j zYhWz!rEgHZa0zOXt*`j7Uw;TDzAkKwNB^zk^0@!~V^qKTPyH}O&I)w_S;MWDtoQ`v zKCa(V7+77jWV*~UEkOTdy_ES%>R|gp6LC1PIF;tG2l%sSBtub5*DXB(N&(N-8Fy<0 z=9EM&!=;F)xtL|(PXVa1@OpJMid6rC-M%YPaU(VF zssbO^6R+B_D-X^E^?xmWQ!TuvIJtY?)Y`7n=@9|wpYH6d7QPMrKv(`}<k0!N=H`y2uF6hVmd+=hKDeBl zi`BAxuj+qS%g`9AGTA&)SZZpjVV*ie&Tjnj6R-r{Jlce(#Crx>YYs@<{Z>m`PaTmD8qfyorF|Z` zPh8OZ4g-OJel7cv_B#S59(BhrG*^0r0_}am9dnoPjm|*b6Xt ze3F`fqjVE}I!C%}ZTZ$5h$*v`JztZyf>C0e+srCPq&{Ka=?Hse{t850;PNotK6$~( z=lO;%%0?Fdkkh^~$r3P@|JHtaejN=A=PMp}kAEzFZF&X_BR97FWcon=GzccL%)EYT zO#A<&{P{6I239)p6ze&eJQpefZsd>Js>!P{wurkINiw&BX1(BhJD==Gho;v}!;Vad zcJ+SaSD}umZZ>if=y6jN7a1=Q?P?+BKP%Cj_jd$$><+^IRF}PS_UTAfW{;vjXF&%vSAIKZlns(e3gi z?$)EQAq1+)vMU6n2088OW?4nF)v5Xkd|-@ltI4W)MsZqf3q|TMikYwROEFPVht_tz zH8j!?PDtYxwSU*%1kcFY6)M5qR{$FtrTp<@erf@K4YNnOWK^$+H2C-)~TI4e$0J_J9~l=Q&U?}@qct!ie&OxtSAy~&R}u-_ur{rW+rZNwZNZqHF@!k`>&Uh*QdFKA*)WLd5z<8yr04}<=F3ch8HKc zFDxJr4DtO4I-(HdQV4$?O)sxC(ko_UX4O2j zp+OcH%z4OrZb^XX_?FJB#l@(HvS{fY+Yd3hzH>8ypW4>0f;mWHa<+gn;8B6B9|410 z+w@O-#Afqn{*m&O^ITkf{W&K&H!~FRw^HEF-PH43Y$H(6Uvl4kEJqYfnadyYJu;P(38Ek3p(DD@Eh zaA$t0gyQiV_mS8EWRp;yK!9%>-&`I0W1Lyq65Rs`!V7q3a=%soQ$}_Lqs3J>zlWG= z|8vS#LEG8!p~_rSipxxI@-+mCO10zP>XfmV+ zi#cZ~1!Dysqso^8yR98nPTt)Udc~Bq4wz@GJiL~rWudg(JHHltts-s)~(rKd;i2Y zZto;a7N_RlYSN+?SfhSD~Zy0?VEztMvMD{8ELK#9lWEH3ja(ny#3D zJAkTObc)Zjx5<1a!yDqE6ey;1aJS*rl$5W~5luMwG@Q$2ubm=Hszl&I@=|IA-{eK$ zc8T?-fwCmBzpKdD#Ll6BhiE--&~J$LgvqNV0O13O$kfd4p4!6!I9~Z4bT)P7aGb|n zU0uaojB$UnDtJ5uX@77j{FYXM0C7#4;H<3NuM}bW>7`(mo4yG|oq90Z5jhajY}@Of zA?+ne+G#;5QBfyN!9oh2y7Q|31mQ#FImVP!Vg!CY1>^_D>83tcKeoCc_C_0qxChW0y*?hbOIu=36r9 zjdeLFQr1C+F_i(gY4k%x!$d8##+k*NIdinnhIxqe8;CDU7@axXcLB$n2_}rgOK8-~ zzz_^Eb(+O2 z=mthj3@&E0Xp8-peP0{ZuhIfWzJdS+Zc&>lOK>}IzUnXd6!5x#YG@@ih%!N3>b~mY z|2od`S;z!<)@mkDQp+T+soyI1BJGRSs{iU70H^xiaM}j z0>X?wgRZma1yG9#Ip-^KDGqw;;-;JO#-#qZT@oS!>_R(e?M<2G;7I?!vq z2AzLQ&NrZX<5eLD-d$g#ah;L^F#WSOTu$o|9I~40?2N{sHC{yeRCz&Oo1Azz zRqp~WxH4mvh)`uKo@&3wJaOj_qM8!5OIua9Cti}t`%}*M{9-UK)bq)fOvw++UsfRi zw!&_DAp_|{V-)&z7td8Kv{x5BGPBrfMn z>QkgSf1i?yv~V{=#JiSBQ551FuXF(lJKhuPhl}B8huQL<8mH?HY@QU#yYDiu&; zXN}OP9iO2~@q#)wo_g+u)ewHg8)Y25#lDU0;12DoDY8r}iV@Oi5Y*;F4d4;drYnXI zWUE@V!Y^&={9w3dw62O>fW2FA_=>*9=!3Cqq(duqp)pHze`9Y?$dSOAkanBkWmmD6>d|2iy zsJ?&?6GaB6XX)v`S~H8YwwT~d@cug%(3GfkwaM=Ry4}A;`%%i!3Z1iA`z4^4Os`cx zuYw1MnGDmh+C%U2d_Onr_qO6rUzP>mo;|_K%(+V&^WeCpTI28c#U97^nbbYqO;s1* zgK2L@HTEMh@w|MOl&;w&PpuE~-YSFG{KdoSke0CogfbA@y%ib)e1TlY@QV;H8<8kj zA*$0CM1JaXV~pUy192`f86!hgGT9ha-K4x)96k(tE9d=J#=v%Kq0d({g_uvAOJp3c z4${yIIKuPrR|HN}Ir$FHnT<7y-ibiz_)yuwfd(PZ>MAPn41msbuy;W1FsWsv5MH3| zqpan!>r-fG`SX497DjY4i8#k)`>t5c9UKwjmUervI}=h;?H$&QWIsI{1+pn<`2bJ- z%o=K|POE) z4b-R7Aq0)k0n&(IouW}{oGS#tRXA_mft_Pfmt`I10!M^6_e8sQt|QH8`o(`ZL&Bu# znkBD)+7!%pZ;2`nr>z9=0w_$!aM{`2YJ0u5Q{ zmgFJ0gRuW`dWc)r_RJm@b9uV<>WUSJTyo~L9BM{YG-Ht%^h`|u<80Uwl#KvGiSO_u z%qdPlHd)-qXAir+0%joaH^i!$Gccb>RiJ7XX+dzY-fVPUam-gY0N$tgBN(KwTX4Hi zslHNET+})9?Ji>LwKpDds7xHH_s=VJgk} zp9ycYyo|?>+LNY-WcoA$w@M{O={E>*Mtpm_94bBu2gO*ekCxi{%NpvJW)&Sq<8DcI zE@3@FoD&pOM36ny9Qv2oE7v~aXdT6Rv?11x2m&Y%NXUx4t;zYS{ucN|qXBTbnzFh~ zHHXF}SO4-Kr$0(LHt`r;9GzjTSRQa)$M!nRbkX}4ws#i?i_&xR_XYEfRvgs~Q&#mV zhH?Iq#&N^$7-i5%FWF9T^)cQvfbS*fCR@P5*wh2{CiewhzgMz^%phs3b+Tr6d}GSz zJNcgeGofHZ996jO--4u%Es6JoI|It(RkCT(Bxr=RYkG-deE;f|OPRBydqTX$Y09EC zXld6kqtKy+fxUGkRp~w75rLNC?sVB5Gh`wlE-fVN{bgE|piHkFY<8r*)%>EmCq(AU zZVI!Kg+|k|{eC?In65I{j{j2y>J|?ik%|2_3sb8&p_xhsSPB5AnOmV{dV@lzuHx8#C_^&$h0NlS!9)LQF zBMY|~@l*}f1pgdi7RmwT>594D(<-^M5X^0{N2zd2j{Yl}!YwJ;f);5t^BFc){Twq+ zSyL~D3HqZxvG_2st^&{E(sA%{S2_(N&Xf-2Cj7K&JcV;nrE7u@^qB4-0WXuQ`YNX*^kAxdyd`;Ey?;DUsJ< z*oa(B9crc~h#I?V%~I3H+Z$LJf_TtVSD;Eyx^?B}7l5^yXa2$0B=wB^gpLo4| zWLLj5iZ3r>i+z6a!4#mX3H2U98|q=H(=tTU3xMWg3A;BokK z6Sf4w{`Zd}5?%J=A|fI~r4B+wxONe6`T^$BvjU!zB_80?ma=NvPTx4%v_v{|NH$b{ zM#e}uyXzN2$Sj_BdpwzXHJR3oDVTh)Xz2Thc;uiVs(EvsRn5w^nmY$XvuIg-o9FoX z348bQ@4Q%4idW7?Er58>EZGT31^f7(+C%zn$>16g8GJzzxd`5Zmt@r%dU7?!uTZ-_ z$xiugo%{#f>na$!uztX^%f zkm3If-E|InD2Ww*PeQ*vL&s7_0|W>>)t}QFMMqT3T{GnQ-qw-H21V`J$``H>2zF8h zA`txB<0fsVr#pS=9N{{JfP;n*7on9X8x2X|>sALR9O0J~)HP+xYq(K_cmbTSDLA`p zXckf_Yg38~kxh68g!CMJ_=N8nQd3_vN-ErTpVcCBEb|p{-zkRGm~XX;qkkAulP{MJ ziVgEH%Vh-y*D_T3mtVN7;ZitZwV^I<`g}tVGnNs{plep4VFAn>C2AeBl66Yj5io(f z0Co*#Ec8e-<*%?7gzC9P(ePTsReQb#9ozcBw?L$G^8i6 z&KLjT(tCb+3;E@675#yfaaBgFtUaRnO3QYK*L0QTg~C98h*>F7JBA;O5MeJWiGPFqL0vP)gV${M2>D z)hMr1w3rt7^y_(1(Z}LhZq6n+^|Wv75KrEde@wc$>Jz$m6E2rcII8Z}(qBqJ3abK5 zFllo?bxHLQkf0Y-Jk0^s`lPhLA=HHkx+nEXK5!3zRKHp*7KS1n_VPhzWZ}vT8qlua zs@Zjs7w;l_GsZ(pole}eRPq8~H^9AbaZlK`G~yXz-L=p&!9)`onHBQ=5gq#rqN%P9EXJ8eQ5I$nqhaZP{@S~3EN?VcS6Lxvnv0GJ#`z% zP#5E^nC6`Ni>6LWQ8Lt-=9KHCuAxS8)045)mCfv>^xzb>PL7PUYLRxL{Oujjxjj&TXg z^nSdd+P^Y$4Q=aRI$p3{L{w);hv*w9equ9rV{x`d+__u%TrfDjX^%AZJu>d5x4s*F zRpU-xL?*aS@Wtzr=Z@X4=PF$Xb}_VHCCom!PvuD4Bw; z_XmK~zcWX9h6Y`98H&2+_TDx=;y6a_;OIqB@p-fO@6V#X$!i>q>^WD3xSIQv{n`Q8Qx#w5FD;bsa)h-%Ss9RL4F!j1^jtLh@*@RL4dFZJR8C({8Yr=R zZJ@sH7GJLjUnQ-j0EIz&>iH?4;>WOCYkkuG0wB=LFq4y*lrZ%RsGn$>X|Mw3%=$*of`L~f?LMmAi1jZWm>Q|t*YK3XSOlI`bI4fZ@8rokWV*7T2 zT2w9BZV#J}90eb$y?%p#Q1Th5UF!C0#@vFc)^A79e|Y&|R6)xq7Usni!ni-j>Itlg z?KO>^@w`J>NqhT<66a#lZPITS-6Cs5vOzc9kr!2C39vz7HTB?u?3ln?F3IX;z1mb* z`&;OTT*CMKmiH@xF~m15Q?xg;j(+!U`zm(MS}F=*Lwdr*BJA*JQ~&}7`n&F&T;ihM zYoW7Z0_uD&d~Z*njH8a93Jt6&eT%^6a0wdWRWOZeInUmTbEO#?5+DxmujmJ4n9s+1#JGgOyn z?948n5P0g$bkNIN8WxU~x%#ah9(6ytbqxB8vb&K!9^V8dIa<^)i7f-|`I97S1WN?>4y>{*h&oqil3~ z3U{2Ny>-R6k1C&yMf>TTL7A#z{RnR{8k=gNH`Xgz6^5s(>NC@m^772x2dlTed8b?Z z_ZT9;N1OnbbO1{4;ly_Fv7S1MlM_6V?5BLs)e>x)= z=RBvIX!O`d!^|br%dgabF8S&-jQmSi6(S*)sL7u8VsCOTaYUGsm!ctPx*3uVyPR%q z`O{;*)xTAqK z-%%BJN}nBZV5t#$>!vHP;+*mEQH6vqgnvNzaX6T^I0(FgV`erxxsH2(hKgx(=7eME66KR(xT@jIgH-{sDzbr>_0OZ3dy9nTMI4h&tU{U4F?HdURTPrn0>=m*QDA-SYoeD%=Dij=Gi=fGiNcZR35||gk%W=j^#5F2kBK=tCdpmG^ z*cVoxT&0!3ku&lTT|}L%@;n(MX5bq5LA|xHFo~(M5_iGHQBQ#F<$Jn7M@lhoOAhaU zj}Tx?ot38#I0daxuo2y}tj47*Mgmft{T;8#*At;S^$1@%dpDz*lEs2Fhk*9-rPOZQ zDyz!HRh`bV*pf2nyTYoSG~qSpdf$+;KJ(k&$KyRpn(L*usOlo@yAhErKMra*5r1tj zPhwS`FQZ1Pyw}X`j+`_489y2^Z!=>vk5^`V4{w$HFxCq-8BGl7HcR!2GyT|6)Ww~O z2lh7!9@SLPf|n8xf@uc5%@}|1k6K^t3tM}BfmUpREDC6i#g5AkZm=sazR8K&oE!2$ z8KrEPo~N2mKDq6xEus*P;6)I44|jq)8~PoCkf^O3;+Ed|vx&%mWL?a2w-&f`0G1K9-1-W6m?4w?2+3un`aRzMFFD+p$P9k+$<#V8NYm(dYWoI8Y zd}0ZdLBkRD*B!Z4j@$+j)OEtXgOE!A{sv8HAg`nAFSNt<)h4 zIo0|h?=$8?_y_FITDbV*OO~0$l#FI%Fo_egbK*A7bMNn$d9>jzd5=G9T)vLK-1Pv)AEh-Y>L*3*+tS0FE-?znspC`bmI7b?%>WWi^B4#M%K-vw# zD;Fe>fRbiBkPJ{MilLsxhBS<=t{j}cydpfI=#Hfv|~_k#_MjX zZ*bl)I-^!_HH&4q-N8|+dg8gQpt40*&E;h!`<#@mL=-sW`8`lSU*BV$nxVSCH?1;l zA$Xx^Uu$jJb9Fw2#V@RK`5Pu1%q=wGxOlJ=a*Shwj`!Roiq{a?*W4B=iFYdgJ5h9# z_$aw&u;*gW#WKZ|Nj;c6y&S+1A^i;4&A)@S{F2>j`|B8hr(7c4I;#qq={7m?=F?od zO-0cSp4d7U93PIJS_-=Ft55dem9>_mNL6mG!m$H=3AsSS<6@vzpqgN1mMas|_F4DyZ87@X`p+_r3<1>}FoW zl{U`#bvzzw{>)KcUql?hz8&bcHAr7Y@B#nOIz_}M+(E(qyw%V#Q_>t&0RsanW?QI2q5x%BpmICiFMrY^izcq zSNOLBHvULo@%OQOwaCs#Hw!%VglOsQO#vru5e&}Tg9b3F;2F$hQU@0PBAJ>7x~BBH z*NAk%{X3CL=GR@_TWR@m)CiP&P@6X*-*`*J_U$nP7F)yr+()t7N{uB!kZy5ESK4&x zO;_&~|6G#MTTI)*rCHtJMog>8U!Ydg8f8sm2YF!vP3}vR`Z>}cpx;x)7=hxLjxAr=>lcIoo9))p}tar zhTpwZ`lSUw;q7hmO=Zl)G#oUnlUVVqD~TI;!+1>;Igm#aI;jrO zL6Jgu?Ocx8s*e;e0^;-QENG~4iO{+q$E2@8O<-R^%_|CavLl+F zA9t(MQ`T>bmRhJPlf1oB7!N0xy^`X0LSwB$gy#Z%CXr?O4V9ca2@KK>PmA7yS{$Zs zvG1VwTiL_VlX%S4V{=9)T1`q{nqg8h*c|~-Q(P6a$rk4+*DG4Vc98$Rv>39tVGRBS{P;khv`?nORk=E`(?e&~CQ z#@3I%Hb#GiX((1{cGynd!S~dqnDP94`~1Ig28EXu-7F%lVdc+KPMa%j&O*NtdV^`# z5Vfy}(&x2%%Dp>@Z>lqwiQ1iYlxb1WpzSvvt@(4+_sWP7*$v|@-qtQAO^>#j1Sw1c z?!bT05SJbG`(^PTcIv-?`a5HYZHPvXC0|I9io+5JI0N69ps7f9Lhb+*qxR<`$RmQI zmql5K#pVlJ#B^`HB0rc>Pel1&OkqqQOB9&he|a4WY6&?5m3V4dxCA0Dn(+u(QnAE} zGsKhXn5Lj~;c8k`HE^)pO@u)s@2mPSxxL*IgUsFYzVT$DeLZ z*r!0KYm38zGdUX$`F6*`w#i@q)&l3Y5^a$mTu#)4h^N$V6nQv`&n)Nu#k$d0di2mh&d+c!yK??o)6?(~= zcOXZXYe`PRpxaDy*wGCCD1V!~Rj|%p>l08pe8c?xJw>05ZoW&&*_gckI&~TdvHlX7 zR-jr#6i#fG8=UTnx}X?xo?Y1w2(8~6enp$%@bQdw+vCM)U+Jw1jGd4?@@?JS~$aq&NZf1puWcw`<#V5EQjA}%vu{oOZXAmIFK4_K}oC_P6#rbp znwzODrj71NyZ2{lw_M~y{zJRlOnCHv|L~E>+gp4`exI||vt7)wE^r-Hr`Iz5Cw^D= z8j-2?hPwYZr0_ZW2LfbwDw4IRWD znjk2f1M1iky8b~0${o>gDK*KO43i1;g`i!zJ&v;nnImCBEZK#mo?W&p@{WY4gNV?x zPA81Y5j%Erew{8S&V>r**3h2*)3wXwSsmWJkv-G$OPx z$BpNy!?)O)C+}=Ii`m0JCB5VB6PzKHTnDvmLjHK>_SogeGdN?4sC{njHnz=yXm7H6%P1@UocDFO#3WEX2@?o2}lYtd`9hzYSt63FXN7ypO1>`G?*MiU8vGNibn|2#%}Lfa$OB#@qS5T+W^5Zr zv}ZR9@$lCp71WZXKH?9JzOsA*4|Zb<(8lcIMi@_61){SMgMvCKP%ZP--hnHQU!my*4P!+yIN!EmtH_9HLPthmRm@$GhPM_?#GmS* zXLk4h=iY?dc277@wb&B!VS|^yBkh|8IQ8(=Y*GQDZ0pK^ll*B*$b5SS2wFSss~irP zdztI3FwVKbUv+f>HOQU8Ag=^yeDJiZ&Cq5mA*0Bhl2$Jba@RX5g4z@IIhP7X8&;EU zhRk=I)h{$RHc07;MN4md;Piz^#d;&cAaL~X{QTsDH3OJW(}88uy}um!EfL;WgHWtyFM@5?iG!np$rESX&ul5dh@(~d^N6_akPO-p;>EuXMAZ*#sv@x zl`J4xTcenvyxSn3fEnSZ3@@T<>egH=+eT+Ph+s$p?jfN|Jl@48VpsVs>hyhun-+~7 z-3(SP0qbNog+4CMye7T>bW4zA$8q>Uo^(G+Fc6)Cb2U}@tr?a6)@M0jssVx`-Ku~;6}%n)YFMotrv3g@{_>;VnA4r?FJZ8>Ftijb0H;cSHPd)4y3sF9 zv~GPVb!TSuZ_LqL_;AoE9QzjDCn85KiulZXlu7zO zcV&e-U(i2r>>sKKA$-Sb2wmujh0?G_T;udmw(3U@X3ast-?+p zXk_J{dP*=KAnp2(#?srLU74i>*{B%PQDm)j#ey; z_4gqHxMg$WQZ&p4CU(XK5uCf~u051wvlHC18v-}qr^SY6!~}}PdO{MXJ>`K5)D~y# zQimCNdIqYTg;MGW@bt{&xYf~gURpXY;xnh$5%C~o=X67m{AXv(sD^;<|GGl-9ck*M zs=|L;huR~n_KK2^OxM}Y+wyf`x8)&Y8?rV|9yAaY&_#SxKQe&N^!G|4Jq69w{lDo{ zGAU7%88+vQ+7D%`s1zW_Tp>u>2Xahm&&xMZ+}XQ~TObfs;u2xCk`^=!d5q?%+M?Je zLwI@lv7?ddN>xN1g4{>5T*m`p7w?JLXDMuR-l<&KP@QC#L+S@BbRE!`3DtQ$e+Wpu z%(T!djl6tg`#ztU9EG?*z?aFnr69lTdqdGzUu()_!NMZjYa-@4Bj2g2FtAlopqJB? zNYG@r(+3TKh6Idt0f!UE0@9p?wC7F(Pd=9}O0%`jPjLH>HKWn{9@q&j2+csmscwO{ zDlBr=3~&3lYR^QP1PzWStsop8sG^A}p}-Lt zE)wvfu(y>|ZxH998;iNVC8BfJ04cKne*3@ceAFt3XvAKT#g@c2u@l+A!WkKn>*5~)*%!d+P`-iM zLf^+a$?lY0&BZg0+%;(l!SR94fvW0k3%0Z0gM-5TpV^EWl|Pm>jWVLGTvMo2{}z*` zdiKM$-RQ2F9+4_g2=5FP`LBkzXRaC5^m*H^f$@MBX|ktQ;5H(HuKEZ6r8E6d&iG1^ z(==aK@cwZa zpO7R=XYKl2cSo^h=?#qj^GhEt_StGJJ8JzjK0}(KHH2JNywMZb=#Ge74)}4ds0puB z@kvYR_BT1o&1T*3i5nzd`yG;GRKLyzK^sITEDnssF+-9Zw`)E8e=L1@Skmd*|9i@f z2p3E-Buxa|Qqw>omyU=V?rG_`HKLVkB6bp!agK-!DJt#@Y3hvGW>RLDW{RZPVwx?u zq?k0?88WhYO{Zqw-_!g4{^-iGuB*OZp69;r&vx@Xta1O5uLtVnTlWAfZPDO9NiRYD zDH6`(-X6|_I1mQ0c?YX$uPi=7VmApRYOmlMfooLm0jzhGd>;O}^sD})TTwIZyrkW4 zPfW`)<^pGl=74SPprv`CAK93j_;4U**7T!X5;%lzPp&-8yD$S zklKG7Kb^eq!ocSel1!0tTi=&I@R>6n`orFv6Rwq%AuY1|_$Jw0_E+s6hgz%jTApmn zTXwz125gPBye!MrDuOE9sgx++a#GCAUfy8+ z7M3dK@{IQsMvS;3ZdCCb+J5!=b}Uh z;KMUb(Q_7M0oVl=_gHQzzxyp*m=^TA$xcO+hzd=Cc~;isjmke1P}--q5#|y48$^nz z>5G2J#p!$I;0w?jm}oPDj+q`sRE64`%Y8Xb zCV${Ay#RiuVrsqjlO_yMG}Qf7GzcBpm0pRN%sbc*-@rKvDnaIT)kE{dNT8}X070J& z2(_6E6Zu{E+tGdr{m~4pe@LW-L9#9TC~21RGQV~qG0IF|K9i68TU$MD5-gt`fZ#2t zR*%t2U)yDSOn{&4=9po>4b6|mJ^E`~sAEtNz}Ben!ZcsM&Aok=ODtl{3_!1BwKEvb z0A(X-Zp+37Bp_6*d3gnZ&?JXnN}LRPUMpAln7@4+_y4t}A7e5GfYIQc6vqL*>Ivm| z$0?3;(Sy?yy~)idjOKul^g_|J*SM+Lr=k)tr8>0jOkADRFjCX;LApK#qiEakYz!uX4VsV zL8??C$gYB+ye(&Cv+>rr^3YDs19V7Cbu^Nlogkl2iXxH26sg0t8E~%I{(6BKgYxJb znBB*rS~9Nd2PqrIxi96A6=l=(l1B!*oGLp5CAO9cZ}gv-Fsje4Jq}q6gzViB+*7kH zj-(>dCvaaO9@e&y80^U>nW;!kg3W4SrLQlfiL#>c5 zM=yMFhj3I5NT+`J)TYfsN$T+Z!gbPucd?S{ogrGc-lHTfX#ql4wz6$N8Y|CjHOEhY z+{AU^M)JFtpQeFEg~0+0)`Yu8L$$nVS_q!Dw-0Ao3d#!*(8=#Nx^x69R)Pyw3S#@M zSsOp7vPNzLC+F?i`AaDh!3S#Fm@V_nJ^C(Zcz4uA#5C#aOMV^?vQRGzJ*rh&z z-%A>1XsWZz~X09y!-Qs_^)ECosLoK|@o=@~kCtt7x3tJaNJ z_qMpP>x=yIhB*sLwgj)*98EsU0V&$XHi-Tx@R&Q(lhO?w52f;_kEo~JZww8coIX)- zdJ>;%oK<)^9+SJvjnA)$dCTPl0D}QBW74p6+x}EKJ^53M`n&kam8^0o)8-@ZCY$M= zgL6NO{=hTH(-?#~d6(xnm9%O~Us))J{D79LgvZh!(F)d_gg^Ex^*NBDGP8VvKv;P& z@LY)RWH>DhTD7*kY&G0(QE<;iYq~TcO#Ti+4o&v31;aRWc%tZTn@)f~xE%1DJL^dk z$MLc)!%ya$h=VDpB8Gd=6cx_(c56EjI06RDD9;lep)TBo6mEpq9krfRfCJ=#NO0uq zepw{$ic84`Vh1^;&3ZI~9H_NS4z+q_PRmvjyjvAiEr01t_|N&4q4sFKyXZKrjXtg- ztVaU!2#*m;BzwG^%=TBItqpbwan?R;7Zq@lSpuB8&RxBup82aQt3>7YKuQp96PJ>=5+PiEI~YJ$-5kX z_g>%|d(q;u0%2$e`$dyNl2^k0Pwi$l6KcMzNjFDsuOin|O_Y0K725_M>LW%v&67?~ zjPE>~s5*gbG^Bxz16=K!Y@k>anMa+}YiE)ab6XZ=$H4ygonM_Q{x$7jp%$#*sC=ec z@c0MB*R*Xk3so9`zceF`!bq5@J-#(5kcAALCw&o!IoFmTVZ$kd{vc^G zfS`6{9s&XpcM%qpwr!T14mLstKM@PV}9NOFy(#Ya-3y<$I zfMlcLuKK#v0FAvyc|4m;r^~Ziroq=i;thA)aUtrjsICa zmQ%CXY`2G@*RNOPCbi#ty|8g7Aue%!WzQ*qOa}VkR7Yv>Fw2Wuy z`?o&IXAtaOhe^dx7hdBUO=;VN`t=y+dG<Fwoxf>z?Z~m{qp!3OFR&;9J4vli9IP9kcsvh_fw%j>dU3ssXaBgd=5rWX5^X3T zd8kV(m6)YWW$2{g=2%yq#Fp!EW6ggO-oBz;*omdo!8`nQ{R~mcxX7M)T<9$=KOx$o z%YJu>N2*nrzg56->kAL#Yz%w&VB7-Th{d0P9S)pO>zoa3!~Ly=UHFykr!1qgN))jQ zS{~qCarJ5}Ay^yFs@lj^YnVS^xV`^Uv>|6u6%L}av6Hx{Uz_KO*oK zuyanEs#6RO{e(m#B?%9zX|d1f|2@9rEZYU1l($#kmM)!k;WCkCLS-#8M+)dtUgFx>|WKVgBQCx0vdf-~Fj8?m1-dX*y&o^U;N7VDTwU$y#* zY$!`m8CE`5#BFB|V%xd`cWoR|YgHR~BnQ{)Ui{X79NkS1(n!_(*H#4SOwE$wM;#Ti_~EVSSs-0Vm}*qzLeP^Xa+2^tlov;Vk#z zifm-QF*Gf*nPC`M`4)Nai#Sk~L&E8^H_+nyh1Y-G^-u_d96TOMVYkzx(N0$S&(!r< z0hCrza!{@%kBJ5!M~*vv*%PyI zLft1LEe!Kem0o9{Bb)W~ZSUv`t1a&KLX4;>Nz;2x%hpPzuZZgogLjB~m@PVhxWY@n z0zX3WhlyBe&z}a-KKHOIRZkDe=L3pFi2@kTeOTvSMnnT4R5w2Tzo+1-I8V%D4Aj`?}CcIctnbjT$txAdxp~7OK z+M|(O>x=;GVBl9;8ZDe0ex7`cmrWYCPvBdRg9)Npd~DgKLT;C74F{Wcr>6cA!FT&l zIxW!xzJp&-N;}?~yK3`;A2+}om)LI|W4Me{mBeaE!~txwUp(dy48?n_!9r2ySKH=5 z3B?T2{m`2RZHIB3YP1rkD2pO(q4jNR+mhRCCNbWiU-X0Sp!<#k%?DQPifMctIbCIe z_j-(#R~sS|e0h7GTYb7{N3yZ6YWup2hBiO-H2x;$FJ0o%ZOaux0on5-CC^t{Jc$(S za`l`Ax`)s^!_D}uy)6DYCyQBL-tFNfAms%(=jBOz!0OIyyL*?D+@Z7o{Y=w!!!~OK z)sFKe1OoY^=f&;O%_FzA-J#{$dBLZ=Md;HLt`OY#a#5YhgdBYEQ=njKpJ}tcuX+jR zT>S!Q6$1SuccAEQ$QE(A>#uU39dkuxacgh=2GOxlXnvQi4sJlON{$)0$RVf?*X-?S zux(@DFp`&J7wk0pRP&f%WU?byg;NTk`aD?iI zk+>uOzF#7hH5wbx#DZHO(t{t;2_da}IEup{=)ISB1V2!x4GQ?@5dBFt+Xe|q(Uw); z_|r&`skI4l_nwWstSIM}0&HAw!#Z4~pV0zyp!g5hSWSE+t{frqHYgF6^7Q-0dz_{R zU1Y1l0^KcZYkN=lFRA%6v|l%lq**>i%I63RZEfp3hmrxlta4lae6JR(s`|E#&>oA< zG52icZ)-Q3D{bEkSZC>3+|pgG6H!wiZOQ^NKQ*;9T8!wU(MR%K+_hel=Y4k0@54~8 zU)0wFLQ+VcWWN;KgJ$ECI84P*F&G+Wg_UtNWNF848_Ua-x!tWNSnkKiQ! zu#e<`k{E+sefEx+B4rFh|u;+J+Hh(8E~5cPTNSb#gWh2k+S zs%pi&I9A5LqjElH!Nfzl5jzFGk%8eunycd;UKChLs6E3Ts7w;CQ5!uIxD-nWiDFE&v1V-XJ1YEKax=n zb`KL*^S_?`+2@E6kU10t+^$;U-yJm@ch$dV>kcZ@Yf=gQwc>u`oe}~l&N0ZJEl{f9 zeW-7B$<_Dt9~QNu>TkPie&cTIvS9HlY|)^WXPINDrRs$Vi6~jz&uNoByaQ3|;!KJ3 z{{`{LEEKj`d-F%fGgX8)s7o*4*I+RKVKU^>PqBjwgd^HAxqW653z8H?n_UD0R>ut1 zC*In@nvT6a=r-0tge=GjK?h$%)}jUp*_^Id5_cUt@hU7EzX%5#Q(3_ncr){a`A@vN zGWn|S3?zX;_?0ubBI5tp7jR-nL>f09w`DKl$GhnOd7PFl9T%Ri;xw(IZ|Ujs`Dim7 z8f|#NV)4hmaEm-Z_u>>wS&xU%X62g(@3=yDv7fRX-+l4p&Fh z(z%;(hR@a*2c9`HE^VeI8#oStZF@hnpW7)wKF7!jR;EWwTfwSj_20a{adTF84$v~lr6W$ zBauKDv^~~3ajKDZ-fG2BkTv4c4*IJ-NbiyWGxGhh%bF9ew6H)(QULZmDIw$?k11Ky z-=q^N6m;DBUP@)^S^PPQ$UmEse&-%47?6X*KgxbeKFp=}2 z=aB`A$1&%;^C$?%Fwu@HykyaTk4n zt~<2puU46}ab(;-YlwNHXc`5Gu+3N5+1{;yVKkjEcdfQKU6nT`)KP-diJ8M68$ICs zh$LSP21VxLEBC{s16Vo5qM(LeJXrS!R!=%r$Gx90gx$u#JIfjxYD-7q9TAEsv7&~h z#o~Rp>R?E^)ccbO@^{c6Sl;B$SQQw~mvr)N1I&l{+%Q?gMODq|EYZu68_-1Ar^OsN z(XB0&at|~8xOm4rk>0GUAS`SkWg?TQYEMN{+`+oPN`=;kV!0tTqfu;?E&90MxaMJT z1`C$QxjFm?_%W?*1eAQS{cxHmEs`8UxlWBwwQ|DLg-sYdI)_dgI@lWjk({S^6hv>R zeFS23fP*ta4`7Fv%BT=7)YtBI-8~GhKUP9T{&wV?ez0PD90jy{ z$#+zg&3^k+ej}Zk$;W5)6nGSTfF07$pZ#LYPZp+Ji zcz^i{w?o9a85td(D!Mq{3miZ2*CMV1-nJY>9V}}rLi~Zw#WM`DcX#llp{z#IE{{ex zMB|4jla#x+CZP*{L+Za-_7;x;C2(cu(TseDy}DIaZRQGKv6|SSThUYP{V-x8@~YVL z3{0)jn^h-o81mAaQ0m(X(;sp`1jaYSa1HQ#3_?7Jxm=<=3f|FL#WaYfoqerl&qqH= zIzzWvs;b+_sqguZtnZktcw*=w?ThshjLP~j=i`K?UZ*!69ILeN^<`JF3q&{;fE^7o ziFai<=S&U=Sl`bK4uC3OJQD(Bt*87d)>7}0Br2xE-T88Wlz=JZX*Ur+NqQJNsdF}K zBll1Rn`t}aRBTF7C4Zhc)v#)_>v(RP`;(P&Zt;PXlMDja`;y4is4|Af9F0@I+o*n5 z<5EjcRYLyNluNI=PZF__eBL=dCxS4O!z~_uiBNm#QhoN_K4ATXw8b+Bj^+CY5L)Nq z*VHEwru<}HHfVaTgD&jF>C78isr`RxDlU%SQR{@4YNfYTi$uCpA~rd&TkW2td)cLA zhB>VxCMHECI!&A1-I1+B3poRMvuvaCqACN-a_!XRaXzScdkdPwkxaCHlW}{%h4?th zh7a4<4}^Y=taR%bJ%)TFF?db;GAu6Jd2g!D_Mb**$C)5{$#wzcsf_DT$wvE$D z!DrA|Nyok^Jx^i3o>+G)F3vjRmqUDR*so|`EQx`}l>V&AhR1x7;D>zfbDy5GR$7nQ ze&(5H%P#21WPL|K*b%*K&gLY?4pyYsNg-pxA~PWxGd2dww106yR#(#bIr(bR;wiIk zg%V@h?}}oCsa4NlK;cuAlnT37Gm)oJd=#kc_&-2VLA_%{ckfj`Yk?5uUm|NlxM|#P zRSX}?{g1f zOFHi=W;vIo+Xx0x(R33#{PIzpH>VnoHVdipOs0py8{Y{7ESQMKy+c~EYUV$y`>$ge z0Od7=uTwC&`;U8LSIYpiegwCGgzO29h6ijyqfg$8jD2hf0ay{tAt~;+CriTt*gTzh zq+#Eqr4f50%T39ZeIUr@*tZ0E+&h)kHaa2ru6p4h%{cN}&;9XR#_$brdBH+$Iw=>T zI|JJ7&3(DZ(XycAx57n=D(Y*pQ$+wTqPTg$U_JJ9Tv&rC2119RNM~Um4_v0voJrCM5 zv}UZ5n#G|ESBmP@rKy+5M*j_4GqWp&BeEK*Ya0Yol-@}&A(c7>BH!66Qv|<}Fcz6W zZB)PS;qZ%z91>ZZesNO#3V~iMo(vnp0b!p}-P#r~GKOZUA_&U2C z-N~;vExYHwWV+Kw7P$Pvw#irkukp=oODp(+*wb2N_QFM0vrX|aRZ}GwHT-Am(M1W5 zH|ZxI@*SXE-f-GtoecWz^|+5wx~clT#8i2Gxfe4rwLlQ8xfx8%7J_hc?6!f$S%&uz ztgqjB)I0{ozgga`ofp{ALPB8L!!!n=Ek#Z6_QOG=VK9%kpq0(o{my1uVWgOL+OO*;F{c+M1M6?aDF4cJt2!vf&`s=cDjRXxk5(|YUm-4rP z^!EDCF@Ym=I-%_hOoIV$8Tnj0T)9osq0NX_P&(!wxoZc~oiUH&^g7&tWI)esB3-niyiEG>(~pg6(S|KDYCSDn-i)7GnW~VAPpd+W7Q93F zj%X%<^HqOB<<^!1VG>%;CD7PtGYfmGKsmoM-0EP>_7QT|%^ith`o5u{`8op`IgBsV z8YrZ#oGOylz@6lkK`ibf6U~A~0hB8up465@i{LLJc1(%BIL*drU3^+jsHo0h{}TPF zWB}&iFn!!_xX&%#eYAnMk*q&%ly4R@@G_IQ?uwIeF;Q+V@KT zrwMp7jLc6n6Y-Zv+Hk5VKA=I2a&`NGe+s#d4*gs=aGkIaQ=Jf=D(w7h7gB?44~g`Q zaJu4L1$T)DTw#?m226Z8QDCf$nkEE=J~q)YqaQFu$KMD|hnD%e$B&Z4F-)Xu;D`#l z;2HZ>aPd;zCxW+~+QNsz`{0Fk*;WKWvh6DDwwBepF1|VtbM&YO$X~O{R;CdQIoA*x z^Efzr+D1g42KJYuFB9^JVjq+tw@}UB%6a&5HTf@fCDyV29AHJwWzl#*}aQSjUW-!cxaTeb{e-$ zyRiYD{ymT^0N5*vw4_9o$Z>1Kj-n$|VS3qkVDj?!3_Kf{l&8S~gs)NF!OE9rgmo|! z^50dN7r|xIV}`O9VtG;|VIk^Kh?~jIy|<7EbJ@c&40%q3ESuG0mF6dpWLE5y$0X#x ztM*_%qp6J+5_ij~pXO>&W=l}bhhP`$KFJ^0widOH48(ooD8mKg#Fq%%tMao1r@}!S zXB!#us;f>?&N(xy!jKlb!nor_v%wVK;5>0S&^pk90?mYR;sF1NC@)dK!@d5K z$GqBSM?x-R$vG;yiB|4+kj^+7b%u@cS~4@0^7s=N-Y2O z(<+5BM`NcaUt^U|Zx&qa_Ma87OhC-oD#$|t2r*_3fccvs3T3_U+e$D^X>&r;?Zl46 zb&;V2By>QMl45iO!m9*r?>4bSL~Z*W%J0Hb*eB?{gxfVpW%{z^Sl1s@LZ^p!im*RD zl+|5%gmBY2(1gfet2M#of6zLAmIWsFB~a40CNhgV0UdH zj~=*yt-0Joi+UXUP}*D6)ywDzkJ>i*^o~;m(t!Twzjj;8UclF5M=T?;?q0V{Q~`H6 z4~!I{h{OS9=13nH;ya&0az^RL-LAgl7#?ie64UBxs>Y6ed^Q!}Xuv`fq;^@#32=jwdB?r~R+BZNn!iCpZ)&`H z=!0D_={I~7C-yVsLGbCk5&P)~Mz;hQ@$Cf%tlAgBinFyLY6YXEI8*n<7IF}RC&RgD zV`UaEzE-7bQKz=LuAG#t3r{t=8pG>vTbzvpQ-wD3nK6DdOz;`>OccuUo*dx)JORAJY-QF)Vy z_1)!3$C9IwA31Hp4x~uI=wYuwgfMcPgNG#oy)Mv(+)Hokk}xjSJPzd^BaRkPRn165 z*&Te)Thkq4aj1r^kd7TBNMm?OG0P0X0y+E~)>QK!U8?#lQC;yM;hvqgWLCBTM}c5a zqbTyR<@9L=;j2Xg2Si-jr~)A_afV+CIRnd<-ypu8eq5KPVsuE)F(H=od&y5v{F+YS zWNgVSU$|H>s{F1=b5pqB)jGWuH>}_$of?%X1$0`Lm;b6 zdFs_uH~x1SP_)-~#N^8lx39HURo}yI+br|&e-#Z>al^p5(I59x9R`>LX_vhl-Wh zkZs)iM|EGbUoq$?7SERBcUxZUbQE7#QEO39Ix_zNW_4ROVKtYkPGDd z&w)q!c2v&tT~1l*NY6D$jvI#^D{)gD)n9+wOTm)hBp_vJCObLxf?T55H-%B7VFf`x z+TOo`O(EWCand5XKK_C zt|8vuY_hXZJUiaNA{&x^LV#%(b78H1tx}^_(@O1&SD0 z1c&O{>p3r$r{05?s7&~MV;xg9`crqxjrzReGkljl(xy>Bocnsn=^=c5Tep!LLHfb( zRs?B?(!3=$a~FqM1^Ao=4DQDXuU(u+_V(v| z2>Zoe5%~RODG6-%sC#e z$k-jUCt2B*szMWI#%@i$*z>WjtE+3~U3_EU!M)zhAUN5 z$#8n=MmkH+9ja*A)i^%po|T;I@Voqr&k>8mv{&Fatc?XGYpaSlqv|N-(K#oZA&A{x zeQid0Nc#+u6I?J`bv7NY@^yziNF%K1Z@O#ToDlEtM>^P!5xgdxLFk4K|EeA2s{6s( z9DmV&7bub<49MU{WKdFZnBmiRe#(M_5Sh%q>OUb5cPE3X^7xg&IXgI;`~gnA?m zt}!k9!w&~K7+sQA>h=&f;KNbmq5 z$RA&!z)U;)pXKS^E&682u>BVQU}prMG~(JUKGA+fw-y;0x>ojF_hV+*(}dZ*yIUm0 zyxD+%rJu!5lxlo!FKOHxrO5nLs^FxaCf%?2-4H+|0Im`N{_ucei$rw)P7!84(==8F zt*tVZj9?6rh@B%TqFx<3hD{?PKP{hb!VY6P2p>I$YuEkDzSLys(#*IC`jma zI^2w5>u|057}RrvdZ`~QbFn1s8&xzD--E1Ox;^OP%tKPzGU+eJcT-CXD!)Oir9gf{ zpXi&E5jx67NgkzqCEbWp0G;PCKj}ym!aw$z(rOjc-(dR*At7%o>Ev}QjV+y1+(Vw3oj~WeB`Ux?& zY7Q81x6Jh&9S)gO5*xtyZ;AEgR3wl?euZzO5C35!ZN}UG!`k^Pc28R1-)iec_3_DC zHQt47e(O2k_g)QA({IlsLZar4Gvoo;DqB{ape${^MN?@(Lg_2xB0mc^5u4I zel}8-&ey#zI*!)yZm2r%Ry5t2%z?qqk(|Q+ptGt+_Oi;gH}&t)$gf@Fhu=I=oxlK! z#1-gCT0oyQLBu~h6^znPphT|7yY4rRqu@%QI2t8xnO4;b1W8~Vkq)9*r$XHymVtND z)S&?JDB&w6qhR82fqEi2*I=<7|9<^14#BU#Dzs|(=JYM2*NhaXXLSEh2xgNghIfVs zEem@4KmVnfX=iwkD=m~3TgE^&0uzcbOhwFPwt~W*mB7p7*$q?&6);wh2{gKUL>)d_ z)D?CplL%j1@!2V~*egF9>ls*fvG`ADesbssq#2Ukk)IW3xYV;*_$^@zWZKy}*eTPZ zF>wkS1Y<#8e!d0&%o(f&Nkk+7|C*CQ-oOL4oDVmnWz@NG4+ij5$2pcq;kVixtSLD1 zvA3J#z_d`_bG6Ip@BxrktHzbDpVe(pvQZxZEVa^JzL7P2S9+&C0HF3WitA<9_m>v= zO8b2dvsP-?Eo3VzH_Hgw3sE^WAZD6yP|^z=KJzIZcW^Xf!?#TgHqnO@KOX7 zshT65J+HHRu-?6y$i2fCCl3b83MY|l#p!>1xSqZxnW{}t%tICi*dZS^II5!t%xIHd zTY-IMy1|4|7p156Q9zi`vOeFQn0`CR>-IuwAA5F;df}x1GZQ19g)`z#;9_5{;Bz$pW&lxuAE6#&1>k6#X+iQVGKTbGT zA{pd)3M?mf4e)aw;+*l%%53_aipEV*+(CS?YxNi$jYi|?N91|IK<_gNKtqA4x-+;B z&FrSF$T#^|a2xW{{KTaa+4F|oQA$iV`Dg;I% zvC7xUMeUy0b7r(g9Ht``VW-C+Ue^h2bOw_B+@%^?^#-1{>hteGUYL)X833V(@I_VK zI)V?9i0@nn!7`a8V-34F_GDx?O$y1eOa}MgH;H~fS#-?nV&5_H6D6-0x6$0 zwlS9&7nHHP$0_kY^dK#JlY|3` zwu2W{&BXY&X$PK5a+s12@Y{K+Q&hAqIATWlZ{+7F|2&{54p&KWh-n^ zyn+huLsM2ns+2Z56Oq5|qC-~D0FwGx1S8sB1!yD#~O4(IWnW{+oN6}09{!IpudGBv$p2Q zAYc7SBH!+((o!lg&EzNyGv!poR1I9jf~4x?XR5V17gg{XxiB$wc>9+&rb!>8oE&ZP z67$M%^8gchO`E=Ds##|UzjD1yX>a7~Qno=H#FiV3{)Q?Z?(0N$DctGr67rW|Da)S< z<^VO=9@a|&O85Sbx$!!T1!HY0_gJ~cl{sj?4(&NkVsByTw~I)d&4xs_0>`uZAU?@i z4QT!?t0GtPGkHU5*^1Pm-0Ld_L+aOYGzz8gZcXR^p;B4wL{}`m@;M+c?A|UO;agz$ zSd>%l4l*uPQ>_)zU}Q!?D9LH_uoG24H*lXbD0mQm{bzK_7lb)I_rPlwCU|O=RXv2* z$@xk06|%|9&No|>7#u(jSjT7!e>Q*Z4VKrj){d1foSy^M0tJsA+8gRvA-V$zOFHwd zq?*0`%t8p&YSj=_uxPOzK>x;TKT(wfFRC`VEBoSuRZhAe&ZsVEt)9Km4rtodvaAgY zP&i<*Z7!Xe-Qzl*i~Fk+lUvAs@0&Hsl45usFsAOsS8!7!*6BcymDT-Lp2C9ifjohR z6j2>q?Sj06w$_=jY`wR*|B&>Ns*^Olt#?ISJ;HWxJGkNK9(%DB5D7aG3 zd~rI>73kg-1R)*c?lT61vd>f$RQ4OyAP%NJ$m;3C+o|_qWId@O5y_*P{Hai}xqCJt z-v-G(Q7L>3$u_!>RulDOBkZuP#wG48-Fj9W;1)x>tbt3{UKt>%8l?qt(0WJZT~uBG zmQ!RweHaH`OHnmm?)O}1X)7Ed!(|KNb=+_G8rnM9*7V;s+lcC5*mFzY1J2wo+k~o& zQ;Yl7GdBo<&pTu(kWjD=ffb)2PYX3u2DA=3d2h>K%g@k{+h-ox8NG>YRgdgkM2Ve3 zJ(9ZUX;w>+gAMg-W!JB4;2&sAheAoFf*=JT*DZ43D*N5l4+dZS483aU^pZ*EsG<9x=D>xU};nDmlNWN{4leVP~!pth-! zucU$kXzE#eJ_OvpWVwO+e3$i~c$TI5xD(#B|* ze7bBIX4;1+kW#N2_AUGP0`SoG8}i1K^E zGz*5e<%yR96C#pYe2bOg?*AHzJY(R9M%z7PZiwB-UgKJKsM3=_enzbj=b7kEsY)z6 z4~A<%Rgi!ps{qKJza9cQ2A?C}p+a_SchK>tEtJTbC}KkF^aP;D3oZ)YLL4zp1E`h! z3`N{ZNXoT^;GWHnvqL$Oj<7bfE##-B!0FGN^6i4vwkw5`heFOLzA=1ZQu(SoECR~E zk@(-&ZLiaTvWI@e;vb(W?wS+BAAKexH2*=2SD9rMPt3-Dp6W-k=S+7fl(`l8S;d`p z+MgjFjHERY4&FrrIkIKsdF1SHH1e|6JXq>cD!@L7N16WwgLq_VN^kEzWzQ!ZdOV)_ z0TOfFUXgTKUJ6~ZI!+d275-MQ+kiEn8gEUYgH8ZKZu_39GzsYk?=Kfh(yfy;1 z8Tm1oF5^FzogcTMZJInavl%2>$!M?5D-^TyyEbuGLROIaR-s09DD6#i{m;eziiRQY zYPlbG()$}?(rEL_ql=FLngrQQ6c{-6Zn_;VzF+qq%+mD=Kb4dcm_cSH>oFud3MqhA+0b8S zGJ?uAx{*Mez!|8>?*cxwdS+V^Z2=ZwhjSb6wetc}poTvSfCe{CtwTIltd(-zXi7BB zs@JH6j3L-5rF=Tw1)9H+ZB!_o4DqZS)F&G{g)c*vwCpI?G|jpucSesM)Ap1%T{h!+ z4nVG-FrR}r#QeCq>4H?IGMl@YG2BwBVA&j_pT$-C1FMF0@b#PamQ|4>tg@NWd(xL( zI=!)S>d6SSUnXZZA`MF&-PXk@^5YOdmB_-X585g>;m`>$qIq@t+lT54*g-FI@rJW^ zMZ9H+vwEL9P5d0+)4F!?wNb{V8{~J_-}m&?r}>{On%f_}l!ml|DAV%ZhRc_EBKW#w z{I2()akM3mi*e%9dtU9*W`wQ<3kMHdP?mi!OuT{S6O$`E)6-_mWA-#n^|i$Vk0&o} zMlokv-P*!=;@dkxw6^iN2cY=>JtpS#RfXT}Am2JL&V3)So$AI1gI15ARrncWw>I0f zl>&h(Yv}Dy12DkC)?DZ=*X@TxlA0f#SqZqaAa}T0uGjfcSV?V5FZJ}H*XWA|wVE&M zKs<{-)KnOUzOTrK8L32K(8O-Ix*fK2WI^*8?mmiCvdi=qpuZ>R9;1&GF@v^1jZl7Y zLvjr|;!Gce2CSmYvbgHfLH&?Q&*z4l1Q2DB4To4vKy>>}jfBZM!y=c8q(J_ztU`st z--a3wDzcU>PZzNl)iy zn`|Eljdx%1R28mgb#RfPJyq9jsxkn;T6$9>DciR;G7W%^x zb49FpqHV*@auAlPeb#|a5N^Y#`iplreVHJXDw3#B0To`MJ=~9UljZvS17^|YWLO?& zku~g-KW0*RUuQ&4I9R!kMH+H%vVNh`Z3QfDOec*(IC!UIiA2@o;yo-w@uj}xo9s3+ z)3`~0D1u(M3CuovSz!HbE$lhTOA+nHPC8Q^9(^{37jtJ}%D36L_`ttX^?gh&D!)v8 z;NHx1c-*nH14xIWofa(@49??=h3_Y~LWNiDG_DN4l>5Ge=$Sb>Y%zoN_*@tnN4EAx zp}uj&gTXsMSYoF)XS{7_Yx{kiqO64^SuYPg)%cA1bGsuB4Ad)EpD?Zvgl5SV6OUY7 zR`czqE>4dE-}>d-V9|%y4U}u(va`~T@q+n7y~Y3+K;ZWu4!;WP*GXd}{g#7F%kxnt zG0G2~PIHf!p3jrq5omP4i!J?`sgdjF#P5fK#Ij!Zz~atn*#~;LST1KR>qnp*b}t{i z%eiN2VMJHejK)gfvPm_CD|TW1yTnJR!nS+RGj%Ix3@Z*u?KP3ErMEn+$12NrEA28n zKPd=-&K2l4HCtvoUJbUjcFJRa4Va<3;f#M41WZGj zzBQXD7Wa8a&%nUhUw??ugq?0tPa`3xM8-;MhU6MjRL{R^OXBpr`oq>0W9v#yoOOORGgS}Z(X*z9U!OgPE4;IAn_LmYV1PdKNc>wz^ynK@3wY+PIy)Uh99R5j`>PwbaN191Je*ime>4A&lPu$Q)yJJGF$J&NtDgt64XTZ5o z>pKV3u<@86SRLm{vdW>%w&c>qa@`h55te@Ktj~cn@z#CbSZ&JSM%FJ_2Wic=KJb&h z0AMc>x&_0ZOc&BmwbKVR&z3gpjNIiuMbC!Sf)S!pa0@pJ)`{6kRrqu-*QMR z)k%uow=pe9Hk$k+rN*1uhb^i#DGwq&vm{q2g7oh>O$la98UWmH3+0wF6>)nal0^rIu=J^qC%SR74Zy+&OSiRZEx($!$R6vj zyPEa&xK-lmiKF@t)X7{uho#}Vp2aYc((YXJuSKgyael#R&ffB8b^g6(_ng(nCGf_$ z^NGYb#T)Z)(9^>9sXM|9{`-*)tagMj6VFI$bN1%m%;H;8doh6{_Qcwg#>mn`=go0F zAX(XSMiS}G`KqI*x2&?))Mz!A2q4dy2zJ1dMbG(!4ezNs@QEA!xdTYdxNjViM}AKQ z1D4;-ycW&-bvL+uKE45;Tk^b?n*-9NRjIUB#W%YB{e0TeGf)CZYTGr=R3ESew>{P$ zaxE&B_NrJg@7%JKL&K*nzlhI2`cyj>=k!A^S%r^9InpAa9@`{D{s#3(Ja7O{ogd%% z?@7%%Q%y+G(?h~{#ZM5`MdwHr{I1D>Bo?&D&S$u0B)7B-X=-#wSjrAJ13p=ic zNVbd`qnAbN2|!c^Xq5_YdGg;w6Xdc~AGCQp{EG<>FyruzLt9YU_s5Pc;WVQ9i*aG?|F1YhY!ue4F4 zL1aQaZ5{@{jtwGNe8itAs|~gNUN}vSI&uIg`_eLk@W$?hW57OhrN~bGj>Cv78mNu?GdpU4 ztPCluX{gpPh$iUU1uzsOMb3bErj1EFbVEp}PSe{2`oj}YKFHNQfV-f3hRHTbn{832xS z5sS$GQ0nzk-<=6>m}mM!PKjHNVmX&21Irok+xa$}Zp1mi46D1{vQ$tb18eERQ;+H3 z(|S#R$QV~R%uP$V=PZjUpDA+=)N?60qdlEoQ9>_zcxT<-Jb?x_tG%9tUr#*`Z>R@> zc~=&wY0aFeTJfU!H@Hr|^B}?RkO_(683rw9uN>+(4K_->H#*f*!(5TGLXQw@*grM? zf8NDy`HG5gj1;Miy40Fbl>6HuDf#h$}6kGlrf5T+Q%qSm_W-=f+Rh&NyKFF?gu-q$Q6)GwZPN=+h z*(}x7HERndRN1!7uABcGumUFek8}d$2Yj>eXJep_4h(|V$P?sR6}y|J1sNB~xwE^8IomjA5=GLFwKuY(*+>V1hcni-6O`rcR$lYKM0GOqp? z!benua}yCVPw}vvUc0x`O6syuh|cR_En9LPg*0zIWBvM_n{^53rVRe(uJFgC@4-_t zOG-F*itZK`4U`J*$YXZ@Ka$=)p6UJnAO9W^J8MmIj)}2mMu|m-Ojuvn*Nak#rAD2E zn60a<4=lgqh`~A~jUA}s~ zp3leQe!1oi%R^!VHBk|3*)3OszEmZKT(|n981fF7Ko&3O5ORf|yJ#$JjpVy$s4wLO zmR){X!p{;g~nHP3468WDWd85Gn-PhN4$R5hKEdJ zKsp_yx&VRkk5Y-rzyv_|$DgO18XDlnd=ioYU4swRB*bo;qp4!9!hC(8=iw$wvE?Cw zS{EvrXEsUS%{3K=Q}(GFznpm$2+2*JyydAY+Gn3@XJ}wJZx9r`_$N$JtH7hq_PdMv zwv?nFGV`yf8G)NHX?v~ednB)4t!D%lJ@wm1pV^0f1?nMs*vp8r8s9!o!38^gujP<( z;@MztdCCIhsCev2gTRaS2GM#HcAR?1ukt@vZ|`W5e5|dtEJUjoKjlaO`JBGqoB6ObZLhnuh^beEo^txL1K`f zdk4+3K57Z`eq7V#U0&qdfc0)0U~DrW9i*>hr9c&U$OvpbNK<- zGnqnQilt6ra-`Btuyo$x>)!}kiT2;=lbQq4-~zy_k{`U?>A zj`55n#YA0~PN=eF)*bUG(*e=+2a^}V4Ls`>G4*rHyt-6B8AaSq+Wr~k-psnQwo)oR z@BXoPX|QbajA#a)sx95dz&NvRZs0;){L|X1<&Qgg#%&6-H5@g&cmcKbN$8^^jv-r> zXLncJ3vtdhCTsVyR19Oz)SlBNhl_wOAyPSQu{)@A*@@9H_F8(m#TxJ^wchrK*$_U3 zcCpppYxt=C-Z`2_Ea919+M?Y%BbgX3O3z=}%3d81qm5qnBwn@%I7x>53y{xDVf`{B ze^i=8-3SN__XUq{@DJD#vjeAofLC}D-KI?2OLy}q9eB4*G*-9cW$rRCZUTFOx5ZKz z(ChGPKn4BlTml`Me00G=%u>F#UdF{#KYmcEpD(NpAOD=9PSZNG?)YhU*Pcu}cb|N} zlSorY23|R}1HEhD0?e}tvq}Yjr?~XsvHBMnDs`yct;_KL{?8VDdi=^(nou=rJM==c zWXLB5%Pmf{SFbAd#G(&qEsOgcTm2?bd!{LB>8nwV2RlXzJvjKryvM38u1T%3-}dv4 zPW+iVMM`pc(TC?W`6#p^j{>q;z-{*f!n>z&|)!(&xJl2EuCRc&TBCIUv;&(mvn2YB}L1grnS7@UJ z6qnl6G8npLjT_U4Iz-uArgK4O*gN*5I$|kttQ&MU*bxYJ>-*G^!zsu#_o=-_uFb-EmS+4@o_Pa>&gL4or(#?o8DyBNhr5r}@&%^F4iCJspQV7Pu(ipUH;a}!wyk+RU}?fXTZCPF zRqI6ZZ1Lot5I27M8@)R2Xk8HjxM|wpvJ2=8Ep3mkwPdrNZA;HjK-cizQ(UNxwMp(? z!QidrT1^m=r+}?Ut3vP0OQaT@7e9%)CUeT(w!)G_;Xh{&zVQuJ9gu1o0~Om=f?K4r z#8yDX1wEB&A_ecON`89%uWYV)sEezM_xJ$}C7WklD{$lidB+swIMtcXDC^7fVqdaa9-J3!Scv)c-Z_Z^bzJ}S&(ZwDjku+#N{*CyRl72D* zkVVAF!zycobIWB;AC9Sc`}>TrkN@!ZAB0_suFx9&ZP*YqTtxGl+LwmHWY-P!v}Yrr z8BNX5un4=r8RjqE4goKbS2N$Gm7h;ejRZyF)X&nmnyrufTS2YhJqKoB1Z8gnCcAP! zWz91f1b^{5BS3PBWQmIOrb;#E+_O#EAy4UJ^-q+gg7Pf<*F(v!bUlqEa$gp_s$qIYnaeSF8l&H%y-zZz82p1*i9_cL5o%!tuMoTqhV3e z)1R%yk>X7Plz)hj220~4>Igd^EW}oCNMj1r8wBWKHADL+ zCxgu2U5AbtAIER#Y!|0TL%EX;0lK|`ns{RB#?Dc^PG1-oimi9#F6=f~D|Txl@bE2< zERh7jJl>=C?GhsiX$+K!%9@khgEn%=h$p8^Ux0t(=nXGn`eo%viz71&=A1R&ybmEh zb8VB_k9EU)M>JsCu1M29(8Wb6Hzia@FHuLcC9=rBr9 zbM>cr3EV|+c;59<9VBY1V!3uxT3?~9BJ&uwA7!p~JEVxV4*$CYpw@-r+hqh?+2XbTwqM(D)bNxHlpytF zM3%5eu`M9UP3%np;<_?k*^shFs)M}Fu~?!pulo&#B^-r@=_4ri>qsY4AK8z``hy-I zM!vepJ-06JJ-su6vfHDDeY5fUF8+cm-_qiWnhAP=XMlLerS-^ivM-f2(Dw-e(3{gg zz*3(UJ1*AE{EGR7dDoLfU4Phcg?R^Q74gM(b??YajHS;fJZUr0I&vEsQRxqoPjT@P z92lk3)A%u1eTrO&)DLXn2dho=k?;i=d+!28yTsIgq=}9Mlo`U zv=PQq*$s=9$Uws7i~FIqw1BpH@P=Q==ceNq6eMX(?tzoJf8~~*E7s^m54}-sqtGH3 z8rq2hF9N&2{?seBB@(OH!X`p~84EySHFIG@SC5o~tnWE}vJMh{|4fh186dxoBWbuv zh+7p}md8OTm%VPhQ_Y|~`L&o=E5ydB99J0#+*G}9?lPBE>X=J@O`z7$|>TI74 zJz*opnq|}v!M_jM!P1(U(F^s&GyfSAJJH!E9NrFHoPRIM=KceXM9rl^RY!_}c0U(w zl#8}MVHP=tX*W|D$M)g(r&UHhprtX)Qb{ZO`#d=wfZ4OOu1Mo+@7Dxq63$j!p*Byp z;YI1Ar-lXa8eub{^;Jn?+n-3In6yWkAmpT3VVc6G;T|y&C99>^I`2QYfmtnCaP?&F z10KV3ce(!>do-fhoj9z9Bxkj&EV9fGFG<--7Vg|XT@}e)^L}f#_$eU;C6b!rx(=!N9n$s`iLzO-9iaavK zafSnupp-RPw#&$!WQtGaC!8gKS*kNg=YA1+$&ptp7ZYS5Wz9o%a)hM3%-yq8c})gP z7JSdP?i04g9g!(E&3pQ2RD6M@A>zkO%DusxZ}KB3AK(G+$F-$T#ta|6s;Mx)faHsg z9B|}M_&i5jT{r(D`yM`|&HC1B0*Dj%SROtdwXlFn)z*B9zT_P+!@S|N?FuPaj%ba9 zX%c}w2R0?h4Iv)1uDD{N+ynv?cu{$j2AqKJ9Kc??X8Cpgup;ReAgRmyp|IdPs`pi? zp>T_n%c(=d>I6uPSYjY%&r~IAmVwhi6-w_}!kbEj!p*@7ayj2Ad(E%&gp(C9RYXv@ zq$*VKCa(Og>B}DU)=@i22DnvfvBGX*uNbqm-ztp30q*i`)VNjnO+RfR52O5trA1F zkN%ClMXboGo;6@#fDW$zLAiC0)k<|B9;1;|35mJ|_A<%d77+MlSv9pc3x)<|iF9_a zX483Os{I?H%#cP}_=Z!?`ylyPk2k}0wq}s$w?66g#uP$Jo=M{p^BT<3f9Oa2gVI&p z@1s6Iti1B!&X=i`sC z=ovwbE@BSm;D_2xe_zZBkos>9{?VTg?JZTZ1$e?GgKV_YLcD1;Bq#9QHXMb*TC(3&TjzBx!h9NK=CaP>7@|gvbibJ zbq7mBHE7O=@(g-h`$em-v$lNLtr)210G5wNW%YrMbK{PhJ2R^ZuDjL{7su~c7|;Yw z&WNTFB=uR(CLq)e{0AUt>Otjtd}RLAOGL3v>#<4_h#P$2a_WV^*~{|KPd%eyfrSc( zYfZ8f`gJgIz+z!}i1K|WSD4E*%==0RweJ#^?PckzejA{JmSM!B2SSHOkU zvS$ZE2bG`j&P)04U|X}!iiH`3sBJJZuq`3w7$?$%iUJLHEXNDv?tUqK@_}Mq^*xp0Iz5j|9JW z%gL3ky>q#;0?We{4xY?zVkooK4rye)NXDXT1XY3J3_ zh5&&0#N?$X6=&J@(_RO}C7icUYf&c`C<4fZRlf!sg^ ze5>nLJPF(lSUnkD>psZ%v?j`P)d2TYu1u5QU6n@$L#{o9Y$XOA0A#H#6VAWdT&mu* z99JhK$5!!t(Pn^?q;`R4hs9(;*3nx+xj}2bc;kDY9X3aHco2hIHp61*kmvZ2j$gCO z_Z;_cXD)8aGVpHy3XIn<)!i%pqVgg~xA`z;bq^A|aJ#(XS8U-}^V!y8E3oJGS$hJ- zhE1d`1blC@W3crP`y&DS{jimMzmwaf6#yG!3EesGMk4zsEA*G z2*rR~R?mPaLY2Z|t1}fB2C=u2qXdvB*Q%|8QON(TL9j~};Ke`Mb}-m<8fu0dk0;#YC7%}Du?>>J6-Uk zt;$63ApPOIi?*r-Yiut{Rsj&F4mwM|>$d?_sAwRRfsYvy(V6NVDbilkv~xi3a6vnu z2Q$caJInmgZCzw76*Lj@t$G%nw)Scd606q`8Nq0)Ks~vt=w`E3?Z{`R3UCO4rVwTH z+=;Tgc1IVzVW}T#wZAm_l=JQ=@oq!Pu^LUq*?`aBcKHt6=CSlfPXyA4ervX<3|!P2 z#yn8U_X_SqvsyuYH%+xe3G9Ut|JsM0IkN0knp&%Hn6|4Y$O5ca*bag5VR=o~zrcCr zu;YHB)vAhy8ZkijW3(okmD**M)h7D8`ENxRw5!IwU*#95n;h@d`&oj@kOKyepFTc1+BPqv)j6n0jXHRP+FFJ zea_@FDA{A$;`#Xl!7a8>-^En&ziykzZI+mCQ#A33Gl&_R)>DdZs^25-t&T6}Tp z9h$%5O;Yp{j_w&niC? zj{oTS=S%1)#^!gmC6EvEb-p#HU+pd>gSw zSf{UzXUyN{q^|FD67}H=dZ9&5#`ZoSNgx-A9YtD2D(nA_Y6!} z`&GrKph4GM{C2xyvd(uGn$7FjKL|xWB58|mMhhe zpSx3OzzhgI3`3c8sZv1P`#krQX;C%+Tm}hdOTyY}@);r6+k*nZDs^lJZ@hhL?4msk zCmBe)4u?)51ay# z%BJ!XAhr zR}_M8hNWB`XevgV?mmfkpH2p69e#H`cWZ49SRkuR*cA*8{F{$;SC?tXWKFYSooh5- z?q6=A@=keV%f$7tc+h&HC5pS#182e-_%iRe4cxPBMbiw_Q&aR#P~YTRRZ>z1(0-{V z?dJmqF=FOi9%h^M( zor$oFi&&v}WCa9TSU&nmj2IbejU!!+52V9>cfoDdG~|ve0+K?!roNVcv;VSL!fk!R z0=Q4<0s>y)x&p81c9?*q0@w)WL+MvQVdE%@I&`;R`tIdIOfw4vJPx%^cp2kJRv*1e zRVR3B#GsBI0%eVc0J5fnvHvu**WHPJl``P}u{gmaIpmPjH*1bKnQ#-dX^n{;-%m53 z6==!C)aH{Xx)ng%k*cei^SKJdHAmzK|6)&uo{tV@l>`psnAPF_b z_>d=FQ*rBn||Mj>hC{6@YVfsQD%>hkM!auZwCA;ubV*~0pVzqQm#kMYie z5qnT~z=Qops>y^Z2k#v3riC+mbalb8X8fs(vL*`+JSB7HOj zj#|ug0kMhA3b~Kezp4W1wEgo4XfAejc3pZV!rHA3c0A)eJrEAw@}Nm|SDJQ>Cfr08 zrREd02K@G|j}8#GOBe93Q118K5zQ){M*k`wB-9a7?A~|>hUA!c5lP=Iw4|6VQPEfp z85ZXLsh<>N4k%@!u|OH+DxkAgI5eCaurw0GX(0TcSI)*$-#~)E`uBk)+5K4M4d+p5 zQcaWem7T?(@fXG&Elc~i>*x?NetUrBuauAV;fjzO%9;hY;-i9tN5$kHea5Fhr~K68 zD6e<1_yyu9uYIq5iJ^~e?7GSdTe!7Mbl>AaTO=(plBXrR@$Shst-9M85y_b;H@Hmp z|NB2DBPxe#f5je!%a634+f%Bnm#^o@5)dW&B^R$LL^`NR7Tr_GkGvh_^(!ObiRhi= zZ65&d`N^uAsi`)sKSj2%o{##RZD3IShBOR4$jaN77eQHVP&NX@FqKH%ukZ%Pim( z7;Ck&h^w)5t{T_NIZmKZX@efFY$*vP6w6KvF#GI}?TEvhD!Y80%-k8}D7R?Hi=vM$ zn~edQvQv|JB*wW_F1SU6J&PB~#B5_eg2BniOZ9gx=gn=MK$?DIYhVqVbt2-lV}OFw z+@3}{T(q!#n5^3h9uwj!CA(HMAgo)AyzT5YdCr;2rPj&*#oxzx++TmkJ8zz2XLEy~ z?=7K5aNt*u-6(qRzseDbMao)7c?M7uMu-eKK#BXsbO9PLWmW4s;hhKK2}MhbO{0Ob znLK|(bQM3l??I??NL6^rGYM@pe35ctK0{BWc|#k+ey_LQ#()xy7AyiltT&bJvyF^0 zmBXXvp*3}-8J->Z?M8{R&~M;;#2a%m2gHoY@pi76H5Fj8PmTwQNU`-YO{ztKqe;Da zApRkR&J>D$II?rxu7Hr&QENwQz81+=5M9o3Mf@2OxS#2=`*V&QlymwO+IBk;Zs!vmgRdnGQF1UbvPMb;aIA&0b%`Q z3hZqTAt01q)LR>kq^=alFto1IesGHudwFZVzWt%1ISLS<=3NQFhpNo~c0{BU4Kgao zlsy7kKA3&SdYrIV&!;qmZi_y{C{MRtV|D&;-fd$D2qXq^{Vd7A3bkAKHA%|7I(M)U z4@xa5(=Bdd44--9cSmQeYEn}jL4j20Hm6DL8sL%; zJ?VM#KaahA{>hBl9a{fq@+HRnb{$}%*6`FOYiO}NZu2`t98JrTAJ2z^?7g~qYDnNu zPqB_jCwv(m%911QbS^R=0KtAjS130};xaG%2=VX3g?SnG>go|Cmog$M;eccZffy@+ z^!@Iu+)uTc=N|s=@H8Vu-Bf}$3P5A2o8B9vv1ap2neP#>2&o#lqRHTKij)xx^@Zmy z@VNzq_vZg$4T2B&!?^ut*@7U29eq^vODVP%*CzhbtTN5;^YsOQA$*^0BUKtU=$>PT zwz`JjmrCA7wn*`r*VY2iFdE9Kn4CqlRrkn_=H()d?}5csv(jROw90j=DTZ2YI+nUb zLtgv(aAFCDKZ+i^tHU1`YZxf7p`UXU-bfkkcSKxk{`=hXiLbBKro@S!0JPW6hBUAs zY%G$2tOzJ=O@>E*Pu6*sg}OWl;bV>jCWFlgauA8tC&%&T%D;f15q&{`K7-6bz$ATQ z9S^K&)zc#r_r%kkW_CFDPNcn-cmMSEt*qaNkpM zYS48NG`ys}YX)E4GGLhyzSy$YNN>KoGbjrYOK6_6_7x0&Cv`l~0vbSHk2LR&>w%zZ zu~fr2+v5}fdHOeEncmdd&V0;#!U=mg|L(8L+jT*CM7L|yc<(Opdt5NWCPQ008-C%(dhj%XRAS_Wz}a&rMKv3F z8757Qe2@+sUkNJ+Sb$_X+%+6BH44;cp6i#Ml6Mi^dXNNtD4o|UQ3sTSLT6#?9!Ya2 zbZtL11K^XiKg+j|rr7p}y`5EIE~wHf-?lE(C&(5p;_cHkJ$9&FU$ii|WD1No_u4Tg za^x1I6@#y*qKy(L@S30MSEu|8ea+nS^#1&sJdHy}C^q&v`wq0Ezfg{=8{lb@jEgm7 zok(UXd7d2JYVXJ_L7HCXo$W4_3@lL4~roLuylKhV?Ti^7Ch;@ zlOoHiBIoF4CC3uXM?qn%N7bwGQ{vgJgZCzp{`69MQLHg{CmF2Qjwh_VOcI;|FBJ#q zv*brUzFPL$Uypx>XrqS};HKW^XFaqjo^ljUzmL4scIgUOUCJW{OM$i!Q9?(3s9cw6 z8X24`;NlFVLtg~^F?`^VsaaBRH!&Lod0hgO@p&eqSh0<`|GMP_WI7?QJ$sFa2b2{@ zq`N@@Q&pZG+wD`183Aen%%?T5Q$vgBWBsNB!eUJVeY!9RYyl0*TEI-2E#)O^mhjtC z^eZhXfIm-`ewI9ER25~9&9m<00#RX|@0o5-<6bQ!P%M^k(&Gcx?JS|94yrT(ZA2wQ z`48L@zNgnoOgbNg1!V0xS`5YC=ge>VP|9lt!u@ffV`3kO4_E5=dtEif19P9Z!+Mbn z{WcCC)QkbgqS1wIj#J>}xkWhhXJ7^yBJ1(xn~n@APz{1V1fFAc4mKl6)Y)@Yxu%co zR_+=i{4P+|9NGVc$yzwGPXc3;Gh1ZTO`FbV^+!5s^00>>PVtW|I>_vB17`<7*yo@}>7T558~`!7C{~l8I|Ku!iXjlax8vRA_m*gZ&tMt;D^Xxb-rJ~q<{OgaQdaf9$a?# zf4HZGo6;DK12MRbHw7^VT+P^q!bWzPt*JwE)j0@+Pt})CL@FMJ6yLZyO>fP&_JJ1W zWy)6TREgsQStrRr(xAYAyL;bZc$P)}GvUT4nxX;vd?>1_2wp@lK9KxMa?!&jKyuO6 zumP64{GC!rsj>(hto7hpwzx#*-1<8bAqD^M^dveCC7TJ9<=e!3Vs1^G-1OXOO97su+xjqi;p zF0c_F>z#7lkRHA3oHY9XKd)(kzwfC9DFn?beL3n2?31U}hGiX2t)9*B?DK&pd)sn4 zy-ZZ{WpEvMZO<8cB1nBZ0`Q08)X4G!M1UdkFmyMCA|SD+a1l6bwLVq+{2wVF!LqDy zp)rR=s{jRarva>T$q#_;bgHk33T?VA=b3RAaX(|5Cf8~c2^HiivYol{36j;4R}z}< z8j=wIj(8kt>`mbSg~n=m&!NjWIV`%lgS(J?#KTZ`c1&!&!z;+u7azj4JF!I*J??$Y zyjeDgg;tl{a43p|t~(tZI3+NLRv4iBK*N}g}!2677>nsL&}-S?Af1+tjQIYPSiTj1sT z{0+j%u&i#Jbz>%G-`HElx48rx?+u&ACP(JYO#*m`>o$#GLC|{OxF9d(ts+~%iM2>M zHK`6`_SU2zaaFLFmG>#4y_~*i(fpccr(m_#eU;7X^M+Rdh~mfewtD2w#CR}-YE#%a zQB@HQA3B1z0{HYex` z78S(4LrBj3z>GnOPJI|qJce{^$j;lOXc~D{JTNDgs`eHS;`dkgpxrVt zHtJeCk!+Ds?x&he$=&<)D})}#2QE0t?ItW|{o#DTe=ZT-z~^XWtB@m)*5X42vOOxa zQEHGZQH-Z@?%{)0N)`~!L&{pT5iqLzi3Z4k3Z%&r*O68@(S4wF@rF?-RFLu9WCskb z=in_I5V5w#B$^BicDXzIQ*qG*gvHY8ZjeO9&|WvgVso^aR1IDulTr!sMuMQ z@d}{B-XTpzv#pSWk=#&^;L-rpC+re};*`nvm{7^6f7GEV8&D zo`JHVtobcezYfJ#zXl9d4HxtsF?7{(yqg#&1N|^WV?0&Zvx{sysP1|SyrMrbAD7C( z>z9i}m-HV}E>rPtO(Q{gn##zhxeOmXP(QpK2sJ!^%>Y2cD~Ge-&OHO1i=JaksRl8U zcQ4E(0>8CG42<6(sVJ4C6*$VfaBo|-1RMqaE1#&uUG)#Jh;k_ZIX3vRyqCx03nRgL zjti?4bdRuW5JA?+okv6~07i57V24-6x3Ok}$ezT}XZ?rCda$2&%kR?@O@#J0s|Hx*3*NpNw0+zaV^6ouQ60>p z7m1xhmlSQU_;U&rtuxsHSXPEN{05Y9W70TL-ao(v&J&v1|K zNvq=HNP(-Ra=XL)e$wPu)4CX0!ds)plWh(4Eam#}k0*?Dg6Z@Vzyz9uB$S8-7*)H0 zgg|WGLja@!w8%3U2x~sFR1gs4*H*o`h=H92Rtns7nkT3L-CdhM2?+>o2?=3|@+?^k zQ2s@c<2Ch^3BVd*QwX!jP@_~bq_KAF#`)Ub8UPo9nDcZg!j~g=(axCuAEINxeBiU09qf2^w&OlcUb zIp7akOv@IaJRmmE(0sJ3E$SvTA+1yguc>%o3W7z%0O{8QiuO9v=?W8QF}QPcmwYH| zP7Hi0fNIb?aeaU<1l4Qf%D|sW<{`lni6&)E!vwe;OUb_1sxesKD*Xm=HMMjH4Pe-@ z*Rv&$qzF)u3qZ)*CjLtARQ^Z@V%@-6fx}B-ZTXO$6w(3)Kd}hNb9*!auw46Ruusqp!|H zagLy1P8h;>{9|%K;$@aZcteye)(07~m!LrL`I9A~~G4uVN z+j3;}EXc0P`kK-T7T;N*8S%>g2euA?bWM-z#tVmK!*qN)XpqBfD7NH6fJ!n+sncgE z--&m-dTft5sF>71-SXu20-$K5RGs4 z5bWZY>78^*8rbW~i(JhZS^+4hj8FK*WB?%U*mv3s<+tL`yF`CNpdN}X`Q`xiI3_6v zIR_Huspj8IcTD`ZEIxt(DFDXd?Z#0NKws(V3y#z;#*eRB6GE#u12kkX2eUhB&y7`Y z9Izg1jo6kr;$5)oaeHme+3z(K^W&`+KR|Ll^a8*XyJ)g*Gnq? zu!=@tTwzNcnx;0*Q&wuU==dPJD}ArP;4l-}Qgf%eS(f}SXvj?F-JrYJ+u)76yY(Hq zXtx)w&O?|H!J+h>lq4>K^bo%pG!w^Otn;hi>8O4yn3D>4aXeM6DL_Pv4qNo;;S3aA^RDG&YucMP^i9SMRR`V0=qfoq`H2N#bI z`nnA#T6Y2z?+z4{vc>n46yNNrlb=*S*z?GS@LZ;8IC^s()ppe}@zFO3+; zxoz3KSJ1Z!tNhfJL$Fhi!X8b+D;&J3b-_#A?eVh|c=7MK$bRT`KTYkaz=^1=fKvuW zRmK%lm4)Y%(1Gh{>;jzM&wg+kt2n@Z5~?gM%>akvCA{hIp?ak054FOcVQ3Bi2^|nL zcu3n*poO;2^|pXk_*5IDn(K%I+_0oMO#<|EpW~3^fagxnp93;KAsuE;5Kb zU$1&RDFwH_lf$sTE6=R-X0VD9aL!O7s;)mqJ8Us&HIg)_cEZkpf#^+dH{2Q08GsJo%+mdCQkp%mi@&7 z-k2o20&(kJ94zfVnz3P1e1eZBfuH@i^#x1Urs6rBxZY|L^H@N5)Ghx4pB41alriQ} zs~S%#=nA;(q=-zk3-QxTKuh>Qx}n*(MXzN&CzJtugQkaImeX?`=}@eLox6_`g7^xt z)bVQo6)-cimgv>n@$O6)8JINHnv1yJWjCQC#e0Pu+ z1xpHfaC`!bwJg0TzuF2{{)I)LD@MZG*bwQ{6QP}scOcz^&DN8#!vwe^3v`3-sU#=4ZYNn z%5@MGWR553Kqg%>5s8EB6NGfL&sTanIl`Jhh%H4csyM z*-;=I>wWEOg80d1+5 zhNSIa8Ed<9IumTdNV*ITWQKWDJ-yfRcT8`cJLQ7!S5fT(@@_A8|7U@x=%M8J`>kJK zElZK5x7lp@;_TUQ_AhqzHl;oc+b$eehhQ$NP76W2!aiJ9NmY$LQC9&@ewQ4?vTHw! ztBYf_SUF{L78B2ZbAiu%Jhr)rFCBOo4&%c0~s zINlX+qFhdUTyylKHi^SKsg03Ad52xS1|G#X0rhWnw`icRbir)6xB`pF-Cb6e4lTOp z>Q_1LtQ>sJv|f&VTvqnwci(DWo zBajbm45X#QahYFWGmry@$IG%=Q#8SV*?v;twB=Hk#7ETI;_W>pec3weIEz9N@Wy4d z;<2!#Xy$2?wG#({ynqP&ip`~RUm*kaNOBb|PX z^&A7o5*1-9WPl-1ChiVMy>9&mL}EtU3d!2tgX5Bv17U;U6Gu3*idLET9JwG|%dL3M ztih}}7D5JsG_n&(Dtji)v4c1VmavDxrW8tZPhHqyv*gI&1aCJHb-L=WYp&2D%nz%M zjJ;kA*wKWQY<1RC9XiHp4uAVrdzXDzSdrcnp*m*KnR*@QRDV1^baLR+;v0MEs}l2z zIX21BYgEmr_c7|`9fs&SynE*0e;zJnoo)ZjHPtw8S~ic2t^Y2C=4B1sM}+V)52)O3 z@VY_A{n=t^yXNyi? z@CA&x&J=i33284SpVm`!0y=;qedZ7RjhKxRTY5W81@Jf-wUhVo1`y!N45y8nysg4?Z=@XC@ zG>$@4(9J_XS&Q4VHzhdJwg!P~WuEu$GQHOim-ZQ-ZTik)Dem|N;*F=&rV&6KsRkR1 zR_c@|tCR6&2bP}pl07Mb7;%dCW?PQvnl2npx5hC@gvhWg!J z6CkFN0rHGGA{paat*$;bmwdBf>3Z?x5+dF(i17g2y>$T)BNG=NXf!$HhzByK7UA}$Ywm3esu69_o zJK;c{IR`c0%Vs7`#=W!=laK?yW*5RFPa|;O{%zrG13dNP&wM`)%vSi>Es-ku23Lkw z>~Pu&z`Pq628ynn&2bfNILHe3{@a9)ynNaejaya`5Njd-3o~%c>l}yGy?>bOIijiJ z`DuZ0ujl2a-5OcD$^s*%Y{Az=j<(~Rqq^WE#*bMV?HJkDrzYORQMK^RD(9-c@mBs4 z9%-Md$@PIi{OM(gaf}S|=%=v_g2ctOHS32s4QT<>nflIp88ZusqFIC8CEoJ7CG&wr z=srp{;HE$W^Z3DVW}`lUvQt~vIukZ{M@6eSizs)Ebqf2~bv$lZ(@3VcxY(?Mgqvk{ zG_NT*FEFMqmgWh2R9v}X(N`WdzZB8&#vTOca8e^+O*pjewgphz=Q6WzDN%o9j_vfV zTCDC`P{}`483jRn&H;H2!s1dP^=z?K1HGa276#J*Re={x`|))W z0Oab?*cV_g41F~aXfAeCDC?sEZ{4|bYI|TPh3fb>;HipWxqd3?2M(Z`t=$C(0bZ8q zK(LhSVq~(9>~MuE^k;`%6Nonw*JgQ_!$)PYWURUgC;$@0 z8cxeuXW#XQI1up#*+dD-CeSCFebinEGn7J7Z+d-JlgV6)P>I4sg35L`ZzoooJG zo^O8?wC)(+XXUx|Kg)UOfpmy-S{E*cKViER!5#DOAb`^&Ko8;^ZwLIzT#A0*z7Ysd)-&sZmB4>YUmRqD@F8CCmbOe3~jcF%JFZ%8fid$#IF@_o)1XB ziMlS%ZFgu3fW$PoL@+tVEKuE!*@76WU#m?%fxtN9c5b&y@J>KD;&$v7OC6L#_E<~o z4#+yjstWS$vBolHEnv4#Y)RUV?umcn$vj*EJfQgfU%s_~T^Y=6v$(bF&T;kt4NR%& zJ>Pj-R!6496gu&+As!cNlwDfvGxiPaX^~CvOyX^7U>ND$+j1}Z_wJ7A!hZ~W{e6&Q z_1l(96$v)t0;IT|^3Y4!b=*rIP;zc& zCzF6Qmjer>PSg-MFf;s*;JJSnW)NF;0lEQl@A!$W*U?)Y@cT<`4orHvbqlbV0ZpQW zxnPGS;v5yM<$~_q;jJvm z6QgGazAX7O4#czle;mDkJk$IC|NnY*mW(sD=R$45e)&~M%@FEiX684gl3yL8noNdX zA#z@3*f7le%CB=aD*cj`m{R#MY@L&=&Z&tqS%>pF(o%0fUUkmv`#9hI)1`m>@!Xz| z$Nk6ccD;#BT+I+8H8?5j^c;n>rLUMGeC8%wN|;|AIWD_t9DH)|KbXs!2a5KQTb9`5 zm-4&i!LBa&ms<#@@Q=78)%V9hKq`8LQpRosVKJoWhwx@?TUI{&R)&HCF0jV#>2)IZ zBkyWQR%L|Lu-$ovY-Uw~5K-A@?xa63MNI_F^{|D1s|&=5sC$<|D#jYP(G< zp+eRq^%a2rzmTzn@MnfGOkh&8{(v@F>9_u)9Y@il3aS4(G$RpV!g1b zA2%FZY*@_d{MOY! z#j))UPL|U5(|eqZ^GFbPCCE90Oq{G&2nD-=O)$;&&k_=lK09Rg+mz-zvBPSZt~o>S zM4TXgbvPDX^hOaXg6~1ic@NQ8<#;I ztBN_T;Xj8eSUkVy4|w;XG^@Eza)5n904#}mG=9Pyu{Q;N@SI%>mFTVw=`8SnB(m*p z_1C;YcZ{%fVW@}xQc17-G3v{0B@LTW5pQ5k_OpK&rXXgBK%$-{#19ao^FTS^LB^(&1P4x(sAmi-!0FZwv}Nt>tKCR=+^L0Q_FF_^Z76^MG3qnFG>-p+H)9SLjUg7$aXoU>ksRC~|a8N7m+5lJ@! zd$L&PmB>A;|NVnVPGX3RC{s&B^}+cX z**Irj;j;xa-i3 zYIeGc)jIWb@ReUd@G%!c7Gl-zocn*V+#`F7mx<09TVx(mj}2=xLAmNDZ)6Xt^pgMb z*dOYE1$z8Yv&^sq|=8o44@JHcrcnC+aY-f^VE|AJ)>8p#Mn?LqQV zn5ZUp_>XFLes@KM=4#Ma_)O?;c-#$VgXwjsv!uzI7{b3b^tE!^FVMJw{xe-sQtR-O z2Tqf8p!zknT=c2Sped>@uOV`->uqE>+wC>h929EL)^SG;eQJY^DLyDg9S5{W9~qQ< z-8v1SiwZb(bRl)8%5yD!wZt2%7$wCO|3&cR#m zv~Bi6%#by;^WrM;>p2i_m?sF8?Ta5;inT7{g+_Y4#abFCzurE+Mdfc=cw#Z`1W>t^ z>=X~iom@(VPgF9WFM5FNMC1Q5YpFw=T^62A07pM=o^9c|3~64(0THzRv~kO2g{I&3 zM=-aGRG)#vtG=CBaCL??&WR(aM~jrf$;-C5u3;cuSoKYVtCXopuh2AZ%oP!ZG(elI zkx<;C!OvIF{_jTG=O-QzM$-ep^n3@#ePl%t5VjgK1HKIsrosk5Ky&nUSir-I=$4FGlS?Cn&}2o|p~ne){jzR_h5Ueb@(U zwJP7Vk;Cg2CA^K-td1+p<~YZO@>^;?wQ=f(sfR4GrJwI5jDkR7&-?9ftQzP56=Pf( zk&n!86>b|DorC(&V7O42ip@2?l;4MZ_JU`gYyz3aARzmAt(z%Q{zW9ZW2Pm+hiq&2oc-` zv%nJpYCq^g`GP}%zF8ri$CwF3yCy}6UYDt;YQZvtir-};JxliE-qFrx(J!JP&6`AR zXp^He2E=l%Vlb*#(1FBj=iG-bKjHPHnN%lixrs8p-)kF#*-szO9WMH%nVE%NJ0En@)disK{?x2Tr$-`sh(yYm##Z2emf=VFMY49UQKvi?qMOX zv-(_Vx>SI|IZwSJ1nXL-`o=dMVgg#Ay}Ren)_ZsIITO*d$xikO^Z$C6>0{ZlV_Y?B zTG3T_Efe560I~e%*Vf-0GKPJqL~?aWb7w>05&b`Dqmw6Fd6j-(NE=vTuIWdH!Aeg% zeK3rxs$m6FBkJHZC$OcGLYmS|r^}HCkB~!=)R@O;=10v!VajLNjRrp|gU5~9nS}9x z-^QFLpVtP#nT7#8Kt*hVmiKSIC2mE*cXC52xG!XGAV=X9S{ij4B&G{iDMZESN0h-`svNlX=1?!l>6Mu?I*n;(>2D)~{sw6~k4@#V$M5iDMN`JPgvuat2 za*LQf^ER>~FX648-uQn*ef+VD76lnw1`fk>J$;GehPd7!lJS?F=#WNk0sX7dLg6EP zRQcAhCckXt-_t3{z104Ei=hKdZRbq^V%=E<7JafiXJFm0{Bwg^I6i6fGxVv;qK-US zE_CHKaf70Gdd}%l(ivlNh7w?Ig{uLEr!AXyCK1m81R)}|T{N<@#Zz^IP;V}KJjVf! zLyUCD$qM-^G&yjRt+V0p{Z2knhVFMS9fPbqau~6;m(g2!Jj@$Yv1~Ay<|)o~lO+;B z_yzDn^^>3_7g!}C$98KU{eF1`DY}IBBcF75)aeGfmf?%fhR~mCVsWw&+_qcu2w%Jz zN3O6SHUX@R#E`mo1UX-L!1j(EUNcao^*um{=FvRnjc)gYIvHH-F`K_`@yG#ts^H#gT}soSNawH!T*9a2>>l~ z&2Wz5JI)8t70e&qL<6%5l|B;Zx zh^x7QYfs#rN*!hgRrh;jA>Y%c?ihzzroszG@6tjSYlAtgI6ep63vtr~vg-pRY9v5} zDAceLn>r8Nps1C{>#=9<;=Gp_5`QeB{Q_nsVZUMXYv9H$M3;;Yh4#VxykUQiZ0Kl4 zm?F_$tYus#!9Z=ZJ?I_^m6)YQNpX`iQeNX{H(ISF$H|+LSt2pyvz#Q)4*I^CL1xRP z(cFlrp(Z+p(Q*vHJ;!0 zQzv2ne5KXDSGXBThkY5mZ3#K!RKSk4ACp!fM5$_)Bbi2HD%JO?%Sr$W)W)?Sezaf)>O zedgg7rGim=o|@plhxf-whH>Esr(ZX#2IJ4J)ty!(DJ9==Z6>gr~@LZ=oS*w4*cE#S|2Bqg{a zU_HJmi$P!t=znF;FREo^q$6et=V7l5Ri7zVX`#uR!*5DeWYSD*9v+$$EfXQq`mn1z z4>*3_!V~k#;MC+P|9Tv#2%GokI{w^&GOnQFaU=$x&mVRxRvAd{^WXuMMw(xD(5EnX z3y<_HnS)^p{EsBg^Qr8m@BisMZhv@-Y#n)RodTlOjt~AqeP!m?aetXeCNHWTG?AGH zl6rsAR*7p6q4ni)pj){@2xNz5TXzqb4hGe5+^2!Gw0|hS>D1sgU1$23nM35!DDyhX zUkKdaL*c$bkRNu-+Mr>=!!tpnJtMHp7d@nF8$^gzzZbK1-sQp8Th@4doTJb0mbk;E z4<4GF1$U?Yep>q*`wxc4C-C&eo;!JPzf+qs{OYlqmTfQ4Z>&A@zw5`y&v@UR$$zJJ zn{2Wu(ttO23CCu|8O9d{d{>&G&p`%>4J2B(!xmc{irWXBd8KzFl?{gH^Z3wmn9hO_ z>*0G7RZfkuxqBx~oD(UGgpb2#fD0}i*4dA9M0fXNc#Rpdbe*q+#BeirKnAY@+qT92 z;V5ndBUpw}D7fjy#x;JTE?7w~X$IVrBv_Y`o=$h{zK%wgo7L^7iC{DuE!ywI31&75 z;g`4G8(bUg{68VO{|)+IC--sM&le}U zC^yKmy}Okz8DEkHmOKceE965r ziTLbX;Yvn_OIErz$R%T!kI}>M6Q%y6Q2WPX<;<}@jC1W;>4fb*v48w; zvm@voBq||L*aPR~gar&u1sG0+pk!djk7dwa;K?b9q>I`;~`CiLZQHTl;3!X<`-CH6mfZKo0#_)C-CGop3Y}l zZRrjh@gHnn@|ww04{0iveAs#JMYF_;3O!L*icwrH`3gT&Rk-uIam-RSvTwz6=+wD{C*kcHvAx<4#&IDWGd^3|K@tEJ$QtyaSowM}&Xj%n?CZ!+Ro}YJ1pM!)xRDg+30PHfmCy*w>5OQ2HaQJ}Y!BR)x`%KnU6!AH-7ep-%*!%M!I6Ke>lZhXS zIyw{C=@)v=b^^|+gBqLVH$oz-`TWSgA9^H)92NKM_JA{kZy#bK`UBNW@mcX&A5KTG z`Kk9DcbwRPiFi%0(0~8W=ydo@yU>JEDsxc2%)ohJXyJwSZW`@!Q2g-T4NDe?c@^$Q z;I1z*Xk*nc7w?LsSlZ>M;Gl1FoGP)lEf9nZf>!o%{Oo2u@%T47F?)KQEWB-5lj-78l&*as8dn`ieguQsZPfWl zRvWDGD-QQT`$M~E9iW#m7jGeCUGvWX_V0y_SPHi8fE5QANgl?qcCVqG#Tvk9=(m71 z>dBDQxYuICN3oxFmzPQEw5|L`7n}^~Ii*E5Jy`=0bu304Ix5WSt$9(90G)*hAtnPk z*K(T7k=Gjvl(BMOPS{&Gqy?d!;oZfTfyTR4F)JfLok4qYYw8gBcx9u;uD-Q8VlRh-wL>;oZtty}RJJ&`DCkC$yX#M?CT`4t2LVaR^W zz3gBm&|347R)=4$jXN{9cgVI4xVmf-ClzTQ=GfHt`pUCcG17!w;*?U2bDqex>cK6R zs5~fYIHg$D>80rl2|^qf^^)AjKvlD}b0&D`g-8K&hZ_hIA{vq>DhDW374XoL*DswjzU6Pj!Ux3nZSj1aTSn_d1q8I8f<3=r5Rae zAgqKGc2*8B_1OHDuNFyBB6yD17mJ~lNx2hr7EVYuzvw}~5l%-*7%atJ<(<^aNjV(sY`tZJxNz1`qZGRB6ZsWhm=ghuvw z@ObR7x83|t|6u1hlbi{Ty&MqYt}aj%he=Cjic zi*L+xj4$%m%KJ--RTKA&2S11U$?GtacL(C<;3-n->6XrZuqv?2sz0c{j-j%BomfDO znu|WGe+rvyBAyLqo?#|xfLfi(3KbgK&S99CDXp9IAjFLnQ)AFFSntj-|J#-lH~6-C z-nEX&W=;KA)jw0iiG4vFXIMKl3HE7sC(!abFE|y**>FfXmkOLBv4>z1WbN7Kkk#lr z-qkUv^7f6~vqwqHw6}L^K+HF?=Au21T~S3$W=yk+phYqTSg!4p4Ohm<5+nX z@@J>MPwaRiU3V`%U_16D5pkP;T3cQ4&OczBxZ;yBn2= zJ`DkXuuF1oHW(ZSA8r`m#?_uq?|(u}`wR|cbT=&?Yv1JZ^@3H3p zCZLX@D~7?c36!-Tr!Fo&1c0xs@#JC7`RpsRKxKkPWLtqRuR>=>mzGSU2U|BrX03)J z7!01azG|1%~J>X!Bn^YfmK_5=pz;p!^y^DAU(pcGECh&*BH?>`IC? zFFz(V?B-q@?;c}(HL0Lyr5{K@zEvfW54)nct+`DqegD35+^;WucZZ0Mt)lx;H^CvQ_GiYvKJax}JQbjg@ z02|JkbBJk;V)snL=odQ#>FO|HjC zkKdtZc(m~PiiZqboh%}_$sj##ve%6xax03ZcnuqeoL&kXsjgS}NDr6va6*FiWTTIz zmayk2G=+54Q_IskNjScC-50%Tytq-#xLt5LXJS(*p&AI}GVRX#u36$FUS)M?PWvg~ z*e4C(z9mI&j_mEOp60T61nOZXD~R6#$@7em6%|cu6x+vTJl>BlP%=E`0ZIfu~X4!%}nDCRvhpT!hOx@Zw(fd|*;qq2#PkOJEJoVe35ziEk1 z4{JJ}*tOKznK4f<{V2qg9l9u@C z$f+Vt^Ei%n*>l6Iys*7>F=6v%GD!v;e!Hi9(KMjrp^>OG&N9Io87L@^D;_eL3_@zE ztE*d!RrbALY{sJ^9lQjGX^^IlKut$j!rFPZJg!L{!Gapwq3NsrjVB@7RM!`q0wc&K z^@wzK+q+5(l2OZ>to~6gapyHbq3qL!bKAE^x2i$12KT5TJpew}NcY|U6z)FsVSMxN z6;(#6?N&I=8N>i7l9p__MECRKu+LTmcdK4A@mD0bU@LC>U12_p!7`-gL!u)IA)iMh z<4l~lJTxYc4WRBY+6+Xfq3zqfEt}#@nb)-qkUsD-`M$LpJukYdY$y1wLE(jq*Za}h z^Dg3$bpmDIUxwjZCdm1i52}u=r<)k3Z-XGcevX2lv9gz4`7;>vnDjf&gTL0C&!Nej zg)ZWBt+sZ9@)s;m;WyYm-yB;&Rm};OuPS|6`7Iyu-lc;)-%o;jcAcaswACI4;QCVuC zaU`s-^dan;huRj6h6AH^Dko6sZ6eWPOM}2FHp)-Sb)f?`c5-GM-^m;*A$;s-+Lc`Y4JhLv^vU#f~e)u{yNjPWA z4}s$0`4+n?z^BTKLY#w_m5s&_MtlM1eEvq5=D;_8MXOLq;UC=i>V$0zhPvo|>pPN9 z5h5BE3`)S2(_%vAq<0Uv-Yg%S{LHTPtvn!Rm5gjR(;V*ek?E27ou|>3HvJ%bLotU`gIqwsA=vbM*bjtu*Co6S z*yRbeJP>HlgDy?6d|$xMhj#|baD;BL6vIkoYJ&~uzd4GqWE!nO3-DQkK3ZolN%o8Y z{X*vOzE(lmHgemmI=crg)w~zx7s&_yX$RBP*$lwDTwxVW$ahj4s8}DUj`u>)ubv2B z=bux+yBTe(YFD0a4>LL9;kXs7VqaY(y-0F&BoGt?0!7$NNheFsgDc|iGRZb3{>ds~ z*knE_ghsiKh)h{3imw(YsSiy~gJ-p6rZSNK6lWT=>hsuf1KpRAV95N=SA!)aC#fB*PKoJ!`jN6HnC0+qxYpYW-rlH^ ztIcCpIFrkG8u>`Lt?22HqZ(SU*3_?625W;B&#TA1Ti)xP3(nl3)QnVRtU= zs~N~rtx3~o>Hj8JP$tO5)_Y}R5P6tYugWSfw8sh059aD*jo0D!GX_eiuZUejnxd08%il-pL)(6nWz zG7i<%2`=l@HgRd!=2`yKR-UB$mz|5%oHBZp{>W}fwqN0w+I0=8Y<#*F5f_ulf(( z?V+ufOaci3vvurh-d^oO4LRkLa>jE5N(u?A8Zrda>$Su;iVI`S1Sp9{z%R4-+9{yt z4;Zq}L?k8s#qpY1_vY{OpB4Xm?4qGYsyJEw$3h_p9~%eF4`$ihakl$Up-YW>@1Bs; zA9~Nmj(^U>rQ}tE^QSUn*5Ted=3ao|TE1Wd^T-ZErM{`wO#s;5^z1h;wtHvr#$~MY zRKV!})v6wn=0O;cO9LBEycPm=0y2@Q!%#|fsS#(*HU`LwiWYo&Go{(Ugr@anCD1#I zVm%qFL^Kyj*|`iZ6x9rspFzG-O!hdt3lO&o_l3QUe~O2nnIq?*IUJ(4htXMm?QATW zMv4d?`~^)l>DK-Nj|fy{~&75W9ij)_PoM8)9Bw%gwwd=0)N=fL(vCp0JUV2(|g zVmQ%SM3KQR+ZqRW@Q`3uYMLq~hB-3IYgZwvc~F zN(%3H-LiC~SnpptW>SXP59|K(DOdJrv+2z2yh$@eZjgVn&e%EBv2WZ$HKA!@Ot1g$ z15P<6G3_gynDw!AQ0D!^CRV}lA@+jy8OTC;t#@{fjPh^$0dW zCyga}8-glOaBvw7xCC$n``wny)YI_)WTQcKBe)kta|@Q;0QIU;q}xT5?x>{FZo#+1 zC5C|#d*0n;68Bcd&&_hqFnVcXtmyenpzn9}i+`L{&doVq-Bv#;%dvf+nt4~Nnnm~t zD3M`08cl^ugV-!`n~oWS;n{S#O%j167x@C|gdtO%d2{|JPMpZCs4^_JdH%S9|F5rb zdPb=f)+NcmlervdVVZ!FTrXBBxWK!}`gZn~na9Q(`sJRPQl9=q%RoeEAoc6P+pXpCX zHy)j#5AbJ)I@0vy1{gciB}=#9QutKW_jG#$Jn>ozRw0i|T!{-Oo_)44?k!};WXT&u zAL2{Rg%30Sgwo2{a{y>!dMqs8I4NO^Blja7vaV&btFWD|J)9toxKRVegK%@cG`t+5DlX`Tf(>C#HtlGGw1rH+T#3y(C6=P5EmITo{IMIDlGD)vnK9(+#W)E!Y1*vCMr?%X8DXI+q*JR7sD-6J+ zT~QmfdQjt$VY>o(ZuguG_%BdDjUKTqRrX3G-7mRhpi-(O5`C{u&NU-;NW2grHlFSz zaS{*Kk9Epzm81x6424Pqr2C)E!Zq)zKS+)x5Y2)t_uMe&&AHQND1IVps5D)3nnNR* zE2_CI&G2+&kn8VV;eii$eS@0OPBgthFjtHI-Txoaz87Pyig zFU>Ro7qx~-W)?xkeybzWgdC!^ZAn9t=*NaOM!Is&y*OCZvFfwJ@e!*GM2xZDF7~Pu z!fcky4Jz?rq~BLah35FoL5OUN z%}YWTQP;*H`I?@QHG%11OnXpP!$~dZ`{VZK(em)!ZJU?9|MFLXq_P)+|5_WgEL3ki zJ{uM1BoCn(a|~Y7a17+l`znlNLi;lvgIh6N@8!9!DMMF z0t_zVJ%vX&M3RTY5u*7RFH>j*t`BpS>-HWx?l||+W~d`MIhhb$(U#$z%r(Rr{uj$g zA8cEV@?fct7Jew4xfGE1UF`_(oCsy+yd@87rahBi_joIYTmsUsoY-ji=Psd;}2=|JC;bL-){=StfW{f>Ifwow;1G$b- z>r$#2+$t(?C(HF7>lQWf$QY+sG^}aIum!r`ruWBM4M*H8gqIvBQg}RqcZl0{?ht`qtzHy|CG&-G5D;N?h6;VRZ@<0fk*rp--QWd93Kq(>MuavC=2IyFj&uv3CWSkWDb6^L-{FU^o# zSDD*)1k9+VF8Bn)@jPRMy9&}3C~(M{CI6WMi)}A6zTb>tw`EvlWFVi#p>C5@`AoDb zAGj7e4rH-uZR34i@ZJ48zB11?prHJDF+=#NZEUK8^t!w%lahixSu>T7wtH~<(ipbr z9HxKTFA@PSP?B!!B72?)avNY2=k2K6CPYWYGCAD9eZDDFgU;5Ws7#WqJmgmkqNe6l zw>IqUE1Uk2$nx_{Go9aI%du-vs3{!zV8cGxFV`;9HKm+sm~oF9Z&@<%-8IWpEq$_9 z!{3SED|+qg$3SR24m91i`Z`E658#A7#nwau;ij;#jjiEvRU1B2eR`G~BcFr&z)f`Y9JW0^ zWdZ!?eRryAC`!@H+NmLnjB6aHreyP8ciPq6Kh(qvM$#%;M@K!_jSObYFflsL&zH@k zU?AIjw30qvypc2;wN21T+GFbs&_wK3FJ zkP4SeiE4utA6oTqQnny(;;Ii(>hkG~&!j?(5 z)%!KE5g@C1hGECf}hL$G7tvZ*u6=Lo)%1i=FHK2dhrNoxcik?LV}n${s2!v{^N|V^xbOuATN9I-WH* zWM6N}qs%>~Lqljn95$KtTsQeE+3YLOY|XPYeaeNzFXc%Io)n>XnuV%wtXuOTgKA4| zu&i}^SC;q%tuhJt-h+7GYMwDo(FvIAlmi8f|NUbVI#zpK)|*$A>@X`%uQV8_h+TIn zTyq7TJZI0L;G*;zVwxb#)gh12;G3>3ir4>;O!BmrVYm7ZAn@xRqk1qErz>jKtyXHa zLgP~g6N!3x?otndEWp>tKr28_ZQLHdH-S2|JE+ZpMN1B>IMA1mJ-asiUI4KnPvMY$m z;5@SIT$O751G>5A@eA;~?cH(+&jjn|N~`Yr&Iz<@cr>fepJ%kkj@NaLC)V*>Hyw>iR$ayqIhP*W_TX{J`1jjt zi#WAnq>fdwW_hArUXxr@taqDPSTOlwEel1crw1(Lf0pYODwdA+TUK5Hj#&)oD&`H- zF>jZ`FN9S1|U`!5eEWmmn9Cs-HLTOP72*1e~*^DYSByONoTsE|dwIqIoMRiPu$U zs%wIC=5?t`0Qbun?0-Wh&yKlkF1Cepea-bzrSArNK8|VrSl=2;`D^zFCOFRErkbFp z<>RnVD!nZ!_vfTMwESNZdnbw1b-#vjn$1|yg$=*4%lFL$ottLz1=wKW|FZ{A1IN;E zq%WRz7;_#X4F85OrZ?6?keu#}L6_}GwY-(VdQMkJ(+vw?zd&kanXkQqhkO@!5A<@$ zOe*{It$b(rZNCV{kF~?pSPMHWNmE-VWFLgbLB-h?M5MSQ2iVTq2VZG=iya&;m(CRT z__&I$`2sAOz}M;R8S#+Ya+(x<;^Y)fj9GPbT%sZm!w>F334GgG4;cbAaP=HXs0(ez z8QwF}-?S~|elNw1gZtw-rhzHD+D*H;80(gvf zbF)LzhhuLr(MhwLf|4rXxi~$2!zDRe(NgvOmhC|9seAT}kYAG-+d=a5e5MtfvY$n? zPKAp_xA4_qky@H(m@!yqNsXl_7OU4Wc1umt__4~vdT%P-w(X#`7kbqd9!JcQ8popB z=MAo*xiL5mmo~a|{EaQ&IhfB-boTS85pi%|M>n9H@Eo>m|95>ibt3SbGw8@LXupUc zK;?qZ#LgSXZg+K>Bl`!2_P9T&j^ecfSE(%@oc4EB&ZDw(2s8UiaWrF8bp#?(ba54v zj8T{<&j`UhU7oZ;Y_i;ghly=32Zq+QK2Ru1?l&>5#+uOgmIL_2(c9<_ysZO=4Gu3p z|2B%*?9OK#l*SP-7aPEQqx&t^?}0#9VDO4b8uvIVpZ1)3gW8~!8oKdQOjcb^5=*K- z(?^&6|Bi4_KlO~@XzFlX^MQKeSU5~!#izL$J{1X^6-n1cvb?5YT)X8Du#r~%^!kn^ zdN?64UnD~0l8+mx0(UQDr594i$4KO=Hj^B3xpqSV1RO3!3r2UB0!zS>8oK~Bf3>&` zfn@t*T{@uGfCaMs^%=cK);;jpkIIH~-{)%F8H`8|CxN-Jhvw$-lo^*Y*R>u7&C`7) zxEDMDiURmV=b+&QiKENra1rPzuF4##-p+>lmsyQ30K_M|SVCs7Xe5cfY6j$a4*_y8 z^EWUie`&yT`BrUHUku>5l6E9xtZTB)toxlH5+L^5IKDF$l<9=l`^CvsqnT zUBh+S6MdTM$7|~Z%nyWc;}NpYS5)QP7c3O6oBWIZrTV-RA=xq?lcYOS%L(#02KJ$n z>vxKD{8VJxnpT}}seShKE#7x&)iBS8x58>OaLMvpg>q8%5AR=M3wblJpJRojX1$dJ22;X)JI-ngElqYTr1{B@%jUL~r11 zt{TvJ4o4EuP>1u6^}Lzkt9c-Aa(2;8fc z;aUH#zWQ(+uhYJ|U%s8<)JdZ`0i*cfTqFn#CBga_jWyDU=HbX0@-uTKyO%~3ZRrkj zwFfR!#Wc3jVPiY(nWH2A0zA^8F=RLqM!%0;tYD;MV?H+O@5FC6E*rm7fhQ8=&j~oM zDoqe-KYYss?yhoyX@Y>ejbX6V;9ktoI<14Sz_l9#VSoEJi0Da)PpN&5`>oGr-A zWMz#d;$#OjeSwejxR+FyHDVJ8# zO|rGA9$h-GCaO1Y$i=l6y>9pf0k)# zb$x{$a-eJadnzl;Mm!U_Dw}bZsA_-m=ZxaP2Bz_;fB#_&EJ&*S zrexYRcsMtk;*mrbVr||)yf@^@YJPs18y9(6kQjC3s569FCN`~Mc*}O1Z|^~sNx%KQ zCd9w&@#81W3K}gwt;3zcFTWvHeWTvS&VESIwbvlKTX`*&i63YvoMTG9@OVuweu?ZE z&dsIt<4;zvl9f+I9ckv(v#_X({Ir`!+14_dsivZWmz0pXko9oeOOc(XqCoQ^Y;|Z> zb?o79vtxuSmRSv6b*tKn89aXE(1pkH(_c}z#kiKgMUo9VIWJn+6hH_OWFA?!166AE zL-@ju-XIS-Nw*qcO$dqV={I}#+n#mkvZ!~$=!5JVHP(DXS7`6+g+eunNU7M2TY7K ze?}A6fAf{lJ-d#$!Ni63q5L1KpEbGJE}OSNY8mV*u73w)LGJto2fGTpHjH=y&GrJm zgRYRDA~+jZJP`w}(ERy&>3%*H?_w)VN=`;0OUg>~%ohAOp??|X87xegllOU8F8e-I zm_OzG;v!B4Z9-CD5)Hr0YMnqWsa_k@3r(3L+KSVhaH3y=v5vpKbJ<6L^=o|s$6cDO z0ecB%$Of79jKB=T5|+F+D7YEimn6TP!zg4@>!`gFh-(0d(vy%c!hNVn6RVCUT~OY! zBSjb4wH13cGyM`=R}#jXu}gx|2bg?g8I)G9C-;9S?xA+j<>tSROiy>va*0 zDFHwO%?$(yZGK6Q)11AnUXKAfFD(0w2f{H2b0CpJ!-u4vto-(%k3wn^@qa^Pq9Z#f zleqYzc!=!lJRA{pojwdyqV> z2|`C*lo3{Kq4pS1FiD84-~pnV%sMSHJV?z>iXA>aVLY^%Q!TOf(>T+9tix|zrkKFQ zP-Bo;nM^9^iI`qGXfFx-Dn#s&xzB+4-p=F|Dv%V2F%wU!&+9r1z4(X6ise31>>7L>_lIfxHqFKZnOcc za`ijT@J#+ zyBSqR*~0=R6Q5%n_4Dcuy^{ce5+s4<;0NVY#@KfaZB6A%>?%Y4J?uw5pJD%3=qe7r zdkR^`PN_57vn#;oiNw*PWbqk(s1v}P@OFg>^UrqwyR6p9uu>ldv8U}sh{};2uQcK*XP3ceOFN`%#mWb&0=UxJlyyFs^ zXW<2!VDRw8x^S9&9i3-aGarl+IpmxAGxxoa%RpNUlV-1DN4Hkd?9b3$ZeR{Tqu+2${d zhHYx04vt^^sP6rpi(Z1W^iTo&m4$_|AI_;NpWg}MrZJUZ8-&1+BN$_MX`P29_Qc>j zBKO_&Y+DdE7;5$Q+hrw@6)^@7Dx2aJodfW68ph{sw9QMdy(=WBJO`=0Py$!{Az$Nk zc(x~#s?bvpir;v5H)K^6X738Jn?{LhzKXgSAvRp*9tw?;ehtaP8IEbEm+1k#ksGu5 zzqsX)aR|gf2&J-sq13Z=Y&t!^@|;cgc{`w8vNWm`;(h79@>F@vlIP62PYLhj{kGvf zxg+eOwd`#8{*jQAd^hdXop^o40VeWj_sf>A2p3g5oyTGc6Z5b;tuqk77SK#lE;~%O zzpgunNe2{_Z|j8v$2YYHA*VqDbX6uZYS^@=sgpoTz>>4Wp(Vk3m!lbp#`Ldf!_+2ICXH%s9c{NMH z)EIBxOMFz|s*8x-O!>c(0YN8g983Rc`)#o1Lq~*4(jqB7ca>spSdC%REIvJlt*QRo zqGlmJ1G~&uv=D5nr$a&#GKR&>SV&Ha_!ne;k7C*wXXLa(0h^1+qH>#$d&VS?qz6Z$_jl|YXz-aK8x^ujR=4$I3d1*#1nHb~W zuf&D@R#lNwMFn};FB3Veq|lFGESHB_jvf4j?hyESBbeXJfm`8;2LfQfPr z)(Qn-#VzoJAd$m%u%;>xo;lr;QLc^Mu|%B@T__6Iolb?n-IXS>uOB^NAhs*=U7B0Y zED9^D4PN6DgKyA%DfZO#q$n+q6@CZvD^(l#2}DsPg<2ZNS*>4QtYM|fTc|bcX;Md_wRR0k9(sMFMX<~T4qwf zBq{z02CObIxc2#PpP`$J2AXlEg$UCP%J_`p4}N)n9`4qZbtVc-Pg8D(1!oxAihBKL zfZM?qx7SPdvLhwG{KV4t-!Kl(b$HDLt4zBiNuJU#mk?-@BZV`PP>|2eS%_X*E~It@3tkcY?b22I8zD!37C0i^#o}0 zN^c{4ag_$YVp~k}MO~Yh4>0dnr+3#_j;@gJBi!|*-OC6pS-J1X@hR`>itkk`G_ry} zE|n#$zueYn`4!1O1789>g9HT5b;G^k_@-D(vQU_vv=C>kOus$852{MKrG2(D-|FOT zQ3n8P{5jX@d>-h=UM}o0QXD@ z1t+`enz3Y$m z1hZKb(MK(f87w*FzKO4Q6Z{}x5eRM&;Fao==1(o9Zjs5vkq1y@aaQ3iH>b}gwf#RS zci*c-p%6YuNx?VoI8s`m2x!rszLc_bOH>7qNg#CnqBn4qvz@6jw?LnS3xo7C-gMvX zv#9Lte-3gK9UuJLFXSfY08PQc@+nr10`SI3I5L@%&ggROJ$8uHiQRd4tIy#u@huW_FWqrgl<3QFyaFT zk;iFiuv=lmL)mU{{lsm0B=oje3oE@|H1)fr;?m_^a>Q@=(1)`dMM*NT{|)BJjggX| z(&;g~#njU2`prtzN9yz{vLhqW+uWlo$`xGTyg*anYq+y<75t^OWO;=(!QC2b%RE8d3J* z@eD6lx~2SSMvi;Fm(~#o0_%9j`AviGpL;3REN1erKOVlgjl0Vt_HrG1iy(`p9==Ha z9fOrzRS6tp@r!{pmY^U8)sFVvtiSU$}e_K&j5HZOfC!J5i6>n4fs^x-dYJ9k7?teOL@%X3%Rpy z>Q2hbz5WWb(B!Tz^cXzp%3m6n;VXh&Gdi5`+St4bPuvd zQ$Fzqo@OakWH|oYZKy>2%1V29u%~v%*P`S7RiTNfN|fAA<`!H!YfGcYTPCao7Ax=Y zaMu4+=MV>nf5mOSGm$GU8Y=cd_&OF89y^SUuIc6UnqHgonifG!%i=o|5vEPFHO-Vd zI$LGEkUsdg4;e(wfs`Jfi4exP7Q7kKUT=aeOe(`I)+7q}BQ~9By#$cF|JBf9`{DuS z0p=$2+|yRrCDJ)*JH9csqWGzIl^8M7eF}PT>fPg;3A%gFchSZ~Lzhe^8$#y`WVjyk zC$j+h_qXV9G2(DCJR7^@zF<2PH+V0+%8H2LCQ2EaHx=Pk#~p5{nHe597it%Wp9Js@ z-0U!7El{=wJBciT&?8`l_{oeeiLH3UKVgr(x*5hfVW8uK(aK0t`_`@)dI6Kv>=@so z!nsJowcvT0REHyXVG>7l9)1JD@QPq_53|s5vbu&y9F`Lr(cwXB1Qk^!$nMIo`pzS_ zwnkN(yZnSR&_R>-ZJ^@CdJF%)$b(4gem! zenNEGV0>SExPFwan~I zwM8*(q63VUqM$5mo%J&;C8a=#5E>+4XS7DZS$rfA4Y@e$@kREC{c-*jrI$U4dN=57 zi)Wk=V*PBt-9cE&t0wRq-nGJ#k)gft{hT{&&ciGa-+?(I9ut_h84%eH z{9iXU|0D8EfHr)r5RzjOPKS3<9n)RdzrjTk{x{kCnW-XOCwnLQCW>m^X=Re1YhR3W zQ#;hw?f5zvzKUK_eI>7lKjPx?_Uy1b1OnL_s+qL;d_MtQleD0p^wWq`HfX~+R7Ea< zfFBSfRg_{h>SUi?hL$=kN|tTkWt%dra?*dGkvH< zZ-c+8kxATh3j1gyTQow`P$p#Hkl>J4mxq#-N3T1#dngdNH+8evlSJhTh5B#zf)u&z zzyD(@Yu~>$9l5;WX%{$YX|AmMJqeM7XutEBi*=!={?WDo3!%!dhiMyAYZKz%L2`$O zTIQ93Bgjw=TJ@#9b=z47_QBt06GzAakaGAnSjPg@%ZdEV6BrvO##)-x%Xot%33zq= zU5;)zFX(U*LpS!K--50B7+B;eoB~Zkcn`dG_~6lFW#^fxd0=PCmcnz;U0Rq6Gk=5( zY2hi7T3>VP`S95iCIwxb3mB+!z7Y*xn{v9goN$^&z^;T6xASOwr@QEQkJnF5 zf%G@Zqp@q!wy(*hTteIbTgq!Y`dPa-bs*443Pjy&$J*^Wi=~ATiw|rFS&5=9V6-<`-T_KNK!`&F^@8V&FSuej^(AXmnG^ z{BZUf7Ei+RLocCd{)nrqP;n2LZkj%%MVPa`8xw*p)uni=(#q}aDxk4qHi)2nnScUttDU> zXU@9x>(|l!k>%HdifZJG;Wb4qWHg@aqm|B~u=x8p%b3Cxi4ujfO^42z_rfdbicaI~ z(F^+$5qK_mSMn}boS0(^vTbQ6$~&k}qY{uDUHjt$K6DPR;L1X_m_NnToN+*mhsdX2#GjInIAOGMTKy+t_+h%?Ge z{U|Q{o-*YI3ds==tz-x3aC(HoBTVa4EeeT@WJ``9Fk8l+(&;gSkMQ#*A8lYPvBKAI z1Cvt@CsTA2D`X?|lOg8BD{?0ZjR2|S@$_~yy3uykcL(996aP(3(KS)qAAF@J7~>f^ zgcXwM?8y`|bMRS3>9*G~4-X1TyQ2=8gLQ!nEUPHbl!Z-APna1IFY@NkXHd-+Wj1mIJ?+W>w@h;kTkWS=R=B56kCT*S;;oC zWSPFwReC_t54f2AF)U!W*>V|@#5t5(pv{hqZ+oFfjMU#E5>vo!K7{?CtaX#h$xB}! z=n;Lj5W=F#K(1v)vyiBkbO(Qo88UwQErbyL7Yl>EL|7U>o~1(cEnOFg)ERGOgT zbRibb^5-`vW?A#2Ya+k1yY*Ii=E_K)pW(!$H)5I@kRRXF>sgJ*HV!cd@YQwT(`<}A zbce@MwSWBqOp>st;eWl~(|7=woyRldido~E9%xq!lzQ!M zVb}b!H{!-2tBVeo0g^Prx^5N}_6@#%s;Oceu}wC6ET^AIG71rHu;>`SLbT+BdMSf| zX$&-*;K2FAqj==_chIG+CLLh@i$Q}m;M?L02e`+Tv_O6}jr_jV#x4t8xB^o97hrWj zm7BN-b!P9SGs`MV`+RHv%%9q6Ib8N3wjyW`z-uBXxh7>M!w>dS%Ggc^HeT>ZFHFaK zqdB={o1jl$ar!+yoc0_mxCxwwoc;MKQ-{Wnr zSFxr2`Ast3#*LPUoRY86rX;m_6CmhT01mzcE;NbSodlv?ub>-5E?KQ*X^sF(=Xq^2%cVqA9iQQd z@EAlh8FUXbL%}lh=Y+JuBp28DmfN8Cr)0)N2=)Oa&HURMN|25<&8z3&dj|)Hj0KnP zZSIlb5sZ|e-*Rk?DaYb8MWVr;SCYDeTho z?HPOVwu|NIs6GttorrRh{Mj}kll|Ixxocb=-6HT?+1G2*{LA`N;!c7vafeBW>;OJ= z1pAM{y}6V!p~J+btiXg6i5xVN^tc41p;Vw;U2%J}3!EGA{ob}-7HRrTu6S!`P)DG& z=z%;^BnpPFJAS88Z441p_K;ropDQ#E=Z7$@3i9AmJ3lqlNo;-!Bbje|(+=PWhVWT1 zoC76%56|uE&n6v#eH1r}t2jjxvzOi~ZWfTyv7ogM^eFKUE(q!7RQObvY$PR-aS_9v z^o%WkJikf14Ugv$ycuN&!#hZ9KUgC@qvcyj&gQ>XPAk7mS1t#@aZ!1 zRST=`@Z}U@sJ*J)*J+C4hZy0V;x-M6M8$trTCDE0?{=!E{7ttz2_9I~vJn(o$)_0? zQVLGMG*Vo9(*dqI{!YqAEV8s~QrkfZ4VccnN7n7g`0C2!;~##1)Aze=p8Zn#i^n>_ zKJ_(uw`OEJ?hxj{1tO)qa;<;H4pj+}!TeffIH?`OO_PLez_G(} z(YKCDSW$&Gk8jJ;3O<1a`|Kt97qqToyYl5;a~jmDZjRa3>(L0cYK~6F_(&)WwQ@SQOX z&r7*;;YO}1?+l)G2IDzX;utBx_$h9SODuc$mfl*DF! zL6F&I5eRQ_0bQ(;qS3yz%XiOaPqeb{#~4|O7N~aCwW*)`aUDf+d@R_@$mY)#%?1dY zZ?{cGp%7~W$tx_)`|D51#?ux;%s>~Euu7n%e%J>F!8OPs5vM#r+_7>9)$Z$k-|a)x zAtaaU$%wrZz?vMyHiQ|2q}eX}5%LE^<%XnG=^6peF0A#YsYL-_@Ju;_KiG2v;>0;v zXvJ|qJkM4b>{**|m>;ul)g49TeF^k&hp*u2lPq~3K7!9F2Xiq34o768`BRmr;eCSu zoB_@@2kAwFYkv94X_u?jcuifpZh^B@oenUNt2Y*wmdumfm^eib=+HcIsRCl^v&81 zBGbO;ca)<^!o!lGsI~nZEJ$4E~dzc?P7g$5##8bszMw1VBr=j!gAt)z#kU&7Moa9O?((~$0#Up=0d4eK)kr8?S#1ElY=f4a2SNP zJ2aS?pBIcX#wbo}JO2L5o7wO`)+i;#I|AO7P^XWq?9+;<)1}=EEqA>|s_;Ail3Lt89*HeJ=6S#Ts-w!fdwF`K?JTv61jz6G2h|0I}nCx7fja6oxi0!jBSgN1u zCutAqQ}2B99&X4~nO^&29_HUn(-;dvQ$gQ*=C;Pz9=yXJYxn{G=MyZJ&%|qc^{<6Y z@J}3)kPvoT17l@J*NANoDw~oBU&k6f6^!WI?KFQ`FB_6#f4VB?9%Ow6)&PzG z(lGe)w~reoVo#hCDP2$Q-fx~`2`y3WAr?u9K64gx2p*6Rpz|^rEJU#tbn__&CcT2c zCxHs71`GOctCs4?7GN?Vw}pm4IB&=4m=SOH%H)YK)6t2FE)x2(7@iCpHyIudO8_lt zJxn!Pl5gbXUQy46E0CjoH(cx4QCqcbMNo%7BTl4VigLUo+13*8-xq;uV6|yR@t+ZH z6P*5kXu9zOrqNn9kqCeh-O6=l-5Hoyopq2NoKgw3h#ho=v4b0}aR zD`MuMX3=Uq#Y^7>F@~4(!U+AoFNkF9_ZOTz6`xRbjBHf{gJL|4$iZ2EU_~&P7WIZS zxP3=^qLnaLKZ?rUVT_EV&bzJ=mgu|u!39L0Y?sCCzkP_Xlc|*J*i%o={WK4ImhE03 zBdaA9U1w?P%3ZGdL|=daEcC{b|5n%@irYOe!|(4Ga6I|Cg~!QV7s;K#C0V(Q3{s@Y z>EoMse(NlT0iWJLl`GCQ!b@6So{l+TfL>WSw*7)KhdPMg3MTD5z+e8`?xvT-H6mIN zY^K%JFga#zZ0&u&`pp}FP3$G++`E2dog^%Q9!YqBU1E~{4azXifJwRWJ`@pwwy#@n9?O z>p3+q+abwZCfByAyMPTlxlr`1GUHHH@&n3|;$scbQ?j{I^L9^>UO<8QYw>4 z>7Jf$^Q)M}!3C{7Qcy5_wbE_=uPrjp+;S}Hy=aCQ5a{?-*l~N&gbd{|JL6$70p^x3 z_B{LpY{sGL=@RHV*7y1U9! z=iHCsz7{tVu^Bi_SKaln=;PS1WO)@4@M81BUCM$?NKEL}>m%^&K6v0_a0YOjuM^NZ zO)_s$XdA6}#iq?z;;}dt5c_{A+l-HBQaujB``9V?oY+*j_)vt0y)V2-a-;N1gtVwf z26tlkitoF@@2B>e2Z^3U!JC>ecKr_BKdZTn$Xl%*u5S}>Wnr(H^jpS9Khyw|yhtQ| zb%xp#d9kE6v9CNTewrQA0nRqmdjH9 zJM5Cc;TJT-4O`*=zTNUk6V<}G`Ruc@&4*ckOw)DGY~v7jcqH17r&D zn+jurQ}(-%U>Oj9Ik-hg=-)jurzYSw!>$q;ac7Fn0D=^|3kCX{*GhRqo43;e7 zg-M8<7adw3T=7c(5g~K{T0fXjkdh+VF|+!BV|xs)cAv!uON`(KQZWn)XqZHSW4ez) z);kBybkgWC6FnZcH{(~oHMz-+aTrf`%9z<$48w0jmx-rcq&rj%u^43jOF&|O(&v&z zupF-98lXj2WC)$8Ir#R33FCwT8S-tqz_r+CBo01{PPxQ2x^7K1llW=!57TuK4xLfm zs39)4nX||ZQn*$eK}yaG_->nSkccnUOJsi}U@ZLuYS_7#22CDwe~#&oh{OeG;al@T zgDh4}KTbd{ESOcs?xOB)bXhzKI;!a&Z%LlgS(Ir9lbIrwS!B7z2%9F&5$(tya&W$N z{akd0pA40=L*))~&r(G8lRnkY(GjnYoh#{qE0*=mIz{bIx3PFELrr{}){as&voxBg z-xF8p2n)nja#4$N_E@_)u8BD5s5Ke>W6fb?ASG#wg5|gC4^Sh@oxFYpw|L7@Y!Ifk zRrROPOXZ=-+;Fjx1l8dkDh^)tO?XwnBtnW!KW1A_M)%B;0Xt+*k@k*03O*hH6LpiU zOwiniFD?+mQbKrR#nT+PwUMe2;0Rn^z5rn3i+hCe1OVs^P${gqIDXQf@f1+T`%t8I zhUoqRA`?Sq;q3Nw!oZxKg=V6uCR&~1u64KdbN+*VU7I}mpv9hJ93xJU4Q|aQTx0N2 zu7{(bljbG})>n}zC3iM)wz@pu>(mT-h+tAIwyABD2W^z5Z6D(v1cLsJf*CZle9{BI%{{aaPk^}$% literal 0 HcmV?d00001 diff --git a/public/assets/img/bootstrap-colorpicker/alpha-horizontal.png b/public/assets/img/bootstrap-colorpicker/alpha-horizontal.png new file mode 100755 index 0000000000000000000000000000000000000000..d0a65c08b0ed34d969cb0e93165a2e8b0ef9dbd7 GIT binary patch literal 3635 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 FV1h0U4od(4 literal 0 HcmV?d00001 diff --git a/public/assets/img/bootstrap-colorpicker/alpha.png b/public/assets/img/bootstrap-colorpicker/alpha.png new file mode 100755 index 0000000000000000000000000000000000000000..38043f1c85f20fe8ce37ad380bebe2d42d14fb29 GIT binary patch literal 3271 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 literal 0 HcmV?d00001 diff --git a/public/assets/img/bootstrap-colorpicker/hue.png b/public/assets/img/bootstrap-colorpicker/hue.png new file mode 100755 index 0000000000000000000000000000000000000000..d89560e999f86c349ddc78c298b0328293f13e1e GIT binary patch literal 2972 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 >YjDHRkjMe3FzWUPlrRR$Vj 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 literal 0 HcmV?d00001 diff --git a/public/assets/img/credit/american-express.png b/public/assets/img/credit/american-express.png new file mode 100755 index 0000000000000000000000000000000000000000..fbe9ce2c7f56265e8e1445ec561e472d4959708b GIT binary patch literal 2796 zcmV-Kyf=@X={@(Ho$2(?9yp%fGyl&0|NqY2d;j~K zk+5o&4A|W8GuBWcR8@%#2jeOvM)h@Ls9qZHp2|~^ zj`; znEBOC5{yfN1$;eYxRbahSdZyEd}y#Mkbr)Viar&F@O;-`;O3!&AdGKZGK4hKh_qLy z6P0EoE1(;r60QzxA>GZ)z;2@%>mrS?@$!7Za> zbzv{MdN4fFW^$_^8ro5DxeIy8c7$8~^;lt0jSOW@(?+`Xs4A+7$GEsqJ)_mo9E7IC zgn$qs2CE$|q{fFDeCRs$;}xV|7opQt*SDbbY=c)B4J&U=!|Vx(sBi0m#orInwg5!Z zs3GCq10Kff+ue9zPdWC^xgOQDKA>t$7vLws(cw0keQ3B9?d}1%diuOeL?@Hb!K`;> zLmP%h*bp4(50w^vYVATdC7_{^LCn|T>V_@AkA{MTa2qNwwPL`dA(8f7-MvVN2to}h zIx;pCTfV3?lp%rS`I*D;;QOW6SK;JR^DolxB=bTLD^?q5Mk;!O1H_49e^KV4P%b(%B1(Pw_9*Vm+9l?)R zI(dKF!fd?z^*MZXrU3ymQ2*wAAi%9_55UpVg=wSXaCpT`oUUs@#RUVwL&c^t}2ozO2@cNud z=p(wVM{D4P)c9~5sdA#Q_&gY(2?JvUBC{^d9)*+S$D6*b#q&8SOfW7s z1d-MNymIs$ZXOwh9p&|Sn>`!PZGn#7K&*rwhKp?k9ge zs6I*nF@O8mdG_7O>kq?4zTVW)i`}OjdZ0d)JrZ~BD8-|DPr@Qgn4gh|#e_pOlzEk` z>P-kqQ9-)JBrpMFfa0iMIMtRejw{|PC_c}0SugI#<#so_)`9XmU5<4NZo>Fy3bA^3 zsbCdWW>0y2Z&PQlZ50Va0mqA*zq^PxzdENA=B33Vg@W&clb7(q%_*??`*{V|g>LL{ z>vLC6KR-8yTy*oCOcpei@aOlR#6Ra`>AKuUuD9-sDlFMif`+zkxcfXpb2$RDqQ{jsdFXkfg_VHbRo@LNiI1W>kF!U)A00a@_Kp3##U0s8^d` z+n&U@=1`#dYNjL>N|V44MFmpvlf~A9`D$qH=w)-qklV?oj+%dH-;EF|k`_fWrF4oD zbaeM2Cd4wR!m3AQYs7?FA;ajHJ9>K2N6$tD2YNelSyx6-$XMZ}FPBW?R>T)9-F*Um z9uEb476yavJ`X2?xKN9*S4|y3DyL@=-2J31#a)c~Ih=L6Fv1?n2h8r=-eWf@BX+@N zS9^m8`Fl>_!}2;#8h!m9-9qDsgkj^{8?a)38QwX1*1OJa z&b?HBUcGk`;`4W!tTH7z7MmZLhQ;q3!FT5xF)+Xuz{W+>DAr`$^YSOS+}7=-Zz5$N zxEF00iZIR-KB3qz*a(ZR5X*$_%;+etm$HKk)-zTr?M@(YUbI>i$`gPbu5m^(QM zG+_n1d;5`_p2(w(3T0_c0~%dj@K<>9;C7&nY7p&5YSMcu&hi=(F-!&1>&zQjbt#mLCO-Y7x{R5nO zoqwMP1Hi41l`QJqyb$aafqeF`5Z_(PXK)KdfC&2kEA8%Z#p~Z<(6gm<{T|(3f?#4M z0yqYWYnwS8e}3u`WZB@=(%Gwb*GmhE4Iae*LUTKcDlQT3>-!ti>Fcdjcq@Lqj2n~V zI5m5%+|=5MGj%OZlC*G3BLKVc`PEnZV$4Ms6z7I;5ISs#YuEe@PV%+K?F?JRSI~=v zb8un^3J5(LAP6je41o_tASfaZZ~}0!Wz2GlHAXawImSdwiAumE@KwH3>wFoJ1Q!(k zw@IPBouqMwDQ1M~Z)PllZ#OgUJ}u-+Nqvxf;vtEnK*6Z`*R*p(tfcw<&=3as=YMb% yS|e4v1`DZ-oA*UUM9ZmOo^8;i0yVp5-G2b?&iAhJl<-La000043q9f#rf+_`gS^Nh#K#A{;5dmL=ihAhO{2~oB-g#cAR2q8s6Vo^R&L8GKepsgxG zAr$z43RQ_p+t5@BbWsZGhEpej#>R1!1v@cL;;}tmm)W;_utt_5d&aIk@WnjRmF|qL zj?Pc#oc}pTu=%)ZHX9EM_yz(i3ymZo;Z!ITeOlPIKlQl5pgfb~u%a0i7Mfr<#?W{G zB!^Ux`^~CCBodu?SddHxg>WpsUlqEZ9|}c?D1wD5uImU%zAAKyL=ulPKUq#FDuPT0 zm^2asK^Pr{dv5UinTb#o^2!#IUs-~~m5pjLBI6R@$S8w%dg-~@NjMN>J_I1_TaI~v zMa+c|P+kU~ss)>kSq%+C+g0f4WfH1MWBHb~RIOWqW-&7psq2YAt>+pU?Hgo{`h{cD zQ4eAcVKN=ajq4#ZlX*yl5lt5sHIbksUctSDK85Q21gI=VRj;#s1h@a!Yw+;C*pFfu0_edl&C7)XcRq>^hh z0Z@}`C)=u}7pT394}WtSDdj9-)*qfZj7cN@$U|VUkR;7uyQ&LN)2y5~-o40`w?3FL zjH>855EM>FV+v7!3;ZB@~6aJ)61o`?I7Xa@Ibca+<|!YlyE~!*o?njs2w=EVZiyq(bX( znCGvL%yYzYD9y5wj(8->pMUr)@n|f0nlVGklO>Cp?tA%?CwDHz=L^x?+DY}IO!9Iq zJkL}@2sW1HU{DlNu^J7e%b*!?l`o<1`YonYg_NWsv$D7kc7z6adiMr8?+&v2#b!LZ z0pq_Kaqif}K68i@4=?9b$2d=3=;rjcVk+}8=okpl84>ijhxq2oLfj!84au;t~L2ONt4G7%unOh%6U>`ex} z5i-BHYwE~m*-07%0jh{gk{H#giM#Gn{nf1iwECGsb@#Al?<#aDY3d8I%}&BQU0z<- z3dtJq(6GH4Zy>_2ymr(~2cIv=1mI@a06>M6gpQEF)7H-I)w$Hx6!F-1c5!}K=Ui`e z>Qqxzgf5v*K}wRINCcwy8xWxofj}65YNy5|>_&ykzz7BTPOiJh7z;(&SmgqsIcmah z)UfopapgK_^Z4kZPiML2)#m-u=HX1<&i*L-{S%b5`Pzp#f` zSt)6o4DvvslXU2@IG2BMivHFc%%WdKGCL`;oqe0&mJLK6tY_ZhaU37Fuy{i~q!A|K z_0#;^OAOt(%_mWq3th+Z-rulJgi?k_m@D;eHyN+IjyQjbf1G%M>o31a)EAiZ{lEL8 zW*QIud`>|CL~(V}G@G5G5UngDT2(=;tOTiPQycXAF}8PN?6{43=U#F^i<#mLE6IDX zmYikfNu}58_R#n7ReCP8Cf?_v|9+S>Nt1@m$N)W#@c9#a(L5yf8ne@pIHH6{#}n%# zO^Gm9fO;0bHbn~YNB$p3URB)rt`i9HW8e-8(;X)I-(9%q+5Z4*e)00000< KMNUMnLSTX)3WT5l literal 0 HcmV?d00001 diff --git a/public/assets/img/credit/mastercard.png b/public/assets/img/credit/mastercard.png new file mode 100755 index 0000000000000000000000000000000000000000..f709adbada2b5d93cbdb7aa2117d19bd4a994281 GIT binary patch literal 1988 zcmV;#2RrzQP)ZUGZQAe+tRw!7KeIZsQb<7nK3WNTm0&&-);&dcBV z|IRb>7tDRwWHK2x3RnW9aPjGsupi+ktd0K#`Iqt~%D8+)Z|%n_&zDDH~hN6InCqGMN8U1(g+3Yq_iN3zAGh zhSS+^;>m-B{H4}OP}MO)E|Di5@)X)b}|!vF3M}S4g`utUroWMs6ghA^8Je#rIPe@u-lmEnk_nGZyr zjDn=%@LwtJJHvNDS`~sDQjy6Dv1s>MnECROfk_QH8Aa2O2nJj1Zv3x;gqOslF0k-* z(kzHohSkr?q8c9m^fICmNc2b$NCtbT~q!qo|&;15SE_ zaYQ3hrr$TXW=!#&V|VS#{4Ye7#1mc`PpnqGJDc*x??!q<8h>+an!eLA>YP+bk_=}=NaxTlx;+t)C0aw@t< z7bB80A!{P?P!$-A2*)_+=w$aL%eiX)-JJT;g*~GillLS_q7&(DLhG(WNxK5+YlUzR zB4He#H};b~{VCGUKEmXT_YqPK5e5l^@}z}*0Q5Ph;P(en5tweek#p_ch+|FcdwLsV z@*L#nkHPiZ2e3T+ApZU^{S}pHPA6J+I*07PVA5mj@p^hmzPy30?;U38gLiQ5!+%gb zuY|qtl+joB48D+&-0QYrG8xIA=3v(gcX9O%&*1CzaBxo*SCssODVO=N+H8c5ogmE` zh#p3OUZ|46j9LVMc;^Ia_tld##!ksBC#`KBavJJM-Tn^V(uK4vTS9B$3}&Y!;#>D9 zhn{|o(&o>oed%5dzq%W5(|#)Uce3oKrN~x|UayZgtE*UZ-PIKGBr@O4nJx?dV;eZF zpFvvMwfM|M0PNcFJl8D0mp!lE!`lrLch{+HorCV>oqcf3RkVRkP zF_LH9KwbHVIA%|yy*EVu`#X5~nVsC0k%arxJ^cP`nEUQqOQzj{Ex|(1!Q)I`mckb` zeFSu2_P@57-0^eJ9o$K~n*r#I0MyCll+0Ph$FG0HkL(Hb2F>*Q`lvnP;X0kdG4$RL!ELY>i9677kL7n?dvTzhN-k%$c1ZP-RGyE`Z4# zM?rENwr~q)JH13Q#{l5Sy^<4+EzCE02^{^1mXJbHX*$XGS0nbd;pyzbT)dT@wi<%R z$6{4Fm^wZYfUroy?>MJ7m=TtK*d{cA>=ijYC4TRw3V91FblGFv3SA( zR;?{#UP&%>$1Avb%0Eezd3=0a8S(-UnUhx!UI8#lm4=2*n6(JegoT1ZY5-^mR3W~4 z4+tIQt0-_kz@%0plSl0A{mMKPc5R^6CZsA$aJ0$Bhwk= zcdosx>G+KAl9sI}_(UqP`k>Ll%55` zVMgnXgmD}l=U^3$qy8Y86g>99Bwnn}XCxFx;5}O|r8zeZoFjE2&d!Rl3s{|bCC~0D zU|HF04mPJSQU|_FW$E*CMjQk{IK~gI+3=h}H;ek3SkQNpOT#_i_@7*Q3)PlOsIXm1 zl{JTmP#ElrTo+eOJj>ki=Wy74d|ivj$|uLZM`isO_MJ>)lw5#c-^ z!f5CeNxCh7CZVIxG*GM94TSl1GsrA1dZI-ES literal 0 HcmV?d00001 diff --git a/public/assets/img/credit/mestro.png b/public/assets/img/credit/mestro.png new file mode 100755 index 0000000000000000000000000000000000000000..c22ddeafb083900eb2f93c7a47767dc2cb15d940 GIT binary patch literal 1981 zcmV;u2SWIXP)I^#Zgvg&>IjfQWlwWt9-JTp+lU=~4osS`|_U2@*-f zgn(2#WM_fR2389g4B+!aZ!cVKgO-bM^(x^Qq@>u{#q`eB&^^uP!K`a^8%;D@;y93! z#%_BCZ7~)iB><3!_!%!(0p$?~$;*YY#i0;`YHopJb>Qp)K#`JJZOtrh{Dw52m%-Ge zX7Fxa5sk6&M5tQCm%UUa5Q7J@T9IW_!EWQ0NQpRFN7~`Tym7LYQN0dsg(d{+atqlo zG@rppWVJ|~{?gzTN=`1)HmvXjP?V^5V$SP{5m3C~4Y@HxFdB zpgr<1SS&=t7z{F|@l5D$b9S@h{dZ8LBpO>X^LTUE=s^Na`OUzAgg~GD5Hi)yw`I}R zk6EzoQ=;{9K?yrjvjz;LDpE%x2uJ4S+*X(wUmxW8P3!4PNXhM3dcK~Tlp*-T3;_a( ziVQ6XM=Kr2?MQOD*!0jG`pdi2!rXmd5)HfG%VU?%vn3;sa8!XLTpnq+A>-q@9iL4r zC!7Sgi`oDF3WKf@jqi0_;;%z;xq$!`O#=k|>A6Gc%jom+&h$*A5NvMtQghD1?a07}O<(hNZD;P@8U~^(0uL(owa=p-I)Q8bXGE&N-9xg^i^FK*|4CFK0c6+; z^;LAHo+lQM1E9{;j;L*7e#saVMev{ftvs4-VM2-tX*BZp3ohD|Q`kTE5hj(5#$+I(is0aTs?E%K%3wd*1q(<96YNfAYn;Bh~oWIaPstL-b=5qF28wJCLaN^_z z=A|ik&j%P^lE+UU%w|f%Fg{o~fuqOHlVVHY$*IM>_TgThSzf`;n&Vuuns5%!1)$TG z!siq3;n%M(!{-ao@Y!xMUswQ&p!P^36$>6i&9LKma}yze&F{P610${v*mRK&e}J<5 z4AR?L0T}9V(DK_qVVN}(fbO|VQGW6y06Q1G!KLCN7AD7W=;5F9#gP_DPkn&;=nUu+ z$gFD!UDBV5)FE7?V2}_%>2gpwJ%ghcdx-Z2m^mqfFY7N8rwTfIy*wL#l^;#WVa2*# z6o0>zhW1|U=}BDa>Sg=IUbuEO9y-IR-N$)pIvd;Y6*$gz;O^`urnQ6I@%i{Y zKGHXD!#$@QfRws=3QTdtTFrEHIO(fLQ9;TuJp^GMfYR+mPfG>B(9y}L!m(5yYNOQa z3-!(0wXLk0oW=2$ZVGG`bfb~HarqRE$l`A&+o|1unz^$lkU47_?L8h&do<=$Or@i( z8~0To0ilqQnT*k5MtkPy&ccq*&yulb6QA6BAFXpHqPPNF z*nNVEefu!$I%)51=9ftBxo;%0xq+r7uOYjf+-;3P_PBAXMjFl5ut!d0j#*YE!;C)C zY{tFtX;2g*qG@0-5CWJ3eim*0gn*`DQUm}&DNzs%Z@tKr<6q-b6bw?LN*Q*_b}I%F zv>^ReCZ+T0U4`@~p!#|sDa#4NS8+dqQH6Zl*1Yv9_nxdH8al9G_yihaV(Cu^aV=2M z(gBB48EeJ$v!_5c5QWf0uyXy{(4^gWmYY<6f@oDHrn4$*#K6O;&?N}M5-vBE>OFWK zoIx~tV&hoz*gPhOssTx^9-i85QHHr}jN!$s zLe812ASDA6C`8D7;4rbDZbP}!MZ~1UbfTX4KYzpyx8#NFBAQHAA|*pTlg8qlV$PW( zdru*9sOOr9-|!bK+joW5Xd2-tE*GXFb;MoYi|}{=I2fDEg4}VuJ|sW14h~T5PSwQL zq>O8OOG0~{1|yLY*&~)zfh;Eq(quwUwV@{_fDqshVCZs0Tt%y{aktM+dccQ*4E0H~ z$r7q!bVT*FK#TtY%;LM@pNbIF@EswftWuhXr2RoivGL9iBQ`c?roa7PBUJ=$P0t9+ P00000NkvXXu0mjf!O+2j literal 0 HcmV?d00001 diff --git a/public/assets/img/credit/paypal.png b/public/assets/img/credit/paypal.png new file mode 100755 index 0000000000000000000000000000000000000000..a7e1458f318a5527491ebcab32d0ca9becaa0953 GIT binary patch literal 2664 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 WkqHC+7qwjg0000tWo1YuT|$8h0c)) zxTfZB&(83!pTRp%vHl!OaD(!q*TR!i$$Bj$-mGZGSHD_l{9I8c4n27fviJT#^Msfv zSU%lDJhB@SvkP84{mE~*WVO+JeTEvpytVVz48WVX ziyG&?4tv`Xq`Oano9_eXItwxNCCYJoMErQU9};DTY;=uILLxIQo(gk(at^!RJC9-K z41!sqQc#Y>$v>^yDX$wuR-nMM^XRoZdB|o!VBATAmI@gaqL0|h=7>6-??-K zU|(Ad=Dz`g5|m&5?*j%(C0IMucaC#^fddF&W;OrxQ5oD#Ijad>1y zI*r?hg@9wWlKO}9HIS%k>_hQ8HK=YLL@=LU=%oIRCfsed$}#rX z(bR3HgvSaquqG)M8LauZ((4FmjXZ#m5_jaM`>mBjmC22Y`d*sHMk`UWSxY&N8*@}c z(s5G9Mp2vt@Ih$-st*{jIqObHoV_xH(@g`EbG+69iP9}Pifz&*fk6f`;+(mekbn1_ z*^-+==iJBFzguyAVwT2x?$aWEg^I?VBl50LT?A8bcM`sTZ5s^hHITU4=ftRM7U!5S ziLx&mu<>9u8H~i`Zu^qG17HhQVuMx)4{tU z5m@{=8Y+I=wJHXdu^Y4?KUCOH-LJ*VJF-#P*pJCsH^sN*rJ;ny136LG4RfCp9ix*s zeR%qGaAvc)OQ+Li;y=bUy+AD~E*c3jDl9cUJv~+>ZWGMesD;e(M}Yq&%O9Kn*J75x z18_x%0l0Wk6u%P$A*|K-*6-87fnhS44k;9h(s2Dr!|U~y7Zem6{R=>xP-Ct6+1&sD N002ovPDHLkV1h_UH#h(Q literal 0 HcmV?d00001 diff --git a/public/assets/img/icons.png b/public/assets/img/icons.png new file mode 100755 index 0000000000000000000000000000000000000000..1663a0bdc58d8a2cce6dc3a34aa465028cfe9403 GIT binary patch literal 1896 zcmV-u2bcJXP)WFU8GbZ8()Nlj2>E@cM*00zuSL_t(&-tCxwOdIDJ z$G^{AJp1f3c4d=thaym&hM>?TZ6+lOVMOkxi9{9jkD~n1X&^bOtP+hbTB@QNS`n0P z`6EcMu|%uJWF^vEt1XFI^3#DTNS#V5Sl!uk&44AsNPt$uvEzsB+aI&Ni!o8`rHnuL zO0RUj_qmUsuip2)d-M=CNUQOL6~Imay39EZ%M3gL{w@GN1i)wEcdCC=>Vk86Y5{Zt zD9w20TL4Gop88SF>1hMdDfiSzb2Ys8(qiZ2#Q1T#LV9(05r=z^?mso-g{~B z`sBoTDPk+g!jAzsC->C1q)l^9Pc5|k$7C!75n{cC$@}x+*~yUY zG5BZYp8A$;06?6ni+BsHCA)gV4g4Pg1Ob?V?^^+k6f}9e$XM7wIwP2(-S=}%YIf=$ zuL1yc1tapg7oShA4iBKHpvgN^SX$OOJ4p?S#C8Gb%Y$!A@@4tli~1!0X#f=kP2Nyp zX_;?!l6EQ*dm2Cs06_2hLNT-sE35HDX>#Syb576RPbEhksbj|IbPjr4IZA=k%N>-qNhB$c>!SbBBzDb)++b zwm*CApHAZ&8kPy>nv|NKZC=AN6Nc8|bX>mt+N*N4p(FSKmZhTfq?Vtqy()LBH~wXOJ3XE}pJ_q5N%i+_o%ROt_O&>Y-Z2+w9e20pkvK_0EX7#GY_w{mY+_(wAxa}&sJ)^4;=hk1x?-v z=k&A@Z%N1HtPFmp()aV{Cjg+Z`NO-b@x;N^c;bj^94u`9@UA+J0HFE<>Gbed!C$TW zoijWI;!OC#bGzRhe1-pY&fD(0=YKN%Rq*Iz@IM`Vg+E5AimCRh{Mz8x_nRJi^Ql&< zde4sTzL&TQ8kU*Orv&|u`MYYb%D)->`o0~@5|eEwRPWj0>wAfNUBfaVdYsxAz!HFP zJ_&6gf8E*}fCS((4aWmu=veQdE<%qEiwM~@zTkK;IrW!a)rr%wI+^5x4z7cXAC zU^E(=x7+HEH?^*aK~&m*QE?!xpL(VBFec1 ztmbEZn-Wdz-@iW{moMLFH2$@+vht(l<>hpDMyu5(>~_0P9k-?%+Su55`_`>n4vynY zD=RB?I-M?USQN!g-S_VA??00|%PAR+My9{N|3~V$HT|THj*bC`!*Noh(MXww^?H5p zX8!)x)YROvTCE9D6p{8o>oj(lZh<;!bUTC3GgCqG?nDdQ(jobY-)p0`9%j0l3zW;UDCak(m! zpQ+US|AC(XfT5wGIU@Q!5p@#LKyrLOK0f|0bsPf#hYlS&pWOfN2!fypf}n_^xFCw+ zHw?pkYcv|)QOD(~Z2Z(HE-qG{06+AY{A=loOi>i8%jJ5_=kqnG-+bzovfJ(5?d|Os zh$!ba?FR4qPY5zW1YQV{yuY`5qep_nzlrzG=twH?y z7AOJK$iSdg`ekD6S=0Bg9-p~)Y|Urg-PKz@PT0Kef}-ptMO)Jy)tv^vm8T;g)!xi doyiBv|6sh=Dt;-h=9&=5I8RqUmvv4FO#rrLh+hBz literal 0 HcmV?d00001 diff --git a/public/assets/img/sprite-skin-nice.png b/public/assets/img/sprite-skin-nice.png new file mode 100755 index 0000000000000000000000000000000000000000..d62f81887e2de388a22efe13709d8377a442bf01 GIT binary patch literal 1022 zcmeAS@N?(olHy`uVBq!ia0y~yU}OQZr*SX?Nq&B|BR~P`0G|+7Ah&DE?4D_J&!0d4 z^5sh)NjbQF{rc_Ox9{A!^XAQ)w{PFR|M=;{r_Vs}<;$1v-@pI(@#E*upMU=R`TO_p zzkmP!1Hr9Z|8Ly*fBibp0px*a&z~b}T)AP}vUOXw?m4()-{D;ckI!GVasJAU^Hy${ zw_?NG73=3LUpH&%8X%gvWX+7ltEVkoId#E`Df5?2oV~bj#{Ayt^B^QJOn_`4>Yg$i zi2er!{TC4U&&T(lm-jyp&wmC6ncJJ?fWens666=mz{bYN;^ge&<{lQ;-Z^vDqW#xz z+`e=7)0dyWKpsQ~S1w<=c>dg(QzuUxJ9^~sp@RqZ?>o3DH$83lfyWQQYJdOw^&6(? z-P^YlCrp@lto$a>HYR>g7srr_xVJY0{VxYdw12Gk?`BBu5j03Rek?($LSla71PN2- zq(?j!J#OqR{V%s09oc&P@+OO~$7VcWo%8(qvbUj=_lc`7uY8i&(CAmV%I?>zenXbF zh8GS?^B12vDIxq@`I7UqPiN#S*J=2rm9_(|1OtaJPapqONRYRaeEIq3@6DGd%-!qb zGcCPwwT#qr&6IPgYGE((R6f6YySwhdy*+j{f|`~EGmkBLZ@zd>&*j3LFB_gjh8@e8 z?Bj3gd*tGE>k4a_xtc+d5jQ#84hTpvO;PIQGclA(-FbShim<3pN*DXx{Bt|^{8;0p zxAMmt3(qg}VVW9Nwm#ju^=Yd+*TlfYb^D^?SN$&DYPZ}WR64pWXLVrcglE^w-}>)< z{h2FZ>Bi*xjh9zwSQOscxc}vnjZVgQx3r$U_pvblve>N4T)t~l_kIh!Z=DsrJ~TKZ zY}?xFucudCyB!x8(KG4Ew>Ym;-a>Z-ik4rH>@}*~>7`s5x$J^Y-k+TYc{*Aqn|-4* zzWe!A$(xAffuReuGB8&&S z*K~qB5jsoDcj_{);H4`sg}mJR@afY6{Wn^7_wM+nx63j7<-^iU51_303ZUfQ+pUH6 sKsnjCSl-?BYcGXlt}=n@24!V?27U8=_x^tMP6rw5>FVdQ&MBb@0IhXYe*gdg literal 0 HcmV?d00001 diff --git a/public/assets/img/user-bg.png b/public/assets/img/user-bg.png new file mode 100755 index 0000000000000000000000000000000000000000..75e1b46c9d44d6147040250b068de339f3c1b9a9 GIT binary patch literal 73815 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%0Dx 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≫|qDTA_ksYE887Gsxj@VQavgbjF=H~47-IP_3v-L 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 .header").height() - ($("body > .footer").outerHeight() || 0); + $(".wrapper").css("min-height", height + "px"); + var content = $(".wrapper").height(); + //If the wrapper height is greater than the window + if (content > height) + //then set sidebar height to the wrapper + $(".left-side, html, body").css("min-height", content + "px"); + else { + //Otherwise, set the sidebar to the height of the window + $(".left-side, html, body").css("min-height", height + "px"); + } + } + //Fire upon load + _fix(); + //Fire when wrapper is resized + $(".wrapper").resize(function() { + _fix(); + fix_sidebar(); + }); + + //Fix the fixed layout sidebar scroll bug + fix_sidebar(); + + /* + * We are gonna initialize all checkbox and radio inputs to + * iCheck plugin in. + * You can find the documentation at http://fronteed.com/iCheck/ + */ + $("input[type='checkbox']:not(.simple), input[type='radio']:not(.simple)").iCheck({ + checkboxClass: 'icheckbox_minimal', + radioClass: 'iradio_minimal' + }); + +}); +function fix_sidebar() { + //Make sure the body tag has the .fixed class + if (!$("body").hasClass("fixed")) { + return; + } + + //Add slimscroll + $(".sidebar").slimscroll({ + height: ($(window).height() - $(".header").height()) + "px", + color: "rgba(0,0,0,0.2)" + }); +} + +/*END DEMO*/ +$(window).load(function() { + /*! pace 0.4.17 */ + (function() { + var a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V = [].slice, W = {}.hasOwnProperty, X = function(a, b) { + function c() { + this.constructor = a + } + for (var d in b) + W.call(b, d) && (a[d] = b[d]); + return c.prototype = b.prototype, a.prototype = new c, a.__super__ = b.prototype, a + }, Y = [].indexOf || function(a) { + for (var b = 0, c = this.length; c > b; b++) + if (b in this && this[b] === a) + return b; + return-1 + }; + for (t = {catchupTime:500, initialRate:.03, minTime:500, ghostTime:500, maxProgressPerFrame:10, easeFactor:1.25, startOnPageLoad:!0, restartOnPushState:!0, restartOnRequestAfter:500, target:"body", elements:{checkInterval:100, selectors:["body"]}, eventLag:{minSamples:10, sampleCount:3, lagThreshold:3}, ajax:{trackMethods:["GET"], trackWebSockets:!1}}, B = function() { + var a; + return null != (a = "undefined" != typeof performance && null !== performance ? "function" == typeof performance.now ? performance.now() : void 0 : void 0) ? a : +new Date + }, D = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame, s = window.cancelAnimationFrame || window.mozCancelAnimationFrame, null == D && (D = function(a) { + return setTimeout(a, 50) + }, s = function(a) { + return clearTimeout(a) + }), F = function(a) { + var b, c; + return b = B(), (c = function() { + var d; + return d = B() - b, d >= 33 ? (b = B(), a(d, function() { + return D(c) + })) : setTimeout(c, 33 - d) + })() + }, E = function() { + var a, b, c; + return c = arguments[0], b = arguments[1], a = 3 <= arguments.length ? V.call(arguments, 2) : [], "function" == typeof c[b] ? c[b].apply(c, a) : c[b] + }, u = function() { + var a, b, c, d, e, f, g; + for (b = arguments[0], d = 2 <= arguments.length?V.call(arguments, 1):[], f = 0, g = d.length; g > f; f++) + if (c = d[f]) + for (a in c) + W.call(c, a) && (e = c[a], null != b[a] && "object" == typeof b[a] && null != e && "object" == typeof e ? u(b[a], e) : b[a] = e); + return b + }, p = function(a) { + var b, c, d, e, f; + for (c = b = 0, e = 0, f = a.length; f > e; e++) + d = a[e], c += Math.abs(d), b++; + return c / b + }, w = function(a, b) { + var c, d, e; + if (null == a && (a = "options"), null == b && (b = !0), e = document.querySelector("[data-pace-" + a + "]")) { + if (c = e.getAttribute("data-pace-" + a), !b) + return c; + try { + return JSON.parse(c) + } catch (f) { + return d = f, "undefined" != typeof console && null !== console ? console.error("Error parsing inline pace options", d) : void 0 + } + } + }, g = function() { + function a() { + } + return a.prototype.on = function(a, b, c, d) { + var e; + return null == d && (d = !1), null == this.bindings && (this.bindings = {}), null == (e = this.bindings)[a] && (e[a] = []), this.bindings[a].push({handler: b, ctx: c, once: d}) + }, a.prototype.once = function(a, b, c) { + return this.on(a, b, c, !0) + }, a.prototype.off = function(a, b) { + var c, d, e; + if (null != (null != (d = this.bindings) ? d[a] : void 0)) { + if (null == b) + return delete this.bindings[a]; + for (c = 0, e = []; c < this.bindings[a].length; ) + this.bindings[a][c].handler === b ? e.push(this.bindings[a].splice(c, 1)) : e.push(c++); + return e + } + }, a.prototype.trigger = function() { + var a, b, c, d, e, f, g, h, i; + if (c = arguments[0], a = 2 <= arguments.length ? V.call(arguments, 1) : [], null != (g = this.bindings) ? g[c] : void 0) { + for (e = 0, i = []; e < this.bindings[c].length; ) + h = this.bindings[c][e], d = h.handler, b = h.ctx, f = h.once, d.apply(null != b ? b : this, a), f ? i.push(this.bindings[c].splice(e, 1)) : i.push(e++); + return i + } + }, a + }(), null == window.Pace && (window.Pace = {}), u(Pace, g.prototype), C = Pace.options = u({}, t, window.paceOptions, w()), S = ["ajax", "document", "eventLag", "elements"], O = 0, Q = S.length; Q > O; O++) + I = S[O], C[I] === !0 && (C[I] = t[I]); + i = function(a) { + function b() { + return T = b.__super__.constructor.apply(this, arguments) + } + return X(b, a), b + }(Error), b = function() { + function a() { + this.progress = 0 + } + return a.prototype.getElement = function() { + var a; + if (null == this.el) { + if (a = document.querySelector(C.target), !a) + throw new i; + this.el = document.createElement("div"), this.el.className = "pace pace-active", document.body.className = document.body.className.replace("pace-done", ""), document.body.className += " pace-running", this.el.innerHTML = '

      \n
      ', null != a.firstChild ? a.insertBefore(this.el, a.firstChild) : a.appendChild(this.el) + } + return this.el + }, a.prototype.finish = function() { + var a; + return a = this.getElement(), a.className = a.className.replace("pace-active", ""), a.className += " pace-inactive", document.body.className = document.body.className.replace("pace-running", ""), document.body.className += " pace-done" + }, a.prototype.update = function(a) { + return this.progress = a, this.render() + }, a.prototype.destroy = function() { + try { + this.getElement().parentNode.removeChild(this.getElement()) + } catch (a) { + i = a + } + return this.el = void 0 + }, a.prototype.render = function() { + var a, b; + return null == document.querySelector(C.target) ? !1 : (a = this.getElement(), a.children[0].style.width = "" + this.progress + "%", (!this.lastRenderedProgress || this.lastRenderedProgress | 0 !== this.progress | 0) && (a.children[0].setAttribute("data-progress-text", "" + (0 | this.progress) + "%"), this.progress >= 100 ? b = "99" : (b = this.progress < 10 ? "0" : "", b += 0 | this.progress), a.children[0].setAttribute("data-progress", "" + b)), this.lastRenderedProgress = this.progress) + }, a.prototype.done = function() { + return this.progress >= 100 + }, a + }(), h = function() { + function a() { + this.bindings = {} + } + return a.prototype.trigger = function(a, b) { + var c, d, e, f, g; + if (null != this.bindings[a]) { + for (f = this.bindings[a], g = [], d = 0, e = f.length; e > d; d++) + c = f[d], g.push(c.call(this, b)); + return g + } + }, a.prototype.on = function(a, b) { + var c; + return null == (c = this.bindings)[a] && (c[a] = []), this.bindings[a].push(b) + }, a + }(), N = window.XMLHttpRequest, M = window.XDomainRequest, L = window.WebSocket, v = function(a, b) { + var c, d, e, f; + f = []; + for (d in b.prototype) + try { + e = b.prototype[d], null == a[d] && "function" != typeof e ? f.push(a[d] = e) : f.push(void 0) + } catch (g) { + c = g + } + return f + }, z = [], Pace.ignore = function() { + var a, b, c; + return b = arguments[0], a = 2 <= arguments.length ? V.call(arguments, 1) : [], z.unshift("ignore"), c = b.apply(null, a), z.shift(), c + }, Pace.track = function() { + var a, b, c; + return b = arguments[0], a = 2 <= arguments.length ? V.call(arguments, 1) : [], z.unshift("track"), c = b.apply(null, a), z.shift(), c + }, H = function(a) { + var b; + if (null == a && (a = "GET"), "track" === z[0]) + return"force"; + if (!z.length && C.ajax) { + if ("socket" === a && C.ajax.trackWebSockets) + return!0; + if (b = a.toUpperCase(), Y.call(C.ajax.trackMethods, b) >= 0) + return!0 + } + return!1 + }, j = function(a) { + function b() { + var a, c = this; + b.__super__.constructor.apply(this, arguments), a = function(a) { + var b; + return b = a.open, a.open = function(d, e) { + return H(d) && c.trigger("request", {type: d, url: e, request: a}), b.apply(a, arguments) + } + }, window.XMLHttpRequest = function(b) { + var c; + return c = new N(b), a(c), c + }, v(window.XMLHttpRequest, N), null != M && (window.XDomainRequest = function() { + var b; + return b = new M, a(b), b + }, v(window.XDomainRequest, M)), null != L && C.ajax.trackWebSockets && (window.WebSocket = function(a, b) { + var d; + return d = new L(a, b), H("socket") && c.trigger("request", {type: "socket", url: a, protocols: b, request: d}), d + }, v(window.WebSocket, L)) + } + return X(b, a), b + }(h), P = null, x = function() { + return null == P && (P = new j), P + }, x().on("request", function(b) { + var c, d, e, f; + return f = b.type, e = b.request, Pace.running || C.restartOnRequestAfter === !1 && "force" !== H(f) ? void 0 : (d = arguments, c = C.restartOnRequestAfter || 0, "boolean" == typeof c && (c = 0), setTimeout(function() { + var b, c, g, h, i, j; + if (b = "socket" === f ? e.readyState < 2 : 0 < (h = e.readyState) && 4 > h) { + for (Pace.restart(), i = Pace.sources, j = [], c = 0, g = i.length; g > c; c++) { + if (I = i[c], I instanceof a) { + I.watch.apply(I, d); + break + } + j.push(void 0) + } + return j + } + }, c)) + }), a = function() { + function a() { + var a = this; + this.elements = [], x().on("request", function() { + return a.watch.apply(a, arguments) + }) + } + return a.prototype.watch = function(a) { + var b, c, d; + return d = a.type, b = a.request, c = "socket" === d ? new m(b) : new n(b), this.elements.push(c) + }, a + }(), n = function() { + function a(a) { + var b, c, d, e, f, g, h = this; + if (this.progress = 0, null != window.ProgressEvent) + for (c = null, a.addEventListener("progress", function(a) { + return h.progress = a.lengthComputable ? 100 * a.loaded / a.total : h.progress + (100 - h.progress) / 2 + }), g = ["load", "abort", "timeout", "error"], d = 0, e = g.length; e > d; d++) + b = g[d], a.addEventListener(b, function() { + return h.progress = 100 + }); + else + f = a.onreadystatechange, a.onreadystatechange = function() { + var b; + return 0 === (b = a.readyState) || 4 === b ? h.progress = 100 : 3 === a.readyState && (h.progress = 50), "function" == typeof f ? f.apply(null, arguments) : void 0 + } + } + return a + }(), m = function() { + function a(a) { + var b, c, d, e, f = this; + for (this.progress = 0, e = ["error", "open"], c = 0, d = e.length; d > c; c++) + b = e[c], a.addEventListener(b, function() { + return f.progress = 100 + }) + } + return a + }(), d = function() { + function a(a) { + var b, c, d, f; + for (null == a && (a = {}), this.elements = [], null == a.selectors && (a.selectors = []), f = a.selectors, c = 0, d = f.length; d > c; c++) + b = f[c], this.elements.push(new e(b)) + } + return a + }(), e = function() { + function a(a) { + this.selector = a, this.progress = 0, this.check() + } + return a.prototype.check = function() { + var a = this; + return document.querySelector(this.selector) ? this.done() : setTimeout(function() { + return a.check() + }, C.elements.checkInterval) + }, a.prototype.done = function() { + return this.progress = 100 + }, a + }(), c = function() { + function a() { + var a, b, c = this; + this.progress = null != (b = this.states[document.readyState]) ? b : 100, a = document.onreadystatechange, document.onreadystatechange = function() { + return null != c.states[document.readyState] && (c.progress = c.states[document.readyState]), "function" == typeof a ? a.apply(null, arguments) : void 0 + } + } + return a.prototype.states = {loading: 0, interactive: 50, complete: 100}, a + }(), f = function() { + function a() { + var a, b, c, d, e, f = this; + this.progress = 0, a = 0, e = [], d = 0, c = B(), b = setInterval(function() { + var g; + return g = B() - c - 50, c = B(), e.push(g), e.length > C.eventLag.sampleCount && e.shift(), a = p(e), ++d >= C.eventLag.minSamples && a < C.eventLag.lagThreshold ? (f.progress = 100, clearInterval(b)) : f.progress = 100 * (3 / (a + 3)) + }, 50) + } + return a + }(), l = function() { + function a(a) { + this.source = a, this.last = this.sinceLastUpdate = 0, this.rate = C.initialRate, this.catchup = 0, this.progress = this.lastProgress = 0, null != this.source && (this.progress = E(this.source, "progress")) + } + return a.prototype.tick = function(a, b) { + var c; + return null == b && (b = E(this.source, "progress")), b >= 100 && (this.done = !0), b === this.last ? this.sinceLastUpdate += a : (this.sinceLastUpdate && (this.rate = (b - this.last) / this.sinceLastUpdate), this.catchup = (b - this.progress) / C.catchupTime, this.sinceLastUpdate = 0, this.last = b), b > this.progress && (this.progress += this.catchup * a), c = 1 - Math.pow(this.progress / 100, C.easeFactor), this.progress += c * this.rate * a, this.progress = Math.min(this.lastProgress + C.maxProgressPerFrame, this.progress), this.progress = Math.max(0, this.progress), this.progress = Math.min(100, this.progress), this.lastProgress = this.progress, this.progress + }, a + }(), J = null, G = null, q = null, K = null, o = null, r = null, Pace.running = !1, y = function() { + return C.restartOnPushState ? Pace.restart() : void 0 + }, null != window.history.pushState && (R = window.history.pushState, window.history.pushState = function() { + return y(), R.apply(window.history, arguments) + }), null != window.history.replaceState && (U = window.history.replaceState, window.history.replaceState = function() { + return y(), U.apply(window.history, arguments) + }), k = {ajax: a, elements: d, document: c, eventLag: f}, (A = function() { + var a, c, d, e, f, g, h, i; + for (Pace.sources = J = [], g = ["ajax", "elements", "document", "eventLag"], c = 0, e = g.length; e > c; c++) + a = g[c], C[a] !== !1 && J.push(new k[a](C[a])); + for (i = null != (h = C.extraSources)?h:[], d = 0, f = i.length; f > d; d++) + I = i[d], J.push(new I(C)); + return Pace.bar = q = new b, G = [], K = new l + })(), Pace.stop = function() { + return Pace.trigger("stop"), Pace.running = !1, q.destroy(), r = !0, null != o && ("function" == typeof s && s(o), o = null), A() + }, Pace.restart = function() { + return Pace.trigger("restart"), Pace.stop(), Pace.start() + }, Pace.go = function() { + return Pace.running = !0, q.render(), r = !1, o = F(function(a, b) { + var c, d, e, f, g, h, i, j, k, m, n, o, p, s, t, u, v; + for (j = 100 - q.progress, d = o = 0, e = !0, h = p = 0, t = J.length; t > p; h = ++p) + for (I = J[h], m = null != G[h]?G[h]:G[h] = [], g = null != (v = I.elements)?v:[I], i = s = 0, u = g.length; u > s; i = ++s) + f = g[i], k = null != m[i] ? m[i] : m[i] = new l(f), e &= k.done, k.done || (d++, o += k.tick(a)); + return c = o / d, q.update(K.tick(a, c)), n = B(), q.done() || e || r ? (q.update(100), Pace.trigger("done"), setTimeout(function() { + return q.finish(), Pace.running = !1, Pace.trigger("hide") + }, Math.max(C.ghostTime, Math.min(C.minTime, B() - n)))) : b() + }) + }, Pace.start = function(a) { + u(C, a), Pace.running = !0; + try { + q.render() + } catch (b) { + i = b + } + return document.querySelector(".pace") ? (Pace.trigger("start"), Pace.go()) : setTimeout(Pace.start, 50) + }, "function" == typeof define && define.amd ? define('theme-app', [], function() { + return Pace + }) : "object" == typeof exports ? module.exports = Pace : C.startOnPageLoad && Pace.start() + }).call(this); +}); + +/* + * BOX REFRESH BUTTON + * ------------------ + * This is a custom plugin to use with the compenet BOX. It allows you to add + * a refresh button to the box. It converts the box's state to a loading state. + * + * USAGE: + * $("#box-widget").boxRefresh( options ); + * */ +(function($) { + "use strict"; + + $.fn.boxRefresh = function(options) { + + // Render options + var settings = $.extend({ + //Refressh button selector + trigger: ".refresh-btn", + //File source to be loaded (e.g: ajax/src.php) + source: "", + //Callbacks + onLoadStart: function(box) { + }, //Right after the button has been clicked + onLoadDone: function(box) { + } //When the source has been loaded + + }, options); + + //The overlay + var overlay = $('
      '); + + return this.each(function() { + //if a source is specified + if (settings.source === "") { + if (console) { + console.log("Please specify a source first - boxRefresh()"); + } + return; + } + //the box + var box = $(this); + //the button + var rBtn = box.find(settings.trigger).first(); + + //On trigger click + rBtn.click(function(e) { + e.preventDefault(); + //Add loading overlay + start(box); + + //Perform ajax call + box.find(".box-body").load(settings.source, function() { + done(box); + }); + + + }); + + }); + + function start(box) { + //Add overlay and loading img + box.append(overlay); + + settings.onLoadStart.call(box); + } + + function done(box) { + //Remove overlay and loading img + box.find(overlay).remove(); + + settings.onLoadDone.call(box); + } + + }; + +})(jQuery); + +/* + * SIDEBAR MENU + * ------------ + * This is a custom plugin for the sidebar menu. It provides a tree view. + * + * Usage: + * $(".sidebar).tree(); + * + * Note: This plugin does not accept any options. Instead, it only requires a class + * added to the element that contains a sub-menu. + * + * When used with the sidebar, for example, it would look something like this: + *

      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 z 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≻RrM455UA7$) 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 z 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 VTZ6H3`AC-F(fX&d!vFpL{{V+j?7aX0 literal 0 HcmV?d00001 diff --git a/public/assets/img/blur-background09.jpg b/public/assets/img/blur-background09.jpg new file mode 100755 index 0000000000000000000000000000000000000000..0da84072c42f6da7aaf60dfac3b2c7d51fa04f93 GIT binary patch literal 390733 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 z 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

      ' + + '
      ' + + '
      ' + + '
      ' + + '
      ' + + '' + + '' + + '
      ' + + '
      ' + + '' + + '' + + '
      ' + + ' ' + + '' + + '
      ' + + '
      ' + + '
      '; + + this.parentEl = (hasOptions && options.parentEl && $(options.parentEl)) || $(this.parentEl); + //the date range picker + this.container = $(DRPTemplate).appendTo(this.parentEl); + + if (hasOptions) { + + if (typeof options.format == 'string') + this.format = options.format; + + if (typeof options.separator == 'string') + this.separator = options.separator; + + if (typeof options.startDate == 'string') + this.startDate = moment(options.startDate, this.format); + + if (typeof options.endDate == 'string') + this.endDate = moment(options.endDate, this.format); + + if (typeof options.minDate == 'string') + this.minDate = moment(options.minDate, this.format); + + if (typeof options.maxDate == 'string') + this.maxDate = moment(options.maxDate, this.format); + + if (typeof options.startDate == 'object') + this.startDate = moment(options.startDate); + + if (typeof options.endDate == 'object') + this.endDate = moment(options.endDate); + + if (typeof options.minDate == 'object') + this.minDate = moment(options.minDate); + + if (typeof options.maxDate == 'object') + this.maxDate = moment(options.maxDate); + + if (typeof options.ranges == 'object') { + for (var range in options.ranges) { + + var start = moment(options.ranges[range][0]); + var end = moment(options.ranges[range][1]); + + // If we have a min/max date set, bound this range + // to it, but only if it would otherwise fall + // outside of the min/max. + if (this.minDate && start.isBefore(this.minDate)) + start = moment(this.minDate); + + if (this.maxDate && end.isAfter(this.maxDate)) + end = moment(this.maxDate); + + // If the end of the range is before the minimum (if min is set) OR + // the start of the range is after the max (also if set) don't display this + // range option. + if ((this.minDate && end.isBefore(this.minDate)) || (this.maxDate && start.isAfter(this.maxDate))) { + continue; + } + + this.ranges[range] = [start, end]; + } + + var list = '
        '; + for (var range in this.ranges) { + list += '
      • ' + range + '
      • '; + } + list += '
      • ' + this.locale.customRangeLabel + '
      • '; + list += '
      '; + this.container.find('.ranges').prepend(list); + } + + if (typeof options.dateLimit == 'object') + this.dateLimit = options.dateLimit; + + // update day names order to firstDay + if (typeof options.locale == 'object') { + + if (typeof options.locale.daysOfWeek == 'object') { + + // Create a copy of daysOfWeek to avoid modification of original + // options object for reusability in multiple daterangepicker instances + this.locale.daysOfWeek = options.locale.daysOfWeek.slice(); + } + + if (typeof options.locale.firstDay == 'number') { + this.locale.firstDay = options.locale.firstDay; + var iterator = options.locale.firstDay; + while (iterator > 0) { + this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift()); + iterator--; + } + } + } + + if (typeof options.opens == 'string') + this.opens = options.opens; + + if (typeof options.showWeekNumbers == 'boolean') { + this.showWeekNumbers = options.showWeekNumbers; + } + + if (typeof options.buttonClasses == 'string') { + this.buttonClasses = [options.buttonClasses]; + } + + if (typeof options.buttonClasses == 'object') { + this.buttonClasses = options.buttonClasses; + } + + if (typeof options.showDropdowns == 'boolean') { + this.showDropdowns = options.showDropdowns; + } + + if (typeof options.timePicker == 'boolean') { + this.timePicker = options.timePicker; + } + + if (typeof options.timePickerIncrement == 'number') { + this.timePickerIncrement = options.timePickerIncrement; + } + + if (typeof options.timePicker12Hour == 'boolean') { + this.timePicker12Hour = options.timePicker12Hour; + } + + } + + if (!this.timePicker) { + this.startDate = this.startDate.startOf('day'); + this.endDate = this.endDate.startOf('day'); + } + + //apply CSS classes to buttons + var c = this.container; + $.each(this.buttonClasses, function (idx, val) { + c.find('button').addClass(val); + }); + + if (this.opens == 'right') { + //swap calendar positions + var left = this.container.find('.calendar.left'); + var right = this.container.find('.calendar.right'); + left.removeClass('left').addClass('right'); + right.removeClass('right').addClass('left'); + } + + if (typeof options == 'undefined' || typeof options.ranges == 'undefined') { + this.container.find('.calendar').show(); + this.move(); + } + + if (typeof cb == 'function') + this.cb = cb; + + this.container.addClass('opens' + this.opens); + + //try parse date if in text input + if (!hasOptions || (typeof options.startDate == 'undefined' && typeof options.endDate == 'undefined')) { + if ($(this.element).is('input[type=text]')) { + var val = $(this.element).val(); + var split = val.split(this.separator); + var start, end; + if (split.length == 2) { + start = moment(split[0], this.format); + end = moment(split[1], this.format); + } + if (start != null && end != null) { + this.startDate = start; + this.endDate = end; + } + } + } + + //state + this.oldStartDate = this.startDate.clone(); + this.oldEndDate = this.endDate.clone(); + + this.leftCalendar = { + month: moment([this.startDate.year(), this.startDate.month(), 1, this.startDate.hour(), this.startDate.minute()]), + calendar: [] + }; + + this.rightCalendar = { + month: moment([this.endDate.year(), this.endDate.month(), 1, this.endDate.hour(), this.endDate.minute()]), + calendar: [] + }; + + //event listeners + this.container.on('mousedown', $.proxy(this.mousedown, this)); + + this.container.find('.calendar') + .on('click', '.prev', $.proxy(this.clickPrev, this)) + .on('click', '.next', $.proxy(this.clickNext, this)) + .on('click', 'td.available', $.proxy(this.clickDate, this)) + .on('mouseenter', 'td.available', $.proxy(this.enterDate, this)) + .on('mouseleave', 'td.available', $.proxy(this.updateFormInputs, this)) + .on('change', 'select.yearselect', $.proxy(this.updateMonthYear, this)) + .on('change', 'select.monthselect', $.proxy(this.updateMonthYear, this)) + .on('change', 'select.hourselect,select.minuteselect,select.ampmselect', $.proxy(this.updateTime, this)); + + this.container.find('.ranges') + .on('click', 'button.applyBtn', $.proxy(this.clickApply, this)) + .on('click', 'button.cancelBtn', $.proxy(this.clickCancel, this)) + .on('click', '.daterangepicker_start_input,.daterangepicker_end_input', $.proxy(this.showCalendars, this)) + .on('click', 'li', $.proxy(this.clickRange, this)) + .on('mouseenter', 'li', $.proxy(this.enterRange, this)) + .on('mouseleave', 'li', $.proxy(this.updateFormInputs, this)); + + this.element.on('keyup', $.proxy(this.updateFromControl, this)); + + this.updateView(); + this.updateCalendars(); + + }; + + DateRangePicker.prototype = { + + constructor: DateRangePicker, + + mousedown: function (e) { + e.stopPropagation(); + }, + + updateView: function () { + this.leftCalendar.month.month(this.startDate.month()).year(this.startDate.year()); + this.rightCalendar.month.month(this.endDate.month()).year(this.endDate.year()); + this.updateFormInputs(); + }, + + updateFormInputs: function () { + this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.format)); + this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.format)); + + if (this.startDate.isSame(this.endDate) || this.startDate.isBefore(this.endDate)) { + this.container.find('button.applyBtn').removeAttr('disabled'); + } else { + this.container.find('button.applyBtn').attr('disabled', 'disabled'); + } + }, + + updateFromControl: function () { + if (!this.element.is('input')) return; + if (!this.element.val().length) return; + + var dateString = this.element.val().split(this.separator); + var start = moment(dateString[0], this.format); + var end = moment(dateString[1], this.format); + + if (start == null || end == null) return; + if (end.isBefore(start)) return; + + this.oldStartDate = this.startDate.clone(); + this.oldEndDate = this.endDate.clone(); + + this.startDate = start; + this.endDate = end; + + if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate)) + this.notify(); + + this.updateCalendars(); + }, + + notify: function () { + this.updateView(); + this.cb(this.startDate, this.endDate); + }, + + move: function () { + var parentOffset = { + top: this.parentEl.offset().top - (this.parentEl.is('body') ? 0 : this.parentEl.scrollTop()), + left: this.parentEl.offset().left - (this.parentEl.is('body') ? 0 : this.parentEl.scrollLeft()) + }; + if (this.opens == 'left') { + this.container.css({ + top: this.element.offset().top + this.element.outerHeight() - parentOffset.top, + right: $(window).width() - this.element.offset().left - this.element.outerWidth() - parentOffset.left, + left: 'auto' + }); + if (this.container.offset().left < 0) { + this.container.css({ + right: 'auto', + left: 9 + }); + } + } else { + this.container.css({ + top: this.element.offset().top + this.element.outerHeight() - parentOffset.top, + left: this.element.offset().left - parentOffset.left, + right: 'auto' + }); + if (this.container.offset().left + this.container.outerWidth() > $(window).width()) { + this.container.css({ + left: 'auto', + right: 0 + }); + } + } + }, + + show: function (e) { + this.container.show(); + this.move(); + + if (e) { + e.stopPropagation(); + e.preventDefault(); + } + + $(document).on('mousedown', $.proxy(this.hide, this)); + this.element.trigger('shown', {target: e.target, picker: this}); + }, + + hide: function (e) { + this.container.hide(); + + if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate)) + this.notify(); + + this.oldStartDate = this.startDate.clone(); + this.oldEndDate = this.endDate.clone(); + + $(document).off('mousedown', this.hide); + this.element.trigger('hidden', { picker: this }); + }, + + enterRange: function (e) { + var label = e.target.innerHTML; + if (label == this.locale.customRangeLabel) { + this.updateView(); + } else { + var dates = this.ranges[label]; + this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.format)); + this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.format)); + } + }, + + showCalendars: function() { + this.container.find('.calendar').show(); + this.move(); + }, + + updateInputText: function() { + if (this.element.is('input')) + this.element.val(this.startDate.format(this.format) + this.separator + this.endDate.format(this.format)); + }, + + clickRange: function (e) { + var label = e.target.innerHTML; + if (label == this.locale.customRangeLabel) { + this.showCalendars(); + } else { + var dates = this.ranges[label]; + + this.startDate = dates[0]; + this.endDate = dates[1]; + + if (!this.timePicker) { + this.startDate.startOf('day'); + this.endDate.startOf('day'); + } + + this.leftCalendar.month.month(this.startDate.month()).year(this.startDate.year()).hour(this.startDate.hour()).minute(this.startDate.minute()); + this.rightCalendar.month.month(this.endDate.month()).year(this.endDate.year()).hour(this.endDate.hour()).minute(this.endDate.minute()); + this.updateCalendars(); + + this.updateInputText(); + + this.container.find('.calendar').hide(); + this.hide(); + } + }, + + clickPrev: function (e) { + var cal = $(e.target).parents('.calendar'); + if (cal.hasClass('left')) { + this.leftCalendar.month.subtract('month', 1); + } else { + this.rightCalendar.month.subtract('month', 1); + } + this.updateCalendars(); + }, + + clickNext: function (e) { + var cal = $(e.target).parents('.calendar'); + if (cal.hasClass('left')) { + this.leftCalendar.month.add('month', 1); + } else { + this.rightCalendar.month.add('month', 1); + } + this.updateCalendars(); + }, + + enterDate: function (e) { + + var title = $(e.target).attr('data-title'); + var row = title.substr(1, 1); + var col = title.substr(3, 1); + var cal = $(e.target).parents('.calendar'); + + if (cal.hasClass('left')) { + this.container.find('input[name=daterangepicker_start]').val(this.leftCalendar.calendar[row][col].format(this.format)); + } else { + this.container.find('input[name=daterangepicker_end]').val(this.rightCalendar.calendar[row][col].format(this.format)); + } + + }, + + clickDate: function (e) { + var title = $(e.target).attr('data-title'); + var row = title.substr(1, 1); + var col = title.substr(3, 1); + var cal = $(e.target).parents('.calendar'); + + if (cal.hasClass('left')) { + var startDate = this.leftCalendar.calendar[row][col]; + var endDate = this.endDate; + if (typeof this.dateLimit == 'object') { + var maxDate = moment(startDate).add(this.dateLimit).startOf('day'); + if (endDate.isAfter(maxDate)) { + endDate = maxDate; + } + } + } else { + var startDate = this.startDate; + var endDate = this.rightCalendar.calendar[row][col]; + if (typeof this.dateLimit == 'object') { + var minDate = moment(endDate).subtract(this.dateLimit).startOf('day'); + if (startDate.isBefore(minDate)) { + startDate = minDate; + } + } + } + + cal.find('td').removeClass('active'); + + if (startDate.isSame(endDate) || startDate.isBefore(endDate)) { + $(e.target).addClass('active'); + this.startDate = startDate; + this.endDate = endDate; + } else if (startDate.isAfter(endDate)) { + $(e.target).addClass('active'); + this.startDate = startDate; + this.endDate = moment(startDate).add('day', 1).startOf('day'); + } + + this.leftCalendar.month.month(this.startDate.month()).year(this.startDate.year()); + this.rightCalendar.month.month(this.endDate.month()).year(this.endDate.year()); + this.updateCalendars(); + }, + + clickApply: function (e) { + this.updateInputText(); + this.hide(); + }, + + clickCancel: function (e) { + this.startDate = this.oldStartDate; + this.endDate = this.oldEndDate; + this.updateView(); + this.updateCalendars(); + this.hide(); + }, + + updateMonthYear: function (e) { + + var isLeft = $(e.target).closest('.calendar').hasClass('left'); + var cal = this.container.find('.calendar.left'); + if (!isLeft) + cal = this.container.find('.calendar.right'); + + // Month must be Number for new moment versions + var month = parseInt(cal.find('.monthselect').val(), 10); + var year = cal.find('.yearselect').val(); + + if (isLeft) { + this.leftCalendar.month.month(month).year(year); + } else { + this.rightCalendar.month.month(month).year(year); + } + + this.updateCalendars(); + + }, + + updateTime: function(e) { + + var isLeft = $(e.target).closest('.calendar').hasClass('left'); + var cal = this.container.find('.calendar.left'); + if (!isLeft) + cal = this.container.find('.calendar.right'); + + var hour = parseInt(cal.find('.hourselect').val()); + var minute = parseInt(cal.find('.minuteselect').val()); + + if (this.timePicker12Hour) { + var ampm = cal.find('.ampmselect').val(); + if (ampm == 'PM' && hour < 12) + hour += 12; + if (ampm == 'AM' && hour == 12) + hour = 0; + } + + if (isLeft) { + var start = this.startDate.clone(); + start.hour(hour); + start.minute(minute); + this.startDate = start; + this.leftCalendar.month.hour(hour).minute(minute); + } else { + var end = this.endDate.clone(); + end.hour(hour); + end.minute(minute); + this.endDate = end; + this.rightCalendar.month.hour(hour).minute(minute); + } + + this.updateCalendars(); + + }, + + updateCalendars: function () { + this.leftCalendar.calendar = this.buildCalendar(this.leftCalendar.month.month(), this.leftCalendar.month.year(), this.leftCalendar.month.hour(), this.leftCalendar.month.minute(), 'left'); + this.rightCalendar.calendar = this.buildCalendar(this.rightCalendar.month.month(), this.rightCalendar.month.year(), this.rightCalendar.month.hour(), this.rightCalendar.month.minute(), 'right'); + this.container.find('.calendar.left').html(this.renderCalendar(this.leftCalendar.calendar, this.startDate, this.minDate, this.maxDate)); + this.container.find('.calendar.right').html(this.renderCalendar(this.rightCalendar.calendar, this.endDate, this.startDate, this.maxDate)); + + this.container.find('.ranges li').removeClass('active'); + var customRange = true; + var i = 0; + for (var range in this.ranges) { + if (this.timePicker) { + if (this.startDate.isSame(this.ranges[range][0]) && this.endDate.isSame(this.ranges[range][1])) { + customRange = false; + this.container.find('.ranges li:eq(' + i + ')').addClass('active'); + } + } else { + //ignore times when comparing dates if time picker is not enabled + if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) { + customRange = false; + this.container.find('.ranges li:eq(' + i + ')').addClass('active'); + } + } + i++; + } + if (customRange) + this.container.find('.ranges li:last').addClass('active'); + }, + + buildCalendar: function (month, year, hour, minute, side) { + + var firstDay = moment([year, month, 1]); + var lastMonth = moment(firstDay).subtract('month', 1).month(); + var lastYear = moment(firstDay).subtract('month', 1).year(); + + var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth(); + + var dayOfWeek = firstDay.day(); + + //initialize a 6 rows x 7 columns array for the calendar + var calendar = []; + for (var i = 0; i < 6; i++) { + calendar[i] = []; + } + + //populate the calendar with date objects + var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1; + if (startDay > daysInLastMonth) + startDay -= 7; + + if (dayOfWeek == this.locale.firstDay) + startDay = daysInLastMonth - 6; + + var curDate = moment([lastYear, lastMonth, startDay, 12, minute]); + for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add('hour', 24)) { + if (i > 0 && col % 7 == 0) { + col = 0; + row++; + } + calendar[row][col] = curDate.clone().hour(hour); + curDate.hour(12); + } + + return calendar; + + }, + + renderDropdowns: function (selected, minDate, maxDate) { + var currentMonth = selected.month(); + var monthHtml = '"; + + var currentYear = selected.year(); + var maxYear = (maxDate && maxDate.year()) || (currentYear + 5); + var minYear = (minDate && minDate.year()) || (currentYear - 50); + var yearHtml = ''; + + return monthHtml + yearHtml; + }, + + renderCalendar: function (calendar, selected, minDate, maxDate) { + + var html = '
      '; + html += ''; + html += ''; + html += ''; + + // add empty cell for week number + if (this.showWeekNumbers) + html += ''; + + if (!minDate || minDate.isBefore(calendar[1][1])) { + html += ''; + } else { + html += ''; + } + + var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(" YYYY"); + + if (this.showDropdowns) { + dateHtml = this.renderDropdowns(calendar[1][1], minDate, maxDate); + } + + html += ''; + if (!maxDate || maxDate.isAfter(calendar[1][1])) { + html += ''; + } else { + html += ''; + } + + html += ''; + html += ''; + + // add week number label + if (this.showWeekNumbers) + html += ''; + + $.each(this.locale.daysOfWeek, function (index, dayOfWeek) { + html += ''; + }); + + html += ''; + html += ''; + html += ''; + + for (var row = 0; row < 6; row++) { + html += ''; + + // add week number + if (this.showWeekNumbers) + html += ''; + + for (var col = 0; col < 7; col++) { + var cname = 'available '; + cname += (calendar[row][col].month() == calendar[1][1].month()) ? '' : 'off'; + + if ((minDate && calendar[row][col].isBefore(minDate)) || (maxDate && calendar[row][col].isAfter(maxDate))) { + cname = ' off disabled '; + } else if (calendar[row][col].format('YYYY-MM-DD') == selected.format('YYYY-MM-DD')) { + cname += ' active '; + if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD')) { + cname += ' start-date '; + } + if (calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD')) { + cname += ' end-date '; + } + } else if (calendar[row][col] >= this.startDate && calendar[row][col] <= this.endDate) { + cname += ' in-range '; + if (calendar[row][col].isSame(this.startDate)) { cname += ' start-date '; } + if (calendar[row][col].isSame(this.endDate)) { cname += ' end-date '; } + } + + var title = 'r' + row + 'c' + col; + html += ''; + } + html += ''; + } + + html += ''; + html += '
      ' + dateHtml + '
      ' + this.locale.weekLabel + '' + dayOfWeek + '
      ' + calendar[row][0].week() + '' + calendar[row][col].date() + '
      '; + html += '
      '; + + if (this.timePicker) { + + html += '
      '; + html += ' : '; + + html += ' '; + + if (this.timePicker12Hour) { + html += ''; + } + + html += '
      '; + + } + + return html; + + } + + }; + + $.fn.daterangepicker = function (options, cb) { + this.each(function () { + var el = $(this); + if (!el.data('daterangepicker')) + el.data('daterangepicker', new DateRangePicker(el, options, cb)); + }); + return this; + }; + +}(window.jQuery); diff --git a/public/assets/js/plugins/flot/excanvas.js b/public/assets/js/plugins/flot/excanvas.js new file mode 100755 index 00000000..70a8f25c --- /dev/null +++ b/public/assets/js/plugins/flot/excanvas.js @@ -0,0 +1,1428 @@ +// Copyright 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +// Known Issues: +// +// * Patterns only support repeat. +// * Radial gradient are not implemented. The VML version of these look very +// different from the canvas one. +// * Clipping paths are not implemented. +// * Coordsize. The width and height attribute have higher priority than the +// width and height style values which isn't correct. +// * Painting mode isn't implemented. +// * Canvas width/height should is using content-box by default. IE in +// Quirks mode will draw the canvas using border-box. Either change your +// doctype to HTML5 +// (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype) +// or use Box Sizing Behavior from WebFX +// (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html) +// * Non uniform scaling does not correctly scale strokes. +// * Filling very large shapes (above 5000 points) is buggy. +// * Optimize. There is always room for speed improvements. + +// Only add this code if we do not already have a canvas implementation +if (!document.createElement('canvas').getContext) { + +(function() { + + // alias some functions to make (compiled) code shorter + var m = Math; + var mr = m.round; + var ms = m.sin; + var mc = m.cos; + var abs = m.abs; + var sqrt = m.sqrt; + + // this is used for sub pixel precision + var Z = 10; + var Z2 = Z / 2; + + var IE_VERSION = +navigator.userAgent.match(/MSIE ([\d.]+)?/)[1]; + + /** + * This funtion is assigned to the elements as element.getContext(). + * @this {HTMLElement} + * @return {CanvasRenderingContext2D_} + */ + function getContext() { + return this.context_ || + (this.context_ = new CanvasRenderingContext2D_(this)); + } + + var slice = Array.prototype.slice; + + /** + * Binds a function to an object. The returned function will always use the + * passed in {@code obj} as {@code this}. + * + * Example: + * + * g = bind(f, obj, a, b) + * g(c, d) // will do f.call(obj, a, b, c, d) + * + * @param {Function} f The function to bind the object to + * @param {Object} obj The object that should act as this when the function + * is called + * @param {*} var_args Rest arguments that will be used as the initial + * arguments when the function is called + * @return {Function} A new function that has bound this + */ + function bind(f, obj, var_args) { + var a = slice.call(arguments, 2); + return function() { + return f.apply(obj, a.concat(slice.call(arguments))); + }; + } + + function encodeHtmlAttribute(s) { + return String(s).replace(/&/g, '&').replace(/"/g, '"'); + } + + function addNamespace(doc, prefix, urn) { + if (!doc.namespaces[prefix]) { + doc.namespaces.add(prefix, urn, '#default#VML'); + } + } + + function addNamespacesAndStylesheet(doc) { + addNamespace(doc, 'g_vml_', 'urn:schemas-microsoft-com:vml'); + addNamespace(doc, 'g_o_', 'urn:schemas-microsoft-com:office:office'); + + // Setup default CSS. Only add one style sheet per document + if (!doc.styleSheets['ex_canvas_']) { + var ss = doc.createStyleSheet(); + ss.owningElement.id = 'ex_canvas_'; + ss.cssText = 'canvas{display:inline-block;overflow:hidden;' + + // default size is 300x150 in Gecko and Opera + 'text-align:left;width:300px;height:150px}'; + } + } + + // Add namespaces and stylesheet at startup. + addNamespacesAndStylesheet(document); + + var G_vmlCanvasManager_ = { + init: function(opt_doc) { + var doc = opt_doc || document; + // Create a dummy element so that IE will allow canvas elements to be + // recognized. + doc.createElement('canvas'); + doc.attachEvent('onreadystatechange', bind(this.init_, this, doc)); + }, + + init_: function(doc) { + // find all canvas elements + var els = doc.getElementsByTagName('canvas'); + for (var i = 0; i < els.length; i++) { + this.initElement(els[i]); + } + }, + + /** + * Public initializes a canvas element so that it can be used as canvas + * element from now on. This is called automatically before the page is + * loaded but if you are creating elements using createElement you need to + * make sure this is called on the element. + * @param {HTMLElement} el The canvas element to initialize. + * @return {HTMLElement} the element that was created. + */ + initElement: function(el) { + if (!el.getContext) { + el.getContext = getContext; + + // Add namespaces and stylesheet to document of the element. + addNamespacesAndStylesheet(el.ownerDocument); + + // Remove fallback content. There is no way to hide text nodes so we + // just remove all childNodes. We could hide all elements and remove + // text nodes but who really cares about the fallback content. + el.innerHTML = ''; + + // do not use inline function because that will leak memory + el.attachEvent('onpropertychange', onPropertyChange); + el.attachEvent('onresize', onResize); + + var attrs = el.attributes; + if (attrs.width && attrs.width.specified) { + // TODO: use runtimeStyle and coordsize + // el.getContext().setWidth_(attrs.width.nodeValue); + el.style.width = attrs.width.nodeValue + 'px'; + } else { + el.width = el.clientWidth; + } + if (attrs.height && attrs.height.specified) { + // TODO: use runtimeStyle and coordsize + // el.getContext().setHeight_(attrs.height.nodeValue); + el.style.height = attrs.height.nodeValue + 'px'; + } else { + el.height = el.clientHeight; + } + //el.getContext().setCoordsize_() + } + return el; + } + }; + + function onPropertyChange(e) { + var el = e.srcElement; + + switch (e.propertyName) { + case 'width': + el.getContext().clearRect(); + el.style.width = el.attributes.width.nodeValue + 'px'; + // In IE8 this does not trigger onresize. + el.firstChild.style.width = el.clientWidth + 'px'; + break; + case 'height': + el.getContext().clearRect(); + el.style.height = el.attributes.height.nodeValue + 'px'; + el.firstChild.style.height = el.clientHeight + 'px'; + break; + } + } + + function onResize(e) { + var el = e.srcElement; + if (el.firstChild) { + el.firstChild.style.width = el.clientWidth + 'px'; + el.firstChild.style.height = el.clientHeight + 'px'; + } + } + + G_vmlCanvasManager_.init(); + + // precompute "00" to "FF" + var decToHex = []; + for (var i = 0; i < 16; i++) { + for (var j = 0; j < 16; j++) { + decToHex[i * 16 + j] = i.toString(16) + j.toString(16); + } + } + + function createMatrixIdentity() { + return [ + [1, 0, 0], + [0, 1, 0], + [0, 0, 1] + ]; + } + + function matrixMultiply(m1, m2) { + var result = createMatrixIdentity(); + + for (var x = 0; x < 3; x++) { + for (var y = 0; y < 3; y++) { + var sum = 0; + + for (var z = 0; z < 3; z++) { + sum += m1[x][z] * m2[z][y]; + } + + result[x][y] = sum; + } + } + return result; + } + + function copyState(o1, o2) { + o2.fillStyle = o1.fillStyle; + o2.lineCap = o1.lineCap; + o2.lineJoin = o1.lineJoin; + o2.lineWidth = o1.lineWidth; + o2.miterLimit = o1.miterLimit; + o2.shadowBlur = o1.shadowBlur; + o2.shadowColor = o1.shadowColor; + o2.shadowOffsetX = o1.shadowOffsetX; + o2.shadowOffsetY = o1.shadowOffsetY; + o2.strokeStyle = o1.strokeStyle; + o2.globalAlpha = o1.globalAlpha; + o2.font = o1.font; + o2.textAlign = o1.textAlign; + o2.textBaseline = o1.textBaseline; + o2.arcScaleX_ = o1.arcScaleX_; + o2.arcScaleY_ = o1.arcScaleY_; + o2.lineScale_ = o1.lineScale_; + } + + var colorData = { + aliceblue: '#F0F8FF', + antiquewhite: '#FAEBD7', + aquamarine: '#7FFFD4', + azure: '#F0FFFF', + beige: '#F5F5DC', + bisque: '#FFE4C4', + black: '#000000', + blanchedalmond: '#FFEBCD', + blueviolet: '#8A2BE2', + brown: '#A52A2A', + burlywood: '#DEB887', + cadetblue: '#5F9EA0', + chartreuse: '#7FFF00', + chocolate: '#D2691E', + coral: '#FF7F50', + cornflowerblue: '#6495ED', + cornsilk: '#FFF8DC', + crimson: '#DC143C', + cyan: '#00FFFF', + darkblue: '#00008B', + darkcyan: '#008B8B', + darkgoldenrod: '#B8860B', + darkgray: '#A9A9A9', + darkgreen: '#006400', + darkgrey: '#A9A9A9', + darkkhaki: '#BDB76B', + darkmagenta: '#8B008B', + darkolivegreen: '#556B2F', + darkorange: '#FF8C00', + darkorchid: '#9932CC', + darkred: '#8B0000', + darksalmon: '#E9967A', + darkseagreen: '#8FBC8F', + darkslateblue: '#483D8B', + darkslategray: '#2F4F4F', + darkslategrey: '#2F4F4F', + darkturquoise: '#00CED1', + darkviolet: '#9400D3', + deeppink: '#FF1493', + deepskyblue: '#00BFFF', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1E90FF', + firebrick: '#B22222', + floralwhite: '#FFFAF0', + forestgreen: '#228B22', + gainsboro: '#DCDCDC', + ghostwhite: '#F8F8FF', + gold: '#FFD700', + goldenrod: '#DAA520', + grey: '#808080', + greenyellow: '#ADFF2F', + honeydew: '#F0FFF0', + hotpink: '#FF69B4', + indianred: '#CD5C5C', + indigo: '#4B0082', + ivory: '#FFFFF0', + khaki: '#F0E68C', + lavender: '#E6E6FA', + lavenderblush: '#FFF0F5', + lawngreen: '#7CFC00', + lemonchiffon: '#FFFACD', + lightblue: '#ADD8E6', + lightcoral: '#F08080', + lightcyan: '#E0FFFF', + lightgoldenrodyellow: '#FAFAD2', + lightgreen: '#90EE90', + lightgrey: '#D3D3D3', + lightpink: '#FFB6C1', + lightsalmon: '#FFA07A', + lightseagreen: '#20B2AA', + lightskyblue: '#87CEFA', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#B0C4DE', + lightyellow: '#FFFFE0', + limegreen: '#32CD32', + linen: '#FAF0E6', + magenta: '#FF00FF', + mediumaquamarine: '#66CDAA', + mediumblue: '#0000CD', + mediumorchid: '#BA55D3', + mediumpurple: '#9370DB', + mediumseagreen: '#3CB371', + mediumslateblue: '#7B68EE', + mediumspringgreen: '#00FA9A', + mediumturquoise: '#48D1CC', + mediumvioletred: '#C71585', + midnightblue: '#191970', + mintcream: '#F5FFFA', + mistyrose: '#FFE4E1', + moccasin: '#FFE4B5', + navajowhite: '#FFDEAD', + oldlace: '#FDF5E6', + olivedrab: '#6B8E23', + orange: '#FFA500', + orangered: '#FF4500', + orchid: '#DA70D6', + palegoldenrod: '#EEE8AA', + palegreen: '#98FB98', + paleturquoise: '#AFEEEE', + palevioletred: '#DB7093', + papayawhip: '#FFEFD5', + peachpuff: '#FFDAB9', + peru: '#CD853F', + pink: '#FFC0CB', + plum: '#DDA0DD', + powderblue: '#B0E0E6', + rosybrown: '#BC8F8F', + royalblue: '#4169E1', + saddlebrown: '#8B4513', + salmon: '#FA8072', + sandybrown: '#F4A460', + seagreen: '#2E8B57', + seashell: '#FFF5EE', + sienna: '#A0522D', + skyblue: '#87CEEB', + slateblue: '#6A5ACD', + slategray: '#708090', + slategrey: '#708090', + snow: '#FFFAFA', + springgreen: '#00FF7F', + steelblue: '#4682B4', + tan: '#D2B48C', + thistle: '#D8BFD8', + tomato: '#FF6347', + turquoise: '#40E0D0', + violet: '#EE82EE', + wheat: '#F5DEB3', + whitesmoke: '#F5F5F5', + yellowgreen: '#9ACD32' + }; + + + function getRgbHslContent(styleString) { + var start = styleString.indexOf('(', 3); + var end = styleString.indexOf(')', start + 1); + var parts = styleString.substring(start + 1, end).split(','); + // add alpha if needed + if (parts.length != 4 || styleString.charAt(3) != 'a') { + parts[3] = 1; + } + return parts; + } + + function percent(s) { + return parseFloat(s) / 100; + } + + function clamp(v, min, max) { + return Math.min(max, Math.max(min, v)); + } + + function hslToRgb(parts){ + var r, g, b, h, s, l; + h = parseFloat(parts[0]) / 360 % 360; + if (h < 0) + h++; + s = clamp(percent(parts[1]), 0, 1); + l = clamp(percent(parts[2]), 0, 1); + if (s == 0) { + r = g = b = l; // achromatic + } else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hueToRgb(p, q, h + 1 / 3); + g = hueToRgb(p, q, h); + b = hueToRgb(p, q, h - 1 / 3); + } + + return '#' + decToHex[Math.floor(r * 255)] + + decToHex[Math.floor(g * 255)] + + decToHex[Math.floor(b * 255)]; + } + + function hueToRgb(m1, m2, h) { + if (h < 0) + h++; + if (h > 1) + h--; + + if (6 * h < 1) + return m1 + (m2 - m1) * 6 * h; + else if (2 * h < 1) + return m2; + else if (3 * h < 2) + return m1 + (m2 - m1) * (2 / 3 - h) * 6; + else + return m1; + } + + var processStyleCache = {}; + + function processStyle(styleString) { + if (styleString in processStyleCache) { + return processStyleCache[styleString]; + } + + var str, alpha = 1; + + styleString = String(styleString); + if (styleString.charAt(0) == '#') { + str = styleString; + } else if (/^rgb/.test(styleString)) { + var parts = getRgbHslContent(styleString); + var str = '#', n; + for (var i = 0; i < 3; i++) { + if (parts[i].indexOf('%') != -1) { + n = Math.floor(percent(parts[i]) * 255); + } else { + n = +parts[i]; + } + str += decToHex[clamp(n, 0, 255)]; + } + alpha = +parts[3]; + } else if (/^hsl/.test(styleString)) { + var parts = getRgbHslContent(styleString); + str = hslToRgb(parts); + alpha = parts[3]; + } else { + str = colorData[styleString] || styleString; + } + return processStyleCache[styleString] = {color: str, alpha: alpha}; + } + + var DEFAULT_STYLE = { + style: 'normal', + variant: 'normal', + weight: 'normal', + size: 10, + family: 'sans-serif' + }; + + // Internal text style cache + var fontStyleCache = {}; + + function processFontStyle(styleString) { + if (fontStyleCache[styleString]) { + return fontStyleCache[styleString]; + } + + var el = document.createElement('div'); + var style = el.style; + try { + style.font = styleString; + } catch (ex) { + // Ignore failures to set to invalid font. + } + + return fontStyleCache[styleString] = { + style: style.fontStyle || DEFAULT_STYLE.style, + variant: style.fontVariant || DEFAULT_STYLE.variant, + weight: style.fontWeight || DEFAULT_STYLE.weight, + size: style.fontSize || DEFAULT_STYLE.size, + family: style.fontFamily || DEFAULT_STYLE.family + }; + } + + function getComputedStyle(style, element) { + var computedStyle = {}; + + for (var p in style) { + computedStyle[p] = style[p]; + } + + // Compute the size + var canvasFontSize = parseFloat(element.currentStyle.fontSize), + fontSize = parseFloat(style.size); + + if (typeof style.size == 'number') { + computedStyle.size = style.size; + } else if (style.size.indexOf('px') != -1) { + computedStyle.size = fontSize; + } else if (style.size.indexOf('em') != -1) { + computedStyle.size = canvasFontSize * fontSize; + } else if(style.size.indexOf('%') != -1) { + computedStyle.size = (canvasFontSize / 100) * fontSize; + } else if (style.size.indexOf('pt') != -1) { + computedStyle.size = fontSize / .75; + } else { + computedStyle.size = canvasFontSize; + } + + // Different scaling between normal text and VML text. This was found using + // trial and error to get the same size as non VML text. + computedStyle.size *= 0.981; + + return computedStyle; + } + + function buildStyle(style) { + return style.style + ' ' + style.variant + ' ' + style.weight + ' ' + + style.size + 'px ' + style.family; + } + + var lineCapMap = { + 'butt': 'flat', + 'round': 'round' + }; + + function processLineCap(lineCap) { + return lineCapMap[lineCap] || 'square'; + } + + /** + * This class implements CanvasRenderingContext2D interface as described by + * the WHATWG. + * @param {HTMLElement} canvasElement The element that the 2D context should + * be associated with + */ + function CanvasRenderingContext2D_(canvasElement) { + this.m_ = createMatrixIdentity(); + + this.mStack_ = []; + this.aStack_ = []; + this.currentPath_ = []; + + // Canvas context properties + this.strokeStyle = '#000'; + this.fillStyle = '#000'; + + this.lineWidth = 1; + this.lineJoin = 'miter'; + this.lineCap = 'butt'; + this.miterLimit = Z * 1; + this.globalAlpha = 1; + this.font = '10px sans-serif'; + this.textAlign = 'left'; + this.textBaseline = 'alphabetic'; + this.canvas = canvasElement; + + var cssText = 'width:' + canvasElement.clientWidth + 'px;height:' + + canvasElement.clientHeight + 'px;overflow:hidden;position:absolute'; + var el = canvasElement.ownerDocument.createElement('div'); + el.style.cssText = cssText; + canvasElement.appendChild(el); + + var overlayEl = el.cloneNode(false); + // Use a non transparent background. + overlayEl.style.backgroundColor = 'red'; + overlayEl.style.filter = 'alpha(opacity=0)'; + canvasElement.appendChild(overlayEl); + + this.element_ = el; + this.arcScaleX_ = 1; + this.arcScaleY_ = 1; + this.lineScale_ = 1; + } + + var contextPrototype = CanvasRenderingContext2D_.prototype; + contextPrototype.clearRect = function() { + if (this.textMeasureEl_) { + this.textMeasureEl_.removeNode(true); + this.textMeasureEl_ = null; + } + this.element_.innerHTML = ''; + }; + + contextPrototype.beginPath = function() { + // TODO: Branch current matrix so that save/restore has no effect + // as per safari docs. + this.currentPath_ = []; + }; + + contextPrototype.moveTo = function(aX, aY) { + var p = getCoords(this, aX, aY); + this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y}); + this.currentX_ = p.x; + this.currentY_ = p.y; + }; + + contextPrototype.lineTo = function(aX, aY) { + var p = getCoords(this, aX, aY); + this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y}); + + this.currentX_ = p.x; + this.currentY_ = p.y; + }; + + contextPrototype.bezierCurveTo = function(aCP1x, aCP1y, + aCP2x, aCP2y, + aX, aY) { + var p = getCoords(this, aX, aY); + var cp1 = getCoords(this, aCP1x, aCP1y); + var cp2 = getCoords(this, aCP2x, aCP2y); + bezierCurveTo(this, cp1, cp2, p); + }; + + // Helper function that takes the already fixed cordinates. + function bezierCurveTo(self, cp1, cp2, p) { + self.currentPath_.push({ + type: 'bezierCurveTo', + cp1x: cp1.x, + cp1y: cp1.y, + cp2x: cp2.x, + cp2y: cp2.y, + x: p.x, + y: p.y + }); + self.currentX_ = p.x; + self.currentY_ = p.y; + } + + contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) { + // the following is lifted almost directly from + // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes + + var cp = getCoords(this, aCPx, aCPy); + var p = getCoords(this, aX, aY); + + var cp1 = { + x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_), + y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_) + }; + var cp2 = { + x: cp1.x + (p.x - this.currentX_) / 3.0, + y: cp1.y + (p.y - this.currentY_) / 3.0 + }; + + bezierCurveTo(this, cp1, cp2, p); + }; + + contextPrototype.arc = function(aX, aY, aRadius, + aStartAngle, aEndAngle, aClockwise) { + aRadius *= Z; + var arcType = aClockwise ? 'at' : 'wa'; + + var xStart = aX + mc(aStartAngle) * aRadius - Z2; + var yStart = aY + ms(aStartAngle) * aRadius - Z2; + + var xEnd = aX + mc(aEndAngle) * aRadius - Z2; + var yEnd = aY + ms(aEndAngle) * aRadius - Z2; + + // IE won't render arches drawn counter clockwise if xStart == xEnd. + if (xStart == xEnd && !aClockwise) { + xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something + // that can be represented in binary + } + + var p = getCoords(this, aX, aY); + var pStart = getCoords(this, xStart, yStart); + var pEnd = getCoords(this, xEnd, yEnd); + + this.currentPath_.push({type: arcType, + x: p.x, + y: p.y, + radius: aRadius, + xStart: pStart.x, + yStart: pStart.y, + xEnd: pEnd.x, + yEnd: pEnd.y}); + + }; + + contextPrototype.rect = function(aX, aY, aWidth, aHeight) { + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + }; + + contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) { + var oldPath = this.currentPath_; + this.beginPath(); + + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + this.stroke(); + + this.currentPath_ = oldPath; + }; + + contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) { + var oldPath = this.currentPath_; + this.beginPath(); + + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + this.fill(); + + this.currentPath_ = oldPath; + }; + + contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) { + var gradient = new CanvasGradient_('gradient'); + gradient.x0_ = aX0; + gradient.y0_ = aY0; + gradient.x1_ = aX1; + gradient.y1_ = aY1; + return gradient; + }; + + contextPrototype.createRadialGradient = function(aX0, aY0, aR0, + aX1, aY1, aR1) { + var gradient = new CanvasGradient_('gradientradial'); + gradient.x0_ = aX0; + gradient.y0_ = aY0; + gradient.r0_ = aR0; + gradient.x1_ = aX1; + gradient.y1_ = aY1; + gradient.r1_ = aR1; + return gradient; + }; + + contextPrototype.drawImage = function(image, var_args) { + var dx, dy, dw, dh, sx, sy, sw, sh; + + // to find the original width we overide the width and height + var oldRuntimeWidth = image.runtimeStyle.width; + var oldRuntimeHeight = image.runtimeStyle.height; + image.runtimeStyle.width = 'auto'; + image.runtimeStyle.height = 'auto'; + + // get the original size + var w = image.width; + var h = image.height; + + // and remove overides + image.runtimeStyle.width = oldRuntimeWidth; + image.runtimeStyle.height = oldRuntimeHeight; + + if (arguments.length == 3) { + dx = arguments[1]; + dy = arguments[2]; + sx = sy = 0; + sw = dw = w; + sh = dh = h; + } else if (arguments.length == 5) { + dx = arguments[1]; + dy = arguments[2]; + dw = arguments[3]; + dh = arguments[4]; + sx = sy = 0; + sw = w; + sh = h; + } else if (arguments.length == 9) { + sx = arguments[1]; + sy = arguments[2]; + sw = arguments[3]; + sh = arguments[4]; + dx = arguments[5]; + dy = arguments[6]; + dw = arguments[7]; + dh = arguments[8]; + } else { + throw Error('Invalid number of arguments'); + } + + var d = getCoords(this, dx, dy); + + var w2 = sw / 2; + var h2 = sh / 2; + + var vmlStr = []; + + var W = 10; + var H = 10; + + // For some reason that I've now forgotten, using divs didn't work + vmlStr.push(' ' , + '', + ''); + + this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join('')); + }; + + contextPrototype.stroke = function(aFill) { + var W = 10; + var H = 10; + // Divide the shape into chunks if it's too long because IE has a limit + // somewhere for how long a VML shape can be. This simple division does + // not work with fills, only strokes, unfortunately. + var chunkSize = 5000; + + var min = {x: null, y: null}; + var max = {x: null, y: null}; + + for (var j = 0; j < this.currentPath_.length; j += chunkSize) { + var lineStr = []; + var lineOpen = false; + + lineStr.push(''); + + if (!aFill) { + appendStroke(this, lineStr); + } else { + appendFill(this, lineStr, min, max); + } + + lineStr.push(''); + + this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); + } + }; + + function appendStroke(ctx, lineStr) { + var a = processStyle(ctx.strokeStyle); + var color = a.color; + var opacity = a.alpha * ctx.globalAlpha; + var lineWidth = ctx.lineScale_ * ctx.lineWidth; + + // VML cannot correctly render a line if the width is less than 1px. + // In that case, we dilute the color to make the line look thinner. + if (lineWidth < 1) { + opacity *= lineWidth; + } + + lineStr.push( + '' + ); + } + + function appendFill(ctx, lineStr, min, max) { + var fillStyle = ctx.fillStyle; + var arcScaleX = ctx.arcScaleX_; + var arcScaleY = ctx.arcScaleY_; + var width = max.x - min.x; + var height = max.y - min.y; + if (fillStyle instanceof CanvasGradient_) { + // TODO: Gradients transformed with the transformation matrix. + var angle = 0; + var focus = {x: 0, y: 0}; + + // additional offset + var shift = 0; + // scale factor for offset + var expansion = 1; + + if (fillStyle.type_ == 'gradient') { + var x0 = fillStyle.x0_ / arcScaleX; + var y0 = fillStyle.y0_ / arcScaleY; + var x1 = fillStyle.x1_ / arcScaleX; + var y1 = fillStyle.y1_ / arcScaleY; + var p0 = getCoords(ctx, x0, y0); + var p1 = getCoords(ctx, x1, y1); + var dx = p1.x - p0.x; + var dy = p1.y - p0.y; + angle = Math.atan2(dx, dy) * 180 / Math.PI; + + // The angle should be a non-negative number. + if (angle < 0) { + angle += 360; + } + + // Very small angles produce an unexpected result because they are + // converted to a scientific notation string. + if (angle < 1e-6) { + angle = 0; + } + } else { + var p0 = getCoords(ctx, fillStyle.x0_, fillStyle.y0_); + focus = { + x: (p0.x - min.x) / width, + y: (p0.y - min.y) / height + }; + + width /= arcScaleX * Z; + height /= arcScaleY * Z; + var dimension = m.max(width, height); + shift = 2 * fillStyle.r0_ / dimension; + expansion = 2 * fillStyle.r1_ / dimension - shift; + } + + // We need to sort the color stops in ascending order by offset, + // otherwise IE won't interpret it correctly. + var stops = fillStyle.colors_; + stops.sort(function(cs1, cs2) { + return cs1.offset - cs2.offset; + }); + + var length = stops.length; + var color1 = stops[0].color; + var color2 = stops[length - 1].color; + var opacity1 = stops[0].alpha * ctx.globalAlpha; + var opacity2 = stops[length - 1].alpha * ctx.globalAlpha; + + var colors = []; + for (var i = 0; i < length; i++) { + var stop = stops[i]; + colors.push(stop.offset * expansion + shift + ' ' + stop.color); + } + + // When colors attribute is used, the meanings of opacity and o:opacity2 + // are reversed. + lineStr.push(''); + } else if (fillStyle instanceof CanvasPattern_) { + if (width && height) { + var deltaLeft = -min.x; + var deltaTop = -min.y; + lineStr.push(''); + } + } else { + var a = processStyle(ctx.fillStyle); + var color = a.color; + var opacity = a.alpha * ctx.globalAlpha; + lineStr.push(''); + } + } + + contextPrototype.fill = function() { + this.stroke(true); + }; + + contextPrototype.closePath = function() { + this.currentPath_.push({type: 'close'}); + }; + + function getCoords(ctx, aX, aY) { + var m = ctx.m_; + return { + x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2, + y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2 + }; + }; + + contextPrototype.save = function() { + var o = {}; + copyState(this, o); + this.aStack_.push(o); + this.mStack_.push(this.m_); + this.m_ = matrixMultiply(createMatrixIdentity(), this.m_); + }; + + contextPrototype.restore = function() { + if (this.aStack_.length) { + copyState(this.aStack_.pop(), this); + this.m_ = this.mStack_.pop(); + } + }; + + function matrixIsFinite(m) { + return isFinite(m[0][0]) && isFinite(m[0][1]) && + isFinite(m[1][0]) && isFinite(m[1][1]) && + isFinite(m[2][0]) && isFinite(m[2][1]); + } + + function setM(ctx, m, updateLineScale) { + if (!matrixIsFinite(m)) { + return; + } + ctx.m_ = m; + + if (updateLineScale) { + // Get the line scale. + // Determinant of this.m_ means how much the area is enlarged by the + // transformation. So its square root can be used as a scale factor + // for width. + var det = m[0][0] * m[1][1] - m[0][1] * m[1][0]; + ctx.lineScale_ = sqrt(abs(det)); + } + } + + contextPrototype.translate = function(aX, aY) { + var m1 = [ + [1, 0, 0], + [0, 1, 0], + [aX, aY, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), false); + }; + + contextPrototype.rotate = function(aRot) { + var c = mc(aRot); + var s = ms(aRot); + + var m1 = [ + [c, s, 0], + [-s, c, 0], + [0, 0, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), false); + }; + + contextPrototype.scale = function(aX, aY) { + this.arcScaleX_ *= aX; + this.arcScaleY_ *= aY; + var m1 = [ + [aX, 0, 0], + [0, aY, 0], + [0, 0, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), true); + }; + + contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) { + var m1 = [ + [m11, m12, 0], + [m21, m22, 0], + [dx, dy, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), true); + }; + + contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) { + var m = [ + [m11, m12, 0], + [m21, m22, 0], + [dx, dy, 1] + ]; + + setM(this, m, true); + }; + + /** + * The text drawing function. + * The maxWidth argument isn't taken in account, since no browser supports + * it yet. + */ + contextPrototype.drawText_ = function(text, x, y, maxWidth, stroke) { + var m = this.m_, + delta = 1000, + left = 0, + right = delta, + offset = {x: 0, y: 0}, + lineStr = []; + + var fontStyle = getComputedStyle(processFontStyle(this.font), + this.element_); + + var fontStyleString = buildStyle(fontStyle); + + var elementStyle = this.element_.currentStyle; + var textAlign = this.textAlign.toLowerCase(); + switch (textAlign) { + case 'left': + case 'center': + case 'right': + break; + case 'end': + textAlign = elementStyle.direction == 'ltr' ? 'right' : 'left'; + break; + case 'start': + textAlign = elementStyle.direction == 'rtl' ? 'right' : 'left'; + break; + default: + textAlign = 'left'; + } + + // 1.75 is an arbitrary number, as there is no info about the text baseline + switch (this.textBaseline) { + case 'hanging': + case 'top': + offset.y = fontStyle.size / 1.75; + break; + case 'middle': + break; + default: + case null: + case 'alphabetic': + case 'ideographic': + case 'bottom': + offset.y = -fontStyle.size / 2.25; + break; + } + + switch(textAlign) { + case 'right': + left = delta; + right = 0.05; + break; + case 'center': + left = right = delta / 2; + break; + } + + var d = getCoords(this, x + offset.x, y + offset.y); + + lineStr.push(''); + + if (stroke) { + appendStroke(this, lineStr); + } else { + // TODO: Fix the min and max params. + appendFill(this, lineStr, {x: -left, y: 0}, + {x: right, y: fontStyle.size}); + } + + var skewM = m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' + + m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0'; + + var skewOffset = mr(d.x / Z) + ',' + mr(d.y / Z); + + lineStr.push('', + '', + ''); + + this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); + }; + + contextPrototype.fillText = function(text, x, y, maxWidth) { + this.drawText_(text, x, y, maxWidth, false); + }; + + contextPrototype.strokeText = function(text, x, y, maxWidth) { + this.drawText_(text, x, y, maxWidth, true); + }; + + contextPrototype.measureText = function(text) { + if (!this.textMeasureEl_) { + var s = ''; + this.element_.insertAdjacentHTML('beforeEnd', s); + this.textMeasureEl_ = this.element_.lastChild; + } + var doc = this.element_.ownerDocument; + this.textMeasureEl_.innerHTML = ''; + this.textMeasureEl_.style.font = this.font; + // Don't use innerHTML or innerText because they allow markup/whitespace. + this.textMeasureEl_.appendChild(doc.createTextNode(text)); + return {width: this.textMeasureEl_.offsetWidth}; + }; + + /******** STUBS ********/ + contextPrototype.clip = function() { + // TODO: Implement + }; + + contextPrototype.arcTo = function() { + // TODO: Implement + }; + + contextPrototype.createPattern = function(image, repetition) { + return new CanvasPattern_(image, repetition); + }; + + // Gradient / Pattern Stubs + function CanvasGradient_(aType) { + this.type_ = aType; + this.x0_ = 0; + this.y0_ = 0; + this.r0_ = 0; + this.x1_ = 0; + this.y1_ = 0; + this.r1_ = 0; + this.colors_ = []; + } + + CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) { + aColor = processStyle(aColor); + this.colors_.push({offset: aOffset, + color: aColor.color, + alpha: aColor.alpha}); + }; + + function CanvasPattern_(image, repetition) { + assertImageIsValid(image); + switch (repetition) { + case 'repeat': + case null: + case '': + this.repetition_ = 'repeat'; + break + case 'repeat-x': + case 'repeat-y': + case 'no-repeat': + this.repetition_ = repetition; + break; + default: + throwException('SYNTAX_ERR'); + } + + this.src_ = image.src; + this.width_ = image.width; + this.height_ = image.height; + } + + function throwException(s) { + throw new DOMException_(s); + } + + function assertImageIsValid(img) { + if (!img || img.nodeType != 1 || img.tagName != 'IMG') { + throwException('TYPE_MISMATCH_ERR'); + } + if (img.readyState != 'complete') { + throwException('INVALID_STATE_ERR'); + } + } + + function DOMException_(s) { + this.code = this[s]; + this.message = s +': DOM Exception ' + this.code; + } + var p = DOMException_.prototype = new Error; + p.INDEX_SIZE_ERR = 1; + p.DOMSTRING_SIZE_ERR = 2; + p.HIERARCHY_REQUEST_ERR = 3; + p.WRONG_DOCUMENT_ERR = 4; + p.INVALID_CHARACTER_ERR = 5; + p.NO_DATA_ALLOWED_ERR = 6; + p.NO_MODIFICATION_ALLOWED_ERR = 7; + p.NOT_FOUND_ERR = 8; + p.NOT_SUPPORTED_ERR = 9; + p.INUSE_ATTRIBUTE_ERR = 10; + p.INVALID_STATE_ERR = 11; + p.SYNTAX_ERR = 12; + p.INVALID_MODIFICATION_ERR = 13; + p.NAMESPACE_ERR = 14; + p.INVALID_ACCESS_ERR = 15; + p.VALIDATION_ERR = 16; + p.TYPE_MISMATCH_ERR = 17; + + // set up externs + G_vmlCanvasManager = G_vmlCanvasManager_; + CanvasRenderingContext2D = CanvasRenderingContext2D_; + CanvasGradient = CanvasGradient_; + CanvasPattern = CanvasPattern_; + DOMException = DOMException_; +})(); + +} // if diff --git a/public/assets/js/plugins/flot/excanvas.min.js b/public/assets/js/plugins/flot/excanvas.min.js new file mode 100755 index 00000000..fcf876c7 --- /dev/null +++ b/public/assets/js/plugins/flot/excanvas.min.js @@ -0,0 +1 @@ +if(!document.createElement("canvas").getContext){(function(){var ab=Math;var n=ab.round;var l=ab.sin;var A=ab.cos;var H=ab.abs;var N=ab.sqrt;var d=10;var f=d/2;var z=+navigator.userAgent.match(/MSIE ([\d.]+)?/)[1];function y(){return this.context_||(this.context_=new D(this))}var t=Array.prototype.slice;function g(j,m,p){var i=t.call(arguments,2);return function(){return j.apply(m,i.concat(t.call(arguments)))}}function af(i){return String(i).replace(/&/g,"&").replace(/"/g,""")}function Y(m,j,i){if(!m.namespaces[j]){m.namespaces.add(j,i,"#default#VML")}}function R(j){Y(j,"g_vml_","urn:schemas-microsoft-com:vml");Y(j,"g_o_","urn:schemas-microsoft-com:office:office");if(!j.styleSheets.ex_canvas_){var i=j.createStyleSheet();i.owningElement.id="ex_canvas_";i.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}R(document);var e={init:function(i){var j=i||document;j.createElement("canvas");j.attachEvent("onreadystatechange",g(this.init_,this,j))},init_:function(p){var m=p.getElementsByTagName("canvas");for(var j=0;j1){m--}if(6*m<1){return j+(i-j)*6*m}else{if(2*m<1){return i}else{if(3*m<2){return j+(i-j)*(2/3-m)*6}else{return j}}}}var C={};function F(j){if(j in C){return C[j]}var ag,Z=1;j=String(j);if(j.charAt(0)=="#"){ag=j}else{if(/^rgb/.test(j)){var p=M(j);var ag="#",ah;for(var m=0;m<3;m++){if(p[m].indexOf("%")!=-1){ah=Math.floor(c(p[m])*255)}else{ah=+p[m]}ag+=k[r(ah,0,255)]}Z=+p[3]}else{if(/^hsl/.test(j)){var p=M(j);ag=I(p);Z=p[3]}else{ag=b[j]||j}}}return C[j]={color:ag,alpha:Z}}var o={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var L={};function E(i){if(L[i]){return L[i]}var p=document.createElement("div");var m=p.style;try{m.font=i}catch(j){}return L[i]={style:m.fontStyle||o.style,variant:m.fontVariant||o.variant,weight:m.fontWeight||o.weight,size:m.fontSize||o.size,family:m.fontFamily||o.family}}function u(m,j){var i={};for(var ah in m){i[ah]=m[ah]}var ag=parseFloat(j.currentStyle.fontSize),Z=parseFloat(m.size);if(typeof m.size=="number"){i.size=m.size}else{if(m.size.indexOf("px")!=-1){i.size=Z}else{if(m.size.indexOf("em")!=-1){i.size=ag*Z}else{if(m.size.indexOf("%")!=-1){i.size=(ag/100)*Z}else{if(m.size.indexOf("pt")!=-1){i.size=Z/0.75}else{i.size=ag}}}}}i.size*=0.981;return i}function ac(i){return i.style+" "+i.variant+" "+i.weight+" "+i.size+"px "+i.family}var s={butt:"flat",round:"round"};function S(i){return s[i]||"square"}function D(i){this.m_=B();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=d*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var m="width:"+i.clientWidth+"px;height:"+i.clientHeight+"px;overflow:hidden;position:absolute";var j=i.ownerDocument.createElement("div");j.style.cssText=m;i.appendChild(j);var p=j.cloneNode(false);p.style.backgroundColor="red";p.style.filter="alpha(opacity=0)";i.appendChild(p);this.element_=j;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var q=D.prototype;q.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};q.beginPath=function(){this.currentPath_=[]};q.moveTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"moveTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.lineTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"lineTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.bezierCurveTo=function(m,j,ak,aj,ai,ag){var i=V(this,ai,ag);var ah=V(this,m,j);var Z=V(this,ak,aj);K(this,ah,Z,i)};function K(i,Z,m,j){i.currentPath_.push({type:"bezierCurveTo",cp1x:Z.x,cp1y:Z.y,cp2x:m.x,cp2y:m.y,x:j.x,y:j.y});i.currentX_=j.x;i.currentY_=j.y}q.quadraticCurveTo=function(ai,m,j,i){var ah=V(this,ai,m);var ag=V(this,j,i);var aj={x:this.currentX_+2/3*(ah.x-this.currentX_),y:this.currentY_+2/3*(ah.y-this.currentY_)};var Z={x:aj.x+(ag.x-this.currentX_)/3,y:aj.y+(ag.y-this.currentY_)/3};K(this,aj,Z,ag)};q.arc=function(al,aj,ak,ag,j,m){ak*=d;var ap=m?"at":"wa";var am=al+A(ag)*ak-f;var ao=aj+l(ag)*ak-f;var i=al+A(j)*ak-f;var an=aj+l(j)*ak-f;if(am==i&&!m){am+=0.125}var Z=V(this,al,aj);var ai=V(this,am,ao);var ah=V(this,i,an);this.currentPath_.push({type:ap,x:Z.x,y:Z.y,radius:ak,xStart:ai.x,yStart:ai.y,xEnd:ah.x,yEnd:ah.y})};q.rect=function(m,j,i,p){this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath()};q.strokeRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.stroke();this.currentPath_=Z};q.fillRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.fill();this.currentPath_=Z};q.createLinearGradient=function(j,p,i,m){var Z=new U("gradient");Z.x0_=j;Z.y0_=p;Z.x1_=i;Z.y1_=m;return Z};q.createRadialGradient=function(p,ag,m,j,Z,i){var ah=new U("gradientradial");ah.x0_=p;ah.y0_=ag;ah.r0_=m;ah.x1_=j;ah.y1_=Z;ah.r1_=i;return ah};q.drawImage=function(aq,m){var aj,ah,al,ay,ao,am,at,aA;var ak=aq.runtimeStyle.width;var ap=aq.runtimeStyle.height;aq.runtimeStyle.width="auto";aq.runtimeStyle.height="auto";var ai=aq.width;var aw=aq.height;aq.runtimeStyle.width=ak;aq.runtimeStyle.height=ap;if(arguments.length==3){aj=arguments[1];ah=arguments[2];ao=am=0;at=al=ai;aA=ay=aw}else{if(arguments.length==5){aj=arguments[1];ah=arguments[2];al=arguments[3];ay=arguments[4];ao=am=0;at=ai;aA=aw}else{if(arguments.length==9){ao=arguments[1];am=arguments[2];at=arguments[3];aA=arguments[4];aj=arguments[5];ah=arguments[6];al=arguments[7];ay=arguments[8]}else{throw Error("Invalid number of arguments")}}}var az=V(this,aj,ah);var p=at/2;var j=aA/2;var ax=[];var i=10;var ag=10;ax.push(" ','","");this.element_.insertAdjacentHTML("BeforeEnd",ax.join(""))};q.stroke=function(ao){var Z=10;var ap=10;var ag=5000;var ai={x:null,y:null};var an={x:null,y:null};for(var aj=0;ajan.x){an.x=m.x}if(ai.y==null||m.yan.y){an.y=m.y}}}am.push(' ">');if(!ao){w(this,am)}else{G(this,am,ai,an)}am.push("");this.element_.insertAdjacentHTML("beforeEnd",am.join(""))}};function w(m,ag){var j=F(m.strokeStyle);var p=j.color;var Z=j.alpha*m.globalAlpha;var i=m.lineScale_*m.lineWidth;if(i<1){Z*=i}ag.push("')}function G(aq,ai,aK,ar){var aj=aq.fillStyle;var aB=aq.arcScaleX_;var aA=aq.arcScaleY_;var j=ar.x-aK.x;var p=ar.y-aK.y;if(aj instanceof U){var an=0;var aF={x:0,y:0};var ax=0;var am=1;if(aj.type_=="gradient"){var al=aj.x0_/aB;var m=aj.y0_/aA;var ak=aj.x1_/aB;var aM=aj.y1_/aA;var aJ=V(aq,al,m);var aI=V(aq,ak,aM);var ag=aI.x-aJ.x;var Z=aI.y-aJ.y;an=Math.atan2(ag,Z)*180/Math.PI;if(an<0){an+=360}if(an<0.000001){an=0}}else{var aJ=V(aq,aj.x0_,aj.y0_);aF={x:(aJ.x-aK.x)/j,y:(aJ.y-aK.y)/p};j/=aB*d;p/=aA*d;var aD=ab.max(j,p);ax=2*aj.r0_/aD;am=2*aj.r1_/aD-ax}var av=aj.colors_;av.sort(function(aN,i){return aN.offset-i.offset});var ap=av.length;var au=av[0].color;var at=av[ap-1].color;var az=av[0].alpha*aq.globalAlpha;var ay=av[ap-1].alpha*aq.globalAlpha;var aE=[];for(var aH=0;aH')}else{if(aj instanceof T){if(j&&p){var ah=-aK.x;var aC=-aK.y;ai.push("')}}else{var aL=F(aq.fillStyle);var aw=aL.color;var aG=aL.alpha*aq.globalAlpha;ai.push('')}}}q.fill=function(){this.stroke(true)};q.closePath=function(){this.currentPath_.push({type:"close"})};function V(j,Z,p){var i=j.m_;return{x:d*(Z*i[0][0]+p*i[1][0]+i[2][0])-f,y:d*(Z*i[0][1]+p*i[1][1]+i[2][1])-f}}q.save=function(){var i={};v(this,i);this.aStack_.push(i);this.mStack_.push(this.m_);this.m_=J(B(),this.m_)};q.restore=function(){if(this.aStack_.length){v(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function h(i){return isFinite(i[0][0])&&isFinite(i[0][1])&&isFinite(i[1][0])&&isFinite(i[1][1])&&isFinite(i[2][0])&&isFinite(i[2][1])}function aa(j,i,p){if(!h(i)){return}j.m_=i;if(p){var Z=i[0][0]*i[1][1]-i[0][1]*i[1][0];j.lineScale_=N(H(Z))}}q.translate=function(m,j){var i=[[1,0,0],[0,1,0],[m,j,1]];aa(this,J(i,this.m_),false)};q.rotate=function(j){var p=A(j);var m=l(j);var i=[[p,m,0],[-m,p,0],[0,0,1]];aa(this,J(i,this.m_),false)};q.scale=function(m,j){this.arcScaleX_*=m;this.arcScaleY_*=j;var i=[[m,0,0],[0,j,0],[0,0,1]];aa(this,J(i,this.m_),true)};q.transform=function(Z,p,ah,ag,j,i){var m=[[Z,p,0],[ah,ag,0],[j,i,1]];aa(this,J(m,this.m_),true)};q.setTransform=function(ag,Z,ai,ah,p,j){var i=[[ag,Z,0],[ai,ah,0],[p,j,1]];aa(this,i,true)};q.drawText_=function(am,ak,aj,ap,ai){var ao=this.m_,at=1000,j=0,ar=at,ah={x:0,y:0},ag=[];var i=u(E(this.font),this.element_);var p=ac(i);var au=this.element_.currentStyle;var Z=this.textAlign.toLowerCase();switch(Z){case"left":case"center":case"right":break;case"end":Z=au.direction=="ltr"?"right":"left";break;case"start":Z=au.direction=="rtl"?"right":"left";break;default:Z="left"}switch(this.textBaseline){case"hanging":case"top":ah.y=i.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":ah.y=-i.size/2.25;break}switch(Z){case"right":j=at;ar=0.05;break;case"center":j=ar=at/2;break}var aq=V(this,ak+ah.x,aj+ah.y);ag.push('');if(ai){w(this,ag)}else{G(this,ag,{x:-j,y:0},{x:ar,y:i.size})}var an=ao[0][0].toFixed(3)+","+ao[1][0].toFixed(3)+","+ao[0][1].toFixed(3)+","+ao[1][1].toFixed(3)+",0,0";var al=n(aq.x/d)+","+n(aq.y/d);ag.push('','','');this.element_.insertAdjacentHTML("beforeEnd",ag.join(""))};q.fillText=function(m,i,p,j){this.drawText_(m,i,p,j,false)};q.strokeText=function(m,i,p,j){this.drawText_(m,i,p,j,true)};q.measureText=function(m){if(!this.textMeasureEl_){var i='';this.element_.insertAdjacentHTML("beforeEnd",i);this.textMeasureEl_=this.element_.lastChild}var j=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(j.createTextNode(m));return{width:this.textMeasureEl_.offsetWidth}};q.clip=function(){};q.arcTo=function(){};q.createPattern=function(j,i){return new T(j,i)};function U(i){this.type_=i;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}U.prototype.addColorStop=function(j,i){i=F(i);this.colors_.push({offset:j,color:i.color,alpha:i.alpha})};function T(j,i){Q(j);switch(i){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=i;break;default:O("SYNTAX_ERR")}this.src_=j.src;this.width_=j.width;this.height_=j.height}function O(i){throw new P(i)}function Q(i){if(!i||i.nodeType!=1||i.tagName!="IMG"){O("TYPE_MISMATCH_ERR")}if(i.readyState!="complete"){O("INVALID_STATE_ERR")}}function P(i){this.code=this[i];this.message=i+": DOM Exception "+this.code}var X=P.prototype=new Error;X.INDEX_SIZE_ERR=1;X.DOMSTRING_SIZE_ERR=2;X.HIERARCHY_REQUEST_ERR=3;X.WRONG_DOCUMENT_ERR=4;X.INVALID_CHARACTER_ERR=5;X.NO_DATA_ALLOWED_ERR=6;X.NO_MODIFICATION_ALLOWED_ERR=7;X.NOT_FOUND_ERR=8;X.NOT_SUPPORTED_ERR=9;X.INUSE_ATTRIBUTE_ERR=10;X.INVALID_STATE_ERR=11;X.SYNTAX_ERR=12;X.INVALID_MODIFICATION_ERR=13;X.NAMESPACE_ERR=14;X.INVALID_ACCESS_ERR=15;X.VALIDATION_ERR=16;X.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=e;CanvasRenderingContext2D=D;CanvasGradient=U;CanvasPattern=T;DOMException=P})()}; \ No newline at end of file diff --git a/public/assets/js/plugins/flot/jquery.colorhelpers.js b/public/assets/js/plugins/flot/jquery.colorhelpers.js new file mode 100755 index 00000000..b2f6dc4e --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.colorhelpers.js @@ -0,0 +1,180 @@ +/* Plugin for jQuery for working with colors. + * + * Version 1.1. + * + * Inspiration from jQuery color animation plugin by John Resig. + * + * Released under the MIT license by Ole Laursen, October 2009. + * + * Examples: + * + * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() + * var c = $.color.extract($("#mydiv"), 'background-color'); + * console.log(c.r, c.g, c.b, c.a); + * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" + * + * Note that .scale() and .add() return the same modified object + * instead of making a new one. + * + * V. 1.1: Fix error handling so e.g. parsing an empty string does + * produce a color rather than just crashing. + */ + +(function($) { + $.color = {}; + + // construct color object with some convenient chainable helpers + $.color.make = function (r, g, b, a) { + var o = {}; + o.r = r || 0; + o.g = g || 0; + o.b = b || 0; + o.a = a != null ? a : 1; + + o.add = function (c, d) { + for (var i = 0; i < c.length; ++i) + o[c.charAt(i)] += d; + return o.normalize(); + }; + + o.scale = function (c, f) { + for (var i = 0; i < c.length; ++i) + o[c.charAt(i)] *= f; + return o.normalize(); + }; + + o.toString = function () { + if (o.a >= 1.0) { + return "rgb("+[o.r, o.g, o.b].join(",")+")"; + } else { + return "rgba("+[o.r, o.g, o.b, o.a].join(",")+")"; + } + }; + + o.normalize = function () { + function clamp(min, value, max) { + return value < min ? min: (value > max ? max: value); + } + + o.r = clamp(0, parseInt(o.r), 255); + o.g = clamp(0, parseInt(o.g), 255); + o.b = clamp(0, parseInt(o.b), 255); + o.a = clamp(0, o.a, 1); + return o; + }; + + o.clone = function () { + return $.color.make(o.r, o.b, o.g, o.a); + }; + + return o.normalize(); + } + + // extract CSS color property from element, going up in the DOM + // if it's "transparent" + $.color.extract = function (elem, css) { + var c; + + do { + c = elem.css(css).toLowerCase(); + // keep going until we find an element that has color, or + // we hit the body or root (have no parent) + if (c != '' && c != 'transparent') + break; + elem = elem.parent(); + } while (elem.length && !$.nodeName(elem.get(0), "body")); + + // catch Safari's way of signalling transparent + if (c == "rgba(0, 0, 0, 0)") + c = "transparent"; + + return $.color.parse(c); + } + + // parse CSS color string (like "rgb(10, 32, 43)" or "#fff"), + // returns color object, if parsing failed, you get black (0, 0, + // 0) out + $.color.parse = function (str) { + var res, m = $.color.make; + + // Look for rgb(num,num,num) + if (res = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str)) + return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10)); + + // Look for rgba(num,num,num,num) + if (res = /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) + return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10), parseFloat(res[4])); + + // Look for rgb(num%,num%,num%) + if (res = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str)) + return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55); + + // Look for rgba(num%,num%,num%,num) + if (res = /rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) + return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55, parseFloat(res[4])); + + // Look for #a0b1c2 + if (res = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str)) + return m(parseInt(res[1], 16), parseInt(res[2], 16), parseInt(res[3], 16)); + + // Look for #fff + if (res = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str)) + return m(parseInt(res[1]+res[1], 16), parseInt(res[2]+res[2], 16), parseInt(res[3]+res[3], 16)); + + // Otherwise, we're most likely dealing with a named color + var name = $.trim(str).toLowerCase(); + if (name == "transparent") + return m(255, 255, 255, 0); + else { + // default to black + res = lookupColors[name] || [0, 0, 0]; + return m(res[0], res[1], res[2]); + } + } + + var lookupColors = { + aqua:[0,255,255], + azure:[240,255,255], + beige:[245,245,220], + black:[0,0,0], + blue:[0,0,255], + brown:[165,42,42], + cyan:[0,255,255], + darkblue:[0,0,139], + darkcyan:[0,139,139], + darkgrey:[169,169,169], + darkgreen:[0,100,0], + darkkhaki:[189,183,107], + darkmagenta:[139,0,139], + darkolivegreen:[85,107,47], + darkorange:[255,140,0], + darkorchid:[153,50,204], + darkred:[139,0,0], + darksalmon:[233,150,122], + darkviolet:[148,0,211], + fuchsia:[255,0,255], + gold:[255,215,0], + green:[0,128,0], + indigo:[75,0,130], + khaki:[240,230,140], + lightblue:[173,216,230], + lightcyan:[224,255,255], + lightgreen:[144,238,144], + lightgrey:[211,211,211], + lightpink:[255,182,193], + lightyellow:[255,255,224], + lime:[0,255,0], + magenta:[255,0,255], + maroon:[128,0,0], + navy:[0,0,128], + olive:[128,128,0], + orange:[255,165,0], + pink:[255,192,203], + purple:[128,0,128], + violet:[128,0,128], + red:[255,0,0], + silver:[192,192,192], + white:[255,255,255], + yellow:[255,255,0] + }; +})(jQuery); diff --git a/public/assets/js/plugins/flot/jquery.colorhelpers.min.js b/public/assets/js/plugins/flot/jquery.colorhelpers.min.js new file mode 100755 index 00000000..7f426596 --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.colorhelpers.min.js @@ -0,0 +1 @@ +(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); \ No newline at end of file diff --git a/public/assets/js/plugins/flot/jquery.flot.canvas.js b/public/assets/js/plugins/flot/jquery.flot.canvas.js new file mode 100755 index 00000000..d94b9611 --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.canvas.js @@ -0,0 +1,345 @@ +/* Flot plugin for drawing all elements of a plot on the canvas. + +Copyright (c) 2007-2013 IOLA and Ole Laursen. +Licensed under the MIT license. + +Flot normally produces certain elements, like axis labels and the legend, using +HTML elements. This permits greater interactivity and customization, and often +looks better, due to cross-browser canvas text inconsistencies and limitations. + +It can also be desirable to render the plot entirely in canvas, particularly +if the goal is to save it as an image, or if Flot is being used in a context +where the HTML DOM does not exist, as is the case within Node.js. This plugin +switches out Flot's standard drawing operations for canvas-only replacements. + +Currently the plugin supports only axis labels, but it will eventually allow +every element of the plot to be rendered directly to canvas. + +The plugin supports these options: + +{ + canvas: boolean +} + +The "canvas" option controls whether full canvas drawing is enabled, making it +possible to toggle on and off. This is useful when a plot uses HTML text in the +browser, but needs to redraw with canvas text when exporting as an image. + +*/ + +(function($) { + + var options = { + canvas: true + }; + + var render, getTextInfo, addText; + + // Cache the prototype hasOwnProperty for faster access + + var hasOwnProperty = Object.prototype.hasOwnProperty; + + function init(plot, classes) { + + var Canvas = classes.Canvas; + + // We only want to replace the functions once; the second time around + // we would just get our new function back. This whole replacing of + // prototype functions is a disaster, and needs to be changed ASAP. + + if (render == null) { + getTextInfo = Canvas.prototype.getTextInfo, + addText = Canvas.prototype.addText, + render = Canvas.prototype.render; + } + + // Finishes rendering the canvas, including overlaid text + + Canvas.prototype.render = function() { + + if (!plot.getOptions().canvas) { + return render.call(this); + } + + var context = this.context, + cache = this._textCache; + + // For each text layer, render elements marked as active + + context.save(); + context.textBaseline = "middle"; + + for (var layerKey in cache) { + if (hasOwnProperty.call(cache, layerKey)) { + var layerCache = cache[layerKey]; + for (var styleKey in layerCache) { + if (hasOwnProperty.call(layerCache, styleKey)) { + var styleCache = layerCache[styleKey], + updateStyles = true; + for (var key in styleCache) { + if (hasOwnProperty.call(styleCache, key)) { + + var info = styleCache[key], + positions = info.positions, + lines = info.lines; + + // Since every element at this level of the cache have the + // same font and fill styles, we can just change them once + // using the values from the first element. + + if (updateStyles) { + context.fillStyle = info.font.color; + context.font = info.font.definition; + updateStyles = false; + } + + for (var i = 0, position; position = positions[i]; i++) { + if (position.active) { + for (var j = 0, line; line = position.lines[j]; j++) { + context.fillText(lines[j].text, line[0], line[1]); + } + } else { + positions.splice(i--, 1); + } + } + + if (positions.length == 0) { + delete styleCache[key]; + } + } + } + } + } + } + } + + context.restore(); + }; + + // Creates (if necessary) and returns a text info object. + // + // When the canvas option is set, the object looks like this: + // + // { + // width: Width of the text's bounding box. + // height: Height of the text's bounding box. + // positions: Array of positions at which this text is drawn. + // lines: [{ + // height: Height of this line. + // widths: Width of this line. + // text: Text on this line. + // }], + // font: { + // definition: Canvas font property string. + // color: Color of the text. + // }, + // } + // + // The positions array contains objects that look like this: + // + // { + // active: Flag indicating whether the text should be visible. + // lines: Array of [x, y] coordinates at which to draw the line. + // x: X coordinate at which to draw the text. + // y: Y coordinate at which to draw the text. + // } + + Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { + + if (!plot.getOptions().canvas) { + return getTextInfo.call(this, layer, text, font, angle, width); + } + + var textStyle, layerCache, styleCache, info; + + // Cast the value to a string, in case we were given a number + + text = "" + text; + + // If the font is a font-spec object, generate a CSS definition + + if (typeof font === "object") { + textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family; + } else { + textStyle = font; + } + + // Retrieve (or create) the cache for the text's layer and styles + + layerCache = this._textCache[layer]; + + if (layerCache == null) { + layerCache = this._textCache[layer] = {}; + } + + styleCache = layerCache[textStyle]; + + if (styleCache == null) { + styleCache = layerCache[textStyle] = {}; + } + + info = styleCache[text]; + + if (info == null) { + + var context = this.context; + + // If the font was provided as CSS, create a div with those + // classes and examine it to generate a canvas font spec. + + if (typeof font !== "object") { + + var element = $("
       
      ") + .css("position", "absolute") + .addClass(typeof font === "string" ? font : null) + .appendTo(this.getTextLayer(layer)); + + font = { + lineHeight: element.height(), + style: element.css("font-style"), + variant: element.css("font-variant"), + weight: element.css("font-weight"), + family: element.css("font-family"), + color: element.css("color") + }; + + // Setting line-height to 1, without units, sets it equal + // to the font-size, even if the font-size is abstract, + // like 'smaller'. This enables us to read the real size + // via the element's height, working around browsers that + // return the literal 'smaller' value. + + font.size = element.css("line-height", 1).height(); + + element.remove(); + } + + textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family; + + // Create a new info object, initializing the dimensions to + // zero so we can count them up line-by-line. + + info = styleCache[text] = { + width: 0, + height: 0, + positions: [], + lines: [], + font: { + definition: textStyle, + color: font.color + } + }; + + context.save(); + context.font = textStyle; + + // Canvas can't handle multi-line strings; break on various + // newlines, including HTML brs, to build a list of lines. + // Note that we could split directly on regexps, but IE < 9 is + // broken; revisit when we drop IE 7/8 support. + + var lines = (text + "").replace(/
      |\r\n|\r/g, "\n").split("\n"); + + for (var i = 0; i < lines.length; ++i) { + + var lineText = lines[i], + measured = context.measureText(lineText); + + info.width = Math.max(measured.width, info.width); + info.height += font.lineHeight; + + info.lines.push({ + text: lineText, + width: measured.width, + height: font.lineHeight + }); + } + + context.restore(); + } + + return info; + }; + + // Adds a text string to the canvas text overlay. + + Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { + + if (!plot.getOptions().canvas) { + return addText.call(this, layer, x, y, text, font, angle, width, halign, valign); + } + + var info = this.getTextInfo(layer, text, font, angle, width), + positions = info.positions, + lines = info.lines; + + // Text is drawn with baseline 'middle', which we need to account + // for by adding half a line's height to the y position. + + y += info.height / lines.length / 2; + + // Tweak the initial y-position to match vertical alignment + + if (valign == "middle") { + y = Math.round(y - info.height / 2); + } else if (valign == "bottom") { + y = Math.round(y - info.height); + } else { + y = Math.round(y); + } + + // FIXME: LEGACY BROWSER FIX + // AFFECTS: Opera < 12.00 + + // Offset the y coordinate, since Opera is off pretty + // consistently compared to the other browsers. + + if (!!(window.opera && window.opera.version().split(".")[0] < 12)) { + y -= 2; + } + + // Determine whether this text already exists at this position. + // If so, mark it for inclusion in the next render pass. + + for (var i = 0, position; position = positions[i]; i++) { + if (position.x == x && position.y == y) { + position.active = true; + return; + } + } + + // If the text doesn't exist at this position, create a new entry + + position = { + active: true, + lines: [], + x: x, + y: y + }; + + positions.push(position); + + // Fill in the x & y positions of each line, adjusting them + // individually for horizontal alignment. + + for (var i = 0, line; line = lines[i]; i++) { + if (halign == "center") { + position.lines.push([Math.round(x - line.width / 2), y]); + } else if (halign == "right") { + position.lines.push([Math.round(x - line.width), y]); + } else { + position.lines.push([Math.round(x), y]); + } + y += line.height; + } + }; + } + + $.plot.plugins.push({ + init: init, + options: options, + name: "canvas", + version: "1.0" + }); + +})(jQuery); diff --git a/public/assets/js/plugins/flot/jquery.flot.canvas.min.js b/public/assets/js/plugins/flot/jquery.flot.canvas.min.js new file mode 100755 index 00000000..826d2177 --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.canvas.min.js @@ -0,0 +1 @@ +(function($){var options={canvas:true};var render,getTextInfo,addText;var hasOwnProperty=Object.prototype.hasOwnProperty;function init(plot,classes){var Canvas=classes.Canvas;if(render==null){getTextInfo=Canvas.prototype.getTextInfo,addText=Canvas.prototype.addText,render=Canvas.prototype.render}Canvas.prototype.render=function(){if(!plot.getOptions().canvas){return render.call(this)}var context=this.context,cache=this._textCache;context.save();context.textBaseline="middle";for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layerCache=cache[layerKey];for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey],updateStyles=true;for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var info=styleCache[key],positions=info.positions,lines=info.lines;if(updateStyles){context.fillStyle=info.font.color;context.font=info.font.definition;updateStyles=false}for(var i=0,position;position=positions[i];i++){if(position.active){for(var j=0,line;line=position.lines[j];j++){context.fillText(lines[j].text,line[0],line[1])}}else{positions.splice(i--,1)}}if(positions.length==0){delete styleCache[key]}}}}}}}context.restore()};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){if(!plot.getOptions().canvas){return getTextInfo.call(this,layer,text,font,angle,width)}var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var context=this.context;if(typeof font!=="object"){var element=$("
       
      ").css("position","absolute").addClass(typeof font==="string"?font:null).appendTo(this.getTextLayer(layer));font={lineHeight:element.height(),style:element.css("font-style"),variant:element.css("font-variant"),weight:element.css("font-weight"),family:element.css("font-family"),color:element.css("color")};font.size=element.css("line-height",1).height();element.remove()}textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family;info=styleCache[text]={width:0,height:0,positions:[],lines:[],font:{definition:textStyle,color:font.color}};context.save();context.font=textStyle;var lines=(text+"").replace(/
      |\r\n|\r/g,"\n").split("\n");for(var i=0;i index) + index = categories[v]; + + return index + 1; + } + + function categoriesTickGenerator(axis) { + var res = []; + for (var label in axis.categories) { + var v = axis.categories[label]; + if (v >= axis.min && v <= axis.max) + res.push([v, label]); + } + + res.sort(function (a, b) { return a[0] - b[0]; }); + + return res; + } + + function setupCategoriesForAxis(series, axis, datapoints) { + if (series[axis].options.mode != "categories") + return; + + if (!series[axis].categories) { + // parse options + var c = {}, o = series[axis].options.categories || {}; + if ($.isArray(o)) { + for (var i = 0; i < o.length; ++i) + c[o[i]] = i; + } + else { + for (var v in o) + c[v] = o[v]; + } + + series[axis].categories = c; + } + + // fix ticks + if (!series[axis].options.ticks) + series[axis].options.ticks = categoriesTickGenerator; + + transformPointsOnAxis(datapoints, axis, series[axis].categories); + } + + function transformPointsOnAxis(datapoints, axis, categories) { + // go through the points, transforming them + var points = datapoints.points, + ps = datapoints.pointsize, + format = datapoints.format, + formatColumn = axis.charAt(0), + index = getNextIndex(categories); + + for (var i = 0; i < points.length; i += ps) { + if (points[i] == null) + continue; + + for (var m = 0; m < ps; ++m) { + var val = points[i + m]; + + if (val == null || !format[m][formatColumn]) + continue; + + if (!(val in categories)) { + categories[val] = index; + ++index; + } + + points[i + m] = categories[val]; + } + } + } + + function processDatapoints(plot, series, datapoints) { + setupCategoriesForAxis(series, "xaxis", datapoints); + setupCategoriesForAxis(series, "yaxis", datapoints); + } + + function init(plot) { + plot.hooks.processRawData.push(processRawData); + plot.hooks.processDatapoints.push(processDatapoints); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'categories', + version: '1.0' + }); +})(jQuery); diff --git a/public/assets/js/plugins/flot/jquery.flot.categories.min.js b/public/assets/js/plugins/flot/jquery.flot.categories.min.js new file mode 100755 index 00000000..552dd90a --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.categories.min.js @@ -0,0 +1 @@ +(function($){var options={xaxis:{categories:null},yaxis:{categories:null}};function processRawData(plot,series,data,datapoints){var xCategories=series.xaxis.options.mode=="categories",yCategories=series.yaxis.options.mode=="categories";if(!(xCategories||yCategories))return;var format=datapoints.format;if(!format){var s=series;format=[];format.push({x:true,number:true,required:true});format.push({y:true,number:true,required:true});if(s.bars.show||s.lines.show&&s.lines.fill){var autoscale=!!(s.bars.show&&s.bars.zero||s.lines.show&&s.lines.zero);format.push({y:true,number:true,required:false,defaultValue:0,autoscale:autoscale});if(s.bars.horizontal){delete format[format.length-1].y;format[format.length-1].x=true}}datapoints.format=format}for(var m=0;mindex)index=categories[v];return index+1}function categoriesTickGenerator(axis){var res=[];for(var label in axis.categories){var v=axis.categories[label];if(v>=axis.min&&v<=axis.max)res.push([v,label])}res.sort(function(a,b){return a[0]-b[0]});return res}function setupCategoriesForAxis(series,axis,datapoints){if(series[axis].options.mode!="categories")return;if(!series[axis].categories){var c={},o=series[axis].options.categories||{};if($.isArray(o)){for(var i=0;i ax[1].max || y < ax[1].min || upper < ax[0].min || lower > ax[0].max) + continue; + if (err[e].err == 'y') + if (x > ax[0].max || x < ax[0].min || upper < ax[1].min || lower > ax[1].max) + continue; + + // prevent errorbars getting out of the canvas + var drawUpper = true, + drawLower = true; + + if (upper > minmax[1]) { + drawUpper = false; + upper = minmax[1]; + } + if (lower < minmax[0]) { + drawLower = false; + lower = minmax[0]; + } + + //sanity check, in case some inverted axis hack is applied to flot + if ((err[e].err == 'x' && invertX) || (err[e].err == 'y' && invertY)) { + //swap coordinates + var tmp = lower; + lower = upper; + upper = tmp; + tmp = drawLower; + drawLower = drawUpper; + drawUpper = tmp; + tmp = minmax[0]; + minmax[0] = minmax[1]; + minmax[1] = tmp; + } + + // convert to pixels + x = ax[0].p2c(x), + y = ax[1].p2c(y), + upper = ax[e].p2c(upper); + lower = ax[e].p2c(lower); + minmax[0] = ax[e].p2c(minmax[0]); + minmax[1] = ax[e].p2c(minmax[1]); + + //same style as points by default + var lw = err[e].lineWidth ? err[e].lineWidth : s.points.lineWidth, + sw = s.points.shadowSize != null ? s.points.shadowSize : s.shadowSize; + + //shadow as for points + if (lw > 0 && sw > 0) { + var w = sw / 2; + ctx.lineWidth = w; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w + w/2, minmax); + + ctx.strokeStyle = "rgba(0,0,0,0.2)"; + drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w/2, minmax); + } + + ctx.strokeStyle = err[e].color? err[e].color: s.color; + ctx.lineWidth = lw; + //draw it + drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, 0, minmax); + } + } + } + } + + function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){ + + //shadow offset + y += offset; + upper += offset; + lower += offset; + + // error bar - avoid plotting over circles + if (err.err == 'x'){ + if (upper > x + radius) drawPath(ctx, [[upper,y],[Math.max(x + radius,minmax[0]),y]]); + else drawUpper = false; + if (lower < x - radius) drawPath(ctx, [[Math.min(x - radius,minmax[1]),y],[lower,y]] ); + else drawLower = false; + } + else { + if (upper < y - radius) drawPath(ctx, [[x,upper],[x,Math.min(y - radius,minmax[0])]] ); + else drawUpper = false; + if (lower > y + radius) drawPath(ctx, [[x,Math.max(y + radius,minmax[1])],[x,lower]] ); + else drawLower = false; + } + + //internal radius value in errorbar, allows to plot radius 0 points and still keep proper sized caps + //this is a way to get errorbars on lines without visible connecting dots + radius = err.radius != null? err.radius: radius; + + // upper cap + if (drawUpper) { + if (err.upperCap == '-'){ + if (err.err=='x') drawPath(ctx, [[upper,y - radius],[upper,y + radius]] ); + else drawPath(ctx, [[x - radius,upper],[x + radius,upper]] ); + } else if ($.isFunction(err.upperCap)){ + if (err.err=='x') err.upperCap(ctx, upper, y, radius); + else err.upperCap(ctx, x, upper, radius); + } + } + // lower cap + if (drawLower) { + if (err.lowerCap == '-'){ + if (err.err=='x') drawPath(ctx, [[lower,y - radius],[lower,y + radius]] ); + else drawPath(ctx, [[x - radius,lower],[x + radius,lower]] ); + } else if ($.isFunction(err.lowerCap)){ + if (err.err=='x') err.lowerCap(ctx, lower, y, radius); + else err.lowerCap(ctx, x, lower, radius); + } + } + } + + function drawPath(ctx, pts){ + ctx.beginPath(); + ctx.moveTo(pts[0][0], pts[0][1]); + for (var p=1; p < pts.length; p++) + ctx.lineTo(pts[p][0], pts[p][1]); + ctx.stroke(); + } + + function draw(plot, ctx){ + var plotOffset = plot.getPlotOffset(); + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + $.each(plot.getData(), function (i, s) { + if (s.points.errorbars && (s.points.xerr.show || s.points.yerr.show)) + drawSeriesErrors(plot, ctx, s); + }); + ctx.restore(); + } + + function init(plot) { + plot.hooks.processRawData.push(processRawData); + plot.hooks.draw.push(draw); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'errorbars', + version: '1.0' + }); +})(jQuery); diff --git a/public/assets/js/plugins/flot/jquery.flot.errorbars.min.js b/public/assets/js/plugins/flot/jquery.flot.errorbars.min.js new file mode 100755 index 00000000..a7bd0422 --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.errorbars.min.js @@ -0,0 +1 @@ +(function($){var options={series:{points:{errorbars:null,xerr:{err:"x",show:null,asymmetric:null,upperCap:null,lowerCap:null,color:null,radius:null},yerr:{err:"y",show:null,asymmetric:null,upperCap:null,lowerCap:null,color:null,radius:null}}}};function processRawData(plot,series,data,datapoints){if(!series.points.errorbars)return;var format=[{x:true,number:true,required:true},{y:true,number:true,required:true}];var errors=series.points.errorbars;if(errors=="x"||errors=="xy"){if(series.points.xerr.asymmetric){format.push({x:true,number:true,required:true});format.push({x:true,number:true,required:true})}else format.push({x:true,number:true,required:true})}if(errors=="y"||errors=="xy"){if(series.points.yerr.asymmetric){format.push({y:true,number:true,required:true});format.push({y:true,number:true,required:true})}else format.push({y:true,number:true,required:true})}datapoints.format=format}function parseErrors(series,i){var points=series.datapoints.points;var exl=null,exu=null,eyl=null,eyu=null;var xerr=series.points.xerr,yerr=series.points.yerr;var eb=series.points.errorbars;if(eb=="x"||eb=="xy"){if(xerr.asymmetric){exl=points[i+2];exu=points[i+3];if(eb=="xy")if(yerr.asymmetric){eyl=points[i+4];eyu=points[i+5]}else eyl=points[i+4]}else{exl=points[i+2];if(eb=="xy")if(yerr.asymmetric){eyl=points[i+3];eyu=points[i+4]}else eyl=points[i+3]}}else if(eb=="y")if(yerr.asymmetric){eyl=points[i+2];eyu=points[i+3]}else eyl=points[i+2];if(exu==null)exu=exl;if(eyu==null)eyu=eyl;var errRanges=[exl,exu,eyl,eyu];if(!xerr.show){errRanges[0]=null;errRanges[1]=null}if(!yerr.show){errRanges[2]=null;errRanges[3]=null}return errRanges}function drawSeriesErrors(plot,ctx,s){var points=s.datapoints.points,ps=s.datapoints.pointsize,ax=[s.xaxis,s.yaxis],radius=s.points.radius,err=[s.points.xerr,s.points.yerr];var invertX=false;if(ax[0].p2c(ax[0].max)ax[1].max||yax[0].max)continue;if(err[e].err=="y")if(x>ax[0].max||xax[1].max)continue;var drawUpper=true,drawLower=true;if(upper>minmax[1]){drawUpper=false;upper=minmax[1]}if(lower0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,w+w/2,minmax);ctx.strokeStyle="rgba(0,0,0,0.2)";drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,w/2,minmax)}ctx.strokeStyle=err[e].color?err[e].color:s.color;ctx.lineWidth=lw;drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,0,minmax)}}}}function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){y+=offset;upper+=offset;lower+=offset;if(err.err=="x"){if(upper>x+radius)drawPath(ctx,[[upper,y],[Math.max(x+radius,minmax[0]),y]]);else drawUpper=false;if(lowery+radius)drawPath(ctx,[[x,Math.max(y+radius,minmax[1])],[x,lower]]);else drawLower=false}radius=err.radius!=null?err.radius:radius;if(drawUpper){if(err.upperCap=="-"){if(err.err=="x")drawPath(ctx,[[upper,y-radius],[upper,y+radius]]);else drawPath(ctx,[[x-radius,upper],[x+radius,upper]])}else if($.isFunction(err.upperCap)){if(err.err=="x")err.upperCap(ctx,upper,y,radius);else err.upperCap(ctx,x,upper,radius)}}if(drawLower){if(err.lowerCap=="-"){if(err.err=="x")drawPath(ctx,[[lower,y-radius],[lower,y+radius]]);else drawPath(ctx,[[x-radius,lower],[x+radius,lower]])}else if($.isFunction(err.lowerCap)){if(err.err=="x")err.lowerCap(ctx,lower,y,radius);else err.lowerCap(ctx,x,lower,radius)}}}function drawPath(ctx,pts){ctx.beginPath();ctx.moveTo(pts[0][0],pts[0][1]);for(var p=1;p= allseries.length ) { + return null; + } + return allseries[ s.fillBetween ]; + } + + return null; + } + + function computeFillBottoms( plot, s, datapoints ) { + + if ( s.fillBetween == null ) { + return; + } + + var other = findBottomSeries( s, plot.getData() ); + + if ( !other ) { + return; + } + + var ps = datapoints.pointsize, + points = datapoints.points, + otherps = other.datapoints.pointsize, + otherpoints = other.datapoints.points, + newpoints = [], + px, py, intery, qx, qy, bottom, + withlines = s.lines.show, + withbottom = ps > 2 && datapoints.format[2].y, + withsteps = withlines && s.lines.steps, + fromgap = true, + i = 0, + j = 0, + l, m; + + while ( true ) { + + if ( i >= points.length ) { + break; + } + + l = newpoints.length; + + if ( points[ i ] == null ) { + + // copy gaps + + for ( m = 0; m < ps; ++m ) { + newpoints.push( points[ i + m ] ); + } + + i += ps; + + } else if ( j >= otherpoints.length ) { + + // for lines, we can't use the rest of the points + + if ( !withlines ) { + for ( m = 0; m < ps; ++m ) { + newpoints.push( points[ i + m ] ); + } + } + + i += ps; + + } else if ( otherpoints[ j ] == null ) { + + // oops, got a gap + + for ( m = 0; m < ps; ++m ) { + newpoints.push( null ); + } + + fromgap = true; + j += otherps; + + } else { + + // cases where we actually got two points + + px = points[ i ]; + py = points[ i + 1 ]; + qx = otherpoints[ j ]; + qy = otherpoints[ j + 1 ]; + bottom = 0; + + if ( px === qx ) { + + for ( m = 0; m < ps; ++m ) { + newpoints.push( points[ i + m ] ); + } + + //newpoints[ l + 1 ] += qy; + bottom = qy; + + i += ps; + j += otherps; + + } else if ( px > qx ) { + + // we got past point below, might need to + // insert interpolated extra point + + if ( withlines && i > 0 && points[ i - ps ] != null ) { + intery = py + ( points[ i - ps + 1 ] - py ) * ( qx - px ) / ( points[ i - ps ] - px ); + newpoints.push( qx ); + newpoints.push( intery ); + for ( m = 2; m < ps; ++m ) { + newpoints.push( points[ i + m ] ); + } + bottom = qy; + } + + j += otherps; + + } else { // px < qx + + // if we come from a gap, we just skip this point + + if ( fromgap && withlines ) { + i += ps; + continue; + } + + for ( m = 0; m < ps; ++m ) { + newpoints.push( points[ i + m ] ); + } + + // we might be able to interpolate a point below, + // this can give us a better y + + if ( withlines && j > 0 && otherpoints[ j - otherps ] != null ) { + bottom = qy + ( otherpoints[ j - otherps + 1 ] - qy ) * ( px - qx ) / ( otherpoints[ j - otherps ] - qx ); + } + + //newpoints[l + 1] += bottom; + + i += ps; + } + + fromgap = false; + + if ( l !== newpoints.length && withbottom ) { + newpoints[ l + 2 ] = bottom; + } + } + + // maintain the line steps invariant + + if ( withsteps && l !== newpoints.length && l > 0 && + newpoints[ l ] !== null && + newpoints[ l ] !== newpoints[ l - ps ] && + newpoints[ l + 1 ] !== newpoints[ l - ps + 1 ] ) { + for (m = 0; m < ps; ++m) { + newpoints[ l + ps + m ] = newpoints[ l + m ]; + } + newpoints[ l + 1 ] = newpoints[ l - ps + 1 ]; + } + } + + datapoints.points = newpoints; + } + + plot.hooks.processDatapoints.push( computeFillBottoms ); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: "fillbetween", + version: "1.0" + }); + +})(jQuery); diff --git a/public/assets/js/plugins/flot/jquery.flot.fillbetween.min.js b/public/assets/js/plugins/flot/jquery.flot.fillbetween.min.js new file mode 100755 index 00000000..5bdad05f --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.fillbetween.min.js @@ -0,0 +1 @@ +(function($){var options={series:{fillBetween:null}};function init(plot){function findBottomSeries(s,allseries){var i;for(i=0;i=allseries.length){return null}return allseries[s.fillBetween]}return null}function computeFillBottoms(plot,s,datapoints){if(s.fillBetween==null){return}var other=findBottomSeries(s,plot.getData());if(!other){return}var ps=datapoints.pointsize,points=datapoints.points,otherps=other.datapoints.pointsize,otherpoints=other.datapoints.points,newpoints=[],px,py,intery,qx,qy,bottom,withlines=s.lines.show,withbottom=ps>2&&datapoints.format[2].y,withsteps=withlines&&s.lines.steps,fromgap=true,i=0,j=0,l,m;while(true){if(i>=points.length){break}l=newpoints.length;if(points[i]==null){for(m=0;m=otherpoints.length){if(!withlines){for(m=0;mqx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+1]-py)*(qx-px)/(points[i-ps]-px);newpoints.push(qx);newpoints.push(intery);for(m=2;m0&&otherpoints[j-otherps]!=null){bottom=qy+(otherpoints[j-otherps+1]-qy)*(px-qx)/(otherpoints[j-otherps]-qx)}i+=ps}fromgap=false;if(l!==newpoints.length&&withbottom){newpoints[l+2]=bottom}}if(withsteps&&l!==newpoints.length&&l>0&&newpoints[l]!==null&&newpoints[l]!==newpoints[l-ps]&&newpoints[l+1]!==newpoints[l-ps+1]){for(m=0;m').load(handler).error(handler).attr('src', url); + }); + }; + + function drawSeries(plot, ctx, series) { + var plotOffset = plot.getPlotOffset(); + + if (!series.images || !series.images.show) + return; + + var points = series.datapoints.points, + ps = series.datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + var img = points[i], + x1 = points[i + 1], y1 = points[i + 2], + x2 = points[i + 3], y2 = points[i + 4], + xaxis = series.xaxis, yaxis = series.yaxis, + tmp; + + // actually we should check img.complete, but it + // appears to be a somewhat unreliable indicator in + // IE6 (false even after load event) + if (!img || img.width <= 0 || img.height <= 0) + continue; + + if (x1 > x2) { + tmp = x2; + x2 = x1; + x1 = tmp; + } + if (y1 > y2) { + tmp = y2; + y2 = y1; + y1 = tmp; + } + + // if the anchor is at the center of the pixel, expand the + // image by 1/2 pixel in each direction + if (series.images.anchor == "center") { + tmp = 0.5 * (x2-x1) / (img.width - 1); + x1 -= tmp; + x2 += tmp; + tmp = 0.5 * (y2-y1) / (img.height - 1); + y1 -= tmp; + y2 += tmp; + } + + // clip + if (x1 == x2 || y1 == y2 || + x1 >= xaxis.max || x2 <= xaxis.min || + y1 >= yaxis.max || y2 <= yaxis.min) + continue; + + var sx1 = 0, sy1 = 0, sx2 = img.width, sy2 = img.height; + if (x1 < xaxis.min) { + sx1 += (sx2 - sx1) * (xaxis.min - x1) / (x2 - x1); + x1 = xaxis.min; + } + + if (x2 > xaxis.max) { + sx2 += (sx2 - sx1) * (xaxis.max - x2) / (x2 - x1); + x2 = xaxis.max; + } + + if (y1 < yaxis.min) { + sy2 += (sy1 - sy2) * (yaxis.min - y1) / (y2 - y1); + y1 = yaxis.min; + } + + if (y2 > yaxis.max) { + sy1 += (sy1 - sy2) * (yaxis.max - y2) / (y2 - y1); + y2 = yaxis.max; + } + + x1 = xaxis.p2c(x1); + x2 = xaxis.p2c(x2); + y1 = yaxis.p2c(y1); + y2 = yaxis.p2c(y2); + + // the transformation may have swapped us + if (x1 > x2) { + tmp = x2; + x2 = x1; + x1 = tmp; + } + if (y1 > y2) { + tmp = y2; + y2 = y1; + y1 = tmp; + } + + tmp = ctx.globalAlpha; + ctx.globalAlpha *= series.images.alpha; + ctx.drawImage(img, + sx1, sy1, sx2 - sx1, sy2 - sy1, + x1 + plotOffset.left, y1 + plotOffset.top, + x2 - x1, y2 - y1); + ctx.globalAlpha = tmp; + } + } + + function processRawData(plot, series, data, datapoints) { + if (!series.images.show) + return; + + // format is Image, x1, y1, x2, y2 (opposite corners) + datapoints.format = [ + { required: true }, + { x: true, number: true, required: true }, + { y: true, number: true, required: true }, + { x: true, number: true, required: true }, + { y: true, number: true, required: true } + ]; + } + + function init(plot) { + plot.hooks.processRawData.push(processRawData); + plot.hooks.drawSeries.push(drawSeries); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'image', + version: '1.1' + }); +})(jQuery); diff --git a/public/assets/js/plugins/flot/jquery.flot.image.min.js b/public/assets/js/plugins/flot/jquery.flot.image.min.js new file mode 100755 index 00000000..60600241 --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.image.min.js @@ -0,0 +1 @@ +(function($){var options={series:{images:{show:false,alpha:1,anchor:"corner"}}};$.plot.image={};$.plot.image.loadDataImages=function(series,options,callback){var urls=[],points=[];var defaultShow=options.series.images.show;$.each(series,function(i,s){if(!(defaultShow||s.images.show))return;if(s.data)s=s.data;$.each(s,function(i,p){if(typeof p[0]=="string"){urls.push(p[0]);points.push(p)}})});$.plot.image.load(urls,function(loadedImages){$.each(points,function(i,p){var url=p[0];if(loadedImages[url])p[0]=loadedImages[url]});callback()})};$.plot.image.load=function(urls,callback){var missing=urls.length,loaded={};if(missing==0)callback({});$.each(urls,function(i,url){var handler=function(){--missing;loaded[url]=this;if(missing==0)callback(loaded)};$("").load(handler).error(handler).attr("src",url)})};function drawSeries(plot,ctx,series){var plotOffset=plot.getPlotOffset();if(!series.images||!series.images.show)return;var points=series.datapoints.points,ps=series.datapoints.pointsize;for(var i=0;ix2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}if(series.images.anchor=="center"){tmp=.5*(x2-x1)/(img.width-1);x1-=tmp;x2+=tmp;tmp=.5*(y2-y1)/(img.height-1);y1-=tmp;y2+=tmp}if(x1==x2||y1==y2||x1>=xaxis.max||x2<=xaxis.min||y1>=yaxis.max||y2<=yaxis.min)continue;var sx1=0,sy1=0,sx2=img.width,sy2=img.height;if(x1xaxis.max){sx2+=(sx2-sx1)*(xaxis.max-x2)/(x2-x1);x2=xaxis.max}if(y1yaxis.max){sy1+=(sy1-sy2)*(yaxis.max-y2)/(y2-y1);y2=yaxis.max}x1=xaxis.p2c(x1);x2=xaxis.p2c(x2);y1=yaxis.p2c(y1);y2=yaxis.p2c(y2);if(x1>x2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}tmp=ctx.globalAlpha;ctx.globalAlpha*=series.images.alpha;ctx.drawImage(img,sx1,sy1,sx2-sx1,sy2-sy1,x1+plotOffset.left,y1+plotOffset.top,x2-x1,y2-y1);ctx.globalAlpha=tmp}}function processRawData(plot,series,data,datapoints){if(!series.images.show)return;datapoints.format=[{required:true},{x:true,number:true,required:true},{y:true,number:true,required:true},{x:true,number:true,required:true},{y:true,number:true,required:true}]}function init(plot){plot.hooks.processRawData.push(processRawData);plot.hooks.drawSeries.push(drawSeries)}$.plot.plugins.push({init:init,options:options,name:"image",version:"1.1"})})(jQuery); \ No newline at end of file diff --git a/public/assets/js/plugins/flot/jquery.flot.js b/public/assets/js/plugins/flot/jquery.flot.js new file mode 100755 index 00000000..965e78ef --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.js @@ -0,0 +1,3137 @@ +/* Javascript plotting library for jQuery, version 0.8.2. + +Copyright (c) 2007-2013 IOLA and Ole Laursen. +Licensed under the MIT license. + +*/ + +// first an inline dependency, jquery.colorhelpers.js, we inline it here +// for convenience + +/* Plugin for jQuery for working with colors. + * + * Version 1.1. + * + * Inspiration from jQuery color animation plugin by John Resig. + * + * Released under the MIT license by Ole Laursen, October 2009. + * + * Examples: + * + * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() + * var c = $.color.extract($("#mydiv"), 'background-color'); + * console.log(c.r, c.g, c.b, c.a); + * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" + * + * Note that .scale() and .add() return the same modified object + * instead of making a new one. + * + * V. 1.1: Fix error handling so e.g. parsing an empty string does + * produce a color rather than just crashing. + */ +(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); + +// the actual Flot code +(function($) { + + // Cache the prototype hasOwnProperty for faster access + + var hasOwnProperty = Object.prototype.hasOwnProperty; + + /////////////////////////////////////////////////////////////////////////// + // The Canvas object is a wrapper around an HTML5 tag. + // + // @constructor + // @param {string} cls List of classes to apply to the canvas. + // @param {element} container Element onto which to append the canvas. + // + // Requiring a container is a little iffy, but unfortunately canvas + // operations don't work unless the canvas is attached to the DOM. + + function Canvas(cls, container) { + + var element = container.children("." + cls)[0]; + + if (element == null) { + + element = document.createElement("canvas"); + element.className = cls; + + $(element).css({ direction: "ltr", position: "absolute", left: 0, top: 0 }) + .appendTo(container); + + // If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas + + if (!element.getContext) { + if (window.G_vmlCanvasManager) { + element = window.G_vmlCanvasManager.initElement(element); + } else { + throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode."); + } + } + } + + this.element = element; + + var context = this.context = element.getContext("2d"); + + // Determine the screen's ratio of physical to device-independent + // pixels. This is the ratio between the canvas width that the browser + // advertises and the number of pixels actually present in that space. + + // The iPhone 4, for example, has a device-independent width of 320px, + // but its screen is actually 640px wide. It therefore has a pixel + // ratio of 2, while most normal devices have a ratio of 1. + + var devicePixelRatio = window.devicePixelRatio || 1, + backingStoreRatio = + context.webkitBackingStorePixelRatio || + context.mozBackingStorePixelRatio || + context.msBackingStorePixelRatio || + context.oBackingStorePixelRatio || + context.backingStorePixelRatio || 1; + + this.pixelRatio = devicePixelRatio / backingStoreRatio; + + // Size the canvas to match the internal dimensions of its container + + this.resize(container.width(), container.height()); + + // Collection of HTML div layers for text overlaid onto the canvas + + this.textContainer = null; + this.text = {}; + + // Cache of text fragments and metrics, so we can avoid expensively + // re-calculating them when the plot is re-rendered in a loop. + + this._textCache = {}; + } + + // Resizes the canvas to the given dimensions. + // + // @param {number} width New width of the canvas, in pixels. + // @param {number} width New height of the canvas, in pixels. + + Canvas.prototype.resize = function(width, height) { + + if (width <= 0 || height <= 0) { + throw new Error("Invalid dimensions for plot, width = " + width + ", height = " + height); + } + + var element = this.element, + context = this.context, + pixelRatio = this.pixelRatio; + + // Resize the canvas, increasing its density based on the display's + // pixel ratio; basically giving it more pixels without increasing the + // size of its element, to take advantage of the fact that retina + // displays have that many more pixels in the same advertised space. + + // Resizing should reset the state (excanvas seems to be buggy though) + + if (this.width != width) { + element.width = width * pixelRatio; + element.style.width = width + "px"; + this.width = width; + } + + if (this.height != height) { + element.height = height * pixelRatio; + element.style.height = height + "px"; + this.height = height; + } + + // Save the context, so we can reset in case we get replotted. The + // restore ensure that we're really back at the initial state, and + // should be safe even if we haven't saved the initial state yet. + + context.restore(); + context.save(); + + // Scale the coordinate space to match the display density; so even though we + // may have twice as many pixels, we still want lines and other drawing to + // appear at the same size; the extra pixels will just make them crisper. + + context.scale(pixelRatio, pixelRatio); + }; + + // Clears the entire canvas area, not including any overlaid HTML text + + Canvas.prototype.clear = function() { + this.context.clearRect(0, 0, this.width, this.height); + }; + + // Finishes rendering the canvas, including managing the text overlay. + + Canvas.prototype.render = function() { + + var cache = this._textCache; + + // For each text layer, add elements marked as active that haven't + // already been rendered, and remove those that are no longer active. + + for (var layerKey in cache) { + if (hasOwnProperty.call(cache, layerKey)) { + + var layer = this.getTextLayer(layerKey), + layerCache = cache[layerKey]; + + layer.hide(); + + for (var styleKey in layerCache) { + if (hasOwnProperty.call(layerCache, styleKey)) { + var styleCache = layerCache[styleKey]; + for (var key in styleCache) { + if (hasOwnProperty.call(styleCache, key)) { + + var positions = styleCache[key].positions; + + for (var i = 0, position; position = positions[i]; i++) { + if (position.active) { + if (!position.rendered) { + layer.append(position.element); + position.rendered = true; + } + } else { + positions.splice(i--, 1); + if (position.rendered) { + position.element.detach(); + } + } + } + + if (positions.length == 0) { + delete styleCache[key]; + } + } + } + } + } + + layer.show(); + } + } + }; + + // Creates (if necessary) and returns the text overlay container. + // + // @param {string} classes String of space-separated CSS classes used to + // uniquely identify the text layer. + // @return {object} The jQuery-wrapped text-layer div. + + Canvas.prototype.getTextLayer = function(classes) { + + var layer = this.text[classes]; + + // Create the text layer if it doesn't exist + + if (layer == null) { + + // Create the text layer container, if it doesn't exist + + if (this.textContainer == null) { + this.textContainer = $("
      ") + .css({ + position: "absolute", + top: 0, + left: 0, + bottom: 0, + right: 0, + 'font-size': "smaller", + color: "#545454" + }) + .insertAfter(this.element); + } + + layer = this.text[classes] = $("
      ") + .addClass(classes) + .css({ + position: "absolute", + top: 0, + left: 0, + bottom: 0, + right: 0 + }) + .appendTo(this.textContainer); + } + + return layer; + }; + + // Creates (if necessary) and returns a text info object. + // + // The object looks like this: + // + // { + // width: Width of the text's wrapper div. + // height: Height of the text's wrapper div. + // element: The jQuery-wrapped HTML div containing the text. + // positions: Array of positions at which this text is drawn. + // } + // + // The positions array contains objects that look like this: + // + // { + // active: Flag indicating whether the text should be visible. + // rendered: Flag indicating whether the text is currently visible. + // element: The jQuery-wrapped HTML div containing the text. + // x: X coordinate at which to draw the text. + // y: Y coordinate at which to draw the text. + // } + // + // Each position after the first receives a clone of the original element. + // + // The idea is that that the width, height, and general 'identity' of the + // text is constant no matter where it is placed; the placements are a + // secondary property. + // + // Canvas maintains a cache of recently-used text info objects; getTextInfo + // either returns the cached element or creates a new entry. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {string} text Text string to retrieve info for. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which to rotate the text, in degrees. + // Angle is currently unused, it will be implemented in the future. + // @param {number=} width Maximum width of the text before it wraps. + // @return {object} a text info object. + + Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { + + var textStyle, layerCache, styleCache, info; + + // Cast the value to a string, in case we were given a number or such + + text = "" + text; + + // If the font is a font-spec object, generate a CSS font definition + + if (typeof font === "object") { + textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px/" + font.lineHeight + "px " + font.family; + } else { + textStyle = font; + } + + // Retrieve (or create) the cache for the text's layer and styles + + layerCache = this._textCache[layer]; + + if (layerCache == null) { + layerCache = this._textCache[layer] = {}; + } + + styleCache = layerCache[textStyle]; + + if (styleCache == null) { + styleCache = layerCache[textStyle] = {}; + } + + info = styleCache[text]; + + // If we can't find a matching element in our cache, create a new one + + if (info == null) { + + var element = $("
      ").html(text) + .css({ + position: "absolute", + 'max-width': width, + top: -9999 + }) + .appendTo(this.getTextLayer(layer)); + + if (typeof font === "object") { + element.css({ + font: textStyle, + color: font.color + }); + } else if (typeof font === "string") { + element.addClass(font); + } + + info = styleCache[text] = { + width: element.outerWidth(true), + height: element.outerHeight(true), + element: element, + positions: [] + }; + + element.detach(); + } + + return info; + }; + + // Adds a text string to the canvas text overlay. + // + // The text isn't drawn immediately; it is marked as rendering, which will + // result in its addition to the canvas on the next render pass. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {number} x X coordinate at which to draw the text. + // @param {number} y Y coordinate at which to draw the text. + // @param {string} text Text string to draw. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which to rotate the text, in degrees. + // Angle is currently unused, it will be implemented in the future. + // @param {number=} width Maximum width of the text before it wraps. + // @param {string=} halign Horizontal alignment of the text; either "left", + // "center" or "right". + // @param {string=} valign Vertical alignment of the text; either "top", + // "middle" or "bottom". + + Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { + + var info = this.getTextInfo(layer, text, font, angle, width), + positions = info.positions; + + // Tweak the div's position to match the text's alignment + + if (halign == "center") { + x -= info.width / 2; + } else if (halign == "right") { + x -= info.width; + } + + if (valign == "middle") { + y -= info.height / 2; + } else if (valign == "bottom") { + y -= info.height; + } + + // Determine whether this text already exists at this position. + // If so, mark it for inclusion in the next render pass. + + for (var i = 0, position; position = positions[i]; i++) { + if (position.x == x && position.y == y) { + position.active = true; + return; + } + } + + // If the text doesn't exist at this position, create a new entry + + // For the very first position we'll re-use the original element, + // while for subsequent ones we'll clone it. + + position = { + active: true, + rendered: false, + element: positions.length ? info.element.clone() : info.element, + x: x, + y: y + }; + + positions.push(position); + + // Move the element to its final position within the container + + position.element.css({ + top: Math.round(y), + left: Math.round(x), + 'text-align': halign // In case the text wraps + }); + }; + + // Removes one or more text strings from the canvas text overlay. + // + // If no parameters are given, all text within the layer is removed. + // + // Note that the text is not immediately removed; it is simply marked as + // inactive, which will result in its removal on the next render pass. + // This avoids the performance penalty for 'clear and redraw' behavior, + // where we potentially get rid of all text on a layer, but will likely + // add back most or all of it later, as when redrawing axes, for example. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {number=} x X coordinate of the text. + // @param {number=} y Y coordinate of the text. + // @param {string=} text Text string to remove. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which the text is rotated, in degrees. + // Angle is currently unused, it will be implemented in the future. + + Canvas.prototype.removeText = function(layer, x, y, text, font, angle) { + if (text == null) { + var layerCache = this._textCache[layer]; + if (layerCache != null) { + for (var styleKey in layerCache) { + if (hasOwnProperty.call(layerCache, styleKey)) { + var styleCache = layerCache[styleKey]; + for (var key in styleCache) { + if (hasOwnProperty.call(styleCache, key)) { + var positions = styleCache[key].positions; + for (var i = 0, position; position = positions[i]; i++) { + position.active = false; + } + } + } + } + } + } + } else { + var positions = this.getTextInfo(layer, text, font, angle).positions; + for (var i = 0, position; position = positions[i]; i++) { + if (position.x == x && position.y == y) { + position.active = false; + } + } + } + }; + + /////////////////////////////////////////////////////////////////////////// + // The top-level container for the entire plot. + + function Plot(placeholder, data_, options_, plugins) { + // data is on the form: + // [ series1, series2 ... ] + // where series is either just the data as [ [x1, y1], [x2, y2], ... ] + // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } + + var series = [], + options = { + // the color theme used for graphs + colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], + legend: { + show: true, + noColumns: 1, // number of colums in legend table + labelFormatter: null, // fn: string -> string + labelBoxBorderColor: "#ccc", // border color for the little label boxes + container: null, // container (as jQuery object) to put legend in, null means default on top of graph + position: "ne", // position of default legend container within plot + margin: 5, // distance from grid edge to default legend container within plot + backgroundColor: null, // null means auto-detect + backgroundOpacity: 0.85, // set to 0 to avoid background + sorted: null // default to no legend sorting + }, + xaxis: { + show: null, // null = auto-detect, true = always, false = never + position: "bottom", // or "top" + mode: null, // null or "time" + font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: "italic", weight: "bold", family: "sans-serif", variant: "small-caps" } + color: null, // base color, labels, ticks + tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)" + transform: null, // null or f: number -> number to transform axis + inverseTransform: null, // if transform is set, this should be the inverse function + min: null, // min. value to show, null means set automatically + max: null, // max. value to show, null means set automatically + autoscaleMargin: null, // margin in % to add if auto-setting min/max + ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks + tickFormatter: null, // fn: number -> string + labelWidth: null, // size of tick labels in pixels + labelHeight: null, + reserveSpace: null, // whether to reserve space even if axis isn't shown + tickLength: null, // size in pixels of ticks, or "full" for whole line + alignTicksWithAxis: null, // axis number or null for no sync + tickDecimals: null, // no. of decimals, null means auto + tickSize: null, // number or [number, "unit"] + minTickSize: null // number or [number, "unit"] + }, + yaxis: { + autoscaleMargin: 0.02, + position: "left" // or "right" + }, + xaxes: [], + yaxes: [], + series: { + points: { + show: false, + radius: 3, + lineWidth: 2, // in pixels + fill: true, + fillColor: "#ffffff", + symbol: "circle" // or callback + }, + lines: { + // we don't put in show: false so we can see + // whether lines were actively disabled + lineWidth: 2, // in pixels + fill: false, + fillColor: null, + steps: false + // Omit 'zero', so we can later default its value to + // match that of the 'fill' option. + }, + bars: { + show: false, + lineWidth: 2, // in pixels + barWidth: 1, // in units of the x axis + fill: true, + fillColor: null, + align: "left", // "left", "right", or "center" + horizontal: false, + zero: true + }, + shadowSize: 3, + highlightColor: null + }, + grid: { + show: true, + aboveData: false, + color: "#545454", // primary color used for outline and labels + backgroundColor: null, // null for transparent, else color + borderColor: null, // set if different from the grid color + tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)" + margin: 0, // distance from the canvas edge to the grid + labelMargin: 5, // in pixels + axisMargin: 8, // in pixels + borderWidth: 2, // in pixels + minBorderMargin: null, // in pixels, null means taken from points radius + markings: null, // array of ranges or fn: axes -> array of ranges + markingsColor: "#f4f4f4", + markingsLineWidth: 2, + // interactive stuff + clickable: false, + hoverable: false, + autoHighlight: true, // highlight in case mouse is near + mouseActiveRadius: 10 // how far the mouse can be away to activate an item + }, + interaction: { + redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow + }, + hooks: {} + }, + surface = null, // the canvas for the plot itself + overlay = null, // canvas for interactive stuff on top of plot + eventHolder = null, // jQuery object that events should be bound to + ctx = null, octx = null, + xaxes = [], yaxes = [], + plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, + plotWidth = 0, plotHeight = 0, + hooks = { + processOptions: [], + processRawData: [], + processDatapoints: [], + processOffset: [], + drawBackground: [], + drawSeries: [], + draw: [], + bindEvents: [], + drawOverlay: [], + shutdown: [] + }, + plot = this; + + // public functions + plot.setData = setData; + plot.setupGrid = setupGrid; + plot.draw = draw; + plot.getPlaceholder = function() { return placeholder; }; + plot.getCanvas = function() { return surface.element; }; + plot.getPlotOffset = function() { return plotOffset; }; + plot.width = function () { return plotWidth; }; + plot.height = function () { return plotHeight; }; + plot.offset = function () { + var o = eventHolder.offset(); + o.left += plotOffset.left; + o.top += plotOffset.top; + return o; + }; + plot.getData = function () { return series; }; + plot.getAxes = function () { + var res = {}, i; + $.each(xaxes.concat(yaxes), function (_, axis) { + if (axis) + res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis; + }); + return res; + }; + plot.getXAxes = function () { return xaxes; }; + plot.getYAxes = function () { return yaxes; }; + plot.c2p = canvasToAxisCoords; + plot.p2c = axisToCanvasCoords; + plot.getOptions = function () { return options; }; + plot.highlight = highlight; + plot.unhighlight = unhighlight; + plot.triggerRedrawOverlay = triggerRedrawOverlay; + plot.pointOffset = function(point) { + return { + left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left, 10), + top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top, 10) + }; + }; + plot.shutdown = shutdown; + plot.destroy = function () { + shutdown(); + placeholder.removeData("plot").empty(); + + series = []; + options = null; + surface = null; + overlay = null; + eventHolder = null; + ctx = null; + octx = null; + xaxes = []; + yaxes = []; + hooks = null; + highlights = []; + plot = null; + }; + plot.resize = function () { + var width = placeholder.width(), + height = placeholder.height(); + surface.resize(width, height); + overlay.resize(width, height); + }; + + // public attributes + plot.hooks = hooks; + + // initialize + initPlugins(plot); + parseOptions(options_); + setupCanvases(); + setData(data_); + setupGrid(); + draw(); + bindEvents(); + + + function executeHooks(hook, args) { + args = [plot].concat(args); + for (var i = 0; i < hook.length; ++i) + hook[i].apply(this, args); + } + + function initPlugins() { + + // References to key classes, allowing plugins to modify them + + var classes = { + Canvas: Canvas + }; + + for (var i = 0; i < plugins.length; ++i) { + var p = plugins[i]; + p.init(plot, classes); + if (p.options) + $.extend(true, options, p.options); + } + } + + function parseOptions(opts) { + + $.extend(true, options, opts); + + // $.extend merges arrays, rather than replacing them. When less + // colors are provided than the size of the default palette, we + // end up with those colors plus the remaining defaults, which is + // not expected behavior; avoid it by replacing them here. + + if (opts && opts.colors) { + options.colors = opts.colors; + } + + if (options.xaxis.color == null) + options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + if (options.yaxis.color == null) + options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + + if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility + options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color; + if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility + options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color; + + if (options.grid.borderColor == null) + options.grid.borderColor = options.grid.color; + if (options.grid.tickColor == null) + options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + + // Fill in defaults for axis options, including any unspecified + // font-spec fields, if a font-spec was provided. + + // If no x/y axis options were provided, create one of each anyway, + // since the rest of the code assumes that they exist. + + var i, axisOptions, axisCount, + fontSize = placeholder.css("font-size"), + fontSizeDefault = fontSize ? +fontSize.replace("px", "") : 13, + fontDefaults = { + style: placeholder.css("font-style"), + size: Math.round(0.8 * fontSizeDefault), + variant: placeholder.css("font-variant"), + weight: placeholder.css("font-weight"), + family: placeholder.css("font-family") + }; + + axisCount = options.xaxes.length || 1; + for (i = 0; i < axisCount; ++i) { + + axisOptions = options.xaxes[i]; + if (axisOptions && !axisOptions.tickColor) { + axisOptions.tickColor = axisOptions.color; + } + + axisOptions = $.extend(true, {}, options.xaxis, axisOptions); + options.xaxes[i] = axisOptions; + + if (axisOptions.font) { + axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); + if (!axisOptions.font.color) { + axisOptions.font.color = axisOptions.color; + } + if (!axisOptions.font.lineHeight) { + axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); + } + } + } + + axisCount = options.yaxes.length || 1; + for (i = 0; i < axisCount; ++i) { + + axisOptions = options.yaxes[i]; + if (axisOptions && !axisOptions.tickColor) { + axisOptions.tickColor = axisOptions.color; + } + + axisOptions = $.extend(true, {}, options.yaxis, axisOptions); + options.yaxes[i] = axisOptions; + + if (axisOptions.font) { + axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); + if (!axisOptions.font.color) { + axisOptions.font.color = axisOptions.color; + } + if (!axisOptions.font.lineHeight) { + axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); + } + } + } + + // backwards compatibility, to be removed in future + if (options.xaxis.noTicks && options.xaxis.ticks == null) + options.xaxis.ticks = options.xaxis.noTicks; + if (options.yaxis.noTicks && options.yaxis.ticks == null) + options.yaxis.ticks = options.yaxis.noTicks; + if (options.x2axis) { + options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis); + options.xaxes[1].position = "top"; + } + if (options.y2axis) { + options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis); + options.yaxes[1].position = "right"; + } + if (options.grid.coloredAreas) + options.grid.markings = options.grid.coloredAreas; + if (options.grid.coloredAreasColor) + options.grid.markingsColor = options.grid.coloredAreasColor; + if (options.lines) + $.extend(true, options.series.lines, options.lines); + if (options.points) + $.extend(true, options.series.points, options.points); + if (options.bars) + $.extend(true, options.series.bars, options.bars); + if (options.shadowSize != null) + options.series.shadowSize = options.shadowSize; + if (options.highlightColor != null) + options.series.highlightColor = options.highlightColor; + + // save options on axes for future reference + for (i = 0; i < options.xaxes.length; ++i) + getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i]; + for (i = 0; i < options.yaxes.length; ++i) + getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i]; + + // add hooks from options + for (var n in hooks) + if (options.hooks[n] && options.hooks[n].length) + hooks[n] = hooks[n].concat(options.hooks[n]); + + executeHooks(hooks.processOptions, [options]); + } + + function setData(d) { + series = parseData(d); + fillInSeriesOptions(); + processData(); + } + + function parseData(d) { + var res = []; + for (var i = 0; i < d.length; ++i) { + var s = $.extend(true, {}, options.series); + + if (d[i].data != null) { + s.data = d[i].data; // move the data instead of deep-copy + delete d[i].data; + + $.extend(true, s, d[i]); + + d[i].data = s.data; + } + else + s.data = d[i]; + res.push(s); + } + + return res; + } + + function axisNumber(obj, coord) { + var a = obj[coord + "axis"]; + if (typeof a == "object") // if we got a real axis, extract number + a = a.n; + if (typeof a != "number") + a = 1; // default to first axis + return a; + } + + function allAxes() { + // return flat array without annoying null entries + return $.grep(xaxes.concat(yaxes), function (a) { return a; }); + } + + function canvasToAxisCoords(pos) { + // return an object with x/y corresponding to all used axes + var res = {}, i, axis; + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) + res["x" + axis.n] = axis.c2p(pos.left); + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) + res["y" + axis.n] = axis.c2p(pos.top); + } + + if (res.x1 !== undefined) + res.x = res.x1; + if (res.y1 !== undefined) + res.y = res.y1; + + return res; + } + + function axisToCanvasCoords(pos) { + // get canvas coords from the first pair of x/y found in pos + var res = {}, i, axis, key; + + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) { + key = "x" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "x"; + + if (pos[key] != null) { + res.left = axis.p2c(pos[key]); + break; + } + } + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) { + key = "y" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "y"; + + if (pos[key] != null) { + res.top = axis.p2c(pos[key]); + break; + } + } + } + + return res; + } + + function getOrCreateAxis(axes, number) { + if (!axes[number - 1]) + axes[number - 1] = { + n: number, // save the number for future reference + direction: axes == xaxes ? "x" : "y", + options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis) + }; + + return axes[number - 1]; + } + + function fillInSeriesOptions() { + + var neededColors = series.length, maxIndex = -1, i; + + // Subtract the number of series that already have fixed colors or + // color indexes from the number that we still need to generate. + + for (i = 0; i < series.length; ++i) { + var sc = series[i].color; + if (sc != null) { + neededColors--; + if (typeof sc == "number" && sc > maxIndex) { + maxIndex = sc; + } + } + } + + // If any of the series have fixed color indexes, then we need to + // generate at least as many colors as the highest index. + + if (neededColors <= maxIndex) { + neededColors = maxIndex + 1; + } + + // Generate all the colors, using first the option colors and then + // variations on those colors once they're exhausted. + + var c, colors = [], colorPool = options.colors, + colorPoolSize = colorPool.length, variation = 0; + + for (i = 0; i < neededColors; i++) { + + c = $.color.parse(colorPool[i % colorPoolSize] || "#666"); + + // Each time we exhaust the colors in the pool we adjust + // a scaling factor used to produce more variations on + // those colors. The factor alternates negative/positive + // to produce lighter/darker colors. + + // Reset the variation after every few cycles, or else + // it will end up producing only white or black colors. + + if (i % colorPoolSize == 0 && i) { + if (variation >= 0) { + if (variation < 0.5) { + variation = -variation - 0.2; + } else variation = 0; + } else variation = -variation; + } + + colors[i] = c.scale('rgb', 1 + variation); + } + + // Finalize the series options, filling in their colors + + var colori = 0, s; + for (i = 0; i < series.length; ++i) { + s = series[i]; + + // assign colors + if (s.color == null) { + s.color = colors[colori].toString(); + ++colori; + } + else if (typeof s.color == "number") + s.color = colors[s.color].toString(); + + // turn on lines automatically in case nothing is set + if (s.lines.show == null) { + var v, show = true; + for (v in s) + if (s[v] && s[v].show) { + show = false; + break; + } + if (show) + s.lines.show = true; + } + + // If nothing was provided for lines.zero, default it to match + // lines.fill, since areas by default should extend to zero. + + if (s.lines.zero == null) { + s.lines.zero = !!s.lines.fill; + } + + // setup axes + s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x")); + s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y")); + } + } + + function processData() { + var topSentry = Number.POSITIVE_INFINITY, + bottomSentry = Number.NEGATIVE_INFINITY, + fakeInfinity = Number.MAX_VALUE, + i, j, k, m, length, + s, points, ps, x, y, axis, val, f, p, + data, format; + + function updateAxis(axis, min, max) { + if (min < axis.datamin && min != -fakeInfinity) + axis.datamin = min; + if (max > axis.datamax && max != fakeInfinity) + axis.datamax = max; + } + + $.each(allAxes(), function (_, axis) { + // init axis + axis.datamin = topSentry; + axis.datamax = bottomSentry; + axis.used = false; + }); + + for (i = 0; i < series.length; ++i) { + s = series[i]; + s.datapoints = { points: [] }; + + executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); + } + + // first pass: clean and copy data + for (i = 0; i < series.length; ++i) { + s = series[i]; + + data = s.data; + format = s.datapoints.format; + + if (!format) { + format = []; + // find out how to copy + format.push({ x: true, number: true, required: true }); + format.push({ y: true, number: true, required: true }); + + if (s.bars.show || (s.lines.show && s.lines.fill)) { + var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero)); + format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale }); + if (s.bars.horizontal) { + delete format[format.length - 1].y; + format[format.length - 1].x = true; + } + } + + s.datapoints.format = format; + } + + if (s.datapoints.pointsize != null) + continue; // already filled in + + s.datapoints.pointsize = format.length; + + ps = s.datapoints.pointsize; + points = s.datapoints.points; + + var insertSteps = s.lines.show && s.lines.steps; + s.xaxis.used = s.yaxis.used = true; + + for (j = k = 0; j < data.length; ++j, k += ps) { + p = data[j]; + + var nullify = p == null; + if (!nullify) { + for (m = 0; m < ps; ++m) { + val = p[m]; + f = format[m]; + + if (f) { + if (f.number && val != null) { + val = +val; // convert to number + if (isNaN(val)) + val = null; + else if (val == Infinity) + val = fakeInfinity; + else if (val == -Infinity) + val = -fakeInfinity; + } + + if (val == null) { + if (f.required) + nullify = true; + + if (f.defaultValue != null) + val = f.defaultValue; + } + } + + points[k + m] = val; + } + } + + if (nullify) { + for (m = 0; m < ps; ++m) { + val = points[k + m]; + if (val != null) { + f = format[m]; + // extract min/max info + if (f.autoscale !== false) { + if (f.x) { + updateAxis(s.xaxis, val, val); + } + if (f.y) { + updateAxis(s.yaxis, val, val); + } + } + } + points[k + m] = null; + } + } + else { + // a little bit of line specific stuff that + // perhaps shouldn't be here, but lacking + // better means... + if (insertSteps && k > 0 + && points[k - ps] != null + && points[k - ps] != points[k] + && points[k - ps + 1] != points[k + 1]) { + // copy the point to make room for a middle point + for (m = 0; m < ps; ++m) + points[k + ps + m] = points[k + m]; + + // middle point has same y + points[k + 1] = points[k - ps + 1]; + + // we've added a point, better reflect that + k += ps; + } + } + } + } + + // give the hooks a chance to run + for (i = 0; i < series.length; ++i) { + s = series[i]; + + executeHooks(hooks.processDatapoints, [ s, s.datapoints]); + } + + // second pass: find datamax/datamin for auto-scaling + for (i = 0; i < series.length; ++i) { + s = series[i]; + points = s.datapoints.points; + ps = s.datapoints.pointsize; + format = s.datapoints.format; + + var xmin = topSentry, ymin = topSentry, + xmax = bottomSentry, ymax = bottomSentry; + + for (j = 0; j < points.length; j += ps) { + if (points[j] == null) + continue; + + for (m = 0; m < ps; ++m) { + val = points[j + m]; + f = format[m]; + if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity) + continue; + + if (f.x) { + if (val < xmin) + xmin = val; + if (val > xmax) + xmax = val; + } + if (f.y) { + if (val < ymin) + ymin = val; + if (val > ymax) + ymax = val; + } + } + } + + if (s.bars.show) { + // make sure we got room for the bar on the dancing floor + var delta; + + switch (s.bars.align) { + case "left": + delta = 0; + break; + case "right": + delta = -s.bars.barWidth; + break; + default: + delta = -s.bars.barWidth / 2; + } + + if (s.bars.horizontal) { + ymin += delta; + ymax += delta + s.bars.barWidth; + } + else { + xmin += delta; + xmax += delta + s.bars.barWidth; + } + } + + updateAxis(s.xaxis, xmin, xmax); + updateAxis(s.yaxis, ymin, ymax); + } + + $.each(allAxes(), function (_, axis) { + if (axis.datamin == topSentry) + axis.datamin = null; + if (axis.datamax == bottomSentry) + axis.datamax = null; + }); + } + + function setupCanvases() { + + // Make sure the placeholder is clear of everything except canvases + // from a previous plot in this container that we'll try to re-use. + + placeholder.css("padding", 0) // padding messes up the positioning + .children().filter(function(){ + return !$(this).hasClass("flot-overlay") && !$(this).hasClass('flot-base'); + }).remove(); + + if (placeholder.css("position") == 'static') + placeholder.css("position", "relative"); // for positioning labels and overlay + + surface = new Canvas("flot-base", placeholder); + overlay = new Canvas("flot-overlay", placeholder); // overlay canvas for interactive features + + ctx = surface.context; + octx = overlay.context; + + // define which element we're listening for events on + eventHolder = $(overlay.element).unbind(); + + // If we're re-using a plot object, shut down the old one + + var existing = placeholder.data("plot"); + + if (existing) { + existing.shutdown(); + overlay.clear(); + } + + // save in case we get replotted + placeholder.data("plot", plot); + } + + function bindEvents() { + // bind events + if (options.grid.hoverable) { + eventHolder.mousemove(onMouseMove); + + // Use bind, rather than .mouseleave, because we officially + // still support jQuery 1.2.6, which doesn't define a shortcut + // for mouseenter or mouseleave. This was a bug/oversight that + // was fixed somewhere around 1.3.x. We can return to using + // .mouseleave when we drop support for 1.2.6. + + eventHolder.bind("mouseleave", onMouseLeave); + } + + if (options.grid.clickable) + eventHolder.click(onClick); + + executeHooks(hooks.bindEvents, [eventHolder]); + } + + function shutdown() { + if (redrawTimeout) + clearTimeout(redrawTimeout); + + eventHolder.unbind("mousemove", onMouseMove); + eventHolder.unbind("mouseleave", onMouseLeave); + eventHolder.unbind("click", onClick); + + executeHooks(hooks.shutdown, [eventHolder]); + } + + function setTransformationHelpers(axis) { + // set helper functions on the axis, assumes plot area + // has been computed already + + function identity(x) { return x; } + + var s, m, t = axis.options.transform || identity, + it = axis.options.inverseTransform; + + // precompute how much the axis is scaling a point + // in canvas space + if (axis.direction == "x") { + s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min)); + m = Math.min(t(axis.max), t(axis.min)); + } + else { + s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min)); + s = -s; + m = Math.max(t(axis.max), t(axis.min)); + } + + // data point to canvas coordinate + if (t == identity) // slight optimization + axis.p2c = function (p) { return (p - m) * s; }; + else + axis.p2c = function (p) { return (t(p) - m) * s; }; + // canvas coordinate to data point + if (!it) + axis.c2p = function (c) { return m + c / s; }; + else + axis.c2p = function (c) { return it(m + c / s); }; + } + + function measureTickLabels(axis) { + + var opts = axis.options, + ticks = axis.ticks || [], + labelWidth = opts.labelWidth || 0, + labelHeight = opts.labelHeight || 0, + maxWidth = labelWidth || (axis.direction == "x" ? Math.floor(surface.width / (ticks.length || 1)) : null), + legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", + layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, + font = opts.font || "flot-tick-label tickLabel"; + + for (var i = 0; i < ticks.length; ++i) { + + var t = ticks[i]; + + if (!t.label) + continue; + + var info = surface.getTextInfo(layer, t.label, font, null, maxWidth); + + labelWidth = Math.max(labelWidth, info.width); + labelHeight = Math.max(labelHeight, info.height); + } + + axis.labelWidth = opts.labelWidth || labelWidth; + axis.labelHeight = opts.labelHeight || labelHeight; + } + + function allocateAxisBoxFirstPhase(axis) { + // find the bounding box of the axis by looking at label + // widths/heights and ticks, make room by diminishing the + // plotOffset; this first phase only looks at one + // dimension per axis, the other dimension depends on the + // other axes so will have to wait + + var lw = axis.labelWidth, + lh = axis.labelHeight, + pos = axis.options.position, + isXAxis = axis.direction === "x", + tickLength = axis.options.tickLength, + axisMargin = options.grid.axisMargin, + padding = options.grid.labelMargin, + innermost = true, + outermost = true, + first = true, + found = false; + + // Determine the axis's position in its direction and on its side + + $.each(isXAxis ? xaxes : yaxes, function(i, a) { + if (a && a.reserveSpace) { + if (a === axis) { + found = true; + } else if (a.options.position === pos) { + if (found) { + outermost = false; + } else { + innermost = false; + } + } + if (!found) { + first = false; + } + } + }); + + // The outermost axis on each side has no margin + + if (outermost) { + axisMargin = 0; + } + + // The ticks for the first axis in each direction stretch across + + if (tickLength == null) { + tickLength = first ? "full" : 5; + } + + if (!isNaN(+tickLength)) + padding += +tickLength; + + if (isXAxis) { + lh += padding; + + if (pos == "bottom") { + plotOffset.bottom += lh + axisMargin; + axis.box = { top: surface.height - plotOffset.bottom, height: lh }; + } + else { + axis.box = { top: plotOffset.top + axisMargin, height: lh }; + plotOffset.top += lh + axisMargin; + } + } + else { + lw += padding; + + if (pos == "left") { + axis.box = { left: plotOffset.left + axisMargin, width: lw }; + plotOffset.left += lw + axisMargin; + } + else { + plotOffset.right += lw + axisMargin; + axis.box = { left: surface.width - plotOffset.right, width: lw }; + } + } + + // save for future reference + axis.position = pos; + axis.tickLength = tickLength; + axis.box.padding = padding; + axis.innermost = innermost; + } + + function allocateAxisBoxSecondPhase(axis) { + // now that all axis boxes have been placed in one + // dimension, we can set the remaining dimension coordinates + if (axis.direction == "x") { + axis.box.left = plotOffset.left - axis.labelWidth / 2; + axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth; + } + else { + axis.box.top = plotOffset.top - axis.labelHeight / 2; + axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight; + } + } + + function adjustLayoutForThingsStickingOut() { + // possibly adjust plot offset to ensure everything stays + // inside the canvas and isn't clipped off + + var minMargin = options.grid.minBorderMargin, + axis, i; + + // check stuff from the plot (FIXME: this should just read + // a value from the series, otherwise it's impossible to + // customize) + if (minMargin == null) { + minMargin = 0; + for (i = 0; i < series.length; ++i) + minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2)); + } + + var margins = { + left: minMargin, + right: minMargin, + top: minMargin, + bottom: minMargin + }; + + // check axis labels, note we don't check the actual + // labels but instead use the overall width/height to not + // jump as much around with replots + $.each(allAxes(), function (_, axis) { + if (axis.reserveSpace && axis.ticks && axis.ticks.length) { + var lastTick = axis.ticks[axis.ticks.length - 1]; + if (axis.direction === "x") { + margins.left = Math.max(margins.left, axis.labelWidth / 2); + if (lastTick.v <= axis.max) { + margins.right = Math.max(margins.right, axis.labelWidth / 2); + } + } else { + margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2); + if (lastTick.v <= axis.max) { + margins.top = Math.max(margins.top, axis.labelHeight / 2); + } + } + } + }); + + plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left)); + plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right)); + plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top)); + plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom)); + } + + function setupGrid() { + var i, axes = allAxes(), showGrid = options.grid.show; + + // Initialize the plot's offset from the edge of the canvas + + for (var a in plotOffset) { + var margin = options.grid.margin || 0; + plotOffset[a] = typeof margin == "number" ? margin : margin[a] || 0; + } + + executeHooks(hooks.processOffset, [plotOffset]); + + // If the grid is visible, add its border width to the offset + + for (var a in plotOffset) { + if(typeof(options.grid.borderWidth) == "object") { + plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0; + } + else { + plotOffset[a] += showGrid ? options.grid.borderWidth : 0; + } + } + + // init axes + $.each(axes, function (_, axis) { + axis.show = axis.options.show; + if (axis.show == null) + axis.show = axis.used; // by default an axis is visible if it's got data + + axis.reserveSpace = axis.show || axis.options.reserveSpace; + + setRange(axis); + }); + + if (showGrid) { + + var allocatedAxes = $.grep(axes, function (axis) { return axis.reserveSpace; }); + + $.each(allocatedAxes, function (_, axis) { + // make the ticks + setupTickGeneration(axis); + setTicks(axis); + snapRangeToTicks(axis, axis.ticks); + // find labelWidth/Height for axis + measureTickLabels(axis); + }); + + // with all dimensions calculated, we can compute the + // axis bounding boxes, start from the outside + // (reverse order) + for (i = allocatedAxes.length - 1; i >= 0; --i) + allocateAxisBoxFirstPhase(allocatedAxes[i]); + + // make sure we've got enough space for things that + // might stick out + adjustLayoutForThingsStickingOut(); + + $.each(allocatedAxes, function (_, axis) { + allocateAxisBoxSecondPhase(axis); + }); + } + + plotWidth = surface.width - plotOffset.left - plotOffset.right; + plotHeight = surface.height - plotOffset.bottom - plotOffset.top; + + // now we got the proper plot dimensions, we can compute the scaling + $.each(axes, function (_, axis) { + setTransformationHelpers(axis); + }); + + if (showGrid) { + drawAxisLabels(); + } + + insertLegend(); + } + + function setRange(axis) { + var opts = axis.options, + min = +(opts.min != null ? opts.min : axis.datamin), + max = +(opts.max != null ? opts.max : axis.datamax), + delta = max - min; + + if (delta == 0.0) { + // degenerate case + var widen = max == 0 ? 1 : 0.01; + + if (opts.min == null) + min -= widen; + // always widen max if we couldn't widen min to ensure we + // don't fall into min == max which doesn't work + if (opts.max == null || opts.min != null) + max += widen; + } + else { + // consider autoscaling + var margin = opts.autoscaleMargin; + if (margin != null) { + if (opts.min == null) { + min -= delta * margin; + // make sure we don't go below zero if all values + // are positive + if (min < 0 && axis.datamin != null && axis.datamin >= 0) + min = 0; + } + if (opts.max == null) { + max += delta * margin; + if (max > 0 && axis.datamax != null && axis.datamax <= 0) + max = 0; + } + } + } + axis.min = min; + axis.max = max; + } + + function setupTickGeneration(axis) { + var opts = axis.options; + + // estimate number of ticks + var noTicks; + if (typeof opts.ticks == "number" && opts.ticks > 0) + noTicks = opts.ticks; + else + // heuristic based on the model a*sqrt(x) fitted to + // some data points that seemed reasonable + noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? surface.width : surface.height); + + var delta = (axis.max - axis.min) / noTicks, + dec = -Math.floor(Math.log(delta) / Math.LN10), + maxDec = opts.tickDecimals; + + if (maxDec != null && dec > maxDec) { + dec = maxDec; + } + + var magn = Math.pow(10, -dec), + norm = delta / magn, // norm is between 1.0 and 10.0 + size; + + if (norm < 1.5) { + size = 1; + } else if (norm < 3) { + size = 2; + // special case for 2.5, requires an extra decimal + if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { + size = 2.5; + ++dec; + } + } else if (norm < 7.5) { + size = 5; + } else { + size = 10; + } + + size *= magn; + + if (opts.minTickSize != null && size < opts.minTickSize) { + size = opts.minTickSize; + } + + axis.delta = delta; + axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); + axis.tickSize = opts.tickSize || size; + + // Time mode was moved to a plug-in in 0.8, but since so many people use this + // we'll add an especially friendly make sure they remembered to include it. + + if (opts.mode == "time" && !axis.tickGenerator) { + throw new Error("Time mode requires the flot.time plugin."); + } + + // Flot supports base-10 axes; any other mode else is handled by a plug-in, + // like flot.time.js. + + if (!axis.tickGenerator) { + + axis.tickGenerator = function (axis) { + + var ticks = [], + start = floorInBase(axis.min, axis.tickSize), + i = 0, + v = Number.NaN, + prev; + + do { + prev = v; + v = start + i * axis.tickSize; + ticks.push(v); + ++i; + } while (v < axis.max && v != prev); + return ticks; + }; + + axis.tickFormatter = function (value, axis) { + + var factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1; + var formatted = "" + Math.round(value * factor) / factor; + + // If tickDecimals was specified, ensure that we have exactly that + // much precision; otherwise default to the value's own precision. + + if (axis.tickDecimals != null) { + var decimal = formatted.indexOf("."); + var precision = decimal == -1 ? 0 : formatted.length - decimal - 1; + if (precision < axis.tickDecimals) { + return (precision ? formatted : formatted + ".") + ("" + factor).substr(1, axis.tickDecimals - precision); + } + } + + return formatted; + }; + } + + if ($.isFunction(opts.tickFormatter)) + axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); }; + + if (opts.alignTicksWithAxis != null) { + var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1]; + if (otherAxis && otherAxis.used && otherAxis != axis) { + // consider snapping min/max to outermost nice ticks + var niceTicks = axis.tickGenerator(axis); + if (niceTicks.length > 0) { + if (opts.min == null) + axis.min = Math.min(axis.min, niceTicks[0]); + if (opts.max == null && niceTicks.length > 1) + axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]); + } + + axis.tickGenerator = function (axis) { + // copy ticks, scaled to this axis + var ticks = [], v, i; + for (i = 0; i < otherAxis.ticks.length; ++i) { + v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min); + v = axis.min + v * (axis.max - axis.min); + ticks.push(v); + } + return ticks; + }; + + // we might need an extra decimal since forced + // ticks don't necessarily fit naturally + if (!axis.mode && opts.tickDecimals == null) { + var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1), + ts = axis.tickGenerator(axis); + + // only proceed if the tick interval rounded + // with an extra decimal doesn't give us a + // zero at end + if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec)))) + axis.tickDecimals = extraDec; + } + } + } + } + + function setTicks(axis) { + var oticks = axis.options.ticks, ticks = []; + if (oticks == null || (typeof oticks == "number" && oticks > 0)) + ticks = axis.tickGenerator(axis); + else if (oticks) { + if ($.isFunction(oticks)) + // generate the ticks + ticks = oticks(axis); + else + ticks = oticks; + } + + // clean up/labelify the supplied ticks, copy them over + var i, v; + axis.ticks = []; + for (i = 0; i < ticks.length; ++i) { + var label = null; + var t = ticks[i]; + if (typeof t == "object") { + v = +t[0]; + if (t.length > 1) + label = t[1]; + } + else + v = +t; + if (label == null) + label = axis.tickFormatter(v, axis); + if (!isNaN(v)) + axis.ticks.push({ v: v, label: label }); + } + } + + function snapRangeToTicks(axis, ticks) { + if (axis.options.autoscaleMargin && ticks.length > 0) { + // snap to ticks + if (axis.options.min == null) + axis.min = Math.min(axis.min, ticks[0].v); + if (axis.options.max == null && ticks.length > 1) + axis.max = Math.max(axis.max, ticks[ticks.length - 1].v); + } + } + + function draw() { + + surface.clear(); + + executeHooks(hooks.drawBackground, [ctx]); + + var grid = options.grid; + + // draw background, if any + if (grid.show && grid.backgroundColor) + drawBackground(); + + if (grid.show && !grid.aboveData) { + drawGrid(); + } + + for (var i = 0; i < series.length; ++i) { + executeHooks(hooks.drawSeries, [ctx, series[i]]); + drawSeries(series[i]); + } + + executeHooks(hooks.draw, [ctx]); + + if (grid.show && grid.aboveData) { + drawGrid(); + } + + surface.render(); + + // A draw implies that either the axes or data have changed, so we + // should probably update the overlay highlights as well. + + triggerRedrawOverlay(); + } + + function extractRange(ranges, coord) { + var axis, from, to, key, axes = allAxes(); + + for (var i = 0; i < axes.length; ++i) { + axis = axes[i]; + if (axis.direction == coord) { + key = coord + axis.n + "axis"; + if (!ranges[key] && axis.n == 1) + key = coord + "axis"; // support x1axis as xaxis + if (ranges[key]) { + from = ranges[key].from; + to = ranges[key].to; + break; + } + } + } + + // backwards-compat stuff - to be removed in future + if (!ranges[key]) { + axis = coord == "x" ? xaxes[0] : yaxes[0]; + from = ranges[coord + "1"]; + to = ranges[coord + "2"]; + } + + // auto-reverse as an added bonus + if (from != null && to != null && from > to) { + var tmp = from; + from = to; + to = tmp; + } + + return { from: from, to: to, axis: axis }; + } + + function drawBackground() { + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); + ctx.fillRect(0, 0, plotWidth, plotHeight); + ctx.restore(); + } + + function drawGrid() { + var i, axes, bw, bc; + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // draw markings + var markings = options.grid.markings; + if (markings) { + if ($.isFunction(markings)) { + axes = plot.getAxes(); + // xmin etc. is backwards compatibility, to be + // removed in the future + axes.xmin = axes.xaxis.min; + axes.xmax = axes.xaxis.max; + axes.ymin = axes.yaxis.min; + axes.ymax = axes.yaxis.max; + + markings = markings(axes); + } + + for (i = 0; i < markings.length; ++i) { + var m = markings[i], + xrange = extractRange(m, "x"), + yrange = extractRange(m, "y"); + + // fill in missing + if (xrange.from == null) + xrange.from = xrange.axis.min; + if (xrange.to == null) + xrange.to = xrange.axis.max; + if (yrange.from == null) + yrange.from = yrange.axis.min; + if (yrange.to == null) + yrange.to = yrange.axis.max; + + // clip + if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || + yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) + continue; + + xrange.from = Math.max(xrange.from, xrange.axis.min); + xrange.to = Math.min(xrange.to, xrange.axis.max); + yrange.from = Math.max(yrange.from, yrange.axis.min); + yrange.to = Math.min(yrange.to, yrange.axis.max); + + if (xrange.from == xrange.to && yrange.from == yrange.to) + continue; + + // then draw + xrange.from = xrange.axis.p2c(xrange.from); + xrange.to = xrange.axis.p2c(xrange.to); + yrange.from = yrange.axis.p2c(yrange.from); + yrange.to = yrange.axis.p2c(yrange.to); + + if (xrange.from == xrange.to || yrange.from == yrange.to) { + // draw line + ctx.beginPath(); + ctx.strokeStyle = m.color || options.grid.markingsColor; + ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth; + ctx.moveTo(xrange.from, yrange.from); + ctx.lineTo(xrange.to, yrange.to); + ctx.stroke(); + } + else { + // fill area + ctx.fillStyle = m.color || options.grid.markingsColor; + ctx.fillRect(xrange.from, yrange.to, + xrange.to - xrange.from, + yrange.from - yrange.to); + } + } + } + + // draw the ticks + axes = allAxes(); + bw = options.grid.borderWidth; + + for (var j = 0; j < axes.length; ++j) { + var axis = axes[j], box = axis.box, + t = axis.tickLength, x, y, xoff, yoff; + if (!axis.show || axis.ticks.length == 0) + continue; + + ctx.lineWidth = 1; + + // find the edges + if (axis.direction == "x") { + x = 0; + if (t == "full") + y = (axis.position == "top" ? 0 : plotHeight); + else + y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0); + } + else { + y = 0; + if (t == "full") + x = (axis.position == "left" ? 0 : plotWidth); + else + x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0); + } + + // draw tick bar + if (!axis.innermost) { + ctx.strokeStyle = axis.options.color; + ctx.beginPath(); + xoff = yoff = 0; + if (axis.direction == "x") + xoff = plotWidth + 1; + else + yoff = plotHeight + 1; + + if (ctx.lineWidth == 1) { + if (axis.direction == "x") { + y = Math.floor(y) + 0.5; + } else { + x = Math.floor(x) + 0.5; + } + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + ctx.stroke(); + } + + // draw ticks + + ctx.strokeStyle = axis.options.tickColor; + + ctx.beginPath(); + for (i = 0; i < axis.ticks.length; ++i) { + var v = axis.ticks[i].v; + + xoff = yoff = 0; + + if (isNaN(v) || v < axis.min || v > axis.max + // skip those lying on the axes if we got a border + || (t == "full" + && ((typeof bw == "object" && bw[axis.position] > 0) || bw > 0) + && (v == axis.min || v == axis.max))) + continue; + + if (axis.direction == "x") { + x = axis.p2c(v); + yoff = t == "full" ? -plotHeight : t; + + if (axis.position == "top") + yoff = -yoff; + } + else { + y = axis.p2c(v); + xoff = t == "full" ? -plotWidth : t; + + if (axis.position == "left") + xoff = -xoff; + } + + if (ctx.lineWidth == 1) { + if (axis.direction == "x") + x = Math.floor(x) + 0.5; + else + y = Math.floor(y) + 0.5; + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + } + + ctx.stroke(); + } + + + // draw border + if (bw) { + // If either borderWidth or borderColor is an object, then draw the border + // line by line instead of as one rectangle + bc = options.grid.borderColor; + if(typeof bw == "object" || typeof bc == "object") { + if (typeof bw !== "object") { + bw = {top: bw, right: bw, bottom: bw, left: bw}; + } + if (typeof bc !== "object") { + bc = {top: bc, right: bc, bottom: bc, left: bc}; + } + + if (bw.top > 0) { + ctx.strokeStyle = bc.top; + ctx.lineWidth = bw.top; + ctx.beginPath(); + ctx.moveTo(0 - bw.left, 0 - bw.top/2); + ctx.lineTo(plotWidth, 0 - bw.top/2); + ctx.stroke(); + } + + if (bw.right > 0) { + ctx.strokeStyle = bc.right; + ctx.lineWidth = bw.right; + ctx.beginPath(); + ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top); + ctx.lineTo(plotWidth + bw.right / 2, plotHeight); + ctx.stroke(); + } + + if (bw.bottom > 0) { + ctx.strokeStyle = bc.bottom; + ctx.lineWidth = bw.bottom; + ctx.beginPath(); + ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2); + ctx.lineTo(0, plotHeight + bw.bottom / 2); + ctx.stroke(); + } + + if (bw.left > 0) { + ctx.strokeStyle = bc.left; + ctx.lineWidth = bw.left; + ctx.beginPath(); + ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom); + ctx.lineTo(0- bw.left/2, 0); + ctx.stroke(); + } + } + else { + ctx.lineWidth = bw; + ctx.strokeStyle = options.grid.borderColor; + ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); + } + } + + ctx.restore(); + } + + function drawAxisLabels() { + + $.each(allAxes(), function (_, axis) { + var box = axis.box, + legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", + layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, + font = axis.options.font || "flot-tick-label tickLabel", + tick, x, y, halign, valign; + + // Remove text before checking for axis.show and ticks.length; + // otherwise plugins, like flot-tickrotor, that draw their own + // tick labels will end up with both theirs and the defaults. + + surface.removeText(layer); + + if (!axis.show || axis.ticks.length == 0) + return; + + for (var i = 0; i < axis.ticks.length; ++i) { + + tick = axis.ticks[i]; + if (!tick.label || tick.v < axis.min || tick.v > axis.max) + continue; + + if (axis.direction == "x") { + halign = "center"; + x = plotOffset.left + axis.p2c(tick.v); + if (axis.position == "bottom") { + y = box.top + box.padding; + } else { + y = box.top + box.height - box.padding; + valign = "bottom"; + } + } else { + valign = "middle"; + y = plotOffset.top + axis.p2c(tick.v); + if (axis.position == "left") { + x = box.left + box.width - box.padding; + halign = "right"; + } else { + x = box.left + box.padding; + } + } + + surface.addText(layer, x, y, tick.label, font, null, null, halign, valign); + } + }); + } + + function drawSeries(series) { + if (series.lines.show) + drawSeriesLines(series); + if (series.bars.show) + drawSeriesBars(series); + if (series.points.show) + drawSeriesPoints(series); + } + + function drawSeriesLines(series) { + function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + prevx = null, prevy = null; + + ctx.beginPath(); + for (var i = ps; i < points.length; i += ps) { + var x1 = points[i - ps], y1 = points[i - ps + 1], + x2 = points[i], y2 = points[i + 1]; + + if (x1 == null || x2 == null) + continue; + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min) { + if (y2 < axisy.min) + continue; // line segment is outside + // compute new intersection point + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min) { + if (y1 < axisy.min) + continue; + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max) { + if (y2 > axisy.max) + continue; + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max) { + if (y1 > axisy.max) + continue; + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (x1 != prevx || y1 != prevy) + ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); + + prevx = x2; + prevy = y2; + ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); + } + ctx.stroke(); + } + + function plotLineArea(datapoints, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + bottom = Math.min(Math.max(0, axisy.min), axisy.max), + i = 0, top, areaOpen = false, + ypos = 1, segmentStart = 0, segmentEnd = 0; + + // we process each segment in two turns, first forward + // direction to sketch out top, then once we hit the + // end we go backwards to sketch the bottom + while (true) { + if (ps > 0 && i > points.length + ps) + break; + + i += ps; // ps is negative if going backwards + + var x1 = points[i - ps], + y1 = points[i - ps + ypos], + x2 = points[i], y2 = points[i + ypos]; + + if (areaOpen) { + if (ps > 0 && x1 != null && x2 == null) { + // at turning point + segmentEnd = i; + ps = -ps; + ypos = 2; + continue; + } + + if (ps < 0 && i == segmentStart + ps) { + // done with the reverse sweep + ctx.fill(); + areaOpen = false; + ps = -ps; + ypos = 1; + i = segmentStart = segmentEnd + ps; + continue; + } + } + + if (x1 == null || x2 == null) + continue; + + // clip x values + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (!areaOpen) { + // open area + ctx.beginPath(); + ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); + areaOpen = true; + } + + // now first check the case where both is outside + if (y1 >= axisy.max && y2 >= axisy.max) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); + continue; + } + else if (y1 <= axisy.min && y2 <= axisy.min) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); + continue; + } + + // else it's a bit more complicated, there might + // be a flat maxed out rectangle first, then a + // triangular cutout or reverse; to find these + // keep track of the current x values + var x1old = x1, x2old = x2; + + // clip the y values, without shortcutting, we + // go through all cases in turn + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // if the x value was changed we got a rectangle + // to fill + if (x1 != x1old) { + ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1)); + // it goes to (x1, y1), but we fill that below + } + + // fill triangular section, this sometimes result + // in redundant points if (x1, y1) hasn't changed + // from previous line to, but we just ignore that + ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + + // fill the other rectangle if it's there + if (x2 != x2old) { + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2)); + } + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + ctx.lineJoin = "round"; + + var lw = series.lines.lineWidth, + sw = series.shadowSize; + // FIXME: consider another form of shadow when filling is turned on + if (lw > 0 && sw > 0) { + // draw shadow as a thick and thin line with transparency + ctx.lineWidth = sw; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + // position shadow at angle from the mid of line + var angle = Math.PI/18; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); + ctx.lineWidth = sw/2; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); + if (fillStyle) { + ctx.fillStyle = fillStyle; + plotLineArea(series.datapoints, series.xaxis, series.yaxis); + } + + if (lw > 0) + plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); + ctx.restore(); + } + + function drawSeriesPoints(series) { + function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + var x = points[i], y = points[i + 1]; + if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + continue; + + ctx.beginPath(); + x = axisx.p2c(x); + y = axisy.p2c(y) + offset; + if (symbol == "circle") + ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false); + else + symbol(ctx, x, y, radius, shadow); + ctx.closePath(); + + if (fillStyle) { + ctx.fillStyle = fillStyle; + ctx.fill(); + } + ctx.stroke(); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + var lw = series.points.lineWidth, + sw = series.shadowSize, + radius = series.points.radius, + symbol = series.points.symbol; + + // If the user sets the line width to 0, we change it to a very + // small value. A line width of 0 seems to force the default of 1. + // Doing the conditional here allows the shadow setting to still be + // optional even with a lineWidth of 0. + + if( lw == 0 ) + lw = 0.0001; + + if (lw > 0 && sw > 0) { + // draw shadow in two steps + var w = sw / 2; + ctx.lineWidth = w; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + plotPoints(series.datapoints, radius, null, w + w/2, true, + series.xaxis, series.yaxis, symbol); + + ctx.strokeStyle = "rgba(0,0,0,0.2)"; + plotPoints(series.datapoints, radius, null, w/2, true, + series.xaxis, series.yaxis, symbol); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + plotPoints(series.datapoints, radius, + getFillStyle(series.points, series.color), 0, false, + series.xaxis, series.yaxis, symbol); + ctx.restore(); + } + + function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) { + var left, right, bottom, top, + drawLeft, drawRight, drawTop, drawBottom, + tmp; + + // in horizontal mode, we start the bar from the left + // instead of from the bottom so it appears to be + // horizontal rather than vertical + if (horizontal) { + drawBottom = drawRight = drawTop = true; + drawLeft = false; + left = b; + right = x; + top = y + barLeft; + bottom = y + barRight; + + // account for negative bars + if (right < left) { + tmp = right; + right = left; + left = tmp; + drawLeft = true; + drawRight = false; + } + } + else { + drawLeft = drawRight = drawTop = true; + drawBottom = false; + left = x + barLeft; + right = x + barRight; + bottom = b; + top = y; + + // account for negative bars + if (top < bottom) { + tmp = top; + top = bottom; + bottom = tmp; + drawBottom = true; + drawTop = false; + } + } + + // clip + if (right < axisx.min || left > axisx.max || + top < axisy.min || bottom > axisy.max) + return; + + if (left < axisx.min) { + left = axisx.min; + drawLeft = false; + } + + if (right > axisx.max) { + right = axisx.max; + drawRight = false; + } + + if (bottom < axisy.min) { + bottom = axisy.min; + drawBottom = false; + } + + if (top > axisy.max) { + top = axisy.max; + drawTop = false; + } + + left = axisx.p2c(left); + bottom = axisy.p2c(bottom); + right = axisx.p2c(right); + top = axisy.p2c(top); + + // fill the bar + if (fillStyleCallback) { + c.fillStyle = fillStyleCallback(bottom, top); + c.fillRect(left, top, right - left, bottom - top) + } + + // draw outline + if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) { + c.beginPath(); + + // FIXME: inline moveTo is buggy with excanvas + c.moveTo(left, bottom); + if (drawLeft) + c.lineTo(left, top); + else + c.moveTo(left, top); + if (drawTop) + c.lineTo(right, top); + else + c.moveTo(right, top); + if (drawRight) + c.lineTo(right, bottom); + else + c.moveTo(right, bottom); + if (drawBottom) + c.lineTo(left, bottom); + else + c.moveTo(left, bottom); + c.stroke(); + } + } + + function drawSeriesBars(series) { + function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + if (points[i] == null) + continue; + drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // FIXME: figure out a way to add shadows (for instance along the right edge) + ctx.lineWidth = series.bars.lineWidth; + ctx.strokeStyle = series.color; + + var barLeft; + + switch (series.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -series.bars.barWidth; + break; + default: + barLeft = -series.bars.barWidth / 2; + } + + var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; + plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis); + ctx.restore(); + } + + function getFillStyle(filloptions, seriesColor, bottom, top) { + var fill = filloptions.fill; + if (!fill) + return null; + + if (filloptions.fillColor) + return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); + + var c = $.color.parse(seriesColor); + c.a = typeof fill == "number" ? fill : 0.4; + c.normalize(); + return c.toString(); + } + + function insertLegend() { + + if (options.legend.container != null) { + $(options.legend.container).html(""); + } else { + placeholder.find(".legend").remove(); + } + + if (!options.legend.show) { + return; + } + + var fragments = [], entries = [], rowStarted = false, + lf = options.legend.labelFormatter, s, label; + + // Build a list of legend entries, with each having a label and a color + + for (var i = 0; i < series.length; ++i) { + s = series[i]; + if (s.label) { + label = lf ? lf(s.label, s) : s.label; + if (label) { + entries.push({ + label: label, + color: s.color + }); + } + } + } + + // Sort the legend using either the default or a custom comparator + + if (options.legend.sorted) { + if ($.isFunction(options.legend.sorted)) { + entries.sort(options.legend.sorted); + } else if (options.legend.sorted == "reverse") { + entries.reverse(); + } else { + var ascending = options.legend.sorted != "descending"; + entries.sort(function(a, b) { + return a.label == b.label ? 0 : ( + (a.label < b.label) != ascending ? 1 : -1 // Logical XOR + ); + }); + } + } + + // Generate markup for the list of entries, in their final order + + for (var i = 0; i < entries.length; ++i) { + + var entry = entries[i]; + + if (i % options.legend.noColumns == 0) { + if (rowStarted) + fragments.push(''); + fragments.push(''); + rowStarted = true; + } + + fragments.push( + '
      ' + + '' + entry.label + '' + ); + } + + if (rowStarted) + fragments.push(''); + + if (fragments.length == 0) + return; + + var table = '' + fragments.join("") + '
      '; + if (options.legend.container != null) + $(options.legend.container).html(table); + else { + var pos = "", + p = options.legend.position, + m = options.legend.margin; + if (m[0] == null) + m = [m, m]; + if (p.charAt(0) == "n") + pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; + else if (p.charAt(0) == "s") + pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; + if (p.charAt(1) == "e") + pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; + else if (p.charAt(1) == "w") + pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; + var legend = $('
      ' + table.replace('style="', 'style="position:absolute;' + pos +';') + '
      ').appendTo(placeholder); + if (options.legend.backgroundOpacity != 0.0) { + // put in the transparent background + // separately to avoid blended labels and + // label boxes + var c = options.legend.backgroundColor; + if (c == null) { + c = options.grid.backgroundColor; + if (c && typeof c == "string") + c = $.color.parse(c); + else + c = $.color.extract(legend, 'background-color'); + c.a = 1; + c = c.toString(); + } + var div = legend.children(); + $('
      ').prependTo(legend).css('opacity', options.legend.backgroundOpacity); + } + } + } + + + // interactive features + + var highlights = [], + redrawTimeout = null; + + // returns the data item the mouse is over, or null if none is found + function findNearbyItem(mouseX, mouseY, seriesFilter) { + var maxDistance = options.grid.mouseActiveRadius, + smallestDistance = maxDistance * maxDistance + 1, + item = null, foundPoint = false, i, j, ps; + + for (i = series.length - 1; i >= 0; --i) { + if (!seriesFilter(series[i])) + continue; + + var s = series[i], + axisx = s.xaxis, + axisy = s.yaxis, + points = s.datapoints.points, + mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster + my = axisy.c2p(mouseY), + maxx = maxDistance / axisx.scale, + maxy = maxDistance / axisy.scale; + + ps = s.datapoints.pointsize; + // with inverse transforms, we can't use the maxx/maxy + // optimization, sadly + if (axisx.options.inverseTransform) + maxx = Number.MAX_VALUE; + if (axisy.options.inverseTransform) + maxy = Number.MAX_VALUE; + + if (s.lines.show || s.points.show) { + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1]; + if (x == null) + continue; + + // For points and lines, the cursor must be within a + // certain distance to the data point + if (x - mx > maxx || x - mx < -maxx || + y - my > maxy || y - my < -maxy) + continue; + + // We have to calculate distances in pixels, not in + // data units, because the scales of the axes may be different + var dx = Math.abs(axisx.p2c(x) - mouseX), + dy = Math.abs(axisy.p2c(y) - mouseY), + dist = dx * dx + dy * dy; // we save the sqrt + + // use <= to ensure last point takes precedence + // (last generally means on top of) + if (dist < smallestDistance) { + smallestDistance = dist; + item = [i, j / ps]; + } + } + } + + if (s.bars.show && !item) { // no other point can be nearby + + var barLeft, barRight; + + switch (s.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -s.bars.barWidth; + break; + default: + barLeft = -s.bars.barWidth / 2; + } + + barRight = barLeft + s.bars.barWidth; + + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1], b = points[j + 2]; + if (x == null) + continue; + + // for a bar graph, the cursor must be inside the bar + if (series[i].bars.horizontal ? + (mx <= Math.max(b, x) && mx >= Math.min(b, x) && + my >= y + barLeft && my <= y + barRight) : + (mx >= x + barLeft && mx <= x + barRight && + my >= Math.min(b, y) && my <= Math.max(b, y))) + item = [i, j / ps]; + } + } + } + + if (item) { + i = item[0]; + j = item[1]; + ps = series[i].datapoints.pointsize; + + return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), + dataIndex: j, + series: series[i], + seriesIndex: i }; + } + + return null; + } + + function onMouseMove(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return s["hoverable"] != false; }); + } + + function onMouseLeave(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return false; }); + } + + function onClick(e) { + triggerClickHoverEvent("plotclick", e, + function (s) { return s["clickable"] != false; }); + } + + // trigger click or hover event (they send the same parameters + // so we share their code) + function triggerClickHoverEvent(eventname, event, seriesFilter) { + var offset = eventHolder.offset(), + canvasX = event.pageX - offset.left - plotOffset.left, + canvasY = event.pageY - offset.top - plotOffset.top, + pos = canvasToAxisCoords({ left: canvasX, top: canvasY }); + + pos.pageX = event.pageX; + pos.pageY = event.pageY; + + var item = findNearbyItem(canvasX, canvasY, seriesFilter); + + if (item) { + // fill in mouse pos for any listeners out there + item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10); + item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10); + } + + if (options.grid.autoHighlight) { + // clear auto-highlights + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.auto == eventname && + !(item && h.series == item.series && + h.point[0] == item.datapoint[0] && + h.point[1] == item.datapoint[1])) + unhighlight(h.series, h.point); + } + + if (item) + highlight(item.series, item.datapoint, eventname); + } + + placeholder.trigger(eventname, [ pos, item ]); + } + + function triggerRedrawOverlay() { + var t = options.interaction.redrawOverlayInterval; + if (t == -1) { // skip event queue + drawOverlay(); + return; + } + + if (!redrawTimeout) + redrawTimeout = setTimeout(drawOverlay, t); + } + + function drawOverlay() { + redrawTimeout = null; + + // draw highlights + octx.save(); + overlay.clear(); + octx.translate(plotOffset.left, plotOffset.top); + + var i, hi; + for (i = 0; i < highlights.length; ++i) { + hi = highlights[i]; + + if (hi.series.bars.show) + drawBarHighlight(hi.series, hi.point); + else + drawPointHighlight(hi.series, hi.point); + } + octx.restore(); + + executeHooks(hooks.drawOverlay, [octx]); + } + + function highlight(s, point, auto) { + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") { + var ps = s.datapoints.pointsize; + point = s.datapoints.points.slice(ps * point, ps * (point + 1)); + } + + var i = indexOfHighlight(s, point); + if (i == -1) { + highlights.push({ series: s, point: point, auto: auto }); + + triggerRedrawOverlay(); + } + else if (!auto) + highlights[i].auto = false; + } + + function unhighlight(s, point) { + if (s == null && point == null) { + highlights = []; + triggerRedrawOverlay(); + return; + } + + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") { + var ps = s.datapoints.pointsize; + point = s.datapoints.points.slice(ps * point, ps * (point + 1)); + } + + var i = indexOfHighlight(s, point); + if (i != -1) { + highlights.splice(i, 1); + + triggerRedrawOverlay(); + } + } + + function indexOfHighlight(s, p) { + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.series == s && h.point[0] == p[0] + && h.point[1] == p[1]) + return i; + } + return -1; + } + + function drawPointHighlight(series, point) { + var x = point[0], y = point[1], + axisx = series.xaxis, axisy = series.yaxis, + highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(); + + if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + return; + + var pointRadius = series.points.radius + series.points.lineWidth / 2; + octx.lineWidth = pointRadius; + octx.strokeStyle = highlightColor; + var radius = 1.5 * pointRadius; + x = axisx.p2c(x); + y = axisy.p2c(y); + + octx.beginPath(); + if (series.points.symbol == "circle") + octx.arc(x, y, radius, 0, 2 * Math.PI, false); + else + series.points.symbol(octx, x, y, radius, false); + octx.closePath(); + octx.stroke(); + } + + function drawBarHighlight(series, point) { + var highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(), + fillStyle = highlightColor, + barLeft; + + switch (series.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -series.bars.barWidth; + break; + default: + barLeft = -series.bars.barWidth / 2; + } + + octx.lineWidth = series.bars.lineWidth; + octx.strokeStyle = highlightColor; + + drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, + function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); + } + + function getColorOrGradient(spec, bottom, top, defaultColor) { + if (typeof spec == "string") + return spec; + else { + // assume this is a gradient spec; IE currently only + // supports a simple vertical gradient properly, so that's + // what we support too + var gradient = ctx.createLinearGradient(0, top, 0, bottom); + + for (var i = 0, l = spec.colors.length; i < l; ++i) { + var c = spec.colors[i]; + if (typeof c != "string") { + var co = $.color.parse(defaultColor); + if (c.brightness != null) + co = co.scale('rgb', c.brightness); + if (c.opacity != null) + co.a *= c.opacity; + c = co.toString(); + } + gradient.addColorStop(i / (l - 1), c); + } + + return gradient; + } + } + } + + // Add the plot function to the top level of the jQuery object + + $.plot = function(placeholder, data, options) { + //var t0 = new Date(); + var plot = new Plot($(placeholder), data, options, $.plot.plugins); + //(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime())); + return plot; + }; + + $.plot.version = "0.8.2"; + + $.plot.plugins = []; + + // Also add the plot function as a chainable property + + $.fn.plot = function(data, options) { + return this.each(function() { + $.plot(this, data, options); + }); + }; + + // round to nearby lower multiple of base + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + +})(jQuery); diff --git a/public/assets/js/plugins/flot/jquery.flot.min.js b/public/assets/js/plugins/flot/jquery.flot.min.js new file mode 100755 index 00000000..9620fc00 --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.min.js @@ -0,0 +1,2 @@ +(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);(function($){var hasOwnProperty=Object.prototype.hasOwnProperty;function Canvas(cls,container){var element=container.children("."+cls)[0];if(element==null){element=document.createElement("canvas");element.className=cls;$(element).css({direction:"ltr",position:"absolute",left:0,top:0}).appendTo(container);if(!element.getContext){if(window.G_vmlCanvasManager){element=window.G_vmlCanvasManager.initElement(element)}else{throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.")}}}this.element=element;var context=this.context=element.getContext("2d");var devicePixelRatio=window.devicePixelRatio||1,backingStoreRatio=context.webkitBackingStorePixelRatio||context.mozBackingStorePixelRatio||context.msBackingStorePixelRatio||context.oBackingStorePixelRatio||context.backingStorePixelRatio||1;this.pixelRatio=devicePixelRatio/backingStoreRatio;this.resize(container.width(),container.height());this.textContainer=null;this.text={};this._textCache={}}Canvas.prototype.resize=function(width,height){if(width<=0||height<=0){throw new Error("Invalid dimensions for plot, width = "+width+", height = "+height)}var element=this.element,context=this.context,pixelRatio=this.pixelRatio;if(this.width!=width){element.width=width*pixelRatio;element.style.width=width+"px";this.width=width}if(this.height!=height){element.height=height*pixelRatio;element.style.height=height+"px";this.height=height}context.restore();context.save();context.scale(pixelRatio,pixelRatio)};Canvas.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)};Canvas.prototype.render=function(){var cache=this._textCache;for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layer=this.getTextLayer(layerKey),layerCache=cache[layerKey];layer.hide();for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){if(position.active){if(!position.rendered){layer.append(position.element);position.rendered=true}}else{positions.splice(i--,1);if(position.rendered){position.element.detach()}}}if(positions.length==0){delete styleCache[key]}}}}}layer.show()}}};Canvas.prototype.getTextLayer=function(classes){var layer=this.text[classes];if(layer==null){if(this.textContainer==null){this.textContainer=$("
      ").css({position:"absolute",top:0,left:0,bottom:0,right:0,"font-size":"smaller",color:"#545454"}).insertAfter(this.element)}layer=this.text[classes]=$("
      ").addClass(classes).css({position:"absolute",top:0,left:0,bottom:0,right:0}).appendTo(this.textContainer)}return layer};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px/"+font.lineHeight+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var element=$("
      ").html(text).css({position:"absolute","max-width":width,top:-9999}).appendTo(this.getTextLayer(layer));if(typeof font==="object"){element.css({font:textStyle,color:font.color})}else if(typeof font==="string"){element.addClass(font)}info=styleCache[text]={width:element.outerWidth(true),height:element.outerHeight(true),element:element,positions:[]};element.detach()}return info};Canvas.prototype.addText=function(layer,x,y,text,font,angle,width,halign,valign){var info=this.getTextInfo(layer,text,font,angle,width),positions=info.positions;if(halign=="center"){x-=info.width/2}else if(halign=="right"){x-=info.width}if(valign=="middle"){y-=info.height/2}else if(valign=="bottom"){y-=info.height}for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=true;return}}position={active:true,rendered:false,element:positions.length?info.element.clone():info.element,x:x,y:y};positions.push(position);position.element.css({top:Math.round(y),left:Math.round(x),"text-align":halign})};Canvas.prototype.removeText=function(layer,x,y,text,font,angle){if(text==null){var layerCache=this._textCache[layer];if(layerCache!=null){for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){position.active=false}}}}}}}else{var positions=this.getTextInfo(layer,text,font,angle).positions;for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=false}}}};function Plot(placeholder,data_,options_,plugins){var series=[],options={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:true,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:.85,sorted:null},xaxis:{show:null,position:"bottom",mode:null,font:null,color:null,tickColor:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,reserveSpace:null,tickLength:null,alignTicksWithAxis:null,tickDecimals:null,tickSize:null,minTickSize:null},yaxis:{autoscaleMargin:.02,position:"left"},xaxes:[],yaxes:[],series:{points:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#ffffff",symbol:"circle"},lines:{lineWidth:2,fill:false,fillColor:null,steps:false},bars:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,align:"left",horizontal:false,zero:true},shadowSize:3,highlightColor:null},grid:{show:true,aboveData:false,color:"#545454",backgroundColor:null,borderColor:null,tickColor:null,margin:0,labelMargin:5,axisMargin:8,borderWidth:2,minBorderMargin:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:false,hoverable:false,autoHighlight:true,mouseActiveRadius:10},interaction:{redrawOverlayInterval:1e3/60},hooks:{}},surface=null,overlay=null,eventHolder=null,ctx=null,octx=null,xaxes=[],yaxes=[],plotOffset={left:0,right:0,top:0,bottom:0},plotWidth=0,plotHeight=0,hooks={processOptions:[],processRawData:[],processDatapoints:[],processOffset:[],drawBackground:[],drawSeries:[],draw:[],bindEvents:[],drawOverlay:[],shutdown:[]},plot=this;plot.setData=setData;plot.setupGrid=setupGrid;plot.draw=draw;plot.getPlaceholder=function(){return placeholder};plot.getCanvas=function(){return surface.element};plot.getPlotOffset=function(){return plotOffset};plot.width=function(){return plotWidth};plot.height=function(){return plotHeight};plot.offset=function(){var o=eventHolder.offset();o.left+=plotOffset.left;o.top+=plotOffset.top;return o};plot.getData=function(){return series};plot.getAxes=function(){var res={},i;$.each(xaxes.concat(yaxes),function(_,axis){if(axis)res[axis.direction+(axis.n!=1?axis.n:"")+"axis"]=axis});return res};plot.getXAxes=function(){return xaxes};plot.getYAxes=function(){return yaxes};plot.c2p=canvasToAxisCoords;plot.p2c=axisToCanvasCoords;plot.getOptions=function(){return options};plot.highlight=highlight;plot.unhighlight=unhighlight;plot.triggerRedrawOverlay=triggerRedrawOverlay;plot.pointOffset=function(point){return{left:parseInt(xaxes[axisNumber(point,"x")-1].p2c(+point.x)+plotOffset.left,10),top:parseInt(yaxes[axisNumber(point,"y")-1].p2c(+point.y)+plotOffset.top,10)}};plot.shutdown=shutdown;plot.destroy=function(){shutdown();placeholder.removeData("plot").empty();series=[];options=null;surface=null;overlay=null;eventHolder=null;ctx=null;octx=null;xaxes=[];yaxes=[];hooks=null;highlights=[];plot=null};plot.resize=function(){var width=placeholder.width(),height=placeholder.height();surface.resize(width,height);overlay.resize(width,height)};plot.hooks=hooks;initPlugins(plot);parseOptions(options_);setupCanvases();setData(data_);setupGrid();draw();bindEvents();function executeHooks(hook,args){args=[plot].concat(args);for(var i=0;imaxIndex){maxIndex=sc}}}if(neededColors<=maxIndex){neededColors=maxIndex+1}var c,colors=[],colorPool=options.colors,colorPoolSize=colorPool.length,variation=0;for(i=0;i=0){if(variation<.5){variation=-variation-.2}else variation=0}else variation=-variation}colors[i]=c.scale("rgb",1+variation)}var colori=0,s;for(i=0;iaxis.datamax&&max!=fakeInfinity)axis.datamax=max}$.each(allAxes(),function(_,axis){axis.datamin=topSentry;axis.datamax=bottomSentry;axis.used=false});for(i=0;i0&&points[k-ps]!=null&&points[k-ps]!=points[k]&&points[k-ps+1]!=points[k+1]){for(m=0;mxmax)xmax=val}if(f.y){if(valymax)ymax=val}}}if(s.bars.show){var delta;switch(s.bars.align){case"left":delta=0;break;case"right":delta=-s.bars.barWidth;break;default:delta=-s.bars.barWidth/2}if(s.bars.horizontal){ymin+=delta;ymax+=delta+s.bars.barWidth}else{xmin+=delta;xmax+=delta+s.bars.barWidth}}updateAxis(s.xaxis,xmin,xmax);updateAxis(s.yaxis,ymin,ymax)}$.each(allAxes(),function(_,axis){if(axis.datamin==topSentry)axis.datamin=null;if(axis.datamax==bottomSentry)axis.datamax=null})}function setupCanvases(){placeholder.css("padding",0).children().filter(function(){return!$(this).hasClass("flot-overlay")&&!$(this).hasClass("flot-base")}).remove();if(placeholder.css("position")=="static")placeholder.css("position","relative");surface=new Canvas("flot-base",placeholder);overlay=new Canvas("flot-overlay",placeholder);ctx=surface.context;octx=overlay.context;eventHolder=$(overlay.element).unbind();var existing=placeholder.data("plot");if(existing){existing.shutdown();overlay.clear()}placeholder.data("plot",plot)}function bindEvents(){if(options.grid.hoverable){eventHolder.mousemove(onMouseMove);eventHolder.bind("mouseleave",onMouseLeave)}if(options.grid.clickable)eventHolder.click(onClick);executeHooks(hooks.bindEvents,[eventHolder])}function shutdown(){if(redrawTimeout)clearTimeout(redrawTimeout);eventHolder.unbind("mousemove",onMouseMove);eventHolder.unbind("mouseleave",onMouseLeave);eventHolder.unbind("click",onClick);executeHooks(hooks.shutdown,[eventHolder])}function setTransformationHelpers(axis){function identity(x){return x}var s,m,t=axis.options.transform||identity,it=axis.options.inverseTransform;if(axis.direction=="x"){s=axis.scale=plotWidth/Math.abs(t(axis.max)-t(axis.min));m=Math.min(t(axis.max),t(axis.min))}else{s=axis.scale=plotHeight/Math.abs(t(axis.max)-t(axis.min));s=-s;m=Math.max(t(axis.max),t(axis.min))}if(t==identity)axis.p2c=function(p){return(p-m)*s};else axis.p2c=function(p){return(t(p)-m)*s};if(!it)axis.c2p=function(c){return m+c/s};else axis.c2p=function(c){return it(m+c/s)}}function measureTickLabels(axis){var opts=axis.options,ticks=axis.ticks||[],labelWidth=opts.labelWidth||0,labelHeight=opts.labelHeight||0,maxWidth=labelWidth||(axis.direction=="x"?Math.floor(surface.width/(ticks.length||1)):null),legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=opts.font||"flot-tick-label tickLabel";for(var i=0;i=0;--i)allocateAxisBoxFirstPhase(allocatedAxes[i]);adjustLayoutForThingsStickingOut();$.each(allocatedAxes,function(_,axis){allocateAxisBoxSecondPhase(axis)})}plotWidth=surface.width-plotOffset.left-plotOffset.right;plotHeight=surface.height-plotOffset.bottom-plotOffset.top;$.each(axes,function(_,axis){setTransformationHelpers(axis)});if(showGrid){drawAxisLabels()}insertLegend()}function setRange(axis){var opts=axis.options,min=+(opts.min!=null?opts.min:axis.datamin),max=+(opts.max!=null?opts.max:axis.datamax),delta=max-min;if(delta==0){var widen=max==0?1:.01;if(opts.min==null)min-=widen;if(opts.max==null||opts.min!=null)max+=widen}else{var margin=opts.autoscaleMargin;if(margin!=null){if(opts.min==null){min-=delta*margin;if(min<0&&axis.datamin!=null&&axis.datamin>=0)min=0}if(opts.max==null){max+=delta*margin;if(max>0&&axis.datamax!=null&&axis.datamax<=0)max=0}}}axis.min=min;axis.max=max}function setupTickGeneration(axis){var opts=axis.options;var noTicks;if(typeof opts.ticks=="number"&&opts.ticks>0)noTicks=opts.ticks;else noTicks=.3*Math.sqrt(axis.direction=="x"?surface.width:surface.height);var delta=(axis.max-axis.min)/noTicks,dec=-Math.floor(Math.log(delta)/Math.LN10),maxDec=opts.tickDecimals;if(maxDec!=null&&dec>maxDec){dec=maxDec}var magn=Math.pow(10,-dec),norm=delta/magn,size;if(norm<1.5){size=1}else if(norm<3){size=2;if(norm>2.25&&(maxDec==null||dec+1<=maxDec)){size=2.5;++dec}}else if(norm<7.5){size=5}else{size=10}size*=magn;if(opts.minTickSize!=null&&size0){if(opts.min==null)axis.min=Math.min(axis.min,niceTicks[0]);if(opts.max==null&&niceTicks.length>1)axis.max=Math.max(axis.max,niceTicks[niceTicks.length-1])}axis.tickGenerator=function(axis){var ticks=[],v,i;for(i=0;i1&&/\..*0$/.test((ts[1]-ts[0]).toFixed(extraDec))))axis.tickDecimals=extraDec}}}}function setTicks(axis){var oticks=axis.options.ticks,ticks=[];if(oticks==null||typeof oticks=="number"&&oticks>0)ticks=axis.tickGenerator(axis);else if(oticks){if($.isFunction(oticks))ticks=oticks(axis);else ticks=oticks}var i,v;axis.ticks=[];for(i=0;i1)label=t[1]}else v=+t;if(label==null)label=axis.tickFormatter(v,axis);if(!isNaN(v))axis.ticks.push({v:v,label:label})}}function snapRangeToTicks(axis,ticks){if(axis.options.autoscaleMargin&&ticks.length>0){if(axis.options.min==null)axis.min=Math.min(axis.min,ticks[0].v);if(axis.options.max==null&&ticks.length>1)axis.max=Math.max(axis.max,ticks[ticks.length-1].v)}}function draw(){surface.clear();executeHooks(hooks.drawBackground,[ctx]);var grid=options.grid;if(grid.show&&grid.backgroundColor)drawBackground();if(grid.show&&!grid.aboveData){drawGrid()}for(var i=0;ito){var tmp=from;from=to;to=tmp}return{from:from,to:to,axis:axis}}function drawBackground(){ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.fillStyle=getColorOrGradient(options.grid.backgroundColor,plotHeight,0,"rgba(255, 255, 255, 0)");ctx.fillRect(0,0,plotWidth,plotHeight);ctx.restore()}function drawGrid(){var i,axes,bw,bc;ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var markings=options.grid.markings;if(markings){if($.isFunction(markings)){axes=plot.getAxes();axes.xmin=axes.xaxis.min;axes.xmax=axes.xaxis.max;axes.ymin=axes.yaxis.min;axes.ymax=axes.yaxis.max;markings=markings(axes)}for(i=0;ixrange.axis.max||yrange.toyrange.axis.max)continue;xrange.from=Math.max(xrange.from,xrange.axis.min);xrange.to=Math.min(xrange.to,xrange.axis.max); +yrange.from=Math.max(yrange.from,yrange.axis.min);yrange.to=Math.min(yrange.to,yrange.axis.max);if(xrange.from==xrange.to&&yrange.from==yrange.to)continue;xrange.from=xrange.axis.p2c(xrange.from);xrange.to=xrange.axis.p2c(xrange.to);yrange.from=yrange.axis.p2c(yrange.from);yrange.to=yrange.axis.p2c(yrange.to);if(xrange.from==xrange.to||yrange.from==yrange.to){ctx.beginPath();ctx.strokeStyle=m.color||options.grid.markingsColor;ctx.lineWidth=m.lineWidth||options.grid.markingsLineWidth;ctx.moveTo(xrange.from,yrange.from);ctx.lineTo(xrange.to,yrange.to);ctx.stroke()}else{ctx.fillStyle=m.color||options.grid.markingsColor;ctx.fillRect(xrange.from,yrange.to,xrange.to-xrange.from,yrange.from-yrange.to)}}}axes=allAxes();bw=options.grid.borderWidth;for(var j=0;jaxis.max||t=="full"&&(typeof bw=="object"&&bw[axis.position]>0||bw>0)&&(v==axis.min||v==axis.max))continue;if(axis.direction=="x"){x=axis.p2c(v);yoff=t=="full"?-plotHeight:t;if(axis.position=="top")yoff=-yoff}else{y=axis.p2c(v);xoff=t=="full"?-plotWidth:t;if(axis.position=="left")xoff=-xoff}if(ctx.lineWidth==1){if(axis.direction=="x")x=Math.floor(x)+.5;else y=Math.floor(y)+.5}ctx.moveTo(x,y);ctx.lineTo(x+xoff,y+yoff)}ctx.stroke()}if(bw){bc=options.grid.borderColor;if(typeof bw=="object"||typeof bc=="object"){if(typeof bw!=="object"){bw={top:bw,right:bw,bottom:bw,left:bw}}if(typeof bc!=="object"){bc={top:bc,right:bc,bottom:bc,left:bc}}if(bw.top>0){ctx.strokeStyle=bc.top;ctx.lineWidth=bw.top;ctx.beginPath();ctx.moveTo(0-bw.left,0-bw.top/2);ctx.lineTo(plotWidth,0-bw.top/2);ctx.stroke()}if(bw.right>0){ctx.strokeStyle=bc.right;ctx.lineWidth=bw.right;ctx.beginPath();ctx.moveTo(plotWidth+bw.right/2,0-bw.top);ctx.lineTo(plotWidth+bw.right/2,plotHeight);ctx.stroke()}if(bw.bottom>0){ctx.strokeStyle=bc.bottom;ctx.lineWidth=bw.bottom;ctx.beginPath();ctx.moveTo(plotWidth+bw.right,plotHeight+bw.bottom/2);ctx.lineTo(0,plotHeight+bw.bottom/2);ctx.stroke()}if(bw.left>0){ctx.strokeStyle=bc.left;ctx.lineWidth=bw.left;ctx.beginPath();ctx.moveTo(0-bw.left/2,plotHeight+bw.bottom);ctx.lineTo(0-bw.left/2,0);ctx.stroke()}}else{ctx.lineWidth=bw;ctx.strokeStyle=options.grid.borderColor;ctx.strokeRect(-bw/2,-bw/2,plotWidth+bw,plotHeight+bw)}}ctx.restore()}function drawAxisLabels(){$.each(allAxes(),function(_,axis){var box=axis.box,legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=axis.options.font||"flot-tick-label tickLabel",tick,x,y,halign,valign;surface.removeText(layer);if(!axis.show||axis.ticks.length==0)return;for(var i=0;iaxis.max)continue;if(axis.direction=="x"){halign="center";x=plotOffset.left+axis.p2c(tick.v);if(axis.position=="bottom"){y=box.top+box.padding}else{y=box.top+box.height-box.padding;valign="bottom"}}else{valign="middle";y=plotOffset.top+axis.p2c(tick.v);if(axis.position=="left"){x=box.left+box.width-box.padding;halign="right"}else{x=box.left+box.padding}}surface.addText(layer,x,y,tick.label,font,null,null,halign,valign)}})}function drawSeries(series){if(series.lines.show)drawSeriesLines(series);if(series.bars.show)drawSeriesBars(series);if(series.points.show)drawSeriesPoints(series)}function drawSeriesLines(series){function plotLine(datapoints,xoffset,yoffset,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,prevx=null,prevy=null;ctx.beginPath();for(var i=ps;i=y2&&y1>axisy.max){if(y2>axisy.max)continue;x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else if(y2>=y1&&y2>axisy.max){if(y1>axisy.max)continue;x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}if(x1<=x2&&x1=x2&&x1>axisx.max){if(x2>axisx.max)continue;y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else if(x2>=x1&&x2>axisx.max){if(x1>axisx.max)continue;y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}if(x1!=prevx||y1!=prevy)ctx.moveTo(axisx.p2c(x1)+xoffset,axisy.p2c(y1)+yoffset);prevx=x2;prevy=y2;ctx.lineTo(axisx.p2c(x2)+xoffset,axisy.p2c(y2)+yoffset)}ctx.stroke()}function plotLineArea(datapoints,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,bottom=Math.min(Math.max(0,axisy.min),axisy.max),i=0,top,areaOpen=false,ypos=1,segmentStart=0,segmentEnd=0;while(true){if(ps>0&&i>points.length+ps)break;i+=ps;var x1=points[i-ps],y1=points[i-ps+ypos],x2=points[i],y2=points[i+ypos];if(areaOpen){if(ps>0&&x1!=null&&x2==null){segmentEnd=i;ps=-ps;ypos=2;continue}if(ps<0&&i==segmentStart+ps){ctx.fill();areaOpen=false;ps=-ps;ypos=1;i=segmentStart=segmentEnd+ps;continue}}if(x1==null||x2==null)continue;if(x1<=x2&&x1=x2&&x1>axisx.max){if(x2>axisx.max)continue;y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else if(x2>=x1&&x2>axisx.max){if(x1>axisx.max)continue;y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}if(!areaOpen){ctx.beginPath();ctx.moveTo(axisx.p2c(x1),axisy.p2c(bottom));areaOpen=true}if(y1>=axisy.max&&y2>=axisy.max){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.max));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.max));continue}else if(y1<=axisy.min&&y2<=axisy.min){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.min));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.min));continue}var x1old=x1,x2old=x2;if(y1<=y2&&y1=axisy.min){x1=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.min}else if(y2<=y1&&y2=axisy.min){x2=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.min}if(y1>=y2&&y1>axisy.max&&y2<=axisy.max){x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else if(y2>=y1&&y2>axisy.max&&y1<=axisy.max){x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}if(x1!=x1old){ctx.lineTo(axisx.p2c(x1old),axisy.p2c(y1))}ctx.lineTo(axisx.p2c(x1),axisy.p2c(y1));ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));if(x2!=x2old){ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));ctx.lineTo(axisx.p2c(x2old),axisy.p2c(y2))}}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.lineJoin="round";var lw=series.lines.lineWidth,sw=series.shadowSize;if(lw>0&&sw>0){ctx.lineWidth=sw;ctx.strokeStyle="rgba(0,0,0,0.1)";var angle=Math.PI/18;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/2),Math.cos(angle)*(lw/2+sw/2),series.xaxis,series.yaxis);ctx.lineWidth=sw/2;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/4),Math.cos(angle)*(lw/2+sw/4),series.xaxis,series.yaxis)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;var fillStyle=getFillStyle(series.lines,series.color,0,plotHeight);if(fillStyle){ctx.fillStyle=fillStyle;plotLineArea(series.datapoints,series.xaxis,series.yaxis)}if(lw>0)plotLine(series.datapoints,0,0,series.xaxis,series.yaxis);ctx.restore()}function drawSeriesPoints(series){function plotPoints(datapoints,radius,fillStyle,offset,shadow,axisx,axisy,symbol){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;iaxisx.max||yaxisy.max)continue;ctx.beginPath();x=axisx.p2c(x);y=axisy.p2c(y)+offset;if(symbol=="circle")ctx.arc(x,y,radius,0,shadow?Math.PI:Math.PI*2,false);else symbol(ctx,x,y,radius,shadow);ctx.closePath();if(fillStyle){ctx.fillStyle=fillStyle;ctx.fill()}ctx.stroke()}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var lw=series.points.lineWidth,sw=series.shadowSize,radius=series.points.radius,symbol=series.points.symbol;if(lw==0)lw=1e-4;if(lw>0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";plotPoints(series.datapoints,radius,null,w+w/2,true,series.xaxis,series.yaxis,symbol);ctx.strokeStyle="rgba(0,0,0,0.2)";plotPoints(series.datapoints,radius,null,w/2,true,series.xaxis,series.yaxis,symbol)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;plotPoints(series.datapoints,radius,getFillStyle(series.points,series.color),0,false,series.xaxis,series.yaxis,symbol);ctx.restore()}function drawBar(x,y,b,barLeft,barRight,fillStyleCallback,axisx,axisy,c,horizontal,lineWidth){var left,right,bottom,top,drawLeft,drawRight,drawTop,drawBottom,tmp;if(horizontal){drawBottom=drawRight=drawTop=true;drawLeft=false;left=b;right=x;top=y+barLeft;bottom=y+barRight;if(rightaxisx.max||topaxisy.max)return;if(leftaxisx.max){right=axisx.max;drawRight=false}if(bottomaxisy.max){top=axisy.max;drawTop=false}left=axisx.p2c(left);bottom=axisy.p2c(bottom);right=axisx.p2c(right);top=axisy.p2c(top);if(fillStyleCallback){c.fillStyle=fillStyleCallback(bottom,top);c.fillRect(left,top,right-left,bottom-top)}if(lineWidth>0&&(drawLeft||drawRight||drawTop||drawBottom)){c.beginPath();c.moveTo(left,bottom);if(drawLeft)c.lineTo(left,top);else c.moveTo(left,top);if(drawTop)c.lineTo(right,top);else c.moveTo(right,top);if(drawRight)c.lineTo(right,bottom);else c.moveTo(right,bottom);if(drawBottom)c.lineTo(left,bottom);else c.moveTo(left,bottom);c.stroke()}}function drawSeriesBars(series){function plotBars(datapoints,barLeft,barRight,fillStyleCallback,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;i");fragments.push("");rowStarted=true}fragments.push('
      '+''+entry.label+"")}if(rowStarted)fragments.push("");if(fragments.length==0)return;var table=''+fragments.join("")+"
      ";if(options.legend.container!=null)$(options.legend.container).html(table);else{var pos="",p=options.legend.position,m=options.legend.margin;if(m[0]==null)m=[m,m];if(p.charAt(0)=="n")pos+="top:"+(m[1]+plotOffset.top)+"px;";else if(p.charAt(0)=="s")pos+="bottom:"+(m[1]+plotOffset.bottom)+"px;";if(p.charAt(1)=="e")pos+="right:"+(m[0]+plotOffset.right)+"px;";else if(p.charAt(1)=="w")pos+="left:"+(m[0]+plotOffset.left)+"px;";var legend=$('
      '+table.replace('style="','style="position:absolute;'+pos+";")+"
      ").appendTo(placeholder);if(options.legend.backgroundOpacity!=0){var c=options.legend.backgroundColor;if(c==null){c=options.grid.backgroundColor;if(c&&typeof c=="string")c=$.color.parse(c);else c=$.color.extract(legend,"background-color");c.a=1;c=c.toString()}var div=legend.children();$('
      ').prependTo(legend).css("opacity",options.legend.backgroundOpacity)}}}var highlights=[],redrawTimeout=null;function findNearbyItem(mouseX,mouseY,seriesFilter){var maxDistance=options.grid.mouseActiveRadius,smallestDistance=maxDistance*maxDistance+1,item=null,foundPoint=false,i,j,ps;for(i=series.length-1;i>=0;--i){if(!seriesFilter(series[i]))continue;var s=series[i],axisx=s.xaxis,axisy=s.yaxis,points=s.datapoints.points,mx=axisx.c2p(mouseX),my=axisy.c2p(mouseY),maxx=maxDistance/axisx.scale,maxy=maxDistance/axisy.scale;ps=s.datapoints.pointsize;if(axisx.options.inverseTransform)maxx=Number.MAX_VALUE;if(axisy.options.inverseTransform)maxy=Number.MAX_VALUE;if(s.lines.show||s.points.show){for(j=0;jmaxx||x-mx<-maxx||y-my>maxy||y-my<-maxy)continue;var dx=Math.abs(axisx.p2c(x)-mouseX),dy=Math.abs(axisy.p2c(y)-mouseY),dist=dx*dx+dy*dy;if(dist=Math.min(b,x)&&my>=y+barLeft&&my<=y+barRight:mx>=x+barLeft&&mx<=x+barRight&&my>=Math.min(b,y)&&my<=Math.max(b,y))item=[i,j/ps]}}}if(item){i=item[0];j=item[1];ps=series[i].datapoints.pointsize;return{datapoint:series[i].datapoints.points.slice(j*ps,(j+1)*ps),dataIndex:j,series:series[i],seriesIndex:i}}return null}function onMouseMove(e){if(options.grid.hoverable)triggerClickHoverEvent("plothover",e,function(s){return s["hoverable"]!=false})}function onMouseLeave(e){if(options.grid.hoverable)triggerClickHoverEvent("plothover",e,function(s){return false})}function onClick(e){triggerClickHoverEvent("plotclick",e,function(s){return s["clickable"]!=false})}function triggerClickHoverEvent(eventname,event,seriesFilter){var offset=eventHolder.offset(),canvasX=event.pageX-offset.left-plotOffset.left,canvasY=event.pageY-offset.top-plotOffset.top,pos=canvasToAxisCoords({left:canvasX,top:canvasY});pos.pageX=event.pageX;pos.pageY=event.pageY;var item=findNearbyItem(canvasX,canvasY,seriesFilter);if(item){item.pageX=parseInt(item.series.xaxis.p2c(item.datapoint[0])+offset.left+plotOffset.left,10);item.pageY=parseInt(item.series.yaxis.p2c(item.datapoint[1])+offset.top+plotOffset.top,10)}if(options.grid.autoHighlight){for(var i=0;iaxisx.max||yaxisy.max)return;var pointRadius=series.points.radius+series.points.lineWidth/2;octx.lineWidth=pointRadius;octx.strokeStyle=highlightColor;var radius=1.5*pointRadius;x=axisx.p2c(x);y=axisy.p2c(y);octx.beginPath();if(series.points.symbol=="circle")octx.arc(x,y,radius,0,2*Math.PI,false);else series.points.symbol(octx,x,y,radius,false);octx.closePath();octx.stroke()}function drawBarHighlight(series,point){var highlightColor=typeof series.highlightColor==="string"?series.highlightColor:$.color.parse(series.color).scale("a",.5).toString(),fillStyle=highlightColor,barLeft;switch(series.bars.align){case"left":barLeft=0;break;case"right":barLeft=-series.bars.barWidth;break;default:barLeft=-series.bars.barWidth/2}octx.lineWidth=series.bars.lineWidth;octx.strokeStyle=highlightColor;drawBar(point[0],point[1],point[2]||0,barLeft,barLeft+series.bars.barWidth,function(){return fillStyle},series.xaxis,series.yaxis,octx,series.bars.horizontal,series.bars.lineWidth)}function getColorOrGradient(spec,bottom,top,defaultColor){if(typeof spec=="string")return spec;else{var gradient=ctx.createLinearGradient(0,top,0,bottom);for(var i=0,l=spec.colors.length;i0&&h.which!=l.which||a(h.target).is(l.not))return;switch(h.type){case"mousedown":return a.extend(l,a(j).offset(),{elem:j,target:h.target,pageX:h.pageX,pageY:h.pageY}),b.add(document,"mousemove mouseup",e,l),i(j,!1),d.dragging=null,!1;case!d.dragging&&"mousemove":if(g(h.pageX-l.pageX)+g(h.pageY-l.pageY) max) { + // make sure min < max + var tmp = min; + min = max; + max = tmp; + } + + //Check that we are in panRange + if (pr) { + if (pr[0] != null && min < pr[0]) { + min = pr[0]; + } + if (pr[1] != null && max > pr[1]) { + max = pr[1]; + } + } + + var range = max - min; + if (zr && + ((zr[0] != null && range < zr[0]) || + (zr[1] != null && range > zr[1]))) + return; + + opts.min = min; + opts.max = max; + }); + + plot.setupGrid(); + plot.draw(); + + if (!args.preventEvent) + plot.getPlaceholder().trigger("plotzoom", [ plot, args ]); + }; + + plot.pan = function (args) { + var delta = { + x: +args.left, + y: +args.top + }; + + if (isNaN(delta.x)) + delta.x = 0; + if (isNaN(delta.y)) + delta.y = 0; + + $.each(plot.getAxes(), function (_, axis) { + var opts = axis.options, + min, max, d = delta[axis.direction]; + + min = axis.c2p(axis.p2c(axis.min) + d), + max = axis.c2p(axis.p2c(axis.max) + d); + + var pr = opts.panRange; + if (pr === false) // no panning on this axis + return; + + if (pr) { + // check whether we hit the wall + if (pr[0] != null && pr[0] > min) { + d = pr[0] - min; + min += d; + max += d; + } + + if (pr[1] != null && pr[1] < max) { + d = pr[1] - max; + min += d; + max += d; + } + } + + opts.min = min; + opts.max = max; + }); + + plot.setupGrid(); + plot.draw(); + + if (!args.preventEvent) + plot.getPlaceholder().trigger("plotpan", [ plot, args ]); + }; + + function shutdown(plot, eventHolder) { + eventHolder.unbind(plot.getOptions().zoom.trigger, onZoomClick); + eventHolder.unbind("mousewheel", onMouseWheel); + eventHolder.unbind("dragstart", onDragStart); + eventHolder.unbind("drag", onDrag); + eventHolder.unbind("dragend", onDragEnd); + if (panTimeout) + clearTimeout(panTimeout); + } + + plot.hooks.bindEvents.push(bindEvents); + plot.hooks.shutdown.push(shutdown); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'navigate', + version: '1.3' + }); +})(jQuery); diff --git a/public/assets/js/plugins/flot/jquery.flot.navigate.min.js b/public/assets/js/plugins/flot/jquery.flot.navigate.min.js new file mode 100755 index 00000000..a69a9399 --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.navigate.min.js @@ -0,0 +1 @@ +(function(a){function e(h){var k,j=this,l=h.data||{};if(l.elem)j=h.dragTarget=l.elem,h.dragProxy=d.proxy||j,h.cursorOffsetX=l.pageX-l.left,h.cursorOffsetY=l.pageY-l.top,h.offsetX=h.pageX-h.cursorOffsetX,h.offsetY=h.pageY-h.cursorOffsetY;else if(d.dragging||l.which>0&&h.which!=l.which||a(h.target).is(l.not))return;switch(h.type){case"mousedown":return a.extend(l,a(j).offset(),{elem:j,target:h.target,pageX:h.pageX,pageY:h.pageY}),b.add(document,"mousemove mouseup",e,l),i(j,!1),d.dragging=null,!1;case!d.dragging&&"mousemove":if(g(h.pageX-l.pageX)+g(h.pageY-l.pageY)max){var tmp=min;min=max;max=tmp}if(pr){if(pr[0]!=null&&minpr[1]){max=pr[1]}}var range=max-min;if(zr&&(zr[0]!=null&&rangezr[1]))return;opts.min=min;opts.max=max});plot.setupGrid();plot.draw();if(!args.preventEvent)plot.getPlaceholder().trigger("plotzoom",[plot,args])};plot.pan=function(args){var delta={x:+args.left,y:+args.top};if(isNaN(delta.x))delta.x=0;if(isNaN(delta.y))delta.y=0;$.each(plot.getAxes(),function(_,axis){var opts=axis.options,min,max,d=delta[axis.direction];min=axis.c2p(axis.p2c(axis.min)+d),max=axis.c2p(axis.p2c(axis.max)+d);var pr=opts.panRange;if(pr===false)return;if(pr){if(pr[0]!=null&&pr[0]>min){d=pr[0]-min;min+=d;max+=d}if(pr[1]!=null&&pr[1] 1) { + options.series.pie.tilt = 1; + } else if (options.series.pie.tilt < 0) { + options.series.pie.tilt = 0; + } + } + }); + + plot.hooks.bindEvents.push(function(plot, eventHolder) { + var options = plot.getOptions(); + if (options.series.pie.show) { + if (options.grid.hoverable) { + eventHolder.unbind("mousemove").mousemove(onMouseMove); + } + if (options.grid.clickable) { + eventHolder.unbind("click").click(onClick); + } + } + }); + + plot.hooks.processDatapoints.push(function(plot, series, data, datapoints) { + var options = plot.getOptions(); + if (options.series.pie.show) { + processDatapoints(plot, series, data, datapoints); + } + }); + + plot.hooks.drawOverlay.push(function(plot, octx) { + var options = plot.getOptions(); + if (options.series.pie.show) { + drawOverlay(plot, octx); + } + }); + + plot.hooks.draw.push(function(plot, newCtx) { + var options = plot.getOptions(); + if (options.series.pie.show) { + draw(plot, newCtx); + } + }); + + function processDatapoints(plot, series, datapoints) { + if (!processed) { + processed = true; + canvas = plot.getCanvas(); + target = $(canvas).parent(); + options = plot.getOptions(); + plot.setData(combine(plot.getData())); + } + } + + function combine(data) { + + var total = 0, + combined = 0, + numCombined = 0, + color = options.series.pie.combine.color, + newdata = []; + + // Fix up the raw data from Flot, ensuring the data is numeric + + for (var i = 0; i < data.length; ++i) { + + var value = data[i].data; + + // If the data is an array, we'll assume that it's a standard + // Flot x-y pair, and are concerned only with the second value. + + // Note how we use the original array, rather than creating a + // new one; this is more efficient and preserves any extra data + // that the user may have stored in higher indexes. + + if ($.isArray(value) && value.length == 1) { + value = value[0]; + } + + if ($.isArray(value)) { + // Equivalent to $.isNumeric() but compatible with jQuery < 1.7 + if (!isNaN(parseFloat(value[1])) && isFinite(value[1])) { + value[1] = +value[1]; + } else { + value[1] = 0; + } + } else if (!isNaN(parseFloat(value)) && isFinite(value)) { + value = [1, +value]; + } else { + value = [1, 0]; + } + + data[i].data = [value]; + } + + // Sum up all the slices, so we can calculate percentages for each + + for (var i = 0; i < data.length; ++i) { + total += data[i].data[0][1]; + } + + // Count the number of slices with percentages below the combine + // threshold; if it turns out to be just one, we won't combine. + + for (var i = 0; i < data.length; ++i) { + var value = data[i].data[0][1]; + if (value / total <= options.series.pie.combine.threshold) { + combined += value; + numCombined++; + if (!color) { + color = data[i].color; + } + } + } + + for (var i = 0; i < data.length; ++i) { + var value = data[i].data[0][1]; + if (numCombined < 2 || value / total > options.series.pie.combine.threshold) { + newdata.push({ + data: [[1, value]], + color: data[i].color, + label: data[i].label, + angle: value * Math.PI * 2 / total, + percent: value / (total / 100) + }); + } + } + + if (numCombined > 1) { + newdata.push({ + data: [[1, combined]], + color: color, + label: options.series.pie.combine.label, + angle: combined * Math.PI * 2 / total, + percent: combined / (total / 100) + }); + } + + return newdata; + } + + function draw(plot, newCtx) { + + if (!target) { + return; // if no series were passed + } + + var canvasWidth = plot.getPlaceholder().width(), + canvasHeight = plot.getPlaceholder().height(), + legendWidth = target.children().filter(".legend").children().width() || 0; + + ctx = newCtx; + + // WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE! + + // When combining smaller slices into an 'other' slice, we need to + // add a new series. Since Flot gives plugins no way to modify the + // list of series, the pie plugin uses a hack where the first call + // to processDatapoints results in a call to setData with the new + // list of series, then subsequent processDatapoints do nothing. + + // The plugin-global 'processed' flag is used to control this hack; + // it starts out false, and is set to true after the first call to + // processDatapoints. + + // Unfortunately this turns future setData calls into no-ops; they + // call processDatapoints, the flag is true, and nothing happens. + + // To fix this we'll set the flag back to false here in draw, when + // all series have been processed, so the next sequence of calls to + // processDatapoints once again starts out with a slice-combine. + // This is really a hack; in 0.9 we need to give plugins a proper + // way to modify series before any processing begins. + + processed = false; + + // calculate maximum radius and center point + + maxRadius = Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2; + centerTop = canvasHeight / 2 + options.series.pie.offset.top; + centerLeft = canvasWidth / 2; + + if (options.series.pie.offset.left == "auto") { + if (options.legend.position.match("w")) { + centerLeft += legendWidth / 2; + } else { + centerLeft -= legendWidth / 2; + } + if (centerLeft < maxRadius) { + centerLeft = maxRadius; + } else if (centerLeft > canvasWidth - maxRadius) { + centerLeft = canvasWidth - maxRadius; + } + } else { + centerLeft += options.series.pie.offset.left; + } + + var slices = plot.getData(), + attempts = 0; + + // Keep shrinking the pie's radius until drawPie returns true, + // indicating that all the labels fit, or we try too many times. + + do { + if (attempts > 0) { + maxRadius *= REDRAW_SHRINK; + } + attempts += 1; + clear(); + if (options.series.pie.tilt <= 0.8) { + drawShadow(); + } + } while (!drawPie() && attempts < REDRAW_ATTEMPTS) + + if (attempts >= REDRAW_ATTEMPTS) { + clear(); + target.prepend("
      Could not draw pie with labels contained inside canvas
      "); + } + + if (plot.setSeries && plot.insertLegend) { + plot.setSeries(slices); + plot.insertLegend(); + } + + // we're actually done at this point, just defining internal functions at this point + + function clear() { + ctx.clearRect(0, 0, canvasWidth, canvasHeight); + target.children().filter(".pieLabel, .pieLabelBackground").remove(); + } + + function drawShadow() { + + var shadowLeft = options.series.pie.shadow.left; + var shadowTop = options.series.pie.shadow.top; + var edge = 10; + var alpha = options.series.pie.shadow.alpha; + var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; + + if (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) { + return; // shadow would be outside canvas, so don't draw it + } + + ctx.save(); + ctx.translate(shadowLeft,shadowTop); + ctx.globalAlpha = alpha; + ctx.fillStyle = "#000"; + + // center and rotate to starting position + + ctx.translate(centerLeft,centerTop); + ctx.scale(1, options.series.pie.tilt); + + //radius -= edge; + + for (var i = 1; i <= edge; i++) { + ctx.beginPath(); + ctx.arc(0, 0, radius, 0, Math.PI * 2, false); + ctx.fill(); + radius -= i; + } + + ctx.restore(); + } + + function drawPie() { + + var startAngle = Math.PI * options.series.pie.startAngle; + var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; + + // center and rotate to starting position + + ctx.save(); + ctx.translate(centerLeft,centerTop); + ctx.scale(1, options.series.pie.tilt); + //ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera + + // draw slices + + ctx.save(); + var currentAngle = startAngle; + for (var i = 0; i < slices.length; ++i) { + slices[i].startAngle = currentAngle; + drawSlice(slices[i].angle, slices[i].color, true); + } + ctx.restore(); + + // draw slice outlines + + if (options.series.pie.stroke.width > 0) { + ctx.save(); + ctx.lineWidth = options.series.pie.stroke.width; + currentAngle = startAngle; + for (var i = 0; i < slices.length; ++i) { + drawSlice(slices[i].angle, options.series.pie.stroke.color, false); + } + ctx.restore(); + } + + // draw donut hole + + drawDonutHole(ctx); + + ctx.restore(); + + // Draw the labels, returning true if they fit within the plot + + if (options.series.pie.label.show) { + return drawLabels(); + } else return true; + + function drawSlice(angle, color, fill) { + + if (angle <= 0 || isNaN(angle)) { + return; + } + + if (fill) { + ctx.fillStyle = color; + } else { + ctx.strokeStyle = color; + ctx.lineJoin = "round"; + } + + ctx.beginPath(); + if (Math.abs(angle - Math.PI * 2) > 0.000000001) { + ctx.moveTo(0, 0); // Center of the pie + } + + //ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera + ctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false); + ctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false); + ctx.closePath(); + //ctx.rotate(angle); // This doesn't work properly in Opera + currentAngle += angle; + + if (fill) { + ctx.fill(); + } else { + ctx.stroke(); + } + } + + function drawLabels() { + + var currentAngle = startAngle; + var radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius; + + for (var i = 0; i < slices.length; ++i) { + if (slices[i].percent >= options.series.pie.label.threshold * 100) { + if (!drawLabel(slices[i], currentAngle, i)) { + return false; + } + } + currentAngle += slices[i].angle; + } + + return true; + + function drawLabel(slice, startAngle, index) { + + if (slice.data[0][1] == 0) { + return true; + } + + // format label text + + var lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter; + + if (lf) { + text = lf(slice.label, slice); + } else { + text = slice.label; + } + + if (plf) { + text = plf(text, slice); + } + + var halfAngle = ((startAngle + slice.angle) + startAngle) / 2; + var x = centerLeft + Math.round(Math.cos(halfAngle) * radius); + var y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt; + + var html = "" + text + ""; + target.append(html); + + var label = target.children("#pieLabel" + index); + var labelTop = (y - label.height() / 2); + var labelLeft = (x - label.width() / 2); + + label.css("top", labelTop); + label.css("left", labelLeft); + + // check to make sure that the label is not outside the canvas + + if (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) { + return false; + } + + if (options.series.pie.label.background.opacity != 0) { + + // put in the transparent background separately to avoid blended labels and label boxes + + var c = options.series.pie.label.background.color; + + if (c == null) { + c = slice.color; + } + + var pos = "top:" + labelTop + "px;left:" + labelLeft + "px;"; + $("
      ") + .css("opacity", options.series.pie.label.background.opacity) + .insertBefore(label); + } + + return true; + } // end individual label function + } // end drawLabels function + } // end drawPie function + } // end draw function + + // Placed here because it needs to be accessed from multiple locations + + function drawDonutHole(layer) { + if (options.series.pie.innerRadius > 0) { + + // subtract the center + + layer.save(); + var innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius; + layer.globalCompositeOperation = "destination-out"; // this does not work with excanvas, but it will fall back to using the stroke color + layer.beginPath(); + layer.fillStyle = options.series.pie.stroke.color; + layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); + layer.fill(); + layer.closePath(); + layer.restore(); + + // add inner stroke + + layer.save(); + layer.beginPath(); + layer.strokeStyle = options.series.pie.stroke.color; + layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); + layer.stroke(); + layer.closePath(); + layer.restore(); + + // TODO: add extra shadow inside hole (with a mask) if the pie is tilted. + } + } + + //-- Additional Interactive related functions -- + + function isPointInPoly(poly, pt) { + for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i) + ((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1])) + && (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0]) + && (c = !c); + return c; + } + + function findNearbySlice(mouseX, mouseY) { + + var slices = plot.getData(), + options = plot.getOptions(), + radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius, + x, y; + + for (var i = 0; i < slices.length; ++i) { + + var s = slices[i]; + + if (s.pie.show) { + + ctx.save(); + ctx.beginPath(); + ctx.moveTo(0, 0); // Center of the pie + //ctx.scale(1, options.series.pie.tilt); // this actually seems to break everything when here. + ctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false); + ctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false); + ctx.closePath(); + x = mouseX - centerLeft; + y = mouseY - centerTop; + + if (ctx.isPointInPath) { + if (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) { + ctx.restore(); + return { + datapoint: [s.percent, s.data], + dataIndex: 0, + series: s, + seriesIndex: i + }; + } + } else { + + // excanvas for IE doesn;t support isPointInPath, this is a workaround. + + var p1X = radius * Math.cos(s.startAngle), + p1Y = radius * Math.sin(s.startAngle), + p2X = radius * Math.cos(s.startAngle + s.angle / 4), + p2Y = radius * Math.sin(s.startAngle + s.angle / 4), + p3X = radius * Math.cos(s.startAngle + s.angle / 2), + p3Y = radius * Math.sin(s.startAngle + s.angle / 2), + p4X = radius * Math.cos(s.startAngle + s.angle / 1.5), + p4Y = radius * Math.sin(s.startAngle + s.angle / 1.5), + p5X = radius * Math.cos(s.startAngle + s.angle), + p5Y = radius * Math.sin(s.startAngle + s.angle), + arrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]], + arrPoint = [x, y]; + + // TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt? + + if (isPointInPoly(arrPoly, arrPoint)) { + ctx.restore(); + return { + datapoint: [s.percent, s.data], + dataIndex: 0, + series: s, + seriesIndex: i + }; + } + } + + ctx.restore(); + } + } + + return null; + } + + function onMouseMove(e) { + triggerClickHoverEvent("plothover", e); + } + + function onClick(e) { + triggerClickHoverEvent("plotclick", e); + } + + // trigger click or hover event (they send the same parameters so we share their code) + + function triggerClickHoverEvent(eventname, e) { + + var offset = plot.offset(); + var canvasX = parseInt(e.pageX - offset.left); + var canvasY = parseInt(e.pageY - offset.top); + var item = findNearbySlice(canvasX, canvasY); + + if (options.grid.autoHighlight) { + + // clear auto-highlights + + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.auto == eventname && !(item && h.series == item.series)) { + unhighlight(h.series); + } + } + } + + // highlight the slice + + if (item) { + highlight(item.series, eventname); + } + + // trigger any hover bind events + + var pos = { pageX: e.pageX, pageY: e.pageY }; + target.trigger(eventname, [pos, item]); + } + + function highlight(s, auto) { + //if (typeof s == "number") { + // s = series[s]; + //} + + var i = indexOfHighlight(s); + + if (i == -1) { + highlights.push({ series: s, auto: auto }); + plot.triggerRedrawOverlay(); + } else if (!auto) { + highlights[i].auto = false; + } + } + + function unhighlight(s) { + if (s == null) { + highlights = []; + plot.triggerRedrawOverlay(); + } + + //if (typeof s == "number") { + // s = series[s]; + //} + + var i = indexOfHighlight(s); + + if (i != -1) { + highlights.splice(i, 1); + plot.triggerRedrawOverlay(); + } + } + + function indexOfHighlight(s) { + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.series == s) + return i; + } + return -1; + } + + function drawOverlay(plot, octx) { + + var options = plot.getOptions(); + + var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; + + octx.save(); + octx.translate(centerLeft, centerTop); + octx.scale(1, options.series.pie.tilt); + + for (var i = 0; i < highlights.length; ++i) { + drawHighlight(highlights[i].series); + } + + drawDonutHole(octx); + + octx.restore(); + + function drawHighlight(series) { + + if (series.angle <= 0 || isNaN(series.angle)) { + return; + } + + //octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString(); + octx.fillStyle = "rgba(255, 255, 255, " + options.series.pie.highlight.opacity + ")"; // this is temporary until we have access to parseColor + octx.beginPath(); + if (Math.abs(series.angle - Math.PI * 2) > 0.000000001) { + octx.moveTo(0, 0); // Center of the pie + } + octx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false); + octx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false); + octx.closePath(); + octx.fill(); + } + } + } // end init (plugin body) + + // define pie specific options and their default values + + var options = { + series: { + pie: { + show: false, + radius: "auto", // actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value) + innerRadius: 0, /* for donut */ + startAngle: 3/2, + tilt: 1, + shadow: { + left: 5, // shadow left offset + top: 15, // shadow top offset + alpha: 0.02 // shadow alpha + }, + offset: { + top: 0, + left: "auto" + }, + stroke: { + color: "#fff", + width: 1 + }, + label: { + show: "auto", + formatter: function(label, slice) { + return "
      " + label + "
      " + Math.round(slice.percent) + "%
      "; + }, // formatter function + radius: 1, // radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value) + background: { + color: null, + opacity: 0 + }, + threshold: 0 // percentage at which to hide the label (i.e. the slice is too narrow) + }, + combine: { + threshold: -1, // percentage at which to combine little slices into one larger slice + color: null, // color to give the new slice (auto-generated if null) + label: "Other" // label to give the new slice + }, + highlight: { + //color: "#fff", // will add this functionality once parseColor is available + opacity: 0.5 + } + } + } + }; + + $.plot.plugins.push({ + init: init, + options: options, + name: "pie", + version: "1.1" + }); + +})(jQuery); diff --git a/public/assets/js/plugins/flot/jquery.flot.pie.min.js b/public/assets/js/plugins/flot/jquery.flot.pie.min.js new file mode 100755 index 00000000..88ffc9c9 --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.pie.min.js @@ -0,0 +1 @@ +(function($){var REDRAW_ATTEMPTS=10;var REDRAW_SHRINK=.95;function init(plot){var canvas=null,target=null,options=null,maxRadius=null,centerLeft=null,centerTop=null,processed=false,ctx=null;var highlights=[];plot.hooks.processOptions.push(function(plot,options){if(options.series.pie.show){options.grid.show=false;if(options.series.pie.label.show=="auto"){if(options.legend.show){options.series.pie.label.show=false}else{options.series.pie.label.show=true}}if(options.series.pie.radius=="auto"){if(options.series.pie.label.show){options.series.pie.radius=3/4}else{options.series.pie.radius=1}}if(options.series.pie.tilt>1){options.series.pie.tilt=1}else if(options.series.pie.tilt<0){options.series.pie.tilt=0}}});plot.hooks.bindEvents.push(function(plot,eventHolder){var options=plot.getOptions();if(options.series.pie.show){if(options.grid.hoverable){eventHolder.unbind("mousemove").mousemove(onMouseMove)}if(options.grid.clickable){eventHolder.unbind("click").click(onClick)}}});plot.hooks.processDatapoints.push(function(plot,series,data,datapoints){var options=plot.getOptions();if(options.series.pie.show){processDatapoints(plot,series,data,datapoints)}});plot.hooks.drawOverlay.push(function(plot,octx){var options=plot.getOptions();if(options.series.pie.show){drawOverlay(plot,octx)}});plot.hooks.draw.push(function(plot,newCtx){var options=plot.getOptions();if(options.series.pie.show){draw(plot,newCtx)}});function processDatapoints(plot,series,datapoints){if(!processed){processed=true;canvas=plot.getCanvas();target=$(canvas).parent();options=plot.getOptions();plot.setData(combine(plot.getData()))}}function combine(data){var total=0,combined=0,numCombined=0,color=options.series.pie.combine.color,newdata=[];for(var i=0;ioptions.series.pie.combine.threshold){newdata.push({data:[[1,value]],color:data[i].color,label:data[i].label,angle:value*Math.PI*2/total,percent:value/(total/100)})}}if(numCombined>1){newdata.push({data:[[1,combined]],color:color,label:options.series.pie.combine.label,angle:combined*Math.PI*2/total,percent:combined/(total/100)})}return newdata}function draw(plot,newCtx){if(!target){return}var canvasWidth=plot.getPlaceholder().width(),canvasHeight=plot.getPlaceholder().height(),legendWidth=target.children().filter(".legend").children().width()||0;ctx=newCtx;processed=false;maxRadius=Math.min(canvasWidth,canvasHeight/options.series.pie.tilt)/2;centerTop=canvasHeight/2+options.series.pie.offset.top;centerLeft=canvasWidth/2;if(options.series.pie.offset.left=="auto"){if(options.legend.position.match("w")){centerLeft+=legendWidth/2}else{centerLeft-=legendWidth/2}if(centerLeftcanvasWidth-maxRadius){centerLeft=canvasWidth-maxRadius}}else{centerLeft+=options.series.pie.offset.left}var slices=plot.getData(),attempts=0;do{if(attempts>0){maxRadius*=REDRAW_SHRINK}attempts+=1;clear();if(options.series.pie.tilt<=.8){drawShadow()}}while(!drawPie()&&attempts=REDRAW_ATTEMPTS){clear();target.prepend("
      Could not draw pie with labels contained inside canvas
      ")}if(plot.setSeries&&plot.insertLegend){plot.setSeries(slices);plot.insertLegend()}function clear(){ctx.clearRect(0,0,canvasWidth,canvasHeight);target.children().filter(".pieLabel, .pieLabelBackground").remove()}function drawShadow(){var shadowLeft=options.series.pie.shadow.left;var shadowTop=options.series.pie.shadow.top;var edge=10;var alpha=options.series.pie.shadow.alpha;var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;if(radius>=canvasWidth/2-shadowLeft||radius*options.series.pie.tilt>=canvasHeight/2-shadowTop||radius<=edge){return}ctx.save();ctx.translate(shadowLeft,shadowTop);ctx.globalAlpha=alpha;ctx.fillStyle="#000";ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);for(var i=1;i<=edge;i++){ctx.beginPath();ctx.arc(0,0,radius,0,Math.PI*2,false);ctx.fill();radius-=i}ctx.restore()}function drawPie(){var startAngle=Math.PI*options.series.pie.startAngle;var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;ctx.save();ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);ctx.save();var currentAngle=startAngle;for(var i=0;i0){ctx.save();ctx.lineWidth=options.series.pie.stroke.width;currentAngle=startAngle;for(var i=0;i1e-9){ctx.moveTo(0,0)}ctx.arc(0,0,radius,currentAngle,currentAngle+angle/2,false);ctx.arc(0,0,radius,currentAngle+angle/2,currentAngle+angle,false);ctx.closePath();currentAngle+=angle;if(fill){ctx.fill()}else{ctx.stroke()}}function drawLabels(){var currentAngle=startAngle;var radius=options.series.pie.label.radius>1?options.series.pie.label.radius:maxRadius*options.series.pie.label.radius;for(var i=0;i=options.series.pie.label.threshold*100){if(!drawLabel(slices[i],currentAngle,i)){return false}}currentAngle+=slices[i].angle}return true;function drawLabel(slice,startAngle,index){if(slice.data[0][1]==0){return true}var lf=options.legend.labelFormatter,text,plf=options.series.pie.label.formatter;if(lf){text=lf(slice.label,slice)}else{text=slice.label}if(plf){text=plf(text,slice)}var halfAngle=(startAngle+slice.angle+startAngle)/2;var x=centerLeft+Math.round(Math.cos(halfAngle)*radius);var y=centerTop+Math.round(Math.sin(halfAngle)*radius)*options.series.pie.tilt;var html=""+text+"";target.append(html);var label=target.children("#pieLabel"+index);var labelTop=y-label.height()/2;var labelLeft=x-label.width()/2;label.css("top",labelTop);label.css("left",labelLeft);if(0-labelTop>0||0-labelLeft>0||canvasHeight-(labelTop+label.height())<0||canvasWidth-(labelLeft+label.width())<0){return false}if(options.series.pie.label.background.opacity!=0){var c=options.series.pie.label.background.color;if(c==null){c=slice.color}var pos="top:"+labelTop+"px;left:"+labelLeft+"px;";$("
      ").css("opacity",options.series.pie.label.background.opacity).insertBefore(label)}return true}}}}function drawDonutHole(layer){if(options.series.pie.innerRadius>0){layer.save();var innerRadius=options.series.pie.innerRadius>1?options.series.pie.innerRadius:maxRadius*options.series.pie.innerRadius;layer.globalCompositeOperation="destination-out";layer.beginPath();layer.fillStyle=options.series.pie.stroke.color;layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.fill();layer.closePath();layer.restore();layer.save();layer.beginPath();layer.strokeStyle=options.series.pie.stroke.color;layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.stroke();layer.closePath();layer.restore()}}function isPointInPoly(poly,pt){for(var c=false,i=-1,l=poly.length,j=l-1;++i1?options.series.pie.radius:maxRadius*options.series.pie.radius,x,y;for(var i=0;i1?options.series.pie.radius:maxRadius*options.series.pie.radius;octx.save();octx.translate(centerLeft,centerTop);octx.scale(1,options.series.pie.tilt);for(var i=0;i1e-9){octx.moveTo(0,0)}octx.arc(0,0,radius,series.startAngle,series.startAngle+series.angle/2,false);octx.arc(0,0,radius,series.startAngle+series.angle/2,series.startAngle+series.angle,false);octx.closePath();octx.fill()}}}var options={series:{pie:{show:false,radius:"auto",innerRadius:0,startAngle:3/2,tilt:1,shadow:{left:5,top:15,alpha:.02},offset:{top:0,left:"auto"},stroke:{color:"#fff",width:1},label:{show:"auto",formatter:function(label,slice){return"
      "+label+"
      "+Math.round(slice.percent)+"%
      "},radius:1,background:{color:null,opacity:0},threshold:0},combine:{threshold:-1,color:null,label:"Other"},highlight:{opacity:.5}}}};$.plot.plugins.push({init:init,options:options,name:"pie",version:"1.1"})})(jQuery); \ No newline at end of file diff --git a/public/assets/js/plugins/flot/jquery.flot.resize.js b/public/assets/js/plugins/flot/jquery.flot.resize.js new file mode 100755 index 00000000..44e04f8f --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.resize.js @@ -0,0 +1,60 @@ +/* Flot plugin for automatically redrawing plots as the placeholder resizes. + +Copyright (c) 2007-2013 IOLA and Ole Laursen. +Licensed under the MIT license. + +It works by listening for changes on the placeholder div (through the jQuery +resize event plugin) - if the size changes, it will redraw the plot. + +There are no options. If you need to disable the plugin for some plots, you +can just fix the size of their placeholders. + +*/ + +/* Inline dependency: + * jQuery resize event - v1.1 - 3/14/2010 + * http://benalman.com/projects/jquery-resize-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ + +(function($,t,n){function p(){for(var n=r.length-1;n>=0;n--){var o=$(r[n]);if(o[0]==t||o.is(":visible")){var h=o.width(),d=o.height(),v=o.data(a);!v||h===v.w&&d===v.h?i[f]=i[l]:(i[f]=i[c],o.trigger(u,[v.w=h,v.h=d]))}else v=o.data(a),v.w=0,v.h=0}s!==null&&(s=t.requestAnimationFrame(p))}var r=[],i=$.resize=$.extend($.resize,{}),s,o="setTimeout",u="resize",a=u+"-special-event",f="delay",l="pendingDelay",c="activeDelay",h="throttleWindow";i[l]=250,i[c]=20,i[f]=i[l],i[h]=!0,$.event.special[u]={setup:function(){if(!i[h]&&this[o])return!1;var t=$(this);r.push(this),t.data(a,{w:t.width(),h:t.height()}),r.length===1&&(s=n,p())},teardown:function(){if(!i[h]&&this[o])return!1;var t=$(this);for(var n=r.length-1;n>=0;n--)if(r[n]==this){r.splice(n,1);break}t.removeData(a),r.length||(cancelAnimationFrame(s),s=null)},add:function(t){function s(t,i,s){var o=$(this),u=o.data(a);u.w=i!==n?i:o.width(),u.h=s!==n?s:o.height(),r.apply(this,arguments)}if(!i[h]&&this[o])return!1;var r;if($.isFunction(t))return r=t,s;r=t.handler,t.handler=s}},t.requestAnimationFrame||(t.requestAnimationFrame=function(){return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(e,n){return t.setTimeout(e,i[f])}}()),t.cancelAnimationFrame||(t.cancelAnimationFrame=function(){return t.webkitCancelRequestAnimationFrame||t.mozCancelRequestAnimationFrame||t.oCancelRequestAnimationFrame||t.msCancelRequestAnimationFrame||clearTimeout}())})(jQuery,this); + +(function ($) { + var options = { }; // no options + + function init(plot) { + function onResize() { + var placeholder = plot.getPlaceholder(); + + // somebody might have hidden us and we can't plot + // when we don't have the dimensions + if (placeholder.width() == 0 || placeholder.height() == 0) + return; + + plot.resize(); + plot.setupGrid(); + plot.draw(); + } + + function bindEvents(plot, eventHolder) { + plot.getPlaceholder().resize(onResize); + } + + function shutdown(plot, eventHolder) { + plot.getPlaceholder().unbind("resize", onResize); + } + + plot.hooks.bindEvents.push(bindEvents); + plot.hooks.shutdown.push(shutdown); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'resize', + version: '1.0' + }); +})(jQuery); diff --git a/public/assets/js/plugins/flot/jquery.flot.resize.min.js b/public/assets/js/plugins/flot/jquery.flot.resize.min.js new file mode 100755 index 00000000..29838425 --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.resize.min.js @@ -0,0 +1 @@ +(function($,t,n){function p(){for(var n=r.length-1;n>=0;n--){var o=$(r[n]);if(o[0]==t||o.is(":visible")){var h=o.width(),d=o.height(),v=o.data(a);!v||h===v.w&&d===v.h?i[f]=i[l]:(i[f]=i[c],o.trigger(u,[v.w=h,v.h=d]))}else v=o.data(a),v.w=0,v.h=0}s!==null&&(s=t.requestAnimationFrame(p))}var r=[],i=$.resize=$.extend($.resize,{}),s,o="setTimeout",u="resize",a=u+"-special-event",f="delay",l="pendingDelay",c="activeDelay",h="throttleWindow";i[l]=250,i[c]=20,i[f]=i[l],i[h]=!0,$.event.special[u]={setup:function(){if(!i[h]&&this[o])return!1;var t=$(this);r.push(this),t.data(a,{w:t.width(),h:t.height()}),r.length===1&&(s=n,p())},teardown:function(){if(!i[h]&&this[o])return!1;var t=$(this);for(var n=r.length-1;n>=0;n--)if(r[n]==this){r.splice(n,1);break}t.removeData(a),r.length||(cancelAnimationFrame(s),s=null)},add:function(t){function s(t,i,s){var o=$(this),u=o.data(a);u.w=i!==n?i:o.width(),u.h=s!==n?s:o.height(),r.apply(this,arguments)}if(!i[h]&&this[o])return!1;var r;if($.isFunction(t))return r=t,s;r=t.handler,t.handler=s}},t.requestAnimationFrame||(t.requestAnimationFrame=function(){return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(e,n){return t.setTimeout(e,i[f])}}()),t.cancelAnimationFrame||(t.cancelAnimationFrame=function(){return t.webkitCancelRequestAnimationFrame||t.mozCancelRequestAnimationFrame||t.oCancelRequestAnimationFrame||t.msCancelRequestAnimationFrame||clearTimeout}())})(jQuery,this);(function($){var options={};function init(plot){function onResize(){var placeholder=plot.getPlaceholder();if(placeholder.width()==0||placeholder.height()==0)return;plot.resize();plot.setupGrid();plot.draw()}function bindEvents(plot,eventHolder){plot.getPlaceholder().resize(onResize)}function shutdown(plot,eventHolder){plot.getPlaceholder().unbind("resize",onResize)}plot.hooks.bindEvents.push(bindEvents);plot.hooks.shutdown.push(shutdown)}$.plot.plugins.push({init:init,options:options,name:"resize",version:"1.0"})})(jQuery); \ No newline at end of file diff --git a/public/assets/js/plugins/flot/jquery.flot.selection.js b/public/assets/js/plugins/flot/jquery.flot.selection.js new file mode 100755 index 00000000..f8fa668f --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.selection.js @@ -0,0 +1,360 @@ +/* Flot plugin for selecting regions of a plot. + +Copyright (c) 2007-2013 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin supports these options: + +selection: { + mode: null or "x" or "y" or "xy", + color: color, + shape: "round" or "miter" or "bevel", + minSize: number of pixels +} + +Selection support is enabled by setting the mode to one of "x", "y" or "xy". +In "x" mode, the user will only be able to specify the x range, similarly for +"y" mode. For "xy", the selection becomes a rectangle where both ranges can be +specified. "color" is color of the selection (if you need to change the color +later on, you can get to it with plot.getOptions().selection.color). "shape" +is the shape of the corners of the selection. + +"minSize" is the minimum size a selection can be in pixels. This value can +be customized to determine the smallest size a selection can be and still +have the selection rectangle be displayed. When customizing this value, the +fact that it refers to pixels, not axis units must be taken into account. +Thus, for example, if there is a bar graph in time mode with BarWidth set to 1 +minute, setting "minSize" to 1 will not make the minimum selection size 1 +minute, but rather 1 pixel. Note also that setting "minSize" to 0 will prevent +"plotunselected" events from being fired when the user clicks the mouse without +dragging. + +When selection support is enabled, a "plotselected" event will be emitted on +the DOM element you passed into the plot function. The event handler gets a +parameter with the ranges selected on the axes, like this: + + placeholder.bind( "plotselected", function( event, ranges ) { + alert("You selected " + ranges.xaxis.from + " to " + ranges.xaxis.to) + // similar for yaxis - with multiple axes, the extra ones are in + // x2axis, x3axis, ... + }); + +The "plotselected" event is only fired when the user has finished making the +selection. A "plotselecting" event is fired during the process with the same +parameters as the "plotselected" event, in case you want to know what's +happening while it's happening, + +A "plotunselected" event with no arguments is emitted when the user clicks the +mouse to remove the selection. As stated above, setting "minSize" to 0 will +destroy this behavior. + +The plugin allso adds the following methods to the plot object: + +- setSelection( ranges, preventEvent ) + + Set the selection rectangle. The passed in ranges is on the same form as + returned in the "plotselected" event. If the selection mode is "x", you + should put in either an xaxis range, if the mode is "y" you need to put in + an yaxis range and both xaxis and yaxis if the selection mode is "xy", like + this: + + setSelection({ xaxis: { from: 0, to: 10 }, yaxis: { from: 40, to: 60 } }); + + setSelection will trigger the "plotselected" event when called. If you don't + want that to happen, e.g. if you're inside a "plotselected" handler, pass + true as the second parameter. If you are using multiple axes, you can + specify the ranges on any of those, e.g. as x2axis/x3axis/... instead of + xaxis, the plugin picks the first one it sees. + +- clearSelection( preventEvent ) + + Clear the selection rectangle. Pass in true to avoid getting a + "plotunselected" event. + +- getSelection() + + Returns the current selection in the same format as the "plotselected" + event. If there's currently no selection, the function returns null. + +*/ + +(function ($) { + function init(plot) { + var selection = { + first: { x: -1, y: -1}, second: { x: -1, y: -1}, + show: false, + active: false + }; + + // FIXME: The drag handling implemented here should be + // abstracted out, there's some similar code from a library in + // the navigation plugin, this should be massaged a bit to fit + // the Flot cases here better and reused. Doing this would + // make this plugin much slimmer. + var savedhandlers = {}; + + var mouseUpHandler = null; + + function onMouseMove(e) { + if (selection.active) { + updateSelection(e); + + plot.getPlaceholder().trigger("plotselecting", [ getSelection() ]); + } + } + + function onMouseDown(e) { + if (e.which != 1) // only accept left-click + return; + + // cancel out any text selections + document.body.focus(); + + // prevent text selection and drag in old-school browsers + if (document.onselectstart !== undefined && savedhandlers.onselectstart == null) { + savedhandlers.onselectstart = document.onselectstart; + document.onselectstart = function () { return false; }; + } + if (document.ondrag !== undefined && savedhandlers.ondrag == null) { + savedhandlers.ondrag = document.ondrag; + document.ondrag = function () { return false; }; + } + + setSelectionPos(selection.first, e); + + selection.active = true; + + // this is a bit silly, but we have to use a closure to be + // able to whack the same handler again + mouseUpHandler = function (e) { onMouseUp(e); }; + + $(document).one("mouseup", mouseUpHandler); + } + + function onMouseUp(e) { + mouseUpHandler = null; + + // revert drag stuff for old-school browsers + if (document.onselectstart !== undefined) + document.onselectstart = savedhandlers.onselectstart; + if (document.ondrag !== undefined) + document.ondrag = savedhandlers.ondrag; + + // no more dragging + selection.active = false; + updateSelection(e); + + if (selectionIsSane()) + triggerSelectedEvent(); + else { + // this counts as a clear + plot.getPlaceholder().trigger("plotunselected", [ ]); + plot.getPlaceholder().trigger("plotselecting", [ null ]); + } + + return false; + } + + function getSelection() { + if (!selectionIsSane()) + return null; + + if (!selection.show) return null; + + var r = {}, c1 = selection.first, c2 = selection.second; + $.each(plot.getAxes(), function (name, axis) { + if (axis.used) { + var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]); + r[name] = { from: Math.min(p1, p2), to: Math.max(p1, p2) }; + } + }); + return r; + } + + function triggerSelectedEvent() { + var r = getSelection(); + + plot.getPlaceholder().trigger("plotselected", [ r ]); + + // backwards-compat stuff, to be removed in future + if (r.xaxis && r.yaxis) + plot.getPlaceholder().trigger("selected", [ { x1: r.xaxis.from, y1: r.yaxis.from, x2: r.xaxis.to, y2: r.yaxis.to } ]); + } + + function clamp(min, value, max) { + return value < min ? min: (value > max ? max: value); + } + + function setSelectionPos(pos, e) { + var o = plot.getOptions(); + var offset = plot.getPlaceholder().offset(); + var plotOffset = plot.getPlotOffset(); + pos.x = clamp(0, e.pageX - offset.left - plotOffset.left, plot.width()); + pos.y = clamp(0, e.pageY - offset.top - plotOffset.top, plot.height()); + + if (o.selection.mode == "y") + pos.x = pos == selection.first ? 0 : plot.width(); + + if (o.selection.mode == "x") + pos.y = pos == selection.first ? 0 : plot.height(); + } + + function updateSelection(pos) { + if (pos.pageX == null) + return; + + setSelectionPos(selection.second, pos); + if (selectionIsSane()) { + selection.show = true; + plot.triggerRedrawOverlay(); + } + else + clearSelection(true); + } + + function clearSelection(preventEvent) { + if (selection.show) { + selection.show = false; + plot.triggerRedrawOverlay(); + if (!preventEvent) + plot.getPlaceholder().trigger("plotunselected", [ ]); + } + } + + // function taken from markings support in Flot + function extractRange(ranges, coord) { + var axis, from, to, key, axes = plot.getAxes(); + + for (var k in axes) { + axis = axes[k]; + if (axis.direction == coord) { + key = coord + axis.n + "axis"; + if (!ranges[key] && axis.n == 1) + key = coord + "axis"; // support x1axis as xaxis + if (ranges[key]) { + from = ranges[key].from; + to = ranges[key].to; + break; + } + } + } + + // backwards-compat stuff - to be removed in future + if (!ranges[key]) { + axis = coord == "x" ? plot.getXAxes()[0] : plot.getYAxes()[0]; + from = ranges[coord + "1"]; + to = ranges[coord + "2"]; + } + + // auto-reverse as an added bonus + if (from != null && to != null && from > to) { + var tmp = from; + from = to; + to = tmp; + } + + return { from: from, to: to, axis: axis }; + } + + function setSelection(ranges, preventEvent) { + var axis, range, o = plot.getOptions(); + + if (o.selection.mode == "y") { + selection.first.x = 0; + selection.second.x = plot.width(); + } + else { + range = extractRange(ranges, "x"); + + selection.first.x = range.axis.p2c(range.from); + selection.second.x = range.axis.p2c(range.to); + } + + if (o.selection.mode == "x") { + selection.first.y = 0; + selection.second.y = plot.height(); + } + else { + range = extractRange(ranges, "y"); + + selection.first.y = range.axis.p2c(range.from); + selection.second.y = range.axis.p2c(range.to); + } + + selection.show = true; + plot.triggerRedrawOverlay(); + if (!preventEvent && selectionIsSane()) + triggerSelectedEvent(); + } + + function selectionIsSane() { + var minSize = plot.getOptions().selection.minSize; + return Math.abs(selection.second.x - selection.first.x) >= minSize && + Math.abs(selection.second.y - selection.first.y) >= minSize; + } + + plot.clearSelection = clearSelection; + plot.setSelection = setSelection; + plot.getSelection = getSelection; + + plot.hooks.bindEvents.push(function(plot, eventHolder) { + var o = plot.getOptions(); + if (o.selection.mode != null) { + eventHolder.mousemove(onMouseMove); + eventHolder.mousedown(onMouseDown); + } + }); + + + plot.hooks.drawOverlay.push(function (plot, ctx) { + // draw selection + if (selection.show && selectionIsSane()) { + var plotOffset = plot.getPlotOffset(); + var o = plot.getOptions(); + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + var c = $.color.parse(o.selection.color); + + ctx.strokeStyle = c.scale('a', 0.8).toString(); + ctx.lineWidth = 1; + ctx.lineJoin = o.selection.shape; + ctx.fillStyle = c.scale('a', 0.4).toString(); + + var x = Math.min(selection.first.x, selection.second.x) + 0.5, + y = Math.min(selection.first.y, selection.second.y) + 0.5, + w = Math.abs(selection.second.x - selection.first.x) - 1, + h = Math.abs(selection.second.y - selection.first.y) - 1; + + ctx.fillRect(x, y, w, h); + ctx.strokeRect(x, y, w, h); + + ctx.restore(); + } + }); + + plot.hooks.shutdown.push(function (plot, eventHolder) { + eventHolder.unbind("mousemove", onMouseMove); + eventHolder.unbind("mousedown", onMouseDown); + + if (mouseUpHandler) + $(document).unbind("mouseup", mouseUpHandler); + }); + + } + + $.plot.plugins.push({ + init: init, + options: { + selection: { + mode: null, // one of null, "x", "y" or "xy" + color: "#e8cfac", + shape: "round", // one of "round", "miter", or "bevel" + minSize: 5 // minimum number of pixels + } + }, + name: 'selection', + version: '1.1' + }); +})(jQuery); diff --git a/public/assets/js/plugins/flot/jquery.flot.selection.min.js b/public/assets/js/plugins/flot/jquery.flot.selection.min.js new file mode 100755 index 00000000..6e319781 --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.selection.min.js @@ -0,0 +1 @@ +(function($){function init(plot){var selection={first:{x:-1,y:-1},second:{x:-1,y:-1},show:false,active:false};var savedhandlers={};var mouseUpHandler=null;function onMouseMove(e){if(selection.active){updateSelection(e);plot.getPlaceholder().trigger("plotselecting",[getSelection()])}}function onMouseDown(e){if(e.which!=1)return;document.body.focus();if(document.onselectstart!==undefined&&savedhandlers.onselectstart==null){savedhandlers.onselectstart=document.onselectstart;document.onselectstart=function(){return false}}if(document.ondrag!==undefined&&savedhandlers.ondrag==null){savedhandlers.ondrag=document.ondrag;document.ondrag=function(){return false}}setSelectionPos(selection.first,e);selection.active=true;mouseUpHandler=function(e){onMouseUp(e)};$(document).one("mouseup",mouseUpHandler)}function onMouseUp(e){mouseUpHandler=null;if(document.onselectstart!==undefined)document.onselectstart=savedhandlers.onselectstart;if(document.ondrag!==undefined)document.ondrag=savedhandlers.ondrag;selection.active=false;updateSelection(e);if(selectionIsSane())triggerSelectedEvent();else{plot.getPlaceholder().trigger("plotunselected",[]);plot.getPlaceholder().trigger("plotselecting",[null])}return false}function getSelection(){if(!selectionIsSane())return null;if(!selection.show)return null;var r={},c1=selection.first,c2=selection.second;$.each(plot.getAxes(),function(name,axis){if(axis.used){var p1=axis.c2p(c1[axis.direction]),p2=axis.c2p(c2[axis.direction]);r[name]={from:Math.min(p1,p2),to:Math.max(p1,p2)}}});return r}function triggerSelectedEvent(){var r=getSelection();plot.getPlaceholder().trigger("plotselected",[r]);if(r.xaxis&&r.yaxis)plot.getPlaceholder().trigger("selected",[{x1:r.xaxis.from,y1:r.yaxis.from,x2:r.xaxis.to,y2:r.yaxis.to}])}function clamp(min,value,max){return valuemax?max:value}function setSelectionPos(pos,e){var o=plot.getOptions();var offset=plot.getPlaceholder().offset();var plotOffset=plot.getPlotOffset();pos.x=clamp(0,e.pageX-offset.left-plotOffset.left,plot.width());pos.y=clamp(0,e.pageY-offset.top-plotOffset.top,plot.height());if(o.selection.mode=="y")pos.x=pos==selection.first?0:plot.width();if(o.selection.mode=="x")pos.y=pos==selection.first?0:plot.height()}function updateSelection(pos){if(pos.pageX==null)return;setSelectionPos(selection.second,pos);if(selectionIsSane()){selection.show=true;plot.triggerRedrawOverlay()}else clearSelection(true)}function clearSelection(preventEvent){if(selection.show){selection.show=false;plot.triggerRedrawOverlay();if(!preventEvent)plot.getPlaceholder().trigger("plotunselected",[])}}function extractRange(ranges,coord){var axis,from,to,key,axes=plot.getAxes();for(var k in axes){axis=axes[k];if(axis.direction==coord){key=coord+axis.n+"axis";if(!ranges[key]&&axis.n==1)key=coord+"axis";if(ranges[key]){from=ranges[key].from;to=ranges[key].to;break}}}if(!ranges[key]){axis=coord=="x"?plot.getXAxes()[0]:plot.getYAxes()[0];from=ranges[coord+"1"];to=ranges[coord+"2"]}if(from!=null&&to!=null&&from>to){var tmp=from;from=to;to=tmp}return{from:from,to:to,axis:axis}}function setSelection(ranges,preventEvent){var axis,range,o=plot.getOptions();if(o.selection.mode=="y"){selection.first.x=0;selection.second.x=plot.width()}else{range=extractRange(ranges,"x");selection.first.x=range.axis.p2c(range.from);selection.second.x=range.axis.p2c(range.to)}if(o.selection.mode=="x"){selection.first.y=0;selection.second.y=plot.height()}else{range=extractRange(ranges,"y");selection.first.y=range.axis.p2c(range.from);selection.second.y=range.axis.p2c(range.to)}selection.show=true;plot.triggerRedrawOverlay();if(!preventEvent&&selectionIsSane())triggerSelectedEvent()}function selectionIsSane(){var minSize=plot.getOptions().selection.minSize;return Math.abs(selection.second.x-selection.first.x)>=minSize&&Math.abs(selection.second.y-selection.first.y)>=minSize}plot.clearSelection=clearSelection;plot.setSelection=setSelection;plot.getSelection=getSelection;plot.hooks.bindEvents.push(function(plot,eventHolder){var o=plot.getOptions();if(o.selection.mode!=null){eventHolder.mousemove(onMouseMove);eventHolder.mousedown(onMouseDown)}});plot.hooks.drawOverlay.push(function(plot,ctx){if(selection.show&&selectionIsSane()){var plotOffset=plot.getPlotOffset();var o=plot.getOptions();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var c=$.color.parse(o.selection.color);ctx.strokeStyle=c.scale("a",.8).toString();ctx.lineWidth=1;ctx.lineJoin=o.selection.shape;ctx.fillStyle=c.scale("a",.4).toString();var x=Math.min(selection.first.x,selection.second.x)+.5,y=Math.min(selection.first.y,selection.second.y)+.5,w=Math.abs(selection.second.x-selection.first.x)-1,h=Math.abs(selection.second.y-selection.first.y)-1;ctx.fillRect(x,y,w,h);ctx.strokeRect(x,y,w,h);ctx.restore()}});plot.hooks.shutdown.push(function(plot,eventHolder){eventHolder.unbind("mousemove",onMouseMove);eventHolder.unbind("mousedown",onMouseDown);if(mouseUpHandler)$(document).unbind("mouseup",mouseUpHandler)})}$.plot.plugins.push({init:init,options:{selection:{mode:null,color:"#e8cfac",shape:"round",minSize:5}},name:"selection",version:"1.1"})})(jQuery); \ No newline at end of file diff --git a/public/assets/js/plugins/flot/jquery.flot.stack.js b/public/assets/js/plugins/flot/jquery.flot.stack.js new file mode 100755 index 00000000..c01de67d --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.stack.js @@ -0,0 +1,188 @@ +/* Flot plugin for stacking data sets rather than overlyaing them. + +Copyright (c) 2007-2013 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin assumes the data is sorted on x (or y if stacking horizontally). +For line charts, it is assumed that if a line has an undefined gap (from a +null point), then the line above it should have the same gap - insert zeros +instead of "null" if you want another behaviour. This also holds for the start +and end of the chart. Note that stacking a mix of positive and negative values +in most instances doesn't make sense (so it looks weird). + +Two or more series are stacked when their "stack" attribute is set to the same +key (which can be any number or string or just "true"). To specify the default +stack, you can set the stack option like this: + + series: { + stack: null/false, true, or a key (number/string) + } + +You can also specify it for a single series, like this: + + $.plot( $("#placeholder"), [{ + data: [ ... ], + stack: true + }]) + +The stacking order is determined by the order of the data series in the array +(later series end up on top of the previous). + +Internally, the plugin modifies the datapoints in each series, adding an +offset to the y value. For line series, extra data points are inserted through +interpolation. If there's a second y value, it's also adjusted (e.g for bar +charts or filled areas). + +*/ + +(function ($) { + var options = { + series: { stack: null } // or number/string + }; + + function init(plot) { + function findMatchingSeries(s, allseries) { + var res = null; + for (var i = 0; i < allseries.length; ++i) { + if (s == allseries[i]) + break; + + if (allseries[i].stack == s.stack) + res = allseries[i]; + } + + return res; + } + + function stackData(plot, s, datapoints) { + if (s.stack == null || s.stack === false) + return; + + var other = findMatchingSeries(s, plot.getData()); + if (!other) + return; + + var ps = datapoints.pointsize, + points = datapoints.points, + otherps = other.datapoints.pointsize, + otherpoints = other.datapoints.points, + newpoints = [], + px, py, intery, qx, qy, bottom, + withlines = s.lines.show, + horizontal = s.bars.horizontal, + withbottom = ps > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y), + withsteps = withlines && s.lines.steps, + fromgap = true, + keyOffset = horizontal ? 1 : 0, + accumulateOffset = horizontal ? 0 : 1, + i = 0, j = 0, l, m; + + while (true) { + if (i >= points.length) + break; + + l = newpoints.length; + + if (points[i] == null) { + // copy gaps + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + i += ps; + } + else if (j >= otherpoints.length) { + // for lines, we can't use the rest of the points + if (!withlines) { + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + } + i += ps; + } + else if (otherpoints[j] == null) { + // oops, got a gap + for (m = 0; m < ps; ++m) + newpoints.push(null); + fromgap = true; + j += otherps; + } + else { + // cases where we actually got two points + px = points[i + keyOffset]; + py = points[i + accumulateOffset]; + qx = otherpoints[j + keyOffset]; + qy = otherpoints[j + accumulateOffset]; + bottom = 0; + + if (px == qx) { + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + + newpoints[l + accumulateOffset] += qy; + bottom = qy; + + i += ps; + j += otherps; + } + else if (px > qx) { + // we got past point below, might need to + // insert interpolated extra point + if (withlines && i > 0 && points[i - ps] != null) { + intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px); + newpoints.push(qx); + newpoints.push(intery + qy); + for (m = 2; m < ps; ++m) + newpoints.push(points[i + m]); + bottom = qy; + } + + j += otherps; + } + else { // px < qx + if (fromgap && withlines) { + // if we come from a gap, we just skip this point + i += ps; + continue; + } + + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + + // we might be able to interpolate a point below, + // this can give us a better y + if (withlines && j > 0 && otherpoints[j - otherps] != null) + bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx); + + newpoints[l + accumulateOffset] += bottom; + + i += ps; + } + + fromgap = false; + + if (l != newpoints.length && withbottom) + newpoints[l + 2] += bottom; + } + + // maintain the line steps invariant + if (withsteps && l != newpoints.length && l > 0 + && newpoints[l] != null + && newpoints[l] != newpoints[l - ps] + && newpoints[l + 1] != newpoints[l - ps + 1]) { + for (m = 0; m < ps; ++m) + newpoints[l + ps + m] = newpoints[l + m]; + newpoints[l + 1] = newpoints[l - ps + 1]; + } + } + + datapoints.points = newpoints; + } + + plot.hooks.processDatapoints.push(stackData); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'stack', + version: '1.2' + }); +})(jQuery); diff --git a/public/assets/js/plugins/flot/jquery.flot.stack.min.js b/public/assets/js/plugins/flot/jquery.flot.stack.min.js new file mode 100755 index 00000000..57785ebd --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.stack.min.js @@ -0,0 +1 @@ +(function($){var options={series:{stack:null}};function init(plot){function findMatchingSeries(s,allseries){var res=null;for(var i=0;i2&&(horizontal?datapoints.format[2].x:datapoints.format[2].y),withsteps=withlines&&s.lines.steps,fromgap=true,keyOffset=horizontal?1:0,accumulateOffset=horizontal?0:1,i=0,j=0,l,m;while(true){if(i>=points.length)break;l=newpoints.length;if(points[i]==null){for(m=0;m=otherpoints.length){if(!withlines){for(m=0;mqx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+accumulateOffset]-py)*(qx-px)/(points[i-ps+keyOffset]-px);newpoints.push(qx);newpoints.push(intery+qy);for(m=2;m0&&otherpoints[j-otherps]!=null)bottom=qy+(otherpoints[j-otherps+accumulateOffset]-qy)*(px-qx)/(otherpoints[j-otherps+keyOffset]-qx);newpoints[l+accumulateOffset]+=bottom;i+=ps}fromgap=false;if(l!=newpoints.length&&withbottom)newpoints[l+2]+=bottom}if(withsteps&&l!=newpoints.length&&l>0&&newpoints[l]!=null&&newpoints[l]!=newpoints[l-ps]&&newpoints[l+1]!=newpoints[l-ps+1]){for(m=0;m s = r * sqrt(pi)/2 + var size = radius * Math.sqrt(Math.PI) / 2; + ctx.rect(x - size, y - size, size + size, size + size); + }, + diamond: function (ctx, x, y, radius, shadow) { + // pi * r^2 = 2s^2 => s = r * sqrt(pi/2) + var size = radius * Math.sqrt(Math.PI / 2); + ctx.moveTo(x - size, y); + ctx.lineTo(x, y - size); + ctx.lineTo(x + size, y); + ctx.lineTo(x, y + size); + ctx.lineTo(x - size, y); + }, + triangle: function (ctx, x, y, radius, shadow) { + // pi * r^2 = 1/2 * s^2 * sin (pi / 3) => s = r * sqrt(2 * pi / sin(pi / 3)) + var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3)); + var height = size * Math.sin(Math.PI / 3); + ctx.moveTo(x - size/2, y + height/2); + ctx.lineTo(x + size/2, y + height/2); + if (!shadow) { + ctx.lineTo(x, y - height/2); + ctx.lineTo(x - size/2, y + height/2); + } + }, + cross: function (ctx, x, y, radius, shadow) { + // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 + var size = radius * Math.sqrt(Math.PI) / 2; + ctx.moveTo(x - size, y - size); + ctx.lineTo(x + size, y + size); + ctx.moveTo(x - size, y + size); + ctx.lineTo(x + size, y - size); + } + }; + + var s = series.points.symbol; + if (handlers[s]) + series.points.symbol = handlers[s]; + } + + function init(plot) { + plot.hooks.processDatapoints.push(processRawData); + } + + $.plot.plugins.push({ + init: init, + name: 'symbols', + version: '1.0' + }); +})(jQuery); diff --git a/public/assets/js/plugins/flot/jquery.flot.symbol.min.js b/public/assets/js/plugins/flot/jquery.flot.symbol.min.js new file mode 100755 index 00000000..3eab213e --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.symbol.min.js @@ -0,0 +1 @@ +(function($){function processRawData(plot,series,datapoints){var handlers={square:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.rect(x-size,y-size,size+size,size+size)},diamond:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI/2);ctx.moveTo(x-size,y);ctx.lineTo(x,y-size);ctx.lineTo(x+size,y);ctx.lineTo(x,y+size);ctx.lineTo(x-size,y)},triangle:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(2*Math.PI/Math.sin(Math.PI/3));var height=size*Math.sin(Math.PI/3);ctx.moveTo(x-size/2,y+height/2);ctx.lineTo(x+size/2,y+height/2);if(!shadow){ctx.lineTo(x,y-height/2);ctx.lineTo(x-size/2,y+height/2)}},cross:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.moveTo(x-size,y-size);ctx.lineTo(x+size,y+size);ctx.moveTo(x-size,y+size);ctx.lineTo(x+size,y-size)}};var s=series.points.symbol;if(handlers[s])series.points.symbol=handlers[s]}function init(plot){plot.hooks.processDatapoints.push(processRawData)}$.plot.plugins.push({init:init,name:"symbols",version:"1.0"})})(jQuery); \ No newline at end of file diff --git a/public/assets/js/plugins/flot/jquery.flot.threshold.js b/public/assets/js/plugins/flot/jquery.flot.threshold.js new file mode 100755 index 00000000..2f6e6359 --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.threshold.js @@ -0,0 +1,142 @@ +/* Flot plugin for thresholding data. + +Copyright (c) 2007-2013 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin supports these options: + + series: { + threshold: { + below: number + color: colorspec + } + } + +It can also be applied to a single series, like this: + + $.plot( $("#placeholder"), [{ + data: [ ... ], + threshold: { ... } + }]) + +An array can be passed for multiple thresholding, like this: + + threshold: [{ + below: number1 + color: color1 + },{ + below: number2 + color: color2 + }] + +These multiple threshold objects can be passed in any order since they are +sorted by the processing function. + +The data points below "below" are drawn with the specified color. This makes +it easy to mark points below 0, e.g. for budget data. + +Internally, the plugin works by splitting the data into two series, above and +below the threshold. The extra series below the threshold will have its label +cleared and the special "originSeries" attribute set to the original series. +You may need to check for this in hover events. + +*/ + +(function ($) { + var options = { + series: { threshold: null } // or { below: number, color: color spec} + }; + + function init(plot) { + function thresholdData(plot, s, datapoints, below, color) { + var ps = datapoints.pointsize, i, x, y, p, prevp, + thresholded = $.extend({}, s); // note: shallow copy + + thresholded.datapoints = { points: [], pointsize: ps, format: datapoints.format }; + thresholded.label = null; + thresholded.color = color; + thresholded.threshold = null; + thresholded.originSeries = s; + thresholded.data = []; + + var origpoints = datapoints.points, + addCrossingPoints = s.lines.show; + + var threspoints = []; + var newpoints = []; + var m; + + for (i = 0; i < origpoints.length; i += ps) { + x = origpoints[i]; + y = origpoints[i + 1]; + + prevp = p; + if (y < below) + p = threspoints; + else + p = newpoints; + + if (addCrossingPoints && prevp != p && x != null + && i > 0 && origpoints[i - ps] != null) { + var interx = x + (below - y) * (x - origpoints[i - ps]) / (y - origpoints[i - ps + 1]); + prevp.push(interx); + prevp.push(below); + for (m = 2; m < ps; ++m) + prevp.push(origpoints[i + m]); + + p.push(null); // start new segment + p.push(null); + for (m = 2; m < ps; ++m) + p.push(origpoints[i + m]); + p.push(interx); + p.push(below); + for (m = 2; m < ps; ++m) + p.push(origpoints[i + m]); + } + + p.push(x); + p.push(y); + for (m = 2; m < ps; ++m) + p.push(origpoints[i + m]); + } + + datapoints.points = newpoints; + thresholded.datapoints.points = threspoints; + + if (thresholded.datapoints.points.length > 0) { + var origIndex = $.inArray(s, plot.getData()); + // Insert newly-generated series right after original one (to prevent it from becoming top-most) + plot.getData().splice(origIndex + 1, 0, thresholded); + } + + // FIXME: there are probably some edge cases left in bars + } + + function processThresholds(plot, s, datapoints) { + if (!s.threshold) + return; + + if (s.threshold instanceof Array) { + s.threshold.sort(function(a, b) { + return a.below - b.below; + }); + + $(s.threshold).each(function(i, th) { + thresholdData(plot, s, datapoints, th.below, th.color); + }); + } + else { + thresholdData(plot, s, datapoints, s.threshold.below, s.threshold.color); + } + } + + plot.hooks.processDatapoints.push(processThresholds); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'threshold', + version: '1.2' + }); +})(jQuery); diff --git a/public/assets/js/plugins/flot/jquery.flot.threshold.min.js b/public/assets/js/plugins/flot/jquery.flot.threshold.min.js new file mode 100755 index 00000000..a53849a5 --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.threshold.min.js @@ -0,0 +1 @@ +(function($){var options={series:{threshold:null}};function init(plot){function thresholdData(plot,s,datapoints,below,color){var ps=datapoints.pointsize,i,x,y,p,prevp,thresholded=$.extend({},s);thresholded.datapoints={points:[],pointsize:ps,format:datapoints.format};thresholded.label=null;thresholded.color=color;thresholded.threshold=null;thresholded.originSeries=s;thresholded.data=[];var origpoints=datapoints.points,addCrossingPoints=s.lines.show;var threspoints=[];var newpoints=[];var m;for(i=0;i0&&origpoints[i-ps]!=null){var interx=x+(below-y)*(x-origpoints[i-ps])/(y-origpoints[i-ps+1]);prevp.push(interx);prevp.push(below);for(m=2;m0){var origIndex=$.inArray(s,plot.getData());plot.getData().splice(origIndex+1,0,thresholded)}}function processThresholds(plot,s,datapoints){if(!s.threshold)return;if(s.threshold instanceof Array){s.threshold.sort(function(a,b){return a.below-b.below});$(s.threshold).each(function(i,th){thresholdData(plot,s,datapoints,th.below,th.color)})}else{thresholdData(plot,s,datapoints,s.threshold.below,s.threshold.color)}}plot.hooks.processDatapoints.push(processThresholds)}$.plot.plugins.push({init:init,options:options,name:"threshold",version:"1.2"})})(jQuery); \ No newline at end of file diff --git a/public/assets/js/plugins/flot/jquery.flot.time.js b/public/assets/js/plugins/flot/jquery.flot.time.js new file mode 100755 index 00000000..15f52815 --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.time.js @@ -0,0 +1,431 @@ +/* Pretty handling of time axes. + +Copyright (c) 2007-2013 IOLA and Ole Laursen. +Licensed under the MIT license. + +Set axis.mode to "time" to enable. See the section "Time series data" in +API.txt for details. + +*/ + +(function($) { + + var options = { + xaxis: { + timezone: null, // "browser" for local to the client or timezone for timezone-js + timeformat: null, // format string to use + twelveHourClock: false, // 12 or 24 time in time mode + monthNames: null // list of names of months + } + }; + + // round to nearby lower multiple of base + + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + + // Returns a string with the date d formatted according to fmt. + // A subset of the Open Group's strftime format is supported. + + function formatDate(d, fmt, monthNames, dayNames) { + + if (typeof d.strftime == "function") { + return d.strftime(fmt); + } + + var leftPad = function(n, pad) { + n = "" + n; + pad = "" + (pad == null ? "0" : pad); + return n.length == 1 ? pad + n : n; + }; + + var r = []; + var escape = false; + var hours = d.getHours(); + var isAM = hours < 12; + + if (monthNames == null) { + monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + } + + if (dayNames == null) { + dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + } + + var hours12; + + if (hours > 12) { + hours12 = hours - 12; + } else if (hours == 0) { + hours12 = 12; + } else { + hours12 = hours; + } + + for (var i = 0; i < fmt.length; ++i) { + + var c = fmt.charAt(i); + + if (escape) { + switch (c) { + case 'a': c = "" + dayNames[d.getDay()]; break; + case 'b': c = "" + monthNames[d.getMonth()]; break; + case 'd': c = leftPad(d.getDate()); break; + case 'e': c = leftPad(d.getDate(), " "); break; + case 'h': // For back-compat with 0.7; remove in 1.0 + case 'H': c = leftPad(hours); break; + case 'I': c = leftPad(hours12); break; + case 'l': c = leftPad(hours12, " "); break; + case 'm': c = leftPad(d.getMonth() + 1); break; + case 'M': c = leftPad(d.getMinutes()); break; + // quarters not in Open Group's strftime specification + case 'q': + c = "" + (Math.floor(d.getMonth() / 3) + 1); break; + case 'S': c = leftPad(d.getSeconds()); break; + case 'y': c = leftPad(d.getFullYear() % 100); break; + case 'Y': c = "" + d.getFullYear(); break; + case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break; + case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break; + case 'w': c = "" + d.getDay(); break; + } + r.push(c); + escape = false; + } else { + if (c == "%") { + escape = true; + } else { + r.push(c); + } + } + } + + return r.join(""); + } + + // To have a consistent view of time-based data independent of which time + // zone the client happens to be in we need a date-like object independent + // of time zones. This is done through a wrapper that only calls the UTC + // versions of the accessor methods. + + function makeUtcWrapper(d) { + + function addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) { + sourceObj[sourceMethod] = function() { + return targetObj[targetMethod].apply(targetObj, arguments); + }; + }; + + var utc = { + date: d + }; + + // support strftime, if found + + if (d.strftime != undefined) { + addProxyMethod(utc, "strftime", d, "strftime"); + } + + addProxyMethod(utc, "getTime", d, "getTime"); + addProxyMethod(utc, "setTime", d, "setTime"); + + var props = ["Date", "Day", "FullYear", "Hours", "Milliseconds", "Minutes", "Month", "Seconds"]; + + for (var p = 0; p < props.length; p++) { + addProxyMethod(utc, "get" + props[p], d, "getUTC" + props[p]); + addProxyMethod(utc, "set" + props[p], d, "setUTC" + props[p]); + } + + return utc; + }; + + // select time zone strategy. This returns a date-like object tied to the + // desired timezone + + function dateGenerator(ts, opts) { + if (opts.timezone == "browser") { + return new Date(ts); + } else if (!opts.timezone || opts.timezone == "utc") { + return makeUtcWrapper(new Date(ts)); + } else if (typeof timezoneJS != "undefined" && typeof timezoneJS.Date != "undefined") { + var d = new timezoneJS.Date(); + // timezone-js is fickle, so be sure to set the time zone before + // setting the time. + d.setTimezone(opts.timezone); + d.setTime(ts); + return d; + } else { + return makeUtcWrapper(new Date(ts)); + } + } + + // map of app. size of time units in milliseconds + + var timeUnitSize = { + "second": 1000, + "minute": 60 * 1000, + "hour": 60 * 60 * 1000, + "day": 24 * 60 * 60 * 1000, + "month": 30 * 24 * 60 * 60 * 1000, + "quarter": 3 * 30 * 24 * 60 * 60 * 1000, + "year": 365.2425 * 24 * 60 * 60 * 1000 + }; + + // the allowed tick sizes, after 1 year we use + // an integer algorithm + + var baseSpec = [ + [1, "second"], [2, "second"], [5, "second"], [10, "second"], + [30, "second"], + [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"], + [30, "minute"], + [1, "hour"], [2, "hour"], [4, "hour"], + [8, "hour"], [12, "hour"], + [1, "day"], [2, "day"], [3, "day"], + [0.25, "month"], [0.5, "month"], [1, "month"], + [2, "month"] + ]; + + // we don't know which variant(s) we'll need yet, but generating both is + // cheap + + var specMonths = baseSpec.concat([[3, "month"], [6, "month"], + [1, "year"]]); + var specQuarters = baseSpec.concat([[1, "quarter"], [2, "quarter"], + [1, "year"]]); + + function init(plot) { + plot.hooks.processOptions.push(function (plot, options) { + $.each(plot.getAxes(), function(axisName, axis) { + + var opts = axis.options; + + if (opts.mode == "time") { + axis.tickGenerator = function(axis) { + + var ticks = []; + var d = dateGenerator(axis.min, opts); + var minSize = 0; + + // make quarter use a possibility if quarters are + // mentioned in either of these options + + var spec = (opts.tickSize && opts.tickSize[1] === + "quarter") || + (opts.minTickSize && opts.minTickSize[1] === + "quarter") ? specQuarters : specMonths; + + if (opts.minTickSize != null) { + if (typeof opts.tickSize == "number") { + minSize = opts.tickSize; + } else { + minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]]; + } + } + + for (var i = 0; i < spec.length - 1; ++i) { + if (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]] + + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2 + && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) { + break; + } + } + + var size = spec[i][0]; + var unit = spec[i][1]; + + // special-case the possibility of several years + + if (unit == "year") { + + // if given a minTickSize in years, just use it, + // ensuring that it's an integer + + if (opts.minTickSize != null && opts.minTickSize[1] == "year") { + size = Math.floor(opts.minTickSize[0]); + } else { + + var magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10)); + var norm = (axis.delta / timeUnitSize.year) / magn; + + if (norm < 1.5) { + size = 1; + } else if (norm < 3) { + size = 2; + } else if (norm < 7.5) { + size = 5; + } else { + size = 10; + } + + size *= magn; + } + + // minimum size for years is 1 + + if (size < 1) { + size = 1; + } + } + + axis.tickSize = opts.tickSize || [size, unit]; + var tickSize = axis.tickSize[0]; + unit = axis.tickSize[1]; + + var step = tickSize * timeUnitSize[unit]; + + if (unit == "second") { + d.setSeconds(floorInBase(d.getSeconds(), tickSize)); + } else if (unit == "minute") { + d.setMinutes(floorInBase(d.getMinutes(), tickSize)); + } else if (unit == "hour") { + d.setHours(floorInBase(d.getHours(), tickSize)); + } else if (unit == "month") { + d.setMonth(floorInBase(d.getMonth(), tickSize)); + } else if (unit == "quarter") { + d.setMonth(3 * floorInBase(d.getMonth() / 3, + tickSize)); + } else if (unit == "year") { + d.setFullYear(floorInBase(d.getFullYear(), tickSize)); + } + + // reset smaller components + + d.setMilliseconds(0); + + if (step >= timeUnitSize.minute) { + d.setSeconds(0); + } + if (step >= timeUnitSize.hour) { + d.setMinutes(0); + } + if (step >= timeUnitSize.day) { + d.setHours(0); + } + if (step >= timeUnitSize.day * 4) { + d.setDate(1); + } + if (step >= timeUnitSize.month * 2) { + d.setMonth(floorInBase(d.getMonth(), 3)); + } + if (step >= timeUnitSize.quarter * 2) { + d.setMonth(floorInBase(d.getMonth(), 6)); + } + if (step >= timeUnitSize.year) { + d.setMonth(0); + } + + var carry = 0; + var v = Number.NaN; + var prev; + + do { + + prev = v; + v = d.getTime(); + ticks.push(v); + + if (unit == "month" || unit == "quarter") { + if (tickSize < 1) { + + // a bit complicated - we'll divide the + // month/quarter up but we need to take + // care of fractions so we don't end up in + // the middle of a day + + d.setDate(1); + var start = d.getTime(); + d.setMonth(d.getMonth() + + (unit == "quarter" ? 3 : 1)); + var end = d.getTime(); + d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize); + carry = d.getHours(); + d.setHours(0); + } else { + d.setMonth(d.getMonth() + + tickSize * (unit == "quarter" ? 3 : 1)); + } + } else if (unit == "year") { + d.setFullYear(d.getFullYear() + tickSize); + } else { + d.setTime(v + step); + } + } while (v < axis.max && v != prev); + + return ticks; + }; + + axis.tickFormatter = function (v, axis) { + + var d = dateGenerator(v, axis.options); + + // first check global format + + if (opts.timeformat != null) { + return formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames); + } + + // possibly use quarters if quarters are mentioned in + // any of these places + + var useQuarters = (axis.options.tickSize && + axis.options.tickSize[1] == "quarter") || + (axis.options.minTickSize && + axis.options.minTickSize[1] == "quarter"); + + var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]]; + var span = axis.max - axis.min; + var suffix = (opts.twelveHourClock) ? " %p" : ""; + var hourCode = (opts.twelveHourClock) ? "%I" : "%H"; + var fmt; + + if (t < timeUnitSize.minute) { + fmt = hourCode + ":%M:%S" + suffix; + } else if (t < timeUnitSize.day) { + if (span < 2 * timeUnitSize.day) { + fmt = hourCode + ":%M" + suffix; + } else { + fmt = "%b %d " + hourCode + ":%M" + suffix; + } + } else if (t < timeUnitSize.month) { + fmt = "%b %d"; + } else if ((useQuarters && t < timeUnitSize.quarter) || + (!useQuarters && t < timeUnitSize.year)) { + if (span < timeUnitSize.year) { + fmt = "%b"; + } else { + fmt = "%b %Y"; + } + } else if (useQuarters && t < timeUnitSize.year) { + if (span < timeUnitSize.year) { + fmt = "Q%q"; + } else { + fmt = "Q%q %Y"; + } + } else { + fmt = "%Y"; + } + + var rt = formatDate(d, fmt, opts.monthNames, opts.dayNames); + + return rt; + }; + } + }); + }); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'time', + version: '1.0' + }); + + // Time-axis support used to be in Flot core, which exposed the + // formatDate function on the plot object. Various plugins depend + // on the function, so we need to re-expose it here. + + $.plot.formatDate = formatDate; + +})(jQuery); diff --git a/public/assets/js/plugins/flot/jquery.flot.time.min.js b/public/assets/js/plugins/flot/jquery.flot.time.min.js new file mode 100755 index 00000000..aaf319c9 --- /dev/null +++ b/public/assets/js/plugins/flot/jquery.flot.time.min.js @@ -0,0 +1 @@ +(function($){var options={xaxis:{timezone:null,timeformat:null,twelveHourClock:false,monthNames:null}};function floorInBase(n,base){return base*Math.floor(n/base)}function formatDate(d,fmt,monthNames,dayNames){if(typeof d.strftime=="function"){return d.strftime(fmt)}var leftPad=function(n,pad){n=""+n;pad=""+(pad==null?"0":pad);return n.length==1?pad+n:n};var r=[];var escape=false;var hours=d.getHours();var isAM=hours<12;if(monthNames==null){monthNames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}if(dayNames==null){dayNames=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]}var hours12;if(hours>12){hours12=hours-12}else if(hours==0){hours12=12}else{hours12=hours}for(var i=0;i=minSize){break}}var size=spec[i][0];var unit=spec[i][1];if(unit=="year"){if(opts.minTickSize!=null&&opts.minTickSize[1]=="year"){size=Math.floor(opts.minTickSize[0])}else{var magn=Math.pow(10,Math.floor(Math.log(axis.delta/timeUnitSize.year)/Math.LN10));var norm=axis.delta/timeUnitSize.year/magn;if(norm<1.5){size=1}else if(norm<3){size=2}else if(norm<7.5){size=5}else{size=10}size*=magn}if(size<1){size=1}}axis.tickSize=opts.tickSize||[size,unit];var tickSize=axis.tickSize[0];unit=axis.tickSize[1];var step=tickSize*timeUnitSize[unit];if(unit=="second"){d.setSeconds(floorInBase(d.getSeconds(),tickSize))}else if(unit=="minute"){d.setMinutes(floorInBase(d.getMinutes(),tickSize))}else if(unit=="hour"){d.setHours(floorInBase(d.getHours(),tickSize))}else if(unit=="month"){d.setMonth(floorInBase(d.getMonth(),tickSize))}else if(unit=="quarter"){d.setMonth(3*floorInBase(d.getMonth()/3,tickSize))}else if(unit=="year"){d.setFullYear(floorInBase(d.getFullYear(),tickSize))}d.setMilliseconds(0);if(step>=timeUnitSize.minute){d.setSeconds(0)}if(step>=timeUnitSize.hour){d.setMinutes(0)}if(step>=timeUnitSize.day){d.setHours(0)}if(step>=timeUnitSize.day*4){d.setDate(1)}if(step>=timeUnitSize.month*2){d.setMonth(floorInBase(d.getMonth(),3))}if(step>=timeUnitSize.quarter*2){d.setMonth(floorInBase(d.getMonth(),6))}if(step>=timeUnitSize.year){d.setMonth(0)}var carry=0;var v=Number.NaN;var prev;do{prev=v;v=d.getTime();ticks.push(v);if(unit=="month"||unit=="quarter"){if(tickSize<1){d.setDate(1);var start=d.getTime();d.setMonth(d.getMonth()+(unit=="quarter"?3:1));var end=d.getTime();d.setTime(v+carry*timeUnitSize.hour+(end-start)*tickSize);carry=d.getHours();d.setHours(0)}else{d.setMonth(d.getMonth()+tickSize*(unit=="quarter"?3:1))}}else if(unit=="year"){d.setFullYear(d.getFullYear()+tickSize)}else{d.setTime(v+step)}}while(v')[_callback]('ifCreated').parent().append(settings.insert); + + // Layer addition + helper = $('').css(layer).appendTo(parent); + + // Finalize customization + self.data(_iCheck, {o: settings, s: self.attr('style')}).css(hide); + !!settings.inheritClass && parent[_add](node.className || ''); + !!settings.inheritID && id && parent.attr('id', _iCheck + '-' + id); + parent.css('position') == 'static' && parent.css('position', 'relative'); + operate(self, true, _update); + + // Label events + if (label.length) { + label.on(_click + '.i mouseover.i mouseout.i ' + _touch, function(event) { + var type = event[_type], + item = $(this); + + // Do nothing if input is disabled + if (!node[_disabled]) { + + // Click + if (type == _click) { + if ($(event.target).is('a')) { + return; + } + operate(self, false, true); + + // Hover state + } else if (labelHover) { + + // mouseout|touchend + if (/ut|nd/.test(type)) { + parent[_remove](hoverClass); + item[_remove](labelHoverClass); + } else { + parent[_add](hoverClass); + item[_add](labelHoverClass); + }; + }; + + if (_mobile) { + event.stopPropagation(); + } else { + return false; + }; + }; + }); + }; + + // Input events + self.on(_click + '.i focus.i blur.i keyup.i keydown.i keypress.i', function(event) { + var type = event[_type], + key = event.keyCode; + + // Click + if (type == _click) { + return false; + + // Keydown + } else if (type == 'keydown' && key == 32) { + if (!(node[_type] == _radio && node[_checked])) { + if (node[_checked]) { + off(self, _checked); + } else { + on(self, _checked); + }; + }; + + return false; + + // Keyup + } else if (type == 'keyup' && node[_type] == _radio) { + !node[_checked] && on(self, _checked); + + // Focus/blur + } else if (/us|ur/.test(type)) { + parent[type == 'blur' ? _remove : _add](focusClass); + }; + }); + + // Helper events + helper.on(_click + ' mousedown mouseup mouseover mouseout ' + _touch, function(event) { + var type = event[_type], + + // mousedown|mouseup + toggle = /wn|up/.test(type) ? activeClass : hoverClass; + + // Do nothing if input is disabled + if (!node[_disabled]) { + + // Click + if (type == _click) { + operate(self, false, true); + + // Active and hover states + } else { + + // State is on + if (/wn|er|in/.test(type)) { + + // mousedown|mouseover|touchbegin + parent[_add](toggle); + + // State is off + } else { + parent[_remove](toggle + ' ' + activeClass); + }; + + // Label hover + if (label.length && labelHover && toggle == hoverClass) { + + // mouseout|touchend + label[/ut|nd/.test(type) ? _remove : _add](labelHoverClass); + }; + }; + + if (_mobile) { + event.stopPropagation(); + } else { + return false; + }; + }; + }); + }); + } else { + return this; + }; + }; + + // Do something with inputs + function operate(input, direct, method) { + var node = input[0], + state = /er/.test(method) ? _indeterminate : /bl/.test(method) ? _disabled : _checked, + active = method == _update ? { + checked: node[_checked], + disabled: node[_disabled], + indeterminate: input.attr(_indeterminate) == 'true' || input.attr(_determinate) == 'false' + } : node[state]; + + // Check, disable or indeterminate + if (/^(ch|di|in)/.test(method) && !active) { + on(input, state); + + // Uncheck, enable or determinate + } else if (/^(un|en|de)/.test(method) && active) { + off(input, state); + + // Update + } else if (method == _update) { + + // Handle states + for (var state in active) { + if (active[state]) { + on(input, state, true); + } else { + off(input, state, true); + }; + }; + + } else if (!direct || method == 'toggle') { + + // Helper or label was clicked + if (!direct) { + input[_callback]('ifClicked'); + }; + + // Toggle checked state + if (active) { + if (node[_type] !== _radio) { + off(input, state); + }; + } else { + on(input, state); + }; + }; + }; + + // Add checked, disabled or indeterminate state + function on(input, state, keep) { + var node = input[0], + parent = input.parent(), + checked = state == _checked, + indeterminate = state == _indeterminate, + disabled = state == _disabled, + callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled', + regular = option(input, callback + capitalize(node[_type])), + specific = option(input, state + capitalize(node[_type])); + + // Prevent unnecessary actions + if (node[state] !== true) { + + // Toggle assigned radio buttons + if (!keep && state == _checked && node[_type] == _radio && node.name) { + var form = input.closest('form'), + inputs = 'input[name="' + node.name + '"]'; + + inputs = form.length ? form.find(inputs) : $(inputs); + + inputs.each(function() { + if (this !== node && $(this).data(_iCheck)) { + off($(this), state); + }; + }); + }; + + // Indeterminate state + if (indeterminate) { + + // Add indeterminate state + node[state] = true; + + // Remove checked state + if (node[_checked]) { + off(input, _checked, 'force'); + }; + + // Checked or disabled state + } else { + + // Add checked or disabled state + if (!keep) { + node[state] = true; + }; + + // Remove indeterminate state + if (checked && node[_indeterminate]) { + off(input, _indeterminate, false); + }; + }; + + // Trigger callbacks + callbacks(input, checked, state, keep); + }; + + // Add proper cursor + if (node[_disabled] && !!option(input, _cursor, true)) { + parent.find('.' + _iCheckHelper).css(_cursor, 'default'); + }; + + // Add state class + parent[_add](specific || option(input, state) || ''); + + // Set ARIA attribute + disabled ? parent.attr('aria-disabled', 'true') : parent.attr('aria-checked', indeterminate ? 'mixed' : 'true'); + + // Remove regular state class + parent[_remove](regular || option(input, callback) || ''); + }; + + // Remove checked, disabled or indeterminate state + function off(input, state, keep) { + var node = input[0], + parent = input.parent(), + checked = state == _checked, + indeterminate = state == _indeterminate, + disabled = state == _disabled, + callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled', + regular = option(input, callback + capitalize(node[_type])), + specific = option(input, state + capitalize(node[_type])); + + // Prevent unnecessary actions + if (node[state] !== false) { + + // Toggle state + if (indeterminate || !keep || keep == 'force') { + node[state] = false; + }; + + // Trigger callbacks + callbacks(input, checked, callback, keep); + }; + + // Add proper cursor + if (!node[_disabled] && !!option(input, _cursor, true)) { + parent.find('.' + _iCheckHelper).css(_cursor, 'pointer'); + }; + + // Remove state class + parent[_remove](specific || option(input, state) || ''); + + // Set ARIA attribute + disabled ? parent.attr('aria-disabled', 'false') : parent.attr('aria-checked', 'false'); + + // Add regular state class + parent[_add](regular || option(input, callback) || ''); + }; + + // Remove all traces + function tidy(input, callback) { + if (input.data(_iCheck)) { + + // Remove everything except input + input.parent().html(input.attr('style', input.data(_iCheck).s || '')); + + // Callback + if (callback) { + input[_callback](callback); + }; + + // Unbind events + input.off('.i').unwrap(); + $(_label + '[for="' + input[0].id + '"]').add(input.closest(_label)).off('.i'); + }; + }; + + // Get some option + function option(input, state, regular) { + if (input.data(_iCheck)) { + return input.data(_iCheck).o[state + (regular ? '' : 'Class')]; + }; + }; + + // Capitalize some string + function capitalize(string) { + return string.charAt(0).toUpperCase() + string.slice(1); + }; + + // Executable handlers + function callbacks(input, checked, callback, keep) { + if (!keep) { + if (checked) { + input[_callback]('ifToggled'); + }; + + input[_callback]('ifChanged')[_callback]('if' + capitalize(callback)); + }; + }; +})(window.jQuery || window.Zepto); diff --git a/public/assets/js/plugins/iCheck/icheck.min.js b/public/assets/js/plugins/iCheck/icheck.min.js new file mode 100755 index 00000000..d2720ed0 --- /dev/null +++ b/public/assets/js/plugins/iCheck/icheck.min.js @@ -0,0 +1,10 @@ +/*! iCheck v1.0.1 by Damir Sultanov, http://git.io/arlzeA, MIT Licensed */ +(function(h){function F(a,b,d){var c=a[0],e=/er/.test(d)?m:/bl/.test(d)?s:l,f=d==H?{checked:c[l],disabled:c[s],indeterminate:"true"==a.attr(m)||"false"==a.attr(w)}:c[e];if(/^(ch|di|in)/.test(d)&&!f)D(a,e);else if(/^(un|en|de)/.test(d)&&f)t(a,e);else if(d==H)for(e in f)f[e]?D(a,e,!0):t(a,e,!0);else if(!b||"toggle"==d){if(!b)a[p]("ifClicked");f?c[n]!==u&&t(a,e):D(a,e)}}function D(a,b,d){var c=a[0],e=a.parent(),f=b==l,A=b==m,B=b==s,K=A?w:f?E:"enabled",p=k(a,K+x(c[n])),N=k(a,b+x(c[n]));if(!0!==c[b]){if(!d&& +b==l&&c[n]==u&&c.name){var C=a.closest("form"),r='input[name="'+c.name+'"]',r=C.length?C.find(r):h(r);r.each(function(){this!==c&&h(this).data(q)&&t(h(this),b)})}A?(c[b]=!0,c[l]&&t(a,l,"force")):(d||(c[b]=!0),f&&c[m]&&t(a,m,!1));L(a,f,b,d)}c[s]&&k(a,y,!0)&&e.find("."+I).css(y,"default");e[v](N||k(a,b)||"");B?e.attr("aria-disabled","true"):e.attr("aria-checked",A?"mixed":"true");e[z](p||k(a,K)||"")}function t(a,b,d){var c=a[0],e=a.parent(),f=b==l,h=b==m,q=b==s,p=h?w:f?E:"enabled",t=k(a,p+x(c[n])), +u=k(a,b+x(c[n]));if(!1!==c[b]){if(h||!d||"force"==d)c[b]=!1;L(a,f,p,d)}!c[s]&&k(a,y,!0)&&e.find("."+I).css(y,"pointer");e[z](u||k(a,b)||"");q?e.attr("aria-disabled","false"):e.attr("aria-checked","false");e[v](t||k(a,p)||"")}function M(a,b){if(a.data(q)){a.parent().html(a.attr("style",a.data(q).s||""));if(b)a[p](b);a.off(".i").unwrap();h(G+'[for="'+a[0].id+'"]').add(a.closest(G)).off(".i")}}function k(a,b,d){if(a.data(q))return a.data(q).o[b+(d?"":"Class")]}function x(a){return a.charAt(0).toUpperCase()+ +a.slice(1)}function L(a,b,d,c){if(!c){if(b)a[p]("ifToggled");a[p]("ifChanged")[p]("if"+x(d))}}var q="iCheck",I=q+"-helper",u="radio",l="checked",E="un"+l,s="disabled",w="determinate",m="in"+w,H="update",n="type",v="addClass",z="removeClass",p="trigger",G="label",y="cursor",J=/ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);h.fn[q]=function(a,b){var d='input[type="checkbox"], input[type="'+u+'"]',c=h(),e=function(a){a.each(function(){var a=h(this);c=a.is(d)? +c.add(a):c.add(a.find(d))})};if(/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(a))return a=a.toLowerCase(),e(this),c.each(function(){var c=h(this);"destroy"==a?M(c,"ifDestroyed"):F(c,!0,a);h.isFunction(b)&&b()});if("object"!=typeof a&&a)return this;var f=h.extend({checkedClass:l,disabledClass:s,indeterminateClass:m,labelHover:!0,aria:!1},a),k=f.handle,B=f.hoverClass||"hover",x=f.focusClass||"focus",w=f.activeClass||"active",y=!!f.labelHover,C=f.labelHoverClass|| +"hover",r=(""+f.increaseArea).replace("%","")|0;if("checkbox"==k||k==u)d='input[type="'+k+'"]';-50>r&&(r=-50);e(this);return c.each(function(){var a=h(this);M(a);var c=this,b=c.id,e=-r+"%",d=100+2*r+"%",d={position:"absolute",top:e,left:e,display:"block",width:d,height:d,margin:0,padding:0,background:"#fff",border:0,opacity:0},e=J?{position:"absolute",visibility:"hidden"}:r?d:{position:"absolute",opacity:0},k="checkbox"==c[n]?f.checkboxClass||"icheckbox":f.radioClass||"i"+u,m=h(G+'[for="'+b+'"]').add(a.closest(G)), +A=!!f.aria,E=q+"-"+Math.random().toString(36).replace("0.",""),g='
      ")[p]("ifCreated").parent().append(f.insert);d=h('').css(d).appendTo(g);a.data(q,{o:f,s:a.attr("style")}).css(e);f.inheritClass&&g[v](c.className||"");f.inheritID&&b&&g.attr("id",q+"-"+b);"static"==g.css("position")&&g.css("position","relative");F(a,!0,H); +if(m.length)m.on("click.i mouseover.i mouseout.i touchbegin.i touchend.i",function(b){var d=b[n],e=h(this);if(!c[s]){if("click"==d){if(h(b.target).is("a"))return;F(a,!1,!0)}else y&&(/ut|nd/.test(d)?(g[z](B),e[z](C)):(g[v](B),e[v](C)));if(J)b.stopPropagation();else return!1}});a.on("click.i focus.i blur.i keyup.i keydown.i keypress.i",function(b){var d=b[n];b=b.keyCode;if("click"==d)return!1;if("keydown"==d&&32==b)return c[n]==u&&c[l]||(c[l]?t(a,l):D(a,l)),!1;if("keyup"==d&&c[n]==u)!c[l]&&D(a,l);else if(/us|ur/.test(d))g["blur"== +d?z:v](x)});d.on("click mousedown mouseup mouseover mouseout touchbegin.i touchend.i",function(b){var d=b[n],e=/wn|up/.test(d)?w:B;if(!c[s]){if("click"==d)F(a,!1,!0);else{if(/wn|er|in/.test(d))g[v](e);else g[z](e+" "+w);if(m.length&&y&&e==B)m[/ut|nd/.test(d)?z:v](C)}if(J)b.stopPropagation();else return!1}})})}})(window.jQuery||window.Zepto); diff --git a/public/assets/js/plugins/input-mask/jquery.inputmask.date.extensions.js b/public/assets/js/plugins/input-mask/jquery.inputmask.date.extensions.js new file mode 100755 index 00000000..18f76c81 --- /dev/null +++ b/public/assets/js/plugins/input-mask/jquery.inputmask.date.extensions.js @@ -0,0 +1,488 @@ +/* +Input Mask plugin extensions +http://github.com/RobinHerbots/jquery.inputmask +Copyright (c) 2010 - 2014 Robin Herbots +Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) +Version: 0.0.0 + +Optional extensions on the jquery.inputmask base +*/ +(function ($) { + //date & time aliases + $.extend($.inputmask.defaults.definitions, { + 'h': { //hours + validator: "[01][0-9]|2[0-3]", + cardinality: 2, + prevalidator: [{ validator: "[0-2]", cardinality: 1 }] + }, + 's': { //seconds || minutes + validator: "[0-5][0-9]", + cardinality: 2, + prevalidator: [{ validator: "[0-5]", cardinality: 1 }] + }, + 'd': { //basic day + validator: "0[1-9]|[12][0-9]|3[01]", + cardinality: 2, + prevalidator: [{ validator: "[0-3]", cardinality: 1 }] + }, + 'm': { //basic month + validator: "0[1-9]|1[012]", + cardinality: 2, + prevalidator: [{ validator: "[01]", cardinality: 1 }] + }, + 'y': { //basic year + validator: "(19|20)\\d{2}", + cardinality: 4, + prevalidator: [ + { validator: "[12]", cardinality: 1 }, + { validator: "(19|20)", cardinality: 2 }, + { validator: "(19|20)\\d", cardinality: 3 } + ] + } + }); + $.extend($.inputmask.defaults.aliases, { + 'dd/mm/yyyy': { + mask: "1/2/y", + placeholder: "dd/mm/yyyy", + regex: { + val1pre: new RegExp("[0-3]"), //daypre + val1: new RegExp("0[1-9]|[12][0-9]|3[01]"), //day + val2pre: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp("((0[1-9]|[12][0-9]|3[01])" + escapedSeparator + "[01])"); }, //monthpre + val2: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp("((0[1-9]|[12][0-9])" + escapedSeparator + "(0[1-9]|1[012]))|(30" + escapedSeparator + "(0[13-9]|1[012]))|(31" + escapedSeparator + "(0[13578]|1[02]))"); }//month + }, + leapday: "29/02/", + separator: '/', + yearrange: { minyear: 1900, maxyear: 2099 }, + isInYearRange: function (chrs, minyear, maxyear) { + var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length))); + var enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length))); + return (enteredyear != NaN ? minyear <= enteredyear && enteredyear <= maxyear : false) || + (enteredyear2 != NaN ? minyear <= enteredyear2 && enteredyear2 <= maxyear : false); + }, + determinebaseyear: function (minyear, maxyear, hint) { + var currentyear = (new Date()).getFullYear(); + if (minyear > currentyear) return minyear; + if (maxyear < currentyear) { + var maxYearPrefix = maxyear.toString().slice(0, 2); + var maxYearPostfix = maxyear.toString().slice(2, 4); + while (maxyear < maxYearPrefix + hint) { + maxYearPrefix--; + } + var maxxYear = maxYearPrefix + maxYearPostfix; + return minyear > maxxYear ? minyear : maxxYear; + } + + return currentyear; + }, + onKeyUp: function (e, buffer, opts) { + var $input = $(this); + if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) { + var today = new Date(); + $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString()); + } + }, + definitions: { + '1': { //val1 ~ day or month + validator: function (chrs, buffer, pos, strict, opts) { + var isValid = opts.regex.val1.test(chrs); + if (!strict && !isValid) { + if (chrs.charAt(1) == opts.separator || "-./".indexOf(chrs.charAt(1)) != -1) { + isValid = opts.regex.val1.test("0" + chrs.charAt(0)); + if (isValid) { + buffer[pos - 1] = "0"; + return { "pos": pos, "c": chrs.charAt(0) }; + } + } + } + return isValid; + }, + cardinality: 2, + prevalidator: [{ + validator: function (chrs, buffer, pos, strict, opts) { + var isValid = opts.regex.val1pre.test(chrs); + if (!strict && !isValid) { + isValid = opts.regex.val1.test("0" + chrs); + if (isValid) { + buffer[pos] = "0"; + pos++; + return { "pos": pos }; + } + } + return isValid; + }, cardinality: 1 + }] + }, + '2': { //val2 ~ day or month + validator: function (chrs, buffer, pos, strict, opts) { + var frontValue = buffer.join('').substr(0, 3); + if (frontValue.indexOf(opts.placeholder[0]) != -1) frontValue = "01" + opts.separator; + var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs); + if (!strict && !isValid) { + if (chrs.charAt(1) == opts.separator || "-./".indexOf(chrs.charAt(1)) != -1) { + isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs.charAt(0)); + if (isValid) { + buffer[pos - 1] = "0"; + return { "pos": pos, "c": chrs.charAt(0) }; + } + } + } + return isValid; + }, + cardinality: 2, + prevalidator: [{ + validator: function (chrs, buffer, pos, strict, opts) { + var frontValue = buffer.join('').substr(0, 3); + if (frontValue.indexOf(opts.placeholder[0]) != -1) frontValue = "01" + opts.separator; + var isValid = opts.regex.val2pre(opts.separator).test(frontValue + chrs); + if (!strict && !isValid) { + isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs); + if (isValid) { + buffer[pos] = "0"; + pos++; + return { "pos": pos }; + } + } + return isValid; + }, cardinality: 1 + }] + }, + 'y': { //year + validator: function (chrs, buffer, pos, strict, opts) { + if (opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) { + var dayMonthValue = buffer.join('').substr(0, 6); + if (dayMonthValue != opts.leapday) + return true; + else { + var year = parseInt(chrs, 10);//detect leap year + if (year % 4 === 0) + if (year % 100 === 0) + if (year % 400 === 0) + return true; + else return false; + else return true; + else return false; + } + } else return false; + }, + cardinality: 4, + prevalidator: [ + { + validator: function (chrs, buffer, pos, strict, opts) { + var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear); + if (!strict && !isValid) { + var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 1); + + isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear); + if (isValid) { + buffer[pos++] = yearPrefix[0]; + return { "pos": pos }; + } + yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 2); + + isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear); + if (isValid) { + buffer[pos++] = yearPrefix[0]; + buffer[pos++] = yearPrefix[1]; + return { "pos": pos }; + } + } + return isValid; + }, + cardinality: 1 + }, + { + validator: function (chrs, buffer, pos, strict, opts) { + var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear); + if (!strict && !isValid) { + var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2); + + isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear); + if (isValid) { + buffer[pos++] = yearPrefix[1]; + return { "pos": pos }; + } + + yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2); + if (opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) { + var dayMonthValue = buffer.join('').substr(0, 6); + if (dayMonthValue != opts.leapday) + isValid = true; + else { + var year = parseInt(chrs, 10);//detect leap year + if (year % 4 === 0) + if (year % 100 === 0) + if (year % 400 === 0) + isValid = true; + else isValid = false; + else isValid = true; + else isValid = false; + } + } else isValid = false; + if (isValid) { + buffer[pos - 1] = yearPrefix[0]; + buffer[pos++] = yearPrefix[1]; + buffer[pos++] = chrs[0]; + return { "pos": pos }; + } + } + return isValid; + }, cardinality: 2 + }, + { + validator: function (chrs, buffer, pos, strict, opts) { + return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear); + }, cardinality: 3 + } + ] + } + }, + insertMode: false, + autoUnmask: false + }, + 'mm/dd/yyyy': { + placeholder: "mm/dd/yyyy", + alias: "dd/mm/yyyy", //reuse functionality of dd/mm/yyyy alias + regex: { + val2pre: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp("((0[13-9]|1[012])" + escapedSeparator + "[0-3])|(02" + escapedSeparator + "[0-2])"); }, //daypre + val2: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[13-9]|1[012])" + escapedSeparator + "30)|((0[13578]|1[02])" + escapedSeparator + "31)"); }, //day + val1pre: new RegExp("[01]"), //monthpre + val1: new RegExp("0[1-9]|1[012]") //month + }, + leapday: "02/29/", + onKeyUp: function (e, buffer, opts) { + var $input = $(this); + if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) { + var today = new Date(); + $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()); + } + } + }, + 'yyyy/mm/dd': { + mask: "y/1/2", + placeholder: "yyyy/mm/dd", + alias: "mm/dd/yyyy", + leapday: "/02/29", + onKeyUp: function (e, buffer, opts) { + var $input = $(this); + if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) { + var today = new Date(); + $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString()); + } + }, + definitions: { + '2': { //val2 ~ day or month + validator: function (chrs, buffer, pos, strict, opts) { + var frontValue = buffer.join('').substr(5, 3); + if (frontValue.indexOf(opts.placeholder[5]) != -1) frontValue = "01" + opts.separator; + var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs); + if (!strict && !isValid) { + if (chrs.charAt(1) == opts.separator || "-./".indexOf(chrs.charAt(1)) != -1) { + isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs.charAt(0)); + if (isValid) { + buffer[pos - 1] = "0"; + return { "pos": pos, "c": chrs.charAt(0) }; + } + } + } + + //check leap yeap + if (isValid) { + var dayMonthValue = buffer.join('').substr(4, 4) + chrs; + if (dayMonthValue != opts.leapday) + return true; + else { + var year = parseInt(buffer.join('').substr(0, 4), 10); //detect leap year + if (year % 4 === 0) + if (year % 100 === 0) + if (year % 400 === 0) + return true; + else return false; + else return true; + else return false; + } + } + + return isValid; + }, + cardinality: 2, + prevalidator: [{ + validator: function (chrs, buffer, pos, strict, opts) { + var frontValue = buffer.join('').substr(5, 3); + if (frontValue.indexOf(opts.placeholder[5]) != -1) frontValue = "01" + opts.separator; + var isValid = opts.regex.val2pre(opts.separator).test(frontValue + chrs); + if (!strict && !isValid) { + isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs); + if (isValid) { + buffer[pos] = "0"; + pos++; + return { "pos": pos }; + } + } + return isValid; + }, cardinality: 1 + }] + } + } + }, + 'dd.mm.yyyy': { + mask: "1.2.y", + placeholder: "dd.mm.yyyy", + leapday: "29.02.", + separator: '.', + alias: "dd/mm/yyyy" + }, + 'dd-mm-yyyy': { + mask: "1-2-y", + placeholder: "dd-mm-yyyy", + leapday: "29-02-", + separator: '-', + alias: "dd/mm/yyyy" + }, + 'mm.dd.yyyy': { + mask: "1.2.y", + placeholder: "mm.dd.yyyy", + leapday: "02.29.", + separator: '.', + alias: "mm/dd/yyyy" + }, + 'mm-dd-yyyy': { + mask: "1-2-y", + placeholder: "mm-dd-yyyy", + leapday: "02-29-", + separator: '-', + alias: "mm/dd/yyyy" + }, + 'yyyy.mm.dd': { + mask: "y.1.2", + placeholder: "yyyy.mm.dd", + leapday: ".02.29", + separator: '.', + alias: "yyyy/mm/dd" + }, + 'yyyy-mm-dd': { + mask: "y-1-2", + placeholder: "yyyy-mm-dd", + leapday: "-02-29", + separator: '-', + alias: "yyyy/mm/dd" + }, + 'datetime': { + mask: "1/2/y h:s", + placeholder: "dd/mm/yyyy hh:mm", + alias: "dd/mm/yyyy", + regex: { + hrspre: new RegExp("[012]"), //hours pre + hrs24: new RegExp("2[0-9]|1[3-9]"), + hrs: new RegExp("[01][0-9]|2[0-3]"), //hours + ampm: new RegExp("^[a|p|A|P][m|M]") + }, + timeseparator: ':', + hourFormat: "24", // or 12 + definitions: { + 'h': { //hours + validator: function (chrs, buffer, pos, strict, opts) { + var isValid = opts.regex.hrs.test(chrs); + if (!strict && !isValid) { + if (chrs.charAt(1) == opts.timeseparator || "-.:".indexOf(chrs.charAt(1)) != -1) { + isValid = opts.regex.hrs.test("0" + chrs.charAt(0)); + if (isValid) { + buffer[pos - 1] = "0"; + buffer[pos] = chrs.charAt(0); + pos++; + return { "pos": pos }; + } + } + } + + if (isValid && opts.hourFormat !== "24" && opts.regex.hrs24.test(chrs)) { + + var tmp = parseInt(chrs, 10); + + if (tmp == 24) { + buffer[pos + 5] = "a"; + buffer[pos + 6] = "m"; + } else { + buffer[pos + 5] = "p"; + buffer[pos + 6] = "m"; + } + + tmp = tmp - 12; + + if (tmp < 10) { + buffer[pos] = tmp.toString(); + buffer[pos - 1] = "0"; + } else { + buffer[pos] = tmp.toString().charAt(1); + buffer[pos - 1] = tmp.toString().charAt(0); + } + + return { "pos": pos, "c": buffer[pos] }; + } + + return isValid; + }, + cardinality: 2, + prevalidator: [{ + validator: function (chrs, buffer, pos, strict, opts) { + var isValid = opts.regex.hrspre.test(chrs); + if (!strict && !isValid) { + isValid = opts.regex.hrs.test("0" + chrs); + if (isValid) { + buffer[pos] = "0"; + pos++; + return { "pos": pos }; + } + } + return isValid; + }, cardinality: 1 + }] + }, + 't': { //am/pm + validator: function (chrs, buffer, pos, strict, opts) { + return opts.regex.ampm.test(chrs + "m"); + }, + casing: "lower", + cardinality: 1 + } + }, + insertMode: false, + autoUnmask: false + }, + 'datetime12': { + mask: "1/2/y h:s t\\m", + placeholder: "dd/mm/yyyy hh:mm xm", + alias: "datetime", + hourFormat: "12" + }, + 'hh:mm t': { + mask: "h:s t\\m", + placeholder: "hh:mm xm", + alias: "datetime", + hourFormat: "12" + }, + 'h:s t': { + mask: "h:s t\\m", + placeholder: "hh:mm xm", + alias: "datetime", + hourFormat: "12" + }, + 'hh:mm:ss': { + mask: "h:s:s", + autoUnmask: false + }, + 'hh:mm': { + mask: "h:s", + autoUnmask: false + }, + 'date': { + alias: "dd/mm/yyyy" // "mm/dd/yyyy" + }, + 'mm/yyyy': { + mask: "1/y", + placeholder: "mm/yyyy", + leapday: "donotuse", + separator: '/', + alias: "mm/dd/yyyy" + } + }); +})(jQuery); diff --git a/public/assets/js/plugins/input-mask/jquery.inputmask.extensions.js b/public/assets/js/plugins/input-mask/jquery.inputmask.extensions.js new file mode 100755 index 00000000..c89f91ee --- /dev/null +++ b/public/assets/js/plugins/input-mask/jquery.inputmask.extensions.js @@ -0,0 +1,122 @@ +/* +Input Mask plugin extensions +http://github.com/RobinHerbots/jquery.inputmask +Copyright (c) 2010 - 2014 Robin Herbots +Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) +Version: 0.0.0 + +Optional extensions on the jquery.inputmask base +*/ +(function ($) { + //extra definitions + $.extend($.inputmask.defaults.definitions, { + 'A': { + validator: "[A-Za-z]", + cardinality: 1, + casing: "upper" //auto uppercasing + }, + '#': { + validator: "[A-Za-z\u0410-\u044F\u0401\u04510-9]", + cardinality: 1, + casing: "upper" + } + }); + $.extend($.inputmask.defaults.aliases, { + 'url': { + mask: "ir", + placeholder: "", + separator: "", + defaultPrefix: "http://", + regex: { + urlpre1: new RegExp("[fh]"), + urlpre2: new RegExp("(ft|ht)"), + urlpre3: new RegExp("(ftp|htt)"), + urlpre4: new RegExp("(ftp:|http|ftps)"), + urlpre5: new RegExp("(ftp:/|ftps:|http:|https)"), + urlpre6: new RegExp("(ftp://|ftps:/|http:/|https:)"), + urlpre7: new RegExp("(ftp://|ftps://|http://|https:/)"), + urlpre8: new RegExp("(ftp://|ftps://|http://|https://)") + }, + definitions: { + 'i': { + validator: function (chrs, buffer, pos, strict, opts) { + return true; + }, + cardinality: 8, + prevalidator: (function () { + var result = [], prefixLimit = 8; + for (var i = 0; i < prefixLimit; i++) { + result[i] = (function () { + var j = i; + return { + validator: function (chrs, buffer, pos, strict, opts) { + if (opts.regex["urlpre" + (j + 1)]) { + var tmp = chrs, k; + if (((j + 1) - chrs.length) > 0) { + tmp = buffer.join('').substring(0, ((j + 1) - chrs.length)) + "" + tmp; + } + var isValid = opts.regex["urlpre" + (j + 1)].test(tmp); + if (!strict && !isValid) { + pos = pos - j; + for (k = 0; k < opts.defaultPrefix.length; k++) { + buffer[pos] = opts.defaultPrefix[k]; pos++; + } + for (k = 0; k < tmp.length - 1; k++) { + buffer[pos] = tmp[k]; pos++; + } + return { "pos": pos }; + } + return isValid; + } else { + return false; + } + }, cardinality: j + }; + })(); + } + return result; + })() + }, + "r": { + validator: ".", + cardinality: 50 + } + }, + insertMode: false, + autoUnmask: false + }, + "ip": { //ip-address mask + mask: ["[[x]y]z.[[x]y]z.[[x]y]z.x[yz]", "[[x]y]z.[[x]y]z.[[x]y]z.[[x]y][z]"], + definitions: { + 'x': { + validator: "[012]", + cardinality: 1, + definitionSymbol: "i" + }, + 'y': { + validator: function (chrs, buffer, pos, strict, opts) { + if (pos - 1 > -1 && buffer[pos - 1] != ".") + chrs = buffer[pos - 1] + chrs; + else chrs = "0" + chrs; + return new RegExp("2[0-5]|[01][0-9]").test(chrs); + }, + cardinality: 1, + definitionSymbol: "i" + }, + 'z': { + validator: function (chrs, buffer, pos, strict, opts) { + if (pos - 1 > -1 && buffer[pos - 1] != ".") { + chrs = buffer[pos - 1] + chrs; + if (pos - 2 > -1 && buffer[pos - 2] != ".") { + chrs = buffer[pos - 2] + chrs; + } else chrs = "0" + chrs; + } else chrs = "00" + chrs; + return new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs); + }, + cardinality: 1, + definitionSymbol: "i" + } + } + } + }); +})(jQuery); diff --git a/public/assets/js/plugins/input-mask/jquery.inputmask.js b/public/assets/js/plugins/input-mask/jquery.inputmask.js new file mode 100755 index 00000000..cfbbfaa6 --- /dev/null +++ b/public/assets/js/plugins/input-mask/jquery.inputmask.js @@ -0,0 +1,1632 @@ +/** +* @license Input Mask plugin for jquery +* http://github.com/RobinHerbots/jquery.inputmask +* Copyright (c) 2010 - 2014 Robin Herbots +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) +* Version: 0.0.0 +*/ + +(function ($) { + if ($.fn.inputmask === undefined) { + //helper functions + function isInputEventSupported(eventName) { + var el = document.createElement('input'), + eventName = 'on' + eventName, + isSupported = (eventName in el); + if (!isSupported) { + el.setAttribute(eventName, 'return;'); + isSupported = typeof el[eventName] == 'function'; + } + el = null; + return isSupported; + } + function resolveAlias(aliasStr, options, opts) { + var aliasDefinition = opts.aliases[aliasStr]; + if (aliasDefinition) { + if (aliasDefinition.alias) resolveAlias(aliasDefinition.alias, undefined, opts); //alias is another alias + $.extend(true, opts, aliasDefinition); //merge alias definition in the options + $.extend(true, opts, options); //reapply extra given options + return true; + } + return false; + } + function generateMaskSets(opts) { + var ms = []; + var genmasks = []; //used to keep track of the masks that where processed, to avoid duplicates + function getMaskTemplate(mask) { + if (opts.numericInput) { + mask = mask.split('').reverse().join(''); + } + var escaped = false, outCount = 0, greedy = opts.greedy, repeat = opts.repeat; + if (repeat == "*") greedy = false; + //if (greedy == true && opts.placeholder == "") opts.placeholder = " "; + if (mask.length == 1 && greedy == false && repeat != 0) { opts.placeholder = ""; } //hide placeholder with single non-greedy mask + var singleMask = $.map(mask.split(""), function (element, index) { + var outElem = []; + if (element == opts.escapeChar) { + escaped = true; + } + else if ((element != opts.optionalmarker.start && element != opts.optionalmarker.end) || escaped) { + var maskdef = opts.definitions[element]; + if (maskdef && !escaped) { + for (var i = 0; i < maskdef.cardinality; i++) { + outElem.push(opts.placeholder.charAt((outCount + i) % opts.placeholder.length)); + } + } else { + outElem.push(element); + escaped = false; + } + outCount += outElem.length; + return outElem; + } + }); + + //allocate repetitions + var repeatedMask = singleMask.slice(); + for (var i = 1; i < repeat && greedy; i++) { + repeatedMask = repeatedMask.concat(singleMask.slice()); + } + + return { "mask": repeatedMask, "repeat": repeat, "greedy": greedy }; + } + //test definition => {fn: RegExp/function, cardinality: int, optionality: bool, newBlockMarker: bool, offset: int, casing: null/upper/lower, def: definitionSymbol} + function getTestingChain(mask) { + if (opts.numericInput) { + mask = mask.split('').reverse().join(''); + } + var isOptional = false, escaped = false; + var newBlockMarker = false; //indicates wheter the begin/ending of a block should be indicated + + return $.map(mask.split(""), function (element, index) { + var outElem = []; + + if (element == opts.escapeChar) { + escaped = true; + } else if (element == opts.optionalmarker.start && !escaped) { + isOptional = true; + newBlockMarker = true; + } + else if (element == opts.optionalmarker.end && !escaped) { + isOptional = false; + newBlockMarker = true; + } + else { + var maskdef = opts.definitions[element]; + if (maskdef && !escaped) { + var prevalidators = maskdef["prevalidator"], prevalidatorsL = prevalidators ? prevalidators.length : 0; + for (var i = 1; i < maskdef.cardinality; i++) { + var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator["validator"], cardinality = prevalidator["cardinality"]; + outElem.push({ fn: validator ? typeof validator == 'string' ? new RegExp(validator) : new function () { this.test = validator; } : new RegExp("."), cardinality: cardinality ? cardinality : 1, optionality: isOptional, newBlockMarker: isOptional == true ? newBlockMarker : false, offset: 0, casing: maskdef["casing"], def: maskdef["definitionSymbol"] || element }); + if (isOptional == true) //reset newBlockMarker + newBlockMarker = false; + } + outElem.push({ fn: maskdef.validator ? typeof maskdef.validator == 'string' ? new RegExp(maskdef.validator) : new function () { this.test = maskdef.validator; } : new RegExp("."), cardinality: maskdef.cardinality, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: maskdef["casing"], def: maskdef["definitionSymbol"] || element }); + } else { + outElem.push({ fn: null, cardinality: 0, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: null, def: element }); + escaped = false; + } + //reset newBlockMarker + newBlockMarker = false; + return outElem; + } + }); + } + function markOptional(maskPart) { //needed for the clearOptionalTail functionality + return opts.optionalmarker.start + maskPart + opts.optionalmarker.end; + } + function splitFirstOptionalEndPart(maskPart) { + var optionalStartMarkers = 0, optionalEndMarkers = 0, mpl = maskPart.length; + for (var i = 0; i < mpl; i++) { + if (maskPart.charAt(i) == opts.optionalmarker.start) { + optionalStartMarkers++; + } + if (maskPart.charAt(i) == opts.optionalmarker.end) { + optionalEndMarkers++; + } + if (optionalStartMarkers > 0 && optionalStartMarkers == optionalEndMarkers) + break; + } + var maskParts = [maskPart.substring(0, i)]; + if (i < mpl) { + maskParts.push(maskPart.substring(i + 1, mpl)); + } + return maskParts; + } + function splitFirstOptionalStartPart(maskPart) { + var mpl = maskPart.length; + for (var i = 0; i < mpl; i++) { + if (maskPart.charAt(i) == opts.optionalmarker.start) { + break; + } + } + var maskParts = [maskPart.substring(0, i)]; + if (i < mpl) { + maskParts.push(maskPart.substring(i + 1, mpl)); + } + return maskParts; + } + function generateMask(maskPrefix, maskPart, metadata) { + var maskParts = splitFirstOptionalEndPart(maskPart); + var newMask, maskTemplate; + + var masks = splitFirstOptionalStartPart(maskParts[0]); + if (masks.length > 1) { + newMask = maskPrefix + masks[0] + markOptional(masks[1]) + (maskParts.length > 1 ? maskParts[1] : ""); + if ($.inArray(newMask, genmasks) == -1 && newMask != "") { + genmasks.push(newMask); + maskTemplate = getMaskTemplate(newMask); + ms.push({ + "mask": newMask, + "_buffer": maskTemplate["mask"], + "buffer": maskTemplate["mask"].slice(), + "tests": getTestingChain(newMask), + "lastValidPosition": -1, + "greedy": maskTemplate["greedy"], + "repeat": maskTemplate["repeat"], + "metadata": metadata + }); + } + newMask = maskPrefix + masks[0] + (maskParts.length > 1 ? maskParts[1] : ""); + if ($.inArray(newMask, genmasks) == -1 && newMask != "") { + genmasks.push(newMask); + maskTemplate = getMaskTemplate(newMask); + ms.push({ + "mask": newMask, + "_buffer": maskTemplate["mask"], + "buffer": maskTemplate["mask"].slice(), + "tests": getTestingChain(newMask), + "lastValidPosition": -1, + "greedy": maskTemplate["greedy"], + "repeat": maskTemplate["repeat"], + "metadata": metadata + }); + } + if (splitFirstOptionalStartPart(masks[1]).length > 1) { //optional contains another optional + generateMask(maskPrefix + masks[0], masks[1] + maskParts[1], metadata); + } + if (maskParts.length > 1 && splitFirstOptionalStartPart(maskParts[1]).length > 1) { + generateMask(maskPrefix + masks[0] + markOptional(masks[1]), maskParts[1], metadata); + generateMask(maskPrefix + masks[0], maskParts[1], metadata); + } + } + else { + newMask = maskPrefix + maskParts; + if ($.inArray(newMask, genmasks) == -1 && newMask != "") { + genmasks.push(newMask); + maskTemplate = getMaskTemplate(newMask); + ms.push({ + "mask": newMask, + "_buffer": maskTemplate["mask"], + "buffer": maskTemplate["mask"].slice(), + "tests": getTestingChain(newMask), + "lastValidPosition": -1, + "greedy": maskTemplate["greedy"], + "repeat": maskTemplate["repeat"], + "metadata": metadata + }); + } + } + + } + + if ($.isFunction(opts.mask)) { //allow mask to be a preprocessing fn - should return a valid mask + opts.mask = opts.mask.call(this, opts); + } + if ($.isArray(opts.mask)) { + $.each(opts.mask, function (ndx, msk) { + if (msk["mask"] != undefined) { + generateMask("", msk["mask"].toString(), msk); + } else + generateMask("", msk.toString()); + }); + } else generateMask("", opts.mask.toString()); + + return opts.greedy ? ms : ms.sort(function (a, b) { return a["mask"].length - b["mask"].length; }); + } + + var msie10 = navigator.userAgent.match(new RegExp("msie 10", "i")) !== null, + iphone = navigator.userAgent.match(new RegExp("iphone", "i")) !== null, + android = navigator.userAgent.match(new RegExp("android.*safari.*", "i")) !== null, + androidchrome = navigator.userAgent.match(new RegExp("android.*chrome.*", "i")) !== null, + pasteEvent = isInputEventSupported('paste') ? 'paste' : isInputEventSupported('input') ? 'input' : "propertychange"; + + + //masking scope + //actionObj definition see below + function maskScope(masksets, activeMasksetIndex, opts, actionObj) { + var isRTL = false, + valueOnFocus = getActiveBuffer().join(''), + $el, chromeValueOnInput, + skipKeyPressEvent = false, //Safari 5.1.x - modal dialog fires keypress twice workaround + skipInputEvent = false, //skip when triggered from within inputmask + ignorable = false; + + + //maskset helperfunctions + + function getActiveMaskSet() { + return masksets[activeMasksetIndex]; + } + + function getActiveTests() { + return getActiveMaskSet()['tests']; + } + + function getActiveBufferTemplate() { + return getActiveMaskSet()['_buffer']; + } + + function getActiveBuffer() { + return getActiveMaskSet()['buffer']; + } + + function isValid(pos, c, strict) { //strict true ~ no correction or autofill + strict = strict === true; //always set a value to strict to prevent possible strange behavior in the extensions + + function _isValid(position, activeMaskset, c, strict) { + var testPos = determineTestPosition(position), loopend = c ? 1 : 0, chrs = '', buffer = activeMaskset["buffer"]; + for (var i = activeMaskset['tests'][testPos].cardinality; i > loopend; i--) { + chrs += getBufferElement(buffer, testPos - (i - 1)); + } + + if (c) { + chrs += c; + } + + //return is false or a json object => { pos: ??, c: ??} or true + return activeMaskset['tests'][testPos].fn != null ? + activeMaskset['tests'][testPos].fn.test(chrs, buffer, position, strict, opts) + : (c == getBufferElement(activeMaskset['_buffer'], position, true) || c == opts.skipOptionalPartCharacter) ? + { "refresh": true, c: getBufferElement(activeMaskset['_buffer'], position, true), pos: position } + : false; + } + + function PostProcessResults(maskForwards, results) { + var hasValidActual = false; + $.each(results, function (ndx, rslt) { + hasValidActual = $.inArray(rslt["activeMasksetIndex"], maskForwards) == -1 && rslt["result"] !== false; + if (hasValidActual) return false; + }); + if (hasValidActual) { //strip maskforwards + results = $.map(results, function (rslt, ndx) { + if ($.inArray(rslt["activeMasksetIndex"], maskForwards) == -1) { + return rslt; + } else { + masksets[rslt["activeMasksetIndex"]]["lastValidPosition"] = actualLVP; + } + }); + } else { //keep maskforwards with the least forward + var lowestPos = -1, lowestIndex = -1, rsltValid; + $.each(results, function (ndx, rslt) { + if ($.inArray(rslt["activeMasksetIndex"], maskForwards) != -1 && rslt["result"] !== false & (lowestPos == -1 || lowestPos > rslt["result"]["pos"])) { + lowestPos = rslt["result"]["pos"]; + lowestIndex = rslt["activeMasksetIndex"]; + } + }); + results = $.map(results, function (rslt, ndx) { + if ($.inArray(rslt["activeMasksetIndex"], maskForwards) != -1) { + if (rslt["result"]["pos"] == lowestPos) { + return rslt; + } else if (rslt["result"] !== false) { + for (var i = pos; i < lowestPos; i++) { + rsltValid = _isValid(i, masksets[rslt["activeMasksetIndex"]], masksets[lowestIndex]["buffer"][i], true); + if (rsltValid === false) { + masksets[rslt["activeMasksetIndex"]]["lastValidPosition"] = lowestPos - 1; + break; + } else { + setBufferElement(masksets[rslt["activeMasksetIndex"]]["buffer"], i, masksets[lowestIndex]["buffer"][i], true); + masksets[rslt["activeMasksetIndex"]]["lastValidPosition"] = i; + } + } + //also check check for the lowestpos with the new input + rsltValid = _isValid(lowestPos, masksets[rslt["activeMasksetIndex"]], c, true); + if (rsltValid !== false) { + setBufferElement(masksets[rslt["activeMasksetIndex"]]["buffer"], lowestPos, c, true); + masksets[rslt["activeMasksetIndex"]]["lastValidPosition"] = lowestPos; + } + //console.log("ndx " + rslt["activeMasksetIndex"] + " validate " + masksets[rslt["activeMasksetIndex"]]["buffer"].join('') + " lv " + masksets[rslt["activeMasksetIndex"]]['lastValidPosition']); + return rslt; + } + } + }); + } + return results; + } + + if (strict) { + var result = _isValid(pos, getActiveMaskSet(), c, strict); //only check validity in current mask when validating strict + if (result === true) { + result = { "pos": pos }; //always take a possible corrected maskposition into account + } + return result; + } + + var results = [], result = false, currentActiveMasksetIndex = activeMasksetIndex, + actualBuffer = getActiveBuffer().slice(), actualLVP = getActiveMaskSet()["lastValidPosition"], + actualPrevious = seekPrevious(pos), + maskForwards = []; + $.each(masksets, function (index, value) { + if (typeof (value) == "object") { + activeMasksetIndex = index; + + var maskPos = pos; + var lvp = getActiveMaskSet()['lastValidPosition'], + rsltValid; + if (lvp == actualLVP) { + if ((maskPos - actualLVP) > 1) { + for (var i = lvp == -1 ? 0 : lvp; i < maskPos; i++) { + rsltValid = _isValid(i, getActiveMaskSet(), actualBuffer[i], true); + if (rsltValid === false) { + break; + } else { + setBufferElement(getActiveBuffer(), i, actualBuffer[i], true); + if (rsltValid === true) { + rsltValid = { "pos": i }; //always take a possible corrected maskposition into account + } + var newValidPosition = rsltValid.pos || i; + if (getActiveMaskSet()['lastValidPosition'] < newValidPosition) + getActiveMaskSet()['lastValidPosition'] = newValidPosition; //set new position from isValid + } + } + } + //does the input match on a further position? + if (!isMask(maskPos) && !_isValid(maskPos, getActiveMaskSet(), c, strict)) { + var maxForward = seekNext(maskPos) - maskPos; + for (var fw = 0; fw < maxForward; fw++) { + if (_isValid(++maskPos, getActiveMaskSet(), c, strict) !== false) + break; + } + maskForwards.push(activeMasksetIndex); + //console.log('maskforward ' + activeMasksetIndex + " pos " + pos + " maskPos " + maskPos); + } + } + + if (getActiveMaskSet()['lastValidPosition'] >= actualLVP || activeMasksetIndex == currentActiveMasksetIndex) { + if (maskPos >= 0 && maskPos < getMaskLength()) { + result = _isValid(maskPos, getActiveMaskSet(), c, strict); + if (result !== false) { + if (result === true) { + result = { "pos": maskPos }; //always take a possible corrected maskposition into account + } + var newValidPosition = result.pos || maskPos; + if (getActiveMaskSet()['lastValidPosition'] < newValidPosition) + getActiveMaskSet()['lastValidPosition'] = newValidPosition; //set new position from isValid + } + //console.log("pos " + pos + " ndx " + activeMasksetIndex + " validate " + getActiveBuffer().join('') + " lv " + getActiveMaskSet()['lastValidPosition']); + results.push({ "activeMasksetIndex": index, "result": result }); + } + } + } + }); + activeMasksetIndex = currentActiveMasksetIndex; //reset activeMasksetIndex + + return PostProcessResults(maskForwards, results); //return results of the multiple mask validations + } + + function determineActiveMasksetIndex() { + var currentMasksetIndex = activeMasksetIndex, + highestValid = { "activeMasksetIndex": 0, "lastValidPosition": -1, "next": -1 }; + $.each(masksets, function (index, value) { + if (typeof (value) == "object") { + activeMasksetIndex = index; + if (getActiveMaskSet()['lastValidPosition'] > highestValid['lastValidPosition']) { + highestValid["activeMasksetIndex"] = index; + highestValid["lastValidPosition"] = getActiveMaskSet()['lastValidPosition']; + highestValid["next"] = seekNext(getActiveMaskSet()['lastValidPosition']); + } else if (getActiveMaskSet()['lastValidPosition'] == highestValid['lastValidPosition'] && + (highestValid['next'] == -1 || highestValid['next'] > seekNext(getActiveMaskSet()['lastValidPosition']))) { + highestValid["activeMasksetIndex"] = index; + highestValid["lastValidPosition"] = getActiveMaskSet()['lastValidPosition']; + highestValid["next"] = seekNext(getActiveMaskSet()['lastValidPosition']); + } + } + }); + + activeMasksetIndex = highestValid["lastValidPosition"] != -1 && masksets[currentMasksetIndex]["lastValidPosition"] == highestValid["lastValidPosition"] ? currentMasksetIndex : highestValid["activeMasksetIndex"]; + if (currentMasksetIndex != activeMasksetIndex) { + clearBuffer(getActiveBuffer(), seekNext(highestValid["lastValidPosition"]), getMaskLength()); + getActiveMaskSet()["writeOutBuffer"] = true; + } + $el.data('_inputmask')['activeMasksetIndex'] = activeMasksetIndex; //store the activeMasksetIndex + } + + function isMask(pos) { + var testPos = determineTestPosition(pos); + var test = getActiveTests()[testPos]; + + return test != undefined ? test.fn : false; + } + + function determineTestPosition(pos) { + return pos % getActiveTests().length; + } + + function getMaskLength() { + return opts.getMaskLength(getActiveBufferTemplate(), getActiveMaskSet()['greedy'], getActiveMaskSet()['repeat'], getActiveBuffer(), opts); + } + + //pos: from position + + function seekNext(pos) { + var maskL = getMaskLength(); + if (pos >= maskL) return maskL; + var position = pos; + while (++position < maskL && !isMask(position)) { + } + return position; + } + + //pos: from position + + function seekPrevious(pos) { + var position = pos; + if (position <= 0) return 0; + + while (--position > 0 && !isMask(position)) { + } + ; + return position; + } + + function setBufferElement(buffer, position, element, autoPrepare) { + if (autoPrepare) position = prepareBuffer(buffer, position); + + var test = getActiveTests()[determineTestPosition(position)]; + var elem = element; + if (elem != undefined && test != undefined) { + switch (test.casing) { + case "upper": + elem = element.toUpperCase(); + break; + case "lower": + elem = element.toLowerCase(); + break; + } + } + + buffer[position] = elem; + } + + function getBufferElement(buffer, position, autoPrepare) { + if (autoPrepare) position = prepareBuffer(buffer, position); + return buffer[position]; + } + + //needed to handle the non-greedy mask repetitions + + function prepareBuffer(buffer, position) { + var j; + while (buffer[position] == undefined && buffer.length < getMaskLength()) { + j = 0; + while (getActiveBufferTemplate()[j] !== undefined) { //add a new buffer + buffer.push(getActiveBufferTemplate()[j++]); + } + } + + return position; + } + + function writeBuffer(input, buffer, caretPos) { + input._valueSet(buffer.join('')); + if (caretPos != undefined) { + caret(input, caretPos); + } + } + + function clearBuffer(buffer, start, end, stripNomasks) { + for (var i = start, maskL = getMaskLength() ; i < end && i < maskL; i++) { + if (stripNomasks === true) { + if (!isMask(i)) + setBufferElement(buffer, i, ""); + } else + setBufferElement(buffer, i, getBufferElement(getActiveBufferTemplate().slice(), i, true)); + } + } + + function setReTargetPlaceHolder(buffer, pos) { + var testPos = determineTestPosition(pos); + setBufferElement(buffer, pos, getBufferElement(getActiveBufferTemplate(), testPos)); + } + + function getPlaceHolder(pos) { + return opts.placeholder.charAt(pos % opts.placeholder.length); + } + + function checkVal(input, writeOut, strict, nptvl, intelliCheck) { + var inputValue = nptvl != undefined ? nptvl.slice() : truncateInput(input._valueGet()).split(''); + + $.each(masksets, function (ndx, ms) { + if (typeof (ms) == "object") { + ms["buffer"] = ms["_buffer"].slice(); + ms["lastValidPosition"] = -1; + ms["p"] = -1; + } + }); + if (strict !== true) activeMasksetIndex = 0; + if (writeOut) input._valueSet(""); //initial clear + var ml = getMaskLength(); + $.each(inputValue, function (ndx, charCode) { + if (intelliCheck === true) { + var p = getActiveMaskSet()["p"], lvp = p == -1 ? p : seekPrevious(p), + pos = lvp == -1 ? ndx : seekNext(lvp); + if ($.inArray(charCode, getActiveBufferTemplate().slice(lvp + 1, pos)) == -1) { + keypressEvent.call(input, undefined, true, charCode.charCodeAt(0), writeOut, strict, ndx); + } + } else { + keypressEvent.call(input, undefined, true, charCode.charCodeAt(0), writeOut, strict, ndx); + } + }); + + if (strict === true && getActiveMaskSet()["p"] != -1) { + getActiveMaskSet()["lastValidPosition"] = seekPrevious(getActiveMaskSet()["p"]); + } + } + + function escapeRegex(str) { + return $.inputmask.escapeRegex.call(this, str); + } + + function truncateInput(inputValue) { + return inputValue.replace(new RegExp("(" + escapeRegex(getActiveBufferTemplate().join('')) + ")*$"), ""); + } + + function clearOptionalTail(input) { + var buffer = getActiveBuffer(), tmpBuffer = buffer.slice(), testPos, pos; + for (var pos = tmpBuffer.length - 1; pos >= 0; pos--) { + var testPos = determineTestPosition(pos); + if (getActiveTests()[testPos].optionality) { + if (!isMask(pos) || !isValid(pos, buffer[pos], true)) + tmpBuffer.pop(); + else break; + } else break; + } + writeBuffer(input, tmpBuffer); + } + + function unmaskedvalue($input, skipDatepickerCheck) { + if (getActiveTests() && (skipDatepickerCheck === true || !$input.hasClass('hasDatepicker'))) { + //checkVal(input, false, true); + var umValue = $.map(getActiveBuffer(), function (element, index) { + return isMask(index) && isValid(index, element, true) ? element : null; + }); + var unmaskedValue = (isRTL ? umValue.reverse() : umValue).join(''); + return opts.onUnMask != undefined ? opts.onUnMask.call(this, getActiveBuffer().join(''), unmaskedValue) : unmaskedValue; + } else { + return $input[0]._valueGet(); + } + } + + function TranslatePosition(pos) { + if (isRTL && typeof pos == 'number' && (!opts.greedy || opts.placeholder != "")) { + var bffrLght = getActiveBuffer().length; + pos = bffrLght - pos; + } + return pos; + } + + function caret(input, begin, end) { + var npt = input.jquery && input.length > 0 ? input[0] : input, range; + if (typeof begin == 'number') { + begin = TranslatePosition(begin); + end = TranslatePosition(end); + if (!$(input).is(':visible')) { + return; + } + end = (typeof end == 'number') ? end : begin; + npt.scrollLeft = npt.scrollWidth; + if (opts.insertMode == false && begin == end) end++; //set visualization for insert/overwrite mode + if (npt.setSelectionRange) { + npt.selectionStart = begin; + npt.selectionEnd = android ? begin : end; + + } else if (npt.createTextRange) { + range = npt.createTextRange(); + range.collapse(true); + range.moveEnd('character', end); + range.moveStart('character', begin); + range.select(); + } + } else { + if (!$(input).is(':visible')) { + return { "begin": 0, "end": 0 }; + } + if (npt.setSelectionRange) { + begin = npt.selectionStart; + end = npt.selectionEnd; + } else if (document.selection && document.selection.createRange) { + range = document.selection.createRange(); + begin = 0 - range.duplicate().moveStart('character', -100000); + end = begin + range.text.length; + } + begin = TranslatePosition(begin); + end = TranslatePosition(end); + return { "begin": begin, "end": end }; + } + } + + function isComplete(buffer) { //return true / false / undefined (repeat *) + if (opts.repeat == "*") return undefined; + var complete = false, highestValidPosition = 0, currentActiveMasksetIndex = activeMasksetIndex; + $.each(masksets, function (ndx, ms) { + if (typeof (ms) == "object") { + activeMasksetIndex = ndx; + var aml = seekPrevious(getMaskLength()); + if (ms["lastValidPosition"] >= highestValidPosition && ms["lastValidPosition"] == aml) { + var msComplete = true; + for (var i = 0; i <= aml; i++) { + var mask = isMask(i), testPos = determineTestPosition(i); + if ((mask && (buffer[i] == undefined || buffer[i] == getPlaceHolder(i))) || (!mask && buffer[i] != getActiveBufferTemplate()[testPos])) { + msComplete = false; + break; + } + } + complete = complete || msComplete; + if (complete) //break loop + return false; + } + highestValidPosition = ms["lastValidPosition"]; + } + }); + activeMasksetIndex = currentActiveMasksetIndex; //reset activeMaskset + return complete; + } + + function isSelection(begin, end) { + return isRTL ? (begin - end) > 1 || ((begin - end) == 1 && opts.insertMode) : + (end - begin) > 1 || ((end - begin) == 1 && opts.insertMode); + } + + + //private functions + function installEventRuler(npt) { + var events = $._data(npt).events; + + $.each(events, function (eventType, eventHandlers) { + $.each(eventHandlers, function (ndx, eventHandler) { + if (eventHandler.namespace == "inputmask") { + if (eventHandler.type != "setvalue") { + var handler = eventHandler.handler; + eventHandler.handler = function (e) { + if (this.readOnly || this.disabled) + e.preventDefault; + else + return handler.apply(this, arguments); + }; + } + } + }); + }); + } + + function patchValueProperty(npt) { + var valueProperty; + if (Object.getOwnPropertyDescriptor) + valueProperty = Object.getOwnPropertyDescriptor(npt, "value"); + if (valueProperty && valueProperty.get) { + if (!npt._valueGet) { + var valueGet = valueProperty.get; + var valueSet = valueProperty.set; + npt._valueGet = function () { + return isRTL ? valueGet.call(this).split('').reverse().join('') : valueGet.call(this); + }; + npt._valueSet = function (value) { + valueSet.call(this, isRTL ? value.split('').reverse().join('') : value); + }; + + Object.defineProperty(npt, "value", { + get: function () { + var $self = $(this), inputData = $(this).data('_inputmask'), masksets = inputData['masksets'], + activeMasksetIndex = inputData['activeMasksetIndex']; + return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : valueGet.call(this) != masksets[activeMasksetIndex]['_buffer'].join('') ? valueGet.call(this) : ''; + }, + set: function (value) { + valueSet.call(this, value); + $(this).triggerHandler('setvalue.inputmask'); + } + }); + } + } else if (document.__lookupGetter__ && npt.__lookupGetter__("value")) { + if (!npt._valueGet) { + var valueGet = npt.__lookupGetter__("value"); + var valueSet = npt.__lookupSetter__("value"); + npt._valueGet = function () { + return isRTL ? valueGet.call(this).split('').reverse().join('') : valueGet.call(this); + }; + npt._valueSet = function (value) { + valueSet.call(this, isRTL ? value.split('').reverse().join('') : value); + }; + + npt.__defineGetter__("value", function () { + var $self = $(this), inputData = $(this).data('_inputmask'), masksets = inputData['masksets'], + activeMasksetIndex = inputData['activeMasksetIndex']; + return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : valueGet.call(this) != masksets[activeMasksetIndex]['_buffer'].join('') ? valueGet.call(this) : ''; + }); + npt.__defineSetter__("value", function (value) { + valueSet.call(this, value); + $(this).triggerHandler('setvalue.inputmask'); + }); + } + } else { + if (!npt._valueGet) { + npt._valueGet = function () { return isRTL ? this.value.split('').reverse().join('') : this.value; }; + npt._valueSet = function (value) { this.value = isRTL ? value.split('').reverse().join('') : value; }; + } + if ($.valHooks.text == undefined || $.valHooks.text.inputmaskpatch != true) { + var valueGet = $.valHooks.text && $.valHooks.text.get ? $.valHooks.text.get : function (elem) { return elem.value; }; + var valueSet = $.valHooks.text && $.valHooks.text.set ? $.valHooks.text.set : function (elem, value) { + elem.value = value; + return elem; + }; + + jQuery.extend($.valHooks, { + text: { + get: function (elem) { + var $elem = $(elem); + if ($elem.data('_inputmask')) { + if ($elem.data('_inputmask')['opts'].autoUnmask) + return $elem.inputmask('unmaskedvalue'); + else { + var result = valueGet(elem), + inputData = $elem.data('_inputmask'), masksets = inputData['masksets'], + activeMasksetIndex = inputData['activeMasksetIndex']; + return result != masksets[activeMasksetIndex]['_buffer'].join('') ? result : ''; + } + } else return valueGet(elem); + }, + set: function (elem, value) { + var $elem = $(elem); + var result = valueSet(elem, value); + if ($elem.data('_inputmask')) $elem.triggerHandler('setvalue.inputmask'); + return result; + }, + inputmaskpatch: true + } + }); + } + } + } + + //shift chars to left from start to end and put c at end position if defined + + function shiftL(start, end, c, maskJumps) { + var buffer = getActiveBuffer(); + if (maskJumps !== false) //jumping over nonmask position + while (!isMask(start) && start - 1 >= 0) start--; + for (var i = start; i < end && i < getMaskLength() ; i++) { + if (isMask(i)) { + setReTargetPlaceHolder(buffer, i); + var j = seekNext(i); + var p = getBufferElement(buffer, j); + if (p != getPlaceHolder(j)) { + if (j < getMaskLength() && isValid(i, p, true) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def) { + setBufferElement(buffer, i, p, true); + } else { + if (isMask(i)) + break; + } + } + } else { + setReTargetPlaceHolder(buffer, i); + } + } + if (c != undefined) + setBufferElement(buffer, seekPrevious(end), c); + + if (getActiveMaskSet()["greedy"] == false) { + var trbuffer = truncateInput(buffer.join('')).split(''); + buffer.length = trbuffer.length; + for (var i = 0, bl = buffer.length; i < bl; i++) { + buffer[i] = trbuffer[i]; + } + if (buffer.length == 0) getActiveMaskSet()["buffer"] = getActiveBufferTemplate().slice(); + } + return start; //return the used start position + } + + function shiftR(start, end, c) { + var buffer = getActiveBuffer(); + if (getBufferElement(buffer, start, true) != getPlaceHolder(start)) { + for (var i = seekPrevious(end) ; i > start && i >= 0; i--) { + if (isMask(i)) { + var j = seekPrevious(i); + var t = getBufferElement(buffer, j); + if (t != getPlaceHolder(j)) { + if (isValid(j, t, true) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def) { + setBufferElement(buffer, i, t, true); + setReTargetPlaceHolder(buffer, j); + } //else break; + } + } else + setReTargetPlaceHolder(buffer, i); + } + } + if (c != undefined && getBufferElement(buffer, start) == getPlaceHolder(start)) + setBufferElement(buffer, start, c); + var lengthBefore = buffer.length; + if (getActiveMaskSet()["greedy"] == false) { + var trbuffer = truncateInput(buffer.join('')).split(''); + buffer.length = trbuffer.length; + for (var i = 0, bl = buffer.length; i < bl; i++) { + buffer[i] = trbuffer[i]; + } + if (buffer.length == 0) getActiveMaskSet()["buffer"] = getActiveBufferTemplate().slice(); + } + return end - (lengthBefore - buffer.length); //return new start position + } + + ; + + + function HandleRemove(input, k, pos) { + if (opts.numericInput || isRTL) { + switch (k) { + case opts.keyCode.BACKSPACE: + k = opts.keyCode.DELETE; + break; + case opts.keyCode.DELETE: + k = opts.keyCode.BACKSPACE; + break; + } + if (isRTL) { + var pend = pos.end; + pos.end = pos.begin; + pos.begin = pend; + } + } + + var isSelection = true; + if (pos.begin == pos.end) { + var posBegin = k == opts.keyCode.BACKSPACE ? pos.begin - 1 : pos.begin; + if (opts.isNumeric && opts.radixPoint != "" && getActiveBuffer()[posBegin] == opts.radixPoint) { + pos.begin = (getActiveBuffer().length - 1 == posBegin) /* radixPoint is latest? delete it */ ? pos.begin : k == opts.keyCode.BACKSPACE ? posBegin : seekNext(posBegin); + pos.end = pos.begin; + } + isSelection = false; + if (k == opts.keyCode.BACKSPACE) + pos.begin--; + else if (k == opts.keyCode.DELETE) + pos.end++; + } else if (pos.end - pos.begin == 1 && !opts.insertMode) { + isSelection = false; + if (k == opts.keyCode.BACKSPACE) + pos.begin--; + } + + clearBuffer(getActiveBuffer(), pos.begin, pos.end); + + var ml = getMaskLength(); + if (opts.greedy == false) { + shiftL(pos.begin, ml, undefined, !isRTL && (k == opts.keyCode.BACKSPACE && !isSelection)); + } else { + var newpos = pos.begin; + for (var i = pos.begin; i < pos.end; i++) { //seeknext to skip placeholders at start in selection + if (isMask(i) || !isSelection) + newpos = shiftL(pos.begin, ml, undefined, !isRTL && (k == opts.keyCode.BACKSPACE && !isSelection)); + } + if (!isSelection) pos.begin = newpos; + } + var firstMaskPos = seekNext(-1); + clearBuffer(getActiveBuffer(), pos.begin, pos.end, true); + checkVal(input, false, masksets[1] == undefined || firstMaskPos >= pos.end, getActiveBuffer()); + if (getActiveMaskSet()['lastValidPosition'] < firstMaskPos) { + getActiveMaskSet()["lastValidPosition"] = -1; + getActiveMaskSet()["p"] = firstMaskPos; + } else { + getActiveMaskSet()["p"] = pos.begin; + } + } + + function keydownEvent(e) { + //Safari 5.1.x - modal dialog fires keypress twice workaround + skipKeyPressEvent = false; + var input = this, $input = $(input), k = e.keyCode, pos = caret(input); + + //backspace, delete, and escape get special treatment + if (k == opts.keyCode.BACKSPACE || k == opts.keyCode.DELETE || (iphone && k == 127) || e.ctrlKey && k == 88) { //backspace/delete + e.preventDefault(); //stop default action but allow propagation + if (k == 88) valueOnFocus = getActiveBuffer().join(''); + HandleRemove(input, k, pos); + determineActiveMasksetIndex(); + writeBuffer(input, getActiveBuffer(), getActiveMaskSet()["p"]); + if (input._valueGet() == getActiveBufferTemplate().join('')) + $input.trigger('cleared'); + + if (opts.showTooltip) { //update tooltip + $input.prop("title", getActiveMaskSet()["mask"]); + } + } else if (k == opts.keyCode.END || k == opts.keyCode.PAGE_DOWN) { //when END or PAGE_DOWN pressed set position at lastmatch + setTimeout(function () { + var caretPos = seekNext(getActiveMaskSet()["lastValidPosition"]); + if (!opts.insertMode && caretPos == getMaskLength() && !e.shiftKey) caretPos--; + caret(input, e.shiftKey ? pos.begin : caretPos, caretPos); + }, 0); + } else if ((k == opts.keyCode.HOME && !e.shiftKey) || k == opts.keyCode.PAGE_UP) { //Home or page_up + caret(input, 0, e.shiftKey ? pos.begin : 0); + } else if (k == opts.keyCode.ESCAPE || (k == 90 && e.ctrlKey)) { //escape && undo + checkVal(input, true, false, valueOnFocus.split('')); + $input.click(); + } else if (k == opts.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) { //insert + opts.insertMode = !opts.insertMode; + caret(input, !opts.insertMode && pos.begin == getMaskLength() ? pos.begin - 1 : pos.begin); + } else if (opts.insertMode == false && !e.shiftKey) { + if (k == opts.keyCode.RIGHT) { + setTimeout(function () { + var caretPos = caret(input); + caret(input, caretPos.begin); + }, 0); + } else if (k == opts.keyCode.LEFT) { + setTimeout(function () { + var caretPos = caret(input); + caret(input, caretPos.begin - 1); + }, 0); + } + } + + var currentCaretPos = caret(input); + if (opts.onKeyDown.call(this, e, getActiveBuffer(), opts) === true) //extra stuff to execute on keydown + caret(input, currentCaretPos.begin, currentCaretPos.end); + ignorable = $.inArray(k, opts.ignorables) != -1; + } + + + function keypressEvent(e, checkval, k, writeOut, strict, ndx) { + //Safari 5.1.x - modal dialog fires keypress twice workaround + if (k == undefined && skipKeyPressEvent) return false; + skipKeyPressEvent = true; + + var input = this, $input = $(input); + + e = e || window.event; + var k = checkval ? k : (e.which || e.charCode || e.keyCode); + + if (checkval !== true && (!(e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable))) { + return true; + } else { + if (k) { + //special treat the decimal separator + if (checkval !== true && k == 46 && e.shiftKey == false && opts.radixPoint == ",") k = 44; + + var pos, results, result, c = String.fromCharCode(k); + if (checkval) { + var pcaret = strict ? ndx : getActiveMaskSet()["lastValidPosition"] + 1; + pos = { begin: pcaret, end: pcaret }; + } else { + pos = caret(input); + } + + //should we clear a possible selection?? + var isSlctn = isSelection(pos.begin, pos.end), redetermineLVP = false, + initialIndex = activeMasksetIndex; + if (isSlctn) { + activeMasksetIndex = initialIndex; + $.each(masksets, function (ndx, lmnt) { //init undobuffer for recovery when not valid + if (typeof (lmnt) == "object") { + activeMasksetIndex = ndx; + getActiveMaskSet()["undoBuffer"] = getActiveBuffer().join(''); + } + }); + HandleRemove(input, opts.keyCode.DELETE, pos); + if (!opts.insertMode) { //preserve some space + $.each(masksets, function (ndx, lmnt) { + if (typeof (lmnt) == "object") { + activeMasksetIndex = ndx; + shiftR(pos.begin, getMaskLength()); + getActiveMaskSet()["lastValidPosition"] = seekNext(getActiveMaskSet()["lastValidPosition"]); + } + }); + } + activeMasksetIndex = initialIndex; //restore index + } + + var radixPosition = getActiveBuffer().join('').indexOf(opts.radixPoint); + if (opts.isNumeric && checkval !== true && radixPosition != -1) { + if (opts.greedy && pos.begin <= radixPosition) { + pos.begin = seekPrevious(pos.begin); + pos.end = pos.begin; + } else if (c == opts.radixPoint) { + pos.begin = radixPosition; + pos.end = pos.begin; + } + } + + + var p = pos.begin; + results = isValid(p, c, strict); + if (strict === true) results = [{ "activeMasksetIndex": activeMasksetIndex, "result": results }]; + var minimalForwardPosition = -1; + $.each(results, function (index, result) { + activeMasksetIndex = result["activeMasksetIndex"]; + getActiveMaskSet()["writeOutBuffer"] = true; + var np = result["result"]; + if (np !== false) { + var refresh = false, buffer = getActiveBuffer(); + if (np !== true) { + refresh = np["refresh"]; //only rewrite buffer from isValid + p = np.pos != undefined ? np.pos : p; //set new position from isValid + c = np.c != undefined ? np.c : c; //set new char from isValid + } + if (refresh !== true) { + if (opts.insertMode == true) { + var lastUnmaskedPosition = getMaskLength(); + var bfrClone = buffer.slice(); + while (getBufferElement(bfrClone, lastUnmaskedPosition, true) != getPlaceHolder(lastUnmaskedPosition) && lastUnmaskedPosition >= p) { + lastUnmaskedPosition = lastUnmaskedPosition == 0 ? -1 : seekPrevious(lastUnmaskedPosition); + } + if (lastUnmaskedPosition >= p) { + shiftR(p, getMaskLength(), c); + //shift the lvp if needed + var lvp = getActiveMaskSet()["lastValidPosition"], nlvp = seekNext(lvp); + if (nlvp != getMaskLength() && lvp >= p && (getBufferElement(getActiveBuffer(), nlvp, true) != getPlaceHolder(nlvp))) { + getActiveMaskSet()["lastValidPosition"] = nlvp; + } + } else getActiveMaskSet()["writeOutBuffer"] = false; + } else setBufferElement(buffer, p, c, true); + if (minimalForwardPosition == -1 || minimalForwardPosition > seekNext(p)) { + minimalForwardPosition = seekNext(p); + } + } else if (!strict) { + var nextPos = p < getMaskLength() ? p + 1 : p; + if (minimalForwardPosition == -1 || minimalForwardPosition > nextPos) { + minimalForwardPosition = nextPos; + } + } + if (minimalForwardPosition > getActiveMaskSet()["p"]) + getActiveMaskSet()["p"] = minimalForwardPosition; //needed for checkval strict + } + }); + + if (strict !== true) { + activeMasksetIndex = initialIndex; + determineActiveMasksetIndex(); + } + if (writeOut !== false) { + $.each(results, function (ndx, rslt) { + if (rslt["activeMasksetIndex"] == activeMasksetIndex) { + result = rslt; + return false; + } + }); + if (result != undefined) { + var self = this; + setTimeout(function () { opts.onKeyValidation.call(self, result["result"], opts); }, 0); + if (getActiveMaskSet()["writeOutBuffer"] && result["result"] !== false) { + var buffer = getActiveBuffer(); + + var newCaretPosition; + if (checkval) { + newCaretPosition = undefined; + } else if (opts.numericInput) { + if (p > radixPosition) { + newCaretPosition = seekPrevious(minimalForwardPosition); + } else if (c == opts.radixPoint) { + newCaretPosition = minimalForwardPosition - 1; + } else newCaretPosition = seekPrevious(minimalForwardPosition - 1); + } else { + newCaretPosition = minimalForwardPosition; + } + + writeBuffer(input, buffer, newCaretPosition); + if (checkval !== true) { + setTimeout(function () { //timeout needed for IE + if (isComplete(buffer) === true) + $input.trigger("complete"); + skipInputEvent = true; + $input.trigger("input"); + }, 0); + } + } else if (isSlctn) { + getActiveMaskSet()["buffer"] = getActiveMaskSet()["undoBuffer"].split(''); + } + } + } + + if (opts.showTooltip) { //update tooltip + $input.prop("title", getActiveMaskSet()["mask"]); + } + + //needed for IE8 and below + if (e) e.preventDefault ? e.preventDefault() : e.returnValue = false; + } + } + } + + function keyupEvent(e) { + var $input = $(this), input = this, k = e.keyCode, buffer = getActiveBuffer(); + + if (androidchrome && k == opts.keyCode.BACKSPACE) { + if (chromeValueOnInput == input._valueGet()) + keydownEvent.call(this, e); + } + + opts.onKeyUp.call(this, e, buffer, opts); //extra stuff to execute on keyup + if (k == opts.keyCode.TAB && opts.showMaskOnFocus) { + if ($input.hasClass('focus.inputmask') && input._valueGet().length == 0) { + buffer = getActiveBufferTemplate().slice(); + writeBuffer(input, buffer); + caret(input, 0); + valueOnFocus = getActiveBuffer().join(''); + } else { + writeBuffer(input, buffer); + if (buffer.join('') == getActiveBufferTemplate().join('') && $.inArray(opts.radixPoint, buffer) != -1) { + caret(input, TranslatePosition(0)); + $input.click(); + } else + caret(input, TranslatePosition(0), TranslatePosition(getMaskLength())); + } + } + } + + function inputEvent(e) { + if (skipInputEvent === true) { + skipInputEvent = false; + return true; + } + var input = this, $input = $(input); + + chromeValueOnInput = getActiveBuffer().join(''); + checkVal(input, false, false); + writeBuffer(input, getActiveBuffer()); + if (isComplete(getActiveBuffer()) === true) + $input.trigger("complete"); + $input.click(); + } + + function mask(el) { + $el = $(el); + if ($el.is(":input")) { + //store tests & original buffer in the input element - used to get the unmasked value + $el.data('_inputmask', { + 'masksets': masksets, + 'activeMasksetIndex': activeMasksetIndex, + 'opts': opts, + 'isRTL': false + }); + + //show tooltip + if (opts.showTooltip) { + $el.prop("title", getActiveMaskSet()["mask"]); + } + + //correct greedy setting if needed + getActiveMaskSet()['greedy'] = getActiveMaskSet()['greedy'] ? getActiveMaskSet()['greedy'] : getActiveMaskSet()['repeat'] == 0; + + //handle maxlength attribute + if ($el.attr("maxLength") != null) //only when the attribute is set + { + var maxLength = $el.prop('maxLength'); + if (maxLength > -1) { //handle *-repeat + $.each(masksets, function (ndx, ms) { + if (typeof (ms) == "object") { + if (ms["repeat"] == "*") { + ms["repeat"] = maxLength; + } + } + }); + } + if (getMaskLength() >= maxLength && maxLength > -1) { //FF sets no defined max length to -1 + if (maxLength < getActiveBufferTemplate().length) getActiveBufferTemplate().length = maxLength; + if (getActiveMaskSet()['greedy'] == false) { + getActiveMaskSet()['repeat'] = Math.round(maxLength / getActiveBufferTemplate().length); + } + $el.prop('maxLength', getMaskLength() * 2); + } + } + + patchValueProperty(el); + + if (opts.numericInput) opts.isNumeric = opts.numericInput; + if (el.dir == "rtl" || (opts.numericInput && opts.rightAlignNumerics) || (opts.isNumeric && opts.rightAlignNumerics)) + $el.css("text-align", "right"); + + if (el.dir == "rtl" || opts.numericInput) { + el.dir = "ltr"; + $el.removeAttr("dir"); + var inputData = $el.data('_inputmask'); + inputData['isRTL'] = true; + $el.data('_inputmask', inputData); + isRTL = true; + } + + //unbind all events - to make sure that no other mask will interfere when re-masking + $el.unbind(".inputmask"); + $el.removeClass('focus.inputmask'); + //bind events + $el.closest('form').bind("submit", function () { //trigger change on submit if any + if (valueOnFocus != getActiveBuffer().join('')) { + $el.change(); + } + }).bind('reset', function () { + setTimeout(function () { + $el.trigger("setvalue"); + }, 0); + }); + $el.bind("mouseenter.inputmask", function () { + var $input = $(this), input = this; + if (!$input.hasClass('focus.inputmask') && opts.showMaskOnHover) { + if (input._valueGet() != getActiveBuffer().join('')) { + writeBuffer(input, getActiveBuffer()); + } + } + }).bind("blur.inputmask", function () { + var $input = $(this), input = this, nptValue = input._valueGet(), buffer = getActiveBuffer(); + $input.removeClass('focus.inputmask'); + if (valueOnFocus != getActiveBuffer().join('')) { + $input.change(); + } + if (opts.clearMaskOnLostFocus && nptValue != '') { + if (nptValue == getActiveBufferTemplate().join('')) + input._valueSet(''); + else { //clearout optional tail of the mask + clearOptionalTail(input); + } + } + if (isComplete(buffer) === false) { + $input.trigger("incomplete"); + if (opts.clearIncomplete) { + $.each(masksets, function (ndx, ms) { + if (typeof (ms) == "object") { + ms["buffer"] = ms["_buffer"].slice(); + ms["lastValidPosition"] = -1; + } + }); + activeMasksetIndex = 0; + if (opts.clearMaskOnLostFocus) + input._valueSet(''); + else { + buffer = getActiveBufferTemplate().slice(); + writeBuffer(input, buffer); + } + } + } + }).bind("focus.inputmask", function () { + var $input = $(this), input = this, nptValue = input._valueGet(); + if (opts.showMaskOnFocus && !$input.hasClass('focus.inputmask') && (!opts.showMaskOnHover || (opts.showMaskOnHover && nptValue == ''))) { + if (input._valueGet() != getActiveBuffer().join('')) { + writeBuffer(input, getActiveBuffer(), seekNext(getActiveMaskSet()["lastValidPosition"])); + } + } + $input.addClass('focus.inputmask'); + valueOnFocus = getActiveBuffer().join(''); + }).bind("mouseleave.inputmask", function () { + var $input = $(this), input = this; + if (opts.clearMaskOnLostFocus) { + if (!$input.hasClass('focus.inputmask') && input._valueGet() != $input.attr("placeholder")) { + if (input._valueGet() == getActiveBufferTemplate().join('') || input._valueGet() == '') + input._valueSet(''); + else { //clearout optional tail of the mask + clearOptionalTail(input); + } + } + } + }).bind("click.inputmask", function () { + var input = this; + setTimeout(function () { + var selectedCaret = caret(input), buffer = getActiveBuffer(); + if (selectedCaret.begin == selectedCaret.end) { + var clickPosition = isRTL ? TranslatePosition(selectedCaret.begin) : selectedCaret.begin, + lvp = getActiveMaskSet()["lastValidPosition"], + lastPosition; + if (opts.isNumeric) { + lastPosition = opts.skipRadixDance === false && opts.radixPoint != "" && $.inArray(opts.radixPoint, buffer) != -1 ? + (opts.numericInput ? seekNext($.inArray(opts.radixPoint, buffer)) : $.inArray(opts.radixPoint, buffer)) : + seekNext(lvp); + } else { + lastPosition = seekNext(lvp); + } + if (clickPosition < lastPosition) { + if (isMask(clickPosition)) + caret(input, clickPosition); + else caret(input, seekNext(clickPosition)); + } else + caret(input, lastPosition); + } + }, 0); + }).bind('dblclick.inputmask', function () { + var input = this; + setTimeout(function () { + caret(input, 0, seekNext(getActiveMaskSet()["lastValidPosition"])); + }, 0); + }).bind(pasteEvent + ".inputmask dragdrop.inputmask drop.inputmask", function (e) { + if (skipInputEvent === true) { + skipInputEvent = false; + return true; + } + var input = this, $input = $(input); + + //paste event for IE8 and lower I guess ;-) + if (e.type == "propertychange" && input._valueGet().length <= getMaskLength()) { + return true; + } + setTimeout(function () { + var pasteValue = opts.onBeforePaste != undefined ? opts.onBeforePaste.call(this, input._valueGet()) : input._valueGet(); + checkVal(input, true, false, pasteValue.split(''), true); + if (isComplete(getActiveBuffer()) === true) + $input.trigger("complete"); + $input.click(); + }, 0); + }).bind('setvalue.inputmask', function () { + var input = this; + checkVal(input, true); + valueOnFocus = getActiveBuffer().join(''); + if (input._valueGet() == getActiveBufferTemplate().join('')) + input._valueSet(''); + }).bind('complete.inputmask', opts.oncomplete + ).bind('incomplete.inputmask', opts.onincomplete + ).bind('cleared.inputmask', opts.oncleared + ).bind("keyup.inputmask", keyupEvent); + + if (androidchrome) { + $el.bind("input.inputmask", inputEvent); + } else { + $el.bind("keydown.inputmask", keydownEvent + ).bind("keypress.inputmask", keypressEvent); + } + + if (msie10) + $el.bind("input.inputmask", inputEvent); + + //apply mask + checkVal(el, true, false); + valueOnFocus = getActiveBuffer().join(''); + // Wrap document.activeElement in a try/catch block since IE9 throw "Unspecified error" if document.activeElement is undefined when we are in an IFrame. + var activeElement; + try { + activeElement = document.activeElement; + } catch (e) { + } + if (activeElement === el) { //position the caret when in focus + $el.addClass('focus.inputmask'); + caret(el, seekNext(getActiveMaskSet()["lastValidPosition"])); + } else if (opts.clearMaskOnLostFocus) { + if (getActiveBuffer().join('') == getActiveBufferTemplate().join('')) { + el._valueSet(''); + } else { + clearOptionalTail(el); + } + } else { + writeBuffer(el, getActiveBuffer()); + } + + installEventRuler(el); + } + } + + //action object + if (actionObj != undefined) { + switch (actionObj["action"]) { + case "isComplete": + return isComplete(actionObj["buffer"]); + case "unmaskedvalue": + isRTL = actionObj["$input"].data('_inputmask')['isRTL']; + return unmaskedvalue(actionObj["$input"], actionObj["skipDatepickerCheck"]); + case "mask": + mask(actionObj["el"]); + break; + case "format": + $el = $({}); + $el.data('_inputmask', { + 'masksets': masksets, + 'activeMasksetIndex': activeMasksetIndex, + 'opts': opts, + 'isRTL': opts.numericInput + }); + if (opts.numericInput) { + opts.isNumeric = opts.numericInput; + isRTL = true; + } + + checkVal($el, false, false, actionObj["value"].split(''), true); + return getActiveBuffer().join(''); + } + } + }; + + $.inputmask = { + //options default + defaults: { + placeholder: "_", + optionalmarker: { start: "[", end: "]" }, + quantifiermarker: { start: "{", end: "}" }, + groupmarker: { start: "(", end: ")" }, + escapeChar: "\\", + mask: null, + oncomplete: $.noop, //executes when the mask is complete + onincomplete: $.noop, //executes when the mask is incomplete and focus is lost + oncleared: $.noop, //executes when the mask is cleared + repeat: 0, //repetitions of the mask: * ~ forever, otherwise specify an integer + greedy: true, //true: allocated buffer for the mask and repetitions - false: allocate only if needed + autoUnmask: false, //automatically unmask when retrieving the value with $.fn.val or value if the browser supports __lookupGetter__ or getOwnPropertyDescriptor + clearMaskOnLostFocus: true, + insertMode: true, //insert the input or overwrite the input + clearIncomplete: false, //clear the incomplete input on blur + aliases: {}, //aliases definitions => see jquery.inputmask.extensions.js + onKeyUp: $.noop, //override to implement autocomplete on certain keys for example + onKeyDown: $.noop, //override to implement autocomplete on certain keys for example + onBeforePaste: undefined, //executes before masking the pasted value to allow preprocessing of the pasted value. args => pastedValue => return processedValue + onUnMask: undefined, //executes after unmasking to allow postprocessing of the unmaskedvalue. args => maskedValue, unmaskedValue + showMaskOnFocus: true, //show the mask-placeholder when the input has focus + showMaskOnHover: true, //show the mask-placeholder when hovering the empty input + onKeyValidation: $.noop, //executes on every key-press with the result of isValid. Params: result, opts + skipOptionalPartCharacter: " ", //a character which can be used to skip an optional part of a mask + showTooltip: false, //show the activemask as tooltip + numericInput: false, //numericInput input direction style (input shifts to the left while holding the caret position) + //numeric basic properties + isNumeric: false, //enable numeric features + radixPoint: "", //".", // | "," + skipRadixDance: false, //disable radixpoint caret positioning + rightAlignNumerics: true, //align numerics to the right + //numeric basic properties + definitions: { + '9': { + validator: "[0-9]", + cardinality: 1 + }, + 'a': { + validator: "[A-Za-z\u0410-\u044F\u0401\u0451]", + cardinality: 1 + }, + '*': { + validator: "[A-Za-z\u0410-\u044F\u0401\u04510-9]", + cardinality: 1 + } + }, + keyCode: { + ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, COMMAND: 91, COMMAND_LEFT: 91, COMMAND_RIGHT: 93, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, MENU: 93, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108, + NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91 + }, + //specify keycodes which should not be considered in the keypress event, otherwise the preventDefault will stop their default behavior especially in FF + ignorables: [8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], + getMaskLength: function (buffer, greedy, repeat, currentBuffer, opts) { + var calculatedLength = buffer.length; + if (!greedy) { + if (repeat == "*") { + calculatedLength = currentBuffer.length + 1; + } else if (repeat > 1) { + calculatedLength += (buffer.length * (repeat - 1)); + } + } + return calculatedLength; + } + }, + escapeRegex: function (str) { + var specials = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\']; + return str.replace(new RegExp('(\\' + specials.join('|\\') + ')', 'gim'), '\\$1'); + }, + format: function (value, options) { + var opts = $.extend(true, {}, $.inputmask.defaults, options); + resolveAlias(opts.alias, options, opts); + return maskScope(generateMaskSets(opts), 0, opts, { "action": "format", "value": value }); + } + }; + + $.fn.inputmask = function (fn, options) { + var opts = $.extend(true, {}, $.inputmask.defaults, options), + masksets, + activeMasksetIndex = 0; + + if (typeof fn === "string") { + switch (fn) { + case "mask": + //resolve possible aliases given by options + resolveAlias(opts.alias, options, opts); + masksets = generateMaskSets(opts); + if (masksets.length == 0) { return this; } + + return this.each(function () { + maskScope($.extend(true, {}, masksets), 0, opts, { "action": "mask", "el": this }); + }); + case "unmaskedvalue": + var $input = $(this), input = this; + if ($input.data('_inputmask')) { + masksets = $input.data('_inputmask')['masksets']; + activeMasksetIndex = $input.data('_inputmask')['activeMasksetIndex']; + opts = $input.data('_inputmask')['opts']; + return maskScope(masksets, activeMasksetIndex, opts, { "action": "unmaskedvalue", "$input": $input }); + } else return $input.val(); + case "remove": + return this.each(function () { + var $input = $(this), input = this; + if ($input.data('_inputmask')) { + masksets = $input.data('_inputmask')['masksets']; + activeMasksetIndex = $input.data('_inputmask')['activeMasksetIndex']; + opts = $input.data('_inputmask')['opts']; + //writeout the unmaskedvalue + input._valueSet(maskScope(masksets, activeMasksetIndex, opts, { "action": "unmaskedvalue", "$input": $input, "skipDatepickerCheck": true })); + //clear data + $input.removeData('_inputmask'); + //unbind all events + $input.unbind(".inputmask"); + $input.removeClass('focus.inputmask'); + //restore the value property + var valueProperty; + if (Object.getOwnPropertyDescriptor) + valueProperty = Object.getOwnPropertyDescriptor(input, "value"); + if (valueProperty && valueProperty.get) { + if (input._valueGet) { + Object.defineProperty(input, "value", { + get: input._valueGet, + set: input._valueSet + }); + } + } else if (document.__lookupGetter__ && input.__lookupGetter__("value")) { + if (input._valueGet) { + input.__defineGetter__("value", input._valueGet); + input.__defineSetter__("value", input._valueSet); + } + } + try { //try catch needed for IE7 as it does not supports deleting fns + delete input._valueGet; + delete input._valueSet; + } catch (e) { + input._valueGet = undefined; + input._valueSet = undefined; + + } + } + }); + break; + case "getemptymask": //return the default (empty) mask value, usefull for setting the default value in validation + if (this.data('_inputmask')) { + masksets = this.data('_inputmask')['masksets']; + activeMasksetIndex = this.data('_inputmask')['activeMasksetIndex']; + return masksets[activeMasksetIndex]['_buffer'].join(''); + } + else return ""; + case "hasMaskedValue": //check wheter the returned value is masked or not; currently only works reliable when using jquery.val fn to retrieve the value + return this.data('_inputmask') ? !this.data('_inputmask')['opts'].autoUnmask : false; + case "isComplete": + masksets = this.data('_inputmask')['masksets']; + activeMasksetIndex = this.data('_inputmask')['activeMasksetIndex']; + opts = this.data('_inputmask')['opts']; + return maskScope(masksets, activeMasksetIndex, opts, { "action": "isComplete", "buffer": this[0]._valueGet().split('') }); + case "getmetadata": //return mask metadata if exists + if (this.data('_inputmask')) { + masksets = this.data('_inputmask')['masksets']; + activeMasksetIndex = this.data('_inputmask')['activeMasksetIndex']; + return masksets[activeMasksetIndex]['metadata']; + } + else return undefined; + default: + //check if the fn is an alias + if (!resolveAlias(fn, options, opts)) { + //maybe fn is a mask so we try + //set mask + opts.mask = fn; + } + masksets = generateMaskSets(opts); + if (masksets.length == 0) { return this; } + return this.each(function () { + maskScope($.extend(true, {}, masksets), activeMasksetIndex, opts, { "action": "mask", "el": this }); + }); + + break; + } + } else if (typeof fn == "object") { + opts = $.extend(true, {}, $.inputmask.defaults, fn); + + resolveAlias(opts.alias, fn, opts); //resolve aliases + masksets = generateMaskSets(opts); + if (masksets.length == 0) { return this; } + return this.each(function () { + maskScope($.extend(true, {}, masksets), activeMasksetIndex, opts, { "action": "mask", "el": this }); + }); + } else if (fn == undefined) { + //look for data-inputmask atribute - the attribute should only contain optipns + return this.each(function () { + var attrOptions = $(this).attr("data-inputmask"); + if (attrOptions && attrOptions != "") { + try { + attrOptions = attrOptions.replace(new RegExp("'", "g"), '"'); + var dataoptions = $.parseJSON("{" + attrOptions + "}"); + $.extend(true, dataoptions, options); + opts = $.extend(true, {}, $.inputmask.defaults, dataoptions); + resolveAlias(opts.alias, dataoptions, opts); + opts.alias = undefined; + $(this).inputmask(opts); + } catch (ex) { } //need a more relax parseJSON + } + }); + } + }; + } +})(jQuery); diff --git a/public/assets/js/plugins/input-mask/jquery.inputmask.numeric.extensions.js b/public/assets/js/plugins/input-mask/jquery.inputmask.numeric.extensions.js new file mode 100755 index 00000000..2efb33f4 --- /dev/null +++ b/public/assets/js/plugins/input-mask/jquery.inputmask.numeric.extensions.js @@ -0,0 +1,177 @@ +/* +Input Mask plugin extensions +http://github.com/RobinHerbots/jquery.inputmask +Copyright (c) 2010 - 2014 Robin Herbots +Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) +Version: 0.0.0 + +Optional extensions on the jquery.inputmask base +*/ +(function ($) { + //number aliases + $.extend($.inputmask.defaults.aliases, { + 'decimal': { + mask: "~", + placeholder: "", + repeat: "*", + greedy: false, + numericInput: false, + isNumeric: true, + digits: "*", //number of fractionalDigits + groupSeparator: "",//",", // | "." + radixPoint: ".", + groupSize: 3, + autoGroup: false, + allowPlus: true, + allowMinus: true, + //todo + integerDigits: "*", //number of integerDigits + defaultValue: "", + prefix: "", + suffix: "", + + //todo + getMaskLength: function (buffer, greedy, repeat, currentBuffer, opts) { //custom getMaskLength to take the groupSeparator into account + var calculatedLength = buffer.length; + + if (!greedy) { + if (repeat == "*") { + calculatedLength = currentBuffer.length + 1; + } else if (repeat > 1) { + calculatedLength += (buffer.length * (repeat - 1)); + } + } + + var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator); + var escapedRadixPoint = $.inputmask.escapeRegex.call(this, opts.radixPoint); + var currentBufferStr = currentBuffer.join(''), strippedBufferStr = currentBufferStr.replace(new RegExp(escapedGroupSeparator, "g"), "").replace(new RegExp(escapedRadixPoint), ""), + groupOffset = currentBufferStr.length - strippedBufferStr.length; + return calculatedLength + groupOffset; + }, + postFormat: function (buffer, pos, reformatOnly, opts) { + if (opts.groupSeparator == "") return pos; + var cbuf = buffer.slice(), + radixPos = $.inArray(opts.radixPoint, buffer); + if (!reformatOnly) { + cbuf.splice(pos, 0, "?"); //set position indicator + } + var bufVal = cbuf.join(''); + if (opts.autoGroup || (reformatOnly && bufVal.indexOf(opts.groupSeparator) != -1)) { + var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator); + bufVal = bufVal.replace(new RegExp(escapedGroupSeparator, "g"), ''); + var radixSplit = bufVal.split(opts.radixPoint); + bufVal = radixSplit[0]; + var reg = new RegExp('([-\+]?[\\d\?]+)([\\d\?]{' + opts.groupSize + '})'); + while (reg.test(bufVal)) { + bufVal = bufVal.replace(reg, '$1' + opts.groupSeparator + '$2'); + bufVal = bufVal.replace(opts.groupSeparator + opts.groupSeparator, opts.groupSeparator); + } + if (radixSplit.length > 1) + bufVal += opts.radixPoint + radixSplit[1]; + } + buffer.length = bufVal.length; //align the length + for (var i = 0, l = bufVal.length; i < l; i++) { + buffer[i] = bufVal.charAt(i); + } + var newPos = $.inArray("?", buffer); + if (!reformatOnly) buffer.splice(newPos, 1); + + return reformatOnly ? pos : newPos; + }, + regex: { + number: function (opts) { + var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator); + var escapedRadixPoint = $.inputmask.escapeRegex.call(this, opts.radixPoint); + var digitExpression = isNaN(opts.digits) ? opts.digits : '{0,' + opts.digits + '}'; + var signedExpression = opts.allowPlus || opts.allowMinus ? "[" + (opts.allowPlus ? "\+" : "") + (opts.allowMinus ? "-" : "") + "]?" : ""; + return new RegExp("^" + signedExpression + "(\\d+|\\d{1," + opts.groupSize + "}((" + escapedGroupSeparator + "\\d{" + opts.groupSize + "})?)+)(" + escapedRadixPoint + "\\d" + digitExpression + ")?$"); + } + }, + onKeyDown: function (e, buffer, opts) { + var $input = $(this), input = this; + if (e.keyCode == opts.keyCode.TAB) { + var radixPosition = $.inArray(opts.radixPoint, buffer); + if (radixPosition != -1) { + var masksets = $input.data('_inputmask')['masksets']; + var activeMasksetIndex = $input.data('_inputmask')['activeMasksetIndex']; + for (var i = 1; i <= opts.digits && i < opts.getMaskLength(masksets[activeMasksetIndex]["_buffer"], masksets[activeMasksetIndex]["greedy"], masksets[activeMasksetIndex]["repeat"], buffer, opts) ; i++) { + if (buffer[radixPosition + i] == undefined || buffer[radixPosition + i] == "") buffer[radixPosition + i] = "0"; + } + input._valueSet(buffer.join('')); + } + } else if (e.keyCode == opts.keyCode.DELETE || e.keyCode == opts.keyCode.BACKSPACE) { + opts.postFormat(buffer, 0, true, opts); + input._valueSet(buffer.join('')); + return true; + } + }, + definitions: { + '~': { //real number + validator: function (chrs, buffer, pos, strict, opts) { + if (chrs == "") return false; + if (!strict && pos <= 1 && buffer[0] === '0' && new RegExp("[\\d-]").test(chrs) && buffer.join('').length == 1) { //handle first char + buffer[0] = ""; + return { "pos": 0 }; + } + + var cbuf = strict ? buffer.slice(0, pos) : buffer.slice(); + + cbuf.splice(pos, 0, chrs); + var bufferStr = cbuf.join(''); + + //strip groupseparator + var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator); + bufferStr = bufferStr.replace(new RegExp(escapedGroupSeparator, "g"), ''); + + var isValid = opts.regex.number(opts).test(bufferStr); + if (!isValid) { + //let's help the regex a bit + bufferStr += "0"; + isValid = opts.regex.number(opts).test(bufferStr); + if (!isValid) { + //make a valid group + var lastGroupSeparator = bufferStr.lastIndexOf(opts.groupSeparator); + for (var i = bufferStr.length - lastGroupSeparator; i <= 3; i++) { + bufferStr += "0"; + } + + isValid = opts.regex.number(opts).test(bufferStr); + if (!isValid && !strict) { + if (chrs == opts.radixPoint) { + isValid = opts.regex.number(opts).test("0" + bufferStr + "0"); + if (isValid) { + buffer[pos] = "0"; + pos++; + return { "pos": pos }; + } + } + } + } + } + + if (isValid != false && !strict && chrs != opts.radixPoint) { + var newPos = opts.postFormat(buffer, pos, false, opts); + return { "pos": newPos }; + } + + return isValid; + }, + cardinality: 1, + prevalidator: null + } + }, + insertMode: true, + autoUnmask: false + }, + 'integer': { + regex: { + number: function (opts) { + var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator); + var signedExpression = opts.allowPlus || opts.allowMinus ? "[" + (opts.allowPlus ? "\+" : "") + (opts.allowMinus ? "-" : "") + "]?" : ""; + return new RegExp("^" + signedExpression + "(\\d+|\\d{1," + opts.groupSize + "}((" + escapedGroupSeparator + "\\d{" + opts.groupSize + "})?)+)$"); + } + }, + alias: "decimal" + } + }); +})(jQuery); diff --git a/public/assets/js/plugins/input-mask/jquery.inputmask.phone.extensions.js b/public/assets/js/plugins/input-mask/jquery.inputmask.phone.extensions.js new file mode 100755 index 00000000..554d4ef1 --- /dev/null +++ b/public/assets/js/plugins/input-mask/jquery.inputmask.phone.extensions.js @@ -0,0 +1,50 @@ +/* +Input Mask plugin extensions +http://github.com/RobinHerbots/jquery.inputmask +Copyright (c) 2010 - 2014 Robin Herbots +Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) +Version: 0.0.0 + +Phone extension. +When using this extension make sure you specify the correct url to get the masks + + $(selector).inputmask("phone", { + url: "Scripts/jquery.inputmask/phone-codes/phone-codes.json", + onKeyValidation: function () { //show some metadata in the console + console.log($(this).inputmask("getmetadata")["name_en"]); + } + }); + + +*/ +(function ($) { + $.extend($.inputmask.defaults.aliases, { + 'phone': { + url: "phone-codes/phone-codes.json", + mask: function (opts) { + opts.definitions = { + 'p': { + validator: function () { return false; }, + cardinality: 1 + }, + '#': { + validator: "[0-9]", + cardinality: 1 + } + }; + var maskList = []; + $.ajax({ + url: opts.url, + async: false, + dataType: 'json', + success: function (response) { + maskList = response; + } + }); + + maskList.splice(0, 0, "+p(ppp)ppp-pppp"); + return maskList; + } + } + }); +})(jQuery); diff --git a/public/assets/js/plugins/input-mask/jquery.inputmask.regex.extensions.js b/public/assets/js/plugins/input-mask/jquery.inputmask.regex.extensions.js new file mode 100755 index 00000000..c5bc30f3 --- /dev/null +++ b/public/assets/js/plugins/input-mask/jquery.inputmask.regex.extensions.js @@ -0,0 +1,170 @@ +/* +Input Mask plugin extensions +http://github.com/RobinHerbots/jquery.inputmask +Copyright (c) 2010 - 2014 Robin Herbots +Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) +Version: 0.0.0 + +Regex extensions on the jquery.inputmask base +Allows for using regular expressions as a mask +*/ +(function ($) { + $.extend($.inputmask.defaults.aliases, { // $(selector).inputmask("Regex", { regex: "[0-9]*"} + 'Regex': { + mask: "r", + greedy: false, + repeat: "*", + regex: null, + regexTokens: null, + //Thx to https://github.com/slevithan/regex-colorizer for the tokenizer regex + tokenizer: /\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g, + quantifierFilter: /[0-9]+[^,]/, + definitions: { + 'r': { + validator: function (chrs, buffer, pos, strict, opts) { + function regexToken() { + this.matches = []; + this.isGroup = false; + this.isQuantifier = false; + this.isLiteral = false; + } + function analyseRegex() { + var currentToken = new regexToken(), match, m, opengroups = []; + + opts.regexTokens = []; + + // The tokenizer regex does most of the tokenization grunt work + while (match = opts.tokenizer.exec(opts.regex)) { + m = match[0]; + switch (m.charAt(0)) { + case "[": // Character class + case "\\": // Escape or backreference + if (opengroups.length > 0) { + opengroups[opengroups.length - 1]["matches"].push(m); + } else { + currentToken.matches.push(m); + } + break; + case "(": // Group opening + if (!currentToken.isGroup && currentToken.matches.length > 0) + opts.regexTokens.push(currentToken); + currentToken = new regexToken(); + currentToken.isGroup = true; + opengroups.push(currentToken); + break; + case ")": // Group closing + var groupToken = opengroups.pop(); + if (opengroups.length > 0) { + opengroups[opengroups.length - 1]["matches"].push(groupToken); + } else { + opts.regexTokens.push(groupToken); + currentToken = new regexToken(); + } + break; + case "{": //Quantifier + var quantifier = new regexToken(); + quantifier.isQuantifier = true; + quantifier.matches.push(m); + if (opengroups.length > 0) { + opengroups[opengroups.length - 1]["matches"].push(quantifier); + } else { + currentToken.matches.push(quantifier); + } + break; + default: + // Vertical bar (alternator) + // ^ or $ anchor + // Dot (.) + // Literal character sequence + var literal = new regexToken(); + literal.isLiteral = true; + literal.matches.push(m); + if (opengroups.length > 0) { + opengroups[opengroups.length - 1]["matches"].push(literal); + } else { + currentToken.matches.push(literal); + } + } + } + + if (currentToken.matches.length > 0) + opts.regexTokens.push(currentToken); + }; + + function validateRegexToken(token, fromGroup) { + var isvalid = false; + if (fromGroup) { + regexPart += "("; + openGroupCount++; + } + for (var mndx = 0; mndx < token["matches"].length; mndx++) { + var matchToken = token["matches"][mndx]; + if (matchToken["isGroup"] == true) { + isvalid = validateRegexToken(matchToken, true); + } else if (matchToken["isQuantifier"] == true) { + matchToken = matchToken["matches"][0]; + var quantifierMax = opts.quantifierFilter.exec(matchToken)[0].replace("}", ""); + var testExp = regexPart + "{1," + quantifierMax + "}"; //relax quantifier validation + for (var j = 0; j < openGroupCount; j++) { + testExp += ")"; + } + var exp = new RegExp("^(" + testExp + ")$"); + isvalid = exp.test(bufferStr); + regexPart += matchToken; + } else if (matchToken["isLiteral"] == true) { + matchToken = matchToken["matches"][0]; + var testExp = regexPart, openGroupCloser = ""; + for (var j = 0; j < openGroupCount; j++) { + openGroupCloser += ")"; + } + for (var k = 0; k < matchToken.length; k++) { //relax literal validation + testExp = (testExp + matchToken[k]).replace(/\|$/, ""); + var exp = new RegExp("^(" + testExp + openGroupCloser + ")$"); + isvalid = exp.test(bufferStr); + if (isvalid) break; + } + regexPart += matchToken; + //console.log(bufferStr + " " + exp + " " + isvalid); + } else { + regexPart += matchToken; + var testExp = regexPart.replace(/\|$/, ""); + for (var j = 0; j < openGroupCount; j++) { + testExp += ")"; + } + var exp = new RegExp("^(" + testExp + ")$"); + isvalid = exp.test(bufferStr); + //console.log(bufferStr + " " + exp + " " + isvalid); + } + if (isvalid) break; + } + + if (fromGroup) { + regexPart += ")"; + openGroupCount--; + } + + return isvalid; + } + + + if (opts.regexTokens == null) { + analyseRegex(); + } + + var cbuffer = buffer.slice(), regexPart = "", isValid = false, openGroupCount = 0; + cbuffer.splice(pos, 0, chrs); + var bufferStr = cbuffer.join(''); + for (var i = 0; i < opts.regexTokens.length; i++) { + var regexToken = opts.regexTokens[i]; + isValid = validateRegexToken(regexToken, regexToken["isGroup"]); + if (isValid) break; + } + + return isValid; + }, + cardinality: 1 + } + } + } + }); +})(jQuery); diff --git a/public/assets/js/plugins/input-mask/phone-codes/phone-be.json b/public/assets/js/plugins/input-mask/phone-codes/phone-be.json new file mode 100755 index 00000000..b510b784 --- /dev/null +++ b/public/assets/js/plugins/input-mask/phone-codes/phone-be.json @@ -0,0 +1,45 @@ +[ + { "mask": "+32(53)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Aalst (Alost)" }, + { "mask": "+32(3)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Antwerpen (Anvers)" }, + { "mask": "+32(63)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Arlon" }, + { "mask": "+32(67)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ath" }, + { "mask": "+32(50)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Brugge (Bruges)" }, + { "mask": "+32(2)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Brussel/Bruxelles (Brussels)" }, + { "mask": "+32(71)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Charleroi" }, + { "mask": "+32(60)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Chimay" }, + { "mask": "+32(83)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ciney" }, + { "mask": "+32(52)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Dendermonde" }, + { "mask": "+32(13)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Diest" }, + { "mask": "+32(82)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Dinant" }, + { "mask": "+32(86)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Durbuy" }, + { "mask": "+32(89)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Genk" }, + { "mask": "+32(9)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Gent (Gand)" }, + { "mask": "+32(11)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Hasselt" }, + { "mask": "+32(14)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Herentals" }, + { "mask": "+32(85)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Huy (Hoei)" }, + { "mask": "+32(64)##-##-##", "cc": "BE", "cd": "Belgium", "city": "La Louvière" }, + { "mask": "+32(16)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Leuven (Louvain)" }, + { "mask": "+32(61)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Libramont" }, + { "mask": "+32(4)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Liège (Luik)" }, + { "mask": "+32(15)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mechelen (Malines)" }, + { "mask": "+32(47#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones" }, + { "mask": "+32(48#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones" }, + { "mask": "+32(49#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones" }, + { "mask": "+32(65)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mons (Bergen)" }, + { "mask": "+32(81)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Namur (Namen)" }, + { "mask": "+32(58)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Nieuwpoort (Nieuport)" }, + { "mask": "+32(54)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ninove" }, + { "mask": "+32(67)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Nivelles (Nijvel)" }, + { "mask": "+32(59)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Oostende (Ostende)" }, + { "mask": "+32(51)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Roeselare (Roulers)" }, + { "mask": "+32(55)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ronse" }, + { "mask": "+32(80)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Stavelot" }, + { "mask": "+32(12)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Tongeren (Tongres)" }, + { "mask": "+32(69)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Tounai" }, + { "mask": "+32(14)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Turnhout" }, + { "mask": "+32(87)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Verviers" }, + { "mask": "+32(58)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Veurne" }, + { "mask": "+32(19)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Wareme" }, + { "mask": "+32(10)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Wavre (Waver)" }, + { "mask": "+32(50)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Zeebrugge" } +] \ No newline at end of file diff --git a/public/assets/js/plugins/input-mask/phone-codes/phone-codes.json b/public/assets/js/plugins/input-mask/phone-codes/phone-codes.json new file mode 100755 index 00000000..15bbd3a9 --- /dev/null +++ b/public/assets/js/plugins/input-mask/phone-codes/phone-codes.json @@ -0,0 +1,294 @@ +[ + { "mask": "+247-####", "cc": "AC", "name_en": "Ascension", "desc_en": "", "name_ru": "Остров Вознесения", "desc_ru": "" }, + { "mask": "+376-###-###", "cc": "AD", "name_en": "Andorra", "desc_en": "", "name_ru": "Андорра", "desc_ru": "" }, + { "mask": "+971-5#-###-####", "cc": "AE", "name_en": "United Arab Emirates", "desc_en": "mobile", "name_ru": "Объединенные Арабские Эмираты", "desc_ru": "мобильные" }, + { "mask": "+971-#-###-####", "cc": "AE", "name_en": "United Arab Emirates", "desc_en": "", "name_ru": "Объединенные Арабские Эмираты", "desc_ru": "" }, + { "mask": "+93-##-###-####", "cc": "AF", "name_en": "Afghanistan", "desc_en": "", "name_ru": "Афганистан", "desc_ru": "" }, + { "mask": "+1(268)###-####", "cc": "AG", "name_en": "Antigua & Barbuda", "desc_en": "", "name_ru": "Антигуа и Барбуда", "desc_ru": "" }, + { "mask": "+1(264)###-####", "cc": "AI", "name_en": "Anguilla", "desc_en": "", "name_ru": "Ангилья", "desc_ru": "" }, + { "mask": "+355(###)###-###", "cc": "AL", "name_en": "Albania", "desc_en": "", "name_ru": "Албания", "desc_ru": "" }, + { "mask": "+374-##-###-###", "cc": "AM", "name_en": "Armenia", "desc_en": "", "name_ru": "Армения", "desc_ru": "" }, + { "mask": "+599-###-####", "cc": "AN", "name_en": "Caribbean Netherlands", "desc_en": "", "name_ru": "Карибские Нидерланды", "desc_ru": "" }, + { "mask": "+599-###-####", "cc": "AN", "name_en": "Netherlands Antilles", "desc_en": "", "name_ru": "Нидерландские Антильские острова", "desc_ru": "" }, + { "mask": "+599-9###-####", "cc": "AN", "name_en": "Netherlands Antilles", "desc_en": "Curacao", "name_ru": "Нидерландские Антильские острова", "desc_ru": "Кюрасао" }, + { "mask": "+244(###)###-###", "cc": "AO", "name_en": "Angola", "desc_en": "", "name_ru": "Ангола", "desc_ru": "" }, + { "mask": "+672-1##-###", "cc": "AQ", "name_en": "Australian bases in Antarctica", "desc_en": "", "name_ru": "Австралийская антарктическая база", "desc_ru": "" }, + { "mask": "+54(###)###-####", "cc": "AR", "name_en": "Argentina", "desc_en": "", "name_ru": "Аргентина", "desc_ru": "" }, + { "mask": "+1(684)###-####", "cc": "AS", "name_en": "American Samoa", "desc_en": "", "name_ru": "Американское Самоа", "desc_ru": "" }, + { "mask": "+43(###)###-####", "cc": "AT", "name_en": "Austria", "desc_en": "", "name_ru": "Австрия", "desc_ru": "" }, + { "mask": "+61-#-####-####", "cc": "AU", "name_en": "Australia", "desc_en": "", "name_ru": "Австралия", "desc_ru": "" }, + { "mask": "+297-###-####", "cc": "AW", "name_en": "Aruba", "desc_en": "", "name_ru": "Аруба", "desc_ru": "" }, + { "mask": "+994-##-###-##-##", "cc": "AZ", "name_en": "Azerbaijan", "desc_en": "", "name_ru": "Азербайджан", "desc_ru": "" }, + { "mask": "+387-##-#####", "cc": "BA", "name_en": "Bosnia and Herzegovina", "desc_en": "", "name_ru": "Босния и Герцеговина", "desc_ru": "" }, + { "mask": "+387-##-####", "cc": "BA", "name_en": "Bosnia and Herzegovina", "desc_en": "", "name_ru": "Босния и Герцеговина", "desc_ru": "" }, + { "mask": "+1(246)###-####", "cc": "BB", "name_en": "Barbados", "desc_en": "", "name_ru": "Барбадос", "desc_ru": "" }, + { "mask": "+880-##-###-###", "cc": "BD", "name_en": "Bangladesh", "desc_en": "", "name_ru": "Бангладеш", "desc_ru": "" }, + { "mask": "+32(###)###-###", "cc": "BE", "name_en": "Belgium", "desc_en": "", "name_ru": "Бельгия", "desc_ru": "" }, + { "mask": "+226-##-##-####", "cc": "BF", "name_en": "Burkina Faso", "desc_en": "", "name_ru": "Буркина Фасо", "desc_ru": "" }, + { "mask": "+359(###)###-###", "cc": "BG", "name_en": "Bulgaria", "desc_en": "", "name_ru": "Болгария", "desc_ru": "" }, + { "mask": "+973-####-####", "cc": "BH", "name_en": "Bahrain", "desc_en": "", "name_ru": "Бахрейн", "desc_ru": "" }, + { "mask": "+257-##-##-####", "cc": "BI", "name_en": "Burundi", "desc_en": "", "name_ru": "Бурунди", "desc_ru": "" }, + { "mask": "+229-##-##-####", "cc": "BJ", "name_en": "Benin", "desc_en": "", "name_ru": "Бенин", "desc_ru": "" }, + { "mask": "+1(441)###-####", "cc": "BM", "name_en": "Bermuda", "desc_en": "", "name_ru": "Бермудские острова", "desc_ru": "" }, + { "mask": "+673-###-####", "cc": "BN", "name_en": "Brunei Darussalam", "desc_en": "", "name_ru": "Бруней-Даруссалам", "desc_ru": "" }, + { "mask": "+591-#-###-####", "cc": "BO", "name_en": "Bolivia", "desc_en": "", "name_ru": "Боливия", "desc_ru": "" }, + { "mask": "+55-##-####[#]-####", "cc": "BR", "name_en": "Brazil", "desc_en": "", "name_ru": "Бразилия", "desc_ru": "" }, + { "mask": "+1(242)###-####", "cc": "BS", "name_en": "Bahamas", "desc_en": "", "name_ru": "Багамские Острова", "desc_ru": "" }, + { "mask": "+975-17-###-###", "cc": "BT", "name_en": "Bhutan", "desc_en": "", "name_ru": "Бутан", "desc_ru": "" }, + { "mask": "+975-#-###-###", "cc": "BT", "name_en": "Bhutan", "desc_en": "", "name_ru": "Бутан", "desc_ru": "" }, + { "mask": "+267-##-###-###", "cc": "BW", "name_en": "Botswana", "desc_en": "", "name_ru": "Ботсвана", "desc_ru": "" }, + { "mask": "+375(##)###-##-##", "cc": "BY", "name_en": "Belarus", "desc_en": "", "name_ru": "Беларусь (Белоруссия)", "desc_ru": "" }, + { "mask": "+501-###-####", "cc": "BZ", "name_en": "Belize", "desc_en": "", "name_ru": "Белиз", "desc_ru": "" }, + { "mask": "+243(###)###-###", "cc": "CD", "name_en": "Dem. Rep. Congo", "desc_en": "", "name_ru": "Дем. Респ. Конго (Киншаса)", "desc_ru": "" }, + { "mask": "+236-##-##-####", "cc": "CF", "name_en": "Central African Republic", "desc_en": "", "name_ru": "Центральноафриканская Республика", "desc_ru": "" }, + { "mask": "+242-##-###-####", "cc": "CG", "name_en": "Congo (Brazzaville)", "desc_en": "", "name_ru": "Конго (Браззавиль)", "desc_ru": "" }, + { "mask": "+41-##-###-####", "cc": "CH", "name_en": "Switzerland", "desc_en": "", "name_ru": "Швейцария", "desc_ru": "" }, + { "mask": "+225-##-###-###", "cc": "CI", "name_en": "Cote d’Ivoire (Ivory Coast)", "desc_en": "", "name_ru": "Кот-д’Ивуар", "desc_ru": "" }, + { "mask": "+682-##-###", "cc": "CK", "name_en": "Cook Islands", "desc_en": "", "name_ru": "Острова Кука", "desc_ru": "" }, + { "mask": "+56-#-####-####", "cc": "CL", "name_en": "Chile", "desc_en": "", "name_ru": "Чили", "desc_ru": "" }, + { "mask": "+237-####-####", "cc": "CM", "name_en": "Cameroon", "desc_en": "", "name_ru": "Камерун", "desc_ru": "" }, + { "mask": "+86(###)####-####", "cc": "CN", "name_en": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" }, + { "mask": "+86(###)####-###", "cc": "CN", "name_en": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" }, + { "mask": "+86-##-#####-#####", "cc": "CN", "name_en": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" }, + { "mask": "+57(###)###-####", "cc": "CO", "name_en": "Colombia", "desc_en": "", "name_ru": "Колумбия", "desc_ru": "" }, + { "mask": "+506-####-####", "cc": "CR", "name_en": "Costa Rica", "desc_en": "", "name_ru": "Коста-Рика", "desc_ru": "" }, + { "mask": "+53-#-###-####", "cc": "CU", "name_en": "Cuba", "desc_en": "", "name_ru": "Куба", "desc_ru": "" }, + { "mask": "+238(###)##-##", "cc": "CV", "name_en": "Cape Verde", "desc_en": "", "name_ru": "Кабо-Верде", "desc_ru": "" }, + { "mask": "+599-###-####", "cc": "CW", "name_en": "Curacao", "desc_en": "", "name_ru": "Кюрасао", "desc_ru": "" }, + { "mask": "+357-##-###-###", "cc": "CY", "name_en": "Cyprus", "desc_en": "", "name_ru": "Кипр", "desc_ru": "" }, + { "mask": "+420(###)###-###", "cc": "CZ", "name_en": "Czech Republic", "desc_en": "", "name_ru": "Чехия", "desc_ru": "" }, + { "mask": "+49(####)###-####", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, + { "mask": "+49(###)###-####", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, + { "mask": "+49(###)##-####", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, + { "mask": "+49(###)##-###", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, + { "mask": "+49(###)##-##", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, + { "mask": "+49-###-###", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, + { "mask": "+253-##-##-##-##", "cc": "DJ", "name_en": "Djibouti", "desc_en": "", "name_ru": "Джибути", "desc_ru": "" }, + { "mask": "+45-##-##-##-##", "cc": "DK", "name_en": "Denmark", "desc_en": "", "name_ru": "Дания", "desc_ru": "" }, + { "mask": "+1(767)###-####", "cc": "DM", "name_en": "Dominica", "desc_en": "", "name_ru": "Доминика", "desc_ru": "" }, + { "mask": "+1(809)###-####", "cc": "DO", "name_en": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" }, + { "mask": "+1(829)###-####", "cc": "DO", "name_en": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" }, + { "mask": "+1(849)###-####", "cc": "DO", "name_en": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" }, + { "mask": "+213-##-###-####", "cc": "DZ", "name_en": "Algeria", "desc_en": "", "name_ru": "Алжир", "desc_ru": "" }, + { "mask": "+593-##-###-####", "cc": "EC", "name_en": "Ecuador ", "desc_en": "mobile", "name_ru": "Эквадор ", "desc_ru": "мобильные" }, + { "mask": "+593-#-###-####", "cc": "EC", "name_en": "Ecuador", "desc_en": "", "name_ru": "Эквадор", "desc_ru": "" }, + { "mask": "+372-####-####", "cc": "EE", "name_en": "Estonia ", "desc_en": "mobile", "name_ru": "Эстония ", "desc_ru": "мобильные" }, + { "mask": "+372-###-####", "cc": "EE", "name_en": "Estonia", "desc_en": "", "name_ru": "Эстония", "desc_ru": "" }, + { "mask": "+20(###)###-####", "cc": "EG", "name_en": "Egypt", "desc_en": "", "name_ru": "Египет", "desc_ru": "" }, + { "mask": "+291-#-###-###", "cc": "ER", "name_en": "Eritrea", "desc_en": "", "name_ru": "Эритрея", "desc_ru": "" }, + { "mask": "+34(###)###-###", "cc": "ES", "name_en": "Spain", "desc_en": "", "name_ru": "Испания", "desc_ru": "" }, + { "mask": "+251-##-###-####", "cc": "ET", "name_en": "Ethiopia", "desc_en": "", "name_ru": "Эфиопия", "desc_ru": "" }, + { "mask": "+358(###)###-##-##", "cc": "FI", "name_en": "Finland", "desc_en": "", "name_ru": "Финляндия", "desc_ru": "" }, + { "mask": "+679-##-#####", "cc": "FJ", "name_en": "Fiji", "desc_en": "", "name_ru": "Фиджи", "desc_ru": "" }, + { "mask": "+500-#####", "cc": "FK", "name_en": "Falkland Islands", "desc_en": "", "name_ru": "Фолклендские острова", "desc_ru": "" }, + { "mask": "+691-###-####", "cc": "FM", "name_en": "F.S. Micronesia", "desc_en": "", "name_ru": "Ф.Ш. Микронезии", "desc_ru": "" }, + { "mask": "+298-###-###", "cc": "FO", "name_en": "Faroe Islands", "desc_en": "", "name_ru": "Фарерские острова", "desc_ru": "" }, + { "mask": "+262-#####-####", "cc": "FR", "name_en": "Mayotte", "desc_en": "", "name_ru": "Майотта", "desc_ru": "" }, + { "mask": "+33(###)###-###", "cc": "FR", "name_en": "France", "desc_en": "", "name_ru": "Франция", "desc_ru": "" }, + { "mask": "+508-##-####", "cc": "FR", "name_en": "St Pierre & Miquelon", "desc_en": "", "name_ru": "Сен-Пьер и Микелон", "desc_ru": "" }, + { "mask": "+590(###)###-###", "cc": "FR", "name_en": "Guadeloupe", "desc_en": "", "name_ru": "Гваделупа", "desc_ru": "" }, + { "mask": "+241-#-##-##-##", "cc": "GA", "name_en": "Gabon", "desc_en": "", "name_ru": "Габон", "desc_ru": "" }, + { "mask": "+1(473)###-####", "cc": "GD", "name_en": "Grenada", "desc_en": "", "name_ru": "Гренада", "desc_ru": "" }, + { "mask": "+995(###)###-###", "cc": "GE", "name_en": "Rep. of Georgia", "desc_en": "", "name_ru": "Грузия", "desc_ru": "" }, + { "mask": "+594-#####-####", "cc": "GF", "name_en": "Guiana (French)", "desc_en": "", "name_ru": "Фр. Гвиана", "desc_ru": "" }, + { "mask": "+233(###)###-###", "cc": "GH", "name_en": "Ghana", "desc_en": "", "name_ru": "Гана", "desc_ru": "" }, + { "mask": "+350-###-#####", "cc": "GI", "name_en": "Gibraltar", "desc_en": "", "name_ru": "Гибралтар", "desc_ru": "" }, + { "mask": "+299-##-##-##", "cc": "GL", "name_en": "Greenland", "desc_en": "", "name_ru": "Гренландия", "desc_ru": "" }, + { "mask": "+220(###)##-##", "cc": "GM", "name_en": "Gambia", "desc_en": "", "name_ru": "Гамбия", "desc_ru": "" }, + { "mask": "+224-##-###-###", "cc": "GN", "name_en": "Guinea", "desc_en": "", "name_ru": "Гвинея", "desc_ru": "" }, + { "mask": "+240-##-###-####", "cc": "GQ", "name_en": "Equatorial Guinea", "desc_en": "", "name_ru": "Экваториальная Гвинея", "desc_ru": "" }, + { "mask": "+30(###)###-####", "cc": "GR", "name_en": "Greece", "desc_en": "", "name_ru": "Греция", "desc_ru": "" }, + { "mask": "+502-#-###-####", "cc": "GT", "name_en": "Guatemala", "desc_en": "", "name_ru": "Гватемала", "desc_ru": "" }, + { "mask": "+1(671)###-####", "cc": "GU", "name_en": "Guam", "desc_en": "", "name_ru": "Гуам", "desc_ru": "" }, + { "mask": "+245-#-######", "cc": "GW", "name_en": "Guinea-Bissau", "desc_en": "", "name_ru": "Гвинея-Бисау", "desc_ru": "" }, + { "mask": "+592-###-####", "cc": "GY", "name_en": "Guyana", "desc_en": "", "name_ru": "Гайана", "desc_ru": "" }, + { "mask": "+852-####-####", "cc": "HK", "name_en": "Hong Kong", "desc_en": "", "name_ru": "Гонконг", "desc_ru": "" }, + { "mask": "+504-####-####", "cc": "HN", "name_en": "Honduras", "desc_en": "", "name_ru": "Гондурас", "desc_ru": "" }, + { "mask": "+385-##-###-###", "cc": "HR", "name_en": "Croatia", "desc_en": "", "name_ru": "Хорватия", "desc_ru": "" }, + { "mask": "+509-##-##-####", "cc": "HT", "name_en": "Haiti", "desc_en": "", "name_ru": "Гаити", "desc_ru": "" }, + { "mask": "+36(###)###-###", "cc": "HU", "name_en": "Hungary", "desc_en": "", "name_ru": "Венгрия", "desc_ru": "" }, + { "mask": "+62(8##)###-####", "cc": "ID", "name_en": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" }, + { "mask": "+62-##-###-##", "cc": "ID", "name_en": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" }, + { "mask": "+62-##-###-###", "cc": "ID", "name_en": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" }, + { "mask": "+62-##-###-####", "cc": "ID", "name_en": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" }, + { "mask": "+62(8##)###-###", "cc": "ID", "name_en": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" }, + { "mask": "+62(8##)###-##-###", "cc": "ID", "name_en": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" }, + { "mask": "+353(###)###-###", "cc": "IE", "name_en": "Ireland", "desc_en": "", "name_ru": "Ирландия", "desc_ru": "" }, + { "mask": "+972-5#-###-####", "cc": "IL", "name_en": "Israel ", "desc_en": "mobile", "name_ru": "Израиль ", "desc_ru": "мобильные" }, + { "mask": "+972-#-###-####", "cc": "IL", "name_en": "Israel", "desc_en": "", "name_ru": "Израиль", "desc_ru": "" }, + { "mask": "+91(####)###-###", "cc": "IN", "name_en": "India", "desc_en": "", "name_ru": "Индия", "desc_ru": "" }, + { "mask": "+246-###-####", "cc": "IO", "name_en": "Diego Garcia", "desc_en": "", "name_ru": "Диего-Гарсия", "desc_ru": "" }, + { "mask": "+964(###)###-####", "cc": "IQ", "name_en": "Iraq", "desc_en": "", "name_ru": "Ирак", "desc_ru": "" }, + { "mask": "+98(###)###-####", "cc": "IR", "name_en": "Iran", "desc_en": "", "name_ru": "Иран", "desc_ru": "" }, + { "mask": "+354-###-####", "cc": "IS", "name_en": "Iceland", "desc_en": "", "name_ru": "Исландия", "desc_ru": "" }, + { "mask": "+39(###)####-###", "cc": "IT", "name_en": "Italy", "desc_en": "", "name_ru": "Италия", "desc_ru": "" }, + { "mask": "+1(876)###-####", "cc": "JM", "name_en": "Jamaica", "desc_en": "", "name_ru": "Ямайка", "desc_ru": "" }, + { "mask": "+962-#-####-####", "cc": "JO", "name_en": "Jordan", "desc_en": "", "name_ru": "Иордания", "desc_ru": "" }, + { "mask": "+81-##-####-####", "cc": "JP", "name_en": "Japan ", "desc_en": "mobile", "name_ru": "Япония ", "desc_ru": "мобильные" }, + { "mask": "+81(###)###-###", "cc": "JP", "name_en": "Japan", "desc_en": "", "name_ru": "Япония", "desc_ru": "" }, + { "mask": "+254-###-######", "cc": "KE", "name_en": "Kenya", "desc_en": "", "name_ru": "Кения", "desc_ru": "" }, + { "mask": "+996(###)###-###", "cc": "KG", "name_en": "Kyrgyzstan", "desc_en": "", "name_ru": "Киргизия", "desc_ru": "" }, + { "mask": "+855-##-###-###", "cc": "KH", "name_en": "Cambodia", "desc_en": "", "name_ru": "Камбоджа", "desc_ru": "" }, + { "mask": "+686-##-###", "cc": "KI", "name_en": "Kiribati", "desc_en": "", "name_ru": "Кирибати", "desc_ru": "" }, + { "mask": "+269-##-#####", "cc": "KM", "name_en": "Comoros", "desc_en": "", "name_ru": "Коморы", "desc_ru": "" }, + { "mask": "+1(869)###-####", "cc": "KN", "name_en": "Saint Kitts & Nevis", "desc_en": "", "name_ru": "Сент-Китс и Невис", "desc_ru": "" }, + { "mask": "+850-191-###-####", "cc": "KP", "name_en": "DPR Korea (North) ", "desc_en": "mobile", "name_ru": "Корейская НДР ", "desc_ru": "мобильные" }, + { "mask": "+850-##-###-###", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" }, + { "mask": "+850-###-####-###", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" }, + { "mask": "+850-###-###", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" }, + { "mask": "+850-####-####", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" }, + { "mask": "+850-####-#############", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" }, + { "mask": "+82-##-###-####", "cc": "KR", "name_en": "Korea (South)", "desc_en": "", "name_ru": "Респ. Корея", "desc_ru": "" }, + { "mask": "+965-####-####", "cc": "KW", "name_en": "Kuwait", "desc_en": "", "name_ru": "Кувейт", "desc_ru": "" }, + { "mask": "+1(345)###-####", "cc": "KY", "name_en": "Cayman Islands", "desc_en": "", "name_ru": "Каймановы острова", "desc_ru": "" }, + { "mask": "+7(6##)###-##-##", "cc": "KZ", "name_en": "Kazakhstan", "desc_en": "", "name_ru": "Казахстан", "desc_ru": "" }, + { "mask": "+7(7##)###-##-##", "cc": "KZ", "name_en": "Kazakhstan", "desc_en": "", "name_ru": "Казахстан", "desc_ru": "" }, + { "mask": "+856(20##)###-###", "cc": "LA", "name_en": "Laos ", "desc_en": "mobile", "name_ru": "Лаос ", "desc_ru": "мобильные" }, + { "mask": "+856-##-###-###", "cc": "LA", "name_en": "Laos", "desc_en": "", "name_ru": "Лаос", "desc_ru": "" }, + { "mask": "+961-##-###-###", "cc": "LB", "name_en": "Lebanon ", "desc_en": "mobile", "name_ru": "Ливан ", "desc_ru": "мобильные" }, + { "mask": "+961-#-###-###", "cc": "LB", "name_en": "Lebanon", "desc_en": "", "name_ru": "Ливан", "desc_ru": "" }, + { "mask": "+1(758)###-####", "cc": "LC", "name_en": "Saint Lucia", "desc_en": "", "name_ru": "Сент-Люсия", "desc_ru": "" }, + { "mask": "+423(###)###-####", "cc": "LI", "name_en": "Liechtenstein", "desc_en": "", "name_ru": "Лихтенштейн", "desc_ru": "" }, + { "mask": "+94-##-###-####", "cc": "LK", "name_en": "Sri Lanka", "desc_en": "", "name_ru": "Шри-Ланка", "desc_ru": "" }, + { "mask": "+231-##-###-###", "cc": "LR", "name_en": "Liberia", "desc_en": "", "name_ru": "Либерия", "desc_ru": "" }, + { "mask": "+266-#-###-####", "cc": "LS", "name_en": "Lesotho", "desc_en": "", "name_ru": "Лесото", "desc_ru": "" }, + { "mask": "+370(###)##-###", "cc": "LT", "name_en": "Lithuania", "desc_en": "", "name_ru": "Литва", "desc_ru": "" }, + { "mask": "+352(###)###-###", "cc": "LU", "name_en": "Luxembourg", "desc_en": "", "name_ru": "Люксембург", "desc_ru": "" }, + { "mask": "+371-##-###-###", "cc": "LV", "name_en": "Latvia", "desc_en": "", "name_ru": "Латвия", "desc_ru": "" }, + { "mask": "+218-##-###-###", "cc": "LY", "name_en": "Libya", "desc_en": "", "name_ru": "Ливия", "desc_ru": "" }, + { "mask": "+218-21-###-####", "cc": "LY", "name_en": "Libya", "desc_en": "Tripoli", "name_ru": "Ливия", "desc_ru": "Триполи" }, + { "mask": "+212-##-####-###", "cc": "MA", "name_en": "Morocco", "desc_en": "", "name_ru": "Марокко", "desc_ru": "" }, + { "mask": "+377(###)###-###", "cc": "MC", "name_en": "Monaco", "desc_en": "", "name_ru": "Монако", "desc_ru": "" }, + { "mask": "+377-##-###-###", "cc": "MC", "name_en": "Monaco", "desc_en": "", "name_ru": "Монако", "desc_ru": "" }, + { "mask": "+373-####-####", "cc": "MD", "name_en": "Moldova", "desc_en": "", "name_ru": "Молдова", "desc_ru": "" }, + { "mask": "+382-##-###-###", "cc": "ME", "name_en": "Montenegro", "desc_en": "", "name_ru": "Черногория", "desc_ru": "" }, + { "mask": "+261-##-##-#####", "cc": "MG", "name_en": "Madagascar", "desc_en": "", "name_ru": "Мадагаскар", "desc_ru": "" }, + { "mask": "+692-###-####", "cc": "MH", "name_en": "Marshall Islands", "desc_en": "", "name_ru": "Маршалловы Острова", "desc_ru": "" }, + { "mask": "+389-##-###-###", "cc": "MK", "name_en": "Republic of Macedonia", "desc_en": "", "name_ru": "Респ. Македония", "desc_ru": "" }, + { "mask": "+223-##-##-####", "cc": "ML", "name_en": "Mali", "desc_en": "", "name_ru": "Мали", "desc_ru": "" }, + { "mask": "+95-##-###-###", "cc": "MM", "name_en": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" }, + { "mask": "+95-#-###-###", "cc": "MM", "name_en": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" }, + { "mask": "+95-###-###", "cc": "MM", "name_en": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" }, + { "mask": "+976-##-##-####", "cc": "MN", "name_en": "Mongolia", "desc_en": "", "name_ru": "Монголия", "desc_ru": "" }, + { "mask": "+853-####-####", "cc": "MO", "name_en": "Macau", "desc_en": "", "name_ru": "Макао", "desc_ru": "" }, + { "mask": "+1(670)###-####", "cc": "MP", "name_en": "Northern Mariana Islands", "desc_en": "", "name_ru": "Северные Марианские острова Сайпан", "desc_ru": "" }, + { "mask": "+596(###)##-##-##", "cc": "MQ", "name_en": "Martinique", "desc_en": "", "name_ru": "Мартиника", "desc_ru": "" }, + { "mask": "+222-##-##-####", "cc": "MR", "name_en": "Mauritania", "desc_en": "", "name_ru": "Мавритания", "desc_ru": "" }, + { "mask": "+1(664)###-####", "cc": "MS", "name_en": "Montserrat", "desc_en": "", "name_ru": "Монтсеррат", "desc_ru": "" }, + { "mask": "+356-####-####", "cc": "MT", "name_en": "Malta", "desc_en": "", "name_ru": "Мальта", "desc_ru": "" }, + { "mask": "+230-###-####", "cc": "MU", "name_en": "Mauritius", "desc_en": "", "name_ru": "Маврикий", "desc_ru": "" }, + { "mask": "+960-###-####", "cc": "MV", "name_en": "Maldives", "desc_en": "", "name_ru": "Мальдивские острова", "desc_ru": "" }, + { "mask": "+265-1-###-###", "cc": "MW", "name_en": "Malawi", "desc_en": "Telecom Ltd", "name_ru": "Малави", "desc_ru": "Telecom Ltd" }, + { "mask": "+265-#-####-####", "cc": "MW", "name_en": "Malawi", "desc_en": "", "name_ru": "Малави", "desc_ru": "" }, + { "mask": "+52(###)###-####", "cc": "MX", "name_en": "Mexico", "desc_en": "", "name_ru": "Мексика", "desc_ru": "" }, + { "mask": "+52-##-##-####", "cc": "MX", "name_en": "Mexico", "desc_en": "", "name_ru": "Мексика", "desc_ru": "" }, + { "mask": "+60-##-###-####", "cc": "MY", "name_en": "Malaysia ", "desc_en": "mobile", "name_ru": "Малайзия ", "desc_ru": "мобильные" }, + { "mask": "+60(###)###-###", "cc": "MY", "name_en": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" }, + { "mask": "+60-##-###-###", "cc": "MY", "name_en": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" }, + { "mask": "+60-#-###-###", "cc": "MY", "name_en": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" }, + { "mask": "+258-##-###-###", "cc": "MZ", "name_en": "Mozambique", "desc_en": "", "name_ru": "Мозамбик", "desc_ru": "" }, + { "mask": "+264-##-###-####", "cc": "NA", "name_en": "Namibia", "desc_en": "", "name_ru": "Намибия", "desc_ru": "" }, + { "mask": "+687-##-####", "cc": "NC", "name_en": "New Caledonia", "desc_en": "", "name_ru": "Новая Каледония", "desc_ru": "" }, + { "mask": "+227-##-##-####", "cc": "NE", "name_en": "Niger", "desc_en": "", "name_ru": "Нигер", "desc_ru": "" }, + { "mask": "+672-3##-###", "cc": "NF", "name_en": "Norfolk Island", "desc_en": "", "name_ru": "Норфолк (остров)", "desc_ru": "" }, + { "mask": "+234(###)###-####", "cc": "NG", "name_en": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" }, + { "mask": "+234-##-###-###", "cc": "NG", "name_en": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" }, + { "mask": "+234-##-###-##", "cc": "NG", "name_en": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" }, + { "mask": "+234(###)###-####", "cc": "NG", "name_en": "Nigeria ", "desc_en": "mobile", "name_ru": "Нигерия ", "desc_ru": "мобильные" }, + { "mask": "+505-####-####", "cc": "NI", "name_en": "Nicaragua", "desc_en": "", "name_ru": "Никарагуа", "desc_ru": "" }, + { "mask": "+31-##-###-####", "cc": "NL", "name_en": "Netherlands", "desc_en": "", "name_ru": "Нидерланды", "desc_ru": "" }, + { "mask": "+47(###)##-###", "cc": "NO", "name_en": "Norway", "desc_en": "", "name_ru": "Норвегия", "desc_ru": "" }, + { "mask": "+977-##-###-###", "cc": "NP", "name_en": "Nepal", "desc_en": "", "name_ru": "Непал", "desc_ru": "" }, + { "mask": "+674-###-####", "cc": "NR", "name_en": "Nauru", "desc_en": "", "name_ru": "Науру", "desc_ru": "" }, + { "mask": "+683-####", "cc": "NU", "name_en": "Niue", "desc_en": "", "name_ru": "Ниуэ", "desc_ru": "" }, + { "mask": "+64(###)###-###", "cc": "NZ", "name_en": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" }, + { "mask": "+64-##-###-###", "cc": "NZ", "name_en": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" }, + { "mask": "+64(###)###-####", "cc": "NZ", "name_en": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" }, + { "mask": "+968-##-###-###", "cc": "OM", "name_en": "Oman", "desc_en": "", "name_ru": "Оман", "desc_ru": "" }, + { "mask": "+507-###-####", "cc": "PA", "name_en": "Panama", "desc_en": "", "name_ru": "Панама", "desc_ru": "" }, + { "mask": "+51(###)###-###", "cc": "PE", "name_en": "Peru", "desc_en": "", "name_ru": "Перу", "desc_ru": "" }, + { "mask": "+689-##-##-##", "cc": "PF", "name_en": "French Polynesia", "desc_en": "", "name_ru": "Французская Полинезия (Таити)", "desc_ru": "" }, + { "mask": "+675(###)##-###", "cc": "PG", "name_en": "Papua New Guinea", "desc_en": "", "name_ru": "Папуа-Новая Гвинея", "desc_ru": "" }, + { "mask": "+63(###)###-####", "cc": "PH", "name_en": "Philippines", "desc_en": "", "name_ru": "Филиппины", "desc_ru": "" }, + { "mask": "+92(###)###-####", "cc": "PK", "name_en": "Pakistan", "desc_en": "", "name_ru": "Пакистан", "desc_ru": "" }, + { "mask": "+48(###)###-###", "cc": "PL", "name_en": "Poland", "desc_en": "", "name_ru": "Польша", "desc_ru": "" }, + { "mask": "+970-##-###-####", "cc": "PS", "name_en": "Palestine", "desc_en": "", "name_ru": "Палестина", "desc_ru": "" }, + { "mask": "+351-##-###-####", "cc": "PT", "name_en": "Portugal", "desc_en": "", "name_ru": "Португалия", "desc_ru": "" }, + { "mask": "+680-###-####", "cc": "PW", "name_en": "Palau", "desc_en": "", "name_ru": "Палау", "desc_ru": "" }, + { "mask": "+595(###)###-###", "cc": "PY", "name_en": "Paraguay", "desc_en": "", "name_ru": "Парагвай", "desc_ru": "" }, + { "mask": "+974-####-####", "cc": "QA", "name_en": "Qatar", "desc_en": "", "name_ru": "Катар", "desc_ru": "" }, + { "mask": "+262-#####-####", "cc": "RE", "name_en": "Reunion", "desc_en": "", "name_ru": "Реюньон", "desc_ru": "" }, + { "mask": "+40-##-###-####", "cc": "RO", "name_en": "Romania", "desc_en": "", "name_ru": "Румыния", "desc_ru": "" }, + { "mask": "+381-##-###-####", "cc": "RS", "name_en": "Serbia", "desc_en": "", "name_ru": "Сербия", "desc_ru": "" }, + { "mask": "+7(###)###-##-##", "cc": "RU", "name_en": "Russia", "desc_en": "", "name_ru": "Россия", "desc_ru": "" }, + { "mask": "+250(###)###-###", "cc": "RW", "name_en": "Rwanda", "desc_en": "", "name_ru": "Руанда", "desc_ru": "" }, + { "mask": "+966-5-####-####", "cc": "SA", "name_en": "Saudi Arabia ", "desc_en": "mobile", "name_ru": "Саудовская Аравия ", "desc_ru": "мобильные" }, + { "mask": "+966-#-###-####", "cc": "SA", "name_en": "Saudi Arabia", "desc_en": "", "name_ru": "Саудовская Аравия", "desc_ru": "" }, + { "mask": "+677-###-####", "cc": "SB", "name_en": "Solomon Islands ", "desc_en": "mobile", "name_ru": "Соломоновы Острова ", "desc_ru": "мобильные" }, + { "mask": "+677-#####", "cc": "SB", "name_en": "Solomon Islands", "desc_en": "", "name_ru": "Соломоновы Острова", "desc_ru": "" }, + { "mask": "+248-#-###-###", "cc": "SC", "name_en": "Seychelles", "desc_en": "", "name_ru": "Сейшелы", "desc_ru": "" }, + { "mask": "+249-##-###-####", "cc": "SD", "name_en": "Sudan", "desc_en": "", "name_ru": "Судан", "desc_ru": "" }, + { "mask": "+46-##-###-####", "cc": "SE", "name_en": "Sweden", "desc_en": "", "name_ru": "Швеция", "desc_ru": "" }, + { "mask": "+65-####-####", "cc": "SG", "name_en": "Singapore", "desc_en": "", "name_ru": "Сингапур", "desc_ru": "" }, + { "mask": "+290-####", "cc": "SH", "name_en": "Saint Helena", "desc_en": "", "name_ru": "Остров Святой Елены", "desc_ru": "" }, + { "mask": "+290-####", "cc": "SH", "name_en": "Tristan da Cunha", "desc_en": "", "name_ru": "Тристан-да-Кунья", "desc_ru": "" }, + { "mask": "+386-##-###-###", "cc": "SI", "name_en": "Slovenia", "desc_en": "", "name_ru": "Словения", "desc_ru": "" }, + { "mask": "+421(###)###-###", "cc": "SK", "name_en": "Slovakia", "desc_en": "", "name_ru": "Словакия", "desc_ru": "" }, + { "mask": "+232-##-######", "cc": "SL", "name_en": "Sierra Leone", "desc_en": "", "name_ru": "Сьерра-Леоне", "desc_ru": "" }, + { "mask": "+378-####-######", "cc": "SM", "name_en": "San Marino", "desc_en": "", "name_ru": "Сан-Марино", "desc_ru": "" }, + { "mask": "+221-##-###-####", "cc": "SN", "name_en": "Senegal", "desc_en": "", "name_ru": "Сенегал", "desc_ru": "" }, + { "mask": "+252-##-###-###", "cc": "SO", "name_en": "Somalia", "desc_en": "", "name_ru": "Сомали", "desc_ru": "" }, + { "mask": "+252-#-###-###", "cc": "SO", "name_en": "Somalia", "desc_en": "", "name_ru": "Сомали", "desc_ru": "" }, + { "mask": "+252-#-###-###", "cc": "SO", "name_en": "Somalia ", "desc_en": "mobile", "name_ru": "Сомали ", "desc_ru": "мобильные" }, + { "mask": "+597-###-####", "cc": "SR", "name_en": "Suriname ", "desc_en": "mobile", "name_ru": "Суринам ", "desc_ru": "мобильные" }, + { "mask": "+597-###-###", "cc": "SR", "name_en": "Suriname", "desc_en": "", "name_ru": "Суринам", "desc_ru": "" }, + { "mask": "+211-##-###-####", "cc": "SS", "name_en": "South Sudan", "desc_en": "", "name_ru": "Южный Судан", "desc_ru": "" }, + { "mask": "+239-##-#####", "cc": "ST", "name_en": "Sao Tome and Principe", "desc_en": "", "name_ru": "Сан-Томе и Принсипи", "desc_ru": "" }, + { "mask": "+503-##-##-####", "cc": "SV", "name_en": "El Salvador", "desc_en": "", "name_ru": "Сальвадор", "desc_ru": "" }, + { "mask": "+1(721)###-####", "cc": "SX", "name_en": "Sint Maarten", "desc_en": "", "name_ru": "Синт-Маартен", "desc_ru": "" }, + { "mask": "+963-##-####-###", "cc": "SY", "name_en": "Syrian Arab Republic", "desc_en": "", "name_ru": "Сирийская арабская республика", "desc_ru": "" }, + { "mask": "+268-##-##-####", "cc": "SZ", "name_en": "Swaziland", "desc_en": "", "name_ru": "Свазиленд", "desc_ru": "" }, + { "mask": "+1(649)###-####", "cc": "TC", "name_en": "Turks & Caicos", "desc_en": "", "name_ru": "Тёркс и Кайкос", "desc_ru": "" }, + { "mask": "+235-##-##-##-##", "cc": "TD", "name_en": "Chad", "desc_en": "", "name_ru": "Чад", "desc_ru": "" }, + { "mask": "+228-##-###-###", "cc": "TG", "name_en": "Togo", "desc_en": "", "name_ru": "Того", "desc_ru": "" }, + { "mask": "+66-##-###-####", "cc": "TH", "name_en": "Thailand ", "desc_en": "mobile", "name_ru": "Таиланд ", "desc_ru": "мобильные" }, + { "mask": "+66-##-###-###", "cc": "TH", "name_en": "Thailand", "desc_en": "", "name_ru": "Таиланд", "desc_ru": "" }, + { "mask": "+992-##-###-####", "cc": "TJ", "name_en": "Tajikistan", "desc_en": "", "name_ru": "Таджикистан", "desc_ru": "" }, + { "mask": "+690-####", "cc": "TK", "name_en": "Tokelau", "desc_en": "", "name_ru": "Токелау", "desc_ru": "" }, + { "mask": "+670-###-####", "cc": "TL", "name_en": "East Timor", "desc_en": "", "name_ru": "Восточный Тимор", "desc_ru": "" }, + { "mask": "+670-77#-#####", "cc": "TL", "name_en": "East Timor", "desc_en": "Timor Telecom", "name_ru": "Восточный Тимор", "desc_ru": "Timor Telecom" }, + { "mask": "+670-78#-#####", "cc": "TL", "name_en": "East Timor", "desc_en": "Timor Telecom", "name_ru": "Восточный Тимор", "desc_ru": "Timor Telecom" }, + { "mask": "+993-#-###-####", "cc": "TM", "name_en": "Turkmenistan", "desc_en": "", "name_ru": "Туркменистан", "desc_ru": "" }, + { "mask": "+216-##-###-###", "cc": "TN", "name_en": "Tunisia", "desc_en": "", "name_ru": "Тунис", "desc_ru": "" }, + { "mask": "+676-#####", "cc": "TO", "name_en": "Tonga", "desc_en": "", "name_ru": "Тонга", "desc_ru": "" }, + { "mask": "+90(###)###-####", "cc": "TR", "name_en": "Turkey", "desc_en": "", "name_ru": "Турция", "desc_ru": "" }, + { "mask": "+1(868)###-####", "cc": "TT", "name_en": "Trinidad & Tobago", "desc_en": "", "name_ru": "Тринидад и Тобаго", "desc_ru": "" }, + { "mask": "+688-90####", "cc": "TV", "name_en": "Tuvalu ", "desc_en": "mobile", "name_ru": "Тувалу ", "desc_ru": "мобильные" }, + { "mask": "+688-2####", "cc": "TV", "name_en": "Tuvalu", "desc_en": "", "name_ru": "Тувалу", "desc_ru": "" }, + { "mask": "+886-#-####-####", "cc": "TW", "name_en": "Taiwan", "desc_en": "", "name_ru": "Тайвань", "desc_ru": "" }, + { "mask": "+886-####-####", "cc": "TW", "name_en": "Taiwan", "desc_en": "", "name_ru": "Тайвань", "desc_ru": "" }, + { "mask": "+255-##-###-####", "cc": "TZ", "name_en": "Tanzania", "desc_en": "", "name_ru": "Танзания", "desc_ru": "" }, + { "mask": "+380(##)###-##-##", "cc": "UA", "name_en": "Ukraine", "desc_en": "", "name_ru": "Украина", "desc_ru": "" }, + { "mask": "+256(###)###-###", "cc": "UG", "name_en": "Uganda", "desc_en": "", "name_ru": "Уганда", "desc_ru": "" }, + { "mask": "+44-##-####-####", "cc": "UK", "name_en": "United Kingdom", "desc_en": "", "name_ru": "Великобритания", "desc_ru": "" }, + { "mask": "+598-#-###-##-##", "cc": "UY", "name_en": "Uruguay", "desc_en": "", "name_ru": "Уругвай", "desc_ru": "" }, + { "mask": "+998-##-###-####", "cc": "UZ", "name_en": "Uzbekistan", "desc_en": "", "name_ru": "Узбекистан", "desc_ru": "" }, + { "mask": "+39-6-698-#####", "cc": "VA", "name_en": "Vatican City", "desc_en": "", "name_ru": "Ватикан", "desc_ru": "" }, + { "mask": "+1(784)###-####", "cc": "VC", "name_en": "Saint Vincent & the Grenadines", "desc_en": "", "name_ru": "Сент-Винсент и Гренадины", "desc_ru": "" }, + { "mask": "+58(###)###-####", "cc": "VE", "name_en": "Venezuela", "desc_en": "", "name_ru": "Венесуэла", "desc_ru": "" }, + { "mask": "+1(284)###-####", "cc": "VG", "name_en": "British Virgin Islands", "desc_en": "", "name_ru": "Британские Виргинские острова", "desc_ru": "" }, + { "mask": "+1(340)###-####", "cc": "VI", "name_en": "US Virgin Islands", "desc_en": "", "name_ru": "Американские Виргинские острова", "desc_ru": "" }, + { "mask": "+84-##-####-###", "cc": "VN", "name_en": "Vietnam", "desc_en": "", "name_ru": "Вьетнам", "desc_ru": "" }, + { "mask": "+84(###)####-###", "cc": "VN", "name_en": "Vietnam", "desc_en": "", "name_ru": "Вьетнам", "desc_ru": "" }, + { "mask": "+678-##-#####", "cc": "VU", "name_en": "Vanuatu ", "desc_en": "mobile", "name_ru": "Вануату ", "desc_ru": "мобильные" }, + { "mask": "+678-#####", "cc": "VU", "name_en": "Vanuatu", "desc_en": "", "name_ru": "Вануату", "desc_ru": "" }, + { "mask": "+681-##-####", "cc": "WF", "name_en": "Wallis and Futuna", "desc_en": "", "name_ru": "Уоллис и Футуна", "desc_ru": "" }, + { "mask": "+685-##-####", "cc": "WS", "name_en": "Samoa", "desc_en": "", "name_ru": "Самоа", "desc_ru": "" }, + { "mask": "+967-###-###-###", "cc": "YE", "name_en": "Yemen ", "desc_en": "mobile", "name_ru": "Йемен ", "desc_ru": "мобильные" }, + { "mask": "+967-#-###-###", "cc": "YE", "name_en": "Yemen", "desc_en": "", "name_ru": "Йемен", "desc_ru": "" }, + { "mask": "+967-##-###-###", "cc": "YE", "name_en": "Yemen", "desc_en": "", "name_ru": "Йемен", "desc_ru": "" }, + { "mask": "+27-##-###-####", "cc": "ZA", "name_en": "South Africa", "desc_en": "", "name_ru": "Южно-Африканская Респ.", "desc_ru": "" }, + { "mask": "+260-##-###-####", "cc": "ZM", "name_en": "Zambia", "desc_en": "", "name_ru": "Замбия", "desc_ru": "" }, + { "mask": "+263-#-######", "cc": "ZW", "name_en": "Zimbabwe", "desc_en": "", "name_ru": "Зимбабве", "desc_ru": "" }, + { "mask": "+1(###)###-####", "cc": ["US", "CA"], "name_en": "USA and Canada", "desc_en": "", "name_ru": "США и Канада", "desc_ru": "" } +] diff --git a/public/assets/js/plugins/input-mask/phone-codes/readme.txt b/public/assets/js/plugins/input-mask/phone-codes/readme.txt new file mode 100755 index 00000000..0a170a76 --- /dev/null +++ b/public/assets/js/plugins/input-mask/phone-codes/readme.txt @@ -0,0 +1 @@ +more phone masks can be found at https://github.com/andr-04/inputmask-multi \ No newline at end of file diff --git a/public/assets/js/plugins/ionslider/ion.rangeSlider.min.js b/public/assets/js/plugins/ionslider/ion.rangeSlider.min.js new file mode 100755 index 00000000..f352609f --- /dev/null +++ b/public/assets/js/plugins/ionslider/ion.rangeSlider.min.js @@ -0,0 +1,22 @@ +// Ion.RangeSlider +// version 1.8.2 +// https://github.com/IonDen/ion.rangeSlider +(function(c,X,ea,S){var Y=0,O=function(){var c=S.userAgent,a=/msie\s\d+/i;return 0c)?!0:!1}(),H;try{X.createEvent("TouchEvent"),H=!0}catch(ga){H=!1}var N={init:function(A){return this.each(function(){var a=c.extend({min:10,max:100,from:null,to:null,type:"single",step:1,prefix:"",postfix:"",hasGrid:!1,hideMinMax:!1,hideFromTo:!1,prettify:!0,onChange:null,onLoad:null,onFinish:null},A),d=c(this),u=this;if(!d.data("isActive")){d.data("isActive", +!0);this.pluginCount=Y+=1;d.prop("value")&&(a.min=parseInt(d.prop("value").split(";")[0],10),a.max=parseInt(d.prop("value").split(";")[1],10));"number"!==typeof a.from&&(a.from=a.min);"number"!==typeof a.to&&(a.to=a.max);"number"===typeof d.data("from")&&(a.from=parseFloat(d.data("from")));"number"===typeof d.data("to")&&(a.to=parseFloat(d.data("to")));d.data("step")&&(a.step=parseFloat(d.data("step")));d.data("type")&&(a.type=d.data("type"));d.data("prefix")&&(a.prefix=d.data("prefix"));d.data("postfix")&& +(a.postfix=d.data("postfix"));d.data("hasgrid")&&(a.hasGrid=d.data("hasgrid"));d.data("hideminmax")&&(a.hideMinMax=d.data("hideminmax"));d.data("hidefromto")&&(a.hideFromTo=d.data("hidefromto"));d.data("prettify")&&(a.prettify=d.data("prettify"));a.froma.max&&(a.to=a.max);"double"===a.type&&(a.from>a.to&&(a.from=a.to),a.to';d[0].style.display="none";d.before(N);var w=c("#irs-"+this.pluginCount),C=c(X.body),I=c(ea),l,D,E,x,y,q,r,e,m,s,T,Z,p=!1,t=!1,P=!0,g={},U=0,J=0,K=0,k=0,B=0,L=0,V=0,Q=0,R=0,$=0,n=0;parseInt(a.step,10)!==parseFloat(a.step)&&(n=a.step.toString().split(".")[1],n=Math.pow(10,n.length));this.updateData=function(b){P=!0;a=c.extend(a,b);w.find("*").off();I.off("mouseup.irs"+u.pluginCount);C.off("mouseup.irs"+u.pluginCount);C.off("mousemove.irs"+u.pluginCount);w.html("");aa()}; +this.removeSlider=function(){w.find("*").off();I.off("mouseup.irs"+u.pluginCount);C.off("mouseup.irs"+u.pluginCount);C.off("mousemove.irs"+u.pluginCount);w.html("").remove();d.data("isActive",!1);d.show()};var aa=function(){w.html('01000'); +l=w.find(".irs");D=l.find(".irs-min");E=l.find(".irs-max");x=l.find(".irs-from");y=l.find(".irs-to");q=l.find(".irs-single");Z=w.find(".irs-grid");a.hideMinMax&&(D[0].style.display="none",E[0].style.display="none",K=J=0);a.hideFromTo&&(x[0].style.display="none",y[0].style.display="none",q[0].style.display="none");a.hideMinMax||(D.html(a.prefix+v(a.min)+a.postfix),E.html(a.prefix+v(a.max)+a.postfix),J=D.outerWidth(),K=E.outerWidth());if("single"===a.type){if(l.append(''), +r=l.find(".single"),r.on("mousedown",function(a){a.preventDefault();a.stopPropagation();F(a,c(this),null);t=p=!0;O&&c("*").prop("unselectable",!0)}),H)r.on("touchstart",function(a){a.preventDefault();a.stopPropagation();F(a.originalEvent.touches[0],c(this),null);t=p=!0})}else"double"===a.type&&(l.append(''),e=l.find(".from"),m=l.find(".to"),T=l.find(".irs-diapason"),M(),e.on("mousedown",function(a){a.preventDefault(); +a.stopPropagation();c(this).addClass("last");m.removeClass("last");F(a,c(this),"from");t=p=!0;O&&c("*").prop("unselectable",!0)}),m.on("mousedown",function(a){a.preventDefault();a.stopPropagation();c(this).addClass("last");e.removeClass("last");F(a,c(this),"to");t=p=!0;O&&c("*").prop("unselectable",!0)}),H&&(e.on("touchstart",function(a){a.preventDefault();a.stopPropagation();c(this).addClass("last");m.removeClass("last");F(a.originalEvent.touches[0],c(this),"from");t=p=!0}),m.on("touchstart",function(a){a.preventDefault(); +a.stopPropagation();c(this).addClass("last");e.removeClass("last");F(a.originalEvent.touches[0],c(this),"to");t=p=!0})),a.to===a.max&&e.addClass("last"));var b=function(){p&&(p=t=!1,s.removeAttr("id"),s=null,"double"===a.type&&M(),W(),O&&c("*").prop("unselectable",!1))};C.on("mouseup.irs"+u.pluginCount,function(){b()});I.on("mouseup.irs"+u.pluginCount,function(){b()});C.on("mousemove.irs"+u.pluginCount,function(a){p&&(U=a.pageX,ba())});H&&(I.on("touchend",function(){p&&(p=t=!1,s.removeAttr("id"), +s=null,"double"===a.type&&M(),W())}),I.on("touchmove",function(a){p&&(U=a.originalEvent.touches[0].pageX,ba())}));ca();S();a.hasGrid&&fa()},ca=function(){k=l.width();L=r?r.width():e.width();B=k-L},F=function(b,f,c){ca();P=!1;s=f;s.attr("id","irs-active-slider");f=s.offset().left;$=f+(b.pageX-f)-s.position().left;"single"===a.type?V=l.width()-L:"double"===a.type&&("from"===c?(Q=0,R=parseInt(m.css("left"),10)):(Q=parseInt(e.css("left"),10),R=l.width()-L))},M=function(){var a=e.width(),f=c.data(e[0], +"x")||parseInt(e[0].style.left,10)||e.position().left,G=(c.data(m[0],"x")||parseInt(m[0].style.left,10)||m.position().left)-f;T[0].style.left=f+a/2+"px";T[0].style.width=G+"px"},ba=function(){var b=U-$;"single"===a.type?(0>b&&(b=0),b>V&&(b=V)):"double"===a.type&&(bR&&(b=R),M());c.data(s[0],"x",b);W();b=Math.round(b);s[0].style.left=b+"px"},W=function(){var b={fromNumber:0,toNumber:0,fromPers:0,toPers:0,fromX:0,toX:0},f=a.max-a.min,G;"single"===a.type?(b.fromX=c.data(r[0],"x")||parseInt(r[0].style.left, +10)||r.position().left,b.fromPers=b.fromX/B*100,G=f/100*b.fromPers+parseInt(a.min,10),b.fromNumber=Math.round(G/a.step)*a.step,n&&(b.fromNumber=parseInt(b.fromNumber*n,10)/n)):"double"===a.type&&(b.fromX=c.data(e[0],"x")||parseInt(e[0].style.left,10)||e.position().left,b.fromPers=b.fromX/B*100,G=f/100*b.fromPers+parseInt(a.min,10),b.fromNumber=Math.round(G/a.step)*a.step,b.toX=c.data(m[0],"x")||parseInt(m[0].style.left,10)||m.position().left,b.toPers=b.toX/B*100,f=f/100*b.toPers+parseInt(a.min,10), +b.toNumber=Math.round(f/a.step)*a.step,n&&(b.fromNumber=parseInt(b.fromNumber*n,10)/n,b.toNumber=parseInt(b.toNumber*n,10)/n));g=b;da()},S=function(){var b={fromNumber:a.from,toNumber:a.to,fromPers:0,toPers:0,fromX:0,fromX_pure:0,toX:0,toX_pure:0},f=a.max-a.min;"single"===a.type?(b.fromPers=(b.fromNumber-a.min)/f*100,b.fromX_pure=B/100*b.fromPers,b.fromX=Math.round(b.fromX_pure),r[0].style.left=b.fromX+"px",c.data(r[0],"x",b.fromX_pure)):"double"===a.type&&(b.fromPers=(b.fromNumber-a.min)/f*100,b.fromX_pure= +B/100*b.fromPers,b.fromX=Math.round(b.fromX_pure),e[0].style.left=b.fromX+"px",c.data(e[0],"x",b.fromX_pure),b.toPers=(b.toNumber-a.min)/f*100,b.toX_pure=B/100*b.toPers,b.toX=Math.round(b.toX_pure),m[0].style.left=b.toX+"px",c.data(m[0],"x",b.toX_pure),M());g=b;da()},da=function(){var b,f,c,z,e,h;h=L/2;"single"===a.type?(a.hideText||(x[0].style.display="none",y[0].style.display="none",c=a.prefix+v(g.fromNumber)+a.postfix,q.html(c),e=q.outerWidth(),h=g.fromX-e/2+h,0>h&&(h=0),h>k-e&&(h=k-e),q[0].style.left= +h+"px",a.hideMinMax||a.hideFromTo||(D[0].style.display=hk-K?"none":"block")),d.attr("value",parseInt(g.fromNumber,10))):"double"===a.type&&(a.hideText||(b=a.prefix+v(g.fromNumber)+a.postfix,f=a.prefix+v(g.toNumber)+a.postfix,c=g.fromNumber!==g.toNumber?a.prefix+v(g.fromNumber)+" \u2014 "+a.prefix+v(g.toNumber)+a.postfix:a.prefix+v(g.fromNumber)+a.postfix,x.html(b),y.html(f),q.html(c),b=x.outerWidth(),f=g.fromX-b/2+h,0>f&&(f=0),f>k-b&&(f=k-b),x[0].style.left= +f+"px",c=y.outerWidth(),z=g.toX-c/2+h,0>z&&(z=0),z>k-c&&(z=k-c),y[0].style.left=z+"px",e=q.outerWidth(),h=g.fromX+(g.toX-g.fromX)/2-e/2+h,0>h&&(h=0),h>k-e&&(h=k-e),q[0].style.left=h+"px",f+bk-K||z+c>k-K?"none":"block")),d.attr("value",parseInt(g.fromNumber, +10)+";"+parseInt(g.toNumber,10)));"function"===typeof a.onChange&&a.onChange.call(this,g);"function"!==typeof a.onFinish||t||P||a.onFinish.call(this,g);"function"===typeof a.onLoad&&!t&&P&&a.onLoad.call(this,g)},fa=function(){w.addClass("irs-with-grid");var b,c="",d=0,d=0,e="";for(b=0;20>=b;b+=1)d=Math.floor(k/20*b),d>=k&&(d=k-1),e+='';for(b=0;4>=b;b+=1)d=Math.floor(k/4*b),d>=k&&(d=k-1),e+='',n?(c=a.min+(a.max-a.min)/4*b,c=c/a.step*a.step,c=parseInt(c*n,10)/n):(c=Math.round(a.min+(a.max-a.min)/4*b),c=Math.round(c/a.step)*a.step,c=v(c)),0===b?e+=''+c+"":4===b?(d-=100,e+=''+c+""):(d-=50,e+=''+c+"");Z.html(e)};aa()}})},update:function(c){return this.each(function(){this.updateData(c)})}, +remove:function(){return this.each(function(){this.removeSlider()})}};c.fn.ionRangeSlider=function(A){if(N[A])return N[A].apply(this,Array.prototype.slice.call(arguments,1));if("object"!==typeof A&&A)c.error("Method "+A+" does not exist for jQuery.ionRangeSlider");else return N.init.apply(this,arguments)}})(jQuery,document,window,navigator); \ No newline at end of file diff --git a/public/assets/js/plugins/jqueryKnob/jquery.knob.js b/public/assets/js/plugins/jqueryKnob/jquery.knob.js new file mode 100755 index 00000000..ddb52736 --- /dev/null +++ b/public/assets/js/plugins/jqueryKnob/jquery.knob.js @@ -0,0 +1,764 @@ +/*!jQuery Knob*/ +/** + * Downward compatible, touchable dial + * + * Version: 1.2.0 (15/07/2012) + * Requires: jQuery v1.7+ + * + * Copyright (c) 2012 Anthony Terrien + * Under MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Thanks to vor, eskimoblood, spiffistan, FabrizioC + */ +(function($) { + + /** + * Kontrol library + */ + "use strict"; + + /** + * Definition of globals and core + */ + var k = {}, // kontrol + max = Math.max, + min = Math.min; + + k.c = {}; + k.c.d = $(document); + k.c.t = function (e) { + return e.originalEvent.touches.length - 1; + }; + + /** + * Kontrol Object + * + * Definition of an abstract UI control + * + * Each concrete component must call this one. + * + * k.o.call(this); + * + */ + k.o = function () { + var s = this; + + this.o = null; // array of options + this.$ = null; // jQuery wrapped element + this.i = null; // mixed HTMLInputElement or array of HTMLInputElement + this.g = null; // deprecated 2D graphics context for 'pre-rendering' + this.v = null; // value ; mixed array or integer + this.cv = null; // change value ; not commited value + this.x = 0; // canvas x position + this.y = 0; // canvas y position + this.w = 0; // canvas width + this.h = 0; // canvas height + this.$c = null; // jQuery canvas element + this.c = null; // rendered canvas context + this.t = 0; // touches index + this.isInit = false; + this.fgColor = null; // main color + this.pColor = null; // previous color + this.dH = null; // draw hook + this.cH = null; // change hook + this.eH = null; // cancel hook + this.rH = null; // release hook + this.scale = 1; // scale factor + this.relative = false; + this.relativeWidth = false; + this.relativeHeight = false; + this.$div = null; // component div + + this.run = function () { + var cf = function (e, conf) { + var k; + for (k in conf) { + s.o[k] = conf[k]; + } + s.init(); + s._configure() + ._draw(); + }; + + if(this.$.data('kontroled')) return; + this.$.data('kontroled', true); + + this.extend(); + this.o = $.extend( + { + // Config + min : this.$.data('min') || 0, + max : this.$.data('max') || 100, + stopper : true, + readOnly : this.$.data('readonly') || (this.$.attr('readonly') == 'readonly'), + + // UI + cursor : (this.$.data('cursor') === true && 30) + || this.$.data('cursor') + || 0, + thickness : ( + this.$.data('thickness') + && Math.max(Math.min(this.$.data('thickness'), 1), 0.01) + ) + || 0.35, + lineCap : this.$.data('linecap') || 'butt', + width : this.$.data('width') || 200, + height : this.$.data('height') || 200, + displayInput : this.$.data('displayinput') == null || this.$.data('displayinput'), + displayPrevious : this.$.data('displayprevious'), + fgColor : this.$.data('fgcolor') || '#87CEEB', + inputColor: this.$.data('inputcolor'), + font: this.$.data('font') || 'Arial', + fontWeight: this.$.data('font-weight') || 'bold', + inline : false, + step : this.$.data('step') || 1, + + // Hooks + draw : null, // function () {} + change : null, // function (value) {} + cancel : null, // function () {} + release : null, // function (value) {} + error : null // function () {} + }, this.o + ); + + // finalize options + if(!this.o.inputColor) { + this.o.inputColor = this.o.fgColor; + } + + // routing value + if(this.$.is('fieldset')) { + + // fieldset = array of integer + this.v = {}; + this.i = this.$.find('input') + this.i.each(function(k) { + var $this = $(this); + s.i[k] = $this; + s.v[k] = $this.val(); + + $this.bind( + 'change keyup' + , function () { + var val = {}; + val[k] = $this.val(); + s.val(val); + } + ); + }); + this.$.find('legend').remove(); + + } else { + + // input = integer + this.i = this.$; + this.v = this.$.val(); + (this.v == '') && (this.v = this.o.min); + + this.$.bind( + 'change keyup' + , function () { + s.val(s._validate(s.$.val())); + } + ); + + } + + (!this.o.displayInput) && this.$.hide(); + + // adds needed DOM elements (canvas, div) + this.$c = $(document.createElement('canvas')); + if (typeof G_vmlCanvasManager !== 'undefined') { + G_vmlCanvasManager.initElement(this.$c[0]); + } + this.c = this.$c[0].getContext ? this.$c[0].getContext('2d') : null; + if (!this.c) { + this.o.error && this.o.error(); + return; + } + + // hdpi support + this.scale = (window.devicePixelRatio || 1) / + ( + this.c.webkitBackingStorePixelRatio || + this.c.mozBackingStorePixelRatio || + this.c.msBackingStorePixelRatio || + this.c.oBackingStorePixelRatio || + this.c.backingStorePixelRatio || 1 + ); + + // detects relative width / height + this.relativeWidth = ((this.o.width % 1 !== 0) + && this.o.width.indexOf('%')); + this.relativeHeight = ((this.o.height % 1 !== 0) + && this.o.height.indexOf('%')); + + this.relative = (this.relativeWidth || this.relativeHeight); + + // wraps all elements in a div + this.$div = $('
      '); + + this.$.wrap(this.$div).before(this.$c); + this.$div = this.$.parent(); + + // computes size and carves the component + this._carve(); + + // prepares props for transaction + if (this.v instanceof Object) { + this.cv = {}; + this.copy(this.v, this.cv); + } else { + this.cv = this.v; + } + + // binds configure event + this.$ + .bind("configure", cf) + .parent() + .bind("configure", cf); + + // finalize init + this._listen() + ._configure() + ._xy() + .init(); + + this.isInit = true; + + // the most important ! + this._draw(); + + return this; + }; + + this._carve = function() { + if(this.relative) { + var w = this.relativeWidth + ? this.$div.parent().width() + * parseInt(this.o.width) / 100 + : this.$div.parent().width(), + h = this.relativeHeight + ? this.$div.parent().height() + * parseInt(this.o.height) / 100 + : this.$div.parent().height(); + + // apply relative + this.w = this.h = Math.min(w, h); + } else { + this.w = this.o.width; + this.h = this.o.height; + } + + // finalize div + this.$div.css({ + 'width': this.w + 'px', + 'height': this.h + 'px' + }); + + // finalize canvas with computed width + this.$c.attr({ + width: this.w, + height: this.h + }); + + // scaling + if (this.scale !== 1) { + this.$c[0].width = this.$c[0].width * this.scale; + this.$c[0].height = this.$c[0].height * this.scale; + this.$c.width(this.w); + this.$c.height(this.h); + } + + return this; + } + + this._draw = function () { + + // canvas pre-rendering + var d = true; + + s.g = s.c; + + s.clear(); + + s.dH + && (d = s.dH()); + + (d !== false) && s.draw(); + + }; + + this._touch = function (e) { + + var touchMove = function (e) { + + var v = s.xy2val( + e.originalEvent.touches[s.t].pageX, + e.originalEvent.touches[s.t].pageY + ); + s.change(s._validate(v)); + s._draw(); + }; + + // get touches index + this.t = k.c.t(e); + + // First touch + touchMove(e); + + // Touch events listeners + k.c.d + .bind("touchmove.k", touchMove) + .bind( + "touchend.k" + , function () { + k.c.d.unbind('touchmove.k touchend.k'); + + if ( + s.rH + && (s.rH(s.cv) === false) + ) return; + + s.val(s.cv); + } + ); + + return this; + }; + + this._mouse = function (e) { + + var mouseMove = function (e) { + var v = s.xy2val(e.pageX, e.pageY); + s.change(s._validate(v)); + s._draw(); + }; + + // First click + mouseMove(e); + + // Mouse events listeners + k.c.d + .bind("mousemove.k", mouseMove) + .bind( + // Escape key cancel current change + "keyup.k" + , function (e) { + if (e.keyCode === 27) { + k.c.d.unbind("mouseup.k mousemove.k keyup.k"); + + if ( + s.eH + && (s.eH() === false) + ) return; + + s.cancel(); + } + } + ) + .bind( + "mouseup.k" + , function (e) { + k.c.d.unbind('mousemove.k mouseup.k keyup.k'); + + if ( + s.rH + && (s.rH(s.cv) === false) + ) return; + + s.val(s.cv); + } + ); + + return this; + }; + + this._xy = function () { + var o = this.$c.offset(); + this.x = o.left; + this.y = o.top; + return this; + }; + + this._listen = function () { + + if (!this.o.readOnly) { + this.$c + .bind( + "mousedown" + , function (e) { + e.preventDefault(); + s._xy()._mouse(e); + } + ) + .bind( + "touchstart" + , function (e) { + e.preventDefault(); + s._xy()._touch(e); + } + ); + + this.listen(); + } else { + this.$.attr('readonly', 'readonly'); + } + + if(this.relative) { + $(window).resize(function() { + s._carve() + .init(); + s._draw(); + }); + } + + return this; + }; + + this._configure = function () { + + // Hooks + if (this.o.draw) this.dH = this.o.draw; + if (this.o.change) this.cH = this.o.change; + if (this.o.cancel) this.eH = this.o.cancel; + if (this.o.release) this.rH = this.o.release; + + if (this.o.displayPrevious) { + this.pColor = this.h2rgba(this.o.fgColor, "0.4"); + this.fgColor = this.h2rgba(this.o.fgColor, "0.6"); + } else { + this.fgColor = this.o.fgColor; + } + + return this; + }; + + this._clear = function () { + this.$c[0].width = this.$c[0].width; + }; + + this._validate = function(v) { + return (~~ (((v < 0) ? -0.5 : 0.5) + (v/this.o.step))) * this.o.step; + }; + + // Abstract methods + this.listen = function () {}; // on start, one time + this.extend = function () {}; // each time configure triggered + this.init = function () {}; // each time configure triggered + this.change = function (v) {}; // on change + this.val = function (v) {}; // on release + this.xy2val = function (x, y) {}; // + this.draw = function () {}; // on change / on release + this.clear = function () { this._clear(); }; + + // Utils + this.h2rgba = function (h, a) { + var rgb; + h = h.substring(1,7) + rgb = [parseInt(h.substring(0,2),16) + ,parseInt(h.substring(2,4),16) + ,parseInt(h.substring(4,6),16)]; + return "rgba(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "," + a + ")"; + }; + + this.copy = function (f, t) { + for (var i in f) { t[i] = f[i]; } + }; + }; + + + /** + * k.Dial + */ + k.Dial = function () { + k.o.call(this); + + this.startAngle = null; + this.xy = null; + this.radius = null; + this.lineWidth = null; + this.cursorExt = null; + this.w2 = null; + this.PI2 = 2*Math.PI; + + this.extend = function () { + this.o = $.extend( + { + bgColor : this.$.data('bgcolor') || '#EEEEEE', + angleOffset : this.$.data('angleoffset') || 0, + angleArc : this.$.data('anglearc') || 360, + inline : true + }, this.o + ); + }; + + this.val = function (v) { + if (null != v) { + this.cv = this.o.stopper ? max(min(v, this.o.max), this.o.min) : v; + this.v = this.cv; + this.$.val(this.v); + this._draw(); + } else { + return this.v; + } + }; + + this.xy2val = function (x, y) { + var a, ret; + + a = Math.atan2( + x - (this.x + this.w2) + , - (y - this.y - this.w2) + ) - this.angleOffset; + + if(this.angleArc != this.PI2 && (a < 0) && (a > -0.5)) { + // if isset angleArc option, set to min if .5 under min + a = 0; + } else if (a < 0) { + a += this.PI2; + } + + ret = ~~ (0.5 + (a * (this.o.max - this.o.min) / this.angleArc)) + + this.o.min; + + this.o.stopper + && (ret = max(min(ret, this.o.max), this.o.min)); + + return ret; + }; + + this.listen = function () { + // bind MouseWheel + var s = this, mwTimerStop, mwTimerRelease, + mw = function (e) { + e.preventDefault(); + + var ori = e.originalEvent + ,deltaX = ori.detail || ori.wheelDeltaX + ,deltaY = ori.detail || ori.wheelDeltaY + ,v = s._validate(s.$.val()) + + (deltaX>0 || deltaY>0 ? s.o.step : deltaX<0 || deltaY<0 ? -s.o.step : 0); + + v = max(min(v, s.o.max), s.o.min); + + s.val(v); + + if(s.rH) { + // Handle mousewheel stop + clearTimeout(mwTimerStop); + mwTimerStop = setTimeout(function() { + s.rH(v); + mwTimerStop = null; + }, 100); + + // Handle mousewheel releases + if(!mwTimerRelease) { + mwTimerRelease = setTimeout(function() { + if(mwTimerStop) s.rH(v); + mwTimerRelease = null; + }, 200); + } + } + } + , kval, to, m = 1, kv = {37:-s.o.step, 38:s.o.step, 39:s.o.step, 40:-s.o.step}; + + this.$ + .bind( + "keydown" + ,function (e) { + var kc = e.keyCode; + + // numpad support + if(kc >= 96 && kc <= 105) { + kc = e.keyCode = kc - 48; + } + + kval = parseInt(String.fromCharCode(kc)); + + if (isNaN(kval)) { + + (kc !== 13) // enter + && (kc !== 8) // bs + && (kc !== 9) // tab + && (kc !== 189) // - + && e.preventDefault(); + + // arrows + if ($.inArray(kc,[37,38,39,40]) > -1) { + e.preventDefault(); + + var v = parseInt(s.$.val()) + kv[kc] * m; + + s.o.stopper + && (v = max(min(v, s.o.max), s.o.min)); + + s.change(v); + s._draw(); + + // long time keydown speed-up + to = window.setTimeout( + function () { m*=2; } + ,30 + ); + } + } + } + ) + .bind( + "keyup" + ,function (e) { + if (isNaN(kval)) { + if (to) { + window.clearTimeout(to); + to = null; + m = 1; + s.val(s.$.val()); + } + } else { + // kval postcond + (s.$.val() > s.o.max && s.$.val(s.o.max)) + || (s.$.val() < s.o.min && s.$.val(s.o.min)); + } + + } + ); + + this.$c.bind("mousewheel DOMMouseScroll", mw); + this.$.bind("mousewheel DOMMouseScroll", mw) + }; + + this.init = function () { + + if ( + this.v < this.o.min + || this.v > this.o.max + ) this.v = this.o.min; + + this.$.val(this.v); + this.w2 = this.w / 2; + this.cursorExt = this.o.cursor / 100; + this.xy = this.w2 * this.scale; + this.lineWidth = this.xy * this.o.thickness; + this.lineCap = this.o.lineCap; + this.radius = this.xy - this.lineWidth / 2; + + this.o.angleOffset + && (this.o.angleOffset = isNaN(this.o.angleOffset) ? 0 : this.o.angleOffset); + + this.o.angleArc + && (this.o.angleArc = isNaN(this.o.angleArc) ? this.PI2 : this.o.angleArc); + + // deg to rad + this.angleOffset = this.o.angleOffset * Math.PI / 180; + this.angleArc = this.o.angleArc * Math.PI / 180; + + // compute start and end angles + this.startAngle = 1.5 * Math.PI + this.angleOffset; + this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc; + + var s = max( + String(Math.abs(this.o.max)).length + , String(Math.abs(this.o.min)).length + , 2 + ) + 2; + + this.o.displayInput + && this.i.css({ + 'width' : ((this.w / 2 + 4) >> 0) + 'px' + ,'height' : ((this.w / 3) >> 0) + 'px' + ,'position' : 'absolute' + ,'vertical-align' : 'middle' + ,'margin-top' : ((this.w / 3) >> 0) + 'px' + ,'margin-left' : '-' + ((this.w * 3 / 4 + 2) >> 0) + 'px' + ,'border' : 0 + ,'background' : 'none' + ,'font' : this.o.fontWeight + ' ' + ((this.w / s) >> 0) + 'px ' + this.o.font + ,'text-align' : 'center' + ,'color' : this.o.inputColor || this.o.fgColor + ,'padding' : '0px' + ,'-webkit-appearance': 'none' + }) + || this.i.css({ + 'width' : '0px' + ,'visibility' : 'hidden' + }); + }; + + this.change = function (v) { + if (v == this.cv) return; + this.cv = v; + if ( + this.cH + && (this.cH(v) === false) + ) return; + }; + + this.angle = function (v) { + return (v - this.o.min) * this.angleArc / (this.o.max - this.o.min); + }; + + this.draw = function () { + + var c = this.g, // context + a = this.angle(this.cv) // Angle + , sat = this.startAngle // Start angle + , eat = sat + a // End angle + , sa, ea // Previous angles + , r = 1; + + c.lineWidth = this.lineWidth; + + c.lineCap = this.lineCap; + + this.o.cursor + && (sat = eat - this.cursorExt) + && (eat = eat + this.cursorExt); + + c.beginPath(); + c.strokeStyle = this.o.bgColor; + c.arc(this.xy, this.xy, this.radius, this.endAngle - 0.00001, this.startAngle + 0.00001, true); + c.stroke(); + + if (this.o.displayPrevious) { + ea = this.startAngle + this.angle(this.v); + sa = this.startAngle; + this.o.cursor + && (sa = ea - this.cursorExt) + && (ea = ea + this.cursorExt); + + c.beginPath(); + c.strokeStyle = this.pColor; + c.arc(this.xy, this.xy, this.radius, sa - 0.00001, ea + 0.00001, false); + c.stroke(); + r = (this.cv == this.v); + } + + c.beginPath(); + c.strokeStyle = r ? this.o.fgColor : this.fgColor ; + c.arc(this.xy, this.xy, this.radius, sat - 0.00001, eat + 0.00001, false); + c.stroke(); + }; + + this.cancel = function () { + this.val(this.v); + }; + }; + + $.fn.dial = $.fn.knob = function (o) { + return this.each( + function () { + var d = new k.Dial(); + d.o = o; + d.$ = $(this); + d.run(); + } + ).parent(); + }; + +})(jQuery); diff --git a/public/assets/js/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js b/public/assets/js/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js new file mode 100755 index 00000000..ea54476f --- /dev/null +++ b/public/assets/js/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js @@ -0,0 +1,8 @@ +/** + * jVectorMap version 1.2.2 + * + * Copyright 2011-2013, Kirill Lebedev + * Licensed under the MIT license. + * + */(function(e){var t={set:{colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,focus:1},get:{selectedRegions:1,selectedMarkers:1,mapObject:1,regionName:1}};e.fn.vectorMap=function(e){var n,r,i,n=this.children(".jvectormap-container").data("mapObject");if(e==="addMap")jvm.WorldMap.maps[arguments[1]]=arguments[2];else{if(!(e!=="set"&&e!=="get"||!t[e][arguments[1]]))return r=arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1),n[e+r].apply(n,Array.prototype.slice.call(arguments,2));e=e||{},e.container=this,n=new jvm.WorldMap(e)}return this}})(jQuery),function(e){function r(t){var n=t||window.event,r=[].slice.call(arguments,1),i=0,s=!0,o=0,u=0;return t=e.event.fix(n),t.type="mousewheel",n.wheelDelta&&(i=n.wheelDelta/120),n.detail&&(i=-n.detail/3),u=i,n.axis!==undefined&&n.axis===n.HORIZONTAL_AXIS&&(u=0,o=-1*i),n.wheelDeltaY!==undefined&&(u=n.wheelDeltaY/120),n.wheelDeltaX!==undefined&&(o=-1*n.wheelDeltaX/120),r.unshift(t,i,o,u),(e.event.dispatch||e.event.handle).apply(this,r)}var t=["DOMMouseScroll","mousewheel"];if(e.event.fixHooks)for(var n=t.length;n;)e.event.fixHooks[t[--n]]=e.event.mouseHooks;e.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var e=t.length;e;)this.addEventListener(t[--e],r,!1);else this.onmousewheel=r},teardown:function(){if(this.removeEventListener)for(var e=t.length;e;)this.removeEventListener(t[--e],r,!1);else this.onmousewheel=null}},e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})}(jQuery);var jvm={inherits:function(e,t){function n(){}n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e,e.parentClass=t},mixin:function(e,t){var n;for(n in t.prototype)t.prototype.hasOwnProperty(n)&&(e.prototype[n]=t.prototype[n])},min:function(e){var t=Number.MAX_VALUE,n;if(e instanceof Array)for(n=0;nt&&(t=e[n]);else for(n in e)e[n]>t&&(t=e[n]);return t},keys:function(e){var t=[],n;for(n in e)t.push(n);return t},values:function(e){var t=[],n,r;for(r=0;r')}}catch(e){jvm.VMLElement.prototype.createElement=function(e){return document.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}document.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)"),jvm.VMLElement.VMLInitialized=!0},jvm.VMLElement.prototype.getElementCtr=function(e){return jvm["VML"+e]},jvm.VMLElement.prototype.addClass=function(e){jvm.$(this.node).addClass(e)},jvm.VMLElement.prototype.applyAttr=function(e,t){this.node[e]=t},jvm.VMLElement.prototype.getBBox=function(){var e=jvm.$(this.node);return{x:e.position().left/this.canvas.scale,y:e.position().top/this.canvas.scale,width:e.width()/this.canvas.scale,height:e.height()/this.canvas.scale}},jvm.VMLGroupElement=function(){jvm.VMLGroupElement.parentClass.call(this,"group"),this.node.style.left="0px",this.node.style.top="0px",this.node.coordorigin="0 0"},jvm.inherits(jvm.VMLGroupElement,jvm.VMLElement),jvm.VMLGroupElement.prototype.add=function(e){this.node.appendChild(e.node)},jvm.VMLCanvasElement=function(e,t,n){this.classPrefix="VML",jvm.VMLCanvasElement.parentClass.call(this,"group"),jvm.AbstractCanvasElement.apply(this,arguments),this.node.style.position="absolute"},jvm.inherits(jvm.VMLCanvasElement,jvm.VMLElement),jvm.mixin(jvm.VMLCanvasElement,jvm.AbstractCanvasElement),jvm.VMLCanvasElement.prototype.setSize=function(e,t){var n,r,i,s;this.width=e,this.height=t,this.node.style.width=e+"px",this.node.style.height=t+"px",this.node.coordsize=e+" "+t,this.node.coordorigin="0 0";if(this.rootElement){n=this.rootElement.node.getElementsByTagName("shape");for(i=0,s=n.length;i=0)e-=t[i],i++;return i==this.scale.length-1?e=this.vectorToNum(this.scale[i]):e=this.vectorToNum(this.vectorAdd(this.scale[i],this.vectorMult(this.vectorSubtract(this.scale[i+1],this.scale[i]),e/t[i]))),e},vectorToNum:function(e){var t=0,n;for(n=0;nt&&(t=e[i]),r0?1:e<0?-1:e},mill:function(e,t,n){return{x:this.radius*(t-n)*this.radDeg,y:-this.radius*Math.log(Math.tan((45+.4*e)*this.radDeg))/.8}},mill_inv:function(e,t,n){return{lat:(2.5*Math.atan(Math.exp(.8*t/this.radius))-5*Math.PI/8)*this.degRad,lng:(n*this.radDeg+e/this.radius)*this.degRad}},merc:function(e,t,n){return{x:this.radius*(t-n)*this.radDeg,y:-this.radius*Math.log(Math.tan(Math.PI/4+e*Math.PI/360))}},merc_inv:function(e,t,n){return{lat:(2*Math.atan(Math.exp(t/this.radius))-Math.PI/2)*this.degRad,lng:(n*this.radDeg+e/this.radius)*this.degRad}},aea:function(e,t,n){var r=0,i=n*this.radDeg,s=29.5*this.radDeg,o=45.5*this.radDeg,u=e*this.radDeg,a=t*this.radDeg,f=(Math.sin(s)+Math.sin(o))/2,l=Math.cos(s)*Math.cos(s)+2*f*Math.sin(s),c=f*(a-i),h=Math.sqrt(l-2*f*Math.sin(u))/f,p=Math.sqrt(l-2*f*Math.sin(r))/f;return{x:h*Math.sin(c)*this.radius,y:-(p-h*Math.cos(c))*this.radius}},aea_inv:function(e,t,n){var r=e/this.radius,i=t/this.radius,s=0,o=n*this.radDeg,u=29.5*this.radDeg,a=45.5*this.radDeg,f=(Math.sin(u)+Math.sin(a))/2,l=Math.cos(u)*Math.cos(u)+2*f*Math.sin(u),c=Math.sqrt(l-2*f*Math.sin(s))/f,h=Math.sqrt(r*r+(c-i)*(c-i)),p=Math.atan(r/(c-i));return{lat:Math.asin((l-h*h*f*f)/(2*f))*this.degRad,lng:(o+p/f)*this.degRad}},lcc:function(e,t,n){var r=0,i=n*this.radDeg,s=t*this.radDeg,o=33*this.radDeg,u=45*this.radDeg,a=e*this.radDeg,f=Math.log(Math.cos(o)*(1/Math.cos(u)))/Math.log(Math.tan(Math.PI/4+u/2)*(1/Math.tan(Math.PI/4+o/2))),l=Math.cos(o)*Math.pow(Math.tan(Math.PI/4+o/2),f)/f,c=l*Math.pow(1/Math.tan(Math.PI/4+a/2),f),h=l*Math.pow(1/Math.tan(Math.PI/4+r/2),f);return{x:c*Math.sin(f*(s-i))*this.radius,y:-(h-c*Math.cos(f*(s-i)))*this.radius}},lcc_inv:function(e,t,n){var r=e/this.radius,i=t/this.radius,s=0,o=n*this.radDeg,u=33*this.radDeg,a=45*this.radDeg,f=Math.log(Math.cos(u)*(1/Math.cos(a)))/Math.log(Math.tan(Math.PI/4+a/2)*(1/Math.tan(Math.PI/4+u/2))),l=Math.cos(u)*Math.pow(Math.tan(Math.PI/4+u/2),f)/f,c=l*Math.pow(1/Math.tan(Math.PI/4+s/2),f),h=this.sgn(f)*Math.sqrt(r*r+(c-i)*(c-i)),p=Math.atan(r/(c-i));return{lat:(2*Math.atan(Math.pow(l/h,1/f))-Math.PI/2)*this.degRad,lng:(o+p/f)*this.degRad}}},jvm.WorldMap=function(e){var t=this,n;this.params=jvm.$.extend(!0,{},jvm.WorldMap.defaultParams,e);if(!jvm.WorldMap.maps[this.params.map])throw new Error("Attempt to use map which was not loaded: "+this.params.map);this.mapData=jvm.WorldMap.maps[this.params.map],this.markers={},this.regions={},this.regionsColors={},this.regionsData={},this.container=jvm.$("
      ").css({width:"100%",height:"100%"}).addClass("jvectormap-container"),this.params.container.append(this.container),this.container.data("mapObject",this),this.container.css({position:"relative",overflow:"hidden"}),this.defaultWidth=this.mapData.width,this.defaultHeight=this.mapData.height,this.setBackgroundColor(this.params.backgroundColor),this.onResize=function(){t.setSize()},jvm.$(window).resize(this.onResize);for(n in jvm.WorldMap.apiEvents)this.params[n]&&this.container.bind(jvm.WorldMap.apiEvents[n]+".jvectormap",this.params[n]);this.canvas=new jvm.VectorCanvas(this.container[0],this.width,this.height),"ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch?this.params.bindTouchEvents&&this.bindContainerTouchEvents():this.bindContainerEvents(),this.bindElementEvents(),this.createLabel(),this.params.zoomButtons&&this.bindZoomButtons(),this.createRegions(),this.createMarkers(this.params.markers||{}),this.setSize(),this.params.focusOn&&(typeof this.params.focusOn=="object"?this.setFocus.call(this,this.params.focusOn.scale,this.params.focusOn.x,this.params.focusOn.y):this.setFocus.call(this,this.params.focusOn)),this.params.selectedRegions&&this.setSelectedRegions(this.params.selectedRegions),this.params.selectedMarkers&&this.setSelectedMarkers(this.params.selectedMarkers),this.params.series&&this.createSeries()},jvm.WorldMap.prototype={transX:0,transY:0,scale:1,baseTransX:0,baseTransY:0,baseScale:1,width:0,height:0,setBackgroundColor:function(e){this.container.css("background-color",e)},resize:function(){var e=this.baseScale;this.width/this.height>this.defaultWidth/this.defaultHeight?(this.baseScale=this.height/this.defaultHeight,this.baseTransX=Math.abs(this.width-this.defaultWidth*this.baseScale)/(2*this.baseScale)):(this.baseScale=this.width/this.defaultWidth,this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)),this.scale*=this.baseScale/e,this.transX*=this.baseScale/e,this.transY*=this.baseScale/e},setSize:function(){this.width=this.container.width(),this.height=this.container.height(),this.resize(),this.canvas.setSize(this.width,this.height),this.applyTransform()},reset:function(){var e,t;for(e in this.series)for(t=0;tt?this.transY=t:this.transYe?this.transX=e:this.transXf[1].pageX?s=f[1].pageX+(f[0].pageX-f[1].pageX)/2:s=f[0].pageX+(f[1].pageX-f[0].pageX)/2,f[0].pageY>f[1].pageY?o=f[1].pageY+(f[0].pageY-f[1].pageY)/2:o=f[0].pageY+(f[1].pageY-f[0].pageY)/2,s-=l.left,o-=l.top,e=n.scale,t=Math.sqrt(Math.pow(f[0].pageX-f[1].pageX,2)+Math.pow(f[0].pageY-f[1].pageY,2)))),u=f.length};jvm.$(this.container).bind("touchstart",a),jvm.$(this.container).bind("touchmove",a)},bindElementEvents:function(){var e=this,t;this.container.mousemove(function(){t=!0}),this.container.delegate("[class~='jvectormap-element']","mouseover mouseout",function(t){var n=this,r=jvm.$(this).attr("class").baseVal?jvm.$(this).attr("class").baseVal:jvm.$(this).attr("class"),i=r.indexOf("jvectormap-region")===-1?"marker":"region",s=i=="region"?jvm.$(this).attr("data-code"):jvm.$(this).attr("data-index"),o=i=="region"?e.regions[s].element:e.markers[s].element,u=i=="region"?e.mapData.paths[s].name:e.markers[s].config.name||"",a=jvm.$.Event(i+"LabelShow.jvectormap"),f=jvm.$.Event(i+"Over.jvectormap");t.type=="mouseover"?(e.container.trigger(f,[s]),f.isDefaultPrevented()||o.setHovered(!0),e.label.text(u),e.container.trigger(a,[e.label,s]),a.isDefaultPrevented()||(e.label.show(),e.labelWidth=e.label.width(),e.labelHeight=e.label.height())):(o.setHovered(!1),e.label.hide(),e.container.trigger(i+"Out.jvectormap",[s]))}),this.container.delegate("[class~='jvectormap-element']","mousedown",function(e){t=!1}),this.container.delegate("[class~='jvectormap-element']","mouseup",function(n){var r=this,i=jvm.$(this).attr("class").baseVal?jvm.$(this).attr("class").baseVal:jvm.$(this).attr("class"),s=i.indexOf("jvectormap-region")===-1?"marker":"region",o=s=="region"?jvm.$(this).attr("data-code"):jvm.$(this).attr("data-index"),u=jvm.$.Event(s+"Click.jvectormap"),a=s=="region"?e.regions[o].element:e.markers[o].element;if(!t){e.container.trigger(u,[o]);if(s==="region"&&e.params.regionsSelectable||s==="marker"&&e.params.markersSelectable)u.isDefaultPrevented()||(e.params[s+"sSelectableOne"]&&e.clearSelected(s+"s"),a.setSelected(!a.isSelected))}})},bindZoomButtons:function(){var e=this;jvm.$("
      ").addClass("jvectormap-zoomin").text("+").appendTo(this.container),jvm.$("
      ").addClass("jvectormap-zoomout").html("−").appendTo(this.container),this.container.find(".jvectormap-zoomin").click(function(){e.setScale(e.scale*e.params.zoomStep,e.width/2,e.height/2)}),this.container.find(".jvectormap-zoomout").click(function(){e.setScale(e.scale/e.params.zoomStep,e.width/2,e.height/2)})},createLabel:function(){var e=this;this.label=jvm.$("
      ").addClass("jvectormap-label").appendTo(jvm.$("body")),this.container.mousemove(function(t){var n=t.pageX-15-e.labelWidth,r=t.pageY-15-e.labelHeight;n<5&&(n=t.pageX+15),r<5&&(r=t.pageY+15),e.label.is(":visible")&&e.label.css({left:n,top:r})})},setScale:function(e,t,n,r){var i,s=jvm.$.Event("zoom.jvectormap");e>this.params.zoomMax*this.baseScale?e=this.params.zoomMax*this.baseScale:eu[0].x&&au[0].y&&fi[0].x&&ei[0].y&&tarticle,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}"; +c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| +"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f); +if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d').attr($.extend(args(this), { 'type': 'text' })); + } + $replacement + .removeAttr('name') + .data({ + 'placeholder-password': $input, + 'placeholder-id': id + }) + .bind('focus.placeholder', clearPlaceholder); + $input + .data({ + 'placeholder-textinput': $replacement, + 'placeholder-id': id + }) + .before($replacement); + } + $input = $input.removeAttr('id').hide().prev().attr('id', id).show(); + // Note: `$input[0] != input` now! + } + $input.addClass('placeholder'); + $input[0].value = $input.attr('placeholder'); + } else { + $input.removeClass('placeholder'); + } + } + + function safeActiveElement() { + // Avoid IE9 `document.activeElement` of death + // https://github.com/mathiasbynens/jquery-placeholder/pull/99 + try { + return document.activeElement; + } catch (err) {} + } + +}(this, document, jQuery)); + +$(function(){ + $("[placeholder]").placeholder(); +}); diff --git a/public/assets/js/plugins/misc/modernizr.min.js b/public/assets/js/plugins/misc/modernizr.min.js new file mode 100755 index 00000000..4a76012e --- /dev/null +++ b/public/assets/js/plugins/misc/modernizr.min.js @@ -0,0 +1,4 @@ +/* Modernizr 2.7.1 (Custom Build) | MIT & BSD + * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexboxlegacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-printshiv-mq-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load-cssclassprefix:modernizr + */ +;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d',a,""].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.flexboxlegacy=function(){return J("boxDirection")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" modernizr"+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" modernizrjs modernizr"+v.join(" modernizr"):""),e}(this,this.document),function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e+~])("+m().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),f="$1"+u+"\\:$2";while(d--)b=c[d]=c[d].split("}"),b[b.length-1]=b[b.length-1].replace(e,f),c[d]=b.join("}");return c.join("{")}function z(a){var b=a.length;while(b--)a[b].removeNode()}function A(a){function g(){clearTimeout(d._removeSheetTimer),b&&b.removeNode(!0),b=null}var b,c,d=n(a),e=a.namespaces,f=a.parentWindow;return!v||a.printShived?a:(typeof e[u]=="undefined"&&e.add(u),f.attachEvent("onbeforeprint",function(){g();var d,e,f,h=a.styleSheets,i=[],j=h.length,k=Array(j);while(j--)k[j]=h[j];while(f=k.pop())if(!f.disabled&&t.test(f.media)){try{d=f.imports,e=d.length}catch(m){e=0}for(j=0;j",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b);var t=/^$|\b(?:all|print)\b/,u="html5shiv",v=!k&&function(){var c=b.documentElement;return typeof b.namespaces!="undefined"&&typeof b.parentWindow!="undefined"&&typeof c.applyElement!="undefined"&&typeof c.removeNode!="undefined"&&typeof a.attachEvent!="undefined"}();s.type+=" print",s.shivPrint=A,A(b)}(this,document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f #mq-test-1 { width: 42px; }',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b intnum.length) { + ret += strabsnum.slice(intnum.length); + } + return ret; + } else { + return '-'; + } + }; + + Morris.pad2 = function(number) { + return (number < 10 ? '0' : '') + number; + }; + + Morris.Grid = (function(_super) { + __extends(Grid, _super); + + function Grid(options) { + this.resizeHandler = __bind(this.resizeHandler, this); + var _this = this; + if (typeof options.element === 'string') { + this.el = $(document.getElementById(options.element)); + } else { + this.el = $(options.element); + } + if ((this.el == null) || this.el.length === 0) { + throw new Error("Graph container element not found"); + } + if (this.el.css('position') === 'static') { + this.el.css('position', 'relative'); + } + this.options = $.extend({}, this.gridDefaults, this.defaults || {}, options); + if (typeof this.options.units === 'string') { + this.options.postUnits = options.units; + } + this.raphael = new Raphael(this.el[0]); + this.elementWidth = null; + this.elementHeight = null; + this.dirty = false; + this.selectFrom = null; + if (this.init) { + this.init(); + } + this.setData(this.options.data); + this.el.bind('mousemove', function(evt) { + var left, offset, right, width, x; + offset = _this.el.offset(); + x = evt.pageX - offset.left; + if (_this.selectFrom) { + left = _this.data[_this.hitTest(Math.min(x, _this.selectFrom))]._x; + right = _this.data[_this.hitTest(Math.max(x, _this.selectFrom))]._x; + width = right - left; + return _this.selectionRect.attr({ + x: left, + width: width + }); + } else { + return _this.fire('hovermove', x, evt.pageY - offset.top); + } + }); + this.el.bind('mouseleave', function(evt) { + if (_this.selectFrom) { + _this.selectionRect.hide(); + _this.selectFrom = null; + } + return _this.fire('hoverout'); + }); + this.el.bind('touchstart touchmove touchend', function(evt) { + var offset, touch; + touch = evt.originalEvent.touches[0] || evt.originalEvent.changedTouches[0]; + offset = _this.el.offset(); + _this.fire('hover', touch.pageX - offset.left, touch.pageY - offset.top); + return touch; + }); + this.el.bind('click', function(evt) { + var offset; + offset = _this.el.offset(); + return _this.fire('gridclick', evt.pageX - offset.left, evt.pageY - offset.top); + }); + if (this.options.rangeSelect) { + this.selectionRect = this.raphael.rect(0, 0, 0, this.el.innerHeight()).attr({ + fill: this.options.rangeSelectColor, + stroke: false + }).toBack().hide(); + this.el.bind('mousedown', function(evt) { + var offset; + offset = _this.el.offset(); + return _this.startRange(evt.pageX - offset.left); + }); + this.el.bind('mouseup', function(evt) { + var offset; + offset = _this.el.offset(); + _this.endRange(evt.pageX - offset.left); + return _this.fire('hovermove', evt.pageX - offset.left, evt.pageY - offset.top); + }); + } + if (this.options.resize) { + $(window).bind('resize', function(evt) { + if (_this.timeoutId != null) { + window.clearTimeout(_this.timeoutId); + } + return _this.timeoutId = window.setTimeout(_this.resizeHandler, 100); + }); + } + if (this.postInit) { + this.postInit(); + } + } + + Grid.prototype.gridDefaults = { + dateFormat: null, + axes: true, + grid: true, + gridLineColor: '#aaa', + gridStrokeWidth: 0.5, + gridTextColor: '#888', + gridTextSize: 12, + gridTextFamily: 'sans-serif', + gridTextWeight: 'normal', + hideHover: false, + yLabelFormat: null, + xLabelAngle: 0, + numLines: 5, + padding: 25, + parseTime: true, + postUnits: '', + preUnits: '', + ymax: 'auto', + ymin: 'auto 0', + goals: [], + goalStrokeWidth: 1.0, + goalLineColors: ['#666633', '#999966', '#cc6666', '#663333'], + events: [], + eventStrokeWidth: 1.0, + eventLineColors: ['#005a04', '#ccffbb', '#3a5f0b', '#005502'], + rangeSelect: null, + rangeSelectColor: '#eef', + resize: false + }; + + Grid.prototype.setData = function(data, redraw) { + var e, idx, index, maxGoal, minGoal, ret, row, step, total, y, ykey, ymax, ymin, yval, _ref; + if (redraw == null) { + redraw = true; + } + this.options.data = data; + if ((data == null) || data.length === 0) { + this.data = []; + this.raphael.clear(); + if (this.hover != null) { + this.hover.hide(); + } + return; + } + ymax = this.cumulative ? 0 : null; + ymin = this.cumulative ? 0 : null; + if (this.options.goals.length > 0) { + minGoal = Math.min.apply(Math, this.options.goals); + maxGoal = Math.max.apply(Math, this.options.goals); + ymin = ymin != null ? Math.min(ymin, minGoal) : minGoal; + ymax = ymax != null ? Math.max(ymax, maxGoal) : maxGoal; + } + this.data = (function() { + var _i, _len, _results; + _results = []; + for (index = _i = 0, _len = data.length; _i < _len; index = ++_i) { + row = data[index]; + ret = { + src: row + }; + ret.label = row[this.options.xkey]; + if (this.options.parseTime) { + ret.x = Morris.parseDate(ret.label); + if (this.options.dateFormat) { + ret.label = this.options.dateFormat(ret.x); + } else if (typeof ret.label === 'number') { + ret.label = new Date(ret.label).toString(); + } + } else { + ret.x = index; + if (this.options.xLabelFormat) { + ret.label = this.options.xLabelFormat(ret); + } + } + total = 0; + ret.y = (function() { + var _j, _len1, _ref, _results1; + _ref = this.options.ykeys; + _results1 = []; + for (idx = _j = 0, _len1 = _ref.length; _j < _len1; idx = ++_j) { + ykey = _ref[idx]; + yval = row[ykey]; + if (typeof yval === 'string') { + yval = parseFloat(yval); + } + if ((yval != null) && typeof yval !== 'number') { + yval = null; + } + if (yval != null) { + if (this.cumulative) { + total += yval; + } else { + if (ymax != null) { + ymax = Math.max(yval, ymax); + ymin = Math.min(yval, ymin); + } else { + ymax = ymin = yval; + } + } + } + if (this.cumulative && (total != null)) { + ymax = Math.max(total, ymax); + ymin = Math.min(total, ymin); + } + _results1.push(yval); + } + return _results1; + }).call(this); + _results.push(ret); + } + return _results; + }).call(this); + if (this.options.parseTime) { + this.data = this.data.sort(function(a, b) { + return (a.x > b.x) - (b.x > a.x); + }); + } + this.xmin = this.data[0].x; + this.xmax = this.data[this.data.length - 1].x; + this.events = []; + if (this.options.events.length > 0) { + if (this.options.parseTime) { + this.events = (function() { + var _i, _len, _ref, _results; + _ref = this.options.events; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + e = _ref[_i]; + _results.push(Morris.parseDate(e)); + } + return _results; + }).call(this); + } else { + this.events = this.options.events; + } + this.xmax = Math.max(this.xmax, Math.max.apply(Math, this.events)); + this.xmin = Math.min(this.xmin, Math.min.apply(Math, this.events)); + } + if (this.xmin === this.xmax) { + this.xmin -= 1; + this.xmax += 1; + } + this.ymin = this.yboundary('min', ymin); + this.ymax = this.yboundary('max', ymax); + if (this.ymin === this.ymax) { + if (ymin) { + this.ymin -= 1; + } + this.ymax += 1; + } + if (((_ref = this.options.axes) === true || _ref === 'both' || _ref === 'y') || this.options.grid === true) { + if (this.options.ymax === this.gridDefaults.ymax && this.options.ymin === this.gridDefaults.ymin) { + this.grid = this.autoGridLines(this.ymin, this.ymax, this.options.numLines); + this.ymin = Math.min(this.ymin, this.grid[0]); + this.ymax = Math.max(this.ymax, this.grid[this.grid.length - 1]); + } else { + step = (this.ymax - this.ymin) / (this.options.numLines - 1); + this.grid = (function() { + var _i, _ref1, _ref2, _results; + _results = []; + for (y = _i = _ref1 = this.ymin, _ref2 = this.ymax; step > 0 ? _i <= _ref2 : _i >= _ref2; y = _i += step) { + _results.push(y); + } + return _results; + }).call(this); + } + } + this.dirty = true; + if (redraw) { + return this.redraw(); + } + }; + + Grid.prototype.yboundary = function(boundaryType, currentValue) { + var boundaryOption, suggestedValue; + boundaryOption = this.options["y" + boundaryType]; + if (typeof boundaryOption === 'string') { + if (boundaryOption.slice(0, 4) === 'auto') { + if (boundaryOption.length > 5) { + suggestedValue = parseInt(boundaryOption.slice(5), 10); + if (currentValue == null) { + return suggestedValue; + } + return Math[boundaryType](currentValue, suggestedValue); + } else { + if (currentValue != null) { + return currentValue; + } else { + return 0; + } + } + } else { + return parseInt(boundaryOption, 10); + } + } else { + return boundaryOption; + } + }; + + Grid.prototype.autoGridLines = function(ymin, ymax, nlines) { + var gmax, gmin, grid, smag, span, step, unit, y, ymag; + span = ymax - ymin; + ymag = Math.floor(Math.log(span) / Math.log(10)); + unit = Math.pow(10, ymag); + gmin = Math.floor(ymin / unit) * unit; + gmax = Math.ceil(ymax / unit) * unit; + step = (gmax - gmin) / (nlines - 1); + if (unit === 1 && step > 1 && Math.ceil(step) !== step) { + step = Math.ceil(step); + gmax = gmin + step * (nlines - 1); + } + if (gmin < 0 && gmax > 0) { + gmin = Math.floor(ymin / step) * step; + gmax = Math.ceil(ymax / step) * step; + } + if (step < 1) { + smag = Math.floor(Math.log(step) / Math.log(10)); + grid = (function() { + var _i, _results; + _results = []; + for (y = _i = gmin; step > 0 ? _i <= gmax : _i >= gmax; y = _i += step) { + _results.push(parseFloat(y.toFixed(1 - smag))); + } + return _results; + })(); + } else { + grid = (function() { + var _i, _results; + _results = []; + for (y = _i = gmin; step > 0 ? _i <= gmax : _i >= gmax; y = _i += step) { + _results.push(y); + } + return _results; + })(); + } + return grid; + }; + + Grid.prototype._calc = function() { + var bottomOffsets, gridLine, h, i, w, yLabelWidths, _ref, _ref1; + w = this.el.width(); + h = this.el.height(); + if (this.elementWidth !== w || this.elementHeight !== h || this.dirty) { + this.elementWidth = w; + this.elementHeight = h; + this.dirty = false; + this.left = this.options.padding; + this.right = this.elementWidth - this.options.padding; + this.top = this.options.padding; + this.bottom = this.elementHeight - this.options.padding; + if ((_ref = this.options.axes) === true || _ref === 'both' || _ref === 'y') { + yLabelWidths = (function() { + var _i, _len, _ref1, _results; + _ref1 = this.grid; + _results = []; + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + gridLine = _ref1[_i]; + _results.push(this.measureText(this.yAxisFormat(gridLine)).width); + } + return _results; + }).call(this); + this.left += Math.max.apply(Math, yLabelWidths); + } + if ((_ref1 = this.options.axes) === true || _ref1 === 'both' || _ref1 === 'x') { + bottomOffsets = (function() { + var _i, _ref2, _results; + _results = []; + for (i = _i = 0, _ref2 = this.data.length; 0 <= _ref2 ? _i < _ref2 : _i > _ref2; i = 0 <= _ref2 ? ++_i : --_i) { + _results.push(this.measureText(this.data[i].text, -this.options.xLabelAngle).height); + } + return _results; + }).call(this); + this.bottom -= Math.max.apply(Math, bottomOffsets); + } + this.width = Math.max(1, this.right - this.left); + this.height = Math.max(1, this.bottom - this.top); + this.dx = this.width / (this.xmax - this.xmin); + this.dy = this.height / (this.ymax - this.ymin); + if (this.calc) { + return this.calc(); + } + } + }; + + Grid.prototype.transY = function(y) { + return this.bottom - (y - this.ymin) * this.dy; + }; + + Grid.prototype.transX = function(x) { + if (this.data.length === 1) { + return (this.left + this.right) / 2; + } else { + return this.left + (x - this.xmin) * this.dx; + } + }; + + Grid.prototype.redraw = function() { + this.raphael.clear(); + this._calc(); + this.drawGrid(); + this.drawGoals(); + this.drawEvents(); + if (this.draw) { + return this.draw(); + } + }; + + Grid.prototype.measureText = function(text, angle) { + var ret, tt; + if (angle == null) { + angle = 0; + } + tt = this.raphael.text(100, 100, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).rotate(angle); + ret = tt.getBBox(); + tt.remove(); + return ret; + }; + + Grid.prototype.yAxisFormat = function(label) { + return this.yLabelFormat(label); + }; + + Grid.prototype.yLabelFormat = function(label) { + if (typeof this.options.yLabelFormat === 'function') { + return this.options.yLabelFormat(label); + } else { + return "" + this.options.preUnits + (Morris.commas(label)) + this.options.postUnits; + } + }; + + Grid.prototype.drawGrid = function() { + var lineY, y, _i, _len, _ref, _ref1, _ref2, _results; + if (this.options.grid === false && ((_ref = this.options.axes) !== true && _ref !== 'both' && _ref !== 'y')) { + return; + } + _ref1 = this.grid; + _results = []; + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + lineY = _ref1[_i]; + y = this.transY(lineY); + if ((_ref2 = this.options.axes) === true || _ref2 === 'both' || _ref2 === 'y') { + this.drawYAxisLabel(this.left - this.options.padding / 2, y, this.yAxisFormat(lineY)); + } + if (this.options.grid) { + _results.push(this.drawGridLine("M" + this.left + "," + y + "H" + (this.left + this.width))); + } else { + _results.push(void 0); + } + } + return _results; + }; + + Grid.prototype.drawGoals = function() { + var color, goal, i, _i, _len, _ref, _results; + _ref = this.options.goals; + _results = []; + for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { + goal = _ref[i]; + color = this.options.goalLineColors[i % this.options.goalLineColors.length]; + _results.push(this.drawGoal(goal, color)); + } + return _results; + }; + + Grid.prototype.drawEvents = function() { + var color, event, i, _i, _len, _ref, _results; + _ref = this.events; + _results = []; + for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { + event = _ref[i]; + color = this.options.eventLineColors[i % this.options.eventLineColors.length]; + _results.push(this.drawEvent(event, color)); + } + return _results; + }; + + Grid.prototype.drawGoal = function(goal, color) { + return this.raphael.path("M" + this.left + "," + (this.transY(goal)) + "H" + this.right).attr('stroke', color).attr('stroke-width', this.options.goalStrokeWidth); + }; + + Grid.prototype.drawEvent = function(event, color) { + return this.raphael.path("M" + (this.transX(event)) + "," + this.bottom + "V" + this.top).attr('stroke', color).attr('stroke-width', this.options.eventStrokeWidth); + }; + + Grid.prototype.drawYAxisLabel = function(xPos, yPos, text) { + return this.raphael.text(xPos, yPos, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).attr('fill', this.options.gridTextColor).attr('text-anchor', 'end'); + }; + + Grid.prototype.drawGridLine = function(path) { + return this.raphael.path(path).attr('stroke', this.options.gridLineColor).attr('stroke-width', this.options.gridStrokeWidth); + }; + + Grid.prototype.startRange = function(x) { + this.hover.hide(); + this.selectFrom = x; + return this.selectionRect.attr({ + x: x, + width: 0 + }).show(); + }; + + Grid.prototype.endRange = function(x) { + var end, start; + if (this.selectFrom) { + start = Math.min(this.selectFrom, x); + end = Math.max(this.selectFrom, x); + this.options.rangeSelect.call(this.el, { + start: this.data[this.hitTest(start)].x, + end: this.data[this.hitTest(end)].x + }); + return this.selectFrom = null; + } + }; + + Grid.prototype.resizeHandler = function() { + this.timeoutId = null; + this.raphael.setSize(this.el.width(), this.el.height()); + return this.redraw(); + }; + + return Grid; + + })(Morris.EventEmitter); + + Morris.parseDate = function(date) { + var isecs, m, msecs, n, o, offsetmins, p, q, r, ret, secs; + if (typeof date === 'number') { + return date; + } + m = date.match(/^(\d+) Q(\d)$/); + n = date.match(/^(\d+)-(\d+)$/); + o = date.match(/^(\d+)-(\d+)-(\d+)$/); + p = date.match(/^(\d+) W(\d+)$/); + q = date.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+)(Z|([+-])(\d\d):?(\d\d))?$/); + r = date.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+):(\d+(\.\d+)?)(Z|([+-])(\d\d):?(\d\d))?$/); + if (m) { + return new Date(parseInt(m[1], 10), parseInt(m[2], 10) * 3 - 1, 1).getTime(); + } else if (n) { + return new Date(parseInt(n[1], 10), parseInt(n[2], 10) - 1, 1).getTime(); + } else if (o) { + return new Date(parseInt(o[1], 10), parseInt(o[2], 10) - 1, parseInt(o[3], 10)).getTime(); + } else if (p) { + ret = new Date(parseInt(p[1], 10), 0, 1); + if (ret.getDay() !== 4) { + ret.setMonth(0, 1 + ((4 - ret.getDay()) + 7) % 7); + } + return ret.getTime() + parseInt(p[2], 10) * 604800000; + } else if (q) { + if (!q[6]) { + return new Date(parseInt(q[1], 10), parseInt(q[2], 10) - 1, parseInt(q[3], 10), parseInt(q[4], 10), parseInt(q[5], 10)).getTime(); + } else { + offsetmins = 0; + if (q[6] !== 'Z') { + offsetmins = parseInt(q[8], 10) * 60 + parseInt(q[9], 10); + if (q[7] === '+') { + offsetmins = 0 - offsetmins; + } + } + return Date.UTC(parseInt(q[1], 10), parseInt(q[2], 10) - 1, parseInt(q[3], 10), parseInt(q[4], 10), parseInt(q[5], 10) + offsetmins); + } + } else if (r) { + secs = parseFloat(r[6]); + isecs = Math.floor(secs); + msecs = Math.round((secs - isecs) * 1000); + if (!r[8]) { + return new Date(parseInt(r[1], 10), parseInt(r[2], 10) - 1, parseInt(r[3], 10), parseInt(r[4], 10), parseInt(r[5], 10), isecs, msecs).getTime(); + } else { + offsetmins = 0; + if (r[8] !== 'Z') { + offsetmins = parseInt(r[10], 10) * 60 + parseInt(r[11], 10); + if (r[9] === '+') { + offsetmins = 0 - offsetmins; + } + } + return Date.UTC(parseInt(r[1], 10), parseInt(r[2], 10) - 1, parseInt(r[3], 10), parseInt(r[4], 10), parseInt(r[5], 10) + offsetmins, isecs, msecs); + } + } else { + return new Date(parseInt(date, 10), 0, 1).getTime(); + } + }; + + Morris.Hover = (function() { + Hover.defaults = { + "class": 'morris-hover morris-default-style' + }; + + function Hover(options) { + if (options == null) { + options = {}; + } + this.options = $.extend({}, Morris.Hover.defaults, options); + this.el = $("
      "); + this.el.hide(); + this.options.parent.append(this.el); + } + + Hover.prototype.update = function(html, x, y) { + this.html(html); + this.show(); + return this.moveTo(x, y); + }; + + Hover.prototype.html = function(content) { + return this.el.html(content); + }; + + Hover.prototype.moveTo = function(x, y) { + var hoverHeight, hoverWidth, left, parentHeight, parentWidth, top; + parentWidth = this.options.parent.innerWidth(); + parentHeight = this.options.parent.innerHeight(); + hoverWidth = this.el.outerWidth(); + hoverHeight = this.el.outerHeight(); + left = Math.min(Math.max(0, x - hoverWidth / 2), parentWidth - hoverWidth); + if (y != null) { + top = y - hoverHeight - 10; + if (top < 0) { + top = y + 10; + if (top + hoverHeight > parentHeight) { + top = parentHeight / 2 - hoverHeight / 2; + } + } + } else { + top = parentHeight / 2 - hoverHeight / 2; + } + return this.el.css({ + left: left + "px", + top: parseInt(top) + "px" + }); + }; + + Hover.prototype.show = function() { + return this.el.show(); + }; + + Hover.prototype.hide = function() { + return this.el.hide(); + }; + + return Hover; + + })(); + + Morris.Line = (function(_super) { + __extends(Line, _super); + + function Line(options) { + this.hilight = __bind(this.hilight, this); + this.onHoverOut = __bind(this.onHoverOut, this); + this.onHoverMove = __bind(this.onHoverMove, this); + this.onGridClick = __bind(this.onGridClick, this); + if (!(this instanceof Morris.Line)) { + return new Morris.Line(options); + } + Line.__super__.constructor.call(this, options); + } + + Line.prototype.init = function() { + if (this.options.hideHover !== 'always') { + this.hover = new Morris.Hover({ + parent: this.el + }); + this.on('hovermove', this.onHoverMove); + this.on('hoverout', this.onHoverOut); + return this.on('gridclick', this.onGridClick); + } + }; + + Line.prototype.defaults = { + lineWidth: 3, + pointSize: 4, + lineColors: ['#0b62a4', '#7A92A3', '#4da74d', '#afd8f8', '#edc240', '#cb4b4b', '#9440ed'], + pointStrokeWidths: [1], + pointStrokeColors: ['#ffffff'], + pointFillColors: [], + smooth: true, + xLabels: 'auto', + xLabelFormat: null, + xLabelMargin: 24, + continuousLine: true, + hideHover: false + }; + + Line.prototype.calc = function() { + this.calcPoints(); + return this.generatePaths(); + }; + + Line.prototype.calcPoints = function() { + var row, y, _i, _len, _ref, _results; + _ref = this.data; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + row = _ref[_i]; + row._x = this.transX(row.x); + row._y = (function() { + var _j, _len1, _ref1, _results1; + _ref1 = row.y; + _results1 = []; + for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { + y = _ref1[_j]; + if (y != null) { + _results1.push(this.transY(y)); + } else { + _results1.push(y); + } + } + return _results1; + }).call(this); + _results.push(row._ymax = Math.min.apply(Math, [this.bottom].concat((function() { + var _j, _len1, _ref1, _results1; + _ref1 = row._y; + _results1 = []; + for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { + y = _ref1[_j]; + if (y != null) { + _results1.push(y); + } + } + return _results1; + })()))); + } + return _results; + }; + + Line.prototype.hitTest = function(x) { + var index, r, _i, _len, _ref; + if (this.data.length === 0) { + return null; + } + _ref = this.data.slice(1); + for (index = _i = 0, _len = _ref.length; _i < _len; index = ++_i) { + r = _ref[index]; + if (x < (r._x + this.data[index]._x) / 2) { + break; + } + } + return index; + }; + + Line.prototype.onGridClick = function(x, y) { + var index; + index = this.hitTest(x); + return this.fire('click', index, this.data[index].src, x, y); + }; + + Line.prototype.onHoverMove = function(x, y) { + var index; + index = this.hitTest(x); + return this.displayHoverForRow(index); + }; + + Line.prototype.onHoverOut = function() { + if (this.options.hideHover !== false) { + return this.displayHoverForRow(null); + } + }; + + Line.prototype.displayHoverForRow = function(index) { + var _ref; + if (index != null) { + (_ref = this.hover).update.apply(_ref, this.hoverContentForRow(index)); + return this.hilight(index); + } else { + this.hover.hide(); + return this.hilight(); + } + }; + + Line.prototype.hoverContentForRow = function(index) { + var content, j, row, y, _i, _len, _ref; + row = this.data[index]; + content = "
      " + row.label + "
      "; + _ref = row.y; + for (j = _i = 0, _len = _ref.length; _i < _len; j = ++_i) { + y = _ref[j]; + content += "
      \n " + this.options.labels[j] + ":\n " + (this.yLabelFormat(y)) + "\n
      "; + } + if (typeof this.options.hoverCallback === 'function') { + content = this.options.hoverCallback(index, this.options, content, row.src); + } + return [content, row._x, row._ymax]; + }; + + Line.prototype.generatePaths = function() { + var c, coords, i, r, smooth; + return this.paths = (function() { + var _i, _ref, _ref1, _results; + _results = []; + for (i = _i = 0, _ref = this.options.ykeys.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) { + smooth = typeof this.options.smooth === "boolean" ? this.options.smooth : (_ref1 = this.options.ykeys[i], __indexOf.call(this.options.smooth, _ref1) >= 0); + coords = (function() { + var _j, _len, _ref2, _results1; + _ref2 = this.data; + _results1 = []; + for (_j = 0, _len = _ref2.length; _j < _len; _j++) { + r = _ref2[_j]; + if (r._y[i] !== void 0) { + _results1.push({ + x: r._x, + y: r._y[i] + }); + } + } + return _results1; + }).call(this); + if (this.options.continuousLine) { + coords = (function() { + var _j, _len, _results1; + _results1 = []; + for (_j = 0, _len = coords.length; _j < _len; _j++) { + c = coords[_j]; + if (c.y !== null) { + _results1.push(c); + } + } + return _results1; + })(); + } + if (coords.length > 1) { + _results.push(Morris.Line.createPath(coords, smooth, this.bottom)); + } else { + _results.push(null); + } + } + return _results; + }).call(this); + }; + + Line.prototype.draw = function() { + var _ref; + if ((_ref = this.options.axes) === true || _ref === 'both' || _ref === 'x') { + this.drawXAxis(); + } + this.drawSeries(); + if (this.options.hideHover === false) { + return this.displayHoverForRow(this.data.length - 1); + } + }; + + Line.prototype.drawXAxis = function() { + var drawLabel, l, labels, prevAngleMargin, prevLabelMargin, row, ypos, _i, _len, _results, + _this = this; + ypos = this.bottom + this.options.padding / 2; + prevLabelMargin = null; + prevAngleMargin = null; + drawLabel = function(labelText, xpos) { + var label, labelBox, margin, offset, textBox; + label = _this.drawXAxisLabel(_this.transX(xpos), ypos, labelText); + textBox = label.getBBox(); + label.transform("r" + (-_this.options.xLabelAngle)); + labelBox = label.getBBox(); + label.transform("t0," + (labelBox.height / 2) + "..."); + if (_this.options.xLabelAngle !== 0) { + offset = -0.5 * textBox.width * Math.cos(_this.options.xLabelAngle * Math.PI / 180.0); + label.transform("t" + offset + ",0..."); + } + labelBox = label.getBBox(); + if (((prevLabelMargin == null) || prevLabelMargin >= labelBox.x + labelBox.width || (prevAngleMargin != null) && prevAngleMargin >= labelBox.x) && labelBox.x >= 0 && (labelBox.x + labelBox.width) < _this.el.width()) { + if (_this.options.xLabelAngle !== 0) { + margin = 1.25 * _this.options.gridTextSize / Math.sin(_this.options.xLabelAngle * Math.PI / 180.0); + prevAngleMargin = labelBox.x - margin; + } + return prevLabelMargin = labelBox.x - _this.options.xLabelMargin; + } else { + return label.remove(); + } + }; + if (this.options.parseTime) { + if (this.data.length === 1 && this.options.xLabels === 'auto') { + labels = [[this.data[0].label, this.data[0].x]]; + } else { + labels = Morris.labelSeries(this.xmin, this.xmax, this.width, this.options.xLabels, this.options.xLabelFormat); + } + } else { + labels = (function() { + var _i, _len, _ref, _results; + _ref = this.data; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + row = _ref[_i]; + _results.push([row.label, row.x]); + } + return _results; + }).call(this); + } + labels.reverse(); + _results = []; + for (_i = 0, _len = labels.length; _i < _len; _i++) { + l = labels[_i]; + _results.push(drawLabel(l[0], l[1])); + } + return _results; + }; + + Line.prototype.drawSeries = function() { + var i, _i, _j, _ref, _ref1, _results; + this.seriesPoints = []; + for (i = _i = _ref = this.options.ykeys.length - 1; _ref <= 0 ? _i <= 0 : _i >= 0; i = _ref <= 0 ? ++_i : --_i) { + this._drawLineFor(i); + } + _results = []; + for (i = _j = _ref1 = this.options.ykeys.length - 1; _ref1 <= 0 ? _j <= 0 : _j >= 0; i = _ref1 <= 0 ? ++_j : --_j) { + _results.push(this._drawPointFor(i)); + } + return _results; + }; + + Line.prototype._drawPointFor = function(index) { + var circle, row, _i, _len, _ref, _results; + this.seriesPoints[index] = []; + _ref = this.data; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + row = _ref[_i]; + circle = null; + if (row._y[index] != null) { + circle = this.drawLinePoint(row._x, row._y[index], this.colorFor(row, index, 'point'), index); + } + _results.push(this.seriesPoints[index].push(circle)); + } + return _results; + }; + + Line.prototype._drawLineFor = function(index) { + var path; + path = this.paths[index]; + if (path !== null) { + return this.drawLinePath(path, this.colorFor(null, index, 'line'), index); + } + }; + + Line.createPath = function(coords, smooth, bottom) { + var coord, g, grads, i, ix, lg, path, prevCoord, x1, x2, y1, y2, _i, _len; + path = ""; + if (smooth) { + grads = Morris.Line.gradients(coords); + } + prevCoord = { + y: null + }; + for (i = _i = 0, _len = coords.length; _i < _len; i = ++_i) { + coord = coords[i]; + if (coord.y != null) { + if (prevCoord.y != null) { + if (smooth) { + g = grads[i]; + lg = grads[i - 1]; + ix = (coord.x - prevCoord.x) / 4; + x1 = prevCoord.x + ix; + y1 = Math.min(bottom, prevCoord.y + ix * lg); + x2 = coord.x - ix; + y2 = Math.min(bottom, coord.y - ix * g); + path += "C" + x1 + "," + y1 + "," + x2 + "," + y2 + "," + coord.x + "," + coord.y; + } else { + path += "L" + coord.x + "," + coord.y; + } + } else { + if (!smooth || (grads[i] != null)) { + path += "M" + coord.x + "," + coord.y; + } + } + } + prevCoord = coord; + } + return path; + }; + + Line.gradients = function(coords) { + var coord, grad, i, nextCoord, prevCoord, _i, _len, _results; + grad = function(a, b) { + return (a.y - b.y) / (a.x - b.x); + }; + _results = []; + for (i = _i = 0, _len = coords.length; _i < _len; i = ++_i) { + coord = coords[i]; + if (coord.y != null) { + nextCoord = coords[i + 1] || { + y: null + }; + prevCoord = coords[i - 1] || { + y: null + }; + if ((prevCoord.y != null) && (nextCoord.y != null)) { + _results.push(grad(prevCoord, nextCoord)); + } else if (prevCoord.y != null) { + _results.push(grad(prevCoord, coord)); + } else if (nextCoord.y != null) { + _results.push(grad(coord, nextCoord)); + } else { + _results.push(null); + } + } else { + _results.push(null); + } + } + return _results; + }; + + Line.prototype.hilight = function(index) { + var i, _i, _j, _ref, _ref1; + if (this.prevHilight !== null && this.prevHilight !== index) { + for (i = _i = 0, _ref = this.seriesPoints.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) { + if (this.seriesPoints[i][this.prevHilight]) { + this.seriesPoints[i][this.prevHilight].animate(this.pointShrinkSeries(i)); + } + } + } + if (index !== null && this.prevHilight !== index) { + for (i = _j = 0, _ref1 = this.seriesPoints.length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = 0 <= _ref1 ? ++_j : --_j) { + if (this.seriesPoints[i][index]) { + this.seriesPoints[i][index].animate(this.pointGrowSeries(i)); + } + } + } + return this.prevHilight = index; + }; + + Line.prototype.colorFor = function(row, sidx, type) { + if (typeof this.options.lineColors === 'function') { + return this.options.lineColors.call(this, row, sidx, type); + } else if (type === 'point') { + return this.options.pointFillColors[sidx % this.options.pointFillColors.length] || this.options.lineColors[sidx % this.options.lineColors.length]; + } else { + return this.options.lineColors[sidx % this.options.lineColors.length]; + } + }; + + Line.prototype.drawXAxisLabel = function(xPos, yPos, text) { + return this.raphael.text(xPos, yPos, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).attr('fill', this.options.gridTextColor); + }; + + Line.prototype.drawLinePath = function(path, lineColor, lineIndex) { + return this.raphael.path(path).attr('stroke', lineColor).attr('stroke-width', this.lineWidthForSeries(lineIndex)); + }; + + Line.prototype.drawLinePoint = function(xPos, yPos, pointColor, lineIndex) { + return this.raphael.circle(xPos, yPos, this.pointSizeForSeries(lineIndex)).attr('fill', pointColor).attr('stroke-width', this.pointStrokeWidthForSeries(lineIndex)).attr('stroke', this.pointStrokeColorForSeries(lineIndex)); + }; + + Line.prototype.pointStrokeWidthForSeries = function(index) { + return this.options.pointStrokeWidths[index % this.options.pointStrokeWidths.length]; + }; + + Line.prototype.pointStrokeColorForSeries = function(index) { + return this.options.pointStrokeColors[index % this.options.pointStrokeColors.length]; + }; + + Line.prototype.lineWidthForSeries = function(index) { + if (this.options.lineWidth instanceof Array) { + return this.options.lineWidth[index % this.options.lineWidth.length]; + } else { + return this.options.lineWidth; + } + }; + + Line.prototype.pointSizeForSeries = function(index) { + if (this.options.pointSize instanceof Array) { + return this.options.pointSize[index % this.options.pointSize.length]; + } else { + return this.options.pointSize; + } + }; + + Line.prototype.pointGrowSeries = function(index) { + return Raphael.animation({ + r: this.pointSizeForSeries(index) + 3 + }, 25, 'linear'); + }; + + Line.prototype.pointShrinkSeries = function(index) { + return Raphael.animation({ + r: this.pointSizeForSeries(index) + }, 25, 'linear'); + }; + + return Line; + + })(Morris.Grid); + + Morris.labelSeries = function(dmin, dmax, pxwidth, specName, xLabelFormat) { + var d, d0, ddensity, name, ret, s, spec, t, _i, _len, _ref; + ddensity = 200 * (dmax - dmin) / pxwidth; + d0 = new Date(dmin); + spec = Morris.LABEL_SPECS[specName]; + if (spec === void 0) { + _ref = Morris.AUTO_LABEL_ORDER; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + name = _ref[_i]; + s = Morris.LABEL_SPECS[name]; + if (ddensity >= s.span) { + spec = s; + break; + } + } + } + if (spec === void 0) { + spec = Morris.LABEL_SPECS["second"]; + } + if (xLabelFormat) { + spec = $.extend({}, spec, { + fmt: xLabelFormat + }); + } + d = spec.start(d0); + ret = []; + while ((t = d.getTime()) <= dmax) { + if (t >= dmin) { + ret.push([spec.fmt(d), t]); + } + spec.incr(d); + } + return ret; + }; + + minutesSpecHelper = function(interval) { + return { + span: interval * 60 * 1000, + start: function(d) { + return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours()); + }, + fmt: function(d) { + return "" + (Morris.pad2(d.getHours())) + ":" + (Morris.pad2(d.getMinutes())); + }, + incr: function(d) { + return d.setUTCMinutes(d.getUTCMinutes() + interval); + } + }; + }; + + secondsSpecHelper = function(interval) { + return { + span: interval * 1000, + start: function(d) { + return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes()); + }, + fmt: function(d) { + return "" + (Morris.pad2(d.getHours())) + ":" + (Morris.pad2(d.getMinutes())) + ":" + (Morris.pad2(d.getSeconds())); + }, + incr: function(d) { + return d.setUTCSeconds(d.getUTCSeconds() + interval); + } + }; + }; + + Morris.LABEL_SPECS = { + "decade": { + span: 172800000000, + start: function(d) { + return new Date(d.getFullYear() - d.getFullYear() % 10, 0, 1); + }, + fmt: function(d) { + return "" + (d.getFullYear()); + }, + incr: function(d) { + return d.setFullYear(d.getFullYear() + 10); + } + }, + "year": { + span: 17280000000, + start: function(d) { + return new Date(d.getFullYear(), 0, 1); + }, + fmt: function(d) { + return "" + (d.getFullYear()); + }, + incr: function(d) { + return d.setFullYear(d.getFullYear() + 1); + } + }, + "month": { + span: 2419200000, + start: function(d) { + return new Date(d.getFullYear(), d.getMonth(), 1); + }, + fmt: function(d) { + return "" + (d.getFullYear()) + "-" + (Morris.pad2(d.getMonth() + 1)); + }, + incr: function(d) { + return d.setMonth(d.getMonth() + 1); + } + }, + "week": { + span: 604800000, + start: function(d) { + return new Date(d.getFullYear(), d.getMonth(), d.getDate()); + }, + fmt: function(d) { + return "" + (d.getFullYear()) + "-" + (Morris.pad2(d.getMonth() + 1)) + "-" + (Morris.pad2(d.getDate())); + }, + incr: function(d) { + return d.setDate(d.getDate() + 7); + } + }, + "day": { + span: 86400000, + start: function(d) { + return new Date(d.getFullYear(), d.getMonth(), d.getDate()); + }, + fmt: function(d) { + return "" + (d.getFullYear()) + "-" + (Morris.pad2(d.getMonth() + 1)) + "-" + (Morris.pad2(d.getDate())); + }, + incr: function(d) { + return d.setDate(d.getDate() + 1); + } + }, + "hour": minutesSpecHelper(60), + "30min": minutesSpecHelper(30), + "15min": minutesSpecHelper(15), + "10min": minutesSpecHelper(10), + "5min": minutesSpecHelper(5), + "minute": minutesSpecHelper(1), + "30sec": secondsSpecHelper(30), + "15sec": secondsSpecHelper(15), + "10sec": secondsSpecHelper(10), + "5sec": secondsSpecHelper(5), + "second": secondsSpecHelper(1) + }; + + Morris.AUTO_LABEL_ORDER = ["decade", "year", "month", "week", "day", "hour", "30min", "15min", "10min", "5min", "minute", "30sec", "15sec", "10sec", "5sec", "second"]; + + Morris.Area = (function(_super) { + var areaDefaults; + + __extends(Area, _super); + + areaDefaults = { + fillOpacity: 'auto', + behaveLikeLine: false + }; + + function Area(options) { + var areaOptions; + if (!(this instanceof Morris.Area)) { + return new Morris.Area(options); + } + areaOptions = $.extend({}, areaDefaults, options); + this.cumulative = !areaOptions.behaveLikeLine; + if (areaOptions.fillOpacity === 'auto') { + areaOptions.fillOpacity = areaOptions.behaveLikeLine ? .8 : 1; + } + Area.__super__.constructor.call(this, areaOptions); + } + + Area.prototype.calcPoints = function() { + var row, total, y, _i, _len, _ref, _results; + _ref = this.data; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + row = _ref[_i]; + row._x = this.transX(row.x); + total = 0; + row._y = (function() { + var _j, _len1, _ref1, _results1; + _ref1 = row.y; + _results1 = []; + for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { + y = _ref1[_j]; + if (this.options.behaveLikeLine) { + _results1.push(this.transY(y)); + } else { + total += y || 0; + _results1.push(this.transY(total)); + } + } + return _results1; + }).call(this); + _results.push(row._ymax = Math.max.apply(Math, row._y)); + } + return _results; + }; + + Area.prototype.drawSeries = function() { + var i, range, _i, _j, _k, _len, _ref, _ref1, _results, _results1, _results2; + this.seriesPoints = []; + if (this.options.behaveLikeLine) { + range = (function() { + _results = []; + for (var _i = 0, _ref = this.options.ykeys.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; 0 <= _ref ? _i++ : _i--){ _results.push(_i); } + return _results; + }).apply(this); + } else { + range = (function() { + _results1 = []; + for (var _j = _ref1 = this.options.ykeys.length - 1; _ref1 <= 0 ? _j <= 0 : _j >= 0; _ref1 <= 0 ? _j++ : _j--){ _results1.push(_j); } + return _results1; + }).apply(this); + } + _results2 = []; + for (_k = 0, _len = range.length; _k < _len; _k++) { + i = range[_k]; + this._drawFillFor(i); + this._drawLineFor(i); + _results2.push(this._drawPointFor(i)); + } + return _results2; + }; + + Area.prototype._drawFillFor = function(index) { + var path; + path = this.paths[index]; + if (path !== null) { + path = path + ("L" + (this.transX(this.xmax)) + "," + this.bottom + "L" + (this.transX(this.xmin)) + "," + this.bottom + "Z"); + return this.drawFilledPath(path, this.fillForSeries(index)); + } + }; + + Area.prototype.fillForSeries = function(i) { + var color; + color = Raphael.rgb2hsl(this.colorFor(this.data[i], i, 'line')); + return Raphael.hsl(color.h, this.options.behaveLikeLine ? color.s * 0.9 : color.s * 0.75, Math.min(0.98, this.options.behaveLikeLine ? color.l * 1.2 : color.l * 1.25)); + }; + + Area.prototype.drawFilledPath = function(path, fill) { + return this.raphael.path(path).attr('fill', fill).attr('fill-opacity', this.options.fillOpacity).attr('stroke', 'none'); + }; + + return Area; + + })(Morris.Line); + + Morris.Bar = (function(_super) { + __extends(Bar, _super); + + function Bar(options) { + this.onHoverOut = __bind(this.onHoverOut, this); + this.onHoverMove = __bind(this.onHoverMove, this); + this.onGridClick = __bind(this.onGridClick, this); + if (!(this instanceof Morris.Bar)) { + return new Morris.Bar(options); + } + Bar.__super__.constructor.call(this, $.extend({}, options, { + parseTime: false + })); + } + + Bar.prototype.init = function() { + this.cumulative = this.options.stacked; + if (this.options.hideHover !== 'always') { + this.hover = new Morris.Hover({ + parent: this.el + }); + this.on('hovermove', this.onHoverMove); + this.on('hoverout', this.onHoverOut); + return this.on('gridclick', this.onGridClick); + } + }; + + Bar.prototype.defaults = { + barSizeRatio: 0.75, + barGap: 3, + barColors: ['#0b62a4', '#7a92a3', '#4da74d', '#afd8f8', '#edc240', '#cb4b4b', '#9440ed'], + barOpacity: 1.0, + barRadius: [0, 0, 0, 0], + xLabelMargin: 50 + }; + + Bar.prototype.calc = function() { + var _ref; + this.calcBars(); + if (this.options.hideHover === false) { + return (_ref = this.hover).update.apply(_ref, this.hoverContentForRow(this.data.length - 1)); + } + }; + + Bar.prototype.calcBars = function() { + var idx, row, y, _i, _len, _ref, _results; + _ref = this.data; + _results = []; + for (idx = _i = 0, _len = _ref.length; _i < _len; idx = ++_i) { + row = _ref[idx]; + row._x = this.left + this.width * (idx + 0.5) / this.data.length; + _results.push(row._y = (function() { + var _j, _len1, _ref1, _results1; + _ref1 = row.y; + _results1 = []; + for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { + y = _ref1[_j]; + if (y != null) { + _results1.push(this.transY(y)); + } else { + _results1.push(null); + } + } + return _results1; + }).call(this)); + } + return _results; + }; + + Bar.prototype.draw = function() { + var _ref; + if ((_ref = this.options.axes) === true || _ref === 'both' || _ref === 'x') { + this.drawXAxis(); + } + return this.drawSeries(); + }; + + Bar.prototype.drawXAxis = function() { + var i, label, labelBox, margin, offset, prevAngleMargin, prevLabelMargin, row, textBox, ypos, _i, _ref, _results; + ypos = this.bottom + (this.options.xAxisLabelTopPadding || this.options.padding / 2); + prevLabelMargin = null; + prevAngleMargin = null; + _results = []; + for (i = _i = 0, _ref = this.data.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) { + row = this.data[this.data.length - 1 - i]; + label = this.drawXAxisLabel(row._x, ypos, row.label); + textBox = label.getBBox(); + label.transform("r" + (-this.options.xLabelAngle)); + labelBox = label.getBBox(); + label.transform("t0," + (labelBox.height / 2) + "..."); + if (this.options.xLabelAngle !== 0) { + offset = -0.5 * textBox.width * Math.cos(this.options.xLabelAngle * Math.PI / 180.0); + label.transform("t" + offset + ",0..."); + } + if (((prevLabelMargin == null) || prevLabelMargin >= labelBox.x + labelBox.width || (prevAngleMargin != null) && prevAngleMargin >= labelBox.x) && labelBox.x >= 0 && (labelBox.x + labelBox.width) < this.el.width()) { + if (this.options.xLabelAngle !== 0) { + margin = 1.25 * this.options.gridTextSize / Math.sin(this.options.xLabelAngle * Math.PI / 180.0); + prevAngleMargin = labelBox.x - margin; + } + _results.push(prevLabelMargin = labelBox.x - this.options.xLabelMargin); + } else { + _results.push(label.remove()); + } + } + return _results; + }; + + Bar.prototype.drawSeries = function() { + var barWidth, bottom, groupWidth, idx, lastTop, left, leftPadding, numBars, row, sidx, size, top, ypos, zeroPos; + groupWidth = this.width / this.options.data.length; + numBars = this.options.stacked != null ? 1 : this.options.ykeys.length; + barWidth = (groupWidth * this.options.barSizeRatio - this.options.barGap * (numBars - 1)) / numBars; + leftPadding = groupWidth * (1 - this.options.barSizeRatio) / 2; + zeroPos = this.ymin <= 0 && this.ymax >= 0 ? this.transY(0) : null; + return this.bars = (function() { + var _i, _len, _ref, _results; + _ref = this.data; + _results = []; + for (idx = _i = 0, _len = _ref.length; _i < _len; idx = ++_i) { + row = _ref[idx]; + lastTop = 0; + _results.push((function() { + var _j, _len1, _ref1, _results1; + _ref1 = row._y; + _results1 = []; + for (sidx = _j = 0, _len1 = _ref1.length; _j < _len1; sidx = ++_j) { + ypos = _ref1[sidx]; + if (ypos !== null) { + if (zeroPos) { + top = Math.min(ypos, zeroPos); + bottom = Math.max(ypos, zeroPos); + } else { + top = ypos; + bottom = this.bottom; + } + left = this.left + idx * groupWidth + leftPadding; + if (!this.options.stacked) { + left += sidx * (barWidth + this.options.barGap); + } + size = bottom - top; + if (this.options.stacked) { + top -= lastTop; + } + this.drawBar(left, top, barWidth, size, this.colorFor(row, sidx, 'bar'), this.options.barOpacity, this.options.barRadius); + _results1.push(lastTop += size); + } else { + _results1.push(null); + } + } + return _results1; + }).call(this)); + } + return _results; + }).call(this); + }; + + Bar.prototype.colorFor = function(row, sidx, type) { + var r, s; + if (typeof this.options.barColors === 'function') { + r = { + x: row.x, + y: row.y[sidx], + label: row.label + }; + s = { + index: sidx, + key: this.options.ykeys[sidx], + label: this.options.labels[sidx] + }; + return this.options.barColors.call(this, r, s, type); + } else { + return this.options.barColors[sidx % this.options.barColors.length]; + } + }; + + Bar.prototype.hitTest = function(x) { + if (this.data.length === 0) { + return null; + } + x = Math.max(Math.min(x, this.right), this.left); + return Math.min(this.data.length - 1, Math.floor((x - this.left) / (this.width / this.data.length))); + }; + + Bar.prototype.onGridClick = function(x, y) { + var index; + index = this.hitTest(x); + return this.fire('click', index, this.data[index].src, x, y); + }; + + Bar.prototype.onHoverMove = function(x, y) { + var index, _ref; + index = this.hitTest(x); + return (_ref = this.hover).update.apply(_ref, this.hoverContentForRow(index)); + }; + + Bar.prototype.onHoverOut = function() { + if (this.options.hideHover !== false) { + return this.hover.hide(); + } + }; + + Bar.prototype.hoverContentForRow = function(index) { + var content, j, row, x, y, _i, _len, _ref; + row = this.data[index]; + content = "
      " + row.label + "
      "; + _ref = row.y; + for (j = _i = 0, _len = _ref.length; _i < _len; j = ++_i) { + y = _ref[j]; + content += "
      \n " + this.options.labels[j] + ":\n " + (this.yLabelFormat(y)) + "\n
      "; + } + if (typeof this.options.hoverCallback === 'function') { + content = this.options.hoverCallback(index, this.options, content, row.src); + } + x = this.left + (index + 0.5) * this.width / this.data.length; + return [content, x]; + }; + + Bar.prototype.drawXAxisLabel = function(xPos, yPos, text) { + var label; + return label = this.raphael.text(xPos, yPos, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).attr('fill', this.options.gridTextColor); + }; + + Bar.prototype.drawBar = function(xPos, yPos, width, height, barColor, opacity, radiusArray) { + var maxRadius, path; + maxRadius = Math.max.apply(Math, radiusArray); + if (maxRadius === 0 || maxRadius > height) { + path = this.raphael.rect(xPos, yPos, width, height); + } else { + path = this.raphael.path(this.roundedRect(xPos, yPos, width, height, radiusArray)); + } + return path.attr('fill', barColor).attr('fill-opacity', opacity).attr('stroke', 'none'); + }; + + Bar.prototype.roundedRect = function(x, y, w, h, r) { + if (r == null) { + r = [0, 0, 0, 0]; + } + return ["M", x, r[0] + y, "Q", x, y, x + r[0], y, "L", x + w - r[1], y, "Q", x + w, y, x + w, y + r[1], "L", x + w, y + h - r[2], "Q", x + w, y + h, x + w - r[2], y + h, "L", x + r[3], y + h, "Q", x, y + h, x, y + h - r[3], "Z"]; + }; + + return Bar; + + })(Morris.Grid); + + Morris.Donut = (function(_super) { + __extends(Donut, _super); + + Donut.prototype.defaults = { + colors: ['#0B62A4', '#3980B5', '#679DC6', '#95BBD7', '#B0CCE1', '#095791', '#095085', '#083E67', '#052C48', '#042135'], + backgroundColor: '#FFFFFF', + labelColor: '#000000', + formatter: Morris.commas, + resize: false + }; + + function Donut(options) { + this.resizeHandler = __bind(this.resizeHandler, this); + this.select = __bind(this.select, this); + this.click = __bind(this.click, this); + var _this = this; + if (!(this instanceof Morris.Donut)) { + return new Morris.Donut(options); + } + this.options = $.extend({}, this.defaults, options); + if (typeof options.element === 'string') { + this.el = $(document.getElementById(options.element)); + } else { + this.el = $(options.element); + } + if (this.el === null || this.el.length === 0) { + throw new Error("Graph placeholder not found."); + } + if (options.data === void 0 || options.data.length === 0) { + return; + } + this.raphael = new Raphael(this.el[0]); + if (this.options.resize) { + $(window).bind('resize', function(evt) { + if (_this.timeoutId != null) { + window.clearTimeout(_this.timeoutId); + } + return _this.timeoutId = window.setTimeout(_this.resizeHandler, 100); + }); + } + this.setData(options.data); + } + + Donut.prototype.redraw = function() { + var C, cx, cy, i, idx, last, max_value, min, next, seg, total, value, w, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results; + this.raphael.clear(); + cx = this.el.width() / 2; + cy = this.el.height() / 2; + w = (Math.min(cx, cy) - 10) / 3; + total = 0; + _ref = this.values; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + value = _ref[_i]; + total += value; + } + min = 5 / (2 * w); + C = 1.9999 * Math.PI - min * this.data.length; + last = 0; + idx = 0; + this.segments = []; + _ref1 = this.values; + for (i = _j = 0, _len1 = _ref1.length; _j < _len1; i = ++_j) { + value = _ref1[i]; + next = last + min + C * (value / total); + seg = new Morris.DonutSegment(cx, cy, w * 2, w, last, next, this.data[i].color || this.options.colors[idx % this.options.colors.length], this.options.backgroundColor, idx, this.raphael); + seg.render(); + this.segments.push(seg); + seg.on('hover', this.select); + seg.on('click', this.click); + last = next; + idx += 1; + } + this.text1 = this.drawEmptyDonutLabel(cx, cy - 10, this.options.labelColor, 15, 800); + this.text2 = this.drawEmptyDonutLabel(cx, cy + 10, this.options.labelColor, 14); + max_value = Math.max.apply(Math, this.values); + idx = 0; + _ref2 = this.values; + _results = []; + for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) { + value = _ref2[_k]; + if (value === max_value) { + this.select(idx); + break; + } + _results.push(idx += 1); + } + return _results; + }; + + Donut.prototype.setData = function(data) { + var row; + this.data = data; + this.values = (function() { + var _i, _len, _ref, _results; + _ref = this.data; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + row = _ref[_i]; + _results.push(parseFloat(row.value)); + } + return _results; + }).call(this); + return this.redraw(); + }; + + Donut.prototype.click = function(idx) { + return this.fire('click', idx, this.data[idx]); + }; + + Donut.prototype.select = function(idx) { + var row, s, segment, _i, _len, _ref; + _ref = this.segments; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + s = _ref[_i]; + s.deselect(); + } + segment = this.segments[idx]; + segment.select(); + row = this.data[idx]; + return this.setLabels(row.label, this.options.formatter(row.value, row)); + }; + + Donut.prototype.setLabels = function(label1, label2) { + var inner, maxHeightBottom, maxHeightTop, maxWidth, text1bbox, text1scale, text2bbox, text2scale; + inner = (Math.min(this.el.width() / 2, this.el.height() / 2) - 10) * 2 / 3; + maxWidth = 1.8 * inner; + maxHeightTop = inner / 2; + maxHeightBottom = inner / 3; + this.text1.attr({ + text: label1, + transform: '' + }); + text1bbox = this.text1.getBBox(); + text1scale = Math.min(maxWidth / text1bbox.width, maxHeightTop / text1bbox.height); + this.text1.attr({ + transform: "S" + text1scale + "," + text1scale + "," + (text1bbox.x + text1bbox.width / 2) + "," + (text1bbox.y + text1bbox.height) + }); + this.text2.attr({ + text: label2, + transform: '' + }); + text2bbox = this.text2.getBBox(); + text2scale = Math.min(maxWidth / text2bbox.width, maxHeightBottom / text2bbox.height); + return this.text2.attr({ + transform: "S" + text2scale + "," + text2scale + "," + (text2bbox.x + text2bbox.width / 2) + "," + text2bbox.y + }); + }; + + Donut.prototype.drawEmptyDonutLabel = function(xPos, yPos, color, fontSize, fontWeight) { + var text; + text = this.raphael.text(xPos, yPos, '').attr('font-size', fontSize).attr('fill', color); + if (fontWeight != null) { + text.attr('font-weight', fontWeight); + } + return text; + }; + + Donut.prototype.resizeHandler = function() { + this.timeoutId = null; + this.raphael.setSize(this.el.width(), this.el.height()); + return this.redraw(); + }; + + return Donut; + + })(Morris.EventEmitter); + + Morris.DonutSegment = (function(_super) { + __extends(DonutSegment, _super); + + function DonutSegment(cx, cy, inner, outer, p0, p1, color, backgroundColor, index, raphael) { + this.cx = cx; + this.cy = cy; + this.inner = inner; + this.outer = outer; + this.color = color; + this.backgroundColor = backgroundColor; + this.index = index; + this.raphael = raphael; + this.deselect = __bind(this.deselect, this); + this.select = __bind(this.select, this); + this.sin_p0 = Math.sin(p0); + this.cos_p0 = Math.cos(p0); + this.sin_p1 = Math.sin(p1); + this.cos_p1 = Math.cos(p1); + this.is_long = (p1 - p0) > Math.PI ? 1 : 0; + this.path = this.calcSegment(this.inner + 3, this.inner + this.outer - 5); + this.selectedPath = this.calcSegment(this.inner + 3, this.inner + this.outer); + this.hilight = this.calcArc(this.inner); + } + + DonutSegment.prototype.calcArcPoints = function(r) { + return [this.cx + r * this.sin_p0, this.cy + r * this.cos_p0, this.cx + r * this.sin_p1, this.cy + r * this.cos_p1]; + }; + + DonutSegment.prototype.calcSegment = function(r1, r2) { + var ix0, ix1, iy0, iy1, ox0, ox1, oy0, oy1, _ref, _ref1; + _ref = this.calcArcPoints(r1), ix0 = _ref[0], iy0 = _ref[1], ix1 = _ref[2], iy1 = _ref[3]; + _ref1 = this.calcArcPoints(r2), ox0 = _ref1[0], oy0 = _ref1[1], ox1 = _ref1[2], oy1 = _ref1[3]; + return ("M" + ix0 + "," + iy0) + ("A" + r1 + "," + r1 + ",0," + this.is_long + ",0," + ix1 + "," + iy1) + ("L" + ox1 + "," + oy1) + ("A" + r2 + "," + r2 + ",0," + this.is_long + ",1," + ox0 + "," + oy0) + "Z"; + }; + + DonutSegment.prototype.calcArc = function(r) { + var ix0, ix1, iy0, iy1, _ref; + _ref = this.calcArcPoints(r), ix0 = _ref[0], iy0 = _ref[1], ix1 = _ref[2], iy1 = _ref[3]; + return ("M" + ix0 + "," + iy0) + ("A" + r + "," + r + ",0," + this.is_long + ",0," + ix1 + "," + iy1); + }; + + DonutSegment.prototype.render = function() { + var _this = this; + this.arc = this.drawDonutArc(this.hilight, this.color); + return this.seg = this.drawDonutSegment(this.path, this.color, this.backgroundColor, function() { + return _this.fire('hover', _this.index); + }, function() { + return _this.fire('click', _this.index); + }); + }; + + DonutSegment.prototype.drawDonutArc = function(path, color) { + return this.raphael.path(path).attr({ + stroke: color, + 'stroke-width': 2, + opacity: 0 + }); + }; + + DonutSegment.prototype.drawDonutSegment = function(path, fillColor, strokeColor, hoverFunction, clickFunction) { + return this.raphael.path(path).attr({ + fill: fillColor, + stroke: strokeColor, + 'stroke-width': 3 + }).hover(hoverFunction).click(clickFunction); + }; + + DonutSegment.prototype.select = function() { + if (!this.selected) { + this.seg.animate({ + path: this.selectedPath + }, 150, '<>'); + this.arc.animate({ + opacity: 1 + }, 150, '<>'); + return this.selected = true; + } + }; + + DonutSegment.prototype.deselect = function() { + if (this.selected) { + this.seg.animate({ + path: this.path + }, 150, '<>'); + this.arc.animate({ + opacity: 0 + }, 150, '<>'); + return this.selected = false; + } + }; + + return DonutSegment; + + })(Morris.EventEmitter); + +}).call(this); diff --git a/public/assets/js/plugins/morris/morris.min.js b/public/assets/js/plugins/morris/morris.min.js new file mode 100755 index 00000000..b7842aaf --- /dev/null +++ b/public/assets/js/plugins/morris/morris.min.js @@ -0,0 +1,2 @@ +(function(){var a,b,c,d,e=[].slice,f=function(a,b){return function(){return a.apply(b,arguments)}},g={}.hasOwnProperty,h=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},i=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};b=window.Morris={},a=jQuery,b.EventEmitter=function(){function a(){}return a.prototype.on=function(a,b){return null==this.handlers&&(this.handlers={}),null==this.handlers[a]&&(this.handlers[a]=[]),this.handlers[a].push(b),this},a.prototype.fire=function(){var a,b,c,d,f,g,h;if(c=arguments[0],a=2<=arguments.length?e.call(arguments,1):[],null!=this.handlers&&null!=this.handlers[c]){for(g=this.handlers[c],h=[],d=0,f=g.length;f>d;d++)b=g[d],h.push(b.apply(null,a));return h}},a}(),b.commas=function(a){var b,c,d,e;return null!=a?(d=0>a?"-":"",b=Math.abs(a),c=Math.floor(b).toFixed(0),d+=c.replace(/(?=(?:\d{3})+$)(?!^)/g,","),e=b.toString(),e.length>c.length&&(d+=e.slice(c.length)),d):"-"},b.pad2=function(a){return(10>a?"0":"")+a},b.Grid=function(c){function d(b){this.resizeHandler=f(this.resizeHandler,this);var c=this;if(this.el="string"==typeof b.element?a(document.getElementById(b.element)):a(b.element),null==this.el||0===this.el.length)throw new Error("Graph container element not found");"static"===this.el.css("position")&&this.el.css("position","relative"),this.options=a.extend({},this.gridDefaults,this.defaults||{},b),"string"==typeof this.options.units&&(this.options.postUnits=b.units),this.raphael=new Raphael(this.el[0]),this.elementWidth=null,this.elementHeight=null,this.dirty=!1,this.selectFrom=null,this.init&&this.init(),this.setData(this.options.data),this.el.bind("mousemove",function(a){var b,d,e,f,g;return d=c.el.offset(),g=a.pageX-d.left,c.selectFrom?(b=c.data[c.hitTest(Math.min(g,c.selectFrom))]._x,e=c.data[c.hitTest(Math.max(g,c.selectFrom))]._x,f=e-b,c.selectionRect.attr({x:b,width:f})):c.fire("hovermove",g,a.pageY-d.top)}),this.el.bind("mouseleave",function(){return c.selectFrom&&(c.selectionRect.hide(),c.selectFrom=null),c.fire("hoverout")}),this.el.bind("touchstart touchmove touchend",function(a){var b,d;return d=a.originalEvent.touches[0]||a.originalEvent.changedTouches[0],b=c.el.offset(),c.fire("hover",d.pageX-b.left,d.pageY-b.top),d}),this.el.bind("click",function(a){var b;return b=c.el.offset(),c.fire("gridclick",a.pageX-b.left,a.pageY-b.top)}),this.options.rangeSelect&&(this.selectionRect=this.raphael.rect(0,0,0,this.el.innerHeight()).attr({fill:this.options.rangeSelectColor,stroke:!1}).toBack().hide(),this.el.bind("mousedown",function(a){var b;return b=c.el.offset(),c.startRange(a.pageX-b.left)}),this.el.bind("mouseup",function(a){var b;return b=c.el.offset(),c.endRange(a.pageX-b.left),c.fire("hovermove",a.pageX-b.left,a.pageY-b.top)})),this.options.resize&&a(window).bind("resize",function(){return null!=c.timeoutId&&window.clearTimeout(c.timeoutId),c.timeoutId=window.setTimeout(c.resizeHandler,100)}),this.postInit&&this.postInit()}return h(d,c),d.prototype.gridDefaults={dateFormat:null,axes:!0,grid:!0,gridLineColor:"#aaa",gridStrokeWidth:.5,gridTextColor:"#888",gridTextSize:12,gridTextFamily:"sans-serif",gridTextWeight:"normal",hideHover:!1,yLabelFormat:null,xLabelAngle:0,numLines:5,padding:25,parseTime:!0,postUnits:"",preUnits:"",ymax:"auto",ymin:"auto 0",goals:[],goalStrokeWidth:1,goalLineColors:["#666633","#999966","#cc6666","#663333"],events:[],eventStrokeWidth:1,eventLineColors:["#005a04","#ccffbb","#3a5f0b","#005502"],rangeSelect:null,rangeSelectColor:"#eef",resize:!1},d.prototype.setData=function(a,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;return null==c&&(c=!0),this.options.data=a,null==a||0===a.length?(this.data=[],this.raphael.clear(),null!=this.hover&&this.hover.hide(),void 0):(o=this.cumulative?0:null,p=this.cumulative?0:null,this.options.goals.length>0&&(h=Math.min.apply(Math,this.options.goals),g=Math.max.apply(Math,this.options.goals),p=null!=p?Math.min(p,h):h,o=null!=o?Math.max(o,g):g),this.data=function(){var c,d,g;for(g=[],f=c=0,d=a.length;d>c;f=++c)j=a[f],i={src:j},i.label=j[this.options.xkey],this.options.parseTime?(i.x=b.parseDate(i.label),this.options.dateFormat?i.label=this.options.dateFormat(i.x):"number"==typeof i.label&&(i.label=new Date(i.label).toString())):(i.x=f,this.options.xLabelFormat&&(i.label=this.options.xLabelFormat(i))),l=0,i.y=function(){var a,b,c,d;for(c=this.options.ykeys,d=[],e=a=0,b=c.length;b>a;e=++a)n=c[e],q=j[n],"string"==typeof q&&(q=parseFloat(q)),null!=q&&"number"!=typeof q&&(q=null),null!=q&&(this.cumulative?l+=q:null!=o?(o=Math.max(q,o),p=Math.min(q,p)):o=p=q),this.cumulative&&null!=l&&(o=Math.max(l,o),p=Math.min(l,p)),d.push(q);return d}.call(this),g.push(i);return g}.call(this),this.options.parseTime&&(this.data=this.data.sort(function(a,b){return(a.x>b.x)-(b.x>a.x)})),this.xmin=this.data[0].x,this.xmax=this.data[this.data.length-1].x,this.events=[],this.options.events.length>0&&(this.events=this.options.parseTime?function(){var a,c,e,f;for(e=this.options.events,f=[],a=0,c=e.length;c>a;a++)d=e[a],f.push(b.parseDate(d));return f}.call(this):this.options.events,this.xmax=Math.max(this.xmax,Math.max.apply(Math,this.events)),this.xmin=Math.min(this.xmin,Math.min.apply(Math,this.events))),this.xmin===this.xmax&&(this.xmin-=1,this.xmax+=1),this.ymin=this.yboundary("min",p),this.ymax=this.yboundary("max",o),this.ymin===this.ymax&&(p&&(this.ymin-=1),this.ymax+=1),((r=this.options.axes)===!0||"both"===r||"y"===r||this.options.grid===!0)&&(this.options.ymax===this.gridDefaults.ymax&&this.options.ymin===this.gridDefaults.ymin?(this.grid=this.autoGridLines(this.ymin,this.ymax,this.options.numLines),this.ymin=Math.min(this.ymin,this.grid[0]),this.ymax=Math.max(this.ymax,this.grid[this.grid.length-1])):(k=(this.ymax-this.ymin)/(this.options.numLines-1),this.grid=function(){var a,b,c,d;for(d=[],m=a=b=this.ymin,c=this.ymax;k>0?c>=a:a>=c;m=a+=k)d.push(m);return d}.call(this))),this.dirty=!0,c?this.redraw():void 0)},d.prototype.yboundary=function(a,b){var c,d;return c=this.options["y"+a],"string"==typeof c?"auto"===c.slice(0,4)?c.length>5?(d=parseInt(c.slice(5),10),null==b?d:Math[a](b,d)):null!=b?b:0:parseInt(c,10):c},d.prototype.autoGridLines=function(a,b,c){var d,e,f,g,h,i,j,k,l;return h=b-a,l=Math.floor(Math.log(h)/Math.log(10)),j=Math.pow(10,l),e=Math.floor(a/j)*j,d=Math.ceil(b/j)*j,i=(d-e)/(c-1),1===j&&i>1&&Math.ceil(i)!==i&&(i=Math.ceil(i),d=e+i*(c-1)),0>e&&d>0&&(e=Math.floor(a/i)*i,d=Math.ceil(b/i)*i),1>i?(g=Math.floor(Math.log(i)/Math.log(10)),f=function(){var a,b;for(b=[],k=a=e;i>0?d>=a:a>=d;k=a+=i)b.push(parseFloat(k.toFixed(1-g)));return b}()):f=function(){var a,b;for(b=[],k=a=e;i>0?d>=a:a>=d;k=a+=i)b.push(k);return b}(),f},d.prototype._calc=function(){var a,b,c,d,e,f,g,h;return e=this.el.width(),c=this.el.height(),(this.elementWidth!==e||this.elementHeight!==c||this.dirty)&&(this.elementWidth=e,this.elementHeight=c,this.dirty=!1,this.left=this.options.padding,this.right=this.elementWidth-this.options.padding,this.top=this.options.padding,this.bottom=this.elementHeight-this.options.padding,((g=this.options.axes)===!0||"both"===g||"y"===g)&&(f=function(){var a,c,d,e;for(d=this.grid,e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(this.measureText(this.yAxisFormat(b)).width);return e}.call(this),this.left+=Math.max.apply(Math,f)),((h=this.options.axes)===!0||"both"===h||"x"===h)&&(a=function(){var a,b,c;for(c=[],d=a=0,b=this.data.length;b>=0?b>a:a>b;d=b>=0?++a:--a)c.push(this.measureText(this.data[d].text,-this.options.xLabelAngle).height);return c}.call(this),this.bottom-=Math.max.apply(Math,a)),this.width=Math.max(1,this.right-this.left),this.height=Math.max(1,this.bottom-this.top),this.dx=this.width/(this.xmax-this.xmin),this.dy=this.height/(this.ymax-this.ymin),this.calc)?this.calc():void 0},d.prototype.transY=function(a){return this.bottom-(a-this.ymin)*this.dy},d.prototype.transX=function(a){return 1===this.data.length?(this.left+this.right)/2:this.left+(a-this.xmin)*this.dx},d.prototype.redraw=function(){return this.raphael.clear(),this._calc(),this.drawGrid(),this.drawGoals(),this.drawEvents(),this.draw?this.draw():void 0},d.prototype.measureText=function(a,b){var c,d;return null==b&&(b=0),d=this.raphael.text(100,100,a).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).rotate(b),c=d.getBBox(),d.remove(),c},d.prototype.yAxisFormat=function(a){return this.yLabelFormat(a)},d.prototype.yLabelFormat=function(a){return"function"==typeof this.options.yLabelFormat?this.options.yLabelFormat(a):""+this.options.preUnits+b.commas(a)+this.options.postUnits},d.prototype.drawGrid=function(){var a,b,c,d,e,f,g,h;if(this.options.grid!==!1||(e=this.options.axes)===!0||"both"===e||"y"===e){for(f=this.grid,h=[],c=0,d=f.length;d>c;c++)a=f[c],b=this.transY(a),((g=this.options.axes)===!0||"both"===g||"y"===g)&&this.drawYAxisLabel(this.left-this.options.padding/2,b,this.yAxisFormat(a)),this.options.grid?h.push(this.drawGridLine("M"+this.left+","+b+"H"+(this.left+this.width))):h.push(void 0);return h}},d.prototype.drawGoals=function(){var a,b,c,d,e,f,g;for(f=this.options.goals,g=[],c=d=0,e=f.length;e>d;c=++d)b=f[c],a=this.options.goalLineColors[c%this.options.goalLineColors.length],g.push(this.drawGoal(b,a));return g},d.prototype.drawEvents=function(){var a,b,c,d,e,f,g;for(f=this.events,g=[],c=d=0,e=f.length;e>d;c=++d)b=f[c],a=this.options.eventLineColors[c%this.options.eventLineColors.length],g.push(this.drawEvent(b,a));return g},d.prototype.drawGoal=function(a,b){return this.raphael.path("M"+this.left+","+this.transY(a)+"H"+this.right).attr("stroke",b).attr("stroke-width",this.options.goalStrokeWidth)},d.prototype.drawEvent=function(a,b){return this.raphael.path("M"+this.transX(a)+","+this.bottom+"V"+this.top).attr("stroke",b).attr("stroke-width",this.options.eventStrokeWidth)},d.prototype.drawYAxisLabel=function(a,b,c){return this.raphael.text(a,b,c).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).attr("fill",this.options.gridTextColor).attr("text-anchor","end")},d.prototype.drawGridLine=function(a){return this.raphael.path(a).attr("stroke",this.options.gridLineColor).attr("stroke-width",this.options.gridStrokeWidth)},d.prototype.startRange=function(a){return this.hover.hide(),this.selectFrom=a,this.selectionRect.attr({x:a,width:0}).show()},d.prototype.endRange=function(a){var b,c;return this.selectFrom?(c=Math.min(this.selectFrom,a),b=Math.max(this.selectFrom,a),this.options.rangeSelect.call(this.el,{start:this.data[this.hitTest(c)].x,end:this.data[this.hitTest(b)].x}),this.selectFrom=null):void 0},d.prototype.resizeHandler=function(){return this.timeoutId=null,this.raphael.setSize(this.el.width(),this.el.height()),this.redraw()},d}(b.EventEmitter),b.parseDate=function(a){var b,c,d,e,f,g,h,i,j,k,l;return"number"==typeof a?a:(c=a.match(/^(\d+) Q(\d)$/),e=a.match(/^(\d+)-(\d+)$/),f=a.match(/^(\d+)-(\d+)-(\d+)$/),h=a.match(/^(\d+) W(\d+)$/),i=a.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+)(Z|([+-])(\d\d):?(\d\d))?$/),j=a.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+):(\d+(\.\d+)?)(Z|([+-])(\d\d):?(\d\d))?$/),c?new Date(parseInt(c[1],10),3*parseInt(c[2],10)-1,1).getTime():e?new Date(parseInt(e[1],10),parseInt(e[2],10)-1,1).getTime():f?new Date(parseInt(f[1],10),parseInt(f[2],10)-1,parseInt(f[3],10)).getTime():h?(k=new Date(parseInt(h[1],10),0,1),4!==k.getDay()&&k.setMonth(0,1+(4-k.getDay()+7)%7),k.getTime()+6048e5*parseInt(h[2],10)):i?i[6]?(g=0,"Z"!==i[6]&&(g=60*parseInt(i[8],10)+parseInt(i[9],10),"+"===i[7]&&(g=0-g)),Date.UTC(parseInt(i[1],10),parseInt(i[2],10)-1,parseInt(i[3],10),parseInt(i[4],10),parseInt(i[5],10)+g)):new Date(parseInt(i[1],10),parseInt(i[2],10)-1,parseInt(i[3],10),parseInt(i[4],10),parseInt(i[5],10)).getTime():j?(l=parseFloat(j[6]),b=Math.floor(l),d=Math.round(1e3*(l-b)),j[8]?(g=0,"Z"!==j[8]&&(g=60*parseInt(j[10],10)+parseInt(j[11],10),"+"===j[9]&&(g=0-g)),Date.UTC(parseInt(j[1],10),parseInt(j[2],10)-1,parseInt(j[3],10),parseInt(j[4],10),parseInt(j[5],10)+g,b,d)):new Date(parseInt(j[1],10),parseInt(j[2],10)-1,parseInt(j[3],10),parseInt(j[4],10),parseInt(j[5],10),b,d).getTime()):new Date(parseInt(a,10),0,1).getTime())},b.Hover=function(){function c(c){null==c&&(c={}),this.options=a.extend({},b.Hover.defaults,c),this.el=a("
      "),this.el.hide(),this.options.parent.append(this.el)}return c.defaults={"class":"morris-hover morris-default-style"},c.prototype.update=function(a,b,c){return this.html(a),this.show(),this.moveTo(b,c)},c.prototype.html=function(a){return this.el.html(a)},c.prototype.moveTo=function(a,b){var c,d,e,f,g,h;return g=this.options.parent.innerWidth(),f=this.options.parent.innerHeight(),d=this.el.outerWidth(),c=this.el.outerHeight(),e=Math.min(Math.max(0,a-d/2),g-d),null!=b?(h=b-c-10,0>h&&(h=b+10,h+c>f&&(h=f/2-c/2))):h=f/2-c/2,this.el.css({left:e+"px",top:parseInt(h)+"px"})},c.prototype.show=function(){return this.el.show()},c.prototype.hide=function(){return this.el.hide()},c}(),b.Line=function(a){function c(a){return this.hilight=f(this.hilight,this),this.onHoverOut=f(this.onHoverOut,this),this.onHoverMove=f(this.onHoverMove,this),this.onGridClick=f(this.onGridClick,this),this instanceof b.Line?(c.__super__.constructor.call(this,a),void 0):new b.Line(a)}return h(c,a),c.prototype.init=function(){return"always"!==this.options.hideHover?(this.hover=new b.Hover({parent:this.el}),this.on("hovermove",this.onHoverMove),this.on("hoverout",this.onHoverOut),this.on("gridclick",this.onGridClick)):void 0},c.prototype.defaults={lineWidth:3,pointSize:4,lineColors:["#0b62a4","#7A92A3","#4da74d","#afd8f8","#edc240","#cb4b4b","#9440ed"],pointStrokeWidths:[1],pointStrokeColors:["#ffffff"],pointFillColors:[],smooth:!0,xLabels:"auto",xLabelFormat:null,xLabelMargin:24,continuousLine:!0,hideHover:!1},c.prototype.calc=function(){return this.calcPoints(),this.generatePaths()},c.prototype.calcPoints=function(){var a,b,c,d,e,f;for(e=this.data,f=[],c=0,d=e.length;d>c;c++)a=e[c],a._x=this.transX(a.x),a._y=function(){var c,d,e,f;for(e=a.y,f=[],c=0,d=e.length;d>c;c++)b=e[c],null!=b?f.push(this.transY(b)):f.push(b);return f}.call(this),f.push(a._ymax=Math.min.apply(Math,[this.bottom].concat(function(){var c,d,e,f;for(e=a._y,f=[],c=0,d=e.length;d>c;c++)b=e[c],null!=b&&f.push(b);return f}())));return f},c.prototype.hitTest=function(a){var b,c,d,e,f;if(0===this.data.length)return null;for(f=this.data.slice(1),b=d=0,e=f.length;e>d&&(c=f[b],!(a<(c._x+this.data[b]._x)/2));b=++d);return b},c.prototype.onGridClick=function(a,b){var c;return c=this.hitTest(a),this.fire("click",c,this.data[c].src,a,b)},c.prototype.onHoverMove=function(a){var b;return b=this.hitTest(a),this.displayHoverForRow(b)},c.prototype.onHoverOut=function(){return this.options.hideHover!==!1?this.displayHoverForRow(null):void 0},c.prototype.displayHoverForRow=function(a){var b;return null!=a?((b=this.hover).update.apply(b,this.hoverContentForRow(a)),this.hilight(a)):(this.hover.hide(),this.hilight())},c.prototype.hoverContentForRow=function(a){var b,c,d,e,f,g,h;for(d=this.data[a],b="
      "+d.label+"
      ",h=d.y,c=f=0,g=h.length;g>f;c=++f)e=h[c],b+="
      \n "+this.options.labels[c]+":\n "+this.yLabelFormat(e)+"\n
      ";return"function"==typeof this.options.hoverCallback&&(b=this.options.hoverCallback(a,this.options,b,d.src)),[b,d._x,d._ymax]},c.prototype.generatePaths=function(){var a,c,d,e,f;return this.paths=function(){var g,h,j,k;for(k=[],d=g=0,h=this.options.ykeys.length;h>=0?h>g:g>h;d=h>=0?++g:--g)f="boolean"==typeof this.options.smooth?this.options.smooth:(j=this.options.ykeys[d],i.call(this.options.smooth,j)>=0),c=function(){var a,b,c,f;for(c=this.data,f=[],a=0,b=c.length;b>a;a++)e=c[a],void 0!==e._y[d]&&f.push({x:e._x,y:e._y[d]});return f}.call(this),this.options.continuousLine&&(c=function(){var b,d,e;for(e=[],b=0,d=c.length;d>b;b++)a=c[b],null!==a.y&&e.push(a);return e}()),c.length>1?k.push(b.Line.createPath(c,f,this.bottom)):k.push(null);return k}.call(this)},c.prototype.draw=function(){var a;return((a=this.options.axes)===!0||"both"===a||"x"===a)&&this.drawXAxis(),this.drawSeries(),this.options.hideHover===!1?this.displayHoverForRow(this.data.length-1):void 0},c.prototype.drawXAxis=function(){var a,c,d,e,f,g,h,i,j,k,l=this;for(h=this.bottom+this.options.padding/2,f=null,e=null,a=function(a,b){var c,d,g,i,j;return c=l.drawXAxisLabel(l.transX(b),h,a),j=c.getBBox(),c.transform("r"+-l.options.xLabelAngle),d=c.getBBox(),c.transform("t0,"+d.height/2+"..."),0!==l.options.xLabelAngle&&(i=-.5*j.width*Math.cos(l.options.xLabelAngle*Math.PI/180),c.transform("t"+i+",0...")),d=c.getBBox(),(null==f||f>=d.x+d.width||null!=e&&e>=d.x)&&d.x>=0&&d.x+d.widtha;a++)g=c[a],d.push([g.label,g.x]);return d}.call(this),d.reverse(),k=[],i=0,j=d.length;j>i;i++)c=d[i],k.push(a(c[0],c[1]));return k},c.prototype.drawSeries=function(){var a,b,c,d,e,f;for(this.seriesPoints=[],a=b=d=this.options.ykeys.length-1;0>=d?0>=b:b>=0;a=0>=d?++b:--b)this._drawLineFor(a);for(f=[],a=c=e=this.options.ykeys.length-1;0>=e?0>=c:c>=0;a=0>=e?++c:--c)f.push(this._drawPointFor(a));return f},c.prototype._drawPointFor=function(a){var b,c,d,e,f,g;for(this.seriesPoints[a]=[],f=this.data,g=[],d=0,e=f.length;e>d;d++)c=f[d],b=null,null!=c._y[a]&&(b=this.drawLinePoint(c._x,c._y[a],this.colorFor(c,a,"point"),a)),g.push(this.seriesPoints[a].push(b));return g},c.prototype._drawLineFor=function(a){var b;return b=this.paths[a],null!==b?this.drawLinePath(b,this.colorFor(null,a,"line"),a):void 0},c.createPath=function(a,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r;for(k="",c&&(g=b.Line.gradients(a)),l={y:null},h=q=0,r=a.length;r>q;h=++q)e=a[h],null!=e.y&&(null!=l.y?c?(f=g[h],j=g[h-1],i=(e.x-l.x)/4,m=l.x+i,o=Math.min(d,l.y+i*j),n=e.x-i,p=Math.min(d,e.y-i*f),k+="C"+m+","+o+","+n+","+p+","+e.x+","+e.y):k+="L"+e.x+","+e.y:c&&null==g[h]||(k+="M"+e.x+","+e.y)),l=e;return k},c.gradients=function(a){var b,c,d,e,f,g,h,i;for(c=function(a,b){return(a.y-b.y)/(a.x-b.x)},i=[],d=g=0,h=a.length;h>g;d=++g)b=a[d],null!=b.y?(e=a[d+1]||{y:null},f=a[d-1]||{y:null},null!=f.y&&null!=e.y?i.push(c(f,e)):null!=f.y?i.push(c(f,b)):null!=e.y?i.push(c(b,e)):i.push(null)):i.push(null);return i},c.prototype.hilight=function(a){var b,c,d,e,f;if(null!==this.prevHilight&&this.prevHilight!==a)for(b=c=0,e=this.seriesPoints.length-1;e>=0?e>=c:c>=e;b=e>=0?++c:--c)this.seriesPoints[b][this.prevHilight]&&this.seriesPoints[b][this.prevHilight].animate(this.pointShrinkSeries(b));if(null!==a&&this.prevHilight!==a)for(b=d=0,f=this.seriesPoints.length-1;f>=0?f>=d:d>=f;b=f>=0?++d:--d)this.seriesPoints[b][a]&&this.seriesPoints[b][a].animate(this.pointGrowSeries(b));return this.prevHilight=a},c.prototype.colorFor=function(a,b,c){return"function"==typeof this.options.lineColors?this.options.lineColors.call(this,a,b,c):"point"===c?this.options.pointFillColors[b%this.options.pointFillColors.length]||this.options.lineColors[b%this.options.lineColors.length]:this.options.lineColors[b%this.options.lineColors.length]},c.prototype.drawXAxisLabel=function(a,b,c){return this.raphael.text(a,b,c).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).attr("fill",this.options.gridTextColor)},c.prototype.drawLinePath=function(a,b,c){return this.raphael.path(a).attr("stroke",b).attr("stroke-width",this.lineWidthForSeries(c))},c.prototype.drawLinePoint=function(a,b,c,d){return this.raphael.circle(a,b,this.pointSizeForSeries(d)).attr("fill",c).attr("stroke-width",this.pointStrokeWidthForSeries(d)).attr("stroke",this.pointStrokeColorForSeries(d))},c.prototype.pointStrokeWidthForSeries=function(a){return this.options.pointStrokeWidths[a%this.options.pointStrokeWidths.length]},c.prototype.pointStrokeColorForSeries=function(a){return this.options.pointStrokeColors[a%this.options.pointStrokeColors.length]},c.prototype.lineWidthForSeries=function(a){return this.options.lineWidth instanceof Array?this.options.lineWidth[a%this.options.lineWidth.length]:this.options.lineWidth},c.prototype.pointSizeForSeries=function(a){return this.options.pointSize instanceof Array?this.options.pointSize[a%this.options.pointSize.length]:this.options.pointSize},c.prototype.pointGrowSeries=function(a){return Raphael.animation({r:this.pointSizeForSeries(a)+3},25,"linear")},c.prototype.pointShrinkSeries=function(a){return Raphael.animation({r:this.pointSizeForSeries(a)},25,"linear")},c}(b.Grid),b.labelSeries=function(c,d,e,f,g){var h,i,j,k,l,m,n,o,p,q,r;if(j=200*(d-c)/e,i=new Date(c),n=b.LABEL_SPECS[f],void 0===n)for(r=b.AUTO_LABEL_ORDER,p=0,q=r.length;q>p;p++)if(k=r[p],m=b.LABEL_SPECS[k],j>=m.span){n=m;break}for(void 0===n&&(n=b.LABEL_SPECS.second),g&&(n=a.extend({},n,{fmt:g})),h=n.start(i),l=[];(o=h.getTime())<=d;)o>=c&&l.push([n.fmt(h),o]),n.incr(h);return l},c=function(a){return{span:60*a*1e3,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours())},fmt:function(a){return""+b.pad2(a.getHours())+":"+b.pad2(a.getMinutes())},incr:function(b){return b.setUTCMinutes(b.getUTCMinutes()+a)}}},d=function(a){return{span:1e3*a,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes())},fmt:function(a){return""+b.pad2(a.getHours())+":"+b.pad2(a.getMinutes())+":"+b.pad2(a.getSeconds())},incr:function(b){return b.setUTCSeconds(b.getUTCSeconds()+a)}}},b.LABEL_SPECS={decade:{span:1728e8,start:function(a){return new Date(a.getFullYear()-a.getFullYear()%10,0,1)},fmt:function(a){return""+a.getFullYear()},incr:function(a){return a.setFullYear(a.getFullYear()+10)}},year:{span:1728e7,start:function(a){return new Date(a.getFullYear(),0,1)},fmt:function(a){return""+a.getFullYear()},incr:function(a){return a.setFullYear(a.getFullYear()+1)}},month:{span:24192e5,start:function(a){return new Date(a.getFullYear(),a.getMonth(),1)},fmt:function(a){return""+a.getFullYear()+"-"+b.pad2(a.getMonth()+1)},incr:function(a){return a.setMonth(a.getMonth()+1)}},week:{span:6048e5,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate())},fmt:function(a){return""+a.getFullYear()+"-"+b.pad2(a.getMonth()+1)+"-"+b.pad2(a.getDate())},incr:function(a){return a.setDate(a.getDate()+7)}},day:{span:864e5,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate())},fmt:function(a){return""+a.getFullYear()+"-"+b.pad2(a.getMonth()+1)+"-"+b.pad2(a.getDate())},incr:function(a){return a.setDate(a.getDate()+1)}},hour:c(60),"30min":c(30),"15min":c(15),"10min":c(10),"5min":c(5),minute:c(1),"30sec":d(30),"15sec":d(15),"10sec":d(10),"5sec":d(5),second:d(1)},b.AUTO_LABEL_ORDER=["decade","year","month","week","day","hour","30min","15min","10min","5min","minute","30sec","15sec","10sec","5sec","second"],b.Area=function(c){function d(c){var f;return this instanceof b.Area?(f=a.extend({},e,c),this.cumulative=!f.behaveLikeLine,"auto"===f.fillOpacity&&(f.fillOpacity=f.behaveLikeLine?.8:1),d.__super__.constructor.call(this,f),void 0):new b.Area(c)}var e;return h(d,c),e={fillOpacity:"auto",behaveLikeLine:!1},d.prototype.calcPoints=function(){var a,b,c,d,e,f,g;for(f=this.data,g=[],d=0,e=f.length;e>d;d++)a=f[d],a._x=this.transX(a.x),b=0,a._y=function(){var d,e,f,g;for(f=a.y,g=[],d=0,e=f.length;e>d;d++)c=f[d],this.options.behaveLikeLine?g.push(this.transY(c)):(b+=c||0,g.push(this.transY(b)));return g}.call(this),g.push(a._ymax=Math.max.apply(Math,a._y));return g},d.prototype.drawSeries=function(){var a,b,c,d,e,f,g,h;for(this.seriesPoints=[],b=this.options.behaveLikeLine?function(){f=[];for(var a=0,b=this.options.ykeys.length-1;b>=0?b>=a:a>=b;b>=0?a++:a--)f.push(a);return f}.apply(this):function(){g=[];for(var a=e=this.options.ykeys.length-1;0>=e?0>=a:a>=0;0>=e?a++:a--)g.push(a);return g}.apply(this),h=[],c=0,d=b.length;d>c;c++)a=b[c],this._drawFillFor(a),this._drawLineFor(a),h.push(this._drawPointFor(a));return h},d.prototype._drawFillFor=function(a){var b;return b=this.paths[a],null!==b?(b+="L"+this.transX(this.xmax)+","+this.bottom+"L"+this.transX(this.xmin)+","+this.bottom+"Z",this.drawFilledPath(b,this.fillForSeries(a))):void 0},d.prototype.fillForSeries=function(a){var b;return b=Raphael.rgb2hsl(this.colorFor(this.data[a],a,"line")),Raphael.hsl(b.h,this.options.behaveLikeLine?.9*b.s:.75*b.s,Math.min(.98,this.options.behaveLikeLine?1.2*b.l:1.25*b.l))},d.prototype.drawFilledPath=function(a,b){return this.raphael.path(a).attr("fill",b).attr("fill-opacity",this.options.fillOpacity).attr("stroke","none")},d}(b.Line),b.Bar=function(c){function d(c){return this.onHoverOut=f(this.onHoverOut,this),this.onHoverMove=f(this.onHoverMove,this),this.onGridClick=f(this.onGridClick,this),this instanceof b.Bar?(d.__super__.constructor.call(this,a.extend({},c,{parseTime:!1})),void 0):new b.Bar(c)}return h(d,c),d.prototype.init=function(){return this.cumulative=this.options.stacked,"always"!==this.options.hideHover?(this.hover=new b.Hover({parent:this.el}),this.on("hovermove",this.onHoverMove),this.on("hoverout",this.onHoverOut),this.on("gridclick",this.onGridClick)):void 0},d.prototype.defaults={barSizeRatio:.75,barGap:3,barColors:["#0b62a4","#7a92a3","#4da74d","#afd8f8","#edc240","#cb4b4b","#9440ed"],barOpacity:1,barRadius:[0,0,0,0],xLabelMargin:50},d.prototype.calc=function(){var a;return this.calcBars(),this.options.hideHover===!1?(a=this.hover).update.apply(a,this.hoverContentForRow(this.data.length-1)):void 0},d.prototype.calcBars=function(){var a,b,c,d,e,f,g;for(f=this.data,g=[],a=d=0,e=f.length;e>d;a=++d)b=f[a],b._x=this.left+this.width*(a+.5)/this.data.length,g.push(b._y=function(){var a,d,e,f;for(e=b.y,f=[],a=0,d=e.length;d>a;a++)c=e[a],null!=c?f.push(this.transY(c)):f.push(null);return f}.call(this));return g},d.prototype.draw=function(){var a;return((a=this.options.axes)===!0||"both"===a||"x"===a)&&this.drawXAxis(),this.drawSeries()},d.prototype.drawXAxis=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m;for(j=this.bottom+(this.options.xAxisLabelTopPadding||this.options.padding/2),g=null,f=null,m=[],a=k=0,l=this.data.length;l>=0?l>k:k>l;a=l>=0?++k:--k)h=this.data[this.data.length-1-a],b=this.drawXAxisLabel(h._x,j,h.label),i=b.getBBox(),b.transform("r"+-this.options.xLabelAngle),c=b.getBBox(),b.transform("t0,"+c.height/2+"..."),0!==this.options.xLabelAngle&&(e=-.5*i.width*Math.cos(this.options.xLabelAngle*Math.PI/180),b.transform("t"+e+",0...")),(null==g||g>=c.x+c.width||null!=f&&f>=c.x)&&c.x>=0&&c.x+c.width=0?this.transY(0):null,this.bars=function(){var h,o,p,q;for(p=this.data,q=[],d=h=0,o=p.length;o>h;d=++h)i=p[d],e=0,q.push(function(){var h,o,p,q;for(p=i._y,q=[],j=h=0,o=p.length;o>h;j=++h)m=p[j],null!==m?(n?(l=Math.min(m,n),b=Math.max(m,n)):(l=m,b=this.bottom),f=this.left+d*c+g,this.options.stacked||(f+=j*(a+this.options.barGap)),k=b-l,this.options.stacked&&(l-=e),this.drawBar(f,l,a,k,this.colorFor(i,j,"bar"),this.options.barOpacity,this.options.barRadius),q.push(e+=k)):q.push(null);return q}.call(this));return q}.call(this)},d.prototype.colorFor=function(a,b,c){var d,e;return"function"==typeof this.options.barColors?(d={x:a.x,y:a.y[b],label:a.label},e={index:b,key:this.options.ykeys[b],label:this.options.labels[b]},this.options.barColors.call(this,d,e,c)):this.options.barColors[b%this.options.barColors.length]},d.prototype.hitTest=function(a){return 0===this.data.length?null:(a=Math.max(Math.min(a,this.right),this.left),Math.min(this.data.length-1,Math.floor((a-this.left)/(this.width/this.data.length))))},d.prototype.onGridClick=function(a,b){var c;return c=this.hitTest(a),this.fire("click",c,this.data[c].src,a,b)},d.prototype.onHoverMove=function(a){var b,c;return b=this.hitTest(a),(c=this.hover).update.apply(c,this.hoverContentForRow(b))},d.prototype.onHoverOut=function(){return this.options.hideHover!==!1?this.hover.hide():void 0},d.prototype.hoverContentForRow=function(a){var b,c,d,e,f,g,h,i;for(d=this.data[a],b="
      "+d.label+"
      ",i=d.y,c=g=0,h=i.length;h>g;c=++g)f=i[c],b+="
      \n "+this.options.labels[c]+":\n "+this.yLabelFormat(f)+"\n
      ";return"function"==typeof this.options.hoverCallback&&(b=this.options.hoverCallback(a,this.options,b,d.src)),e=this.left+(a+.5)*this.width/this.data.length,[b,e]},d.prototype.drawXAxisLabel=function(a,b,c){var d;return d=this.raphael.text(a,b,c).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).attr("fill",this.options.gridTextColor)},d.prototype.drawBar=function(a,b,c,d,e,f,g){var h,i;return h=Math.max.apply(Math,g),i=0===h||h>d?this.raphael.rect(a,b,c,d):this.raphael.path(this.roundedRect(a,b,c,d,g)),i.attr("fill",e).attr("fill-opacity",f).attr("stroke","none")},d.prototype.roundedRect=function(a,b,c,d,e){return null==e&&(e=[0,0,0,0]),["M",a,e[0]+b,"Q",a,b,a+e[0],b,"L",a+c-e[1],b,"Q",a+c,b,a+c,b+e[1],"L",a+c,b+d-e[2],"Q",a+c,b+d,a+c-e[2],b+d,"L",a+e[3],b+d,"Q",a,b+d,a,b+d-e[3],"Z"]},d}(b.Grid),b.Donut=function(c){function d(c){this.resizeHandler=f(this.resizeHandler,this),this.select=f(this.select,this),this.click=f(this.click,this);var d=this;if(!(this instanceof b.Donut))return new b.Donut(c);if(this.options=a.extend({},this.defaults,c),this.el="string"==typeof c.element?a(document.getElementById(c.element)):a(c.element),null===this.el||0===this.el.length)throw new Error("Graph placeholder not found.");void 0!==c.data&&0!==c.data.length&&(this.raphael=new Raphael(this.el[0]),this.options.resize&&a(window).bind("resize",function(){return null!=d.timeoutId&&window.clearTimeout(d.timeoutId),d.timeoutId=window.setTimeout(d.resizeHandler,100)}),this.setData(c.data))}return h(d,c),d.prototype.defaults={colors:["#0B62A4","#3980B5","#679DC6","#95BBD7","#B0CCE1","#095791","#095085","#083E67","#052C48","#042135"],backgroundColor:"#FFFFFF",labelColor:"#000000",formatter:b.commas,resize:!1},d.prototype.redraw=function(){var a,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;for(this.raphael.clear(),c=this.el.width()/2,d=this.el.height()/2,n=(Math.min(c,d)-10)/3,l=0,u=this.values,o=0,r=u.length;r>o;o++)m=u[o],l+=m;for(i=5/(2*n),a=1.9999*Math.PI-i*this.data.length,g=0,f=0,this.segments=[],v=this.values,e=p=0,s=v.length;s>p;e=++p)m=v[e],j=g+i+a*(m/l),k=new b.DonutSegment(c,d,2*n,n,g,j,this.data[e].color||this.options.colors[f%this.options.colors.length],this.options.backgroundColor,f,this.raphael),k.render(),this.segments.push(k),k.on("hover",this.select),k.on("click",this.click),g=j,f+=1;for(this.text1=this.drawEmptyDonutLabel(c,d-10,this.options.labelColor,15,800),this.text2=this.drawEmptyDonutLabel(c,d+10,this.options.labelColor,14),h=Math.max.apply(Math,this.values),f=0,w=this.values,x=[],q=0,t=w.length;t>q;q++){if(m=w[q],m===h){this.select(f);break}x.push(f+=1)}return x},d.prototype.setData=function(a){var b; +return this.data=a,this.values=function(){var a,c,d,e;for(d=this.data,e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(parseFloat(b.value));return e}.call(this),this.redraw()},d.prototype.click=function(a){return this.fire("click",a,this.data[a])},d.prototype.select=function(a){var b,c,d,e,f,g;for(g=this.segments,e=0,f=g.length;f>e;e++)c=g[e],c.deselect();return d=this.segments[a],d.select(),b=this.data[a],this.setLabels(b.label,this.options.formatter(b.value,b))},d.prototype.setLabels=function(a,b){var c,d,e,f,g,h,i,j;return c=2*(Math.min(this.el.width()/2,this.el.height()/2)-10)/3,f=1.8*c,e=c/2,d=c/3,this.text1.attr({text:a,transform:""}),g=this.text1.getBBox(),h=Math.min(f/g.width,e/g.height),this.text1.attr({transform:"S"+h+","+h+","+(g.x+g.width/2)+","+(g.y+g.height)}),this.text2.attr({text:b,transform:""}),i=this.text2.getBBox(),j=Math.min(f/i.width,d/i.height),this.text2.attr({transform:"S"+j+","+j+","+(i.x+i.width/2)+","+i.y})},d.prototype.drawEmptyDonutLabel=function(a,b,c,d,e){var f;return f=this.raphael.text(a,b,"").attr("font-size",d).attr("fill",c),null!=e&&f.attr("font-weight",e),f},d.prototype.resizeHandler=function(){return this.timeoutId=null,this.raphael.setSize(this.el.width(),this.el.height()),this.redraw()},d}(b.EventEmitter),b.DonutSegment=function(a){function b(a,b,c,d,e,g,h,i,j,k){this.cx=a,this.cy=b,this.inner=c,this.outer=d,this.color=h,this.backgroundColor=i,this.index=j,this.raphael=k,this.deselect=f(this.deselect,this),this.select=f(this.select,this),this.sin_p0=Math.sin(e),this.cos_p0=Math.cos(e),this.sin_p1=Math.sin(g),this.cos_p1=Math.cos(g),this.is_long=g-e>Math.PI?1:0,this.path=this.calcSegment(this.inner+3,this.inner+this.outer-5),this.selectedPath=this.calcSegment(this.inner+3,this.inner+this.outer),this.hilight=this.calcArc(this.inner)}return h(b,a),b.prototype.calcArcPoints=function(a){return[this.cx+a*this.sin_p0,this.cy+a*this.cos_p0,this.cx+a*this.sin_p1,this.cy+a*this.cos_p1]},b.prototype.calcSegment=function(a,b){var c,d,e,f,g,h,i,j,k,l;return k=this.calcArcPoints(a),c=k[0],e=k[1],d=k[2],f=k[3],l=this.calcArcPoints(b),g=l[0],i=l[1],h=l[2],j=l[3],"M"+c+","+e+("A"+a+","+a+",0,"+this.is_long+",0,"+d+","+f)+("L"+h+","+j)+("A"+b+","+b+",0,"+this.is_long+",1,"+g+","+i)+"Z"},b.prototype.calcArc=function(a){var b,c,d,e,f;return f=this.calcArcPoints(a),b=f[0],d=f[1],c=f[2],e=f[3],"M"+b+","+d+("A"+a+","+a+",0,"+this.is_long+",0,"+c+","+e)},b.prototype.render=function(){var a=this;return this.arc=this.drawDonutArc(this.hilight,this.color),this.seg=this.drawDonutSegment(this.path,this.color,this.backgroundColor,function(){return a.fire("hover",a.index)},function(){return a.fire("click",a.index)})},b.prototype.drawDonutArc=function(a,b){return this.raphael.path(a).attr({stroke:b,"stroke-width":2,opacity:0})},b.prototype.drawDonutSegment=function(a,b,c,d,e){return this.raphael.path(a).attr({fill:b,stroke:c,"stroke-width":3}).hover(d).click(e)},b.prototype.select=function(){return this.selected?void 0:(this.seg.animate({path:this.selectedPath},150,"<>"),this.arc.animate({opacity:1},150,"<>"),this.selected=!0)},b.prototype.deselect=function(){return this.selected?(this.seg.animate({path:this.path},150,"<>"),this.arc.animate({opacity:0},150,"<>"),this.selected=!1):void 0},b}(b.EventEmitter)}).call(this); \ No newline at end of file diff --git a/public/assets/js/plugins/slimScroll/jquery.slimscroll.js b/public/assets/js/plugins/slimScroll/jquery.slimscroll.js new file mode 100755 index 00000000..2ea5b080 --- /dev/null +++ b/public/assets/js/plugins/slimScroll/jquery.slimscroll.js @@ -0,0 +1,464 @@ +/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la) + * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) + * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. + * + * Version: 1.3.0 + * + */ +(function($) { + + jQuery.fn.extend({ + slimScroll: function(options) { + + var defaults = { + + // width in pixels of the visible scroll area + width : 'auto', + + // height in pixels of the visible scroll area + height : '250px', + + // width in pixels of the scrollbar and rail + size : '7px', + + // scrollbar color, accepts any hex/color value + color: '#000', + + // scrollbar position - left/right + position : 'right', + + // distance in pixels between the side edge and the scrollbar + distance : '1px', + + // default scroll position on load - top / bottom / $('selector') + start : 'top', + + // sets scrollbar opacity + opacity : .4, + + // enables always-on mode for the scrollbar + alwaysVisible : false, + + // check if we should hide the scrollbar when user is hovering over + disableFadeOut : false, + + // sets visibility of the rail + railVisible : false, + + // sets rail color + railColor : '#333', + + // sets rail opacity + railOpacity : .2, + + // whether we should use jQuery UI Draggable to enable bar dragging + railDraggable : true, + + // defautlt CSS class of the slimscroll rail + railClass : 'slimScrollRail', + + // defautlt CSS class of the slimscroll bar + barClass : 'slimScrollBar', + + // defautlt CSS class of the slimscroll wrapper + wrapperClass : 'slimScrollDiv', + + // check if mousewheel should scroll the window if we reach top/bottom + allowPageScroll : false, + + // scroll amount applied to each mouse wheel step + wheelStep : 20, + + // scroll amount applied when user is using gestures + touchScrollStep : 200, + + // sets border radius + borderRadius: '7px', + + // sets border radius of the rail + railBorderRadius : '7px' + }; + + var o = $.extend(defaults, options); + + // do it for every element that matches selector + this.each(function(){ + + var isOverPanel, isOverBar, isDragg, queueHide, touchDif, + barHeight, percentScroll, lastScroll, + divS = '
      ', + minBarHeight = 30, + releaseScroll = false; + + // used in event handlers and for better minification + var me = $(this); + + // ensure we are not binding it again + if (me.parent().hasClass(o.wrapperClass)) + { + // start from last bar position + var offset = me.scrollTop(); + + // find bar and rail + bar = me.parent().find('.' + o.barClass); + rail = me.parent().find('.' + o.railClass); + + getBarHeight(); + + // check if we should scroll existing instance + if ($.isPlainObject(options)) + { + // Pass height: auto to an existing slimscroll object to force a resize after contents have changed + if ( 'height' in options && options.height == 'auto' ) { + me.parent().css('height', 'auto'); + me.css('height', 'auto'); + var height = me.parent().parent().height(); + me.parent().css('height', height); + me.css('height', height); + } + + if ('scrollTo' in options) + { + // jump to a static point + offset = parseInt(o.scrollTo); + } + else if ('scrollBy' in options) + { + // jump by value pixels + offset += parseInt(o.scrollBy); + } + else if ('destroy' in options) + { + // remove slimscroll elements + bar.remove(); + rail.remove(); + me.unwrap(); + return; + } + + // scroll content by the given offset + scrollContent(offset, false, true); + } + + return; + } + + // optionally set height to the parent's height + o.height = (o.height == 'auto') ? me.parent().height() : o.height; + + // wrap content + var wrapper = $(divS) + .addClass(o.wrapperClass) + .css({ + position: 'relative', + overflow: 'hidden', + width: o.width, + height: o.height + }); + + // update style for the div + me.css({ + overflow: 'hidden', + width: o.width, + height: o.height + }); + + // create scrollbar rail + var rail = $(divS) + .addClass(o.railClass) + .css({ + width: o.size, + height: '100%', + position: 'absolute', + top: 0, + display: (o.alwaysVisible && o.railVisible) ? 'block' : 'none', + 'border-radius': o.railBorderRadius, + background: o.railColor, + opacity: o.railOpacity, + zIndex: 90 + }); + + // create scrollbar + var bar = $(divS) + .addClass(o.barClass) + .css({ + background: o.color, + width: o.size, + position: 'absolute', + top: 0, + opacity: o.opacity, + display: o.alwaysVisible ? 'block' : 'none', + 'border-radius' : o.borderRadius, + BorderRadius: o.borderRadius, + MozBorderRadius: o.borderRadius, + WebkitBorderRadius: o.borderRadius, + zIndex: 99 + }); + + // set position + var posCss = (o.position == 'right') ? { right: o.distance } : { left: o.distance }; + rail.css(posCss); + bar.css(posCss); + + // wrap it + me.wrap(wrapper); + + // append to parent div + me.parent().append(bar); + me.parent().append(rail); + + // make it draggable and no longer dependent on the jqueryUI + if (o.railDraggable){ + bar.bind("mousedown", function(e) { + var $doc = $(document); + isDragg = true; + t = parseFloat(bar.css('top')); + pageY = e.pageY; + + $doc.bind("mousemove.slimscroll", function(e){ + currTop = t + e.pageY - pageY; + bar.css('top', currTop); + scrollContent(0, bar.position().top, false);// scroll content + }); + + $doc.bind("mouseup.slimscroll", function(e) { + isDragg = false;hideBar(); + $doc.unbind('.slimscroll'); + }); + return false; + }).bind("selectstart.slimscroll", function(e){ + e.stopPropagation(); + e.preventDefault(); + return false; + }); + } + + // on rail over + rail.hover(function(){ + showBar(); + }, function(){ + hideBar(); + }); + + // on bar over + bar.hover(function(){ + isOverBar = true; + }, function(){ + isOverBar = false; + }); + + // show on parent mouseover + me.hover(function(){ + isOverPanel = true; + showBar(); + hideBar(); + }, function(){ + isOverPanel = false; + hideBar(); + }); + + // support for mobile + me.bind('touchstart', function(e,b){ + if (e.originalEvent.touches.length) + { + // record where touch started + touchDif = e.originalEvent.touches[0].pageY; + } + }); + + me.bind('touchmove', function(e){ + // prevent scrolling the page if necessary + if(!releaseScroll) + { + e.originalEvent.preventDefault(); + } + if (e.originalEvent.touches.length) + { + // see how far user swiped + var diff = (touchDif - e.originalEvent.touches[0].pageY) / o.touchScrollStep; + // scroll content + scrollContent(diff, true); + touchDif = e.originalEvent.touches[0].pageY; + } + }); + + // set up initial height + getBarHeight(); + + // check start position + if (o.start === 'bottom') + { + // scroll content to bottom + bar.css({ top: me.outerHeight() - bar.outerHeight() }); + scrollContent(0, true); + } + else if (o.start !== 'top') + { + // assume jQuery selector + scrollContent($(o.start).position().top, null, true); + + // make sure bar stays hidden + if (!o.alwaysVisible) { bar.hide(); } + } + + // attach scroll events + attachWheel(); + + function _onWheel(e) + { + // use mouse wheel only when mouse is over + if (!isOverPanel) { return; } + + var e = e || window.event; + + var delta = 0; + if (e.wheelDelta) { delta = -e.wheelDelta/120; } + if (e.detail) { delta = e.detail / 3; } + + var target = e.target || e.srcTarget || e.srcElement; + if ($(target).closest('.' + o.wrapperClass).is(me.parent())) { + // scroll content + scrollContent(delta, true); + } + + // stop window scroll + if (e.preventDefault && !releaseScroll) { e.preventDefault(); } + if (!releaseScroll) { e.returnValue = false; } + } + + function scrollContent(y, isWheel, isJump) + { + releaseScroll = false; + var delta = y; + var maxTop = me.outerHeight() - bar.outerHeight(); + + if (isWheel) + { + // move bar with mouse wheel + delta = parseInt(bar.css('top')) + y * parseInt(o.wheelStep) / 100 * bar.outerHeight(); + + // move bar, make sure it doesn't go out + delta = Math.min(Math.max(delta, 0), maxTop); + + // if scrolling down, make sure a fractional change to the + // scroll position isn't rounded away when the scrollbar's CSS is set + // this flooring of delta would happened automatically when + // bar.css is set below, but we floor here for clarity + delta = (y > 0) ? Math.ceil(delta) : Math.floor(delta); + + // scroll the scrollbar + bar.css({ top: delta + 'px' }); + } + + // calculate actual scroll amount + percentScroll = parseInt(bar.css('top')) / (me.outerHeight() - bar.outerHeight()); + delta = percentScroll * (me[0].scrollHeight - me.outerHeight()); + + if (isJump) + { + delta = y; + var offsetTop = delta / me[0].scrollHeight * me.outerHeight(); + offsetTop = Math.min(Math.max(offsetTop, 0), maxTop); + bar.css({ top: offsetTop + 'px' }); + } + + // scroll content + me.scrollTop(delta); + + // fire scrolling event + me.trigger('slimscrolling', ~~delta); + + // ensure bar is visible + showBar(); + + // trigger hide when scroll is stopped + hideBar(); + } + + function attachWheel() + { + if (window.addEventListener) + { + this.addEventListener('DOMMouseScroll', _onWheel, false ); + this.addEventListener('mousewheel', _onWheel, false ); + this.addEventListener('MozMousePixelScroll', _onWheel, false ); + } + else + { + document.attachEvent("onmousewheel", _onWheel) + } + } + + function getBarHeight() + { + // calculate scrollbar height and make sure it is not too small + barHeight = Math.max((me.outerHeight() / me[0].scrollHeight) * me.outerHeight(), minBarHeight); + bar.css({ height: barHeight + 'px' }); + + // hide scrollbar if content is not long enough + var display = barHeight == me.outerHeight() ? 'none' : 'block'; + bar.css({ display: display }); + } + + function showBar() + { + // recalculate bar height + getBarHeight(); + clearTimeout(queueHide); + + // when bar reached top or bottom + if (percentScroll == ~~percentScroll) + { + //release wheel + releaseScroll = o.allowPageScroll; + + // publish approporiate event + if (lastScroll != percentScroll) + { + var msg = (~~percentScroll == 0) ? 'top' : 'bottom'; + me.trigger('slimscroll', msg); + } + } + else + { + releaseScroll = false; + } + lastScroll = percentScroll; + + // show only when required + if(barHeight >= me.outerHeight()) { + //allow window scroll + releaseScroll = true; + return; + } + bar.stop(true,true).fadeIn('fast'); + if (o.railVisible) { rail.stop(true,true).fadeIn('fast'); } + } + + function hideBar() + { + // only hide when options allow it + if (!o.alwaysVisible) + { + queueHide = setTimeout(function(){ + if (!(o.disableFadeOut && isOverPanel) && !isOverBar && !isDragg) + { + bar.fadeOut('slow'); + rail.fadeOut('slow'); + } + }, 1000); + } + } + + }); + + // maintain chainability + return this; + } + }); + + jQuery.fn.extend({ + slimscroll: jQuery.fn.slimScroll + }); + +})(jQuery); diff --git a/public/assets/js/plugins/slimScroll/jquery.slimscroll.min.js b/public/assets/js/plugins/slimScroll/jquery.slimscroll.min.js new file mode 100755 index 00000000..26220d6b --- /dev/null +++ b/public/assets/js/plugins/slimScroll/jquery.slimscroll.min.js @@ -0,0 +1,16 @@ +/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la) + * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) + * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. + * + * Version: 1.3.0 + * + */ +(function(f){jQuery.fn.extend({slimScroll:function(h){var a=f.extend({width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:0.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:0.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"},h);this.each(function(){function r(d){if(s){d=d|| +window.event;var c=0;d.wheelDelta&&(c=-d.wheelDelta/120);d.detail&&(c=d.detail/3);f(d.target||d.srcTarget||d.srcElement).closest("."+a.wrapperClass).is(b.parent())&&m(c,!0);d.preventDefault&&!k&&d.preventDefault();k||(d.returnValue=!1)}}function m(d,f,h){k=!1;var e=d,g=b.outerHeight()-c.outerHeight();f&&(e=parseInt(c.css("top"))+d*parseInt(a.wheelStep)/100*c.outerHeight(),e=Math.min(Math.max(e,0),g),e=0=b.outerHeight()?k=!0:(c.stop(!0,!0).fadeIn("fast"),a.railVisible&&g.stop(!0,!0).fadeIn("fast"))}function p(){a.alwaysVisible||(A=setTimeout(function(){a.disableFadeOut&&s||(x||y)||(c.fadeOut("slow"),g.fadeOut("slow"))},1E3))}var s,x,y,A,z,u,l,B,D=30,k=!1,b=f(this);if(b.parent().hasClass(a.wrapperClass)){var n=b.scrollTop(), +c=b.parent().find("."+a.barClass),g=b.parent().find("."+a.railClass);w();if(f.isPlainObject(h)){if("height"in h&&"auto"==h.height){b.parent().css("height","auto");b.css("height","auto");var q=b.parent().parent().height();b.parent().css("height",q);b.css("height",q)}if("scrollTo"in h)n=parseInt(a.scrollTo);else if("scrollBy"in h)n+=parseInt(a.scrollBy);else if("destroy"in h){c.remove();g.remove();b.unwrap();return}m(n,!1,!0)}}else{a.height="auto"==a.height?b.parent().height():a.height;n=f("
      ").addClass(a.wrapperClass).css({position:"relative", +overflow:"hidden",width:a.width,height:a.height});b.css({overflow:"hidden",width:a.width,height:a.height});var g=f("
      ").addClass(a.railClass).css({width:a.size,height:"100%",position:"absolute",top:0,display:a.alwaysVisible&&a.railVisible?"block":"none","border-radius":a.railBorderRadius,background:a.railColor,opacity:a.railOpacity,zIndex:90}),c=f("
      ").addClass(a.barClass).css({background:a.color,width:a.size,position:"absolute",top:0,opacity:a.opacity,display:a.alwaysVisible? +"block":"none","border-radius":a.borderRadius,BorderRadius:a.borderRadius,MozBorderRadius:a.borderRadius,WebkitBorderRadius:a.borderRadius,zIndex:99}),q="right"==a.position?{right:a.distance}:{left:a.distance};g.css(q);c.css(q);b.wrap(n);b.parent().append(c);b.parent().append(g);a.railDraggable&&c.bind("mousedown",function(a){var b=f(document);y=!0;t=parseFloat(c.css("top"));pageY=a.pageY;b.bind("mousemove.slimscroll",function(a){currTop=t+a.pageY-pageY;c.css("top",currTop);m(0,c.position().top,!1)}); +b.bind("mouseup.slimscroll",function(a){y=!1;p();b.unbind(".slimscroll")});return!1}).bind("selectstart.slimscroll",function(a){a.stopPropagation();a.preventDefault();return!1});g.hover(function(){v()},function(){p()});c.hover(function(){x=!0},function(){x=!1});b.hover(function(){s=!0;v();p()},function(){s=!1;p()});b.bind("touchstart",function(a,b){a.originalEvent.touches.length&&(z=a.originalEvent.touches[0].pageY)});b.bind("touchmove",function(b){k||b.originalEvent.preventDefault();b.originalEvent.touches.length&& +(m((z-b.originalEvent.touches[0].pageY)/a.touchScrollStep,!0),z=b.originalEvent.touches[0].pageY)});w();"bottom"===a.start?(c.css({top:b.outerHeight()-c.outerHeight()}),m(0,!0)):"top"!==a.start&&(m(f(a.start).position().top,null,!0),a.alwaysVisible||c.hide());C()}});return this}});jQuery.fn.extend({slimscroll:jQuery.fn.slimScroll})})(jQuery); \ No newline at end of file diff --git a/public/assets/js/plugins/slimScroll/slimScroll.jquery.json b/public/assets/js/plugins/slimScroll/slimScroll.jquery.json new file mode 100755 index 00000000..41174e64 --- /dev/null +++ b/public/assets/js/plugins/slimScroll/slimScroll.jquery.json @@ -0,0 +1,30 @@ +{ + "name" : "slimScroll", + "version" : "1.2.0", + "title" : "jQuery slimScroll scrollbar", + "description" : "slimScroll is a small jQuery plugin that transforms any div into a scrollable area. slimScroll doesn't occupy any visual space as it only appears on a user initiated mouse-over.", + "keywords" : ["scrollbar", "scroll", "slimscroll", "scrollable", "scrolling", "scroller", "ui"], + "demo" : "http://rocha.la/jQuery-slimScroll/", + "homepage" : "http://rocha.la/jQuery-slimScroll/", + "download" : "http://rocha.la/jQuery-slimScroll/", + + "author" : { + "name" : "Piotr Rochala", + "url" : "http://rocha.la/" + }, + + "dependencies" : { + "jquery" : ">= 1.7" + }, + + "licenses" : [ + { + "type": "MIT", + "url": "http://www.opensource.org/licenses/mit-license.php" + }, + { + "type": "GPL", + "url": "http://www.opensource.org/licenses/gpl-license.php" + } + ] +} \ No newline at end of file diff --git a/public/assets/js/plugins/sparkline/jquery.sparkline.js b/public/assets/js/plugins/sparkline/jquery.sparkline.js new file mode 100755 index 00000000..721e03b7 --- /dev/null +++ b/public/assets/js/plugins/sparkline/jquery.sparkline.js @@ -0,0 +1,3054 @@ +/** +* +* jquery.sparkline.js +* +* v2.1.2 +* (c) Splunk, Inc +* Contact: Gareth Watts (gareth@splunk.com) +* http://omnipotent.net/jquery.sparkline/ +* +* Generates inline sparkline charts from data supplied either to the method +* or inline in HTML +* +* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag +* (Firefox 2.0+, Safari, Opera, etc) +* +* License: New BSD License +* +* Copyright (c) 2012, Splunk Inc. +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without modification, +* are permitted provided that the following conditions are met: +* +* * Redistributions of source code must retain the above copyright notice, +* this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following disclaimer in the documentation +* and/or other materials provided with the distribution. +* * Neither the name of Splunk Inc nor the names of its contributors may +* be used to endorse or promote products derived from this software without +* specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +* +* Usage: +* $(selector).sparkline(values, options) +* +* If values is undefined or set to 'html' then the data values are read from the specified tag: +*

      Sparkline: 1,4,6,6,8,5,3,5

      +* $('.sparkline').sparkline(); +* There must be no spaces in the enclosed data set +* +* Otherwise values must be an array of numbers or null values +*

      Sparkline: This text replaced if the browser is compatible

      +* $('#sparkline1').sparkline([1,4,6,6,8,5,3,5]) +* $('#sparkline2').sparkline([1,4,6,null,null,5,3,5]) +* +* Values can also be specified in an HTML comment, or as a values attribute: +*

      Sparkline:

      +*

      Sparkline:

      +* $('.sparkline').sparkline(); +* +* For line charts, x values can also be specified: +*

      Sparkline: 1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5

      +* $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ]) +* +* By default, options should be passed in as teh second argument to the sparkline function: +* $('.sparkline').sparkline([1,2,3,4], {type: 'bar'}) +* +* Options can also be set by passing them on the tag itself. This feature is disabled by default though +* as there's a slight performance overhead: +* $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true}) +*

      Sparkline: loading

      +* Prefix all options supplied as tag attribute with "spark" (configurable by setting tagOptionPrefix) +* +* Supported options: +* lineColor - Color of the line used for the chart +* fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart +* width - Width of the chart - Defaults to 3 times the number of values in pixels +* height - Height of the chart - Defaults to the height of the containing element +* chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied +* chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied +* chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax +* chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied +* chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied +* composite - If true then don't erase any existing chart attached to the tag, but draw +* another chart over the top - Note that width and height are ignored if an +* existing chart is detected. +* tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values' +* enableTagOptions - Whether to check tags for sparkline options +* tagOptionPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark' +* disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a +* hidden dom element, avoding a browser reflow +* disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled, +* making the plugin perform much like it did in 1.x +* disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled) +* disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled +* defaults to false (highlights enabled) +* highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase +* tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body +* tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied +* tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis +* tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis +* tooltipFormatter - Optional callback that allows you to override the HTML displayed in the tooltip +* callback is given arguments of (sparkline, options, fields) +* tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title +* tooltipFormat - A format string or SPFormat object (or an array thereof for multiple entries) +* to control the format of the tooltip +* tooltipPrefix - A string to prepend to each field displayed in a tooltip +* tooltipSuffix - A string to append to each field displayed in a tooltip +* tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true) +* tooltipValueLookups - An object or range map to map field values to tooltip strings +* (eg. to map -1 to "Lost", 0 to "Draw", and 1 to "Win") +* numberFormatter - Optional callback for formatting numbers in tooltips +* numberDigitGroupSep - Character to use for group separator in numbers "1,234" - Defaults to "," +* numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to "." +* numberDigitGroupCount - Number of digits between group separator - Defaults to 3 +* +* There are 7 types of sparkline, selected by supplying a "type" option of 'line' (default), +* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box' +* line - Line chart. Options: +* spotColor - Set to '' to not end each line in a circular spot +* minSpotColor - If set, color of spot at minimum value +* maxSpotColor - If set, color of spot at maximum value +* spotRadius - Radius in pixels +* lineWidth - Width of line in pixels +* normalRangeMin +* normalRangeMax - If set draws a filled horizontal bar between these two values marking the "normal" +* or expected range of values +* normalRangeColor - Color to use for the above bar +* drawNormalOnTop - Draw the normal range above the chart fill color if true +* defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart +* highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable +* highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable +* valueSpots - Specify which points to draw spots on, and in which color. Accepts a range map +* +* bar - Bar chart. Options: +* barColor - Color of bars for postive values +* negBarColor - Color of bars for negative values +* zeroColor - Color of bars with zero values +* nullColor - Color of bars with null values - Defaults to omitting the bar entirely +* barWidth - Width of bars in pixels +* colorMap - Optional mappnig of values to colors to override the *BarColor values above +* can be an Array of values to control the color of individual bars or a range map +* to specify colors for individual ranges of values +* barSpacing - Gap between bars in pixels +* zeroAxis - Centers the y-axis around zero if true +* +* tristate - Charts values of win (>0), lose (<0) or draw (=0) +* posBarColor - Color of win values +* negBarColor - Color of lose values +* zeroBarColor - Color of draw values +* barWidth - Width of bars in pixels +* barSpacing - Gap between bars in pixels +* colorMap - Optional mappnig of values to colors to override the *BarColor values above +* can be an Array of values to control the color of individual bars or a range map +* to specify colors for individual ranges of values +* +* discrete - Options: +* lineHeight - Height of each line in pixels - Defaults to 30% of the graph height +* thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor +* thresholdColor +* +* bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ... +* options: +* targetColor - The color of the vertical target marker +* targetWidth - The width of the target marker in pixels +* performanceColor - The color of the performance measure horizontal bar +* rangeColors - Colors to use for each qualitative range background color +* +* pie - Pie chart. Options: +* sliceColors - An array of colors to use for pie slices +* offset - Angle in degrees to offset the first slice - Try -90 or +90 +* borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border) +* borderColor - Color to use for the pie chart border - Defaults to #000 +* +* box - Box plot. Options: +* raw - Set to true to supply pre-computed plot points as values +* values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier +* When set to false you can supply any number of values and the box plot will +* be computed for you. Default is false. +* showOutliers - Set to true (default) to display outliers as circles +* outlierIQR - Interquartile range used to determine outliers. Default 1.5 +* boxLineColor - Outline color of the box +* boxFillColor - Fill color for the box +* whiskerColor - Line color used for whiskers +* outlierLineColor - Outline color of outlier circles +* outlierFillColor - Fill color of the outlier circles +* spotRadius - Radius of outlier circles +* medianColor - Line color of the median line +* target - Draw a target cross hair at the supplied value (default undefined) +* +* +* +* Examples: +* $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false }); +* $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 }); +* $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }): +* $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' }); +* $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' }); +* $('#pie').sparkline([1,1,2], { type:'pie' }); +*/ + +/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */ + +(function(document, Math, undefined) { // performance/minified-size optimization +(function(factory) { + if(typeof define === 'function' && define.amd) { + define(['jquery'], factory); + } else if (jQuery && !jQuery.fn.sparkline) { + factory(jQuery); + } +} +(function($) { + 'use strict'; + + var UNSET_OPTION = {}, + getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues, + remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap, + MouseHandler, Tooltip, barHighlightMixin, + line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles, + VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0; + + /** + * Default configuration settings + */ + getDefaults = function () { + return { + // Settings common to most/all chart types + common: { + type: 'line', + lineColor: '#00f', + fillColor: '#cdf', + defaultPixelsPerValue: 3, + width: 'auto', + height: 'auto', + composite: false, + tagValuesAttribute: 'values', + tagOptionsPrefix: 'spark', + enableTagOptions: false, + enableHighlight: true, + highlightLighten: 1.4, + tooltipSkipNull: true, + tooltipPrefix: '', + tooltipSuffix: '', + disableHiddenCheck: false, + numberFormatter: false, + numberDigitGroupCount: 3, + numberDigitGroupSep: ',', + numberDecimalMark: '.', + disableTooltips: false, + disableInteraction: false + }, + // Defaults for line charts + line: { + spotColor: '#f80', + highlightSpotColor: '#5f5', + highlightLineColor: '#f22', + spotRadius: 1.5, + minSpotColor: '#f80', + maxSpotColor: '#f80', + lineWidth: 1, + normalRangeMin: undefined, + normalRangeMax: undefined, + normalRangeColor: '#ccc', + drawNormalOnTop: false, + chartRangeMin: undefined, + chartRangeMax: undefined, + chartRangeMinX: undefined, + chartRangeMaxX: undefined, + tooltipFormat: new SPFormat(' {{prefix}}{{y}}{{suffix}}') + }, + // Defaults for bar charts + bar: { + barColor: '#3366cc', + negBarColor: '#f44', + stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00', + '#dd4477', '#0099c6', '#990099'], + zeroColor: undefined, + nullColor: undefined, + zeroAxis: true, + barWidth: 4, + barSpacing: 1, + chartRangeMax: undefined, + chartRangeMin: undefined, + chartRangeClip: false, + colorMap: undefined, + tooltipFormat: new SPFormat(' {{prefix}}{{value}}{{suffix}}') + }, + // Defaults for tristate charts + tristate: { + barWidth: 4, + barSpacing: 1, + posBarColor: '#6f6', + negBarColor: '#f44', + zeroBarColor: '#999', + colorMap: {}, + tooltipFormat: new SPFormat(' {{value:map}}'), + tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } } + }, + // Defaults for discrete charts + discrete: { + lineHeight: 'auto', + thresholdColor: undefined, + thresholdValue: 0, + chartRangeMax: undefined, + chartRangeMin: undefined, + chartRangeClip: false, + tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}') + }, + // Defaults for bullet charts + bullet: { + targetColor: '#f33', + targetWidth: 3, // width of the target bar in pixels + performanceColor: '#33f', + rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'], + base: undefined, // set this to a number to change the base start number + tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'), + tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} } + }, + // Defaults for pie charts + pie: { + offset: 0, + sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00', + '#dd4477', '#0099c6', '#990099'], + borderWidth: 0, + borderColor: '#000', + tooltipFormat: new SPFormat(' {{value}} ({{percent.1}}%)') + }, + // Defaults for box plots + box: { + raw: false, + boxLineColor: '#000', + boxFillColor: '#cdf', + whiskerColor: '#000', + outlierLineColor: '#333', + outlierFillColor: '#fff', + medianColor: '#f00', + showOutliers: true, + outlierIQR: 1.5, + spotRadius: 1.5, + target: undefined, + targetColor: '#4a2', + chartRangeMax: undefined, + chartRangeMin: undefined, + tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'), + tooltipFormatFieldlistKey: 'field', + tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median', + uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier', + lw: 'Left Whisker', rw: 'Right Whisker'} } + } + }; + }; + + // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname + defaultStyles = '.jqstooltip { ' + + 'position: absolute;' + + 'left: 0px;' + + 'top: 0px;' + + 'visibility: hidden;' + + 'background: rgb(0, 0, 0) transparent;' + + 'background-color: rgba(0,0,0,0.6);' + + 'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' + + '-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";' + + 'color: white;' + + 'font: 10px arial, san serif;' + + 'text-align: left;' + + 'white-space: nowrap;' + + 'padding: 5px;' + + 'border: 1px solid white;' + + 'z-index: 10000;' + + '}' + + '.jqsfield { ' + + 'color: white;' + + 'font: 10px arial, san serif;' + + 'text-align: left;' + + '}'; + + /** + * Utilities + */ + + createClass = function (/* [baseclass, [mixin, ...]], definition */) { + var Class, args; + Class = function () { + this.init.apply(this, arguments); + }; + if (arguments.length > 1) { + if (arguments[0]) { + Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]); + Class._super = arguments[0].prototype; + } else { + Class.prototype = arguments[arguments.length - 1]; + } + if (arguments.length > 2) { + args = Array.prototype.slice.call(arguments, 1, -1); + args.unshift(Class.prototype); + $.extend.apply($, args); + } + } else { + Class.prototype = arguments[0]; + } + Class.prototype.cls = Class; + return Class; + }; + + /** + * Wraps a format string for tooltips + * {{x}} + * {{x.2} + * {{x:months}} + */ + $.SPFormatClass = SPFormat = createClass({ + fre: /\{\{([\w.]+?)(:(.+?))?\}\}/g, + precre: /(\w+)\.(\d+)/, + + init: function (format, fclass) { + this.format = format; + this.fclass = fclass; + }, + + render: function (fieldset, lookups, options) { + var self = this, + fields = fieldset, + match, token, lookupkey, fieldvalue, prec; + return this.format.replace(this.fre, function () { + var lookup; + token = arguments[1]; + lookupkey = arguments[3]; + match = self.precre.exec(token); + if (match) { + prec = match[2]; + token = match[1]; + } else { + prec = false; + } + fieldvalue = fields[token]; + if (fieldvalue === undefined) { + return ''; + } + if (lookupkey && lookups && lookups[lookupkey]) { + lookup = lookups[lookupkey]; + if (lookup.get) { // RangeMap + return lookups[lookupkey].get(fieldvalue) || fieldvalue; + } else { + return lookups[lookupkey][fieldvalue] || fieldvalue; + } + } + if (isNumber(fieldvalue)) { + if (options.get('numberFormatter')) { + fieldvalue = options.get('numberFormatter')(fieldvalue); + } else { + fieldvalue = formatNumber(fieldvalue, prec, + options.get('numberDigitGroupCount'), + options.get('numberDigitGroupSep'), + options.get('numberDecimalMark')); + } + } + return fieldvalue; + }); + } + }); + + // convience method to avoid needing the new operator + $.spformat = function(format, fclass) { + return new SPFormat(format, fclass); + }; + + clipval = function (val, min, max) { + if (val < min) { + return min; + } + if (val > max) { + return max; + } + return val; + }; + + quartile = function (values, q) { + var vl; + if (q === 2) { + vl = Math.floor(values.length / 2); + return values.length % 2 ? values[vl] : (values[vl-1] + values[vl]) / 2; + } else { + if (values.length % 2 ) { // odd + vl = (values.length * q + q) / 4; + return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1]; + } else { //even + vl = (values.length * q + 2) / 4; + return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1]; + + } + } + }; + + normalizeValue = function (val) { + var nf; + switch (val) { + case 'undefined': + val = undefined; + break; + case 'null': + val = null; + break; + case 'true': + val = true; + break; + case 'false': + val = false; + break; + default: + nf = parseFloat(val); + if (val == nf) { + val = nf; + } + } + return val; + }; + + normalizeValues = function (vals) { + var i, result = []; + for (i = vals.length; i--;) { + result[i] = normalizeValue(vals[i]); + } + return result; + }; + + remove = function (vals, filter) { + var i, vl, result = []; + for (i = 0, vl = vals.length; i < vl; i++) { + if (vals[i] !== filter) { + result.push(vals[i]); + } + } + return result; + }; + + isNumber = function (num) { + return !isNaN(parseFloat(num)) && isFinite(num); + }; + + formatNumber = function (num, prec, groupsize, groupsep, decsep) { + var p, i; + num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split(''); + p = (p = $.inArray('.', num)) < 0 ? num.length : p; + if (p < num.length) { + num[p] = decsep; + } + for (i = p - groupsize; i > 0; i -= groupsize) { + num.splice(i, 0, groupsep); + } + return num.join(''); + }; + + // determine if all values of an array match a value + // returns true if the array is empty + all = function (val, arr, ignoreNull) { + var i; + for (i = arr.length; i--; ) { + if (ignoreNull && arr[i] === null) continue; + if (arr[i] !== val) { + return false; + } + } + return true; + }; + + // sums the numeric values in an array, ignoring other values + sum = function (vals) { + var total = 0, i; + for (i = vals.length; i--;) { + total += typeof vals[i] === 'number' ? vals[i] : 0; + } + return total; + }; + + ensureArray = function (val) { + return $.isArray(val) ? val : [val]; + }; + + // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/ + addCSS = function(css) { + var tag; + //if ('\v' == 'v') /* ie only */ { + if (document.createStyleSheet) { + document.createStyleSheet().cssText = css; + } else { + tag = document.createElement('style'); + tag.type = 'text/css'; + document.getElementsByTagName('head')[0].appendChild(tag); + tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css; + } + }; + + // Provide a cross-browser interface to a few simple drawing primitives + $.fn.simpledraw = function (width, height, useExisting, interact) { + var target, mhandler; + if (useExisting && (target = this.data('_jqs_vcanvas'))) { + return target; + } + + if ($.fn.sparkline.canvas === false) { + // We've already determined that neither Canvas nor VML are available + return false; + + } else if ($.fn.sparkline.canvas === undefined) { + // No function defined yet -- need to see if we support Canvas or VML + var el = document.createElement('canvas'); + if (!!(el.getContext && el.getContext('2d'))) { + // Canvas is available + $.fn.sparkline.canvas = function(width, height, target, interact) { + return new VCanvas_canvas(width, height, target, interact); + }; + } else if (document.namespaces && !document.namespaces.v) { + // VML is available + document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML'); + $.fn.sparkline.canvas = function(width, height, target, interact) { + return new VCanvas_vml(width, height, target); + }; + } else { + // Neither Canvas nor VML are available + $.fn.sparkline.canvas = false; + return false; + } + } + + if (width === undefined) { + width = $(this).innerWidth(); + } + if (height === undefined) { + height = $(this).innerHeight(); + } + + target = $.fn.sparkline.canvas(width, height, this, interact); + + mhandler = $(this).data('_jqs_mhandler'); + if (mhandler) { + mhandler.registerCanvas(target); + } + return target; + }; + + $.fn.cleardraw = function () { + var target = this.data('_jqs_vcanvas'); + if (target) { + target.reset(); + } + }; + + $.RangeMapClass = RangeMap = createClass({ + init: function (map) { + var key, range, rangelist = []; + for (key in map) { + if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) { + range = key.split(':'); + range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]); + range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]); + range[2] = map[key]; + rangelist.push(range); + } + } + this.map = map; + this.rangelist = rangelist || false; + }, + + get: function (value) { + var rangelist = this.rangelist, + i, range, result; + if ((result = this.map[value]) !== undefined) { + return result; + } + if (rangelist) { + for (i = rangelist.length; i--;) { + range = rangelist[i]; + if (range[0] <= value && range[1] >= value) { + return range[2]; + } + } + } + return undefined; + } + }); + + // Convenience function + $.range_map = function(map) { + return new RangeMap(map); + }; + + MouseHandler = createClass({ + init: function (el, options) { + var $el = $(el); + this.$el = $el; + this.options = options; + this.currentPageX = 0; + this.currentPageY = 0; + this.el = el; + this.splist = []; + this.tooltip = null; + this.over = false; + this.displayTooltips = !options.get('disableTooltips'); + this.highlightEnabled = !options.get('disableHighlight'); + }, + + registerSparkline: function (sp) { + this.splist.push(sp); + if (this.over) { + this.updateDisplay(); + } + }, + + registerCanvas: function (canvas) { + var $canvas = $(canvas.canvas); + this.canvas = canvas; + this.$canvas = $canvas; + $canvas.mouseenter($.proxy(this.mouseenter, this)); + $canvas.mouseleave($.proxy(this.mouseleave, this)); + $canvas.click($.proxy(this.mouseclick, this)); + }, + + reset: function (removeTooltip) { + this.splist = []; + if (this.tooltip && removeTooltip) { + this.tooltip.remove(); + this.tooltip = undefined; + } + }, + + mouseclick: function (e) { + var clickEvent = $.Event('sparklineClick'); + clickEvent.originalEvent = e; + clickEvent.sparklines = this.splist; + this.$el.trigger(clickEvent); + }, + + mouseenter: function (e) { + $(document.body).unbind('mousemove.jqs'); + $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this)); + this.over = true; + this.currentPageX = e.pageX; + this.currentPageY = e.pageY; + this.currentEl = e.target; + if (!this.tooltip && this.displayTooltips) { + this.tooltip = new Tooltip(this.options); + this.tooltip.updatePosition(e.pageX, e.pageY); + } + this.updateDisplay(); + }, + + mouseleave: function () { + $(document.body).unbind('mousemove.jqs'); + var splist = this.splist, + spcount = splist.length, + needsRefresh = false, + sp, i; + this.over = false; + this.currentEl = null; + + if (this.tooltip) { + this.tooltip.remove(); + this.tooltip = null; + } + + for (i = 0; i < spcount; i++) { + sp = splist[i]; + if (sp.clearRegionHighlight()) { + needsRefresh = true; + } + } + + if (needsRefresh) { + this.canvas.render(); + } + }, + + mousemove: function (e) { + this.currentPageX = e.pageX; + this.currentPageY = e.pageY; + this.currentEl = e.target; + if (this.tooltip) { + this.tooltip.updatePosition(e.pageX, e.pageY); + } + this.updateDisplay(); + }, + + updateDisplay: function () { + var splist = this.splist, + spcount = splist.length, + needsRefresh = false, + offset = this.$canvas.offset(), + localX = this.currentPageX - offset.left, + localY = this.currentPageY - offset.top, + tooltiphtml, sp, i, result, changeEvent; + if (!this.over) { + return; + } + for (i = 0; i < spcount; i++) { + sp = splist[i]; + result = sp.setRegionHighlight(this.currentEl, localX, localY); + if (result) { + needsRefresh = true; + } + } + if (needsRefresh) { + changeEvent = $.Event('sparklineRegionChange'); + changeEvent.sparklines = this.splist; + this.$el.trigger(changeEvent); + if (this.tooltip) { + tooltiphtml = ''; + for (i = 0; i < spcount; i++) { + sp = splist[i]; + tooltiphtml += sp.getCurrentRegionTooltip(); + } + this.tooltip.setContent(tooltiphtml); + } + if (!this.disableHighlight) { + this.canvas.render(); + } + } + if (result === null) { + this.mouseleave(); + } + } + }); + + + Tooltip = createClass({ + sizeStyle: 'position: static !important;' + + 'display: block !important;' + + 'visibility: hidden !important;' + + 'float: left !important;', + + init: function (options) { + var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'), + sizetipStyle = this.sizeStyle, + offset; + this.container = options.get('tooltipContainer') || document.body; + this.tooltipOffsetX = options.get('tooltipOffsetX', 10); + this.tooltipOffsetY = options.get('tooltipOffsetY', 12); + // remove any previous lingering tooltip + $('#jqssizetip').remove(); + $('#jqstooltip').remove(); + this.sizetip = $('
      ', { + id: 'jqssizetip', + style: sizetipStyle, + 'class': tooltipClassname + }); + this.tooltip = $('
      ', { + id: 'jqstooltip', + 'class': tooltipClassname + }).appendTo(this.container); + // account for the container's location + offset = this.tooltip.offset(); + this.offsetLeft = offset.left; + this.offsetTop = offset.top; + this.hidden = true; + $(window).unbind('resize.jqs scroll.jqs'); + $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this)); + this.updateWindowDims(); + }, + + updateWindowDims: function () { + this.scrollTop = $(window).scrollTop(); + this.scrollLeft = $(window).scrollLeft(); + this.scrollRight = this.scrollLeft + $(window).width(); + this.updatePosition(); + }, + + getSize: function (content) { + this.sizetip.html(content).appendTo(this.container); + this.width = this.sizetip.width() + 1; + this.height = this.sizetip.height(); + this.sizetip.remove(); + }, + + setContent: function (content) { + if (!content) { + this.tooltip.css('visibility', 'hidden'); + this.hidden = true; + return; + } + this.getSize(content); + this.tooltip.html(content) + .css({ + 'width': this.width, + 'height': this.height, + 'visibility': 'visible' + }); + if (this.hidden) { + this.hidden = false; + this.updatePosition(); + } + }, + + updatePosition: function (x, y) { + if (x === undefined) { + if (this.mousex === undefined) { + return; + } + x = this.mousex - this.offsetLeft; + y = this.mousey - this.offsetTop; + + } else { + this.mousex = x = x - this.offsetLeft; + this.mousey = y = y - this.offsetTop; + } + if (!this.height || !this.width || this.hidden) { + return; + } + + y -= this.height + this.tooltipOffsetY; + x += this.tooltipOffsetX; + + if (y < this.scrollTop) { + y = this.scrollTop; + } + if (x < this.scrollLeft) { + x = this.scrollLeft; + } else if (x + this.width > this.scrollRight) { + x = this.scrollRight - this.width; + } + + this.tooltip.css({ + 'left': x, + 'top': y + }); + }, + + remove: function () { + this.tooltip.remove(); + this.sizetip.remove(); + this.sizetip = this.tooltip = undefined; + $(window).unbind('resize.jqs scroll.jqs'); + } + }); + + initStyles = function() { + addCSS(defaultStyles); + }; + + $(initStyles); + + pending = []; + $.fn.sparkline = function (userValues, userOptions) { + return this.each(function () { + var options = new $.fn.sparkline.options(this, userOptions), + $this = $(this), + render, i; + render = function () { + var values, width, height, tmp, mhandler, sp, vals; + if (userValues === 'html' || userValues === undefined) { + vals = this.getAttribute(options.get('tagValuesAttribute')); + if (vals === undefined || vals === null) { + vals = $this.html(); + } + values = vals.replace(/(^\s*\s*$)|\s+/g, '').split(','); + } else { + values = userValues; + } + + width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width'); + if (options.get('height') === 'auto') { + if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) { + // must be a better way to get the line height + tmp = document.createElement('span'); + tmp.innerHTML = 'a'; + $this.html(tmp); + height = $(tmp).innerHeight() || $(tmp).height(); + $(tmp).remove(); + tmp = null; + } + } else { + height = options.get('height'); + } + + if (!options.get('disableInteraction')) { + mhandler = $.data(this, '_jqs_mhandler'); + if (!mhandler) { + mhandler = new MouseHandler(this, options); + $.data(this, '_jqs_mhandler', mhandler); + } else if (!options.get('composite')) { + mhandler.reset(); + } + } else { + mhandler = false; + } + + if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) { + if (!$.data(this, '_jqs_errnotify')) { + alert('Attempted to attach a composite sparkline to an element with no existing sparkline'); + $.data(this, '_jqs_errnotify', true); + } + return; + } + + sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height); + + sp.render(); + + if (mhandler) { + mhandler.registerSparkline(sp); + } + }; + if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || !$(this).parents('body').length) { + if (!options.get('composite') && $.data(this, '_jqs_pending')) { + // remove any existing references to the element + for (i = pending.length; i; i--) { + if (pending[i - 1][0] == this) { + pending.splice(i - 1, 1); + } + } + } + pending.push([this, render]); + $.data(this, '_jqs_pending', true); + } else { + render.call(this); + } + }); + }; + + $.fn.sparkline.defaults = getDefaults(); + + + $.sparkline_display_visible = function () { + var el, i, pl; + var done = []; + for (i = 0, pl = pending.length; i < pl; i++) { + el = pending[i][0]; + if ($(el).is(':visible') && !$(el).parents().is(':hidden')) { + pending[i][1].call(el); + $.data(pending[i][0], '_jqs_pending', false); + done.push(i); + } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) { + // element has been inserted and removed from the DOM + // If it was not yet inserted into the dom then the .data request + // will return true. + // removing from the dom causes the data to be removed. + $.data(pending[i][0], '_jqs_pending', false); + done.push(i); + } + } + for (i = done.length; i; i--) { + pending.splice(done[i - 1], 1); + } + }; + + + /** + * User option handler + */ + $.fn.sparkline.options = createClass({ + init: function (tag, userOptions) { + var extendedOptions, defaults, base, tagOptionType; + this.userOptions = userOptions = userOptions || {}; + this.tag = tag; + this.tagValCache = {}; + defaults = $.fn.sparkline.defaults; + base = defaults.common; + this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix); + + tagOptionType = this.getTagSetting('type'); + if (tagOptionType === UNSET_OPTION) { + extendedOptions = defaults[userOptions.type || base.type]; + } else { + extendedOptions = defaults[tagOptionType]; + } + this.mergedOptions = $.extend({}, base, extendedOptions, userOptions); + }, + + + getTagSetting: function (key) { + var prefix = this.tagOptionsPrefix, + val, i, pairs, keyval; + if (prefix === false || prefix === undefined) { + return UNSET_OPTION; + } + if (this.tagValCache.hasOwnProperty(key)) { + val = this.tagValCache.key; + } else { + val = this.tag.getAttribute(prefix + key); + if (val === undefined || val === null) { + val = UNSET_OPTION; + } else if (val.substr(0, 1) === '[') { + val = val.substr(1, val.length - 2).split(','); + for (i = val.length; i--;) { + val[i] = normalizeValue(val[i].replace(/(^\s*)|(\s*$)/g, '')); + } + } else if (val.substr(0, 1) === '{') { + pairs = val.substr(1, val.length - 2).split(','); + val = {}; + for (i = pairs.length; i--;) { + keyval = pairs[i].split(':', 2); + val[keyval[0].replace(/(^\s*)|(\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\s*)|(\s*$)/g, '')); + } + } else { + val = normalizeValue(val); + } + this.tagValCache.key = val; + } + return val; + }, + + get: function (key, defaultval) { + var tagOption = this.getTagSetting(key), + result; + if (tagOption !== UNSET_OPTION) { + return tagOption; + } + return (result = this.mergedOptions[key]) === undefined ? defaultval : result; + } + }); + + + $.fn.sparkline._base = createClass({ + disabled: false, + + init: function (el, values, options, width, height) { + this.el = el; + this.$el = $(el); + this.values = values; + this.options = options; + this.width = width; + this.height = height; + this.currentRegion = undefined; + }, + + /** + * Setup the canvas + */ + initTarget: function () { + var interactive = !this.options.get('disableInteraction'); + if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) { + this.disabled = true; + } else { + this.canvasWidth = this.target.pixelWidth; + this.canvasHeight = this.target.pixelHeight; + } + }, + + /** + * Actually render the chart to the canvas + */ + render: function () { + if (this.disabled) { + this.el.innerHTML = ''; + return false; + } + return true; + }, + + /** + * Return a region id for a given x/y co-ordinate + */ + getRegion: function (x, y) { + }, + + /** + * Highlight an item based on the moused-over x,y co-ordinate + */ + setRegionHighlight: function (el, x, y) { + var currentRegion = this.currentRegion, + highlightEnabled = !this.options.get('disableHighlight'), + newRegion; + if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) { + return null; + } + newRegion = this.getRegion(el, x, y); + if (currentRegion !== newRegion) { + if (currentRegion !== undefined && highlightEnabled) { + this.removeHighlight(); + } + this.currentRegion = newRegion; + if (newRegion !== undefined && highlightEnabled) { + this.renderHighlight(); + } + return true; + } + return false; + }, + + /** + * Reset any currently highlighted item + */ + clearRegionHighlight: function () { + if (this.currentRegion !== undefined) { + this.removeHighlight(); + this.currentRegion = undefined; + return true; + } + return false; + }, + + renderHighlight: function () { + this.changeHighlight(true); + }, + + removeHighlight: function () { + this.changeHighlight(false); + }, + + changeHighlight: function (highlight) {}, + + /** + * Fetch the HTML to display as a tooltip + */ + getCurrentRegionTooltip: function () { + var options = this.options, + header = '', + entries = [], + fields, formats, formatlen, fclass, text, i, + showFields, showFieldsKey, newFields, fv, + formatter, format, fieldlen, j; + if (this.currentRegion === undefined) { + return ''; + } + fields = this.getCurrentRegionFields(); + formatter = options.get('tooltipFormatter'); + if (formatter) { + return formatter(this, options, fields); + } + if (options.get('tooltipChartTitle')) { + header += '
      ' + options.get('tooltipChartTitle') + '
      \n'; + } + formats = this.options.get('tooltipFormat'); + if (!formats) { + return ''; + } + if (!$.isArray(formats)) { + formats = [formats]; + } + if (!$.isArray(fields)) { + fields = [fields]; + } + showFields = this.options.get('tooltipFormatFieldlist'); + showFieldsKey = this.options.get('tooltipFormatFieldlistKey'); + if (showFields && showFieldsKey) { + // user-selected ordering of fields + newFields = []; + for (i = fields.length; i--;) { + fv = fields[i][showFieldsKey]; + if ((j = $.inArray(fv, showFields)) != -1) { + newFields[j] = fields[i]; + } + } + fields = newFields; + } + formatlen = formats.length; + fieldlen = fields.length; + for (i = 0; i < formatlen; i++) { + format = formats[i]; + if (typeof format === 'string') { + format = new SPFormat(format); + } + fclass = format.fclass || 'jqsfield'; + for (j = 0; j < fieldlen; j++) { + if (!fields[j].isNull || !options.get('tooltipSkipNull')) { + $.extend(fields[j], { + prefix: options.get('tooltipPrefix'), + suffix: options.get('tooltipSuffix') + }); + text = format.render(fields[j], options.get('tooltipValueLookups'), options); + entries.push('
      ' + text + '
      '); + } + } + } + if (entries.length) { + return header + entries.join('\n'); + } + return ''; + }, + + getCurrentRegionFields: function () {}, + + calcHighlightColor: function (color, options) { + var highlightColor = options.get('highlightColor'), + lighten = options.get('highlightLighten'), + parse, mult, rgbnew, i; + if (highlightColor) { + return highlightColor; + } + if (lighten) { + // extract RGB values + parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color); + if (parse) { + rgbnew = []; + mult = color.length === 4 ? 16 : 1; + for (i = 0; i < 3; i++) { + rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255); + } + return 'rgb(' + rgbnew.join(',') + ')'; + } + + } + return color; + } + + }); + + barHighlightMixin = { + changeHighlight: function (highlight) { + var currentRegion = this.currentRegion, + target = this.target, + shapeids = this.regionShapes[currentRegion], + newShapes; + // will be null if the region value was null + if (shapeids) { + newShapes = this.renderRegion(currentRegion, highlight); + if ($.isArray(newShapes) || $.isArray(shapeids)) { + target.replaceWithShapes(shapeids, newShapes); + this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) { + return newShape.id; + }); + } else { + target.replaceWithShape(shapeids, newShapes); + this.regionShapes[currentRegion] = newShapes.id; + } + } + }, + + render: function () { + var values = this.values, + target = this.target, + regionShapes = this.regionShapes, + shapes, ids, i, j; + + if (!this.cls._super.render.call(this)) { + return; + } + for (i = values.length; i--;) { + shapes = this.renderRegion(i); + if (shapes) { + if ($.isArray(shapes)) { + ids = []; + for (j = shapes.length; j--;) { + shapes[j].append(); + ids.push(shapes[j].id); + } + regionShapes[i] = ids; + } else { + shapes.append(); + regionShapes[i] = shapes.id; // store just the shapeid + } + } else { + // null value + regionShapes[i] = null; + } + } + target.render(); + } + }; + + /** + * Line charts + */ + $.fn.sparkline.line = line = createClass($.fn.sparkline._base, { + type: 'line', + + init: function (el, values, options, width, height) { + line._super.init.call(this, el, values, options, width, height); + this.vertices = []; + this.regionMap = []; + this.xvalues = []; + this.yvalues = []; + this.yminmax = []; + this.hightlightSpotId = null; + this.lastShapeId = null; + this.initTarget(); + }, + + getRegion: function (el, x, y) { + var i, + regionMap = this.regionMap; // maps regions to value positions + for (i = regionMap.length; i--;) { + if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) { + return regionMap[i][2]; + } + } + return undefined; + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion; + return { + isNull: this.yvalues[currentRegion] === null, + x: this.xvalues[currentRegion], + y: this.yvalues[currentRegion], + color: this.options.get('lineColor'), + fillColor: this.options.get('fillColor'), + offset: currentRegion + }; + }, + + renderHighlight: function () { + var currentRegion = this.currentRegion, + target = this.target, + vertex = this.vertices[currentRegion], + options = this.options, + spotRadius = options.get('spotRadius'), + highlightSpotColor = options.get('highlightSpotColor'), + highlightLineColor = options.get('highlightLineColor'), + highlightSpot, highlightLine; + + if (!vertex) { + return; + } + if (spotRadius && highlightSpotColor) { + highlightSpot = target.drawCircle(vertex[0], vertex[1], + spotRadius, undefined, highlightSpotColor); + this.highlightSpotId = highlightSpot.id; + target.insertAfterShape(this.lastShapeId, highlightSpot); + } + if (highlightLineColor) { + highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0], + this.canvasTop + this.canvasHeight, highlightLineColor); + this.highlightLineId = highlightLine.id; + target.insertAfterShape(this.lastShapeId, highlightLine); + } + }, + + removeHighlight: function () { + var target = this.target; + if (this.highlightSpotId) { + target.removeShapeId(this.highlightSpotId); + this.highlightSpotId = null; + } + if (this.highlightLineId) { + target.removeShapeId(this.highlightLineId); + this.highlightLineId = null; + } + }, + + scanValues: function () { + var values = this.values, + valcount = values.length, + xvalues = this.xvalues, + yvalues = this.yvalues, + yminmax = this.yminmax, + i, val, isStr, isArray, sp; + for (i = 0; i < valcount; i++) { + val = values[i]; + isStr = typeof(values[i]) === 'string'; + isArray = typeof(values[i]) === 'object' && values[i] instanceof Array; + sp = isStr && values[i].split(':'); + if (isStr && sp.length === 2) { // x:y + xvalues.push(Number(sp[0])); + yvalues.push(Number(sp[1])); + yminmax.push(Number(sp[1])); + } else if (isArray) { + xvalues.push(val[0]); + yvalues.push(val[1]); + yminmax.push(val[1]); + } else { + xvalues.push(i); + if (values[i] === null || values[i] === 'null') { + yvalues.push(null); + } else { + yvalues.push(Number(val)); + yminmax.push(Number(val)); + } + } + } + if (this.options.get('xvalues')) { + xvalues = this.options.get('xvalues'); + } + + this.maxy = this.maxyorg = Math.max.apply(Math, yminmax); + this.miny = this.minyorg = Math.min.apply(Math, yminmax); + + this.maxx = Math.max.apply(Math, xvalues); + this.minx = Math.min.apply(Math, xvalues); + + this.xvalues = xvalues; + this.yvalues = yvalues; + this.yminmax = yminmax; + + }, + + processRangeOptions: function () { + var options = this.options, + normalRangeMin = options.get('normalRangeMin'), + normalRangeMax = options.get('normalRangeMax'); + + if (normalRangeMin !== undefined) { + if (normalRangeMin < this.miny) { + this.miny = normalRangeMin; + } + if (normalRangeMax > this.maxy) { + this.maxy = normalRangeMax; + } + } + if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) { + this.miny = options.get('chartRangeMin'); + } + if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) { + this.maxy = options.get('chartRangeMax'); + } + if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) { + this.minx = options.get('chartRangeMinX'); + } + if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) { + this.maxx = options.get('chartRangeMaxX'); + } + + }, + + drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) { + var normalRangeMin = this.options.get('normalRangeMin'), + normalRangeMax = this.options.get('normalRangeMax'), + ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))), + height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey); + this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append(); + }, + + render: function () { + var options = this.options, + target = this.target, + canvasWidth = this.canvasWidth, + canvasHeight = this.canvasHeight, + vertices = this.vertices, + spotRadius = options.get('spotRadius'), + regionMap = this.regionMap, + rangex, rangey, yvallast, + canvasTop, canvasLeft, + vertex, path, paths, x, y, xnext, xpos, xposnext, + last, next, yvalcount, lineShapes, fillShapes, plen, + valueSpots, hlSpotsEnabled, color, xvalues, yvalues, i; + + if (!line._super.render.call(this)) { + return; + } + + this.scanValues(); + this.processRangeOptions(); + + xvalues = this.xvalues; + yvalues = this.yvalues; + + if (!this.yminmax.length || this.yvalues.length < 2) { + // empty or all null valuess + return; + } + + canvasTop = canvasLeft = 0; + + rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx; + rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny; + yvallast = this.yvalues.length - 1; + + if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) { + spotRadius = 0; + } + if (spotRadius) { + // adjust the canvas size as required so that spots will fit + hlSpotsEnabled = options.get('highlightSpotColor') && !options.get('disableInteraction'); + if (hlSpotsEnabled || options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) { + canvasHeight -= Math.ceil(spotRadius); + } + if (hlSpotsEnabled || options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) { + canvasHeight -= Math.ceil(spotRadius); + canvasTop += Math.ceil(spotRadius); + } + if (hlSpotsEnabled || + ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy))) { + canvasLeft += Math.ceil(spotRadius); + canvasWidth -= Math.ceil(spotRadius); + } + if (hlSpotsEnabled || options.get('spotColor') || + (options.get('minSpotColor') || options.get('maxSpotColor') && + (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) { + canvasWidth -= Math.ceil(spotRadius); + } + } + + + canvasHeight--; + + if (options.get('normalRangeMin') !== undefined && !options.get('drawNormalOnTop')) { + this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey); + } + + path = []; + paths = [path]; + last = next = null; + yvalcount = yvalues.length; + for (i = 0; i < yvalcount; i++) { + x = xvalues[i]; + xnext = xvalues[i + 1]; + y = yvalues[i]; + xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)); + xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth; + next = xpos + ((xposnext - xpos) / 2); + regionMap[i] = [last || 0, next, i]; + last = next; + if (y === null) { + if (i) { + if (yvalues[i - 1] !== null) { + path = []; + paths.push(path); + } + vertices.push(null); + } + } else { + if (y < this.miny) { + y = this.miny; + } + if (y > this.maxy) { + y = this.maxy; + } + if (!path.length) { + // previous value was null + path.push([xpos, canvasTop + canvasHeight]); + } + vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))]; + path.push(vertex); + vertices.push(vertex); + } + } + + lineShapes = []; + fillShapes = []; + plen = paths.length; + for (i = 0; i < plen; i++) { + path = paths[i]; + if (path.length) { + if (options.get('fillColor')) { + path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]); + fillShapes.push(path.slice(0)); + path.pop(); + } + // if there's only a single point in this path, then we want to display it + // as a vertical line which means we keep path[0] as is + if (path.length > 2) { + // else we want the first value + path[0] = [path[0][0], path[1][1]]; + } + lineShapes.push(path); + } + } + + // draw the fill first, then optionally the normal range, then the line on top of that + plen = fillShapes.length; + for (i = 0; i < plen; i++) { + target.drawShape(fillShapes[i], + options.get('fillColor'), options.get('fillColor')).append(); + } + + if (options.get('normalRangeMin') !== undefined && options.get('drawNormalOnTop')) { + this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey); + } + + plen = lineShapes.length; + for (i = 0; i < plen; i++) { + target.drawShape(lineShapes[i], options.get('lineColor'), undefined, + options.get('lineWidth')).append(); + } + + if (spotRadius && options.get('valueSpots')) { + valueSpots = options.get('valueSpots'); + if (valueSpots.get === undefined) { + valueSpots = new RangeMap(valueSpots); + } + for (i = 0; i < yvalcount; i++) { + color = valueSpots.get(yvalues[i]); + if (color) { + target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)), + canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))), + spotRadius, undefined, + color).append(); + } + } + + } + if (spotRadius && options.get('spotColor') && yvalues[yvallast] !== null) { + target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)), + canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))), + spotRadius, undefined, + options.get('spotColor')).append(); + } + if (this.maxy !== this.minyorg) { + if (spotRadius && options.get('minSpotColor')) { + x = xvalues[$.inArray(this.minyorg, yvalues)]; + target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)), + canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))), + spotRadius, undefined, + options.get('minSpotColor')).append(); + } + if (spotRadius && options.get('maxSpotColor')) { + x = xvalues[$.inArray(this.maxyorg, yvalues)]; + target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)), + canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))), + spotRadius, undefined, + options.get('maxSpotColor')).append(); + } + } + + this.lastShapeId = target.getLastShapeId(); + this.canvasTop = canvasTop; + target.render(); + } + }); + + /** + * Bar charts + */ + $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, { + type: 'bar', + + init: function (el, values, options, width, height) { + var barWidth = parseInt(options.get('barWidth'), 10), + barSpacing = parseInt(options.get('barSpacing'), 10), + chartRangeMin = options.get('chartRangeMin'), + chartRangeMax = options.get('chartRangeMax'), + chartRangeClip = options.get('chartRangeClip'), + stackMin = Infinity, + stackMax = -Infinity, + isStackString, groupMin, groupMax, stackRanges, + numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax, + stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf; + bar._super.init.call(this, el, values, options, width, height); + + // scan values to determine whether to stack bars + for (i = 0, vlen = values.length; i < vlen; i++) { + val = values[i]; + isStackString = typeof(val) === 'string' && val.indexOf(':') > -1; + if (isStackString || $.isArray(val)) { + stacked = true; + if (isStackString) { + val = values[i] = normalizeValues(val.split(':')); + } + val = remove(val, null); // min/max will treat null as zero + groupMin = Math.min.apply(Math, val); + groupMax = Math.max.apply(Math, val); + if (groupMin < stackMin) { + stackMin = groupMin; + } + if (groupMax > stackMax) { + stackMax = groupMax; + } + } + } + + this.stacked = stacked; + this.regionShapes = {}; + this.barWidth = barWidth; + this.barSpacing = barSpacing; + this.totalBarWidth = barWidth + barSpacing; + this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing); + + this.initTarget(); + + if (chartRangeClip) { + clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin; + clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax; + } + + numValues = []; + stackRanges = stacked ? [] : numValues; + var stackTotals = []; + var stackRangesNeg = []; + for (i = 0, vlen = values.length; i < vlen; i++) { + if (stacked) { + vlist = values[i]; + values[i] = svals = []; + stackTotals[i] = 0; + stackRanges[i] = stackRangesNeg[i] = 0; + for (j = 0, slen = vlist.length; j < slen; j++) { + val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j]; + if (val !== null) { + if (val > 0) { + stackTotals[i] += val; + } + if (stackMin < 0 && stackMax > 0) { + if (val < 0) { + stackRangesNeg[i] += Math.abs(val); + } else { + stackRanges[i] += val; + } + } else { + stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin)); + } + numValues.push(val); + } + } + } else { + val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i]; + val = values[i] = normalizeValue(val); + if (val !== null) { + numValues.push(val); + } + } + } + this.max = max = Math.max.apply(Math, numValues); + this.min = min = Math.min.apply(Math, numValues); + this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max; + this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min; + + if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) { + min = options.get('chartRangeMin'); + } + if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) { + max = options.get('chartRangeMax'); + } + + this.zeroAxis = zeroAxis = options.get('zeroAxis', true); + if (min <= 0 && max >= 0 && zeroAxis) { + xaxisOffset = 0; + } else if (zeroAxis == false) { + xaxisOffset = min; + } else if (min > 0) { + xaxisOffset = min; + } else { + xaxisOffset = max; + } + this.xaxisOffset = xaxisOffset; + + range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min; + + // as we plot zero/min values a single pixel line, we add a pixel to all other + // values - Reduce the effective canvas size to suit + this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1; + + if (min < xaxisOffset) { + yMaxCalc = (stacked && max >= 0) ? stackMax : max; + yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight; + if (yoffset !== Math.ceil(yoffset)) { + this.canvasHeightEf -= 2; + yoffset = Math.ceil(yoffset); + } + } else { + yoffset = this.canvasHeight; + } + this.yoffset = yoffset; + + if ($.isArray(options.get('colorMap'))) { + this.colorMapByIndex = options.get('colorMap'); + this.colorMapByValue = null; + } else { + this.colorMapByIndex = null; + this.colorMapByValue = options.get('colorMap'); + if (this.colorMapByValue && this.colorMapByValue.get === undefined) { + this.colorMapByValue = new RangeMap(this.colorMapByValue); + } + } + + this.range = range; + }, + + getRegion: function (el, x, y) { + var result = Math.floor(x / this.totalBarWidth); + return (result < 0 || result >= this.values.length) ? undefined : result; + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion, + values = ensureArray(this.values[currentRegion]), + result = [], + value, i; + for (i = values.length; i--;) { + value = values[i]; + result.push({ + isNull: value === null, + value: value, + color: this.calcColor(i, value, currentRegion), + offset: currentRegion + }); + } + return result; + }, + + calcColor: function (stacknum, value, valuenum) { + var colorMapByIndex = this.colorMapByIndex, + colorMapByValue = this.colorMapByValue, + options = this.options, + color, newColor; + if (this.stacked) { + color = options.get('stackedBarColor'); + } else { + color = (value < 0) ? options.get('negBarColor') : options.get('barColor'); + } + if (value === 0 && options.get('zeroColor') !== undefined) { + color = options.get('zeroColor'); + } + if (colorMapByValue && (newColor = colorMapByValue.get(value))) { + color = newColor; + } else if (colorMapByIndex && colorMapByIndex.length > valuenum) { + color = colorMapByIndex[valuenum]; + } + return $.isArray(color) ? color[stacknum % color.length] : color; + }, + + /** + * Render bar(s) for a region + */ + renderRegion: function (valuenum, highlight) { + var vals = this.values[valuenum], + options = this.options, + xaxisOffset = this.xaxisOffset, + result = [], + range = this.range, + stacked = this.stacked, + target = this.target, + x = valuenum * this.totalBarWidth, + canvasHeightEf = this.canvasHeightEf, + yoffset = this.yoffset, + y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin; + + vals = $.isArray(vals) ? vals : [vals]; + valcount = vals.length; + val = vals[0]; + isNull = all(null, vals); + allMin = all(xaxisOffset, vals, true); + + if (isNull) { + if (options.get('nullColor')) { + color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options); + y = (yoffset > 0) ? yoffset - 1 : yoffset; + return target.drawRect(x, y, this.barWidth - 1, 0, color, color); + } else { + return undefined; + } + } + yoffsetNeg = yoffset; + for (i = 0; i < valcount; i++) { + val = vals[i]; + + if (stacked && val === xaxisOffset) { + if (!allMin || minPlotted) { + continue; + } + minPlotted = true; + } + + if (range > 0) { + height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1; + } else { + height = 1; + } + if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) { + y = yoffsetNeg; + yoffsetNeg += height; + } else { + y = yoffset - height; + yoffset -= height; + } + color = this.calcColor(i, val, valuenum); + if (highlight) { + color = this.calcHighlightColor(color, options); + } + result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color)); + } + if (result.length === 1) { + return result[0]; + } + return result; + } + }); + + /** + * Tristate charts + */ + $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, { + type: 'tristate', + + init: function (el, values, options, width, height) { + var barWidth = parseInt(options.get('barWidth'), 10), + barSpacing = parseInt(options.get('barSpacing'), 10); + tristate._super.init.call(this, el, values, options, width, height); + + this.regionShapes = {}; + this.barWidth = barWidth; + this.barSpacing = barSpacing; + this.totalBarWidth = barWidth + barSpacing; + this.values = $.map(values, Number); + this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing); + + if ($.isArray(options.get('colorMap'))) { + this.colorMapByIndex = options.get('colorMap'); + this.colorMapByValue = null; + } else { + this.colorMapByIndex = null; + this.colorMapByValue = options.get('colorMap'); + if (this.colorMapByValue && this.colorMapByValue.get === undefined) { + this.colorMapByValue = new RangeMap(this.colorMapByValue); + } + } + this.initTarget(); + }, + + getRegion: function (el, x, y) { + return Math.floor(x / this.totalBarWidth); + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion; + return { + isNull: this.values[currentRegion] === undefined, + value: this.values[currentRegion], + color: this.calcColor(this.values[currentRegion], currentRegion), + offset: currentRegion + }; + }, + + calcColor: function (value, valuenum) { + var values = this.values, + options = this.options, + colorMapByIndex = this.colorMapByIndex, + colorMapByValue = this.colorMapByValue, + color, newColor; + + if (colorMapByValue && (newColor = colorMapByValue.get(value))) { + color = newColor; + } else if (colorMapByIndex && colorMapByIndex.length > valuenum) { + color = colorMapByIndex[valuenum]; + } else if (values[valuenum] < 0) { + color = options.get('negBarColor'); + } else if (values[valuenum] > 0) { + color = options.get('posBarColor'); + } else { + color = options.get('zeroBarColor'); + } + return color; + }, + + renderRegion: function (valuenum, highlight) { + var values = this.values, + options = this.options, + target = this.target, + canvasHeight, height, halfHeight, + x, y, color; + + canvasHeight = target.pixelHeight; + halfHeight = Math.round(canvasHeight / 2); + + x = valuenum * this.totalBarWidth; + if (values[valuenum] < 0) { + y = halfHeight; + height = halfHeight - 1; + } else if (values[valuenum] > 0) { + y = 0; + height = halfHeight - 1; + } else { + y = halfHeight - 1; + height = 2; + } + color = this.calcColor(values[valuenum], valuenum); + if (color === null) { + return; + } + if (highlight) { + color = this.calcHighlightColor(color, options); + } + return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color); + } + }); + + /** + * Discrete charts + */ + $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, { + type: 'discrete', + + init: function (el, values, options, width, height) { + discrete._super.init.call(this, el, values, options, width, height); + + this.regionShapes = {}; + this.values = values = $.map(values, Number); + this.min = Math.min.apply(Math, values); + this.max = Math.max.apply(Math, values); + this.range = this.max - this.min; + this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width; + this.interval = Math.floor(width / values.length); + this.itemWidth = width / values.length; + if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) { + this.min = options.get('chartRangeMin'); + } + if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) { + this.max = options.get('chartRangeMax'); + } + this.initTarget(); + if (this.target) { + this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight'); + } + }, + + getRegion: function (el, x, y) { + return Math.floor(x / this.itemWidth); + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion; + return { + isNull: this.values[currentRegion] === undefined, + value: this.values[currentRegion], + offset: currentRegion + }; + }, + + renderRegion: function (valuenum, highlight) { + var values = this.values, + options = this.options, + min = this.min, + max = this.max, + range = this.range, + interval = this.interval, + target = this.target, + canvasHeight = this.canvasHeight, + lineHeight = this.lineHeight, + pheight = canvasHeight - lineHeight, + ytop, val, color, x; + + val = clipval(values[valuenum], min, max); + x = valuenum * interval; + ytop = Math.round(pheight - pheight * ((val - min) / range)); + color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor'); + if (highlight) { + color = this.calcHighlightColor(color, options); + } + return target.drawLine(x, ytop, x, ytop + lineHeight, color); + } + }); + + /** + * Bullet charts + */ + $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, { + type: 'bullet', + + init: function (el, values, options, width, height) { + var min, max, vals; + bullet._super.init.call(this, el, values, options, width, height); + + // values: target, performance, range1, range2, range3 + this.values = values = normalizeValues(values); + // target or performance could be null + vals = values.slice(); + vals[0] = vals[0] === null ? vals[2] : vals[0]; + vals[1] = values[1] === null ? vals[2] : vals[1]; + min = Math.min.apply(Math, values); + max = Math.max.apply(Math, values); + if (options.get('base') === undefined) { + min = min < 0 ? min : 0; + } else { + min = options.get('base'); + } + this.min = min; + this.max = max; + this.range = max - min; + this.shapes = {}; + this.valueShapes = {}; + this.regiondata = {}; + this.width = width = options.get('width') === 'auto' ? '4.0em' : width; + this.target = this.$el.simpledraw(width, height, options.get('composite')); + if (!values.length) { + this.disabled = true; + } + this.initTarget(); + }, + + getRegion: function (el, x, y) { + var shapeid = this.target.getShapeAt(el, x, y); + return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined; + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion; + return { + fieldkey: currentRegion.substr(0, 1), + value: this.values[currentRegion.substr(1)], + region: currentRegion + }; + }, + + changeHighlight: function (highlight) { + var currentRegion = this.currentRegion, + shapeid = this.valueShapes[currentRegion], + shape; + delete this.shapes[shapeid]; + switch (currentRegion.substr(0, 1)) { + case 'r': + shape = this.renderRange(currentRegion.substr(1), highlight); + break; + case 'p': + shape = this.renderPerformance(highlight); + break; + case 't': + shape = this.renderTarget(highlight); + break; + } + this.valueShapes[currentRegion] = shape.id; + this.shapes[shape.id] = currentRegion; + this.target.replaceWithShape(shapeid, shape); + }, + + renderRange: function (rn, highlight) { + var rangeval = this.values[rn], + rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)), + color = this.options.get('rangeColors')[rn - 2]; + if (highlight) { + color = this.calcHighlightColor(color, this.options); + } + return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color); + }, + + renderPerformance: function (highlight) { + var perfval = this.values[1], + perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)), + color = this.options.get('performanceColor'); + if (highlight) { + color = this.calcHighlightColor(color, this.options); + } + return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1, + Math.round(this.canvasHeight * 0.4) - 1, color, color); + }, + + renderTarget: function (highlight) { + var targetval = this.values[0], + x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)), + targettop = Math.round(this.canvasHeight * 0.10), + targetheight = this.canvasHeight - (targettop * 2), + color = this.options.get('targetColor'); + if (highlight) { + color = this.calcHighlightColor(color, this.options); + } + return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color); + }, + + render: function () { + var vlen = this.values.length, + target = this.target, + i, shape; + if (!bullet._super.render.call(this)) { + return; + } + for (i = 2; i < vlen; i++) { + shape = this.renderRange(i).append(); + this.shapes[shape.id] = 'r' + i; + this.valueShapes['r' + i] = shape.id; + } + if (this.values[1] !== null) { + shape = this.renderPerformance().append(); + this.shapes[shape.id] = 'p1'; + this.valueShapes.p1 = shape.id; + } + if (this.values[0] !== null) { + shape = this.renderTarget().append(); + this.shapes[shape.id] = 't0'; + this.valueShapes.t0 = shape.id; + } + target.render(); + } + }); + + /** + * Pie charts + */ + $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, { + type: 'pie', + + init: function (el, values, options, width, height) { + var total = 0, i; + + pie._super.init.call(this, el, values, options, width, height); + + this.shapes = {}; // map shape ids to value offsets + this.valueShapes = {}; // maps value offsets to shape ids + this.values = values = $.map(values, Number); + + if (options.get('width') === 'auto') { + this.width = this.height; + } + + if (values.length > 0) { + for (i = values.length; i--;) { + total += values[i]; + } + } + this.total = total; + this.initTarget(); + this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2); + }, + + getRegion: function (el, x, y) { + var shapeid = this.target.getShapeAt(el, x, y); + return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined; + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion; + return { + isNull: this.values[currentRegion] === undefined, + value: this.values[currentRegion], + percent: this.values[currentRegion] / this.total * 100, + color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length], + offset: currentRegion + }; + }, + + changeHighlight: function (highlight) { + var currentRegion = this.currentRegion, + newslice = this.renderSlice(currentRegion, highlight), + shapeid = this.valueShapes[currentRegion]; + delete this.shapes[shapeid]; + this.target.replaceWithShape(shapeid, newslice); + this.valueShapes[currentRegion] = newslice.id; + this.shapes[newslice.id] = currentRegion; + }, + + renderSlice: function (valuenum, highlight) { + var target = this.target, + options = this.options, + radius = this.radius, + borderWidth = options.get('borderWidth'), + offset = options.get('offset'), + circle = 2 * Math.PI, + values = this.values, + total = this.total, + next = offset ? (2*Math.PI)*(offset/360) : 0, + start, end, i, vlen, color; + + vlen = values.length; + for (i = 0; i < vlen; i++) { + start = next; + end = next; + if (total > 0) { // avoid divide by zero + end = next + (circle * (values[i] / total)); + } + if (valuenum === i) { + color = options.get('sliceColors')[i % options.get('sliceColors').length]; + if (highlight) { + color = this.calcHighlightColor(color, options); + } + + return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color); + } + next = end; + } + }, + + render: function () { + var target = this.target, + values = this.values, + options = this.options, + radius = this.radius, + borderWidth = options.get('borderWidth'), + shape, i; + + if (!pie._super.render.call(this)) { + return; + } + if (borderWidth) { + target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)), + options.get('borderColor'), undefined, borderWidth).append(); + } + for (i = values.length; i--;) { + if (values[i]) { // don't render zero values + shape = this.renderSlice(i).append(); + this.valueShapes[i] = shape.id; // store just the shapeid + this.shapes[shape.id] = i; + } + } + target.render(); + } + }); + + /** + * Box plots + */ + $.fn.sparkline.box = box = createClass($.fn.sparkline._base, { + type: 'box', + + init: function (el, values, options, width, height) { + box._super.init.call(this, el, values, options, width, height); + this.values = $.map(values, Number); + this.width = options.get('width') === 'auto' ? '4.0em' : width; + this.initTarget(); + if (!this.values.length) { + this.disabled = 1; + } + }, + + /** + * Simulate a single region + */ + getRegion: function () { + return 1; + }, + + getCurrentRegionFields: function () { + var result = [ + { field: 'lq', value: this.quartiles[0] }, + { field: 'med', value: this.quartiles[1] }, + { field: 'uq', value: this.quartiles[2] } + ]; + if (this.loutlier !== undefined) { + result.push({ field: 'lo', value: this.loutlier}); + } + if (this.routlier !== undefined) { + result.push({ field: 'ro', value: this.routlier}); + } + if (this.lwhisker !== undefined) { + result.push({ field: 'lw', value: this.lwhisker}); + } + if (this.rwhisker !== undefined) { + result.push({ field: 'rw', value: this.rwhisker}); + } + return result; + }, + + render: function () { + var target = this.target, + values = this.values, + vlen = values.length, + options = this.options, + canvasWidth = this.canvasWidth, + canvasHeight = this.canvasHeight, + minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'), + maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'), + canvasLeft = 0, + lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i, + size, unitSize; + + if (!box._super.render.call(this)) { + return; + } + + if (options.get('raw')) { + if (options.get('showOutliers') && values.length > 5) { + loutlier = values[0]; + lwhisker = values[1]; + q1 = values[2]; + q2 = values[3]; + q3 = values[4]; + rwhisker = values[5]; + routlier = values[6]; + } else { + lwhisker = values[0]; + q1 = values[1]; + q2 = values[2]; + q3 = values[3]; + rwhisker = values[4]; + } + } else { + values.sort(function (a, b) { return a - b; }); + q1 = quartile(values, 1); + q2 = quartile(values, 2); + q3 = quartile(values, 3); + iqr = q3 - q1; + if (options.get('showOutliers')) { + lwhisker = rwhisker = undefined; + for (i = 0; i < vlen; i++) { + if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) { + lwhisker = values[i]; + } + if (values[i] < q3 + (iqr * options.get('outlierIQR'))) { + rwhisker = values[i]; + } + } + loutlier = values[0]; + routlier = values[vlen - 1]; + } else { + lwhisker = values[0]; + rwhisker = values[vlen - 1]; + } + } + this.quartiles = [q1, q2, q3]; + this.lwhisker = lwhisker; + this.rwhisker = rwhisker; + this.loutlier = loutlier; + this.routlier = routlier; + + unitSize = canvasWidth / (maxValue - minValue + 1); + if (options.get('showOutliers')) { + canvasLeft = Math.ceil(options.get('spotRadius')); + canvasWidth -= 2 * Math.ceil(options.get('spotRadius')); + unitSize = canvasWidth / (maxValue - minValue + 1); + if (loutlier < lwhisker) { + target.drawCircle((loutlier - minValue) * unitSize + canvasLeft, + canvasHeight / 2, + options.get('spotRadius'), + options.get('outlierLineColor'), + options.get('outlierFillColor')).append(); + } + if (routlier > rwhisker) { + target.drawCircle((routlier - minValue) * unitSize + canvasLeft, + canvasHeight / 2, + options.get('spotRadius'), + options.get('outlierLineColor'), + options.get('outlierFillColor')).append(); + } + } + + // box + target.drawRect( + Math.round((q1 - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight * 0.1), + Math.round((q3 - q1) * unitSize), + Math.round(canvasHeight * 0.8), + options.get('boxLineColor'), + options.get('boxFillColor')).append(); + // left whisker + target.drawLine( + Math.round((lwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 2), + Math.round((q1 - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 2), + options.get('lineColor')).append(); + target.drawLine( + Math.round((lwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 4), + Math.round((lwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight - canvasHeight / 4), + options.get('whiskerColor')).append(); + // right whisker + target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 2), + Math.round((q3 - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 2), + options.get('lineColor')).append(); + target.drawLine( + Math.round((rwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 4), + Math.round((rwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight - canvasHeight / 4), + options.get('whiskerColor')).append(); + // median line + target.drawLine( + Math.round((q2 - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight * 0.1), + Math.round((q2 - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight * 0.9), + options.get('medianColor')).append(); + if (options.get('target')) { + size = Math.ceil(options.get('spotRadius')); + target.drawLine( + Math.round((options.get('target') - minValue) * unitSize + canvasLeft), + Math.round((canvasHeight / 2) - size), + Math.round((options.get('target') - minValue) * unitSize + canvasLeft), + Math.round((canvasHeight / 2) + size), + options.get('targetColor')).append(); + target.drawLine( + Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size), + Math.round(canvasHeight / 2), + Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size), + Math.round(canvasHeight / 2), + options.get('targetColor')).append(); + } + target.render(); + } + }); + + // Setup a very simple "virtual canvas" to make drawing the few shapes we need easier + // This is accessible as $(foo).simpledraw() + + VShape = createClass({ + init: function (target, id, type, args) { + this.target = target; + this.id = id; + this.type = type; + this.args = args; + }, + append: function () { + this.target.appendShape(this); + return this; + } + }); + + VCanvas_base = createClass({ + _pxregex: /(\d+)(px)?\s*$/i, + + init: function (width, height, target) { + if (!width) { + return; + } + this.width = width; + this.height = height; + this.target = target; + this.lastShapeId = null; + if (target[0]) { + target = target[0]; + } + $.data(target, '_jqs_vcanvas', this); + }, + + drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) { + return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth); + }, + + drawShape: function (path, lineColor, fillColor, lineWidth) { + return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]); + }, + + drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) { + return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]); + }, + + drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) { + return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]); + }, + + drawRect: function (x, y, width, height, lineColor, fillColor) { + return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]); + }, + + getElement: function () { + return this.canvas; + }, + + /** + * Return the most recently inserted shape id + */ + getLastShapeId: function () { + return this.lastShapeId; + }, + + /** + * Clear and reset the canvas + */ + reset: function () { + alert('reset not implemented'); + }, + + _insert: function (el, target) { + $(target).html(el); + }, + + /** + * Calculate the pixel dimensions of the canvas + */ + _calculatePixelDims: function (width, height, canvas) { + // XXX This should probably be a configurable option + var match; + match = this._pxregex.exec(height); + if (match) { + this.pixelHeight = match[1]; + } else { + this.pixelHeight = $(canvas).height(); + } + match = this._pxregex.exec(width); + if (match) { + this.pixelWidth = match[1]; + } else { + this.pixelWidth = $(canvas).width(); + } + }, + + /** + * Generate a shape object and id for later rendering + */ + _genShape: function (shapetype, shapeargs) { + var id = shapeCount++; + shapeargs.unshift(id); + return new VShape(this, id, shapetype, shapeargs); + }, + + /** + * Add a shape to the end of the render queue + */ + appendShape: function (shape) { + alert('appendShape not implemented'); + }, + + /** + * Replace one shape with another + */ + replaceWithShape: function (shapeid, shape) { + alert('replaceWithShape not implemented'); + }, + + /** + * Insert one shape after another in the render queue + */ + insertAfterShape: function (shapeid, shape) { + alert('insertAfterShape not implemented'); + }, + + /** + * Remove a shape from the queue + */ + removeShapeId: function (shapeid) { + alert('removeShapeId not implemented'); + }, + + /** + * Find a shape at the specified x/y co-ordinates + */ + getShapeAt: function (el, x, y) { + alert('getShapeAt not implemented'); + }, + + /** + * Render all queued shapes onto the canvas + */ + render: function () { + alert('render not implemented'); + } + }); + + VCanvas_canvas = createClass(VCanvas_base, { + init: function (width, height, target, interact) { + VCanvas_canvas._super.init.call(this, width, height, target); + this.canvas = document.createElement('canvas'); + if (target[0]) { + target = target[0]; + } + $.data(target, '_jqs_vcanvas', this); + $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' }); + this._insert(this.canvas, target); + this._calculatePixelDims(width, height, this.canvas); + this.canvas.width = this.pixelWidth; + this.canvas.height = this.pixelHeight; + this.interact = interact; + this.shapes = {}; + this.shapeseq = []; + this.currentTargetShapeId = undefined; + $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight}); + }, + + _getContext: function (lineColor, fillColor, lineWidth) { + var context = this.canvas.getContext('2d'); + if (lineColor !== undefined) { + context.strokeStyle = lineColor; + } + context.lineWidth = lineWidth === undefined ? 1 : lineWidth; + if (fillColor !== undefined) { + context.fillStyle = fillColor; + } + return context; + }, + + reset: function () { + var context = this._getContext(); + context.clearRect(0, 0, this.pixelWidth, this.pixelHeight); + this.shapes = {}; + this.shapeseq = []; + this.currentTargetShapeId = undefined; + }, + + _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) { + var context = this._getContext(lineColor, fillColor, lineWidth), + i, plen; + context.beginPath(); + context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5); + for (i = 1, plen = path.length; i < plen; i++) { + context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines + } + if (lineColor !== undefined) { + context.stroke(); + } + if (fillColor !== undefined) { + context.fill(); + } + if (this.targetX !== undefined && this.targetY !== undefined && + context.isPointInPath(this.targetX, this.targetY)) { + this.currentTargetShapeId = shapeid; + } + }, + + _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) { + var context = this._getContext(lineColor, fillColor, lineWidth); + context.beginPath(); + context.arc(x, y, radius, 0, 2 * Math.PI, false); + if (this.targetX !== undefined && this.targetY !== undefined && + context.isPointInPath(this.targetX, this.targetY)) { + this.currentTargetShapeId = shapeid; + } + if (lineColor !== undefined) { + context.stroke(); + } + if (fillColor !== undefined) { + context.fill(); + } + }, + + _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) { + var context = this._getContext(lineColor, fillColor); + context.beginPath(); + context.moveTo(x, y); + context.arc(x, y, radius, startAngle, endAngle, false); + context.lineTo(x, y); + context.closePath(); + if (lineColor !== undefined) { + context.stroke(); + } + if (fillColor) { + context.fill(); + } + if (this.targetX !== undefined && this.targetY !== undefined && + context.isPointInPath(this.targetX, this.targetY)) { + this.currentTargetShapeId = shapeid; + } + }, + + _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) { + return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor); + }, + + appendShape: function (shape) { + this.shapes[shape.id] = shape; + this.shapeseq.push(shape.id); + this.lastShapeId = shape.id; + return shape.id; + }, + + replaceWithShape: function (shapeid, shape) { + var shapeseq = this.shapeseq, + i; + this.shapes[shape.id] = shape; + for (i = shapeseq.length; i--;) { + if (shapeseq[i] == shapeid) { + shapeseq[i] = shape.id; + } + } + delete this.shapes[shapeid]; + }, + + replaceWithShapes: function (shapeids, shapes) { + var shapeseq = this.shapeseq, + shapemap = {}, + sid, i, first; + + for (i = shapeids.length; i--;) { + shapemap[shapeids[i]] = true; + } + for (i = shapeseq.length; i--;) { + sid = shapeseq[i]; + if (shapemap[sid]) { + shapeseq.splice(i, 1); + delete this.shapes[sid]; + first = i; + } + } + for (i = shapes.length; i--;) { + shapeseq.splice(first, 0, shapes[i].id); + this.shapes[shapes[i].id] = shapes[i]; + } + + }, + + insertAfterShape: function (shapeid, shape) { + var shapeseq = this.shapeseq, + i; + for (i = shapeseq.length; i--;) { + if (shapeseq[i] === shapeid) { + shapeseq.splice(i + 1, 0, shape.id); + this.shapes[shape.id] = shape; + return; + } + } + }, + + removeShapeId: function (shapeid) { + var shapeseq = this.shapeseq, + i; + for (i = shapeseq.length; i--;) { + if (shapeseq[i] === shapeid) { + shapeseq.splice(i, 1); + break; + } + } + delete this.shapes[shapeid]; + }, + + getShapeAt: function (el, x, y) { + this.targetX = x; + this.targetY = y; + this.render(); + return this.currentTargetShapeId; + }, + + render: function () { + var shapeseq = this.shapeseq, + shapes = this.shapes, + shapeCount = shapeseq.length, + context = this._getContext(), + shapeid, shape, i; + context.clearRect(0, 0, this.pixelWidth, this.pixelHeight); + for (i = 0; i < shapeCount; i++) { + shapeid = shapeseq[i]; + shape = shapes[shapeid]; + this['_draw' + shape.type].apply(this, shape.args); + } + if (!this.interact) { + // not interactive so no need to keep the shapes array + this.shapes = {}; + this.shapeseq = []; + } + } + + }); + + VCanvas_vml = createClass(VCanvas_base, { + init: function (width, height, target) { + var groupel; + VCanvas_vml._super.init.call(this, width, height, target); + if (target[0]) { + target = target[0]; + } + $.data(target, '_jqs_vcanvas', this); + this.canvas = document.createElement('span'); + $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'}); + this._insert(this.canvas, target); + this._calculatePixelDims(width, height, this.canvas); + this.canvas.width = this.pixelWidth; + this.canvas.height = this.pixelHeight; + groupel = ''; + this.canvas.insertAdjacentHTML('beforeEnd', groupel); + this.group = $(this.canvas).children()[0]; + this.rendered = false; + this.prerender = ''; + }, + + _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) { + var vpath = [], + initial, stroke, fill, closed, vel, plen, i; + for (i = 0, plen = path.length; i < plen; i++) { + vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]); + } + initial = vpath.splice(0, 1); + lineWidth = lineWidth === undefined ? 1 : lineWidth; + stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="' + lineWidth + 'px" strokeColor="' + lineColor + '" '; + fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" '; + closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : ''; + vel = '' + + ' '; + return vel; + }, + + _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) { + var stroke, fill, vel; + x -= radius; + y -= radius; + stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="' + lineWidth + 'px" strokeColor="' + lineColor + '" '; + fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" '; + vel = ''; + return vel; + + }, + + _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) { + var vpath, startx, starty, endx, endy, stroke, fill, vel; + if (startAngle === endAngle) { + return ''; // VML seems to have problem when start angle equals end angle. + } + if ((endAngle - startAngle) === (2 * Math.PI)) { + startAngle = 0.0; // VML seems to have a problem when drawing a full circle that doesn't start 0 + endAngle = (2 * Math.PI); + } + + startx = x + Math.round(Math.cos(startAngle) * radius); + starty = y + Math.round(Math.sin(startAngle) * radius); + endx = x + Math.round(Math.cos(endAngle) * radius); + endy = y + Math.round(Math.sin(endAngle) * radius); + + if (startx === endx && starty === endy) { + if ((endAngle - startAngle) < Math.PI) { + // Prevent very small slices from being mistaken as a whole pie + return ''; + } + // essentially going to be the entire circle, so ignore startAngle + startx = endx = x + radius; + starty = endy = y; + } + + if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) { + return ''; + } + + vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy]; + stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="1px" strokeColor="' + lineColor + '" '; + fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" '; + vel = '' + + ' '; + return vel; + }, + + _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) { + return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor); + }, + + reset: function () { + this.group.innerHTML = ''; + }, + + appendShape: function (shape) { + var vel = this['_draw' + shape.type].apply(this, shape.args); + if (this.rendered) { + this.group.insertAdjacentHTML('beforeEnd', vel); + } else { + this.prerender += vel; + } + this.lastShapeId = shape.id; + return shape.id; + }, + + replaceWithShape: function (shapeid, shape) { + var existing = $('#jqsshape' + shapeid), + vel = this['_draw' + shape.type].apply(this, shape.args); + existing[0].outerHTML = vel; + }, + + replaceWithShapes: function (shapeids, shapes) { + // replace the first shapeid with all the new shapes then toast the remaining old shapes + var existing = $('#jqsshape' + shapeids[0]), + replace = '', + slen = shapes.length, + i; + for (i = 0; i < slen; i++) { + replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args); + } + existing[0].outerHTML = replace; + for (i = 1; i < shapeids.length; i++) { + $('#jqsshape' + shapeids[i]).remove(); + } + }, + + insertAfterShape: function (shapeid, shape) { + var existing = $('#jqsshape' + shapeid), + vel = this['_draw' + shape.type].apply(this, shape.args); + existing[0].insertAdjacentHTML('afterEnd', vel); + }, + + removeShapeId: function (shapeid) { + var existing = $('#jqsshape' + shapeid); + this.group.removeChild(existing[0]); + }, + + getShapeAt: function (el, x, y) { + var shapeid = el.id.substr(8); + return shapeid; + }, + + render: function () { + if (!this.rendered) { + // batch the intial render into a single repaint + this.group.innerHTML = this.prerender; + this.rendered = true; + } + } + }); + +}))}(document, Math)); diff --git a/public/assets/js/plugins/sparkline/jquery.sparkline.min.js b/public/assets/js/plugins/sparkline/jquery.sparkline.min.js new file mode 100755 index 00000000..fa616bf9 --- /dev/null +++ b/public/assets/js/plugins/sparkline/jquery.sparkline.min.js @@ -0,0 +1,5 @@ +/* jquery.sparkline 2.1.2 - http://omnipotent.net/jquery.sparkline/ +** Licensed under the New BSD License - see above site for details */ + +(function(a,b,c){(function(a){typeof define=="function"&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.sparkline&&a(jQuery)})(function(d){"use strict";var e={},f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L=0;f=function(){return{common:{type:"line",lineColor:"#00f",fillColor:"#cdf",defaultPixelsPerValue:3,width:"auto",height:"auto",composite:!1,tagValuesAttribute:"values",tagOptionsPrefix:"spark",enableTagOptions:!1,enableHighlight:!0,highlightLighten:1.4,tooltipSkipNull:!0,tooltipPrefix:"",tooltipSuffix:"",disableHiddenCheck:!1,numberFormatter:!1,numberDigitGroupCount:3,numberDigitGroupSep:",",numberDecimalMark:".",disableTooltips:!1,disableInteraction:!1},line:{spotColor:"#f80",highlightSpotColor:"#5f5",highlightLineColor:"#f22",spotRadius:1.5,minSpotColor:"#f80",maxSpotColor:"#f80",lineWidth:1,normalRangeMin:c,normalRangeMax:c,normalRangeColor:"#ccc",drawNormalOnTop:!1,chartRangeMin:c,chartRangeMax:c,chartRangeMinX:c,chartRangeMaxX:c,tooltipFormat:new h(' {{prefix}}{{y}}{{suffix}}')},bar:{barColor:"#3366cc",negBarColor:"#f44",stackedBarColor:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],zeroColor:c,nullColor:c,zeroAxis:!0,barWidth:4,barSpacing:1,chartRangeMax:c,chartRangeMin:c,chartRangeClip:!1,colorMap:c,tooltipFormat:new h(' {{prefix}}{{value}}{{suffix}}')},tristate:{barWidth:4,barSpacing:1,posBarColor:"#6f6",negBarColor:"#f44",zeroBarColor:"#999",colorMap:{},tooltipFormat:new h(' {{value:map}}'),tooltipValueLookups:{map:{"-1":"Loss",0:"Draw",1:"Win"}}},discrete:{lineHeight:"auto",thresholdColor:c,thresholdValue:0,chartRangeMax:c,chartRangeMin:c,chartRangeClip:!1,tooltipFormat:new h("{{prefix}}{{value}}{{suffix}}")},bullet:{targetColor:"#f33",targetWidth:3,performanceColor:"#33f",rangeColors:["#d3dafe","#a8b6ff","#7f94ff"],base:c,tooltipFormat:new h("{{fieldkey:fields}} - {{value}}"),tooltipValueLookups:{fields:{r:"Range",p:"Performance",t:"Target"}}},pie:{offset:0,sliceColors:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],borderWidth:0,borderColor:"#000",tooltipFormat:new h(' {{value}} ({{percent.1}}%)')},box:{raw:!1,boxLineColor:"#000",boxFillColor:"#cdf",whiskerColor:"#000",outlierLineColor:"#333",outlierFillColor:"#fff",medianColor:"#f00",showOutliers:!0,outlierIQR:1.5,spotRadius:1.5,target:c,targetColor:"#4a2",chartRangeMax:c,chartRangeMin:c,tooltipFormat:new h("{{field:fields}}: {{value}}"),tooltipFormatFieldlistKey:"field",tooltipValueLookups:{fields:{lq:"Lower Quartile",med:"Median",uq:"Upper Quartile",lo:"Left Outlier",ro:"Right Outlier",lw:"Left Whisker",rw:"Right Whisker"}}}}},E='.jqstooltip { position: absolute;left: 0px;top: 0px;visibility: hidden;background: rgb(0, 0, 0) transparent;background-color: rgba(0,0,0,0.6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";color: white;font: 10px arial, san serif;text-align: left;white-space: nowrap;padding: 5px;border: 1px solid white;z-index: 10000;}.jqsfield { color: white;font: 10px arial, san serif;text-align: left;}',g=function(){var a,b;return a=function(){this.init.apply(this,arguments)},arguments.length>1?(arguments[0]?(a.prototype=d.extend(new arguments[0],arguments[arguments.length-1]),a._super=arguments[0].prototype):a.prototype=arguments[arguments.length-1],arguments.length>2&&(b=Array.prototype.slice.call(arguments,1,-1),b.unshift(a.prototype),d.extend.apply(d,b))):a.prototype=arguments[0],a.prototype.cls=a,a},d.SPFormatClass=h=g({fre:/\{\{([\w.]+?)(:(.+?))?\}\}/g,precre:/(\w+)\.(\d+)/,init:function(a,b){this.format=a,this.fclass=b},render:function(a,b,d){var e=this,f=a,g,h,i,j,k;return this.format.replace(this.fre,function(){var a;return h=arguments[1],i=arguments[3],g=e.precre.exec(h),g?(k=g[2],h=g[1]):k=!1,j=f[h],j===c?"":i&&b&&b[i]?(a=b[i],a.get?b[i].get(j)||j:b[i][j]||j):(n(j)&&(d.get("numberFormatter")?j=d.get("numberFormatter")(j):j=s(j,k,d.get("numberDigitGroupCount"),d.get("numberDigitGroupSep"),d.get("numberDecimalMark"))),j)})}}),d.spformat=function(a,b){return new h(a,b)},i=function(a,b,c){return ac?c:a},j=function(a,c){var d;return c===2?(d=b.floor(a.length/2),a.length%2?a[d]:(a[d-1]+a[d])/2):a.length%2?(d=(a.length*c+c)/4,d%1?(a[b.floor(d)]+a[b.floor(d)-1])/2:a[d-1]):(d=(a.length*c+2)/4,d%1?(a[b.floor(d)]+a[b.floor(d)-1])/2:a[d-1])},k=function(a){var b;switch(a){case"undefined":a=c;break;case"null":a=null;break;case"true":a=!0;break;case"false":a=!1;break;default:b=parseFloat(a),a==b&&(a=b)}return a},l=function(a){var b,c=[];for(b=a.length;b--;)c[b]=k(a[b]);return c},m=function(a,b){var c,d,e=[];for(c=0,d=a.length;c0;h-=c)a.splice(h,0,e);return a.join("")},o=function(a,b,c){var d;for(d=b.length;d--;){if(c&&b[d]===null)continue;if(b[d]!==a)return!1}return!0},p=function(a){var b=0,c;for(c=a.length;c--;)b+=typeof a[c]=="number"?a[c]:0;return b},r=function(a){return d.isArray(a)?a:[a]},q=function(b){var c;a.createStyleSheet?a.createStyleSheet().cssText=b:(c=a.createElement("style"),c.type="text/css",a.getElementsByTagName("head")[0].appendChild(c),c[typeof a.body.style.WebkitAppearance=="string"?"innerText":"innerHTML"]=b)},d.fn.simpledraw=function(b,e,f,g){var h,i;if(f&&(h=this.data("_jqs_vcanvas")))return h;if(d.fn.sparkline.canvas===!1)return!1;if(d.fn.sparkline.canvas===c){var j=a.createElement("canvas");if(!j.getContext||!j.getContext("2d")){if(!a.namespaces||!!a.namespaces.v)return d.fn.sparkline.canvas=!1,!1;a.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML"),d.fn.sparkline.canvas=function(a,b,c,d){return new J(a,b,c)}}else d.fn.sparkline.canvas=function(a,b,c,d){return new I(a,b,c,d)}}return b===c&&(b=d(this).innerWidth()),e===c&&(e=d(this).innerHeight()),h=d.fn.sparkline.canvas(b,e,this,g),i=d(this).data("_jqs_mhandler"),i&&i.registerCanvas(h),h},d.fn.cleardraw=function(){var a=this.data("_jqs_vcanvas");a&&a.reset()},d.RangeMapClass=t=g({init:function(a){var b,c,d=[];for(b in a)a.hasOwnProperty(b)&&typeof b=="string"&&b.indexOf(":")>-1&&(c=b.split(":"),c[0]=c[0].length===0?-Infinity:parseFloat(c[0]),c[1]=c[1].length===0?Infinity:parseFloat(c[1]),c[2]=a[b],d.push(c));this.map=a,this.rangelist=d||!1},get:function(a){var b=this.rangelist,d,e,f;if((f=this.map[a])!==c)return f;if(b)for(d=b.length;d--;){e=b[d];if(e[0]<=a&&e[1]>=a)return e[2]}return c}}),d.range_map=function(a){return new t(a)},u=g({init:function(a,b){var c=d(a);this.$el=c,this.options=b,this.currentPageX=0,this.currentPageY=0,this.el=a,this.splist=[],this.tooltip=null,this.over=!1,this.displayTooltips=!b.get("disableTooltips"),this.highlightEnabled=!b.get("disableHighlight")},registerSparkline:function(a){this.splist.push(a),this.over&&this.updateDisplay()},registerCanvas:function(a){var b=d(a.canvas);this.canvas=a,this.$canvas=b,b.mouseenter(d.proxy(this.mouseenter,this)),b.mouseleave(d.proxy(this.mouseleave,this)),b.click(d.proxy(this.mouseclick,this))},reset:function(a){this.splist=[],this.tooltip&&a&&(this.tooltip.remove(),this.tooltip=c)},mouseclick:function(a){var b=d.Event("sparklineClick");b.originalEvent=a,b.sparklines=this.splist,this.$el.trigger(b)},mouseenter:function(b){d(a.body).unbind("mousemove.jqs"),d(a.body).bind("mousemove.jqs",d.proxy(this.mousemove,this)),this.over=!0,this.currentPageX=b.pageX,this.currentPageY=b.pageY,this.currentEl=b.target,!this.tooltip&&this.displayTooltips&&(this.tooltip=new v(this.options),this.tooltip.updatePosition(b.pageX,b.pageY)),this.updateDisplay()},mouseleave:function(){d(a.body).unbind("mousemove.jqs");var b=this.splist,c=b.length,e=!1,f,g;this.over=!1,this.currentEl=null,this.tooltip&&(this.tooltip.remove(),this.tooltip=null);for(g=0;g