From 990c683155b2de54d362ff588a1f2fc930e42f30 Mon Sep 17 00:00:00 2001
From: ibooking-sigurd <sigurd.augdal@ibooking.no>
Date: Sat, 6 Mar 2021 21:57:48 +0100
Subject: [PATCH] Ref. #3 #4 #7 #13 Initial commit of this branch. Add coverage
 data from testing of workouts/permissions.py.

---
 backend/secfit/.coverage                      | Bin 0 -> 233472 bytes
 backend/secfit/htmlcov/coverage_html.js       | 616 ++++++++++++++++++
 backend/secfit/htmlcov/favicon_32.png         | Bin 0 -> 1732 bytes
 backend/secfit/htmlcov/index.html             |  85 +++
 .../jquery.ba-throttle-debounce.min.js        |   9 +
 backend/secfit/htmlcov/jquery.hotkeys.js      |  99 +++
 backend/secfit/htmlcov/jquery.isonscreen.js   |  53 ++
 backend/secfit/htmlcov/jquery.min.js          |   5 +
 .../secfit/htmlcov/jquery.tablesorter.min.js  |   2 +
 backend/secfit/htmlcov/keybd_closed.png       | Bin 0 -> 112 bytes
 backend/secfit/htmlcov/keybd_open.png         | Bin 0 -> 112 bytes
 backend/secfit/htmlcov/status.json            |   1 +
 backend/secfit/htmlcov/style.css              | 291 +++++++++
 .../htmlcov/workouts_permissions_py.html      | 133 ++++
 14 files changed, 1294 insertions(+)
 create mode 100644 backend/secfit/.coverage
 create mode 100644 backend/secfit/htmlcov/coverage_html.js
 create mode 100644 backend/secfit/htmlcov/favicon_32.png
 create mode 100644 backend/secfit/htmlcov/index.html
 create mode 100644 backend/secfit/htmlcov/jquery.ba-throttle-debounce.min.js
 create mode 100644 backend/secfit/htmlcov/jquery.hotkeys.js
 create mode 100644 backend/secfit/htmlcov/jquery.isonscreen.js
 create mode 100644 backend/secfit/htmlcov/jquery.min.js
 create mode 100644 backend/secfit/htmlcov/jquery.tablesorter.min.js
 create mode 100644 backend/secfit/htmlcov/keybd_closed.png
 create mode 100644 backend/secfit/htmlcov/keybd_open.png
 create mode 100644 backend/secfit/htmlcov/status.json
 create mode 100644 backend/secfit/htmlcov/style.css
 create mode 100644 backend/secfit/htmlcov/workouts_permissions_py.html

diff --git a/backend/secfit/.coverage b/backend/secfit/.coverage
new file mode 100644
index 0000000000000000000000000000000000000000..abc22e85f32d1bd34790def34d1d1b003aeb4ad3
GIT binary patch
literal 233472
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
X>-^<4fqF{e=dKLqHBxWVD&qLRV)ggz

literal 0
HcmV?d00001

diff --git a/backend/secfit/htmlcov/coverage_html.js b/backend/secfit/htmlcov/coverage_html.js
new file mode 100644
index 0000000..27b49b3
--- /dev/null
+++ b/backend/secfit/htmlcov/coverage_html.js
@@ -0,0 +1,616 @@
+// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
+// For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
+
+// Coverage.py HTML report browser code.
+/*jslint browser: true, sloppy: true, vars: true, plusplus: true, maxerr: 50, indent: 4 */
+/*global coverage: true, document, window, $ */
+
+coverage = {};
+
+// Find all the elements with shortkey_* class, and use them to assign a shortcut key.
+coverage.assign_shortkeys = function () {
+    $("*[class*='shortkey_']").each(function (i, e) {
+        $.each($(e).attr("class").split(" "), function (i, c) {
+            if (/^shortkey_/.test(c)) {
+                $(document).bind('keydown', c.substr(9), function () {
+                    $(e).click();
+                });
+            }
+        });
+    });
+};
+
+// Create the events for the help panel.
+coverage.wire_up_help_panel = function () {
+    $("#keyboard_icon").click(function () {
+        // Show the help panel, and position it so the keyboard icon in the
+        // panel is in the same place as the keyboard icon in the header.
+        $(".help_panel").show();
+        var koff = $("#keyboard_icon").offset();
+        var poff = $("#panel_icon").position();
+        $(".help_panel").offset({
+            top: koff.top-poff.top,
+            left: koff.left-poff.left
+        });
+    });
+    $("#panel_icon").click(function () {
+        $(".help_panel").hide();
+    });
+};
+
+// Create the events for the filter box.
+coverage.wire_up_filter = function () {
+    // Cache elements.
+    var table = $("table.index");
+    var table_rows = table.find("tbody tr");
+    var table_row_names = table_rows.find("td.name a");
+    var no_rows = $("#no_rows");
+
+    // Create a duplicate table footer that we can modify with dynamic summed values.
+    var table_footer = $("table.index tfoot tr");
+    var table_dynamic_footer = table_footer.clone();
+    table_dynamic_footer.attr('class', 'total_dynamic hidden');
+    table_footer.after(table_dynamic_footer);
+
+    // Observe filter keyevents.
+    $("#filter").on("keyup change", $.debounce(150, function (event) {
+        var filter_value = $(this).val();
+
+        if (filter_value === "") {
+            // Filter box is empty, remove all filtering.
+            table_rows.removeClass("hidden");
+
+            // Show standard footer, hide dynamic footer.
+            table_footer.removeClass("hidden");
+            table_dynamic_footer.addClass("hidden");
+
+            // Hide placeholder, show table.
+            if (no_rows.length > 0) {
+                no_rows.hide();
+            }
+            table.show();
+
+        }
+        else {
+            // Filter table items by value.
+            var hidden = 0;
+            var shown = 0;
+
+            // Hide / show elements.
+            $.each(table_row_names, function () {
+                var element = $(this).parents("tr");
+
+                if ($(this).text().indexOf(filter_value) === -1) {
+                    // hide
+                    element.addClass("hidden");
+                    hidden++;
+                }
+                else {
+                    // show
+                    element.removeClass("hidden");
+                    shown++;
+                }
+            });
+
+            // Show placeholder if no rows will be displayed.
+            if (no_rows.length > 0) {
+                if (shown === 0) {
+                    // Show placeholder, hide table.
+                    no_rows.show();
+                    table.hide();
+                }
+                else {
+                    // Hide placeholder, show table.
+                    no_rows.hide();
+                    table.show();
+                }
+            }
+
+            // Manage dynamic header:
+            if (hidden > 0) {
+                // Calculate new dynamic sum values based on visible rows.
+                for (var column = 2; column < 20; column++) {
+                    // Calculate summed value.
+                    var cells = table_rows.find('td:nth-child(' + column + ')');
+                    if (!cells.length) {
+                        // No more columns...!
+                        break;
+                    }
+
+                    var sum = 0, numer = 0, denom = 0;
+                    $.each(cells.filter(':visible'), function () {
+                        var ratio = $(this).data("ratio");
+                        if (ratio) {
+                            var splitted = ratio.split(" ");
+                            numer += parseInt(splitted[0], 10);
+                            denom += parseInt(splitted[1], 10);
+                        }
+                        else {
+                            sum += parseInt(this.innerHTML, 10);
+                        }
+                    });
+
+                    // Get footer cell element.
+                    var footer_cell = table_dynamic_footer.find('td:nth-child(' + column + ')');
+
+                    // Set value into dynamic footer cell element.
+                    if (cells[0].innerHTML.indexOf('%') > -1) {
+                        // Percentage columns use the numerator and denominator,
+                        // and adapt to the number of decimal places.
+                        var match = /\.([0-9]+)/.exec(cells[0].innerHTML);
+                        var places = 0;
+                        if (match) {
+                            places = match[1].length;
+                        }
+                        var pct = numer * 100 / denom;
+                        footer_cell.text(pct.toFixed(places) + '%');
+                    }
+                    else {
+                        footer_cell.text(sum);
+                    }
+                }
+
+                // Hide standard footer, show dynamic footer.
+                table_footer.addClass("hidden");
+                table_dynamic_footer.removeClass("hidden");
+            }
+            else {
+                // Show standard footer, hide dynamic footer.
+                table_footer.removeClass("hidden");
+                table_dynamic_footer.addClass("hidden");
+            }
+        }
+    }));
+
+    // Trigger change event on setup, to force filter on page refresh
+    // (filter value may still be present).
+    $("#filter").trigger("change");
+};
+
+// Loaded on index.html
+coverage.index_ready = function ($) {
+    // Look for a localStorage item containing previous sort settings:
+    var sort_list = [];
+    var storage_name = "COVERAGE_INDEX_SORT";
+    var stored_list = undefined;
+    try {
+        stored_list = localStorage.getItem(storage_name);
+    } catch(err) {}
+
+    if (stored_list) {
+        sort_list = JSON.parse('[[' + stored_list + ']]');
+    }
+
+    // Create a new widget which exists only to save and restore
+    // the sort order:
+    $.tablesorter.addWidget({
+        id: "persistentSort",
+
+        // Format is called by the widget before displaying:
+        format: function (table) {
+            if (table.config.sortList.length === 0 && sort_list.length > 0) {
+                // This table hasn't been sorted before - we'll use
+                // our stored settings:
+                $(table).trigger('sorton', [sort_list]);
+            }
+            else {
+                // This is not the first load - something has
+                // already defined sorting so we'll just update
+                // our stored value to match:
+                sort_list = table.config.sortList;
+            }
+        }
+    });
+
+    // Configure our tablesorter to handle the variable number of
+    // columns produced depending on report options:
+    var headers = [];
+    var col_count = $("table.index > thead > tr > th").length;
+
+    headers[0] = { sorter: 'text' };
+    for (i = 1; i < col_count-1; i++) {
+        headers[i] = { sorter: 'digit' };
+    }
+    headers[col_count-1] = { sorter: 'percent' };
+
+    // Enable the table sorter:
+    $("table.index").tablesorter({
+        widgets: ['persistentSort'],
+        headers: headers
+    });
+
+    coverage.assign_shortkeys();
+    coverage.wire_up_help_panel();
+    coverage.wire_up_filter();
+
+    // Watch for page unload events so we can save the final sort settings:
+    $(window).on("unload", function () {
+        try {
+            localStorage.setItem(storage_name, sort_list.toString())
+        } catch(err) {}
+    });
+};
+
+// -- pyfile stuff --
+
+coverage.LINE_FILTERS_STORAGE = "COVERAGE_LINE_FILTERS";
+
+coverage.pyfile_ready = function ($) {
+    // If we're directed to a particular line number, highlight the line.
+    var frag = location.hash;
+    if (frag.length > 2 && frag[1] === 't') {
+        $(frag).addClass('highlight');
+        coverage.set_sel(parseInt(frag.substr(2), 10));
+    }
+    else {
+        coverage.set_sel(0);
+    }
+
+    $(document)
+        .bind('keydown', 'j', coverage.to_next_chunk_nicely)
+        .bind('keydown', 'k', coverage.to_prev_chunk_nicely)
+        .bind('keydown', '0', coverage.to_top)
+        .bind('keydown', '1', coverage.to_first_chunk)
+        ;
+
+    $(".button_toggle_run").click(function (evt) {coverage.toggle_lines(evt.target, "run");});
+    $(".button_toggle_exc").click(function (evt) {coverage.toggle_lines(evt.target, "exc");});
+    $(".button_toggle_mis").click(function (evt) {coverage.toggle_lines(evt.target, "mis");});
+    $(".button_toggle_par").click(function (evt) {coverage.toggle_lines(evt.target, "par");});
+
+    coverage.filters = undefined;
+    try {
+        coverage.filters = localStorage.getItem(coverage.LINE_FILTERS_STORAGE);
+    } catch(err) {}
+
+    if (coverage.filters) {
+        coverage.filters = JSON.parse(coverage.filters);
+    }
+    else {
+        coverage.filters = {run: false, exc: true, mis: true, par: true};
+    }
+
+    for (cls in coverage.filters) {
+        coverage.set_line_visibilty(cls, coverage.filters[cls]);
+    }
+
+    coverage.assign_shortkeys();
+    coverage.wire_up_help_panel();
+
+    coverage.init_scroll_markers();
+
+    // Rebuild scroll markers when the window height changes.
+    $(window).resize(coverage.build_scroll_markers);
+};
+
+coverage.toggle_lines = function (btn, cls) {
+    var onoff = !$(btn).hasClass("show_" + cls);
+    coverage.set_line_visibilty(cls, onoff);
+    coverage.build_scroll_markers();
+    coverage.filters[cls] = onoff;
+    try {
+        localStorage.setItem(coverage.LINE_FILTERS_STORAGE, JSON.stringify(coverage.filters));
+    } catch(err) {}
+};
+
+coverage.set_line_visibilty = function (cls, onoff) {
+    var show = "show_" + cls;
+    var btn = $(".button_toggle_" + cls);
+    if (onoff) {
+        $("#source ." + cls).addClass(show);
+        btn.addClass(show);
+    }
+    else {
+        $("#source ." + cls).removeClass(show);
+        btn.removeClass(show);
+    }
+};
+
+// Return the nth line div.
+coverage.line_elt = function (n) {
+    return $("#t" + n);
+};
+
+// Return the nth line number div.
+coverage.num_elt = function (n) {
+    return $("#n" + n);
+};
+
+// Set the selection.  b and e are line numbers.
+coverage.set_sel = function (b, e) {
+    // The first line selected.
+    coverage.sel_begin = b;
+    // The next line not selected.
+    coverage.sel_end = (e === undefined) ? b+1 : e;
+};
+
+coverage.to_top = function () {
+    coverage.set_sel(0, 1);
+    coverage.scroll_window(0);
+};
+
+coverage.to_first_chunk = function () {
+    coverage.set_sel(0, 1);
+    coverage.to_next_chunk();
+};
+
+// Return a string indicating what kind of chunk this line belongs to,
+// or null if not a chunk.
+coverage.chunk_indicator = function (line_elt) {
+    var klass = line_elt.attr('class');
+    if (klass) {
+        var m = klass.match(/\bshow_\w+\b/);
+        if (m) {
+            return m[0];
+        }
+    }
+    return null;
+};
+
+coverage.to_next_chunk = function () {
+    var c = coverage;
+
+    // Find the start of the next colored chunk.
+    var probe = c.sel_end;
+    var chunk_indicator, probe_line;
+    while (true) {
+        probe_line = c.line_elt(probe);
+        if (probe_line.length === 0) {
+            return;
+        }
+        chunk_indicator = c.chunk_indicator(probe_line);
+        if (chunk_indicator) {
+            break;
+        }
+        probe++;
+    }
+
+    // There's a next chunk, `probe` points to it.
+    var begin = probe;
+
+    // Find the end of this chunk.
+    var next_indicator = chunk_indicator;
+    while (next_indicator === chunk_indicator) {
+        probe++;
+        probe_line = c.line_elt(probe);
+        next_indicator = c.chunk_indicator(probe_line);
+    }
+    c.set_sel(begin, probe);
+    c.show_selection();
+};
+
+coverage.to_prev_chunk = function () {
+    var c = coverage;
+
+    // Find the end of the prev colored chunk.
+    var probe = c.sel_begin-1;
+    var probe_line = c.line_elt(probe);
+    if (probe_line.length === 0) {
+        return;
+    }
+    var chunk_indicator = c.chunk_indicator(probe_line);
+    while (probe > 0 && !chunk_indicator) {
+        probe--;
+        probe_line = c.line_elt(probe);
+        if (probe_line.length === 0) {
+            return;
+        }
+        chunk_indicator = c.chunk_indicator(probe_line);
+    }
+
+    // There's a prev chunk, `probe` points to its last line.
+    var end = probe+1;
+
+    // Find the beginning of this chunk.
+    var prev_indicator = chunk_indicator;
+    while (prev_indicator === chunk_indicator) {
+        probe--;
+        probe_line = c.line_elt(probe);
+        prev_indicator = c.chunk_indicator(probe_line);
+    }
+    c.set_sel(probe+1, end);
+    c.show_selection();
+};
+
+// Return the line number of the line nearest pixel position pos
+coverage.line_at_pos = function (pos) {
+    var l1 = coverage.line_elt(1),
+        l2 = coverage.line_elt(2),
+        result;
+    if (l1.length && l2.length) {
+        var l1_top = l1.offset().top,
+            line_height = l2.offset().top - l1_top,
+            nlines = (pos - l1_top) / line_height;
+        if (nlines < 1) {
+            result = 1;
+        }
+        else {
+            result = Math.ceil(nlines);
+        }
+    }
+    else {
+        result = 1;
+    }
+    return result;
+};
+
+// Returns 0, 1, or 2: how many of the two ends of the selection are on
+// the screen right now?
+coverage.selection_ends_on_screen = function () {
+    if (coverage.sel_begin === 0) {
+        return 0;
+    }
+
+    var top = coverage.line_elt(coverage.sel_begin);
+    var next = coverage.line_elt(coverage.sel_end-1);
+
+    return (
+        (top.isOnScreen() ? 1 : 0) +
+        (next.isOnScreen() ? 1 : 0)
+    );
+};
+
+coverage.to_next_chunk_nicely = function () {
+    coverage.finish_scrolling();
+    if (coverage.selection_ends_on_screen() === 0) {
+        // The selection is entirely off the screen: select the top line on
+        // the screen.
+        var win = $(window);
+        coverage.select_line_or_chunk(coverage.line_at_pos(win.scrollTop()));
+    }
+    coverage.to_next_chunk();
+};
+
+coverage.to_prev_chunk_nicely = function () {
+    coverage.finish_scrolling();
+    if (coverage.selection_ends_on_screen() === 0) {
+        var win = $(window);
+        coverage.select_line_or_chunk(coverage.line_at_pos(win.scrollTop() + win.height()));
+    }
+    coverage.to_prev_chunk();
+};
+
+// Select line number lineno, or if it is in a colored chunk, select the
+// entire chunk
+coverage.select_line_or_chunk = function (lineno) {
+    var c = coverage;
+    var probe_line = c.line_elt(lineno);
+    if (probe_line.length === 0) {
+        return;
+    }
+    var the_indicator = c.chunk_indicator(probe_line);
+    if (the_indicator) {
+        // The line is in a highlighted chunk.
+        // Search backward for the first line.
+        var probe = lineno;
+        var indicator = the_indicator;
+        while (probe > 0 && indicator === the_indicator) {
+            probe--;
+            probe_line = c.line_elt(probe);
+            if (probe_line.length === 0) {
+                break;
+            }
+            indicator = c.chunk_indicator(probe_line);
+        }
+        var begin = probe + 1;
+
+        // Search forward for the last line.
+        probe = lineno;
+        indicator = the_indicator;
+        while (indicator === the_indicator) {
+            probe++;
+            probe_line = c.line_elt(probe);
+            indicator = c.chunk_indicator(probe_line);
+        }
+
+        coverage.set_sel(begin, probe);
+    }
+    else {
+        coverage.set_sel(lineno);
+    }
+};
+
+coverage.show_selection = function () {
+    var c = coverage;
+
+    // Highlight the lines in the chunk
+    $(".linenos .highlight").removeClass("highlight");
+    for (var probe = c.sel_begin; probe > 0 && probe < c.sel_end; probe++) {
+        c.num_elt(probe).addClass("highlight");
+    }
+
+    c.scroll_to_selection();
+};
+
+coverage.scroll_to_selection = function () {
+    // Scroll the page if the chunk isn't fully visible.
+    if (coverage.selection_ends_on_screen() < 2) {
+        // Need to move the page. The html,body trick makes it scroll in all
+        // browsers, got it from http://stackoverflow.com/questions/3042651
+        var top = coverage.line_elt(coverage.sel_begin);
+        var top_pos = parseInt(top.offset().top, 10);
+        coverage.scroll_window(top_pos - 30);
+    }
+};
+
+coverage.scroll_window = function (to_pos) {
+    $("html,body").animate({scrollTop: to_pos}, 200);
+};
+
+coverage.finish_scrolling = function () {
+    $("html,body").stop(true, true);
+};
+
+coverage.init_scroll_markers = function () {
+    var c = coverage;
+    // Init some variables
+    c.lines_len = $('#source p').length;
+    c.body_h = $('body').height();
+    c.header_h = $('div#header').height();
+
+    // Build html
+    c.build_scroll_markers();
+};
+
+coverage.build_scroll_markers = function () {
+    var c = coverage,
+        min_line_height = 3,
+        max_line_height = 10,
+        visible_window_h = $(window).height();
+
+    c.lines_to_mark = $('#source').find('p.show_run, p.show_mis, p.show_exc, p.show_exc, p.show_par');
+    $('#scroll_marker').remove();
+    // Don't build markers if the window has no scroll bar.
+    if (c.body_h <= visible_window_h) {
+        return;
+    }
+
+    $("body").append("<div id='scroll_marker'>&nbsp;</div>");
+    var scroll_marker = $('#scroll_marker'),
+        marker_scale = scroll_marker.height() / c.body_h,
+        line_height = scroll_marker.height() / c.lines_len;
+
+    // Line height must be between the extremes.
+    if (line_height > min_line_height) {
+        if (line_height > max_line_height) {
+            line_height = max_line_height;
+        }
+    }
+    else {
+        line_height = min_line_height;
+    }
+
+    var previous_line = -99,
+        last_mark,
+        last_top,
+        offsets = {};
+
+    // Calculate line offsets outside loop to prevent relayouts
+    c.lines_to_mark.each(function() {
+        offsets[this.id] = $(this).offset().top;
+    });
+    c.lines_to_mark.each(function () {
+        var id_name = $(this).attr('id'),
+            line_top = Math.round(offsets[id_name] * marker_scale),
+            line_number = parseInt(id_name.substring(1, id_name.length));
+
+        if (line_number === previous_line + 1) {
+            // If this solid missed block just make previous mark higher.
+            last_mark.css({
+                'height': line_top + line_height - last_top
+            });
+        }
+        else {
+            // Add colored line in scroll_marker block.
+            scroll_marker.append('<div id="m' + line_number + '" class="marker"></div>');
+            last_mark = $('#m' + line_number);
+            last_mark.css({
+                'height': line_height,
+                'top': line_top
+            });
+            last_top = line_top;
+        }
+
+        previous_line = line_number;
+    });
+};
diff --git a/backend/secfit/htmlcov/favicon_32.png b/backend/secfit/htmlcov/favicon_32.png
new file mode 100644
index 0000000000000000000000000000000000000000..8649f0475d8d20793b2ec431fe25a186a414cf10
GIT binary patch
literal 1732
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
aE(`!K@+CXylaC4j0000<MNUMnLSTZc{uwd=

literal 0
HcmV?d00001

diff --git a/backend/secfit/htmlcov/index.html b/backend/secfit/htmlcov/index.html
new file mode 100644
index 0000000..9af4126
--- /dev/null
+++ b/backend/secfit/htmlcov/index.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    <title>Coverage report</title>
+    <link rel="icon" sizes="32x32" href="favicon_32.png">
+    <link rel="stylesheet" href="style.css" type="text/css">
+    <script type="text/javascript" src="jquery.min.js"></script>
+    <script type="text/javascript" src="jquery.ba-throttle-debounce.min.js"></script>
+    <script type="text/javascript" src="jquery.tablesorter.min.js"></script>
+    <script type="text/javascript" src="jquery.hotkeys.js"></script>
+    <script type="text/javascript" src="coverage_html.js"></script>
+    <script type="text/javascript">
+        jQuery(document).ready(coverage.index_ready);
+    </script>
+</head>
+<body class="indexfile">
+<div id="header">
+    <div class="content">
+        <h1>Coverage report:
+            <span class="pc_cov">100%</span>
+        </h1>
+        <img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
+        <form id="filter_container">
+            <input id="filter" type="text" value="" placeholder="filter..." />
+        </form>
+    </div>
+</div>
+<div class="help_panel">
+    <img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
+    <p class="legend">Hot-keys on this page</p>
+    <div>
+    <p class="keyhelp">
+        <span class="key">n</span>
+        <span class="key">s</span>
+        <span class="key">m</span>
+        <span class="key">x</span>
+        <span class="key">c</span> &nbsp; change column sorting
+    </p>
+    </div>
+</div>
+<div id="index">
+    <table class="index">
+        <thead>
+            <tr class="tablehead" title="Click to sort">
+                <th class="name left headerSortDown shortkey_n">Module</th>
+                <th class="shortkey_s">statements</th>
+                <th class="shortkey_m">missing</th>
+                <th class="shortkey_x">excluded</th>
+                <th class="right shortkey_c">coverage</th>
+            </tr>
+        </thead>
+        <tfoot>
+            <tr class="total">
+                <td class="name left">Total</td>
+                <td>32</td>
+                <td>0</td>
+                <td>0</td>
+                <td class="right" data-ratio="32 32">100%</td>
+            </tr>
+        </tfoot>
+        <tbody>
+            <tr class="file">
+                <td class="name left"><a href="workouts_permissions_py.html">workouts/permissions.py</a></td>
+                <td>32</td>
+                <td>0</td>
+                <td>0</td>
+                <td class="right" data-ratio="32 32">100%</td>
+            </tr>
+        </tbody>
+    </table>
+    <p id="no_rows">
+        No items found using the specified filter.
+    </p>
+</div>
+<div id="footer">
+    <div class="content">
+        <p>
+            <a class="nav" href="https://coverage.readthedocs.io">coverage.py v5.5</a>,
+            created at 2021-03-06 16:23 +0100
+        </p>
+    </div>
+</div>
+</body>
+</html>
diff --git a/backend/secfit/htmlcov/jquery.ba-throttle-debounce.min.js b/backend/secfit/htmlcov/jquery.ba-throttle-debounce.min.js
new file mode 100644
index 0000000..648fe5d
--- /dev/null
+++ b/backend/secfit/htmlcov/jquery.ba-throttle-debounce.min.js
@@ -0,0 +1,9 @@
+/*
+ * jQuery throttle / debounce - v1.1 - 3/7/2010
+ * http://benalman.com/projects/jquery-throttle-debounce-plugin/
+ *
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function(b,c){var $=b.jQuery||b.Cowboy||(b.Cowboy={}),a;$.throttle=a=function(e,f,j,i){var h,d=0;if(typeof f!=="boolean"){i=j;j=f;f=c}function g(){var o=this,m=+new Date()-d,n=arguments;function l(){d=+new Date();j.apply(o,n)}function k(){h=c}if(i&&!h){l()}h&&clearTimeout(h);if(i===c&&m>e){l()}else{if(f!==true){h=setTimeout(i?k:l,i===c?e-m:e)}}}if($.guid){g.guid=j.guid=j.guid||$.guid++}return g};$.debounce=function(d,e,f){return f===c?a(d,e,false):a(d,f,e!==false)}})(this);
diff --git a/backend/secfit/htmlcov/jquery.hotkeys.js b/backend/secfit/htmlcov/jquery.hotkeys.js
new file mode 100644
index 0000000..09b21e0
--- /dev/null
+++ b/backend/secfit/htmlcov/jquery.hotkeys.js
@@ -0,0 +1,99 @@
+/*
+ * jQuery Hotkeys Plugin
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * Based upon the plugin by Tzury Bar Yochay:
+ * http://github.com/tzuryby/hotkeys
+ *
+ * Original idea by:
+ * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
+*/
+
+(function(jQuery){
+
+	jQuery.hotkeys = {
+		version: "0.8",
+
+		specialKeys: {
+			8: "backspace", 9: "tab", 13: "return", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause",
+			20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home",
+			37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "del",
+			96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7",
+			104: "8", 105: "9", 106: "*", 107: "+", 109: "-", 110: ".", 111 : "/",
+			112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6", 118: "f7", 119: "f8",
+			120: "f9", 121: "f10", 122: "f11", 123: "f12", 144: "numlock", 145: "scroll", 191: "/", 224: "meta"
+		},
+
+		shiftNums: {
+			"`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&",
+			"8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ": ", "'": "\"", ",": "<",
+			".": ">",  "/": "?",  "\\": "|"
+		}
+	};
+
+	function keyHandler( handleObj ) {
+		// Only care when a possible input has been specified
+		if ( typeof handleObj.data !== "string" ) {
+			return;
+		}
+
+		var origHandler = handleObj.handler,
+			keys = handleObj.data.toLowerCase().split(" ");
+
+		handleObj.handler = function( event ) {
+			// Don't fire in text-accepting inputs that we didn't directly bind to
+			if ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) ||
+				 event.target.type === "text") ) {
+				return;
+			}
+
+			// Keypress represents characters, not special keys
+			var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[ event.which ],
+				character = String.fromCharCode( event.which ).toLowerCase(),
+				key, modif = "", possible = {};
+
+			// check combinations (alt|ctrl|shift+anything)
+			if ( event.altKey && special !== "alt" ) {
+				modif += "alt+";
+			}
+
+			if ( event.ctrlKey && special !== "ctrl" ) {
+				modif += "ctrl+";
+			}
+
+			// TODO: Need to make sure this works consistently across platforms
+			if ( event.metaKey && !event.ctrlKey && special !== "meta" ) {
+				modif += "meta+";
+			}
+
+			if ( event.shiftKey && special !== "shift" ) {
+				modif += "shift+";
+			}
+
+			if ( special ) {
+				possible[ modif + special ] = true;
+
+			} else {
+				possible[ modif + character ] = true;
+				possible[ modif + jQuery.hotkeys.shiftNums[ character ] ] = true;
+
+				// "$" can be triggered as "Shift+4" or "Shift+$" or just "$"
+				if ( modif === "shift+" ) {
+					possible[ jQuery.hotkeys.shiftNums[ character ] ] = true;
+				}
+			}
+
+			for ( var i = 0, l = keys.length; i < l; i++ ) {
+				if ( possible[ keys[i] ] ) {
+					return origHandler.apply( this, arguments );
+				}
+			}
+		};
+	}
+
+	jQuery.each([ "keydown", "keyup", "keypress" ], function() {
+		jQuery.event.special[ this ] = { add: keyHandler };
+	});
+
+})( jQuery );
diff --git a/backend/secfit/htmlcov/jquery.isonscreen.js b/backend/secfit/htmlcov/jquery.isonscreen.js
new file mode 100644
index 0000000..0182ebd
--- /dev/null
+++ b/backend/secfit/htmlcov/jquery.isonscreen.js
@@ -0,0 +1,53 @@
+/* Copyright (c) 2010
+ * @author Laurence Wheway
+ * 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.2.0
+ */
+(function($) {
+	jQuery.extend({
+		isOnScreen: function(box, container) {
+			//ensure numbers come in as intgers (not strings) and remove 'px' is it's there
+			for(var i in box){box[i] = parseFloat(box[i])};
+			for(var i in container){container[i] = parseFloat(container[i])};
+
+			if(!container){
+				container = {
+					left: $(window).scrollLeft(),
+					top: $(window).scrollTop(),
+					width: $(window).width(),
+					height: $(window).height()
+				}
+			}
+
+			if(	box.left+box.width-container.left > 0 &&
+				box.left < container.width+container.left &&
+				box.top+box.height-container.top > 0 &&
+				box.top < container.height+container.top
+			) return true;
+			return false;
+		}
+	})
+
+
+	jQuery.fn.isOnScreen = function (container) {
+		for(var i in container){container[i] = parseFloat(container[i])};
+
+		if(!container){
+			container = {
+				left: $(window).scrollLeft(),
+				top: $(window).scrollTop(),
+				width: $(window).width(),
+				height: $(window).height()
+			}
+		}
+
+		if(	$(this).offset().left+$(this).width()-container.left > 0 &&
+			$(this).offset().left < container.width+container.left &&
+			$(this).offset().top+$(this).height()-container.top > 0 &&
+			$(this).offset().top < container.height+container.top
+		) return true;
+		return false;
+	}
+})(jQuery);
diff --git a/backend/secfit/htmlcov/jquery.min.js b/backend/secfit/htmlcov/jquery.min.js
new file mode 100644
index 0000000..d2906fc
--- /dev/null
+++ b/backend/secfit/htmlcov/jquery.min.js
@@ -0,0 +1,5 @@
+(function(global,factory){"use strict";if(typeof module==="object"&&typeof module.exports==="object"){module.exports=global.document?factory(global,true):function(w){if(!w.document){throw new Error("jQuery requires a window with a document")}return factory(w)}}else{factory(global)}})(typeof window!=="undefined"?window:this,function(window,noGlobal){var arr=[];var document=window.document;var getProto=Object.getPrototypeOf;var slice=arr.slice;var concat=arr.concat;var push=arr.push;var indexOf=arr.indexOf;var class2type={};var toString=class2type.toString;var hasOwn=class2type.hasOwnProperty;var fnToString=hasOwn.toString;var ObjectFunctionString=fnToString.call(Object);var support={};var isFunction=function isFunction(obj){return typeof obj==="function"&&typeof obj.nodeType!=="number"};var isWindow=function isWindow(obj){return obj!=null&&obj===obj.window};var preservedScriptAttributes={type:true,src:true,noModule:true};function DOMEval(code,doc,node){doc=doc||document;var i,script=doc.createElement("script");script.text=code;if(node){for(i in preservedScriptAttributes){if(node[i]){script[i]=node[i]}}}doc.head.appendChild(script).parentNode.removeChild(script)}function toType(obj){if(obj==null){return obj+""}return typeof obj==="object"||typeof obj==="function"?class2type[toString.call(obj)]||"object":typeof obj}var version="3.3.1",jQuery=function(selector,context){return new jQuery.fn.init(selector,context)},rtrim=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;jQuery.fn=jQuery.prototype={jquery:version,constructor:jQuery,length:0,toArray:function(){return slice.call(this)},get:function(num){if(num==null){return slice.call(this)}return num<0?this[num+this.length]:this[num]},pushStack:function(elems){var ret=jQuery.merge(this.constructor(),elems);ret.prevObject=this;return ret},each:function(callback){return jQuery.each(this,callback)},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem)}))},slice:function(){return this.pushStack(slice.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j<len?[this[j]]:[])},end:function(){return this.prevObject||this.constructor()},push:push,sort:arr.sort,splice:arr.splice};jQuery.extend=jQuery.fn.extend=function(){var options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=false;if(typeof target==="boolean"){deep=target;target=arguments[i]||{};i++}if(typeof target!=="object"&&!isFunction(target)){target={}}if(i===length){target=this;i--}for(;i<length;i++){if((options=arguments[i])!=null){for(name in options){src=target[name];copy=options[name];if(name==="__proto__"||target===copy){continue}if(deep&&copy&&(jQuery.isPlainObject(copy)||(copyIsArray=Array.isArray(copy)))){if(copyIsArray){copyIsArray=false;clone=src&&Array.isArray(src)?src:[]}else{clone=src&&jQuery.isPlainObject(src)?src:{}}target[name]=jQuery.extend(deep,clone,copy)}else if(copy!==undefined){target[name]=copy}}}}return target};jQuery.extend({expando:"jQuery"+(version+Math.random()).replace(/\D/g,""),isReady:true,error:function(msg){throw new Error(msg)},noop:function(){},isPlainObject:function(obj){var proto,Ctor;if(!obj||toString.call(obj)!=="[object Object]"){return false}proto=getProto(obj);if(!proto){return true}Ctor=hasOwn.call(proto,"constructor")&&proto.constructor;return typeof Ctor==="function"&&fnToString.call(Ctor)===ObjectFunctionString},isEmptyObject:function(obj){var name;for(name in obj){return false}return true},globalEval:function(code){DOMEval(code)},each:function(obj,callback){var length,i=0;if(isArrayLike(obj)){length=obj.length;for(;i<length;i++){if(callback.call(obj[i],i,obj[i])===false){break}}}else{for(i in obj){if(callback.call(obj[i],i,obj[i])===false){break}}}return obj},trim:function(text){return text==null?"":(text+"").replace(rtrim,"")},makeArray:function(arr,results){var ret=results||[];if(arr!=null){if(isArrayLike(Object(arr))){jQuery.merge(ret,typeof arr==="string"?[arr]:arr)}else{push.call(ret,arr)}}return ret},inArray:function(elem,arr,i){return arr==null?-1:indexOf.call(arr,elem,i)},merge:function(first,second){var len=+second.length,j=0,i=first.length;for(;j<len;j++){first[i++]=second[j]}first.length=i;return first},grep:function(elems,callback,invert){var callbackInverse,matches=[],i=0,length=elems.length,callbackExpect=!invert;for(;i<length;i++){callbackInverse=!callback(elems[i],i);if(callbackInverse!==callbackExpect){matches.push(elems[i])}}return matches},map:function(elems,callback,arg){var length,value,i=0,ret=[];if(isArrayLike(elems)){length=elems.length;for(;i<length;i++){value=callback(elems[i],i,arg);if(value!=null){ret.push(value)}}}else{for(i in elems){value=callback(elems[i],i,arg);if(value!=null){ret.push(value)}}}return concat.apply([],ret)},guid:1,support:support});if(typeof Symbol==="function"){jQuery.fn[Symbol.iterator]=arr[Symbol.iterator]}jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase()});function isArrayLike(obj){var length=!!obj&&"length"in obj&&obj.length,type=toType(obj);if(isFunction(obj)||isWindow(obj)){return false}return type==="array"||length===0||typeof length==="number"&&length>0&&length-1 in obj}var Sizzle=function(window){var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,setDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+1*new Date,preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),sortOrder=function(a,b){if(a===b){hasDuplicate=true}return 0},hasOwn={}.hasOwnProperty,arr=[],pop=arr.pop,push_native=arr.push,push=arr.push,slice=arr.slice,indexOf=function(list,elem){var i=0,len=list.length;for(;i<len;i++){if(list[i]===elem){return i}}return-1},booleans="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",whitespace="[\\x20\\t\\r\\n\\f]",identifier="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",attributes="\\["+whitespace+"*("+identifier+")(?:"+whitespace+"*([*^$|!~]?=)"+whitespace+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+identifier+"))|)"+whitespace+"*\\]",pseudos=":("+identifier+")(?:\\(("+"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|"+"((?:\\\\.|[^\\\\()[\\]]|"+attributes+")*)|"+".*"+")\\)|)",rwhitespace=new RegExp(whitespace+"+","g"),rtrim=new RegExp("^"+whitespace+"+|((?:^|[^\\\\])(?:\\\\.)*)"+whitespace+"+$","g"),rcomma=new RegExp("^"+whitespace+"*,"+whitespace+"*"),rcombinators=new RegExp("^"+whitespace+"*([>+~]|"+whitespace+")"+whitespace+"*"),rattributeQuotes=new RegExp("="+whitespace+"*([^\\]'\"]*?)"+whitespace+"*\\]","g"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={ID:new RegExp("^#("+identifier+")"),CLASS:new RegExp("^\\.("+identifier+")"),TAG:new RegExp("^("+identifier+"|[*])"),ATTR:new RegExp("^"+attributes),PSEUDO:new RegExp("^"+pseudos),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),bool:new RegExp("^(?:"+booleans+")$","i"),needsContext:new RegExp("^"+whitespace+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,runescape=new RegExp("\\\\([\\da-f]{1,6}"+whitespace+"?|("+whitespace+")|.)","ig"),funescape=function(_,escaped,escapedWhitespace){var high="0x"+escaped-65536;return high!==high||escapedWhitespace?escaped:high<0?String.fromCharCode(high+65536):String.fromCharCode(high>>10|55296,high&1023|56320)},rcssescape=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,fcssescape=function(ch,asCodePoint){if(asCodePoint){if(ch==="\0"){return"�"}return ch.slice(0,-1)+"\\"+ch.charCodeAt(ch.length-1).toString(16)+" "}return"\\"+ch},unloadHandler=function(){setDocument()},disabledAncestor=addCombinator(function(elem){return elem.disabled===true&&("form"in elem||"label"in elem)},{dir:"parentNode",next:"legend"});try{push.apply(arr=slice.call(preferredDoc.childNodes),preferredDoc.childNodes);arr[preferredDoc.childNodes.length].nodeType}catch(e){push={apply:arr.length?function(target,els){push_native.apply(target,slice.call(els))}:function(target,els){var j=target.length,i=0;while(target[j++]=els[i++]){}target.length=j-1}}}function Sizzle(selector,context,results,seed){var m,i,elem,nid,match,groups,newSelector,newContext=context&&context.ownerDocument,nodeType=context?context.nodeType:9;results=results||[];if(typeof selector!=="string"||!selector||nodeType!==1&&nodeType!==9&&nodeType!==11){return results}if(!seed){if((context?context.ownerDocument||context:preferredDoc)!==document){setDocument(context)}context=context||document;if(documentIsHTML){if(nodeType!==11&&(match=rquickExpr.exec(selector))){if(m=match[1]){if(nodeType===9){if(elem=context.getElementById(m)){if(elem.id===m){results.push(elem);return results}}else{return results}}else{if(newContext&&(elem=newContext.getElementById(m))&&contains(context,elem)&&elem.id===m){results.push(elem);return results}}}else if(match[2]){push.apply(results,context.getElementsByTagName(selector));return results}else if((m=match[3])&&support.getElementsByClassName&&context.getElementsByClassName){push.apply(results,context.getElementsByClassName(m));return results}}if(support.qsa&&!compilerCache[selector+" "]&&(!rbuggyQSA||!rbuggyQSA.test(selector))){if(nodeType!==1){newContext=context;newSelector=selector}else if(context.nodeName.toLowerCase()!=="object"){if(nid=context.getAttribute("id")){nid=nid.replace(rcssescape,fcssescape)}else{context.setAttribute("id",nid=expando)}groups=tokenize(selector);i=groups.length;while(i--){groups[i]="#"+nid+" "+toSelector(groups[i])}newSelector=groups.join(",");newContext=rsibling.test(selector)&&testContext(context.parentNode)||context}if(newSelector){try{push.apply(results,newContext.querySelectorAll(newSelector));return results}catch(qsaError){}finally{if(nid===expando){context.removeAttribute("id")}}}}}}return select(selector.replace(rtrim,"$1"),context,results,seed)}function createCache(){var keys=[];function cache(key,value){if(keys.push(key+" ")>Expr.cacheLength){delete cache[keys.shift()]}return cache[key+" "]=value}return cache}function markFunction(fn){fn[expando]=true;return fn}function assert(fn){var el=document.createElement("fieldset");try{return!!fn(el)}catch(e){return false}finally{if(el.parentNode){el.parentNode.removeChild(el)}el=null}}function addHandle(attrs,handler){var arr=attrs.split("|"),i=arr.length;while(i--){Expr.attrHandle[arr[i]]=handler}}function siblingCheck(a,b){var cur=b&&a,diff=cur&&a.nodeType===1&&b.nodeType===1&&a.sourceIndex-b.sourceIndex;if(diff){return diff}if(cur){while(cur=cur.nextSibling){if(cur===b){return-1}}}return a?1:-1}function createInputPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return name==="input"&&elem.type===type}}function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return(name==="input"||name==="button")&&elem.type===type}}function createDisabledPseudo(disabled){return function(elem){if("form"in elem){if(elem.parentNode&&elem.disabled===false){if("label"in elem){if("label"in elem.parentNode){return elem.parentNode.disabled===disabled}else{return elem.disabled===disabled}}return elem.isDisabled===disabled||elem.isDisabled!==!disabled&&disabledAncestor(elem)===disabled}return elem.disabled===disabled}else if("label"in elem){return elem.disabled===disabled}return false}}function createPositionalPseudo(fn){return markFunction(function(argument){argument=+argument;return markFunction(function(seed,matches){var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;while(i--){if(seed[j=matchIndexes[i]]){seed[j]=!(matches[j]=seed[j])}}})})}function testContext(context){return context&&typeof context.getElementsByTagName!=="undefined"&&context}support=Sizzle.support={};isXML=Sizzle.isXML=function(elem){var documentElement=elem&&(elem.ownerDocument||elem).documentElement;return documentElement?documentElement.nodeName!=="HTML":false};setDocument=Sizzle.setDocument=function(node){var hasCompare,subWindow,doc=node?node.ownerDocument||node:preferredDoc;if(doc===document||doc.nodeType!==9||!doc.documentElement){return document}document=doc;docElem=document.documentElement;documentIsHTML=!isXML(document);if(preferredDoc!==document&&(subWindow=document.defaultView)&&subWindow.top!==subWindow){if(subWindow.addEventListener){subWindow.addEventListener("unload",unloadHandler,false)}else if(subWindow.attachEvent){subWindow.attachEvent("onunload",unloadHandler)}}support.attributes=assert(function(el){el.className="i";return!el.getAttribute("className")});support.getElementsByTagName=assert(function(el){el.appendChild(document.createComment(""));return!el.getElementsByTagName("*").length});support.getElementsByClassName=rnative.test(document.getElementsByClassName);support.getById=assert(function(el){docElem.appendChild(el).id=expando;return!document.getElementsByName||!document.getElementsByName(expando).length});if(support.getById){Expr.filter["ID"]=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId}};Expr.find["ID"]=function(id,context){if(typeof context.getElementById!=="undefined"&&documentIsHTML){var elem=context.getElementById(id);return elem?[elem]:[]}}}else{Expr.filter["ID"]=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");return node&&node.value===attrId}};Expr.find["ID"]=function(id,context){if(typeof context.getElementById!=="undefined"&&documentIsHTML){var node,i,elems,elem=context.getElementById(id);if(elem){node=elem.getAttributeNode("id");if(node&&node.value===id){return[elem]}elems=context.getElementsByName(id);i=0;while(elem=elems[i++]){node=elem.getAttributeNode("id");if(node&&node.value===id){return[elem]}}}return[]}}}Expr.find["TAG"]=support.getElementsByTagName?function(tag,context){if(typeof context.getElementsByTagName!=="undefined"){return context.getElementsByTagName(tag)}else if(support.qsa){return context.querySelectorAll(tag)}}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if(tag==="*"){while(elem=results[i++]){if(elem.nodeType===1){tmp.push(elem)}}return tmp}return results};Expr.find["CLASS"]=support.getElementsByClassName&&function(className,context){if(typeof context.getElementsByClassName!=="undefined"&&documentIsHTML){return context.getElementsByClassName(className)}};rbuggyMatches=[];rbuggyQSA=[];if(support.qsa=rnative.test(document.querySelectorAll)){assert(function(el){docElem.appendChild(el).innerHTML="<a id='"+expando+"'></a>"+"<select id='"+expando+"-\r\\' msallowcapture=''>"+"<option selected=''></option></select>";if(el.querySelectorAll("[msallowcapture^='']").length){rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")")}if(!el.querySelectorAll("[selected]").length){rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")")}if(!el.querySelectorAll("[id~="+expando+"-]").length){rbuggyQSA.push("~=")}if(!el.querySelectorAll(":checked").length){rbuggyQSA.push(":checked")}if(!el.querySelectorAll("a#"+expando+"+*").length){rbuggyQSA.push(".#.+[+~]")}});assert(function(el){el.innerHTML="<a href='' disabled='disabled'></a>"+"<select disabled='disabled'><option/></select>";var input=document.createElement("input");input.setAttribute("type","hidden");el.appendChild(input).setAttribute("name","D");if(el.querySelectorAll("[name=d]").length){rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?=")}if(el.querySelectorAll(":enabled").length!==2){rbuggyQSA.push(":enabled",":disabled")}docElem.appendChild(el).disabled=true;if(el.querySelectorAll(":disabled").length!==2){rbuggyQSA.push(":enabled",":disabled")}el.querySelectorAll("*,:x");rbuggyQSA.push(",.*:")})}if(support.matchesSelector=rnative.test(matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector)){assert(function(el){support.disconnectedMatch=matches.call(el,"*");matches.call(el,"[s!='']:x");rbuggyMatches.push("!=",pseudos)})}rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|"));rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|"));hasCompare=rnative.test(docElem.compareDocumentPosition);contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=a.nodeType===9?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!!(bup&&bup.nodeType===1&&(adown.contains?adown.contains(bup):a.compareDocumentPosition&&a.compareDocumentPosition(bup)&16))}:function(a,b){if(b){while(b=b.parentNode){if(b===a){return true}}}return false};sortOrder=hasCompare?function(a,b){if(a===b){hasDuplicate=true;return 0}var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;if(compare){return compare}compare=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1;if(compare&1||!support.sortDetached&&b.compareDocumentPosition(a)===compare){if(a===document||a.ownerDocument===preferredDoc&&contains(preferredDoc,a)){return-1}if(b===document||b.ownerDocument===preferredDoc&&contains(preferredDoc,b)){return 1}return sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0}return compare&4?-1:1}:function(a,b){if(a===b){hasDuplicate=true;return 0}var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup){return a===document?-1:b===document?1:aup?-1:bup?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0}else if(aup===bup){return siblingCheck(a,b)}cur=a;while(cur=cur.parentNode){ap.unshift(cur)}cur=b;while(cur=cur.parentNode){bp.unshift(cur)}while(ap[i]===bp[i]){i++}return i?siblingCheck(ap[i],bp[i]):ap[i]===preferredDoc?-1:bp[i]===preferredDoc?1:0};return document};Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements)};Sizzle.matchesSelector=function(elem,expr){if((elem.ownerDocument||elem)!==document){setDocument(elem)}expr=expr.replace(rattributeQuotes,"='$1']");if(support.matchesSelector&&documentIsHTML&&!compilerCache[expr+" "]&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr))){try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&elem.document.nodeType!==11){return ret}}catch(e){}}return Sizzle(expr,document,null,[elem]).length>0};Sizzle.contains=function(context,elem){if((context.ownerDocument||context)!==document){setDocument(context)}return contains(context,elem)};Sizzle.attr=function(elem,name){if((elem.ownerDocument||elem)!==document){setDocument(elem)}var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):undefined;return val!==undefined?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null};Sizzle.escape=function(sel){return(sel+"").replace(rcssescape,fcssescape)};Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg)};Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;hasDuplicate=!support.detectDuplicates;sortInput=!support.sortStable&&results.slice(0);results.sort(sortOrder);if(hasDuplicate){while(elem=results[i++]){if(elem===results[i]){j=duplicates.push(i)}}while(j--){results.splice(duplicates[j],1)}}sortInput=null;return results};getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(!nodeType){while(node=elem[i++]){ret+=getText(node)}}else if(nodeType===1||nodeType===9||nodeType===11){if(typeof elem.textContent==="string"){return elem.textContent}else{for(elem=elem.firstChild;elem;elem=elem.nextSibling){ret+=getText(elem)}}}else if(nodeType===3||nodeType===4){return elem.nodeValue}return ret};Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(match){match[1]=match[1].replace(runescape,funescape);match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape);if(match[2]==="~="){match[3]=" "+match[3]+" "}return match.slice(0,4)},CHILD:function(match){match[1]=match[1].toLowerCase();if(match[1].slice(0,3)==="nth"){if(!match[3]){Sizzle.error(match[0])}match[4]=+(match[4]?match[5]+(match[6]||1):2*(match[3]==="even"||match[3]==="odd"));match[5]=+(match[7]+match[8]||match[3]==="odd")}else if(match[3]){Sizzle.error(match[0])}return match},PSEUDO:function(match){var excess,unquoted=!match[6]&&match[2];if(matchExpr["CHILD"].test(match[0])){return null}if(match[3]){match[2]=match[4]||match[5]||""}else if(unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,true))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)){match[0]=match[0].slice(0,excess);match[2]=unquoted.slice(0,excess)}return match.slice(0,3)}},filter:{TAG:function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return nodeNameSelector==="*"?function(){return true}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName}},CLASS:function(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test(typeof elem.className==="string"&&elem.className||typeof elem.getAttribute!=="undefined"&&elem.getAttribute("class")||"")})},ATTR:function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);if(result==null){return operator==="!="}if(!operator){return true}result+="";return operator==="="?result===check:operator==="!="?result!==check:operator==="^="?check&&result.indexOf(check)===0:operator==="*="?check&&result.indexOf(check)>-1:operator==="$="?check&&result.slice(-check.length)===check:operator==="~="?(" "+result.replace(rwhitespace," ")+" ").indexOf(check)>-1:operator==="|="?result===check||result.slice(0,check.length+1)===check+"-":false}},CHILD:function(type,what,argument,first,last){var simple=type.slice(0,3)!=="nth",forward=type.slice(-4)!=="last",ofType=what==="of-type";return first===1&&last===0?function(elem){return!!elem.parentNode}:function(elem,context,xml){var cache,uniqueCache,outerCache,node,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=false;if(parent){if(simple){while(dir){node=elem;while(node=node[dir]){if(ofType?node.nodeName.toLowerCase()===name:node.nodeType===1){return false}}start=dir=type==="only"&&!start&&"nextSibling"}return true}start=[forward?parent.firstChild:parent.lastChild];if(forward&&useCache){node=parent;outerCache=node[expando]||(node[expando]={});uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={});cache=uniqueCache[type]||[];nodeIndex=cache[0]===dirruns&&cache[1];diff=nodeIndex&&cache[2];node=nodeIndex&&parent.childNodes[nodeIndex];while(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop()){if(node.nodeType===1&&++diff&&node===elem){uniqueCache[type]=[dirruns,nodeIndex,diff];break}}}else{if(useCache){node=elem;outerCache=node[expando]||(node[expando]={});uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={});cache=uniqueCache[type]||[];nodeIndex=cache[0]===dirruns&&cache[1];diff=nodeIndex}if(diff===false){while(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop()){if((ofType?node.nodeName.toLowerCase()===name:node.nodeType===1)&&++diff){if(useCache){outerCache=node[expando]||(node[expando]={});uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={});uniqueCache[type]=[dirruns,diff]}if(node===elem){break}}}}}diff-=last;return diff===first||diff%first===0&&diff/first>=0}}},PSEUDO:function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);if(fn[expando]){return fn(argument)}if(fn.length>1){args=[pseudo,pseudo,"",argument];return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){var idx,matched=fn(seed,argument),i=matched.length;while(i--){idx=indexOf(seed,matched[i]);seed[idx]=!(matches[idx]=matched[i])}}):function(elem){return fn(elem,0,args)}}return fn}},pseudos:{not:markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,context,xml){var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;while(i--){if(elem=unmatched[i]){seed[i]=!(matches[i]=elem)}}}):function(elem,context,xml){input[0]=elem;matcher(input,null,xml,results);input[0]=null;return!results.pop()}}),has:markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0}}),contains:markFunction(function(text){text=text.replace(runescape,funescape);return function(elem){return(elem.textContent||elem.innerText||getText(elem)).indexOf(text)>-1}}),lang:markFunction(function(lang){if(!ridentifier.test(lang||"")){Sizzle.error("unsupported lang: "+lang)}lang=lang.replace(runescape,funescape).toLowerCase();return function(elem){var elemLang;do{if(elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang")){elemLang=elemLang.toLowerCase();return elemLang===lang||elemLang.indexOf(lang+"-")===0}}while((elem=elem.parentNode)&&elem.nodeType===1);return false}}),target:function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id},root:function(elem){return elem===docElem},focus:function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex)},enabled:createDisabledPseudo(false),disabled:createDisabledPseudo(true),checked:function(elem){var nodeName=elem.nodeName.toLowerCase();return nodeName==="input"&&!!elem.checked||nodeName==="option"&&!!elem.selected},selected:function(elem){if(elem.parentNode){elem.parentNode.selectedIndex}return elem.selected===true},empty:function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling){if(elem.nodeType<6){return false}}return true},parent:function(elem){return!Expr.pseudos["empty"](elem)},header:function(elem){return rheader.test(elem.nodeName)},input:function(elem){return rinputs.test(elem.nodeName)},button:function(elem){var name=elem.nodeName.toLowerCase();return name==="input"&&elem.type==="button"||name==="button"},text:function(elem){var attr;return elem.nodeName.toLowerCase()==="input"&&elem.type==="text"&&((attr=elem.getAttribute("type"))==null||attr.toLowerCase()==="text")},first:createPositionalPseudo(function(){return[0]}),last:createPositionalPseudo(function(matchIndexes,length){return[length-1]}),eq:createPositionalPseudo(function(matchIndexes,length,argument){return[argument<0?argument+length:argument]}),even:createPositionalPseudo(function(matchIndexes,length){var i=0;for(;i<length;i+=2){matchIndexes.push(i)}return matchIndexes}),odd:createPositionalPseudo(function(matchIndexes,length){var i=1;for(;i<length;i+=2){matchIndexes.push(i)}return matchIndexes}),lt:createPositionalPseudo(function(matchIndexes,length,argument){var i=argument<0?argument+length:argument;for(;--i>=0;){matchIndexes.push(i)}return matchIndexes}),gt:createPositionalPseudo(function(matchIndexes,length,argument){var i=argument<0?argument+length:argument;for(;++i<length;){matchIndexes.push(i)}return matchIndexes})}};Expr.pseudos["nth"]=Expr.pseudos["eq"];for(i in{radio:true,checkbox:true,file:true,password:true,image:true}){Expr.pseudos[i]=createInputPseudo(i)}for(i in{submit:true,reset:true}){Expr.pseudos[i]=createButtonPseudo(i)}function setFilters(){}setFilters.prototype=Expr.filters=Expr.pseudos;Expr.setFilters=new setFilters;tokenize=Sizzle.tokenize=function(selector,parseOnly){var matched,match,tokens,type,soFar,groups,preFilters,cached=tokenCache[selector+" "];if(cached){return parseOnly?0:cached.slice(0)}soFar=selector;groups=[];preFilters=Expr.preFilter;while(soFar){if(!matched||(match=rcomma.exec(soFar))){if(match){soFar=soFar.slice(match[0].length)||soFar}groups.push(tokens=[])}matched=false;if(match=rcombinators.exec(soFar)){matched=match.shift();tokens.push({value:matched,type:match[0].replace(rtrim," ")});soFar=soFar.slice(matched.length)}for(type in Expr.filter){if((match=matchExpr[type].exec(soFar))&&(!preFilters[type]||(match=preFilters[type](match)))){matched=match.shift();tokens.push({value:matched,type:type,matches:match});soFar=soFar.slice(matched.length)}}if(!matched){break}}return parseOnly?soFar.length:soFar?Sizzle.error(selector):tokenCache(selector,groups).slice(0)};function toSelector(tokens){var i=0,len=tokens.length,selector="";for(;i<len;i++){selector+=tokens[i].value}return selector}function addCombinator(matcher,combinator,base){var dir=combinator.dir,skip=combinator.next,key=skip||dir,checkNonElements=base&&key==="parentNode",doneName=done++;return combinator.first?function(elem,context,xml){while(elem=elem[dir]){if(elem.nodeType===1||checkNonElements){return matcher(elem,context,xml)}}return false}:function(elem,context,xml){var oldCache,uniqueCache,outerCache,newCache=[dirruns,doneName];if(xml){while(elem=elem[dir]){if(elem.nodeType===1||checkNonElements){if(matcher(elem,context,xml)){return true}}}}else{while(elem=elem[dir]){if(elem.nodeType===1||checkNonElements){outerCache=elem[expando]||(elem[expando]={});uniqueCache=outerCache[elem.uniqueID]||(outerCache[elem.uniqueID]={});if(skip&&skip===elem.nodeName.toLowerCase()){elem=elem[dir]||elem}else if((oldCache=uniqueCache[key])&&oldCache[0]===dirruns&&oldCache[1]===doneName){return newCache[2]=oldCache[2]}else{uniqueCache[key]=newCache;if(newCache[2]=matcher(elem,context,xml)){return true}}}}}return false}}function elementMatcher(matchers){return matchers.length>1?function(elem,context,xml){var i=matchers.length;while(i--){if(!matchers[i](elem,context,xml)){return false}}return true}:matchers[0]}function multipleContexts(selector,contexts,results){var i=0,len=contexts.length;for(;i<len;i++){Sizzle(selector,contexts[i],results)}return results}function condense(unmatched,map,filter,context,xml){var elem,newUnmatched=[],i=0,len=unmatched.length,mapped=map!=null;for(;i<len;i++){if(elem=unmatched[i]){if(!filter||filter(elem,context,xml)){newUnmatched.push(elem);if(mapped){map.push(i)}}}}return newUnmatched}function setMatcher(preFilter,selector,matcher,postFilter,postFinder,postSelector){if(postFilter&&!postFilter[expando]){postFilter=setMatcher(postFilter)}if(postFinder&&!postFinder[expando]){postFinder=setMatcher(postFinder,postSelector)}return markFunction(function(seed,results,context,xml){var temp,i,elem,preMap=[],postMap=[],preexisting=results.length,elems=seed||multipleContexts(selector||"*",context.nodeType?[context]:context,[]),matcherIn=preFilter&&(seed||!selector)?condense(elems,preMap,preFilter,context,xml):elems,matcherOut=matcher?postFinder||(seed?preFilter:preexisting||postFilter)?[]:results:matcherIn;if(matcher){matcher(matcherIn,matcherOut,context,xml)}if(postFilter){temp=condense(matcherOut,postMap);postFilter(temp,[],context,xml);i=temp.length;while(i--){if(elem=temp[i]){matcherOut[postMap[i]]=!(matcherIn[postMap[i]]=elem)}}}if(seed){if(postFinder||preFilter){if(postFinder){temp=[];i=matcherOut.length;while(i--){if(elem=matcherOut[i]){temp.push(matcherIn[i]=elem)}}postFinder(null,matcherOut=[],temp,xml)}i=matcherOut.length;while(i--){
+if((elem=matcherOut[i])&&(temp=postFinder?indexOf(seed,elem):preMap[i])>-1){seed[temp]=!(results[temp]=elem)}}}}else{matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut);if(postFinder){postFinder(null,results,matcherOut,xml)}else{push.apply(results,matcherOut)}}})}function matcherFromTokens(tokens){var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext},implicitRelative,true),matchAnyContext=addCombinator(function(elem){return indexOf(checkContext,elem)>-1},implicitRelative,true),matchers=[function(elem,context,xml){var ret=!leadingRelative&&(xml||context!==outermostContext)||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));checkContext=null;return ret}];for(;i<len;i++){if(matcher=Expr.relative[tokens[i].type]){matchers=[addCombinator(elementMatcher(matchers),matcher)]}else{matcher=Expr.filter[tokens[i].type].apply(null,tokens[i].matches);if(matcher[expando]){j=++i;for(;j<len;j++){if(Expr.relative[tokens[j].type]){break}}return setMatcher(i>1&&elementMatcher(matchers),i>1&&toSelector(tokens.slice(0,i-1).concat({value:tokens[i-2].type===" "?"*":""})).replace(rtrim,"$1"),matcher,i<j&&matcherFromTokens(tokens.slice(i,j)),j<len&&matcherFromTokens(tokens=tokens.slice(j)),j<len&&toSelector(tokens))}matchers.push(matcher)}}return elementMatcher(matchers)}function matcherFromGroupMatchers(elementMatchers,setMatchers){var bySet=setMatchers.length>0,byElement=elementMatchers.length>0,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find["TAG"]("*",outermost),dirrunsUnique=dirruns+=contextBackup==null?1:Math.random()||.1,len=elems.length;if(outermost){outermostContext=context===document||context||outermost}for(;i!==len&&(elem=elems[i])!=null;i++){if(byElement&&elem){j=0;if(!context&&elem.ownerDocument!==document){setDocument(elem);xml=!documentIsHTML}while(matcher=elementMatchers[j++]){if(matcher(elem,context||document,xml)){results.push(elem);break}}if(outermost){dirruns=dirrunsUnique}}if(bySet){if(elem=!matcher&&elem){matchedCount--}if(seed){unmatched.push(elem)}}}matchedCount+=i;if(bySet&&i!==matchedCount){j=0;while(matcher=setMatchers[j++]){matcher(unmatched,setMatched,context,xml)}if(seed){if(matchedCount>0){while(i--){if(!(unmatched[i]||setMatched[i])){setMatched[i]=pop.call(results)}}}setMatched=condense(setMatched)}push.apply(results,setMatched);if(outermost&&!seed&&setMatched.length>0&&matchedCount+setMatchers.length>1){Sizzle.uniqueSort(results)}}if(outermost){dirruns=dirrunsUnique;outermostContext=contextBackup}return unmatched};return bySet?markFunction(superMatcher):superMatcher}compile=Sizzle.compile=function(selector,match){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+" "];if(!cached){if(!match){match=tokenize(selector)}i=match.length;while(i--){cached=matcherFromTokens(match[i]);if(cached[expando]){setMatchers.push(cached)}else{elementMatchers.push(cached)}}cached=compilerCache(selector,matcherFromGroupMatchers(elementMatchers,setMatchers));cached.selector=selector}return cached};select=Sizzle.select=function(selector,context,results,seed){var i,tokens,token,type,find,compiled=typeof selector==="function"&&selector,match=!seed&&tokenize(selector=compiled.selector||selector);results=results||[];if(match.length===1){tokens=match[0]=match[0].slice(0);if(tokens.length>2&&(token=tokens[0]).type==="ID"&&context.nodeType===9&&documentIsHTML&&Expr.relative[tokens[1].type]){context=(Expr.find["ID"](token.matches[0].replace(runescape,funescape),context)||[])[0];if(!context){return results}else if(compiled){context=context.parentNode}selector=selector.slice(tokens.shift().value.length)}i=matchExpr["needsContext"].test(selector)?0:tokens.length;while(i--){token=tokens[i];if(Expr.relative[type=token.type]){break}if(find=Expr.find[type]){if(seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context)){tokens.splice(i,1);selector=seed.length&&toSelector(tokens);if(!selector){push.apply(results,seed);return results}break}}}}(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context);return results};support.sortStable=expando.split("").sort(sortOrder).join("")===expando;support.detectDuplicates=!!hasDuplicate;setDocument();support.sortDetached=assert(function(el){return el.compareDocumentPosition(document.createElement("fieldset"))&1});if(!assert(function(el){el.innerHTML="<a href='#'></a>";return el.firstChild.getAttribute("href")==="#"})){addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML){return elem.getAttribute(name,name.toLowerCase()==="type"?1:2)}})}if(!support.attributes||!assert(function(el){el.innerHTML="<input/>";el.firstChild.setAttribute("value","");return el.firstChild.getAttribute("value")===""})){addHandle("value",function(elem,name,isXML){if(!isXML&&elem.nodeName.toLowerCase()==="input"){return elem.defaultValue}})}if(!assert(function(el){return el.getAttribute("disabled")==null})){addHandle(booleans,function(elem,name,isXML){var val;if(!isXML){return elem[name]===true?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null}})}return Sizzle}(window);jQuery.find=Sizzle;jQuery.expr=Sizzle.selectors;jQuery.expr[":"]=jQuery.expr.pseudos;jQuery.uniqueSort=jQuery.unique=Sizzle.uniqueSort;jQuery.text=Sizzle.getText;jQuery.isXMLDoc=Sizzle.isXML;jQuery.contains=Sizzle.contains;jQuery.escapeSelector=Sizzle.escape;var dir=function(elem,dir,until){var matched=[],truncate=until!==undefined;while((elem=elem[dir])&&elem.nodeType!==9){if(elem.nodeType===1){if(truncate&&jQuery(elem).is(until)){break}matched.push(elem)}}return matched};var siblings=function(n,elem){var matched=[];for(;n;n=n.nextSibling){if(n.nodeType===1&&n!==elem){matched.push(n)}}return matched};var rneedsContext=jQuery.expr.match.needsContext;function nodeName(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase()}var rsingleTag=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function winnow(elements,qualifier,not){if(isFunction(qualifier)){return jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not})}if(qualifier.nodeType){return jQuery.grep(elements,function(elem){return elem===qualifier!==not})}if(typeof qualifier!=="string"){return jQuery.grep(elements,function(elem){return indexOf.call(qualifier,elem)>-1!==not})}return jQuery.filter(qualifier,elements,not)}jQuery.filter=function(expr,elems,not){var elem=elems[0];if(not){expr=":not("+expr+")"}if(elems.length===1&&elem.nodeType===1){return jQuery.find.matchesSelector(elem,expr)?[elem]:[]}return jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return elem.nodeType===1}))};jQuery.fn.extend({find:function(selector){var i,ret,len=this.length,self=this;if(typeof selector!=="string"){return this.pushStack(jQuery(selector).filter(function(){for(i=0;i<len;i++){if(jQuery.contains(self[i],this)){return true}}}))}ret=this.pushStack([]);for(i=0;i<len;i++){jQuery.find(selector,self[i],ret)}return len>1?jQuery.uniqueSort(ret):ret},filter:function(selector){return this.pushStack(winnow(this,selector||[],false))},not:function(selector){return this.pushStack(winnow(this,selector||[],true))},is:function(selector){return!!winnow(this,typeof selector==="string"&&rneedsContext.test(selector)?jQuery(selector):selector||[],false).length}});var rootjQuery,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,init=jQuery.fn.init=function(selector,context,root){var match,elem;if(!selector){return this}root=root||rootjQuery;if(typeof selector==="string"){if(selector[0]==="<"&&selector[selector.length-1]===">"&&selector.length>=3){match=[null,selector,null]}else{match=rquickExpr.exec(selector)}if(match&&(match[1]||!context)){if(match[1]){context=context instanceof jQuery?context[0]:context;jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,true));if(rsingleTag.test(match[1])&&jQuery.isPlainObject(context)){for(match in context){if(isFunction(this[match])){this[match](context[match])}else{this.attr(match,context[match])}}}return this}else{elem=document.getElementById(match[2]);if(elem){this[0]=elem;this.length=1}return this}}else if(!context||context.jquery){return(context||root).find(selector)}else{return this.constructor(context).find(selector)}}else if(selector.nodeType){this[0]=selector;this.length=1;return this}else if(isFunction(selector)){return root.ready!==undefined?root.ready(selector):selector(jQuery)}return jQuery.makeArray(selector,this)};init.prototype=jQuery.fn;rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:true,contents:true,next:true,prev:true};jQuery.fn.extend({has:function(target){var targets=jQuery(target,this),l=targets.length;return this.filter(function(){var i=0;for(;i<l;i++){if(jQuery.contains(this,targets[i])){return true}}})},closest:function(selectors,context){var cur,i=0,l=this.length,matched=[],targets=typeof selectors!=="string"&&jQuery(selectors);if(!rneedsContext.test(selectors)){for(;i<l;i++){for(cur=this[i];cur&&cur!==context;cur=cur.parentNode){if(cur.nodeType<11&&(targets?targets.index(cur)>-1:cur.nodeType===1&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break}}}}return this.pushStack(matched.length>1?jQuery.uniqueSort(matched):matched)},index:function(elem){if(!elem){return this[0]&&this[0].parentNode?this.first().prevAll().length:-1}if(typeof elem==="string"){return indexOf.call(jQuery(elem),this[0])}return indexOf.call(this,elem.jquery?elem[0]:elem)},add:function(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))))},addBack:function(selector){return this.add(selector==null?this.prevObject:this.prevObject.filter(selector))}});function sibling(cur,dir){while((cur=cur[dir])&&cur.nodeType!==1){}return cur}jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&parent.nodeType!==11?parent:null},parents:function(elem){return dir(elem,"parentNode")},parentsUntil:function(elem,i,until){return dir(elem,"parentNode",until)},next:function(elem){return sibling(elem,"nextSibling")},prev:function(elem){return sibling(elem,"previousSibling")},nextAll:function(elem){return dir(elem,"nextSibling")},prevAll:function(elem){return dir(elem,"previousSibling")},nextUntil:function(elem,i,until){return dir(elem,"nextSibling",until)},prevUntil:function(elem,i,until){return dir(elem,"previousSibling",until)},siblings:function(elem){return siblings((elem.parentNode||{}).firstChild,elem)},children:function(elem){return siblings(elem.firstChild)},contents:function(elem){if(nodeName(elem,"iframe")){return elem.contentDocument}if(nodeName(elem,"template")){elem=elem.content||elem}return jQuery.merge([],elem.childNodes)}},function(name,fn){jQuery.fn[name]=function(until,selector){var matched=jQuery.map(this,fn,until);if(name.slice(-5)!=="Until"){selector=until}if(selector&&typeof selector==="string"){matched=jQuery.filter(selector,matched)}if(this.length>1){if(!guaranteedUnique[name]){jQuery.uniqueSort(matched)}if(rparentsprev.test(name)){matched.reverse()}}return this.pushStack(matched)}});var rnothtmlwhite=/[^\x20\t\r\n\f]+/g;function createOptions(options){var object={};jQuery.each(options.match(rnothtmlwhite)||[],function(_,flag){object[flag]=true});return object}jQuery.Callbacks=function(options){options=typeof options==="string"?createOptions(options):jQuery.extend({},options);var firing,memory,fired,locked,list=[],queue=[],firingIndex=-1,fire=function(){locked=locked||options.once;fired=firing=true;for(;queue.length;firingIndex=-1){memory=queue.shift();while(++firingIndex<list.length){if(list[firingIndex].apply(memory[0],memory[1])===false&&options.stopOnFalse){firingIndex=list.length;memory=false}}}if(!options.memory){memory=false}firing=false;if(locked){if(memory){list=[]}else{list=""}}},self={add:function(){if(list){if(memory&&!firing){firingIndex=list.length-1;queue.push(memory)}(function add(args){jQuery.each(args,function(_,arg){if(isFunction(arg)){if(!options.unique||!self.has(arg)){list.push(arg)}}else if(arg&&arg.length&&toType(arg)!=="string"){add(arg)}})})(arguments);if(memory&&!firing){fire()}}return this},remove:function(){jQuery.each(arguments,function(_,arg){var index;while((index=jQuery.inArray(arg,list,index))>-1){list.splice(index,1);if(index<=firingIndex){firingIndex--}}});return this},has:function(fn){return fn?jQuery.inArray(fn,list)>-1:list.length>0},empty:function(){if(list){list=[]}return this},disable:function(){locked=queue=[];list=memory="";return this},disabled:function(){return!list},lock:function(){locked=queue=[];if(!memory&&!firing){list=memory=""}return this},locked:function(){return!!locked},fireWith:function(context,args){if(!locked){args=args||[];args=[context,args.slice?args.slice():args];queue.push(args);if(!firing){fire()}}return this},fire:function(){self.fireWith(this,arguments);return this},fired:function(){return!!fired}};return self};function Identity(v){return v}function Thrower(ex){throw ex}function adoptValue(value,resolve,reject,noValue){var method;try{if(value&&isFunction(method=value.promise)){method.call(value).done(resolve).fail(reject)}else if(value&&isFunction(method=value.then)){method.call(value,resolve,reject)}else{resolve.apply(undefined,[value].slice(noValue))}}catch(value){reject.apply(undefined,[value])}}jQuery.extend({Deferred:function(func){var tuples=[["notify","progress",jQuery.Callbacks("memory"),jQuery.Callbacks("memory"),2],["resolve","done",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),0,"resolved"],["reject","fail",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),1,"rejected"]],state="pending",promise={state:function(){return state},always:function(){deferred.done(arguments).fail(arguments);return this},catch:function(fn){return promise.then(null,fn)},pipe:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(i,tuple){var fn=isFunction(fns[tuple[4]])&&fns[tuple[4]];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);if(returned&&isFunction(returned.promise)){returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject)}else{newDefer[tuple[0]+"With"](this,fn?[returned]:arguments)}})});fns=null}).promise()},then:function(onFulfilled,onRejected,onProgress){var maxDepth=0;function resolve(depth,deferred,handler,special){return function(){var that=this,args=arguments,mightThrow=function(){var returned,then;if(depth<maxDepth){return}returned=handler.apply(that,args);if(returned===deferred.promise()){throw new TypeError("Thenable self-resolution")}then=returned&&(typeof returned==="object"||typeof returned==="function")&&returned.then;if(isFunction(then)){if(special){then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special))}else{maxDepth++;then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special),resolve(maxDepth,deferred,Identity,deferred.notifyWith))}}else{if(handler!==Identity){that=undefined;args=[returned]}(special||deferred.resolveWith)(that,args)}},process=special?mightThrow:function(){try{mightThrow()}catch(e){if(jQuery.Deferred.exceptionHook){jQuery.Deferred.exceptionHook(e,process.stackTrace)}if(depth+1>=maxDepth){if(handler!==Thrower){that=undefined;args=[e]}deferred.rejectWith(that,args)}}};if(depth){process()}else{if(jQuery.Deferred.getStackHook){process.stackTrace=jQuery.Deferred.getStackHook()}window.setTimeout(process)}}}return jQuery.Deferred(function(newDefer){tuples[0][3].add(resolve(0,newDefer,isFunction(onProgress)?onProgress:Identity,newDefer.notifyWith));tuples[1][3].add(resolve(0,newDefer,isFunction(onFulfilled)?onFulfilled:Identity));tuples[2][3].add(resolve(0,newDefer,isFunction(onRejected)?onRejected:Thrower))}).promise()},promise:function(obj){return obj!=null?jQuery.extend(obj,promise):promise}},deferred={};jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[5];promise[tuple[1]]=list.add;if(stateString){list.add(function(){state=stateString},tuples[3-i][2].disable,tuples[3-i][3].disable,tuples[0][2].lock,tuples[0][3].lock)}list.add(tuple[3].fire);deferred[tuple[0]]=function(){deferred[tuple[0]+"With"](this===deferred?undefined:this,arguments);return this};deferred[tuple[0]+"With"]=list.fireWith});promise.promise(deferred);if(func){func.call(deferred,deferred)}return deferred},when:function(singleValue){var remaining=arguments.length,i=remaining,resolveContexts=Array(i),resolveValues=slice.call(arguments),master=jQuery.Deferred(),updateFunc=function(i){return function(value){resolveContexts[i]=this;resolveValues[i]=arguments.length>1?slice.call(arguments):value;if(!--remaining){master.resolveWith(resolveContexts,resolveValues)}}};if(remaining<=1){adoptValue(singleValue,master.done(updateFunc(i)).resolve,master.reject,!remaining);if(master.state()==="pending"||isFunction(resolveValues[i]&&resolveValues[i].then)){return master.then()}}while(i--){adoptValue(resolveValues[i],updateFunc(i),master.reject)}return master.promise()}});var rerrorNames=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;jQuery.Deferred.exceptionHook=function(error,stack){if(window.console&&window.console.warn&&error&&rerrorNames.test(error.name)){window.console.warn("jQuery.Deferred exception: "+error.message,error.stack,stack)}};jQuery.readyException=function(error){window.setTimeout(function(){throw error})};var readyList=jQuery.Deferred();jQuery.fn.ready=function(fn){readyList.then(fn).catch(function(error){jQuery.readyException(error)});return this};jQuery.extend({isReady:false,readyWait:1,ready:function(wait){if(wait===true?--jQuery.readyWait:jQuery.isReady){return}jQuery.isReady=true;if(wait!==true&&--jQuery.readyWait>0){return}readyList.resolveWith(document,[jQuery])}});jQuery.ready.then=readyList.then;function completed(){document.removeEventListener("DOMContentLoaded",completed);window.removeEventListener("load",completed);jQuery.ready()}if(document.readyState==="complete"||document.readyState!=="loading"&&!document.documentElement.doScroll){window.setTimeout(jQuery.ready)}else{document.addEventListener("DOMContentLoaded",completed);window.addEventListener("load",completed)}var access=function(elems,fn,key,value,chainable,emptyGet,raw){var i=0,len=elems.length,bulk=key==null;if(toType(key)==="object"){chainable=true;for(i in key){access(elems,fn,i,key[i],true,emptyGet,raw)}}else if(value!==undefined){chainable=true;if(!isFunction(value)){raw=true}if(bulk){if(raw){fn.call(elems,value);fn=null}else{bulk=fn;fn=function(elem,key,value){return bulk.call(jQuery(elem),value)}}}if(fn){for(;i<len;i++){fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)))}}}if(chainable){return elems}if(bulk){return fn.call(elems)}return len?fn(elems[0],key):emptyGet};var rmsPrefix=/^-ms-/,rdashAlpha=/-([a-z])/g;function fcamelCase(all,letter){return letter.toUpperCase()}function camelCase(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase)}var acceptData=function(owner){return owner.nodeType===1||owner.nodeType===9||!+owner.nodeType};function Data(){this.expando=jQuery.expando+Data.uid++}Data.uid=1;Data.prototype={cache:function(owner){var value=owner[this.expando];if(!value){value={};if(acceptData(owner)){if(owner.nodeType){owner[this.expando]=value}else{Object.defineProperty(owner,this.expando,{value:value,configurable:true})}}}return value},set:function(owner,data,value){var prop,cache=this.cache(owner);if(typeof data==="string"){cache[camelCase(data)]=value}else{for(prop in data){cache[camelCase(prop)]=data[prop]}}return cache},get:function(owner,key){return key===undefined?this.cache(owner):owner[this.expando]&&owner[this.expando][camelCase(key)]},access:function(owner,key,value){if(key===undefined||key&&typeof key==="string"&&value===undefined){return this.get(owner,key)}this.set(owner,key,value);return value!==undefined?value:key},remove:function(owner,key){var i,cache=owner[this.expando];if(cache===undefined){return}if(key!==undefined){if(Array.isArray(key)){key=key.map(camelCase)}else{key=camelCase(key);key=key in cache?[key]:key.match(rnothtmlwhite)||[]}i=key.length;while(i--){delete cache[key[i]]}}if(key===undefined||jQuery.isEmptyObject(cache)){if(owner.nodeType){owner[this.expando]=undefined}else{delete owner[this.expando]}}},hasData:function(owner){var cache=owner[this.expando];return cache!==undefined&&!jQuery.isEmptyObject(cache)}};var dataPriv=new Data;var dataUser=new Data;var rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/[A-Z]/g;function getData(data){if(data==="true"){return true}if(data==="false"){return false}if(data==="null"){return null}if(data===+data+""){return+data}if(rbrace.test(data)){return JSON.parse(data)}return data}function dataAttr(elem,key,data){var name;if(data===undefined&&elem.nodeType===1){name="data-"+key.replace(rmultiDash,"-$&").toLowerCase();data=elem.getAttribute(name);if(typeof data==="string"){try{data=getData(data)}catch(e){}dataUser.set(elem,key,data)}else{data=undefined}}return data}jQuery.extend({hasData:function(elem){return dataUser.hasData(elem)||dataPriv.hasData(elem)},data:function(elem,name,data){return dataUser.access(elem,name,data)},removeData:function(elem,name){dataUser.remove(elem,name)},_data:function(elem,name,data){return dataPriv.access(elem,name,data)},_removeData:function(elem,name){dataPriv.remove(elem,name)}});jQuery.fn.extend({data:function(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;if(key===undefined){if(this.length){data=dataUser.get(elem);if(elem.nodeType===1&&!dataPriv.get(elem,"hasDataAttrs")){i=attrs.length;while(i--){if(attrs[i]){name=attrs[i].name;if(name.indexOf("data-")===0){name=camelCase(name.slice(5));dataAttr(elem,name,data[name])}}}dataPriv.set(elem,"hasDataAttrs",true)}}return data}if(typeof key==="object"){return this.each(function(){dataUser.set(this,key)})}return access(this,function(value){var data;if(elem&&value===undefined){data=dataUser.get(elem,key);if(data!==undefined){return data}data=dataAttr(elem,key);if(data!==undefined){return data}return}this.each(function(){dataUser.set(this,key,value)})},null,value,arguments.length>1,null,true)},removeData:function(key){return this.each(function(){dataUser.remove(this,key)})}});jQuery.extend({queue:function(elem,type,data){var queue;if(elem){type=(type||"fx")+"queue";queue=dataPriv.get(elem,type);if(data){if(!queue||Array.isArray(data)){queue=dataPriv.access(elem,type,jQuery.makeArray(data))}else{queue.push(data)}}return queue||[]}},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type),next=function(){jQuery.dequeue(elem,type)};if(fn==="inprogress"){fn=queue.shift();startLength--}if(fn){if(type==="fx"){queue.unshift("inprogress")}delete hooks.stop;fn.call(elem,next,hooks)}if(!startLength&&hooks){hooks.empty.fire()}},_queueHooks:function(elem,type){var key=type+"queueHooks";return dataPriv.get(elem,key)||dataPriv.access(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){dataPriv.remove(elem,[type+"queue",key])})})}});jQuery.fn.extend({queue:function(type,data){var setter=2;if(typeof type!=="string"){data=type;type="fx";setter--}if(arguments.length<setter){return jQuery.queue(this[0],type)}return data===undefined?this:this.each(function(){var queue=jQuery.queue(this,type,data);jQuery._queueHooks(this,type);if(type==="fx"&&queue[0]!=="inprogress"){jQuery.dequeue(this,type)}})},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type)})},clearQueue:function(type){return this.queue(type||"fx",[])},promise:function(type,obj){var tmp,count=1,defer=jQuery.Deferred(),elements=this,i=this.length,resolve=function(){if(!--count){defer.resolveWith(elements,[elements])}};if(typeof type!=="string"){obj=type;type=undefined}type=type||"fx";while(i--){tmp=dataPriv.get(elements[i],type+"queueHooks");if(tmp&&tmp.empty){count++;tmp.empty.add(resolve)}}resolve();return defer.promise(obj)}});var pnum=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;var rcssNum=new RegExp("^(?:([+-])=|)("+pnum+")([a-z%]*)$","i");var cssExpand=["Top","Right","Bottom","Left"];var isHiddenWithinTree=function(elem,el){elem=el||elem;return elem.style.display==="none"||elem.style.display===""&&jQuery.contains(elem.ownerDocument,elem)&&jQuery.css(elem,"display")==="none"};var swap=function(elem,options,callback,args){var ret,name,old={};for(name in options){old[name]=elem.style[name];elem.style[name]=options[name]}ret=callback.apply(elem,args||[]);for(name in options){elem.style[name]=old[name]}return ret};function adjustCSS(elem,prop,valueParts,tween){var adjusted,scale,maxIterations=20,currentValue=tween?function(){return tween.cur()}:function(){return jQuery.css(elem,prop,"")},initial=currentValue(),unit=valueParts&&valueParts[3]||(jQuery.cssNumber[prop]?"":"px"),initialInUnit=(jQuery.cssNumber[prop]||unit!=="px"&&+initial)&&rcssNum.exec(jQuery.css(elem,prop));if(initialInUnit&&initialInUnit[3]!==unit){initial=initial/2;unit=unit||initialInUnit[3];initialInUnit=+initial||1;while(maxIterations--){jQuery.style(elem,prop,initialInUnit+unit);if((1-scale)*(1-(scale=currentValue()/initial||.5))<=0){maxIterations=0}initialInUnit=initialInUnit/scale}initialInUnit=initialInUnit*2;jQuery.style(elem,prop,initialInUnit+unit);valueParts=valueParts||[]}if(valueParts){initialInUnit=+initialInUnit||+initial||0;adjusted=valueParts[1]?initialInUnit+(valueParts[1]+1)*valueParts[2]:+valueParts[2];if(tween){tween.unit=unit;tween.start=initialInUnit;tween.end=adjusted}}return adjusted}var defaultDisplayMap={};function getDefaultDisplay(elem){var temp,doc=elem.ownerDocument,nodeName=elem.nodeName,display=defaultDisplayMap[nodeName];if(display){return display}temp=doc.body.appendChild(doc.createElement(nodeName));display=jQuery.css(temp,"display");temp.parentNode.removeChild(temp);if(display==="none"){display="block"}defaultDisplayMap[nodeName]=display;return display}function showHide(elements,show){var display,elem,values=[],index=0,length=elements.length;for(;index<length;index++){elem=elements[index];if(!elem.style){continue}display=elem.style.display;if(show){if(display==="none"){values[index]=dataPriv.get(elem,"display")||null;if(!values[index]){elem.style.display=""}}if(elem.style.display===""&&isHiddenWithinTree(elem)){values[index]=getDefaultDisplay(elem)}}else{if(display!=="none"){values[index]="none";dataPriv.set(elem,"display",display)}}}for(index=0;index<length;index++){if(values[index]!=null){elements[index].style.display=values[index]}}return elements}jQuery.fn.extend({show:function(){return showHide(this,true)},hide:function(){return showHide(this)},toggle:function(state){if(typeof state==="boolean"){return state?this.show():this.hide()}return this.each(function(){if(isHiddenWithinTree(this)){jQuery(this).show()}else{jQuery(this).hide()}})}});var rcheckableType=/^(?:checkbox|radio)$/i;var rtagName=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i;var rscriptType=/^$|^module$|\/(?:java|ecma)script/i;var wrapMap={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};wrapMap.optgroup=wrapMap.option;wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead;wrapMap.th=wrapMap.td;function getAll(context,tag){var ret;if(typeof context.getElementsByTagName!=="undefined"){ret=context.getElementsByTagName(tag||"*")}else if(typeof context.querySelectorAll!=="undefined"){ret=context.querySelectorAll(tag||"*")}else{ret=[]}if(tag===undefined||tag&&nodeName(context,tag)){return jQuery.merge([context],ret)}return ret}function setGlobalEval(elems,refElements){var i=0,l=elems.length;for(;i<l;i++){dataPriv.set(elems[i],"globalEval",!refElements||dataPriv.get(refElements[i],"globalEval"))}}var rhtml=/<|&#?\w+;/;function buildFragment(elems,context,scripts,selection,ignored){var elem,tmp,tag,wrap,contains,j,fragment=context.createDocumentFragment(),nodes=[],i=0,l=elems.length;for(;i<l;i++){elem=elems[i];if(elem||elem===0){if(toType(elem)==="object"){jQuery.merge(nodes,elem.nodeType?[elem]:elem)}else if(!rhtml.test(elem)){nodes.push(context.createTextNode(elem))}else{tmp=tmp||fragment.appendChild(context.createElement("div"));tag=(rtagName.exec(elem)||["",""])[1].toLowerCase();wrap=wrapMap[tag]||wrapMap._default;tmp.innerHTML=wrap[1]+jQuery.htmlPrefilter(elem)+wrap[2];j=wrap[0];while(j--){tmp=tmp.lastChild}jQuery.merge(nodes,tmp.childNodes);tmp=fragment.firstChild;tmp.textContent=""}}}fragment.textContent="";i=0;while(elem=nodes[i++]){if(selection&&jQuery.inArray(elem,selection)>-1){if(ignored){ignored.push(elem)}continue}contains=jQuery.contains(elem.ownerDocument,elem);tmp=getAll(fragment.appendChild(elem),"script");if(contains){setGlobalEval(tmp)}if(scripts){j=0;while(elem=tmp[j++]){if(rscriptType.test(elem.type||"")){scripts.push(elem)}}}}return fragment}(function(){var fragment=document.createDocumentFragment(),div=fragment.appendChild(document.createElement("div")),input=document.createElement("input");input.setAttribute("type","radio");input.setAttribute("checked","checked");input.setAttribute("name","t");div.appendChild(input);support.checkClone=div.cloneNode(true).cloneNode(true).lastChild.checked;div.innerHTML="<textarea>x</textarea>";support.noCloneChecked=!!div.cloneNode(true).lastChild.defaultValue})();var documentElement=document.documentElement;var rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,rtypenamespace=/^([^.]*)(?:\.(.+)|)/;function returnTrue(){return true}function returnFalse(){return false}function safeActiveElement(){try{return document.activeElement}catch(err){}}function on(elem,types,selector,data,fn,one){var origFn,type;if(typeof types==="object"){if(typeof selector!=="string"){data=data||selector;selector=undefined}for(type in types){on(elem,type,selector,data,types[type],one)}return elem}if(data==null&&fn==null){fn=selector;data=selector=undefined}else if(fn==null){if(typeof selector==="string"){fn=data;data=undefined}else{fn=data;data=selector;selector=undefined}}if(fn===false){fn=returnFalse}else if(!fn){return elem}if(one===1){origFn=fn;fn=function(event){jQuery().off(event);return origFn.apply(this,arguments)};fn.guid=origFn.guid||(origFn.guid=jQuery.guid++)}return elem.each(function(){jQuery.event.add(this,types,fn,data,selector)})}jQuery.event={global:{},add:function(elem,types,handler,data,selector){var handleObjIn,eventHandle,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.get(elem);if(!elemData){return}if(handler.handler){handleObjIn=handler;handler=handleObjIn.handler;selector=handleObjIn.selector}if(selector){jQuery.find.matchesSelector(documentElement,selector)}if(!handler.guid){handler.guid=jQuery.guid++}if(!(events=elemData.events)){events=elemData.events={}}if(!(eventHandle=elemData.handle)){eventHandle=elemData.handle=function(e){return typeof jQuery!=="undefined"&&jQuery.event.triggered!==e.type?jQuery.event.dispatch.apply(elem,arguments):undefined}}types=(types||"").match(rnothtmlwhite)||[""];t=types.length;while(t--){tmp=rtypenamespace.exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||"").split(".").sort();if(!type){continue}special=jQuery.event.special[type]||{}
+;type=(selector?special.delegateType:special.bindType)||type;special=jQuery.event.special[type]||{};handleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(".")},handleObjIn);if(!(handlers=events[type])){handlers=events[type]=[];handlers.delegateCount=0;if(!special.setup||special.setup.call(elem,data,namespaces,eventHandle)===false){if(elem.addEventListener){elem.addEventListener(type,eventHandle)}}}if(special.add){special.add.call(elem,handleObj);if(!handleObj.handler.guid){handleObj.handler.guid=handler.guid}}if(selector){handlers.splice(handlers.delegateCount++,0,handleObj)}else{handlers.push(handleObj)}jQuery.event.global[type]=true}},remove:function(elem,types,handler,selector,mappedTypes){var j,origCount,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.hasData(elem)&&dataPriv.get(elem);if(!elemData||!(events=elemData.events)){return}types=(types||"").match(rnothtmlwhite)||[""];t=types.length;while(t--){tmp=rtypenamespace.exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||"").split(".").sort();if(!type){for(type in events){jQuery.event.remove(elem,type+types[t],handler,selector,true)}continue}special=jQuery.event.special[type]||{};type=(selector?special.delegateType:special.bindType)||type;handlers=events[type]||[];tmp=tmp[2]&&new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)");origCount=j=handlers.length;while(j--){handleObj=handlers[j];if((mappedTypes||origType===handleObj.origType)&&(!handler||handler.guid===handleObj.guid)&&(!tmp||tmp.test(handleObj.namespace))&&(!selector||selector===handleObj.selector||selector==="**"&&handleObj.selector)){handlers.splice(j,1);if(handleObj.selector){handlers.delegateCount--}if(special.remove){special.remove.call(elem,handleObj)}}}if(origCount&&!handlers.length){if(!special.teardown||special.teardown.call(elem,namespaces,elemData.handle)===false){jQuery.removeEvent(elem,type,elemData.handle)}delete events[type]}}if(jQuery.isEmptyObject(events)){dataPriv.remove(elem,"handle events")}},dispatch:function(nativeEvent){var event=jQuery.event.fix(nativeEvent);var i,j,ret,matched,handleObj,handlerQueue,args=new Array(arguments.length),handlers=(dataPriv.get(this,"events")||{})[event.type]||[],special=jQuery.event.special[event.type]||{};args[0]=event;for(i=1;i<arguments.length;i++){args[i]=arguments[i]}event.delegateTarget=this;if(special.preDispatch&&special.preDispatch.call(this,event)===false){return}handlerQueue=jQuery.event.handlers.call(this,event,handlers);i=0;while((matched=handlerQueue[i++])&&!event.isPropagationStopped()){event.currentTarget=matched.elem;j=0;while((handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped()){if(!event.rnamespace||event.rnamespace.test(handleObj.namespace)){event.handleObj=handleObj;event.data=handleObj.data;ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args);if(ret!==undefined){if((event.result=ret)===false){event.preventDefault();event.stopPropagation()}}}}}if(special.postDispatch){special.postDispatch.call(this,event)}return event.result},handlers:function(event,handlers){var i,handleObj,sel,matchedHandlers,matchedSelectors,handlerQueue=[],delegateCount=handlers.delegateCount,cur=event.target;if(delegateCount&&cur.nodeType&&!(event.type==="click"&&event.button>=1)){for(;cur!==this;cur=cur.parentNode||this){if(cur.nodeType===1&&!(event.type==="click"&&cur.disabled===true)){matchedHandlers=[];matchedSelectors={};for(i=0;i<delegateCount;i++){handleObj=handlers[i];sel=handleObj.selector+" ";if(matchedSelectors[sel]===undefined){matchedSelectors[sel]=handleObj.needsContext?jQuery(sel,this).index(cur)>-1:jQuery.find(sel,this,null,[cur]).length}if(matchedSelectors[sel]){matchedHandlers.push(handleObj)}}if(matchedHandlers.length){handlerQueue.push({elem:cur,handlers:matchedHandlers})}}}}cur=this;if(delegateCount<handlers.length){handlerQueue.push({elem:cur,handlers:handlers.slice(delegateCount)})}return handlerQueue},addProp:function(name,hook){Object.defineProperty(jQuery.Event.prototype,name,{enumerable:true,configurable:true,get:isFunction(hook)?function(){if(this.originalEvent){return hook(this.originalEvent)}}:function(){if(this.originalEvent){return this.originalEvent[name]}},set:function(value){Object.defineProperty(this,name,{enumerable:true,configurable:true,writable:true,value:value})}})},fix:function(originalEvent){return originalEvent[jQuery.expando]?originalEvent:new jQuery.Event(originalEvent)},special:{load:{noBubble:true},focus:{trigger:function(){if(this!==safeActiveElement()&&this.focus){this.focus();return false}},delegateType:"focusin"},blur:{trigger:function(){if(this===safeActiveElement()&&this.blur){this.blur();return false}},delegateType:"focusout"},click:{trigger:function(){if(this.type==="checkbox"&&this.click&&nodeName(this,"input")){this.click();return false}},_default:function(event){return nodeName(event.target,"a")}},beforeunload:{postDispatch:function(event){if(event.result!==undefined&&event.originalEvent){event.originalEvent.returnValue=event.result}}}}};jQuery.removeEvent=function(elem,type,handle){if(elem.removeEventListener){elem.removeEventListener(type,handle)}};jQuery.Event=function(src,props){if(!(this instanceof jQuery.Event)){return new jQuery.Event(src,props)}if(src&&src.type){this.originalEvent=src;this.type=src.type;this.isDefaultPrevented=src.defaultPrevented||src.defaultPrevented===undefined&&src.returnValue===false?returnTrue:returnFalse;this.target=src.target&&src.target.nodeType===3?src.target.parentNode:src.target;this.currentTarget=src.currentTarget;this.relatedTarget=src.relatedTarget}else{this.type=src}if(props){jQuery.extend(this,props)}this.timeStamp=src&&src.timeStamp||Date.now();this[jQuery.expando]=true};jQuery.Event.prototype={constructor:jQuery.Event,isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse,isSimulated:false,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=returnTrue;if(e&&!this.isSimulated){e.preventDefault()}},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=returnTrue;if(e&&!this.isSimulated){e.stopPropagation()}},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=returnTrue;if(e&&!this.isSimulated){e.stopImmediatePropagation()}this.stopPropagation()}};jQuery.each({altKey:true,bubbles:true,cancelable:true,changedTouches:true,ctrlKey:true,detail:true,eventPhase:true,metaKey:true,pageX:true,pageY:true,shiftKey:true,view:true,char:true,charCode:true,key:true,keyCode:true,button:true,buttons:true,clientX:true,clientY:true,offsetX:true,offsetY:true,pointerId:true,pointerType:true,screenX:true,screenY:true,targetTouches:true,toElement:true,touches:true,which:function(event){var button=event.button;if(event.which==null&&rkeyEvent.test(event.type)){return event.charCode!=null?event.charCode:event.keyCode}if(!event.which&&button!==undefined&&rmouseEvent.test(event.type)){if(button&1){return 1}if(button&2){return 3}if(button&4){return 2}return 0}return event.which}},jQuery.event.addProp);jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(orig,fix){jQuery.event.special[orig]={delegateType:fix,bindType:fix,handle:function(event){var ret,target=this,related=event.relatedTarget,handleObj=event.handleObj;if(!related||related!==target&&!jQuery.contains(target,related)){event.type=handleObj.origType;ret=handleObj.handler.apply(this,arguments);event.type=fix}return ret}}});jQuery.fn.extend({on:function(types,selector,data,fn){return on(this,types,selector,data,fn)},one:function(types,selector,data,fn){return on(this,types,selector,data,fn,1)},off:function(types,selector,fn){var handleObj,type;if(types&&types.preventDefault&&types.handleObj){handleObj=types.handleObj;jQuery(types.delegateTarget).off(handleObj.namespace?handleObj.origType+"."+handleObj.namespace:handleObj.origType,handleObj.selector,handleObj.handler);return this}if(typeof types==="object"){for(type in types){this.off(type,selector,types[type])}return this}if(selector===false||typeof selector==="function"){fn=selector;selector=undefined}if(fn===false){fn=returnFalse}return this.each(function(){jQuery.event.remove(this,types,fn,selector)})}});var rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,rnoInnerhtml=/<script|<style|<link/i,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,rcleanScript=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function manipulationTarget(elem,content){if(nodeName(elem,"table")&&nodeName(content.nodeType!==11?content:content.firstChild,"tr")){return jQuery(elem).children("tbody")[0]||elem}return elem}function disableScript(elem){elem.type=(elem.getAttribute("type")!==null)+"/"+elem.type;return elem}function restoreScript(elem){if((elem.type||"").slice(0,5)==="true/"){elem.type=elem.type.slice(5)}else{elem.removeAttribute("type")}return elem}function cloneCopyEvent(src,dest){var i,l,type,pdataOld,pdataCur,udataOld,udataCur,events;if(dest.nodeType!==1){return}if(dataPriv.hasData(src)){pdataOld=dataPriv.access(src);pdataCur=dataPriv.set(dest,pdataOld);events=pdataOld.events;if(events){delete pdataCur.handle;pdataCur.events={};for(type in events){for(i=0,l=events[type].length;i<l;i++){jQuery.event.add(dest,type,events[type][i])}}}}if(dataUser.hasData(src)){udataOld=dataUser.access(src);udataCur=jQuery.extend({},udataOld);dataUser.set(dest,udataCur)}}function fixInput(src,dest){var nodeName=dest.nodeName.toLowerCase();if(nodeName==="input"&&rcheckableType.test(src.type)){dest.checked=src.checked}else if(nodeName==="input"||nodeName==="textarea"){dest.defaultValue=src.defaultValue}}function domManip(collection,args,callback,ignored){args=concat.apply([],args);var fragment,first,scripts,hasScripts,node,doc,i=0,l=collection.length,iNoClone=l-1,value=args[0],valueIsFunction=isFunction(value);if(valueIsFunction||l>1&&typeof value==="string"&&!support.checkClone&&rchecked.test(value)){return collection.each(function(index){var self=collection.eq(index);if(valueIsFunction){args[0]=value.call(this,index,self.html())}domManip(self,args,callback,ignored)})}if(l){fragment=buildFragment(args,collection[0].ownerDocument,false,collection,ignored);first=fragment.firstChild;if(fragment.childNodes.length===1){fragment=first}if(first||ignored){scripts=jQuery.map(getAll(fragment,"script"),disableScript);hasScripts=scripts.length;for(;i<l;i++){node=fragment;if(i!==iNoClone){node=jQuery.clone(node,true,true);if(hasScripts){jQuery.merge(scripts,getAll(node,"script"))}}callback.call(collection[i],node,i)}if(hasScripts){doc=scripts[scripts.length-1].ownerDocument;jQuery.map(scripts,restoreScript);for(i=0;i<hasScripts;i++){node=scripts[i];if(rscriptType.test(node.type||"")&&!dataPriv.access(node,"globalEval")&&jQuery.contains(doc,node)){if(node.src&&(node.type||"").toLowerCase()!=="module"){if(jQuery._evalUrl){jQuery._evalUrl(node.src)}}else{DOMEval(node.textContent.replace(rcleanScript,""),doc,node)}}}}}}return collection}function remove(elem,selector,keepData){var node,nodes=selector?jQuery.filter(selector,elem):elem,i=0;for(;(node=nodes[i])!=null;i++){if(!keepData&&node.nodeType===1){jQuery.cleanData(getAll(node))}if(node.parentNode){if(keepData&&jQuery.contains(node.ownerDocument,node)){setGlobalEval(getAll(node,"script"))}node.parentNode.removeChild(node)}}return elem}jQuery.extend({htmlPrefilter:function(html){return html.replace(rxhtmlTag,"<$1></$2>")},clone:function(elem,dataAndEvents,deepDataAndEvents){var i,l,srcElements,destElements,clone=elem.cloneNode(true),inPage=jQuery.contains(elem.ownerDocument,elem);if(!support.noCloneChecked&&(elem.nodeType===1||elem.nodeType===11)&&!jQuery.isXMLDoc(elem)){destElements=getAll(clone);srcElements=getAll(elem);for(i=0,l=srcElements.length;i<l;i++){fixInput(srcElements[i],destElements[i])}}if(dataAndEvents){if(deepDataAndEvents){srcElements=srcElements||getAll(elem);destElements=destElements||getAll(clone);for(i=0,l=srcElements.length;i<l;i++){cloneCopyEvent(srcElements[i],destElements[i])}}else{cloneCopyEvent(elem,clone)}}destElements=getAll(clone,"script");if(destElements.length>0){setGlobalEval(destElements,!inPage&&getAll(elem,"script"))}return clone},cleanData:function(elems){var data,elem,type,special=jQuery.event.special,i=0;for(;(elem=elems[i])!==undefined;i++){if(acceptData(elem)){if(data=elem[dataPriv.expando]){if(data.events){for(type in data.events){if(special[type]){jQuery.event.remove(elem,type)}else{jQuery.removeEvent(elem,type,data.handle)}}}elem[dataPriv.expando]=undefined}if(elem[dataUser.expando]){elem[dataUser.expando]=undefined}}}}});jQuery.fn.extend({detach:function(selector){return remove(this,selector,true)},remove:function(selector){return remove(this,selector)},text:function(value){return access(this,function(value){return value===undefined?jQuery.text(this):this.empty().each(function(){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){this.textContent=value}})},null,value,arguments.length)},append:function(){return domManip(this,arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.appendChild(elem)}})},prepend:function(){return domManip(this,arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild)}})},before:function(){return domManip(this,arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this)}})},after:function(){return domManip(this,arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this.nextSibling)}})},empty:function(){var elem,i=0;for(;(elem=this[i])!=null;i++){if(elem.nodeType===1){jQuery.cleanData(getAll(elem,false));elem.textContent=""}}return this},clone:function(dataAndEvents,deepDataAndEvents){dataAndEvents=dataAndEvents==null?false:dataAndEvents;deepDataAndEvents=deepDataAndEvents==null?dataAndEvents:deepDataAndEvents;return this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents)})},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(value===undefined&&elem.nodeType===1){return elem.innerHTML}if(typeof value==="string"&&!rnoInnerhtml.test(value)&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;i<l;i++){elem=this[i]||{};if(elem.nodeType===1){jQuery.cleanData(getAll(elem,false));elem.innerHTML=value}}elem=0}catch(e){}}if(elem){this.empty().append(value)}},null,value,arguments.length)},replaceWith:function(){var ignored=[];return domManip(this,arguments,function(elem){var parent=this.parentNode;if(jQuery.inArray(this,ignored)<0){jQuery.cleanData(getAll(this));if(parent){parent.replaceChild(elem,this)}}},ignored)}});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){var elems,ret=[],insert=jQuery(selector),last=insert.length-1,i=0;for(;i<=last;i++){elems=i===last?this:this.clone(true);jQuery(insert[i])[original](elems);push.apply(ret,elems.get())}return this.pushStack(ret)}});var rnumnonpx=new RegExp("^("+pnum+")(?!px)[a-z%]+$","i");var getStyles=function(elem){var view=elem.ownerDocument.defaultView;if(!view||!view.opener){view=window}return view.getComputedStyle(elem)};var rboxStyle=new RegExp(cssExpand.join("|"),"i");(function(){function computeStyleTests(){if(!div){return}container.style.cssText="position:absolute;left:-11111px;width:60px;"+"margin-top:1px;padding:0;border:0";div.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;"+"margin:auto;border:1px;padding:1px;"+"width:60%;top:1%";documentElement.appendChild(container).appendChild(div);var divStyle=window.getComputedStyle(div);pixelPositionVal=divStyle.top!=="1%";reliableMarginLeftVal=roundPixelMeasures(divStyle.marginLeft)===12;div.style.right="60%";pixelBoxStylesVal=roundPixelMeasures(divStyle.right)===36;boxSizingReliableVal=roundPixelMeasures(divStyle.width)===36;div.style.position="absolute";scrollboxSizeVal=div.offsetWidth===36||"absolute";documentElement.removeChild(container);div=null}function roundPixelMeasures(measure){return Math.round(parseFloat(measure))}var pixelPositionVal,boxSizingReliableVal,scrollboxSizeVal,pixelBoxStylesVal,reliableMarginLeftVal,container=document.createElement("div"),div=document.createElement("div");if(!div.style){return}div.style.backgroundClip="content-box";div.cloneNode(true).style.backgroundClip="";support.clearCloneStyle=div.style.backgroundClip==="content-box";jQuery.extend(support,{boxSizingReliable:function(){computeStyleTests();return boxSizingReliableVal},pixelBoxStyles:function(){computeStyleTests();return pixelBoxStylesVal},pixelPosition:function(){computeStyleTests();return pixelPositionVal},reliableMarginLeft:function(){computeStyleTests();return reliableMarginLeftVal},scrollboxSize:function(){computeStyleTests();return scrollboxSizeVal}})})();function curCSS(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;computed=computed||getStyles(elem);if(computed){ret=computed.getPropertyValue(name)||computed[name];if(ret===""&&!jQuery.contains(elem.ownerDocument,elem)){ret=jQuery.style(elem,name)}if(!support.pixelBoxStyles()&&rnumnonpx.test(ret)&&rboxStyle.test(name)){width=style.width;minWidth=style.minWidth;maxWidth=style.maxWidth;style.minWidth=style.maxWidth=style.width=ret;ret=computed.width;style.width=width;style.minWidth=minWidth;style.maxWidth=maxWidth}}return ret!==undefined?ret+"":ret}function addGetHookIf(conditionFn,hookFn){return{get:function(){if(conditionFn()){delete this.get;return}return(this.get=hookFn).apply(this,arguments)}}}var rdisplayswap=/^(none|table(?!-c[ea]).+)/,rcustomProp=/^--/,cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"},cssPrefixes=["Webkit","Moz","ms"],emptyStyle=document.createElement("div").style;function vendorPropName(name){if(name in emptyStyle){return name}var capName=name[0].toUpperCase()+name.slice(1),i=cssPrefixes.length;while(i--){name=cssPrefixes[i]+capName;if(name in emptyStyle){return name}}}function finalPropName(name){var ret=jQuery.cssProps[name];if(!ret){ret=jQuery.cssProps[name]=vendorPropName(name)||name}return ret}function setPositiveNumber(elem,value,subtract){var matches=rcssNum.exec(value);return matches?Math.max(0,matches[2]-(subtract||0))+(matches[3]||"px"):value}function boxModelAdjustment(elem,dimension,box,isBorderBox,styles,computedVal){var i=dimension==="width"?1:0,extra=0,delta=0;if(box===(isBorderBox?"border":"content")){return 0}for(;i<4;i+=2){if(box==="margin"){delta+=jQuery.css(elem,box+cssExpand[i],true,styles)}if(!isBorderBox){delta+=jQuery.css(elem,"padding"+cssExpand[i],true,styles);if(box!=="padding"){delta+=jQuery.css(elem,"border"+cssExpand[i]+"Width",true,styles)}else{extra+=jQuery.css(elem,"border"+cssExpand[i]+"Width",true,styles)}}else{if(box==="content"){delta-=jQuery.css(elem,"padding"+cssExpand[i],true,styles)}if(box!=="margin"){delta-=jQuery.css(elem,"border"+cssExpand[i]+"Width",true,styles)}}}if(!isBorderBox&&computedVal>=0){delta+=Math.max(0,Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-computedVal-delta-extra-.5))}return delta}function getWidthOrHeight(elem,dimension,extra){var styles=getStyles(elem),val=curCSS(elem,dimension,styles),isBorderBox=jQuery.css(elem,"boxSizing",false,styles)==="border-box",valueIsBorderBox=isBorderBox;if(rnumnonpx.test(val)){if(!extra){return val}val="auto"}valueIsBorderBox=valueIsBorderBox&&(support.boxSizingReliable()||val===elem.style[dimension]);if(val==="auto"||!parseFloat(val)&&jQuery.css(elem,"display",false,styles)==="inline"){val=elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)];valueIsBorderBox=true}val=parseFloat(val)||0;return val+boxModelAdjustment(elem,dimension,extra||(isBorderBox?"border":"content"),valueIsBorderBox,styles,val)+"px"}jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return ret===""?"1":ret}}}},cssNumber:{animationIterationCount:true,columnCount:true,fillOpacity:true,flexGrow:true,flexShrink:true,fontWeight:true,lineHeight:true,opacity:true,order:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{},style:function(elem,name,value,extra){if(!elem||elem.nodeType===3||elem.nodeType===8||!elem.style){return}var ret,type,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name),style=elem.style;if(!isCustomProp){name=finalPropName(origName)}hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];if(value!==undefined){type=typeof value;if(type==="string"&&(ret=rcssNum.exec(value))&&ret[1]){value=adjustCSS(elem,name,ret);type="number"}if(value==null||value!==value){return}if(type==="number"){value+=ret&&ret[3]||(jQuery.cssNumber[origName]?"":"px")}if(!support.clearCloneStyle&&value===""&&name.indexOf("background")===0){style[name]="inherit"}if(!hooks||!("set"in hooks)||(value=hooks.set(elem,value,extra))!==undefined){if(isCustomProp){style.setProperty(name,value)}else{style[name]=value}}}else{if(hooks&&"get"in hooks&&(ret=hooks.get(elem,false,extra))!==undefined){return ret}return style[name]}},css:function(elem,name,extra,styles){var val,num,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name);if(!isCustomProp){name=finalPropName(origName)}hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];if(hooks&&"get"in hooks){val=hooks.get(elem,true,extra)}if(val===undefined){val=curCSS(elem,name,styles)}if(val==="normal"&&name in cssNormalTransform){val=cssNormalTransform[name]}if(extra===""||extra){num=parseFloat(val);return extra===true||isFinite(num)?num||0:val}return val}});jQuery.each(["height","width"],function(i,dimension){jQuery.cssHooks[dimension]={get:function(elem,computed,extra){if(computed){return rdisplayswap.test(jQuery.css(elem,"display"))&&(!elem.getClientRects().length||!elem.getBoundingClientRect().width)?swap(elem,cssShow,function(){return getWidthOrHeight(elem,dimension,extra)}):getWidthOrHeight(elem,dimension,extra)}},set:function(elem,value,extra){var matches,styles=getStyles(elem),isBorderBox=jQuery.css(elem,"boxSizing",false,styles)==="border-box",subtract=extra&&boxModelAdjustment(elem,dimension,extra,isBorderBox,styles);if(isBorderBox&&support.scrollboxSize()===styles.position){subtract-=Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-parseFloat(styles[dimension])-boxModelAdjustment(elem,dimension,"border",false,styles)-.5)}if(subtract&&(matches=rcssNum.exec(value))&&(matches[3]||"px")!=="px"){elem.style[dimension]=value;value=jQuery.css(elem,dimension)}return setPositiveNumber(elem,value,subtract)}}});jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed){return(parseFloat(curCSS(elem,"marginLeft"))||elem.getBoundingClientRect().left-swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left}))+"px"}});jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){var i=0,expanded={},parts=typeof value==="string"?value.split(" "):[value];for(;i<4;i++){expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0]}return expanded}};if(prefix!=="margin"){jQuery.cssHooks[prefix+suffix].set=setPositiveNumber}});jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(Array.isArray(name)){styles=getStyles(elem);len=name.length;for(;i<len;i++){map[name[i]]=jQuery.css(elem,name[i],false,styles)}return map}return value!==undefined?jQuery.style(elem,name,value):jQuery.css(elem,name)},name,value,arguments.length>1)}});function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing)}jQuery.Tween=Tween;Tween.prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem;this.prop=prop;this.easing=easing||jQuery.easing._default;this.options=options;this.start=this.now=this.cur();this.end=end;this.unit=unit||(jQuery.cssNumber[prop]?"":"px")},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this)},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];if(this.options.duration){this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration)}else{this.pos=eased=percent}this.now=(this.end-this.start)*eased+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this)}if(hooks&&hooks.set){hooks.set(this)}else{Tween.propHooks._default.set(this)}return this}};Tween.prototype.init.prototype=Tween.prototype;Tween.propHooks={_default:{get:function(tween){var result;if(tween.elem.nodeType!==1||tween.elem[tween.prop]!=null&&tween.elem.style[tween.prop]==null){return tween.elem[tween.prop]}result=jQuery.css(tween.elem,tween.prop,"");return!result||result==="auto"?0:result},set:function(tween){if(jQuery.fx.step[tween.prop]){jQuery.fx.step[tween.prop](tween)}else if(tween.elem.nodeType===1&&(tween.elem.style[jQuery.cssProps[tween.prop]]!=null||jQuery.cssHooks[tween.prop])){jQuery.style(tween.elem,tween.prop,tween.now+tween.unit)}else{tween.elem[tween.prop]=tween.now}}}};Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(tween){if(tween.elem.nodeType&&tween.elem.parentNode){tween.elem[tween.prop]=tween.now}}};jQuery.easing={linear:function(p){return p},swing:function(p){return.5-Math.cos(p*Math.PI)/2},_default:"swing"};jQuery.fx=Tween.prototype.init;jQuery.fx.step={};var fxNow,inProgress,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;function schedule(){if(inProgress){if(document.hidden===false&&window.requestAnimationFrame){window.requestAnimationFrame(schedule)}else{window.setTimeout(schedule,jQuery.fx.interval)}jQuery.fx.tick()}}function createFxNow(){window.setTimeout(function(){fxNow=undefined});return fxNow=Date.now()}function genFx(type,includeWidth){var which,i=0,attrs={height:type};includeWidth=includeWidth?1:0;for(;i<4;i+=2-includeWidth){which=cssExpand[i];attrs["margin"+which]=attrs["padding"+which]=type}if(includeWidth){attrs.opacity=attrs.width=type}return attrs}function createTween(value,prop,animation){var tween,collection=(Animation.tweeners[prop]||[]).concat(Animation.tweeners["*"]),index=0,length=collection.length;for(;index<length;index++){if(tween=collection[index].call(animation,prop,value)){return tween}}}function defaultPrefilter(elem,props,opts){var prop,value,toggle,hooks,oldfire,propTween,restoreDisplay,display,isBox="width"in props||"height"in props,anim=this,orig={},style=elem.style,hidden=elem.nodeType&&isHiddenWithinTree(elem),dataShow=dataPriv.get(elem,"fxshow");if(!opts.queue){hooks=jQuery._queueHooks(elem,"fx");if(hooks.unqueued==null){hooks.unqueued=0;oldfire=hooks.empty.fire;hooks.empty.fire=function(){if(!hooks.unqueued){oldfire()}}}hooks.unqueued++;anim.always(function(){anim.always(function(){hooks.unqueued--;if(!jQuery.queue(elem,"fx").length){hooks.empty.fire()}})})}for(prop in props){value=props[prop];if(rfxtypes.test(value)){delete props[prop];toggle=toggle||value==="toggle";if(value===(hidden?"hide":"show")){if(value==="show"&&dataShow&&dataShow[prop]!==undefined){hidden=true}else{continue}}orig[prop]=dataShow&&dataShow[prop]||jQuery.style(elem,prop)}}propTween=!jQuery.isEmptyObject(props);if(!propTween&&jQuery.isEmptyObject(orig)){return}if(isBox&&elem.nodeType===1){opts.overflow=[style.overflow,style.overflowX,style.overflowY];restoreDisplay=dataShow&&dataShow.display;if(restoreDisplay==null){restoreDisplay=dataPriv.get(elem,"display")}display=jQuery.css(elem,"display");if(display==="none"){if(restoreDisplay){display=restoreDisplay}else{showHide([elem],true);restoreDisplay=elem.style.display||restoreDisplay;display=jQuery.css(elem,"display");showHide([elem])}}if(display==="inline"||display==="inline-block"&&restoreDisplay!=null){if(jQuery.css(elem,"float")==="none"){if(!propTween){anim.done(function(){style.display=restoreDisplay});if(restoreDisplay==null){display=style.display;restoreDisplay=display==="none"?"":display}}style.display="inline-block"}}}if(opts.overflow){style.overflow="hidden";anim.always(function(){style.overflow=opts.overflow[0];style.overflowX=opts.overflow[1];style.overflowY=opts.overflow[2]})}propTween=false;for(prop in orig){if(!propTween){if(dataShow){if("hidden"in dataShow){hidden=dataShow.hidden}}else{dataShow=dataPriv.access(elem,"fxshow",{display:restoreDisplay})}if(toggle){dataShow.hidden=!hidden}if(hidden){showHide([elem],true)}anim.done(function(){if(!hidden){showHide([elem])}dataPriv.remove(elem,"fxshow");for(prop in orig){jQuery.style(elem,prop,orig[prop])}})}propTween=createTween(hidden?dataShow[prop]:0,prop,anim);if(!(prop in dataShow)){dataShow[prop]=propTween.start;if(hidden){propTween.end=propTween.start;propTween.start=0}}}}function propFilter(props,specialEasing){var index,name,easing,value,hooks;for(index in props){name=camelCase(index);easing=specialEasing[name];value=props[index];if(Array.isArray(value)){easing=value[1];value=props[index]=value[0]}if(index!==name){props[name]=value;delete props[index]}hooks=jQuery.cssHooks[name];if(hooks&&"expand"in hooks){value=hooks.expand(value);delete props[name];for(index in value){if(!(index in props)){props[index]=value[index];specialEasing[index]=easing}}}else{specialEasing[name]=easing}}}function Animation(elem,properties,options){var result,stopped,index=0,length=Animation.prefilters.length,deferred=jQuery.Deferred().always(function(){delete tick.elem}),tick=function(){if(stopped){return false}var currentTime=fxNow||createFxNow(),remaining=Math.max(0,animation.startTime+animation.duration-currentTime),temp=remaining/animation.duration||0,percent=1-temp,index=0,length=animation.tweens.length;for(;index<length;index++){animation.tweens[index].run(percent)}deferred.notifyWith(elem,[animation,percent,remaining]);if(percent<1&&length){return remaining}if(!length){deferred.notifyWith(elem,[animation,1,0])}deferred.resolveWith(elem,[animation]);return false},animation=deferred.promise({elem:elem,props:jQuery.extend({},properties),opts:jQuery.extend(true,{specialEasing:{},easing:jQuery.easing._default},options),originalProperties:properties,originalOptions:options,startTime:fxNow||createFxNow(),duration:options.duration,tweens:[],createTween:function(prop,end){var tween=jQuery.Tween(elem,animation.opts,prop,end,animation.opts.specialEasing[prop]||animation.opts.easing);animation.tweens.push(tween);return tween},stop:function(gotoEnd){var index=0,length=gotoEnd?animation.tweens.length:0;if(stopped){return this}stopped=true;for(;index<length;index++){animation.tweens[index].run(1)}if(gotoEnd){deferred.notifyWith(elem,[animation,1,0]);deferred.resolveWith(elem,[animation,gotoEnd])}else{deferred.rejectWith(elem,[animation,gotoEnd])}return this}}),props=animation.props;propFilter(props,animation.opts.specialEasing);for(;index<length;index++){result=Animation.prefilters[index].call(animation,elem,props,animation.opts);if(result){if(isFunction(result.stop)){jQuery._queueHooks(animation.elem,animation.opts.queue).stop=result.stop.bind(result)}return result}}jQuery.map(props,createTween,animation);if(isFunction(animation.opts.start)){animation.opts.start.call(elem,animation)}animation.progress(animation.opts.progress).done(animation.opts.done,animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);jQuery.fx.timer(jQuery.extend(tick,{elem:elem,anim:animation,queue:animation.opts.queue}))
+;return animation}jQuery.Animation=jQuery.extend(Animation,{tweeners:{"*":[function(prop,value){var tween=this.createTween(prop,value);adjustCSS(tween.elem,prop,rcssNum.exec(value),tween);return tween}]},tweener:function(props,callback){if(isFunction(props)){callback=props;props=["*"]}else{props=props.match(rnothtmlwhite)}var prop,index=0,length=props.length;for(;index<length;index++){prop=props[index];Animation.tweeners[prop]=Animation.tweeners[prop]||[];Animation.tweeners[prop].unshift(callback)}},prefilters:[defaultPrefilter],prefilter:function(callback,prepend){if(prepend){Animation.prefilters.unshift(callback)}else{Animation.prefilters.push(callback)}}});jQuery.speed=function(speed,easing,fn){var opt=speed&&typeof speed==="object"?jQuery.extend({},speed):{complete:fn||!fn&&easing||isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!isFunction(easing)&&easing};if(jQuery.fx.off){opt.duration=0}else{if(typeof opt.duration!=="number"){if(opt.duration in jQuery.fx.speeds){opt.duration=jQuery.fx.speeds[opt.duration]}else{opt.duration=jQuery.fx.speeds._default}}}if(opt.queue==null||opt.queue===true){opt.queue="fx"}opt.old=opt.complete;opt.complete=function(){if(isFunction(opt.old)){opt.old.call(this)}if(opt.queue){jQuery.dequeue(this,opt.queue)}};return opt};jQuery.fn.extend({fadeTo:function(speed,to,easing,callback){return this.filter(isHiddenWithinTree).css("opacity",0).show().end().animate({opacity:to},speed,easing,callback)},animate:function(prop,speed,easing,callback){var empty=jQuery.isEmptyObject(prop),optall=jQuery.speed(speed,easing,callback),doAnimation=function(){var anim=Animation(this,jQuery.extend({},prop),optall);if(empty||dataPriv.get(this,"finish")){anim.stop(true)}};doAnimation.finish=doAnimation;return empty||optall.queue===false?this.each(doAnimation):this.queue(optall.queue,doAnimation)},stop:function(type,clearQueue,gotoEnd){var stopQueue=function(hooks){var stop=hooks.stop;delete hooks.stop;stop(gotoEnd)};if(typeof type!=="string"){gotoEnd=clearQueue;clearQueue=type;type=undefined}if(clearQueue&&type!==false){this.queue(type||"fx",[])}return this.each(function(){var dequeue=true,index=type!=null&&type+"queueHooks",timers=jQuery.timers,data=dataPriv.get(this);if(index){if(data[index]&&data[index].stop){stopQueue(data[index])}}else{for(index in data){if(data[index]&&data[index].stop&&rrun.test(index)){stopQueue(data[index])}}}for(index=timers.length;index--;){if(timers[index].elem===this&&(type==null||timers[index].queue===type)){timers[index].anim.stop(gotoEnd);dequeue=false;timers.splice(index,1)}}if(dequeue||!gotoEnd){jQuery.dequeue(this,type)}})},finish:function(type){if(type!==false){type=type||"fx"}return this.each(function(){var index,data=dataPriv.get(this),queue=data[type+"queue"],hooks=data[type+"queueHooks"],timers=jQuery.timers,length=queue?queue.length:0;data.finish=true;jQuery.queue(this,type,[]);if(hooks&&hooks.stop){hooks.stop.call(this,true)}for(index=timers.length;index--;){if(timers[index].elem===this&&timers[index].queue===type){timers[index].anim.stop(true);timers.splice(index,1)}}for(index=0;index<length;index++){if(queue[index]&&queue[index].finish){queue[index].finish.call(this)}}delete data.finish})}});jQuery.each(["toggle","show","hide"],function(i,name){var cssFn=jQuery.fn[name];jQuery.fn[name]=function(speed,easing,callback){return speed==null||typeof speed==="boolean"?cssFn.apply(this,arguments):this.animate(genFx(name,true),speed,easing,callback)}});jQuery.each({slideDown:genFx("show"),slideUp:genFx("hide"),slideToggle:genFx("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback)}});jQuery.timers=[];jQuery.fx.tick=function(){var timer,i=0,timers=jQuery.timers;fxNow=Date.now();for(;i<timers.length;i++){timer=timers[i];if(!timer()&&timers[i]===timer){timers.splice(i--,1)}}if(!timers.length){jQuery.fx.stop()}fxNow=undefined};jQuery.fx.timer=function(timer){jQuery.timers.push(timer);jQuery.fx.start()};jQuery.fx.interval=13;jQuery.fx.start=function(){if(inProgress){return}inProgress=true;schedule()};jQuery.fx.stop=function(){inProgress=null};jQuery.fx.speeds={slow:600,fast:200,_default:400};jQuery.fn.delay=function(time,type){time=jQuery.fx?jQuery.fx.speeds[time]||time:time;type=type||"fx";return this.queue(type,function(next,hooks){var timeout=window.setTimeout(next,time);hooks.stop=function(){window.clearTimeout(timeout)}})};(function(){var input=document.createElement("input"),select=document.createElement("select"),opt=select.appendChild(document.createElement("option"));input.type="checkbox";support.checkOn=input.value!=="";support.optSelected=opt.selected;input=document.createElement("input");input.value="t";input.type="radio";support.radioValue=input.value==="t"})();var boolHook,attrHandle=jQuery.expr.attrHandle;jQuery.fn.extend({attr:function(name,value){return access(this,jQuery.attr,name,value,arguments.length>1)},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name)})}});jQuery.extend({attr:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(nType===3||nType===8||nType===2){return}if(typeof elem.getAttribute==="undefined"){return jQuery.prop(elem,name,value)}if(nType!==1||!jQuery.isXMLDoc(elem)){hooks=jQuery.attrHooks[name.toLowerCase()]||(jQuery.expr.match.bool.test(name)?boolHook:undefined)}if(value!==undefined){if(value===null){jQuery.removeAttr(elem,name);return}if(hooks&&"set"in hooks&&(ret=hooks.set(elem,value,name))!==undefined){return ret}elem.setAttribute(name,value+"");return value}if(hooks&&"get"in hooks&&(ret=hooks.get(elem,name))!==null){return ret}ret=jQuery.find.attr(elem,name);return ret==null?undefined:ret},attrHooks:{type:{set:function(elem,value){if(!support.radioValue&&value==="radio"&&nodeName(elem,"input")){var val=elem.value;elem.setAttribute("type",value);if(val){elem.value=val}return value}}}},removeAttr:function(elem,value){var name,i=0,attrNames=value&&value.match(rnothtmlwhite);if(attrNames&&elem.nodeType===1){while(name=attrNames[i++]){elem.removeAttribute(name)}}}});boolHook={set:function(elem,value,name){if(value===false){jQuery.removeAttr(elem,name)}else{elem.setAttribute(name,name)}return name}};jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(i,name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem,name,isXML){var ret,handle,lowercaseName=name.toLowerCase();if(!isXML){handle=attrHandle[lowercaseName];attrHandle[lowercaseName]=ret;ret=getter(elem,name,isXML)!=null?lowercaseName:null;attrHandle[lowercaseName]=handle}return ret}});var rfocusable=/^(?:input|select|textarea|button)$/i,rclickable=/^(?:a|area)$/i;jQuery.fn.extend({prop:function(name,value){return access(this,jQuery.prop,name,value,arguments.length>1)},removeProp:function(name){return this.each(function(){delete this[jQuery.propFix[name]||name]})}});jQuery.extend({prop:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(nType===3||nType===8||nType===2){return}if(nType!==1||!jQuery.isXMLDoc(elem)){name=jQuery.propFix[name]||name;hooks=jQuery.propHooks[name]}if(value!==undefined){if(hooks&&"set"in hooks&&(ret=hooks.set(elem,value,name))!==undefined){return ret}return elem[name]=value}if(hooks&&"get"in hooks&&(ret=hooks.get(elem,name))!==null){return ret}return elem[name]},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");if(tabindex){return parseInt(tabindex,10)}if(rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href){return 0}return-1}}},propFix:{for:"htmlFor",class:"className"}});if(!support.optSelected){jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;if(parent&&parent.parentNode){parent.parentNode.selectedIndex}return null},set:function(elem){var parent=elem.parentNode;if(parent){parent.selectedIndex;if(parent.parentNode){parent.parentNode.selectedIndex}}}}}jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this});function stripAndCollapse(value){var tokens=value.match(rnothtmlwhite)||[];return tokens.join(" ")}function getClass(elem){return elem.getAttribute&&elem.getAttribute("class")||""}function classesToArray(value){if(Array.isArray(value)){return value}if(typeof value==="string"){return value.match(rnothtmlwhite)||[]}return[]}jQuery.fn.extend({addClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value)){return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)))})}classes=classesToArray(value);if(classes.length){while(elem=this[i++]){curValue=getClass(elem);cur=elem.nodeType===1&&" "+stripAndCollapse(curValue)+" ";if(cur){j=0;while(clazz=classes[j++]){if(cur.indexOf(" "+clazz+" ")<0){cur+=clazz+" "}}finalValue=stripAndCollapse(cur);if(curValue!==finalValue){elem.setAttribute("class",finalValue)}}}}return this},removeClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value)){return this.each(function(j){jQuery(this).removeClass(value.call(this,j,getClass(this)))})}if(!arguments.length){return this.attr("class","")}classes=classesToArray(value);if(classes.length){while(elem=this[i++]){curValue=getClass(elem);cur=elem.nodeType===1&&" "+stripAndCollapse(curValue)+" ";if(cur){j=0;while(clazz=classes[j++]){while(cur.indexOf(" "+clazz+" ")>-1){cur=cur.replace(" "+clazz+" "," ")}}finalValue=stripAndCollapse(cur);if(curValue!==finalValue){elem.setAttribute("class",finalValue)}}}}return this},toggleClass:function(value,stateVal){var type=typeof value,isValidValue=type==="string"||Array.isArray(value);if(typeof stateVal==="boolean"&&isValidValue){return stateVal?this.addClass(value):this.removeClass(value)}if(isFunction(value)){return this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal)})}return this.each(function(){var className,i,self,classNames;if(isValidValue){i=0;self=jQuery(this);classNames=classesToArray(value);while(className=classNames[i++]){if(self.hasClass(className)){self.removeClass(className)}else{self.addClass(className)}}}else if(value===undefined||type==="boolean"){className=getClass(this);if(className){dataPriv.set(this,"__className__",className)}if(this.setAttribute){this.setAttribute("class",className||value===false?"":dataPriv.get(this,"__className__")||"")}}})},hasClass:function(selector){var className,elem,i=0;className=" "+selector+" ";while(elem=this[i++]){if(elem.nodeType===1&&(" "+stripAndCollapse(getClass(elem))+" ").indexOf(className)>-1){return true}}return false}});var rreturn=/\r/g;jQuery.fn.extend({val:function(value){var hooks,ret,valueIsFunction,elem=this[0];if(!arguments.length){if(elem){hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()];if(hooks&&"get"in hooks&&(ret=hooks.get(elem,"value"))!==undefined){return ret}ret=elem.value;if(typeof ret==="string"){return ret.replace(rreturn,"")}return ret==null?"":ret}return}valueIsFunction=isFunction(value);return this.each(function(i){var val;if(this.nodeType!==1){return}if(valueIsFunction){val=value.call(this,i,jQuery(this).val())}else{val=value}if(val==null){val=""}else if(typeof val==="number"){val+=""}else if(Array.isArray(val)){val=jQuery.map(val,function(value){return value==null?"":value+""})}hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()];if(!hooks||!("set"in hooks)||hooks.set(this,val,"value")===undefined){this.value=val}})}});jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return val!=null?val:stripAndCollapse(jQuery.text(elem))}},select:{get:function(elem){var value,option,i,options=elem.options,index=elem.selectedIndex,one=elem.type==="select-one",values=one?null:[],max=one?index+1:options.length;if(index<0){i=max}else{i=one?index:0}for(;i<max;i++){option=options[i];if((option.selected||i===index)&&!option.disabled&&(!option.parentNode.disabled||!nodeName(option.parentNode,"optgroup"))){value=jQuery(option).val();if(one){return value}values.push(value)}}return values},set:function(elem,value){var optionSet,option,options=elem.options,values=jQuery.makeArray(value),i=options.length;while(i--){option=options[i];if(option.selected=jQuery.inArray(jQuery.valHooks.option.get(option),values)>-1){optionSet=true}}if(!optionSet){elem.selectedIndex=-1}return values}}}});jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value){if(Array.isArray(value)){return elem.checked=jQuery.inArray(jQuery(elem).val(),value)>-1}}};if(!support.checkOn){jQuery.valHooks[this].get=function(elem){return elem.getAttribute("value")===null?"on":elem.value}}});support.focusin="onfocusin"in window;var rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,stopPropagationCallback=function(e){e.stopPropagation()};jQuery.extend(jQuery.event,{trigger:function(event,data,elem,onlyHandlers){var i,cur,tmp,bubbleType,ontype,handle,special,lastElement,eventPath=[elem||document],type=hasOwn.call(event,"type")?event.type:event,namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];cur=lastElement=tmp=elem=elem||document;if(elem.nodeType===3||elem.nodeType===8){return}if(rfocusMorph.test(type+jQuery.event.triggered)){return}if(type.indexOf(".")>-1){namespaces=type.split(".");type=namespaces.shift();namespaces.sort()}ontype=type.indexOf(":")<0&&"on"+type;event=event[jQuery.expando]?event:new jQuery.Event(type,typeof event==="object"&&event);event.isTrigger=onlyHandlers?2:3;event.namespace=namespaces.join(".");event.rnamespace=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;event.result=undefined;if(!event.target){event.target=elem}data=data==null?[event]:jQuery.makeArray(data,[event]);special=jQuery.event.special[type]||{};if(!onlyHandlers&&special.trigger&&special.trigger.apply(elem,data)===false){return}if(!onlyHandlers&&!special.noBubble&&!isWindow(elem)){bubbleType=special.delegateType||type;if(!rfocusMorph.test(bubbleType+type)){cur=cur.parentNode}for(;cur;cur=cur.parentNode){eventPath.push(cur);tmp=cur}if(tmp===(elem.ownerDocument||document)){eventPath.push(tmp.defaultView||tmp.parentWindow||window)}}i=0;while((cur=eventPath[i++])&&!event.isPropagationStopped()){lastElement=cur;event.type=i>1?bubbleType:special.bindType||type;handle=(dataPriv.get(cur,"events")||{})[event.type]&&dataPriv.get(cur,"handle");if(handle){handle.apply(cur,data)}handle=ontype&&cur[ontype];if(handle&&handle.apply&&acceptData(cur)){event.result=handle.apply(cur,data);if(event.result===false){event.preventDefault()}}}event.type=type;if(!onlyHandlers&&!event.isDefaultPrevented()){if((!special._default||special._default.apply(eventPath.pop(),data)===false)&&acceptData(elem)){if(ontype&&isFunction(elem[type])&&!isWindow(elem)){tmp=elem[ontype];if(tmp){elem[ontype]=null}jQuery.event.triggered=type;if(event.isPropagationStopped()){lastElement.addEventListener(type,stopPropagationCallback)}elem[type]();if(event.isPropagationStopped()){lastElement.removeEventListener(type,stopPropagationCallback)}jQuery.event.triggered=undefined;if(tmp){elem[ontype]=tmp}}}}return event.result},simulate:function(type,elem,event){var e=jQuery.extend(new jQuery.Event,event,{type:type,isSimulated:true});jQuery.event.trigger(e,null,elem)}});jQuery.fn.extend({trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this)})},triggerHandler:function(type,data){var elem=this[0];if(elem){return jQuery.event.trigger(type,data,elem,true)}}});if(!support.focusin){jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){var handler=function(event){jQuery.event.simulate(fix,event.target,jQuery.event.fix(event))};jQuery.event.special[fix]={setup:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix);if(!attaches){doc.addEventListener(orig,handler,true)}dataPriv.access(doc,fix,(attaches||0)+1)},teardown:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix)-1;if(!attaches){doc.removeEventListener(orig,handler,true);dataPriv.remove(doc,fix)}else{dataPriv.access(doc,fix,attaches)}}}})}var location=window.location;var nonce=Date.now();var rquery=/\?/;jQuery.parseXML=function(data){var xml;if(!data||typeof data!=="string"){return null}try{xml=(new window.DOMParser).parseFromString(data,"text/xml")}catch(e){xml=undefined}if(!xml||xml.getElementsByTagName("parsererror").length){jQuery.error("Invalid XML: "+data)}return xml};var rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(Array.isArray(obj)){jQuery.each(obj,function(i,v){if(traditional||rbracket.test(prefix)){add(prefix,v)}else{buildParams(prefix+"["+(typeof v==="object"&&v!=null?i:"")+"]",v,traditional,add)}})}else if(!traditional&&toType(obj)==="object"){for(name in obj){buildParams(prefix+"["+name+"]",obj[name],traditional,add)}}else{add(prefix,obj)}}jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,valueOrFunction){var value=isFunction(valueOrFunction)?valueOrFunction():valueOrFunction;s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(value==null?"":value)};if(Array.isArray(a)||a.jquery&&!jQuery.isPlainObject(a)){jQuery.each(a,function(){add(this.name,this.value)})}else{for(prefix in a){buildParams(prefix,a[prefix],traditional,add)}}return s.join("&")};jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this}).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type))}).map(function(i,elem){var val=jQuery(this).val();if(val==null){return null}if(Array.isArray(val)){return jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")}})}return{name:elem.name,value:val.replace(rCRLF,"\r\n")}}).get()}});var r20=/%20/g,rhash=/#.*$/,rantiCache=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)$/gm,rlocalProtocol=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,prefilters={},transports={},allTypes="*/".concat("*"),originAnchor=document.createElement("a");originAnchor.href=location.href;function addToPrefiltersOrTransports(structure){return function(dataTypeExpression,func){if(typeof dataTypeExpression!=="string"){func=dataTypeExpression;dataTypeExpression="*"}var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnothtmlwhite)||[];if(isFunction(func)){while(dataType=dataTypes[i++]){if(dataType[0]==="+"){dataType=dataType.slice(1)||"*";(structure[dataType]=structure[dataType]||[]).unshift(func)}else{(structure[dataType]=structure[dataType]||[]).push(func)}}}}}function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=structure===transports;function inspect(dataType){var selected;inspected[dataType]=true;jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);if(typeof dataTypeOrTransport==="string"&&!seekingTransport&&!inspected[dataTypeOrTransport]){options.dataTypes.unshift(dataTypeOrTransport);inspect(dataTypeOrTransport);return false}else if(seekingTransport){return!(selected=dataTypeOrTransport)}});return selected}return inspect(options.dataTypes[0])||!inspected["*"]&&inspect("*")}function ajaxExtend(target,src){var key,deep,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src){if(src[key]!==undefined){(flatOptions[key]?target:deep||(deep={}))[key]=src[key]}}if(deep){jQuery.extend(true,target,deep)}return target}function ajaxHandleResponses(s,jqXHR,responses){var ct,type,finalDataType,firstDataType,contents=s.contents,dataTypes=s.dataTypes;while(dataTypes[0]==="*"){dataTypes.shift();if(ct===undefined){ct=s.mimeType||jqXHR.getResponseHeader("Content-Type")}}if(ct){for(type in contents){if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break}}}if(dataTypes[0]in responses){finalDataType=dataTypes[0]}else{for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break}if(!firstDataType){firstDataType=type}}finalDataType=finalDataType||firstDataType}if(finalDataType){if(finalDataType!==dataTypes[0]){dataTypes.unshift(finalDataType)}return responses[finalDataType]}}function ajaxConvert(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},dataTypes=s.dataTypes.slice();if(dataTypes[1]){for(conv in s.converters){converters[conv.toLowerCase()]=s.converters[conv]}}current=dataTypes.shift();while(current){if(s.responseFields[current]){jqXHR[s.responseFields[current]]=response}if(!prev&&isSuccess&&s.dataFilter){response=s.dataFilter(response,s.dataType)}prev=current;current=dataTypes.shift();if(current){if(current==="*"){current=prev}else if(prev!=="*"&&prev!==current){conv=converters[prev+" "+current]||converters["* "+current];if(!conv){for(conv2 in converters){tmp=conv2.split(" ");if(tmp[1]===current){conv=converters[prev+" "+tmp[0]]||converters["* "+tmp[0]];if(conv){if(conv===true){conv=converters[conv2]}else if(converters[conv2]!==true){current=tmp[0];dataTypes.unshift(tmp[1])}break}}}}if(conv!==true){if(conv&&s.throws){response=conv(response)}else{try{response=conv(response)}catch(e){return{state:"parsererror",error:conv?e:"No conversion from "+prev+" to "+current}}}}}}}return{state:"success",data:response}}jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:location.href,type:"GET",isLocal:rlocalProtocol.test(location.protocol),global:true,processData:true,async:true,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":true,"text json":JSON.parse,"text xml":jQuery.parseXML},flatOptions:{url:true,context:true}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target)},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){if(typeof url==="object"){options=url;url=undefined}options=options||{};var transport,cacheURL,responseHeadersString,responseHeaders,timeoutTimer,urlAnchor,completed,fireGlobals,i,uncached,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={},strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(completed){if(!responseHeaders){responseHeaders={};while(match=rheaders.exec(responseHeadersString)){responseHeaders[match[1].toLowerCase()]=match[2]}}match=responseHeaders[key.toLowerCase()]}return match==null?null:match},getAllResponseHeaders:function(){return completed?responseHeadersString:null},setRequestHeader:function(name,value){if(completed==null){name=requestHeadersNames[name.toLowerCase()]=requestHeadersNames[name.toLowerCase()]||name;requestHeaders[name]=value}return this},overrideMimeType:function(type){if(completed==null){s.mimeType=type}return this},statusCode:function(map){var code;if(map){if(completed){jqXHR.always(map[jqXHR.status])}else{for(code in map){statusCode[code]=[statusCode[code],map[code]]}}}return this},abort:function(statusText){var finalText=statusText||strAbort;if(transport){transport.abort(finalText)}done(0,finalText);return this}};deferred.promise(jqXHR);s.url=((url||s.url||location.href)+"").replace(rprotocol,location.protocol+"//");s.type=options.method||options.type||s.method||s.type;s.dataTypes=(s.dataType||"*").toLowerCase().match(rnothtmlwhite)||[""];if(s.crossDomain==null){urlAnchor=document.createElement("a");try{urlAnchor.href=s.url;urlAnchor.href=urlAnchor.href;s.crossDomain=originAnchor.protocol+"//"+originAnchor.host!==urlAnchor.protocol+"//"+urlAnchor.host}catch(e){s.crossDomain=true}}if(s.data&&s.processData&&typeof s.data!=="string"){s.data=jQuery.param(s.data,s.traditional)}inspectPrefiltersOrTransports(prefilters,s,options,jqXHR);if(completed){return jqXHR}fireGlobals=jQuery.event&&s.global;if(fireGlobals&&jQuery.active++===0){jQuery.event.trigger("ajaxStart")}s.type=s.type.toUpperCase();s.hasContent=!rnoContent.test(s.type);cacheURL=s.url.replace(rhash,"");if(!s.hasContent){uncached=s.url.slice(cacheURL.length);if(s.data&&(s.processData||typeof s.data==="string")){cacheURL+=(rquery.test(cacheURL)?"&":"?")+s.data;delete s.data}if(s.cache===false){cacheURL=cacheURL.replace(rantiCache,"$1");uncached=(rquery.test(cacheURL)?"&":"?")+"_="+nonce+++uncached}s.url=cacheURL+uncached}else if(s.data&&s.processData&&(s.contentType||"").indexOf("application/x-www-form-urlencoded")===0){s.data=s.data.replace(r20,"+")}if(s.ifModified){if(jQuery.lastModified[cacheURL]){jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL])}if(jQuery.etag[cacheURL]){jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL])}}if(s.data&&s.hasContent&&s.contentType!==false||options.contentType){jqXHR.setRequestHeader("Content-Type",s.contentType)}jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+(s.dataTypes[0]!=="*"?", "+allTypes+"; q=0.01":""):s.accepts["*"]);for(i in s.headers){jqXHR.setRequestHeader(i,s.headers[i])}if(s.beforeSend&&(s.beforeSend.call(callbackContext,jqXHR,s)===false||completed)){return jqXHR.abort()}strAbort="abort";completeDeferred.add(s.complete);jqXHR.done(s.success);jqXHR.fail(s.error);transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR);if(!transport){done(-1,"No Transport")}else{jqXHR.readyState=1;if(fireGlobals){globalEventContext.trigger("ajaxSend",[jqXHR,s])}if(completed){return jqXHR}if(s.async&&s.timeout>0){timeoutTimer=window.setTimeout(function(){jqXHR.abort("timeout")},s.timeout)}try{completed=false;transport.send(requestHeaders,done)}catch(e){if(completed){throw e}done(-1,e)}}function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;if(completed){return}completed=true;if(timeoutTimer){window.clearTimeout(timeoutTimer)}transport=undefined;responseHeadersString=headers||"";jqXHR.readyState=status>0?4:0;isSuccess=status>=200&&status<300||status===304;if(responses){response=ajaxHandleResponses(s,jqXHR,responses)}response=ajaxConvert(s,response,jqXHR,isSuccess);if(isSuccess){if(s.ifModified){modified=jqXHR.getResponseHeader("Last-Modified");if(modified){jQuery.lastModified[cacheURL]=modified}modified=jqXHR.getResponseHeader("etag");if(modified){jQuery.etag[cacheURL]=modified}}if(status===204||s.type==="HEAD"){statusText="nocontent"}else if(status===304){statusText="notmodified"}else{statusText=response.state;success=response.data;error=response.error;isSuccess=!error}}else{error=statusText;if(status||!statusText){statusText="error";if(status<0){status=0}}}jqXHR.status=status;jqXHR.statusText=(nativeStatusText||statusText)+"";if(isSuccess){deferred.resolveWith(callbackContext,[success,statusText,jqXHR])}else{deferred.rejectWith(callbackContext,[jqXHR,statusText,error])}jqXHR.statusCode(statusCode);statusCode=undefined;if(fireGlobals){globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error])}completeDeferred.fireWith(callbackContext,[jqXHR,statusText]);if(fireGlobals){globalEventContext.trigger("ajaxComplete",[jqXHR,s]);if(!--jQuery.active){jQuery.event.trigger("ajaxStop")}}}return jqXHR},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json")},getScript:function(url,callback){return jQuery.get(url,undefined,callback,"script")}});jQuery.each(["get","post"],function(i,method){jQuery[method]=function(url,data,callback,type){if(isFunction(data)){type=type||callback;callback=data;data=undefined}return jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url))}});jQuery._evalUrl=function(url){return jQuery.ajax({url:url,type:"GET",dataType:"script",cache:true,async:false,global:false,throws:true})};jQuery.fn.extend({wrapAll:function(html){var wrap;if(this[0]){if(isFunction(html)){html=html.call(this[0])}wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){wrap.insertBefore(this[0])}wrap.map(function(){var elem=this;while(elem.firstElementChild){elem=elem.firstElementChild}return elem}).append(this)}return this},wrapInner:function(html){if(isFunction(html)){return this.each(function(i){jQuery(this).wrapInner(html.call(this,i))})}return this.each(function(){var self=jQuery(this),contents=self.contents();if(contents.length){contents.wrapAll(html)}else{self.append(html)}})},wrap:function(html){var htmlIsFunction=isFunction(html);return this.each(function(i){jQuery(this).wrapAll(htmlIsFunction?html.call(this,i):html)})},unwrap:function(selector){this.parent(selector).not("body").each(function(){jQuery(this).replaceWith(this.childNodes)});return this}});jQuery.expr.pseudos.hidden=function(elem){return!jQuery.expr.pseudos.visible(elem)};jQuery.expr.pseudos.visible=function(elem){return!!(elem.offsetWidth||elem.offsetHeight||elem.getClientRects().length)};jQuery.ajaxSettings.xhr=function(){try{return new window.XMLHttpRequest}catch(e){}};var xhrSuccessStatus={0:200,1223:204},xhrSupported=jQuery.ajaxSettings.xhr();support.cors=!!xhrSupported&&"withCredentials"in xhrSupported;support.ajax=xhrSupported=!!xhrSupported;jQuery.ajaxTransport(function(options){var callback,errorCallback;if(support.cors||xhrSupported&&!options.crossDomain){return{send:function(headers,complete){var i,xhr=options.xhr();xhr.open(options.type,options.url,options.async,options.username,options.password);if(options.xhrFields){for(i in options.xhrFields){xhr[i]=options.xhrFields[i]}}if(options.mimeType&&xhr.overrideMimeType){xhr.overrideMimeType(options.mimeType)}if(!options.crossDomain&&!headers["X-Requested-With"]){headers["X-Requested-With"]="XMLHttpRequest"}for(i in headers){xhr.setRequestHeader(i,headers[i])}callback=function(type){return function(){if(callback){callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.ontimeout=xhr.onreadystatechange=null;if(type==="abort"){xhr.abort()}else if(type==="error"){if(typeof xhr.status!=="number"){complete(0,"error")}else{complete(xhr.status,xhr.statusText)}}else{complete(xhrSuccessStatus[xhr.status]||xhr.status,xhr.statusText,(xhr.responseType||"text")!=="text"||typeof xhr.responseText!=="string"?{binary:xhr.response}:{text:xhr.responseText},xhr.getAllResponseHeaders())}}}};xhr.onload=callback();errorCallback=xhr.onerror=xhr.ontimeout=callback("error");if(xhr.onabort!==undefined){xhr.onabort=errorCallback}else{xhr.onreadystatechange=function(){if(xhr.readyState===4){window.setTimeout(function(){if(callback){errorCallback()}})}}}callback=callback("abort");try{xhr.send(options.hasContent&&options.data||null)}catch(e){if(callback){throw e}}},abort:function(){if(callback){callback()}}}}});jQuery.ajaxPrefilter(function(s){if(s.crossDomain){s.contents.script=false}});jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, "+"application/ecmascript, application/x-ecmascript"},
+contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(text){jQuery.globalEval(text);return text}}});jQuery.ajaxPrefilter("script",function(s){if(s.cache===undefined){s.cache=false}if(s.crossDomain){s.type="GET"}});jQuery.ajaxTransport("script",function(s){if(s.crossDomain){var script,callback;return{send:function(_,complete){script=jQuery("<script>").prop({charset:s.scriptCharset,src:s.url}).on("load error",callback=function(evt){script.remove();callback=null;if(evt){complete(evt.type==="error"?404:200,evt.type)}});document.head.appendChild(script[0])},abort:function(){if(callback){callback()}}}}});var oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var callback=oldCallbacks.pop()||jQuery.expando+"_"+nonce++;this[callback]=true;return callback}});jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=s.jsonp!==false&&(rjsonp.test(s.url)?"url":typeof s.data==="string"&&(s.contentType||"").indexOf("application/x-www-form-urlencoded")===0&&rjsonp.test(s.data)&&"data");if(jsonProp||s.dataTypes[0]==="jsonp"){callbackName=s.jsonpCallback=isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback;if(jsonProp){s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName)}else if(s.jsonp!==false){s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName}s.converters["script json"]=function(){if(!responseContainer){jQuery.error(callbackName+" was not called")}return responseContainer[0]};s.dataTypes[0]="json";overwritten=window[callbackName];window[callbackName]=function(){responseContainer=arguments};jqXHR.always(function(){if(overwritten===undefined){jQuery(window).removeProp(callbackName)}else{window[callbackName]=overwritten}if(s[callbackName]){s.jsonpCallback=originalSettings.jsonpCallback;oldCallbacks.push(callbackName)}if(responseContainer&&isFunction(overwritten)){overwritten(responseContainer[0])}responseContainer=overwritten=undefined});return"script"}});support.createHTMLDocument=function(){var body=document.implementation.createHTMLDocument("").body;body.innerHTML="<form></form><form></form>";return body.childNodes.length===2}();jQuery.parseHTML=function(data,context,keepScripts){if(typeof data!=="string"){return[]}if(typeof context==="boolean"){keepScripts=context;context=false}var base,parsed,scripts;if(!context){if(support.createHTMLDocument){context=document.implementation.createHTMLDocument("");base=context.createElement("base");base.href=document.location.href;context.head.appendChild(base)}else{context=document}}parsed=rsingleTag.exec(data);scripts=!keepScripts&&[];if(parsed){return[context.createElement(parsed[1])]}parsed=buildFragment([data],context,scripts);if(scripts&&scripts.length){jQuery(scripts).remove()}return jQuery.merge([],parsed.childNodes)};jQuery.fn.load=function(url,params,callback){var selector,type,response,self=this,off=url.indexOf(" ");if(off>-1){selector=stripAndCollapse(url.slice(off));url=url.slice(0,off)}if(isFunction(params)){callback=params;params=undefined}else if(params&&typeof params==="object"){type="POST"}if(self.length>0){jQuery.ajax({url:url,type:type||"GET",dataType:"html",data:params}).done(function(responseText){response=arguments;self.html(selector?jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector):responseText)}).always(callback&&function(jqXHR,status){self.each(function(){callback.apply(this,response||[jqXHR.responseText,status,jqXHR])})})}return this};jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(i,type){jQuery.fn[type]=function(fn){return this.on(type,fn)}});jQuery.expr.pseudos.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem}).length};jQuery.offset={setOffset:function(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,calculatePosition,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};if(position==="static"){elem.style.position="relative"}curOffset=curElem.offset();curCSSTop=jQuery.css(elem,"top");curCSSLeft=jQuery.css(elem,"left");calculatePosition=(position==="absolute"||position==="fixed")&&(curCSSTop+curCSSLeft).indexOf("auto")>-1;if(calculatePosition){curPosition=curElem.position();curTop=curPosition.top;curLeft=curPosition.left}else{curTop=parseFloat(curCSSTop)||0;curLeft=parseFloat(curCSSLeft)||0}if(isFunction(options)){options=options.call(elem,i,jQuery.extend({},curOffset))}if(options.top!=null){props.top=options.top-curOffset.top+curTop}if(options.left!=null){props.left=options.left-curOffset.left+curLeft}if("using"in options){options.using.call(elem,props)}else{curElem.css(props)}}};jQuery.fn.extend({offset:function(options){if(arguments.length){return options===undefined?this:this.each(function(i){jQuery.offset.setOffset(this,options,i)})}var rect,win,elem=this[0];if(!elem){return}if(!elem.getClientRects().length){return{top:0,left:0}}rect=elem.getBoundingClientRect();win=elem.ownerDocument.defaultView;return{top:rect.top+win.pageYOffset,left:rect.left+win.pageXOffset}},position:function(){if(!this[0]){return}var offsetParent,offset,doc,elem=this[0],parentOffset={top:0,left:0};if(jQuery.css(elem,"position")==="fixed"){offset=elem.getBoundingClientRect()}else{offset=this.offset();doc=elem.ownerDocument;offsetParent=elem.offsetParent||doc.documentElement;while(offsetParent&&(offsetParent===doc.body||offsetParent===doc.documentElement)&&jQuery.css(offsetParent,"position")==="static"){offsetParent=offsetParent.parentNode}if(offsetParent&&offsetParent!==elem&&offsetParent.nodeType===1){parentOffset=jQuery(offsetParent).offset();parentOffset.top+=jQuery.css(offsetParent,"borderTopWidth",true);parentOffset.left+=jQuery.css(offsetParent,"borderLeftWidth",true)}}return{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",true),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",true)}},offsetParent:function(){return this.map(function(){var offsetParent=this.offsetParent;while(offsetParent&&jQuery.css(offsetParent,"position")==="static"){offsetParent=offsetParent.offsetParent}return offsetParent||documentElement})}});jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top="pageYOffset"===prop;jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win;if(isWindow(elem)){win=elem}else if(elem.nodeType===9){win=elem.defaultView}if(val===undefined){return win?win[prop]:elem[method]}if(win){win.scrollTo(!top?val:win.pageXOffset,top?val:win.pageYOffset)}else{elem[method]=val}},method,val,arguments.length)}});jQuery.each(["top","left"],function(i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed){computed=curCSS(elem,prop);return rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed}})});jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||typeof margin!=="boolean"),extra=defaultExtra||(margin===true||value===true?"margin":"border");return access(this,function(elem,type,value){var doc;if(isWindow(elem)){return funcName.indexOf("outer")===0?elem["inner"+name]:elem.document.documentElement["client"+name]}if(elem.nodeType===9){doc=elem.documentElement;return Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name])}return value===undefined?jQuery.css(elem,type,extra):jQuery.style(elem,type,value,extra)},type,chainable?margin:undefined,chainable)}})});jQuery.each(("blur focus focusin focusout resize scroll click dblclick "+"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave "+"change select submit keydown keypress keyup contextmenu").split(" "),function(i,name){jQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name)}});jQuery.fn.extend({hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver)}});jQuery.fn.extend({bind:function(types,data,fn){return this.on(types,null,data,fn)},unbind:function(types,fn){return this.off(types,null,fn)},delegate:function(selector,types,data,fn){return this.on(types,selector,data,fn)},undelegate:function(selector,types,fn){return arguments.length===1?this.off(selector,"**"):this.off(types,selector||"**",fn)}});jQuery.proxy=function(fn,context){var tmp,args,proxy;if(typeof context==="string"){tmp=fn[context];context=fn;fn=tmp}if(!isFunction(fn)){return undefined}args=slice.call(arguments,2);proxy=function(){return fn.apply(context||this,args.concat(slice.call(arguments)))};proxy.guid=fn.guid=fn.guid||jQuery.guid++;return proxy};jQuery.holdReady=function(hold){if(hold){jQuery.readyWait++}else{jQuery.ready(true)}};jQuery.isArray=Array.isArray;jQuery.parseJSON=JSON.parse;jQuery.nodeName=nodeName;jQuery.isFunction=isFunction;jQuery.isWindow=isWindow;jQuery.camelCase=camelCase;jQuery.type=toType;jQuery.now=Date.now;jQuery.isNumeric=function(obj){var type=jQuery.type(obj);return(type==="number"||type==="string")&&!isNaN(obj-parseFloat(obj))};if(typeof define==="function"&&define.amd){define("jquery",[],function(){return jQuery})}var _jQuery=window.jQuery,_$=window.$;jQuery.noConflict=function(deep){if(window.$===jQuery){window.$=_$}if(deep&&window.jQuery===jQuery){window.jQuery=_jQuery}return jQuery};if(!noGlobal){window.jQuery=window.$=jQuery}return jQuery});
diff --git a/backend/secfit/htmlcov/jquery.tablesorter.min.js b/backend/secfit/htmlcov/jquery.tablesorter.min.js
new file mode 100644
index 0000000..64c7007
--- /dev/null
+++ b/backend/secfit/htmlcov/jquery.tablesorter.min.js
@@ -0,0 +1,2 @@
+
+(function($){$.extend({tablesorter:new function(){var parsers=[],widgets=[];this.defaults={cssHeader:"header",cssAsc:"headerSortUp",cssDesc:"headerSortDown",sortInitialOrder:"asc",sortMultiSortKey:"shiftKey",sortForce:null,sortAppend:null,textExtraction:"simple",parsers:{},widgets:[],widgetZebra:{css:["even","odd"]},headers:{},widthFixed:false,cancelSelection:true,sortList:[],headerList:[],dateFormat:"us",decimal:'.',debug:false};function benchmark(s,d){log(s+","+(new Date().getTime()-d.getTime())+"ms");}this.benchmark=benchmark;function log(s){if(typeof console!="undefined"&&typeof console.debug!="undefined"){console.log(s);}else{alert(s);}}function buildParserCache(table,$headers){if(table.config.debug){var parsersDebug="";}var rows=table.tBodies[0].rows;if(table.tBodies[0].rows[0]){var list=[],cells=rows[0].cells,l=cells.length;for(var i=0;i<l;i++){var p=false;if($.metadata&&($($headers[i]).metadata()&&$($headers[i]).metadata().sorter)){p=getParserById($($headers[i]).metadata().sorter);}else if((table.config.headers[i]&&table.config.headers[i].sorter)){p=getParserById(table.config.headers[i].sorter);}if(!p){p=detectParserForColumn(table,cells[i]);}if(table.config.debug){parsersDebug+="column:"+i+" parser:"+p.id+"\n";}list.push(p);}}if(table.config.debug){log(parsersDebug);}return list;};function detectParserForColumn(table,node){var l=parsers.length;for(var i=1;i<l;i++){if(parsers[i].is($.trim(getElementText(table.config,node)),table,node)){return parsers[i];}}return parsers[0];}function getParserById(name){var l=parsers.length;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==name.toLowerCase()){return parsers[i];}}return false;}function buildCache(table){if(table.config.debug){var cacheTime=new Date();}var totalRows=(table.tBodies[0]&&table.tBodies[0].rows.length)||0,totalCells=(table.tBodies[0].rows[0]&&table.tBodies[0].rows[0].cells.length)||0,parsers=table.config.parsers,cache={row:[],normalized:[]};for(var i=0;i<totalRows;++i){var c=table.tBodies[0].rows[i],cols=[];cache.row.push($(c));for(var j=0;j<totalCells;++j){cols.push(parsers[j].format(getElementText(table.config,c.cells[j]),table,c.cells[j]));}cols.push(i);cache.normalized.push(cols);cols=null;};if(table.config.debug){benchmark("Building cache for "+totalRows+" rows:",cacheTime);}return cache;};function getElementText(config,node){if(!node)return"";var t="";if(config.textExtraction=="simple"){if(node.childNodes[0]&&node.childNodes[0].hasChildNodes()){t=node.childNodes[0].innerHTML;}else{t=node.innerHTML;}}else{if(typeof(config.textExtraction)=="function"){t=config.textExtraction(node);}else{t=$(node).text();}}return t;}function appendToTable(table,cache){if(table.config.debug){var appendTime=new Date()}var c=cache,r=c.row,n=c.normalized,totalRows=n.length,checkCell=(n[0].length-1),tableBody=$(table.tBodies[0]),rows=[];for(var i=0;i<totalRows;i++){rows.push(r[n[i][checkCell]]);if(!table.config.appender){var o=r[n[i][checkCell]];var l=o.length;for(var j=0;j<l;j++){tableBody[0].appendChild(o[j]);}}}if(table.config.appender){table.config.appender(table,rows);}rows=null;if(table.config.debug){benchmark("Rebuilt table:",appendTime);}applyWidget(table);setTimeout(function(){$(table).trigger("sortEnd");},0);};function buildHeaders(table){if(table.config.debug){var time=new Date();}var meta=($.metadata)?true:false,tableHeadersRows=[];for(var i=0;i<table.tHead.rows.length;i++){tableHeadersRows[i]=0;};$tableHeaders=$("thead th",table);$tableHeaders.each(function(index){this.count=0;this.column=index;this.order=formatSortingOrder(table.config.sortInitialOrder);if(checkHeaderMetadata(this)||checkHeaderOptions(table,index))this.sortDisabled=true;if(!this.sortDisabled){$(this).addClass(table.config.cssHeader);}table.config.headerList[index]=this;});if(table.config.debug){benchmark("Built headers:",time);log($tableHeaders);}return $tableHeaders;};function checkCellColSpan(table,rows,row){var arr=[],r=table.tHead.rows,c=r[row].cells;for(var i=0;i<c.length;i++){var cell=c[i];if(cell.colSpan>1){arr=arr.concat(checkCellColSpan(table,headerArr,row++));}else{if(table.tHead.length==1||(cell.rowSpan>1||!r[row+1])){arr.push(cell);}}}return arr;};function checkHeaderMetadata(cell){if(($.metadata)&&($(cell).metadata().sorter===false)){return true;};return false;}function checkHeaderOptions(table,i){if((table.config.headers[i])&&(table.config.headers[i].sorter===false)){return true;};return false;}function applyWidget(table){var c=table.config.widgets;var l=c.length;for(var i=0;i<l;i++){getWidgetById(c[i]).format(table);}}function getWidgetById(name){var l=widgets.length;for(var i=0;i<l;i++){if(widgets[i].id.toLowerCase()==name.toLowerCase()){return widgets[i];}}};function formatSortingOrder(v){if(typeof(v)!="Number"){i=(v.toLowerCase()=="desc")?1:0;}else{i=(v==(0||1))?v:0;}return i;}function isValueInArray(v,a){var l=a.length;for(var i=0;i<l;i++){if(a[i][0]==v){return true;}}return false;}function setHeadersCss(table,$headers,list,css){$headers.removeClass(css[0]).removeClass(css[1]);var h=[];$headers.each(function(offset){if(!this.sortDisabled){h[this.column]=$(this);}});var l=list.length;for(var i=0;i<l;i++){h[list[i][0]].addClass(css[list[i][1]]);}}function fixColumnWidth(table,$headers){var c=table.config;if(c.widthFixed){var colgroup=$('<colgroup>');$("tr:first td",table.tBodies[0]).each(function(){colgroup.append($('<col>').css('width',$(this).width()));});$(table).prepend(colgroup);};}function updateHeaderSortCount(table,sortList){var c=table.config,l=sortList.length;for(var i=0;i<l;i++){var s=sortList[i],o=c.headerList[s[0]];o.count=s[1];o.count++;}}function multisort(table,sortList,cache){if(table.config.debug){var sortTime=new Date();}var dynamicExp="var sortWrapper = function(a,b) {",l=sortList.length;for(var i=0;i<l;i++){var c=sortList[i][0];var order=sortList[i][1];var s=(getCachedSortType(table.config.parsers,c)=="text")?((order==0)?"sortText":"sortTextDesc"):((order==0)?"sortNumeric":"sortNumericDesc");var e="e"+i;dynamicExp+="var "+e+" = "+s+"(a["+c+"],b["+c+"]); ";dynamicExp+="if("+e+") { return "+e+"; } ";dynamicExp+="else { ";}var orgOrderCol=cache.normalized[0].length-1;dynamicExp+="return a["+orgOrderCol+"]-b["+orgOrderCol+"];";for(var i=0;i<l;i++){dynamicExp+="}; ";}dynamicExp+="return 0; ";dynamicExp+="}; ";eval(dynamicExp);cache.normalized.sort(sortWrapper);if(table.config.debug){benchmark("Sorting on "+sortList.toString()+" and dir "+order+" time:",sortTime);}return cache;};function sortText(a,b){return((a<b)?-1:((a>b)?1:0));};function sortTextDesc(a,b){return((b<a)?-1:((b>a)?1:0));};function sortNumeric(a,b){return a-b;};function sortNumericDesc(a,b){return b-a;};function getCachedSortType(parsers,i){return parsers[i].type;};this.construct=function(settings){return this.each(function(){if(!this.tHead||!this.tBodies)return;var $this,$document,$headers,cache,config,shiftDown=0,sortOrder;this.config={};config=$.extend(this.config,$.tablesorter.defaults,settings);$this=$(this);$headers=buildHeaders(this);this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);var sortCSS=[config.cssDesc,config.cssAsc];fixColumnWidth(this);$headers.click(function(e){$this.trigger("sortStart");var totalRows=($this[0].tBodies[0]&&$this[0].tBodies[0].rows.length)||0;if(!this.sortDisabled&&totalRows>0){var $cell=$(this);var i=this.column;this.order=this.count++%2;if(!e[config.sortMultiSortKey]){config.sortList=[];if(config.sortForce!=null){var a=config.sortForce;for(var j=0;j<a.length;j++){if(a[j][0]!=i){config.sortList.push(a[j]);}}}config.sortList.push([i,this.order]);}else{if(isValueInArray(i,config.sortList)){for(var j=0;j<config.sortList.length;j++){var s=config.sortList[j],o=config.headerList[s[0]];if(s[0]==i){o.count=s[1];o.count++;s[1]=o.count%2;}}}else{config.sortList.push([i,this.order]);}};setTimeout(function(){setHeadersCss($this[0],$headers,config.sortList,sortCSS);appendToTable($this[0],multisort($this[0],config.sortList,cache));},1);return false;}}).mousedown(function(){if(config.cancelSelection){this.onselectstart=function(){return false};return false;}});$this.bind("update",function(){this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);}).bind("sorton",function(e,list){$(this).trigger("sortStart");config.sortList=list;var sortList=config.sortList;updateHeaderSortCount(this,sortList);setHeadersCss(this,$headers,sortList,sortCSS);appendToTable(this,multisort(this,sortList,cache));}).bind("appendCache",function(){appendToTable(this,cache);}).bind("applyWidgetId",function(e,id){getWidgetById(id).format(this);}).bind("applyWidgets",function(){applyWidget(this);});if($.metadata&&($(this).metadata()&&$(this).metadata().sortlist)){config.sortList=$(this).metadata().sortlist;}if(config.sortList.length>0){$this.trigger("sorton",[config.sortList]);}applyWidget(this);});};this.addParser=function(parser){var l=parsers.length,a=true;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==parser.id.toLowerCase()){a=false;}}if(a){parsers.push(parser);};};this.addWidget=function(widget){widgets.push(widget);};this.formatFloat=function(s){var i=parseFloat(s);return(isNaN(i))?0:i;};this.formatInt=function(s){var i=parseInt(s);return(isNaN(i))?0:i;};this.isDigit=function(s,config){var DECIMAL='\\'+config.decimal;var exp='/(^[+]?0('+DECIMAL+'0+)?$)|(^([-+]?[1-9][0-9]*)$)|(^([-+]?((0?|[1-9][0-9]*)'+DECIMAL+'(0*[1-9][0-9]*)))$)|(^[-+]?[1-9]+[0-9]*'+DECIMAL+'0+$)/';return RegExp(exp).test($.trim(s));};this.clearTableBody=function(table){if($.browser.msie){function empty(){while(this.firstChild)this.removeChild(this.firstChild);}empty.apply(table.tBodies[0]);}else{table.tBodies[0].innerHTML="";}};}});$.fn.extend({tablesorter:$.tablesorter.construct});var ts=$.tablesorter;ts.addParser({id:"text",is:function(s){return true;},format:function(s){return $.trim(s.toLowerCase());},type:"text"});ts.addParser({id:"digit",is:function(s,table){var c=table.config;return $.tablesorter.isDigit(s,c);},format:function(s){return $.tablesorter.formatFloat(s);},type:"numeric"});ts.addParser({id:"currency",is:function(s){return/^[£$€?.]/.test(s);},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.]/g),""));},type:"numeric"});ts.addParser({id:"ipAddress",is:function(s){return/^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/.test(s);},format:function(s){var a=s.split("."),r="",l=a.length;for(var i=0;i<l;i++){var item=a[i];if(item.length==2){r+="0"+item;}else{r+=item;}}return $.tablesorter.formatFloat(r);},type:"numeric"});ts.addParser({id:"url",is:function(s){return/^(https?|ftp|file):\/\/$/.test(s);},format:function(s){return jQuery.trim(s.replace(new RegExp(/(https?|ftp|file):\/\//),''));},type:"text"});ts.addParser({id:"isoDate",is:function(s){return/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);},format:function(s){return $.tablesorter.formatFloat((s!="")?new Date(s.replace(new RegExp(/-/g),"/")).getTime():"0");},type:"numeric"});ts.addParser({id:"percent",is:function(s){return/\%$/.test($.trim(s));},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/%/g),""));},type:"numeric"});ts.addParser({id:"usLongDate",is:function(s){return s.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));},format:function(s){return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"shortDate",is:function(s){return/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);},format:function(s,table){var c=table.config;s=s.replace(/\-/g,"/");if(c.dateFormat=="us"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$1/$2");}else if(c.dateFormat=="uk"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$2/$1");}else if(c.dateFormat=="dd/mm/yy"||c.dateFormat=="dd-mm-yy"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/,"$1/$2/$3");}return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"time",is:function(s){return/^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/.test(s);},format:function(s){return $.tablesorter.formatFloat(new Date("2000/01/01 "+s).getTime());},type:"numeric"});ts.addParser({id:"metadata",is:function(s){return false;},format:function(s,table,cell){var c=table.config,p=(!c.parserMetadataName)?'sortValue':c.parserMetadataName;return $(cell).metadata()[p];},type:"numeric"});ts.addWidget({id:"zebra",format:function(table){if(table.config.debug){var time=new Date();}$("tr:visible",table.tBodies[0]).filter(':even').removeClass(table.config.widgetZebra.css[1]).addClass(table.config.widgetZebra.css[0]).end().filter(':odd').removeClass(table.config.widgetZebra.css[0]).addClass(table.config.widgetZebra.css[1]);if(table.config.debug){$.tablesorter.benchmark("Applying Zebra widget",time);}}});})(jQuery);
\ No newline at end of file
diff --git a/backend/secfit/htmlcov/keybd_closed.png b/backend/secfit/htmlcov/keybd_closed.png
new file mode 100644
index 0000000000000000000000000000000000000000..db114023f096297a23a7b1266b469d0ce4556b0a
GIT binary patch
literal 112
zcmeAS@N?(olHy`uVBq!ia0vp^%0SG+!2%?mw9Xg;DRWO3$B+uf<OAIQgt<8-oJACl
z%`j0oqGGRjBSos&^U~$u9kEP}A;xY03|qMZk7$~=otvj5#>5cj*13AM(ls%l5e%NL
KelF{r5}E+1W**4^

literal 0
HcmV?d00001

diff --git a/backend/secfit/htmlcov/keybd_open.png b/backend/secfit/htmlcov/keybd_open.png
new file mode 100644
index 0000000000000000000000000000000000000000..db114023f096297a23a7b1266b469d0ce4556b0a
GIT binary patch
literal 112
zcmeAS@N?(olHy`uVBq!ia0vp^%0SG+!2%?mw9Xg;DRWO3$B+uf<OAIQgt<8-oJACl
z%`j0oqGGRjBSos&^U~$u9kEP}A;xY03|qMZk7$~=otvj5#>5cj*13AM(ls%l5e%NL
KelF{r5}E+1W**4^

literal 0
HcmV?d00001

diff --git a/backend/secfit/htmlcov/status.json b/backend/secfit/htmlcov/status.json
new file mode 100644
index 0000000..1d66fc4
--- /dev/null
+++ b/backend/secfit/htmlcov/status.json
@@ -0,0 +1 @@
+{"format":2,"version":"5.5","globals":"38c562db668a4c95c907bca7a3be0717","files":{"workouts_permissions_py":{"hash":"8b014d883dca94986266a72a3745abe6","index":{"nums":[1,32,0,0,0,0,0],"html_filename":"workouts_permissions_py.html","relative_filename":"workouts/permissions.py"}}}}
\ No newline at end of file
diff --git a/backend/secfit/htmlcov/style.css b/backend/secfit/htmlcov/style.css
new file mode 100644
index 0000000..36ee2a6
--- /dev/null
+++ b/backend/secfit/htmlcov/style.css
@@ -0,0 +1,291 @@
+@charset "UTF-8";
+/* Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 */
+/* For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt */
+/* Don't edit this .css file. Edit the .scss file instead! */
+html, body, h1, h2, h3, p, table, td, th { margin: 0; padding: 0; border: 0; font-weight: inherit; font-style: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; }
+
+body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1em; background: #fff; color: #000; }
+
+@media (prefers-color-scheme: dark) { body { background: #1e1e1e; } }
+
+@media (prefers-color-scheme: dark) { body { color: #eee; } }
+
+html > body { font-size: 16px; }
+
+a:active, a:focus { outline: 2px dashed #007acc; }
+
+p { font-size: .875em; line-height: 1.4em; }
+
+table { border-collapse: collapse; }
+
+td { vertical-align: top; }
+
+table tr.hidden { display: none !important; }
+
+p#no_rows { display: none; font-size: 1.2em; }
+
+a.nav { text-decoration: none; color: inherit; }
+
+a.nav:hover { text-decoration: underline; color: inherit; }
+
+#header { background: #f8f8f8; width: 100%; border-bottom: 1px solid #eee; }
+
+@media (prefers-color-scheme: dark) { #header { background: black; } }
+
+@media (prefers-color-scheme: dark) { #header { border-color: #333; } }
+
+.indexfile #footer { margin: 1rem 3.5rem; }
+
+.pyfile #footer { margin: 1rem 1rem; }
+
+#footer .content { padding: 0; color: #666; font-style: italic; }
+
+@media (prefers-color-scheme: dark) { #footer .content { color: #aaa; } }
+
+#index { margin: 1rem 0 0 3.5rem; }
+
+#header .content { padding: 1rem 3.5rem; }
+
+h1 { font-size: 1.25em; display: inline-block; }
+
+#filter_container { float: right; margin: 0 2em 0 0; }
+
+#filter_container input { width: 10em; padding: 0.2em 0.5em; border: 2px solid #ccc; background: #fff; color: #000; }
+
+@media (prefers-color-scheme: dark) { #filter_container input { border-color: #444; } }
+
+@media (prefers-color-scheme: dark) { #filter_container input { background: #1e1e1e; } }
+
+@media (prefers-color-scheme: dark) { #filter_container input { color: #eee; } }
+
+#filter_container input:focus { border-color: #007acc; }
+
+h2.stats { margin-top: .5em; font-size: 1em; }
+
+.stats button { font-family: inherit; font-size: inherit; border: 1px solid; border-radius: .2em; color: inherit; padding: .1em .5em; margin: 1px calc(.1em + 1px); cursor: pointer; border-color: #ccc; }
+
+@media (prefers-color-scheme: dark) { .stats button { border-color: #444; } }
+
+.stats button:active, .stats button:focus { outline: 2px dashed #007acc; }
+
+.stats button:active, .stats button:focus { outline: 2px dashed #007acc; }
+
+.stats button.run { background: #eeffee; }
+
+@media (prefers-color-scheme: dark) { .stats button.run { background: #373d29; } }
+
+.stats button.run.show_run { background: #dfd; border: 2px solid #00dd00; margin: 0 .1em; }
+
+@media (prefers-color-scheme: dark) { .stats button.run.show_run { background: #373d29; } }
+
+.stats button.mis { background: #ffeeee; }
+
+@media (prefers-color-scheme: dark) { .stats button.mis { background: #4b1818; } }
+
+.stats button.mis.show_mis { background: #fdd; border: 2px solid #ff0000; margin: 0 .1em; }
+
+@media (prefers-color-scheme: dark) { .stats button.mis.show_mis { background: #4b1818; } }
+
+.stats button.exc { background: #f7f7f7; }
+
+@media (prefers-color-scheme: dark) { .stats button.exc { background: #333; } }
+
+.stats button.exc.show_exc { background: #eee; border: 2px solid #808080; margin: 0 .1em; }
+
+@media (prefers-color-scheme: dark) { .stats button.exc.show_exc { background: #333; } }
+
+.stats button.par { background: #ffffd5; }
+
+@media (prefers-color-scheme: dark) { .stats button.par { background: #650; } }
+
+.stats button.par.show_par { background: #ffa; border: 2px solid #dddd00; margin: 0 .1em; }
+
+@media (prefers-color-scheme: dark) { .stats button.par.show_par { background: #650; } }
+
+.help_panel, #source p .annotate.long { display: none; position: absolute; z-index: 999; background: #ffffcc; border: 1px solid #888; border-radius: .2em; color: #333; padding: .25em .5em; }
+
+#source p .annotate.long { white-space: normal; float: right; top: 1.75em; right: 1em; height: auto; }
+
+#keyboard_icon { float: right; margin: 5px; cursor: pointer; }
+
+.help_panel { padding: .5em; border: 1px solid #883; }
+
+.help_panel .legend { font-style: italic; margin-bottom: 1em; }
+
+.indexfile .help_panel { width: 20em; min-height: 4em; }
+
+.pyfile .help_panel { width: 16em; min-height: 8em; }
+
+#panel_icon { float: right; cursor: pointer; }
+
+.keyhelp { margin: .75em; }
+
+.keyhelp .key { border: 1px solid black; border-color: #888 #333 #333 #888; padding: .1em .35em; font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-weight: bold; background: #eee; }
+
+#source { padding: 1em 0 1em 3.5rem; font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; }
+
+#source p { position: relative; white-space: pre; }
+
+#source p * { box-sizing: border-box; }
+
+#source p .n { float: left; text-align: right; width: 3.5rem; box-sizing: border-box; margin-left: -3.5rem; padding-right: 1em; color: #999; }
+
+@media (prefers-color-scheme: dark) { #source p .n { color: #777; } }
+
+#source p .n a { text-decoration: none; color: #999; }
+
+@media (prefers-color-scheme: dark) { #source p .n a { color: #777; } }
+
+#source p .n a:hover { text-decoration: underline; color: #999; }
+
+@media (prefers-color-scheme: dark) { #source p .n a:hover { color: #777; } }
+
+#source p.highlight .n { background: #ffdd00; }
+
+#source p .t { display: inline-block; width: 100%; box-sizing: border-box; margin-left: -.5em; padding-left: 0.3em; border-left: 0.2em solid #fff; }
+
+@media (prefers-color-scheme: dark) { #source p .t { border-color: #1e1e1e; } }
+
+#source p .t:hover { background: #f2f2f2; }
+
+@media (prefers-color-scheme: dark) { #source p .t:hover { background: #282828; } }
+
+#source p .t:hover ~ .r .annotate.long { display: block; }
+
+#source p .t .com { color: #008000; font-style: italic; line-height: 1px; }
+
+@media (prefers-color-scheme: dark) { #source p .t .com { color: #6A9955; } }
+
+#source p .t .key { font-weight: bold; line-height: 1px; }
+
+#source p .t .str { color: #0451A5; }
+
+@media (prefers-color-scheme: dark) { #source p .t .str { color: #9CDCFE; } }
+
+#source p.mis .t { border-left: 0.2em solid #ff0000; }
+
+#source p.mis.show_mis .t { background: #fdd; }
+
+@media (prefers-color-scheme: dark) { #source p.mis.show_mis .t { background: #4b1818; } }
+
+#source p.mis.show_mis .t:hover { background: #f2d2d2; }
+
+@media (prefers-color-scheme: dark) { #source p.mis.show_mis .t:hover { background: #532323; } }
+
+#source p.run .t { border-left: 0.2em solid #00dd00; }
+
+#source p.run.show_run .t { background: #dfd; }
+
+@media (prefers-color-scheme: dark) { #source p.run.show_run .t { background: #373d29; } }
+
+#source p.run.show_run .t:hover { background: #d2f2d2; }
+
+@media (prefers-color-scheme: dark) { #source p.run.show_run .t:hover { background: #404633; } }
+
+#source p.exc .t { border-left: 0.2em solid #808080; }
+
+#source p.exc.show_exc .t { background: #eee; }
+
+@media (prefers-color-scheme: dark) { #source p.exc.show_exc .t { background: #333; } }
+
+#source p.exc.show_exc .t:hover { background: #e2e2e2; }
+
+@media (prefers-color-scheme: dark) { #source p.exc.show_exc .t:hover { background: #3c3c3c; } }
+
+#source p.par .t { border-left: 0.2em solid #dddd00; }
+
+#source p.par.show_par .t { background: #ffa; }
+
+@media (prefers-color-scheme: dark) { #source p.par.show_par .t { background: #650; } }
+
+#source p.par.show_par .t:hover { background: #f2f2a2; }
+
+@media (prefers-color-scheme: dark) { #source p.par.show_par .t:hover { background: #6d5d0c; } }
+
+#source p .r { position: absolute; top: 0; right: 2.5em; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; }
+
+#source p .annotate { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; color: #666; padding-right: .5em; }
+
+@media (prefers-color-scheme: dark) { #source p .annotate { color: #ddd; } }
+
+#source p .annotate.short:hover ~ .long { display: block; }
+
+#source p .annotate.long { width: 30em; right: 2.5em; }
+
+#source p input { display: none; }
+
+#source p input ~ .r label.ctx { cursor: pointer; border-radius: .25em; }
+
+#source p input ~ .r label.ctx::before { content: "â–¶ "; }
+
+#source p input ~ .r label.ctx:hover { background: #d5f7ff; color: #666; }
+
+@media (prefers-color-scheme: dark) { #source p input ~ .r label.ctx:hover { background: #0f3a42; } }
+
+@media (prefers-color-scheme: dark) { #source p input ~ .r label.ctx:hover { color: #aaa; } }
+
+#source p input:checked ~ .r label.ctx { background: #aef; color: #666; border-radius: .75em .75em 0 0; padding: 0 .5em; margin: -.25em 0; }
+
+@media (prefers-color-scheme: dark) { #source p input:checked ~ .r label.ctx { background: #056; } }
+
+@media (prefers-color-scheme: dark) { #source p input:checked ~ .r label.ctx { color: #aaa; } }
+
+#source p input:checked ~ .r label.ctx::before { content: "â–¼ "; }
+
+#source p input:checked ~ .ctxs { padding: .25em .5em; overflow-y: scroll; max-height: 10.5em; }
+
+#source p label.ctx { color: #999; display: inline-block; padding: 0 .5em; font-size: .8333em; }
+
+@media (prefers-color-scheme: dark) { #source p label.ctx { color: #777; } }
+
+#source p .ctxs { display: block; max-height: 0; overflow-y: hidden; transition: all .2s; padding: 0 .5em; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; white-space: nowrap; background: #aef; border-radius: .25em; margin-right: 1.75em; }
+
+@media (prefers-color-scheme: dark) { #source p .ctxs { background: #056; } }
+
+#source p .ctxs span { display: block; text-align: right; }
+
+#index { font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 0.875em; }
+
+#index table.index { margin-left: -.5em; }
+
+#index td, #index th { text-align: right; width: 5em; padding: .25em .5em; border-bottom: 1px solid #eee; }
+
+@media (prefers-color-scheme: dark) { #index td, #index th { border-color: #333; } }
+
+#index td.name, #index th.name { text-align: left; width: auto; }
+
+#index th { font-style: italic; color: #333; cursor: pointer; }
+
+@media (prefers-color-scheme: dark) { #index th { color: #ddd; } }
+
+#index th:hover { background: #eee; }
+
+@media (prefers-color-scheme: dark) { #index th:hover { background: #333; } }
+
+#index th.headerSortDown, #index th.headerSortUp { white-space: nowrap; background: #eee; }
+
+@media (prefers-color-scheme: dark) { #index th.headerSortDown, #index th.headerSortUp { background: #333; } }
+
+#index th.headerSortDown:after { content: " ↑"; }
+
+#index th.headerSortUp:after { content: " ↓"; }
+
+#index td.name a { text-decoration: none; color: inherit; }
+
+#index tr.total td, #index tr.total_dynamic td { font-weight: bold; border-top: 1px solid #ccc; border-bottom: none; }
+
+#index tr.file:hover { background: #eee; }
+
+@media (prefers-color-scheme: dark) { #index tr.file:hover { background: #333; } }
+
+#index tr.file:hover td.name { text-decoration: underline; color: inherit; }
+
+#scroll_marker { position: fixed; right: 0; top: 0; width: 16px; height: 100%; background: #fff; border-left: 1px solid #eee; will-change: transform; }
+
+@media (prefers-color-scheme: dark) { #scroll_marker { background: #1e1e1e; } }
+
+@media (prefers-color-scheme: dark) { #scroll_marker { border-color: #333; } }
+
+#scroll_marker .marker { background: #ccc; position: absolute; min-height: 3px; width: 100%; }
+
+@media (prefers-color-scheme: dark) { #scroll_marker .marker { background: #444; } }
diff --git a/backend/secfit/htmlcov/workouts_permissions_py.html b/backend/secfit/htmlcov/workouts_permissions_py.html
new file mode 100644
index 0000000..903a706
--- /dev/null
+++ b/backend/secfit/htmlcov/workouts_permissions_py.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
+    <title>Coverage for workouts/permissions.py: 100%</title>
+    <link rel="icon" sizes="32x32" href="favicon_32.png">
+    <link rel="stylesheet" href="style.css" type="text/css">
+    <script type="text/javascript" src="jquery.min.js"></script>
+    <script type="text/javascript" src="jquery.hotkeys.js"></script>
+    <script type="text/javascript" src="jquery.isonscreen.js"></script>
+    <script type="text/javascript" src="coverage_html.js"></script>
+    <script type="text/javascript">
+        jQuery(document).ready(coverage.pyfile_ready);
+    </script>
+</head>
+<body class="pyfile">
+<div id="header">
+    <div class="content">
+        <h1>Coverage for <b>workouts/permissions.py</b> :
+            <span class="pc_cov">100%</span>
+        </h1>
+        <img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
+        <h2 class="stats">
+            32 statements &nbsp;
+            <button type="button" class="run shortkey_r button_toggle_run" title="Toggle lines run">32 run</button>
+            <button type="button" class="mis show_mis shortkey_m button_toggle_mis" title="Toggle lines missing">0 missing</button>
+            <button type="button" class="exc show_exc shortkey_x button_toggle_exc" title="Toggle lines excluded">0 excluded</button>
+        </h2>
+    </div>
+</div>
+<div class="help_panel">
+    <img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
+    <p class="legend">Hot-keys on this page</p>
+    <div>
+    <p class="keyhelp">
+        <span class="key">r</span>
+        <span class="key">m</span>
+        <span class="key">x</span>
+        <span class="key">p</span> &nbsp; toggle line displays
+    </p>
+    <p class="keyhelp">
+        <span class="key">j</span>
+        <span class="key">k</span> &nbsp; next/prev highlighted chunk
+    </p>
+    <p class="keyhelp">
+        <span class="key">0</span> &nbsp; (zero) top of page
+    </p>
+    <p class="keyhelp">
+        <span class="key">1</span> &nbsp; (one) first highlighted chunk
+    </p>
+    </div>
+</div>
+<div id="source">
+    <p id="t1" class="pln"><span class="n"><a href="#t1">1</a></span><span class="t"><span class="str">"""Contains custom DRF permissions classes for the workouts app</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t2" class="pln"><span class="n"><a href="#t2">2</a></span><span class="t"><span class="str">"""</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t3" class="run"><span class="n"><a href="#t3">3</a></span><span class="t"><span class="key">from</span> <span class="nam">rest_framework</span> <span class="key">import</span> <span class="nam">permissions</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t4" class="run"><span class="n"><a href="#t4">4</a></span><span class="t"><span class="key">from</span> <span class="nam">workouts</span><span class="op">.</span><span class="nam">models</span> <span class="key">import</span> <span class="nam">Workout</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t5" class="pln"><span class="n"><a href="#t5">5</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t6" class="pln"><span class="n"><a href="#t6">6</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t7" class="run"><span class="n"><a href="#t7">7</a></span><span class="t"><span class="key">class</span> <span class="nam">IsOwner</span><span class="op">(</span><span class="nam">permissions</span><span class="op">.</span><span class="nam">BasePermission</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t8" class="pln"><span class="n"><a href="#t8">8</a></span><span class="t">    <span class="str">"""Checks whether the requesting user is also the owner of the existing object"""</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t9" class="pln"><span class="n"><a href="#t9">9</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t10" class="run"><span class="n"><a href="#t10">10</a></span><span class="t">    <span class="key">def</span> <span class="nam">has_object_permission</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">,</span> <span class="nam">view</span><span class="op">,</span> <span class="nam">obj</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t11" class="run"><span class="n"><a href="#t11">11</a></span><span class="t">        <span class="key">return</span> <span class="nam">obj</span><span class="op">.</span><span class="nam">owner</span> <span class="op">==</span> <span class="nam">request</span><span class="op">.</span><span class="nam">user</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t12" class="pln"><span class="n"><a href="#t12">12</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t13" class="pln"><span class="n"><a href="#t13">13</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t14" class="run"><span class="n"><a href="#t14">14</a></span><span class="t"><span class="key">class</span> <span class="nam">IsOwnerOfWorkout</span><span class="op">(</span><span class="nam">permissions</span><span class="op">.</span><span class="nam">BasePermission</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t15" class="pln"><span class="n"><a href="#t15">15</a></span><span class="t">    <span class="str">"""Checks whether the requesting user is also the owner of the new or existing object"""</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t16" class="pln"><span class="n"><a href="#t16">16</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t17" class="run"><span class="n"><a href="#t17">17</a></span><span class="t">    <span class="key">def</span> <span class="nam">has_permission</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">,</span> <span class="nam">view</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t18" class="run"><span class="n"><a href="#t18">18</a></span><span class="t">        <span class="key">if</span> <span class="nam">request</span><span class="op">.</span><span class="nam">method</span> <span class="op">==</span> <span class="str">"POST"</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t19" class="run"><span class="n"><a href="#t19">19</a></span><span class="t">            <span class="key">if</span> <span class="nam">request</span><span class="op">.</span><span class="nam">data</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">"workout"</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t20" class="run"><span class="n"><a href="#t20">20</a></span><span class="t">                <span class="nam">workout_id</span> <span class="op">=</span> <span class="nam">request</span><span class="op">.</span><span class="nam">data</span><span class="op">[</span><span class="str">"workout"</span><span class="op">]</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">"/"</span><span class="op">)</span><span class="op">[</span><span class="op">-</span><span class="num">2</span><span class="op">]</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t21" class="run"><span class="n"><a href="#t21">21</a></span><span class="t">                <span class="nam">workout</span> <span class="op">=</span> <span class="nam">Workout</span><span class="op">.</span><span class="nam">objects</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="nam">pk</span><span class="op">=</span><span class="nam">workout_id</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t22" class="run"><span class="n"><a href="#t22">22</a></span><span class="t">                <span class="key">if</span> <span class="nam">workout</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t23" class="run"><span class="n"><a href="#t23">23</a></span><span class="t">                    <span class="key">return</span> <span class="nam">workout</span><span class="op">.</span><span class="nam">owner</span> <span class="op">==</span> <span class="nam">request</span><span class="op">.</span><span class="nam">user</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t24" class="run"><span class="n"><a href="#t24">24</a></span><span class="t">            <span class="key">return</span> <span class="key">False</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t25" class="pln"><span class="n"><a href="#t25">25</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t26" class="run"><span class="n"><a href="#t26">26</a></span><span class="t">        <span class="key">return</span> <span class="key">True</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t27" class="pln"><span class="n"><a href="#t27">27</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t28" class="run"><span class="n"><a href="#t28">28</a></span><span class="t">    <span class="key">def</span> <span class="nam">has_object_permission</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">,</span> <span class="nam">view</span><span class="op">,</span> <span class="nam">obj</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t29" class="run"><span class="n"><a href="#t29">29</a></span><span class="t">        <span class="key">return</span> <span class="nam">obj</span><span class="op">.</span><span class="nam">workout</span><span class="op">.</span><span class="nam">owner</span> <span class="op">==</span> <span class="nam">request</span><span class="op">.</span><span class="nam">user</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t30" class="pln"><span class="n"><a href="#t30">30</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t31" class="pln"><span class="n"><a href="#t31">31</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t32" class="run"><span class="n"><a href="#t32">32</a></span><span class="t"><span class="key">class</span> <span class="nam">IsCoachAndVisibleToCoach</span><span class="op">(</span><span class="nam">permissions</span><span class="op">.</span><span class="nam">BasePermission</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t33" class="pln"><span class="n"><a href="#t33">33</a></span><span class="t">    <span class="str">"""Checks whether the requesting user is the existing object's owner's coach</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t34" class="pln"><span class="n"><a href="#t34">34</a></span><span class="t"><span class="str">    and whether the object (workout) has a visibility of Public or Coach.</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t35" class="pln"><span class="n"><a href="#t35">35</a></span><span class="t"><span class="str">    """</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t36" class="pln"><span class="n"><a href="#t36">36</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t37" class="run"><span class="n"><a href="#t37">37</a></span><span class="t">    <span class="key">def</span> <span class="nam">has_object_permission</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">,</span> <span class="nam">view</span><span class="op">,</span> <span class="nam">obj</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t38" class="run"><span class="n"><a href="#t38">38</a></span><span class="t">        <span class="key">return</span> <span class="nam">obj</span><span class="op">.</span><span class="nam">owner</span><span class="op">.</span><span class="nam">coach</span> <span class="op">==</span> <span class="nam">request</span><span class="op">.</span><span class="nam">user</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t39" class="pln"><span class="n"><a href="#t39">39</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t40" class="pln"><span class="n"><a href="#t40">40</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t41" class="run"><span class="n"><a href="#t41">41</a></span><span class="t"><span class="key">class</span> <span class="nam">IsCoachOfWorkoutAndVisibleToCoach</span><span class="op">(</span><span class="nam">permissions</span><span class="op">.</span><span class="nam">BasePermission</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t42" class="pln"><span class="n"><a href="#t42">42</a></span><span class="t">    <span class="str">"""Checks whether the requesting user is the existing workout's owner's coach</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t43" class="pln"><span class="n"><a href="#t43">43</a></span><span class="t"><span class="str">    and whether the object has a visibility of Public or Coach.</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t44" class="pln"><span class="n"><a href="#t44">44</a></span><span class="t"><span class="str">    """</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t45" class="pln"><span class="n"><a href="#t45">45</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t46" class="run"><span class="n"><a href="#t46">46</a></span><span class="t">    <span class="key">def</span> <span class="nam">has_object_permission</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">,</span> <span class="nam">view</span><span class="op">,</span> <span class="nam">obj</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t47" class="run"><span class="n"><a href="#t47">47</a></span><span class="t">        <span class="key">return</span> <span class="nam">obj</span><span class="op">.</span><span class="nam">workout</span><span class="op">.</span><span class="nam">owner</span><span class="op">.</span><span class="nam">coach</span> <span class="op">==</span> <span class="nam">request</span><span class="op">.</span><span class="nam">user</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t48" class="pln"><span class="n"><a href="#t48">48</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t49" class="pln"><span class="n"><a href="#t49">49</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t50" class="run"><span class="n"><a href="#t50">50</a></span><span class="t"><span class="key">class</span> <span class="nam">IsPublic</span><span class="op">(</span><span class="nam">permissions</span><span class="op">.</span><span class="nam">BasePermission</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t51" class="pln"><span class="n"><a href="#t51">51</a></span><span class="t">    <span class="str">"""Checks whether the object (workout) has visibility of Public."""</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t52" class="pln"><span class="n"><a href="#t52">52</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t53" class="run"><span class="n"><a href="#t53">53</a></span><span class="t">    <span class="key">def</span> <span class="nam">has_object_permission</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">,</span> <span class="nam">view</span><span class="op">,</span> <span class="nam">obj</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t54" class="run"><span class="n"><a href="#t54">54</a></span><span class="t">        <span class="key">return</span> <span class="nam">obj</span><span class="op">.</span><span class="nam">visibility</span> <span class="op">==</span> <span class="str">"PU"</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t55" class="pln"><span class="n"><a href="#t55">55</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t56" class="pln"><span class="n"><a href="#t56">56</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t57" class="run"><span class="n"><a href="#t57">57</a></span><span class="t"><span class="key">class</span> <span class="nam">IsWorkoutPublic</span><span class="op">(</span><span class="nam">permissions</span><span class="op">.</span><span class="nam">BasePermission</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t58" class="pln"><span class="n"><a href="#t58">58</a></span><span class="t">    <span class="str">"""Checks whether the object's workout has visibility of Public."""</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t59" class="pln"><span class="n"><a href="#t59">59</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t60" class="run"><span class="n"><a href="#t60">60</a></span><span class="t">    <span class="key">def</span> <span class="nam">has_object_permission</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">,</span> <span class="nam">view</span><span class="op">,</span> <span class="nam">obj</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t61" class="run"><span class="n"><a href="#t61">61</a></span><span class="t">        <span class="key">return</span> <span class="nam">obj</span><span class="op">.</span><span class="nam">workout</span><span class="op">.</span><span class="nam">visibility</span> <span class="op">==</span> <span class="str">"PU"</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t62" class="pln"><span class="n"><a href="#t62">62</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t63" class="pln"><span class="n"><a href="#t63">63</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t64" class="run"><span class="n"><a href="#t64">64</a></span><span class="t"><span class="key">class</span> <span class="nam">IsReadOnly</span><span class="op">(</span><span class="nam">permissions</span><span class="op">.</span><span class="nam">BasePermission</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t65" class="pln"><span class="n"><a href="#t65">65</a></span><span class="t">    <span class="str">"""Checks whether the HTTP request verb is only for retrieving data (GET, HEAD, OPTIONS)"""</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t66" class="pln"><span class="n"><a href="#t66">66</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
+    <p id="t67" class="run"><span class="n"><a href="#t67">67</a></span><span class="t">    <span class="key">def</span> <span class="nam">has_object_permission</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">,</span> <span class="nam">view</span><span class="op">,</span> <span class="nam">obj</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
+    <p id="t68" class="run"><span class="n"><a href="#t68">68</a></span><span class="t">        <span class="key">return</span> <span class="nam">request</span><span class="op">.</span><span class="nam">method</span> <span class="key">in</span> <span class="nam">permissions</span><span class="op">.</span><span class="nam">SAFE_METHODS</span>&nbsp;</span><span class="r"></span></p>
+</div>
+<div id="footer">
+    <div class="content">
+        <p>
+            <a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v5.5</a>,
+            created at 2021-03-06 16:23 +0100
+        </p>
+    </div>
+</div>
+</body>
+</html>
-- 
GitLab