trill_on_swish/commit
added all needed files
author | rzese |
---|---|
Fri Jul 15 16:33:36 2016 +0200 | |
committer | rzese |
Fri Jul 15 16:33:36 2016 +0200 | |
commit | d8eca0b980c98821ea98ad606c34eac09802af67 |
tree | c3b933d0e054a5828e5e41e5d7589bf03d31bdd1 |
parent | 890b440622f06619c2e314b9f8ba114efc5d46ac |
Diff style: patch stat
diff --git a/client/swish-ask.sh b/client/swish-ask.sh new file mode 100755 index 0000000..5d19b6a --- /dev/null +++ b/client/swish-ask.sh @@ -0,0 +1,87 @@ +#!/bin/bash +# +# Ask information from a Pengines/SWISH server from the shell. +# +# This program allows you to download query results from a SWISH server +# as CSV data. + +server=${SWISH_SERVER-http://localhost:3020} +srctext= +format=${SWISH_FORMAT-rdf} +program=$(basename $0) + +usage() +{ +cat << _EOM_ +Usage: $program "[--server=URL] [--format=rdf|prolog]" file.pl ... projection query + +Where + + - server is by default "$server". Environment: SWISH_SERVER + - format is by default "$format". Environment: SWISH_FORMAT + - file.pl ... are files saved in SWISH. Zero or more files are allowed + - projection is a comma-separated list of Prolog variables that define + the CSV columns. + - query is a Prolog goal using the variables from projection. + +For example + + $program X 'X is 1<<100' + X + 1267650600228229401496703205376 + + $program factbook.pl Code,Country 'country(Country,Code)' + Code,Country + af,http://www4.wiwiss.fu-berlin.de/factbook/resource/Afghanistan + ax,http://www4.wiwiss.fu-berlin.de/factbook/resource/Akrotiri + ... +_EOM_ +} + +done=false +while [ $done = false ]; do + case "$1" in + --server=*) + server=$(echo $1 | sed 's/.*=//') + shift + ;; + --format=*) + format=$(echo $1 | sed 's/.*=//') + case "$format" in + rdf|prolog) + ;; + *) + usage + exit 1 + ;; + esac + shift + ;; + *.pl) + script=$(echo $1 | sed 's/.*=//') + srctext+=":- include('$script'). " + shift + ;; + *) + done=true + ;; + esac +done + +vars="$1" +query="$2" + +if [ -z "$vars" -o -z "$query" ]; then + usage + exit 1 +fi + +curl -s \ + -d ask="$query" \ + -d template="$format($vars)" \ + -d application="swish" \ + -d src_text="$srctext" \ + -d format=csv \ + -d chunk=10 \ + -d solutions=all \ + $server/pengine/create diff --git a/examples/clpfd_queens.pl b/examples/clpfd_queens.pl new file mode 100644 index 0000000..e2d5f1f --- /dev/null +++ b/examples/clpfd_queens.pl @@ -0,0 +1,36 @@ +% render solutions nicely. +:- use_rendering(chess). + +%% n_queens(?N, ?Cols) is nondet. +% +% @param The k-th element of Cols is the column number of the +% queen in row k. +% @author Markus Triska + +:- use_module(library(clpfd)). + +n_queens(N, Qs) :- + length(Qs, N), + Qs ins 1..N, + safe_queens(Qs). + +safe_queens([]). +safe_queens([Q|Qs]) :- + safe_queens(Qs, Q, 1), + safe_queens(Qs). + +safe_queens([], _, _). +safe_queens([Q|Qs], Q0, D0) :- + Q0 #\= Q, + abs(Q0 - Q) #\= D0, + D1 #= D0 + 1, + safe_queens(Qs, Q0, D1). + + +/** <examples> + +?- n_queens(8, Qs), labeling([ff], Qs). +?- n_queens(24, Qs), labeling([ff], Qs). +?- n_queens(100, Qs), labeling([ff], Qs). + +*/ diff --git a/examples/clpfd_sudoku.pl b/examples/clpfd_sudoku.pl new file mode 100644 index 0000000..1394ff4 --- /dev/null +++ b/examples/clpfd_sudoku.pl @@ -0,0 +1,38 @@ +% render solutions nicely. +:- use_rendering(sudoku). + +:- use_module(library(clpfd)). + +% Example by Markus Triska, taken from the SWI-Prolog manual. + +sudoku(Rows) :- + length(Rows, 9), maplist(same_length(Rows), Rows), + append(Rows, Vs), Vs ins 1..9, + maplist(all_distinct, Rows), + transpose(Rows, Columns), + maplist(all_distinct, Columns), + Rows = [A,B,C,D,E,F,G,H,I], + blocks(A, B, C), blocks(D, E, F), blocks(G, H, I). + +blocks([], [], []). +blocks([A,B,C|Bs1], [D,E,F|Bs2], [G,H,I|Bs3]) :- + all_distinct([A,B,C,D,E,F,G,H,I]), + blocks(Bs1, Bs2, Bs3). + +problem(1, [[_,_,_, _,_,_, _,_,_], + [_,_,_, _,_,3, _,8,5], + [_,_,1, _,2,_, _,_,_], + + [_,_,_, 5,_,7, _,_,_], + [_,_,4, _,_,_, 1,_,_], + [_,9,_, _,_,_, _,_,_], + + [5,_,_, _,_,_, _,7,3], + [_,_,2, _,1,_, _,_,_], + [_,_,_, _,4,_, _,_,9]]). + + +/** <examples> + +?- problem(1, Rows), sudoku(Rows). +*/ diff --git a/examples/database.pl b/examples/database.pl new file mode 100644 index 0000000..4d88ef5 --- /dev/null +++ b/examples/database.pl @@ -0,0 +1,24 @@ +% Doing database manipulation +% --------------------------- + +:- dynamic p/1. + +assert_and_retract :- + forall(between(1, 10, X), assert(p(X))), + forall(retract(p(X)), writeln(X)). + +assert_many(Count) :- + forall(between(1, Count, X), assert(p(X))), + retractall(p(_)). + +/** <examples> + +% Basic usage +?- assert_and_retract. + +% Show timing +?- assert_many(1 000 000). + +% Pengines have a (default) 100Mb limit to their program size +?- assert_many(10 000 000). +*/ diff --git a/examples/dict.swinb b/examples/dict.swinb new file mode 100644 index 0000000..4bc720b --- /dev/null +++ b/examples/dict.swinb @@ -0,0 +1,133 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# Using dicts + +SWI-Prolog version 7 introduces the _dict_ data type as a principle type that is supported by a dedicated syntax and low level operations. This notebook illustrates some of the properties of the dict type. + +A dict consists of a _tag_ and set of _key_ - _value_ associations. Here is an example. +</div> + +<div class="nb-cell query"> +A = tag{name:'Bob', age:31}. +</div> + +<div class="nb-cell markdown"> +## Unifying dicts + +The _tag_ and the values of a dict may be unbound, but the keys must be bound to atoms or small integers. Dicts unify if the tag unifies, they have the same set of keys and each value associated with a key unifies with the corresponding value of the other dict. After unification, both dicts are equal (==/2). +</div> + +<div class="nb-cell query"> +tag{name:'Bob', age:Age} = Tag{age:31, name:Name}. +</div> + +<div class="nb-cell markdown"> +Dicts define two operators for _partial_ unification: :</2 and >:</2. The first (`A :< B`) demands that the tags unify and for each key in `A` there is a key in `B` whose value unifies. This construct is typically used to select a clause based on information in a +dict. Consider this program: +</div> + +<div class="nb-cell program"> +process(Dict) :- + person{name:Name, age:Age} :< Dict, !, + format('~w is ~w years old~n', [Name, Age]). +</div> + +<div class="nb-cell query"> +process(person{name:'Bob', age:31}). +</div> + +<div class="nb-cell markdown"> +The `A >:< B` operator says that the two dicts do not contradict. This implies their tags unify and all values from the _intersection_ of their key-sets unify. This can be used to combine two dicts if they do not contradict: +</div> + +<div class="nb-cell program"> +join_dicts(D1, D2, D3) :- + D1 >:< D2, + put_dict(D1, D2, D3). +</div> + +<div class="nb-cell query"> +join_dicts(person{name:'Bob', age:31}, _{gender:male}, D). +</div> + +<div class="nb-cell markdown"> +but +</div> + +<div class="nb-cell query"> +join_dicts(person{name:'Bob', age:31}, _{age:32, gender:male}, D). +</div> + +<div class="nb-cell markdown"> +## Getting values from a dict + +SWI-Prolog version 7 offers a limited form of _functional notation_, which allows fetching information from a dict without using an explicit goal and without inventing a new variable. If we wish to know in what year Bob was born, we can write the code below. +Note that the date/time API does not yet support dicts. +</div> + +<div class="nb-cell program"> +born(Person, Year) :- + get_time(Now), + stamp_date_time(Now, DateTime, local), + date_time_value(year, DateTime, YearNow), + Year is YearNow - Person.age. +</div> + +<div class="nb-cell query"> +born(person{name:'Bob', age:31}, Year). +</div> + +<div class="nb-cell markdown"> +Unlike the :</2 and >:</2, the functional notation raises an error if the requested key is not present, which can ge avoided by using the `get` function. Consider the two queries below. +</div> + +<div class="nb-cell query"> +writeln(person{name:'Bob', age:31}.gender). +</div> + +<div class="nb-cell query"> +writeln(person{name:'Bob', age:31}.get(gender)). +</div> + +<div class="nb-cell markdown"> +## Setting values in a dict + +Prolog dicts are _not_ destructive objects. They must be compared with compound terms such as `person('Bob', 31)`. This also implies you cannot modify the value associated with a key, add new keys or delete keys without creating a new dict. As demonstrated above, there are predicates that create a modified dict, such as put_dict/3. In addition, one can use the functional notation using the built in functions put(Key,Value) and put(Dict). The two queries below are the same. +</div> + +<div class="nb-cell query"> +A = person{name:'Bob', age:31}.put(gender, male). +</div> + +<div class="nb-cell query"> +A = person{name:'Bob', age:31}.put(_{gender:male}). +</div> + +<div class="nb-cell markdown"> +## Sorting dicts + +The predicate sort/4 can be used to sort dicts on a key. We illustrate this using a simple database. +</div> + +<div class="nb-cell program"> +person(1, person{name:'Bob', age:31}). +person(2, person{name:'Jane', age:30, gender:female}). +person(3, person{name:'Mary', age:25}). +</div> + +<div class="nb-cell query"> +findall(Person, person(_Id, Person), Persons), +sort(age, =<, Persons, ByAge). +</div> + +<div class="nb-cell markdown"> +# Concluding + +The dict type provides a natural mechanism to deal with key-value associations for which the set of keys is not a-priory known. Dicts are easily created, compactly stored and comfortably as well as efficiently queried for a single key or multiple keys with a single statement. + +Dicts however cannot be modified and allow only for creating a derived copy. Consider +doing a word frequency count on a text. We could implement that by reading the words one-by-one, and updating a dict accordingly. This would be slow because a new dict must be created for every word encountered (either adding a key or incrementing the value of a key). In this case one should sort the list and create the frequency count in a single cheap pass. In cases where incremental update to a large name-value set is required it is more efficient to use library(assoc) or library(rbtrees). If the (stable) result is used for further processing, it might be translated into a dict to profit from the more concise representation, faster (low-level) lookup and functional notation based access. +</div> + +</div> diff --git a/examples/eliza.pl b/examples/eliza.pl new file mode 100644 index 0000000..0393c0b --- /dev/null +++ b/examples/eliza.pl @@ -0,0 +1,31 @@ +%% eliza(+Stimuli, -Response) is det. +% @param Stimuli is a list of atoms (words). +% @author Richard A. O'Keefe (The Craft of Prolog) + +eliza(Stimuli, Response) :- + template(InternalStimuli, InternalResponse), + match(InternalStimuli, Stimuli), + match(InternalResponse, Response), + !. + +template([s([i,am]),s(X)], [s([why,are,you]),s(X),w('?')]). +template([w(i),s(X),w(you)], [s([why,do,you]),s(X),w(me),w('?')]). + + +match([],[]). +match([Item|Items],[Word|Words]) :- + match(Item, Items, Word, Words). + +match(w(Word), Items, Word, Words) :- + match(Items, Words). +match(s([Word|Seg]), Items, Word, Words0) :- + append(Seg, Words1, Words0), + match(Items, Words1). + + +/** <examples> + +?- eliza([i, am, very, hungry], Response). +?- eliza([i, love, you], Response). + +*/ diff --git a/examples/examples_swish.swinb b/examples/examples_swish.swinb new file mode 100644 index 0000000..f306fd8 --- /dev/null +++ b/examples/examples_swish.swinb @@ -0,0 +1,46 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# Welcome to SWISH + +You are reading a SWISH _notebook_. A notebook is a mixture of _text_, _programs_ and _queries_. This notebook gives an overview of example programs shipped with SWISH. + + - *First steps* + - [Knowledge bases](example/kb.pl) provides a really simple + knowledge base with example queries. + - [Lists](example/lists.pl) defines a couple of really simple + list operations and illustrates timing _naive reverse_. + - *Classics* + - [Movie database](example/movies.pl) provides a couple of + thousands of facts about movies for you to query. + - [Expert system](example/expert_system.pl) illustrates simple + meta-interpretation of rules and asking for missing knowledge. + - [Eliza](example/eliza.pl) implements the classical shrink. + - [English grammar](example/grammar.pl) DCG rules for parsing + some simple English sentences and show the result as an SVG + tree. + - *Puzzles* + - [Einstein's Riddle](example/houses_puzzle.pl) A famous puzzle + attributed to Einstein. + - [N-Queens (traditional)](example/queens.pl) solves the N-queens + problem using traditional Prolog and illustrates domain-specific + (graphics) output. + - [N-Queens (clp(fd))](example/clpfd_queens.pl) as above, + illustrating the value of constraint programming. + - [Sudoku (clp(fd))](example/clpfd_sudoku.pl) solves the sudoku + puzzle using constraint programming, redering the result as a + table. + - [Knights and Knaves (clp(b))](example/knights_and_knaves.pl) + solves boolean problems. + - *Side effects and I/O* + - [Read and write](example/io.pl) demonstrates that you can read from + and write to the web interface. + - [Assert and retract](example/database.pl) demonstrates using the + dynamic database. + - *International character support* + - [Japanese source](example/japanese.pl) gives example source from + the Japanese Wikipedia site on Prolog, illustrating multi-lingual + capabilities of SWI-Prolog and SWISH. +</div> + +</div> diff --git a/examples/expert_system.pl b/examples/expert_system.pl new file mode 100644 index 0000000..bc5cd23 --- /dev/null +++ b/examples/expert_system.pl @@ -0,0 +1,37 @@ +% A meta-interpreter implementing +% a tiny expert-system +% -------------------------------- + + +prove(true) :- !. +prove((B, Bs)) :- !, + prove(B), + prove(Bs). +prove(H) :- + clause(H, B), + prove(B). +prove(H) :- + askable(H), + writeln(H), + read(Answer), + Answer == yes. + + +good_pet(X) :- bird(X), small(X). +good_pet(X) :- cuddly(X), yellow(X). + +bird(X) :- has_feathers(X), tweets(X). + +yellow(tweety). + +askable(tweets(_)). +askable(small(_)). +askable(cuddly(_)). +askable(has_feathers(_)). + + +/** <examples> + +?- prove(good_pet(tweety)). + +*/ diff --git a/examples/grammar.pl b/examples/grammar.pl new file mode 100644 index 0000000..7515b4b --- /dev/null +++ b/examples/grammar.pl @@ -0,0 +1,42 @@ +% Render parse trees using a tree, but ignore lists Relies on native SVG +% support in the browser. IF THE ANSWER LOOKS EMPTY, COMMENT OR REMOVE +% THE LINE BELOW. +:- use_rendering(svgtree, [list(false)]). + +% A simple English DCG grammar +% ============================ + +s(s(NP,VP)) --> np(NP, Num), vp(VP, Num). + +np(NP, Num) --> pn(NP, Num). +np(np(Det,N), Num) --> det(Det, Num), n(N, Num). +np(np(Det,N,PP), Num) --> det(Det, Num), n(N, Num), pp(PP). + +vp(vp(V,NP), Num) --> v(V, Num), np(NP, _). +vp(vp(V,NP,PP), Num) --> v(V, Num), np(NP, _), pp(PP). + +pp(pp(P,NP)) --> p(P), np(NP, _). + +det(det(a), sg) --> [a]. +det(det(the), _) --> [the]. + +pn(pn(john), sg) --> [john]. + +n(n(man), sg) --> [man]. +n(n(men), pl) --> [men]. +n(n(telescope), sg) --> [telescope]. + +v(v(sees), sg) --> [sees]. +v(v(see), pl) --> [see]. +v(v(saw), _) --> [saw]. + +p(p(with)) --> [with]. + + +/** <examples> + +?- phrase(s(Tree), [john, saw, a, man, with, a, telescope]). +?- phrase(s(Tree), Sentence). +?- between(1, 8, N), length(S, N), phrase(s(_), S), writeln(S), sleep(0.2), false. + +*/ diff --git a/examples/houses_puzzle.pl b/examples/houses_puzzle.pl new file mode 100644 index 0000000..9bdedcb --- /dev/null +++ b/examples/houses_puzzle.pl @@ -0,0 +1,73 @@ +%% houses(-Solution) +% @param Solution is a list of houses that satisfy all constraints. +% @author Folklore attributes this puzzle to Einstein +% @see http://en.wikipedia.org/wiki/Zebra_Puzzle + + +/* Houses logical puzzle: who owns the zebra and who drinks water? + + 1) Five colored houses in a row, each with an owner, a pet, cigarettes, and a drink. + 2) The English lives in the red house. + 3) The Spanish has a dog. + 4) They drink coffee in the green house. + 5) The Ukrainian drinks tea. + 6) The green house is next to the white house. + 7) The Winston smoker has a serpent. + 8) In the yellow house they smoke Kool. + 9) In the middle house they drink milk. + 10) The Norwegian lives in the first house from the left. + 11) The Chesterfield smoker lives near the man with the fox. + 12) In the house near the house with the horse they smoke Kool. + 13) The Lucky Strike smoker drinks juice. + 14) The Japanese smokes Kent. + 15) The Norwegian lives near the blue house. + +Who owns the zebra and who drinks water? +*/ + +% Render the houses term as a nice table. +:- use_rendering(table, + [header(h('Owner', 'Pet', 'Cigarette', 'Drink', 'Color'))]). + +zebra_owner(Owner) :- + houses(Hs), + member(h(Owner,zebra,_,_,_), Hs). + +water_drinker(Drinker) :- + houses(Hs), + member(h(Drinker,_,_,water,_), Hs). + + +houses(Hs) :- + % each house in the list Hs of houses is represented as: + % h(Nationality, Pet, Cigarette, Drink, Color) + length(Hs, 5), % 1 + member(h(english,_,_,_,red), Hs), % 2 + member(h(spanish,dog,_,_,_), Hs), % 3 + member(h(_,_,_,coffee,green), Hs), % 4 + member(h(ukrainian,_,_,tea,_), Hs), % 5 + next(h(_,_,_,_,green), h(_,_,_,_,white), Hs), % 6 + member(h(_,snake,winston,_,_), Hs), % 7 + member(h(_,_,kool,_,yellow), Hs), % 8 + Hs = [_,_,h(_,_,_,milk,_),_,_], % 9 + Hs = [h(norwegian,_,_,_,_)|_], % 10 + next(h(_,fox,_,_,_), h(_,_,chesterfield,_,_), Hs), % 11 + next(h(_,_,kool,_,_), h(_,horse,_,_,_), Hs), % 12 + member(h(_,_,lucky,juice,_), Hs), % 13 + member(h(japonese,_,kent,_,_), Hs), % 14 + next(h(norwegian,_,_,_,_), h(_,_,_,_,blue), Hs), % 15 + member(h(_,_,_,water,_), Hs), % one of them drinks water + member(h(_,zebra,_,_,_), Hs). % one of them owns a zebra + +next(A, B, Ls) :- append(_, [A,B|_], Ls). +next(A, B, Ls) :- append(_, [B,A|_], Ls). + +/** <examples> + +?- zebra_owner(Owner). + +?- water_drinker(Drinker). + +?- houses(Houses). + +*/ diff --git a/examples/htmlcell.swinb b/examples/htmlcell.swinb new file mode 100644 index 0000000..77178d4 --- /dev/null +++ b/examples/htmlcell.swinb @@ -0,0 +1,175 @@ +<div class="notebook"> + +<div class="nb-cell html"> +<h2>Using HTML cells in SWISH notebooks</h2> + +<p> + This notebook shows how HTML cells in a notebook can be used to create arbitrary web applications + inside a notebook. The HTML is placed in a <code>div</code> element and is subject to + <a href="http://getbootstrap.com/">Bootstrap</a> styling. +</p> +<p> + The cell can contain <code>script</code> elements. The script elements are executed after + the whole notebook is loaded and after editing the HTML cell and clicking outside the cell. + First, the text of all script element without a <code>lang</code> attribute or <code>lang="text/javascript"</code> + is collected. This is wrapped into an <em>anonymous</em> function with the argument + <code>notebook</code>. The <code>notebook</code> argument is an object with the following + properties: +</p> + +<div class="list-group"> + <dl class="dl-horizontal"> + <dt>.cell()</dt><dd>Returns a jQuery object pointing to the HTML cell + </dd><dt>.notebook()</dt><dd>Returns a jQuery object of the entire notebook + </dd><dt>.$(selector)</dt><dd>Returns a jQuery object holding all DOM elements + matching <var>selector</var> in the current HTML cell. + </dd><dt>.run(query, parameters)</dt><dd>Run the named query cell. <var>Parameters</var> is an object + binding Prolog variables in the query to specified values. + </dd><dt>.swish(options)</dt><dd>Wrapper around <code>new Pengine()</code> that fetches the sources + using the same algorithm as a query cell and sets the <code>application</code> to <code>swish</code>. + </dd><dt>.submit(form, options)</dt><dd>Submit a (Bootstrap) form to a predicate. This provides a + wrapper around <code>.swish</code> that collects the content of the indicated <code>form</code> (a + jQuery selector), calls <code>options.predicate</code> with a single argument that is a dict that + contains the fields of the form. On success, <code>options.onsuccess</code> is called. If an + error occurs, this is displayed. + </dd></dl> +</div> + +<p> + Double click anywhere in this cell to <b>see the source</b>. Then click anywhere + inside the notebook, but <em>outside</em> this cell to see the result. +</p> + +<h4>Example</h4> + +<p>In the example below we provide an English grammer, some example sentences + and simple Bootstrap form to interact with the query. The examples are loaded + dynamically from the example sentences defined in the Prolog program at the + end of the page. +</p> + +<div class="panel panel-default"> + <div class="panel-body"> + <div class="form-group"> + <label>Sentence</label> + <div class="input-group"> + <div class="input-group-btn"> + <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Example + <span class="caret"></span></button> + <ul class="dropdown-menu"> + </ul> + </div> + <input class="form-control"> + <div class="input-group-btn"> + <button type="button" class="btn btn-primary">Parse</button> + </div> + </div> + </div> + </div> +</div> + +<script> + // Load examples from the predicate examples/1. notebook.swish() is a wrapper + // around new Pengine() that fetches the sources using the same algorithm as + // a query cell and set the `application` to `swish`. + // notebook.$() is a shorthand for notebook.cell().find(), evaluating to a + // jQuery object that matches the objects from the current cell. + function loadExamples() { + var seen = 0; + notebook.$(".dropdown-menu").html(""); + notebook.swish({ ask: "example(Ex)", + ondata: function(data) { + notebook.$(".dropdown-menu").append('<li><a>'+data.Ex+'</li>'); + if ( seen++ == 0 ) + notebook.$("input").val(data.Ex); + } + }); + } + // Load the examples on page load as well as if the user clicks the + // dropdown menu, so changes are reflected. + loadExamples(); + notebook.$(".dropdown-toggle").on("click", loadExamples); + + // Pass selected examples to the input field. + notebook.$(".dropdown-menu").on("click", "li", function(ev) { + notebook.$("input").val($(this).text()); + }); + + // If the "Parse" button is clicked, run the query named "parse" + // binding Sentence to the input string. The function + // notebook.run() takes the name of a query and an object + // holding bindings. This is translated to run the query + // Sentence = (String), (parse(Sentence, Tree)). + notebook.$(".btn-primary").on("click", function() { + notebook.run("parse", {Sentence: notebook.$("input").val()}); + }); +</script> +</div> + +<div class="nb-cell query" name="parse"> +parse(Sentence, Tree). +</div> + +<div class="nb-cell markdown"> +### The programs + +Below are three program fragments. All three are declared as _background_ programs, so they are available to all queries posted from this notebook. They specify + + - The grammar itself + - Examples that are loaded into the above interface. + - Calling the grammar and translating it to a graphical tree + +You can change the grammar as well as the example sentences and see the immediate effect. +</div> + +<div class="nb-cell program" data-background="true"> +% A simple English DCG grammar +% ============================ + +s(s(NP,VP)) --> np(NP, Num), vp(VP, Num). + +np(NP, Num) --> pn(NP, Num). +np(np(Det,N), Num) --> det(Det, Num), n(N, Num). +np(np(Det,N,PP), Num) --> det(Det, Num), n(N, Num), pp(PP). + +vp(vp(V,NP), Num) --> v(V, Num), np(NP, _). +vp(vp(V,NP,PP), Num) --> v(V, Num), np(NP, _), pp(PP). + +pp(pp(P,NP)) --> p(P), np(NP, _). + +det(det(a), sg) --> [a]. +det(det(the), _) --> [the]. + +pn(pn(john), sg) --> [john]. + +n(n(man), sg) --> [man]. +n(n(men), pl) --> [men]. +n(n(telescope), sg) --> [telescope]. + +v(v(sees), sg) --> [sees]. +v(v(see), pl) --> [see]. +v(v(saw), _) --> [saw]. + +p(p(with)) --> [with]. +</div> + +<div class="nb-cell program" data-background="true" data-singleline="true"> +example("john sees a man"). +example("a man sees john"). +example("john sees a man with a telescope"). +</div> + +<div class="nb-cell program" data-background="true" data-singleline="true"> +:- use_rendering(svgtree, [list(false)]). + +parse(Sentence, Tree) :- + nonvar(Sentence), !, + split_string(Sentence, " ", " ", Strings), + maplist(atom_string, Words, Strings), + phrase(s(Tree), Words). +parse(Sentence, Tree) :- + phrase(s(Tree), Words), + atomics_to_string(Words, " ", Sentence). +</div> + +</div> diff --git a/examples/io.pl b/examples/io.pl new file mode 100644 index 0000000..f66e9d5 --- /dev/null +++ b/examples/io.pl @@ -0,0 +1,24 @@ +% Reading and writing +% ------------------- + +hello_world :- + writeln('Hello World!'), + sleep(1), + hello_world. + +read_and_write :- + prompt(_, 'Type a term or \'stop\''), + read(Something), + ( Something == stop + -> true + ; writeln(Something), + read_and_write + ). + + +/** <examples> + +?- hello_world. +?- read_and_write. + +*/ diff --git a/examples/japanese.pl b/examples/japanese.pl new file mode 100644 index 0000000..5e7189b --- /dev/null +++ b/examples/japanese.pl @@ -0,0 +1,18 @@ +% From http://ja.wikipedia.org/wiki/Prolog + +親子(波平,サザエ). +親子(ふね,サザエ). +親子(波平,カツオ). +親子(ふね,カツオ). +親子(波平,ワカメ). +親子(ふね,ワカメ). +親子(マスオ,タラオ). +親子(サザエ,タラオ). + +夫婦(波平,ふね). +夫婦(マスオ,サザエ). + +/** <examples> + +?- 親子(_親,サザエ). +*/ diff --git a/examples/jquery.swinb b/examples/jquery.swinb new file mode 100644 index 0000000..a545833 --- /dev/null +++ b/examples/jquery.swinb @@ -0,0 +1,55 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# Accessing the SWISH interface + +The jquery/3 predicate can be used to access arbitrary JavaScript functionality on the SWISH interface from Prolog. This notebook gives some examples for using this functionality. + +## Status + +This API is *speculative*. Please consider the possibilities and make suggestions how to turn this into something generally useful for customizing SWISH and/or define new types of applications using it. + +## Get access to the tabs + +The jQuery interface was added to provide access to the tabs in the SWISH interface. Our first example asks for for the available tabs. It returns an list holding a _dict_ for each +tab. +</div> + +<div class="nb-cell query"> +jquery(swish(), swish(tabData), Reply). +</div> + +<div class="nb-cell markdown"> +The =|swish#tabData|= jQuery plugin method accepts an `options` +dict with the following values: + + - active:Boolean + Restrict the result to the active tab + - type:String + Restrict the result to tabs with objects of this type + - data:Boolean|String + If `true`, include the content of the reported tabs. If + `"if_modified"`, only include the data if the tab was modified. + +The example below fetches the data from the active tab. +</div> + +<div class="nb-cell query"> +jquery(swish(), + swish(tabData, _{active:true, data:true}), + Reply). +</div> + +<div class="nb-cell markdown"> +## The potential + +Except for querying UI properties, the general jQuery API can be used to add new element to the interface. The `this` root selector refers to the jQuery plugin `prologRunner`, which runs a single query. The query below inserts some HTML into the runner DOM. + +This level of interaction with the interface is probably not desirable. Restricted to a documented set of jQuery selectors and methods however, it can be used to generalise the user interaction. +</div> + +<div class="nb-cell query"> +jquery(this(".runner-results"), append("<b>Hello world</b>"), R). +</div> + +</div> diff --git a/examples/kb.pl b/examples/kb.pl new file mode 100644 index 0000000..00b791e --- /dev/null +++ b/examples/kb.pl @@ -0,0 +1,22 @@ +% Some simple test Prolog programs +% -------------------------------- + +% Knowledge bases + +loves(vincent, mia). +loves(marcellus, mia). +loves(pumpkin, honey_bunny). +loves(honey_bunny, pumpkin). + +jealous(X, Y) :- + loves(X, Z), + loves(Y, Z). + + +/** <examples> + +?- loves(X, mia). +?- jealous(X, Y). + +*/ + diff --git a/examples/knights_and_knaves.pl b/examples/knights_and_knaves.pl new file mode 100644 index 0000000..e8d422d --- /dev/null +++ b/examples/knights_and_knaves.pl @@ -0,0 +1,61 @@ +% You are on an island where every inhabitant is either a knight or a +% knave. Knights always tell the truth, and knaves always lie. The +% following examples show how various cases can be solved with CLP(B), +% Constraint Logic Programming over Boolean variables. + +% These examples appear in Raymond Smullyan's "What Is the Name of +% this Book" and Maurice Kraitchik's "Mathematical Recreations". + + +:- use_module(library(clpb)). + + +% We use Boolean variables A, B and C to represent the inhabitants. +% Each variable is true iff the respective inhabitant is a knight. +% Notice that no search is required for any of these examples. + + +% Example 1: You meet two inhabitants, A and B. +% A says: "Either I am a knave or B is a knight." + +example_knights(1, [A,B]) :- + sat(A=:=(~A + B)). + + +% Example 2: A says: "I am a knave, but B isn't." + +example_knights(2, [A,B]) :- + sat(A=:=(~A * B)). + + +% Example 3: A says: "At least one of us is a knave." + +example_knights(3, [A,B]) :- + sat(A=:=card([1,2],[~A,~B])). + + +% Example 4: You meet 3 inhabitants. A says: "All of us are knaves." +% B says: "Exactly one of us is a knight." + +example_knights(4, Ks) :- + Ks = [A,B,C], + sat(A=:=(~A * ~B * ~C)), + sat(B=:=card([1],Ks)). + + +% Example 5: A says: "B is a knave." +% B says: "A and C are of the same kind." +% What is C? + +example_knights(5, [A,B,C]) :- + sat(A=:= ~B), + sat(B=:=(A=:=C)). + + +/** <examples> + +?- example_knights(1, [A,B]). +?- example_knights(2, [A,B]). +?- example_knights(Example, Knights). + +*/ diff --git a/examples/lists.pl b/examples/lists.pl new file mode 100644 index 0000000..3c07a56 --- /dev/null +++ b/examples/lists.pl @@ -0,0 +1,31 @@ +% Some simple test Prolog programs +% working with lists +% Also demonstrates timing +% -------------------------------- + +suffix(Xs, Ys) :- + append(_, Ys, Xs). + +prefix(Xs, Ys) :- + append(Ys, _, Xs). + +sublist(Xs, Ys) :- + suffix(Xs, Zs), + prefix(Zs, Ys). + +nrev([], []). +nrev([H|T0], L) :- + nrev(T0, T), + append(T, [H], L). + + +/** <examples> + +?- sublist([a, b, c, d, e], [c, d]). +?- sublist([a, b, c, d, e], Ys). +?- sublist(Xs, Ys). + +?- numlist(1, 1000, _L), time(nrev(_L, _)). + +*/ + diff --git a/examples/movies.pl b/examples/movies.pl new file mode 100644 index 0000000..f3ad817 --- /dev/null +++ b/examples/movies.pl @@ -0,0 +1,3028 @@ +/* Here's a first version of a set of exercises for practising the querying +of a simple Prolog database, in this case a movie database (see below). +Modified from exercises found on the web. Not sure who first made them. */ + + +/* EXERCISES + +Part 1: Write queries to answer the following questions. + + a. In which year was the movie American Beauty released? + b. Find the movies released in the year 2000. + c. Find the movies released before 2000. + d. Find the movies released after 1990. + e. Find an actor who has appeared in more than one movie. + f. Find a director of a movie in which Scarlett Johansson appeared. + g. Find an actor who has also directed a movie. + h. Find an actor or actress who has also directed a movie. + i. Find the movie in which John Goodman and Jeff Bridges were co-stars. + +Part 2: Add rules to the database to do the following, + + a. released_after(M, Y) <- the movie was released after the given year. + b. released_before(M, Y) <- the movie was released before the given year. + c. same_year(M1, M2) <- the movies are released in the same year. + d. co_star(A1, A2) <- the actor/actress are in the same movie. + +*/ + +/** <examples> (Remove these if you want to give the exercises to students!) + +?- movie(american_beauty, Y). +?- movie(M, 2000). +?- movie(M, Y), Y < 2000. +?- movie(M, Y), Y > 1999. +?- actor(M1, A, _), actor(M2, A, _), M1 @> M2. +?- actress(M, scarlett_johansson, _), director(M, D). +?- actor(_, A, _), director(_, A). +?- (actor(_, A, _) ; actress(_, A, _)), director(_, A). +?- actor(M, john_goodman, _), actor(M, jeff_bridges, _). +*/ + +/* DATABASE + + movie(M, Y) <- movie M came out in year Y + director(M, D) <- movie M was directed by director D + actor(M, A, R) <- actor A played role R in movie M + actress(M, A, R) <- actress A played role R in movie M + +*/ + +:- discontiguous + movie/2, + director/2, + actor/3, + actress/3. + +movie(american_beauty, 1999). +director(american_beauty, sam_mendes). +actor(american_beauty, kevin_spacey, lester_burnham). +actress(american_beauty, annette_bening, carolyn_burnham). +actress(american_beauty, thora_birch, jane_burnham). +actor(american_beauty, wes_bentley, ricky_fitts). +actress(american_beauty, mena_suvari, angela_hayes). +actor(american_beauty, chris_cooper, col_frank_fitts_usmc). +actor(american_beauty, peter_gallagher, buddy_kane). +actress(american_beauty, allison_janney, barbara_fitts). +actor(american_beauty, scott_bakula, jim_olmeyer). +actor(american_beauty, sam_robards, jim_berkley). +actor(american_beauty, barry_del_sherman, brad_dupree). +actress(american_beauty, ara_celi, sale_house_woman_1). +actor(american_beauty, john_cho, sale_house_man_1). +actor(american_beauty, fort_atkinson, sale_house_man_2). +actress(american_beauty, sue_casey, sale_house_woman_2). +actor(american_beauty, kent_faulcon, sale_house_man_3). +actress(american_beauty, brenda_wehle, sale_house_woman_4). +actress(american_beauty, lisa_cloud, sale_house_woman_5). +actress(american_beauty, alison_faulk, spartanette_1). +actress(american_beauty, krista_goodsitt, spartanette_2). +actress(american_beauty, lily_houtkin, spartanette_3). +actress(american_beauty, carolina_lancaster, spartanette_4). +actress(american_beauty, romana_leah, spartanette_5). +actress(american_beauty, chekeshka_van_putten, spartanette_6). +actress(american_beauty, emily_zachary, spartanette_7). +actress(american_beauty, nancy_anderson, spartanette_8). +actress(american_beauty, reshma_gajjar, spartanette_9). +actress(american_beauty, stephanie_rizzo, spartanette_10). +actress(american_beauty, heather_joy_sher, playground_girl_1). +actress(american_beauty, chelsea_hertford, playground_girl_2). +actress(american_beauty, amber_smith, christy_kane). +actor(american_beauty, joel_mccrary, catering_boss). +actress(american_beauty, marissa_jaret_winokur, mr_smiley_s_counter_girl). +actor(american_beauty, dennis_anderson, mr_smiley_s_manager). +actor(american_beauty, matthew_kimbrough, firing_range_attendant). +actress(american_beauty, erin_cathryn_strubbe, young_jane_burnham). +actress(american_beauty, elaine_corral_kendall, newscaster). + +movie(anna, 1987). +director(anna, yurek_bogayevicz). +actress(anna, sally_kirkland, anna). +actor(anna, robert_fields, daniel). +actress(anna, paulina_porizkova, krystyna). +actor(anna, gibby_brand, director_1). +actor(anna, john_robert_tillotson, director_2). +actress(anna, julianne_gilliam, woman_author). +actor(anna, joe_aufiery, stage_manager). +actor(anna, lance_davis, assistant_1). +actress(anna, deirdre_o_connell, assistant_2). +actress(anna, ruth_maleczech, woman_1_woman_named_gloria). +actress(anna, holly_villaire, woman_2_woman_with_bird). +actress(anna, shirl_bernheim, woman_3_woman_in_white_veil). +actress(anna, ren_e_coleman, woman_4_woman_in_bonnet). +actress(anna, gabriela_farrar, woman_5_woman_in_black). +actress(anna, jordana_levine, woman_6_woman_in_turban). +actress(anna, rosalie_traina, woman_7_woman_in_gold). +actress(anna, maggie_wagner, actress_d). +actor(anna, charles_randall, agent). +actress(anna, mimi_weddell, agent_s_secretary). +actor(anna, larry_pine, baskin). +actress(anna, lola_pashalinski, producer). +actor(anna, stefan_schnabel, professor). +actor(anna, steven_gilborn, tonda). +actor(anna, rand_stone, george). +actress(anna, geena_goodwin, daniel_s_mother). +actor(anna, david_r_ellis, daniel_s_father). +actor(anna, brian_kohn, jonathan). +actress(anna, caroline_aaron, interviewer). +actor(anna, vasek_simek, czech_demonstrator_1). +actor(anna, paul_leski, czech_demonstrator_2). +actor(anna, larry_attile, czech_demonstrator_3). +actress(anna, sofia_coppola, noodle). +actor(anna, theo_mayes, dancing_dishwasher). +actress(anna, nina_port, dancing_dishwasher). + +movie(barton_fink, 1991). +director(barton_fink, ethan_coen). +director(barton_fink, joel_coen). +actor(barton_fink, john_turturro, barton_fink). +actor(barton_fink, john_goodman, charlie_meadows). +actress(barton_fink, judy_davis, audrey_taylor). +actor(barton_fink, michael_lerner, jack_lipnick). +actor(barton_fink, john_mahoney, w_p_mayhew). +actor(barton_fink, tony_shalhoub, ben_geisler). +actor(barton_fink, jon_polito, lou_breeze). +actor(barton_fink, steve_buscemi, chet). +actor(barton_fink, david_warrilow, garland_stanford). +actor(barton_fink, richard_portnow, detective_mastrionotti). +actor(barton_fink, christopher_murney, detective_deutsch). +actor(barton_fink, i_m_hobson, derek). +actress(barton_fink, meagen_fay, poppy_carnahan). +actor(barton_fink, lance_davis, richard_st_claire). +actor(barton_fink, harry_bugin, pete). +actor(barton_fink, anthony_gordon, maitre_d). +actor(barton_fink, jack_denbo, stagehand). +actor(barton_fink, max_grod_nchik, clapper_boy). +actor(barton_fink, robert_beecher, referee). +actor(barton_fink, darwyn_swalve, wrestler). +actress(barton_fink, gayle_vance, geisler_s_secretary). +actor(barton_fink, johnny_judkins, sailor). +actress(barton_fink, jana_marie_hupp, uso_girl). +actress(barton_fink, isabelle_townsend, beauty). +actor(barton_fink, william_preston_robertson, voice). + +movie(the_big_lebowski, 1998). +director(the_big_lebowski, joel_coen). +actor(the_big_lebowski, jeff_bridges, jeffrey_lebowski__the_dude). +actor(the_big_lebowski, john_goodman, walter_sobchak). +actress(the_big_lebowski, julianne_moore, maude_lebowski). +actor(the_big_lebowski, steve_buscemi, theodore_donald_donny_kerabatsos). +actor(the_big_lebowski, david_huddleston, jeffrey_lebowski__the_big_lebowski). +actor(the_big_lebowski, philip_seymour_hoffman, brandt). +actress(the_big_lebowski, tara_reid, bunny_lebowski). +actor(the_big_lebowski, philip_moon, woo_treehorn_thug). +actor(the_big_lebowski, mark_pellegrino, blond_treehorn_thug). +actor(the_big_lebowski, peter_stormare, uli_kunkel_nihilist_1__karl_hungus). +actor(the_big_lebowski, flea, nihilist_2). +actor(the_big_lebowski, torsten_voges, nihilist_3). +actor(the_big_lebowski, jimmie_dale_gilmore, smokey). +actor(the_big_lebowski, jack_kehler, marty). +actor(the_big_lebowski, john_turturro, jesus_quintana). +actor(the_big_lebowski, james_g_hoosier, liam_o_brien). +actor(the_big_lebowski, carlos_leon, maude_s_thug). +actor(the_big_lebowski, terrence_burton, maude_s_thug). +actor(the_big_lebowski, richard_gant, older_cop). +actor(the_big_lebowski, christian_clemenson, younger_cop). +actor(the_big_lebowski, dom_irrera, tony_the_chauffeur). +actor(the_big_lebowski, g_rard_l_heureux, lebowski_s_chauffeur). +actor(the_big_lebowski, david_thewlis, knox_harrington). +actress(the_big_lebowski, lu_elrod, coffee_shop_waitress). +actor(the_big_lebowski, mike_gomez, auto_circus_cop). +actor(the_big_lebowski, peter_siragusa, gary_the_bartender). +actor(the_big_lebowski, sam_elliott, the_stranger). +actor(the_big_lebowski, marshall_manesh, doctor). +actor(the_big_lebowski, harry_bugin, arthur_digby_sellers). +actor(the_big_lebowski, jesse_flanagan, little_larry_sellers). +actress(the_big_lebowski, irene_olga_l_pez, pilar_sellers_housekeeper). +actor(the_big_lebowski, luis_colina, corvette_owner). +actor(the_big_lebowski, ben_gazzara, jackie_treehorn). +actor(the_big_lebowski, leon_russom, malibu_police_chief). +actor(the_big_lebowski, ajgie_kirkland, cab_driver). +actor(the_big_lebowski, jon_polito, da_fino). +actress(the_big_lebowski, aimee_mann, nihilist_woman). +actor(the_big_lebowski, jerry_haleva, saddam_hussein). +actress(the_big_lebowski, jennifer_lamb, pancake_waitress). +actor(the_big_lebowski, warren_keith, funeral_director). +actress(the_big_lebowski, wendy_braun, chorine_dancer). +actress(the_big_lebowski, asia_carrera, sherry_in_logjammin). +actress(the_big_lebowski, kiva_dawson, dancer). +actress(the_big_lebowski, robin_jones, checker_at_ralph_s). +actor(the_big_lebowski, paris_themmen, ''). + +movie(blade_runner, 1997). +director(blade_runner, joseph_d_kucan). +actor(blade_runner, martin_azarow, dino_klein). +actor(blade_runner, lloyd_bell, additional_voices). +actor(blade_runner, mark_benninghoffen, ray_mccoy). +actor(blade_runner, warren_burton, runciter). +actress(blade_runner, gwen_castaldi, dispatcher_and_newscaster). +actress(blade_runner, signy_coleman, dektora). +actor(blade_runner, gary_columbo, general_doll). +actor(blade_runner, jason_cottle, luthur_lance_photographer). +actor(blade_runner, timothy_dang, izo). +actor(blade_runner, gerald_deloff, additional_voices). +actress(blade_runner, lisa_edelstein, crystal_steele). +actor(blade_runner, gary_l_freeman, additional_voices). +actor(blade_runner, jeff_garlin, lieutenant_edison_guzza). +actor(blade_runner, eric_gooch, additional_voices). +actor(blade_runner, javier_grajeda, gaff). +actor(blade_runner, mike_grayford, additional_voices). +actress(blade_runner, gloria_hoffmann, mia). +actor(blade_runner, james_hong, dr_chew). +actress(blade_runner, kia_huntzinger, additional_voices). +actor(blade_runner, anthony_izzo, officer_leary). +actor(blade_runner, brion_james, leon). +actress(blade_runner, shelly_johnson, additional_voices). +actor(blade_runner, terry_jourden, spencer_grigorian). +actor(blade_runner, jerry_kernion, holloway). +actor(blade_runner, joseph_d_kucan, crazylegs_larry). +actor(blade_runner, jerry_lan, murray). +actor(blade_runner, michael_b_legg, additional_voices). +actor(blade_runner, demarlo_lewis, additional_voices). +actor(blade_runner, tse_cheng_lo, additional_voices). +actress(blade_runner, etsuko_mader, additional_voices). +actor(blade_runner, mohanned_mansour, additional_voices). +actress(blade_runner, karen_maruyama, fish_dealer). +actor(blade_runner, michael_mcshane, marcus_eisenduller). +actor(blade_runner, alexander_mervin, sadik). +actor(blade_runner, tony_mitch, governor_kolvig). +actor(blade_runner, toru_nagai, howie_lee). +actor(blade_runner, dwight_k_okahara, additional_voices). +actor(blade_runner, gerald_okamura, zuben). +actor(blade_runner, bruno_oliver, gordo_frizz). +actress(blade_runner, pauley_perrette, lucy_devlin). +actor(blade_runner, mark_rolston, clovis). +actor(blade_runner, stephen_root, early_q). +actor(blade_runner, william_sanderson, j_f_sebastian). +actor(blade_runner, vincent_schiavelli, bullet_bob). +actress(blade_runner, rosalyn_sidewater, isabella). +actor(blade_runner, ron_snow, blimp_announcer). +actor(blade_runner, stephen_sorrentino, shoeshine_man_hasan). +actress(blade_runner, jessica_straus, answering_machine_female_announcer). +actress(blade_runner, melonie_sung, additional_voices). +actor(blade_runner, iqbal_theba, moraji). +actress(blade_runner, myriam_tubert, insect_dealer). +actor(blade_runner, joe_turkel, eldon_tyrell). +actor(blade_runner, bill_wade, hanoi). +actor(blade_runner, jim_walls, additional_voices). +actress(blade_runner, sandra_wang, additional_voices). +actor(blade_runner, marc_worden, baker). +actress(blade_runner, sean_young, rachael). +actor(blade_runner, joe_tippy_zeoli, officer_grayford). + +movie(blood_simple, 1984). +director(blood_simple, ethan_coen). +director(blood_simple, joel_coen). +actor(blood_simple, john_getz, ray). +actress(blood_simple, frances_mcdormand, abby). +actor(blood_simple, dan_hedaya, julian_marty). +actor(blood_simple, m_emmet_walsh, loren_visser_private_detective). +actor(blood_simple, samm_art_williams, meurice). +actress(blood_simple, deborah_neumann, debra). +actress(blood_simple, raquel_gavia, landlady). +actor(blood_simple, van_brooks, man_from_lubbock). +actor(blood_simple, se_or_marco, mr_garcia). +actor(blood_simple, william_creamer, old_cracker). +actor(blood_simple, loren_bivens, strip_bar_exhorter). +actor(blood_simple, bob_mcadams, strip_bar_exhorter). +actress(blood_simple, shannon_sedwick, stripper). +actress(blood_simple, nancy_finger, girl_on_overlook). +actor(blood_simple, william_preston_robertson, radio_evangelist). +actress(blood_simple, holly_hunter, helene_trend). +actor(blood_simple, barry_sonnenfeld, marty_s_vomiting). + +movie(the_cotton_club, 1984). +director(the_cotton_club, francis_ford_coppola). +actor(the_cotton_club, richard_gere, michael_dixie_dwyer). +actor(the_cotton_club, gregory_hines, sandman_williams). +actress(the_cotton_club, diane_lane, vera_cicero). +actress(the_cotton_club, lonette_mckee, lila_rose_oliver). +actor(the_cotton_club, bob_hoskins, owney_madden). +actor(the_cotton_club, james_remar, dutch_schultz). +actor(the_cotton_club, nicolas_cage, vincent_dwyer). +actor(the_cotton_club, allen_garfield, abbadabba_berman). +actor(the_cotton_club, fred_gwynne, frenchy_demange). +actress(the_cotton_club, gwen_verdon, tish_dwyer). +actress(the_cotton_club, lisa_jane_persky, frances_flegenheimer). +actor(the_cotton_club, maurice_hines, clay_williams). +actor(the_cotton_club, julian_beck, sol_weinstein). +actress(the_cotton_club, novella_nelson, madame_st_clair). +actor(the_cotton_club, laurence_fishburne, bumpy_rhodes). +actor(the_cotton_club, john_p_ryan, joe_flynn). +actor(the_cotton_club, tom_waits, irving_stark). +actor(the_cotton_club, ron_karabatsos, mike_best). +actor(the_cotton_club, glenn_withrow, ed_popke). +actress(the_cotton_club, jennifer_grey, patsy_dwyer). +actress(the_cotton_club, wynonna_smith, winnie_williams). +actress(the_cotton_club, thelma_carpenter, norma_williams). +actor(the_cotton_club, charles_honi_coles, suger_coates). +actor(the_cotton_club, larry_marshall, cab_calloway_minnie_the_moocher__lady_with_the_fan_and_jitterbug_sung_by). +actor(the_cotton_club, joe_dallesandro, charles_lucky_luciano). +actor(the_cotton_club, ed_o_ross, monk). +actor(the_cotton_club, frederick_downs_jr, sullen_man). +actress(the_cotton_club, diane_venora, gloria_swanson). +actor(the_cotton_club, tucker_smallwood, kid_griffin). +actor(the_cotton_club, woody_strode, holmes). +actor(the_cotton_club, bill_graham, j_w). +actor(the_cotton_club, dayton_allen, solly). +actor(the_cotton_club, kim_chan, ling). +actor(the_cotton_club, ed_rowan, messiah). +actor(the_cotton_club, leonard_termo, danny). +actor(the_cotton_club, george_cantero, vince_hood). +actor(the_cotton_club, brian_tarantina, vince_hood). +actor(the_cotton_club, bruce_macvittie, vince_hood). +actor(the_cotton_club, james_russo, vince_hood). +actor(the_cotton_club, giancarlo_esposito, bumpy_hood). +actor(the_cotton_club, bruce_hubbard, bumpy_hood). +actor(the_cotton_club, rony_clanton, caspar_holstein). +actor(the_cotton_club, damien_leake, bub_jewett). +actor(the_cotton_club, bill_cobbs, big_joe_ison). +actor(the_cotton_club, joe_lynn, marcial_flores). +actor(the_cotton_club, oscar_barnes, spanish_henry). +actor(the_cotton_club, ed_zang, hotel_clerk). +actress(the_cotton_club, sandra_beall, myrtle_fay). +actor(the_cotton_club, zane_mark, duke_ellington). +actor(the_cotton_club, tom_signorelli, butch_murdock). +actor(the_cotton_club, paul_herman, policeman_1). +actor(the_cotton_club, randle_mell, policeman_2). +actor(the_cotton_club, steve_vignari, trigger_mike_coppola). +actress(the_cotton_club, susan_mechsner, gypsie). +actor(the_cotton_club, gregory_rozakis, charlie_chaplin). +actor(the_cotton_club, marc_coppola, ted_husing). +actress(the_cotton_club, norma_jean_darden, elda_webb). +actor(the_cotton_club, robert_earl_jones, stage_door_joe). +actor(the_cotton_club, vincent_jerosa, james_cagney). +actress(the_cotton_club, rosalind_harris, fanny_brice). +actor(the_cotton_club, steve_cafiso, child_in_street). +actor(the_cotton_club, john_cafiso, child_in_street). +actress(the_cotton_club, sofia_coppola, child_in_street). +actress(the_cotton_club, ninon_digiorgio, child_in_street). +actress(the_cotton_club, daria_hines, child_in_street). +actress(the_cotton_club, patricia_letang, child_in_street). +actor(the_cotton_club, christopher_lewis, child_in_street). +actress(the_cotton_club, danielle_osborne, child_in_street). +actor(the_cotton_club, jason_papalardo, child_in_street). +actor(the_cotton_club, demetrius_pena, child_in_street). +actress(the_cotton_club, priscilla_baskerville, creole_love_call_sung_by). +actress(the_cotton_club, ethel_beatty, bandana_babies_lead_vocal_dancer). +actress(the_cotton_club, sydney_goldsmith, barbecue_bess_sung_by). +actor(the_cotton_club, james_buster_brown, hoofer). +actor(the_cotton_club, ralph_brown, hoofer). +actor(the_cotton_club, harold_cromer, hoofer). +actor(the_cotton_club, bubba_gaines, hoofer). +actor(the_cotton_club, george_hillman, hoofer). +actor(the_cotton_club, henry_phace_roberts, hoofer). +actor(the_cotton_club, howard_sandman_sims, hoofer). +actor(the_cotton_club, jimmy_slyde, hoofer). +actor(the_cotton_club, henry_letang, hoofer). +actor(the_cotton_club, charles_young, hoofer). +actor(the_cotton_club, skip_cunningham, tip_tap__toe). +actor(the_cotton_club, luther_fontaine, tip_tap__toe). +actor(the_cotton_club, jan_mickens, tip_tap__toe). +actress(the_cotton_club, lydia_abarca, dancer). +actress(the_cotton_club, sarita_allen, dancer). +actress(the_cotton_club, tracey_bass, dancer). +actress(the_cotton_club, jacquelyn_bird, dancer). +actress(the_cotton_club, shirley_black_brown, dancer). +actress(the_cotton_club, jhoe_breedlove, dancer). +actor(the_cotton_club, lester_brown, dancer). +actress(the_cotton_club, leslie_caldwell, dancer). +actress(the_cotton_club, melanie_caldwell, dancer). +actor(the_cotton_club, benny_clorey, dancer). +actress(the_cotton_club, sheri_cowart, dancer). +actress(the_cotton_club, karen_dibianco, dancer). +actress(the_cotton_club, cisco_drayton, dancer). +actress(the_cotton_club, anne_duquesnay, dancer). +actress(the_cotton_club, carla_earle, dancer). +actress(the_cotton_club, wendy_edmead, dancer). +actress(the_cotton_club, debbie_fitts, dancer). +actor(the_cotton_club, ruddy_l_garner, dancer). +actress(the_cotton_club, ruthanna_graves, dancer). +actress(the_cotton_club, terri_griffin, dancer). +actress(the_cotton_club, robin_harmon, dancer). +actress(the_cotton_club, jackee_harree, dancer). +actress(the_cotton_club, sonya_hensley, dancer). +actor(the_cotton_club, dave_jackson, dancer). +actress(the_cotton_club, gail_kendricks, dancer). +actress(the_cotton_club, christina_kumi_kimball, dancer). +actress(the_cotton_club, mary_beth_kurdock, dancer). +actor(the_cotton_club, alde_lewis, dancer). +actress(the_cotton_club, paula_lynn, dancer). +actor(the_cotton_club, bernard_manners, dancer). +actor(the_cotton_club, bernard_marsh, dancer). +actor(the_cotton_club, david_mcharris, dancer). +actress(the_cotton_club, delores_mcharris, dancer). +actress(the_cotton_club, vody_najac, dancer). +actress(the_cotton_club, vya_negromonte, dancer). +actress(the_cotton_club, alice_anne_oates, dancer). +actress(the_cotton_club, anne_palmer, dancer). +actress(the_cotton_club, julie_pars, dancer). +actress(the_cotton_club, antonia_pettiford, dancer). +actress(the_cotton_club, valarie_pettiford, dancer). +actress(the_cotton_club, janet_powell, dancer). +actress(the_cotton_club, renee_rodriguez, dancer). +actress(the_cotton_club, tracey_ross, dancer). +actress(the_cotton_club, kiki_shepard, dancer). +actor(the_cotton_club, gary_thomas, dancer). +actor(the_cotton_club, mario_van_peebles, dancer). +actress(the_cotton_club, rima_vetter, dancer). +actress(the_cotton_club, karen_wadkins, dancer). +actor(the_cotton_club, ivery_wheeler, dancer). +actor(the_cotton_club, donald_williams, dancer). +actress(the_cotton_club, alexis_wilson, dancer). +actor(the_cotton_club, george_coutoupis, gangster). +actor(the_cotton_club, nicholas_j_giangiulio, screen_test_thug). +actress(the_cotton_club, suzanne_kaaren, the_duchess_of_park_avenue). +actor(the_cotton_club, mark_margolis, gunman_sooting_cage_s_character). +actor(the_cotton_club, kirk_taylor, cotton_club_waiter). +actor(the_cotton_club, stan_tracy, legs_diamond_s_bodyguard). +actor(the_cotton_club, rick_washburn, hitman). + +movie(cq, 2001). +director(cq, roman_coppola). +actor(cq, jeremy_davies, paul). +actress(cq, angela_lindvall, dragonfly_valentine). +actress(cq, lodie_bouchez, marlene). +actor(cq, g_rard_depardieu, andrezej). +actor(cq, giancarlo_giannini, enzo). +actor(cq, massimo_ghini, fabrizio). +actor(cq, jason_schwartzman, felix_demarco). +actor(cq, billy_zane, mr_e). +actor(cq, john_phillip_law, chairman). +actor(cq, silvio_muccino, pippo). +actor(cq, dean_stockwell, dr_ballard). +actress(cq, natalia_vodianova, brigit). +actor(cq, bernard_verley, trailer_voiceover_actor). +actor(cq, l_m_kit_carson, fantasy_critic). +actor(cq, chris_bearne, fantasy_critic). +actor(cq, jean_paul_scarpitta, fantasy_critic). +actor(cq, nicolas_saada, fantasy_critic). +actor(cq, remi_fourquin, fantasy_critic). +actor(cq, jean_claude_schlim, fantasy_critic). +actress(cq, sascha_ley, fantasy_critic). +actor(cq, jacques_deglas, fantasy_critic). +actor(cq, gilles_soeder, fantasy_critic). +actor(cq, julian_nest, festival_critic). +actress(cq, greta_seacat, festival_critic). +actress(cq, barbara_sarafian, festival_critic). +actor(cq, leslie_woodhall, board_member). +actor(cq, jean_baptiste_kremer, board_member). +actor(cq, franck_sasonoff, angry_man_at_riots). +actor(cq, jean_fran_ois_wolff, party_man). +actor(cq, eric_connor, long_haired_actor_at_party). +actress(cq, diana_gartner, cute_model_at_party). +actress(cq, st_phanie_gesnel, actress_at_party). +actor(cq, fr_d_ric_de_brabant, steward). +actor(cq, shawn_mortensen, revolutionary_guard). +actor(cq, matthieu_tonetti, revolutionary_guard). +actress(cq, ann_maes, vampire_actress). +actress(cq, gintare_parulyte, vampire_actress). +actress(cq, caroline_lies, vampire_actress). +actress(cq, stoyanka_tanya_gospodinova, vampire_actress). +actress(cq, magali_dahan, vampire_actress). +actress(cq, natalie_broker, vampire_actress). +actress(cq, wanda_perdelwitz, vampire_actress). +actor(cq, mark_thompson_ashworth, lead_ghoul). +actor(cq, pieter_riemens, assistant_director). +actress(cq, federica_citarella, talkative_girl). +actor(cq, andrea_cormaci, soldier_boy). +actress(cq, corinne_terenzi, teen_lover). +actress(cq, sofia_coppola, enzo_s_mistress). +actor(cq, emidio_la_vella, italian_actor). +actor(cq, massimo_schina, friendly_guy_at_party). +actress(cq, caroline_colombini, girl_in_miniskirt). +actress(cq, rosa_pianeta, woman_in_fiat). +actor(cq, christophe_chrompin, jealous_boyfriend). +actor(cq, romain_duris, hippie_filmmaker). +actor(cq, chris_anthony, second_assistant_director). +actor(cq, dean_tavoularis, man_at_screening). + +movie(crimewave, 1985). +director(crimewave, sam_raimi). +actress(crimewave, louise_lasser, helene_trend). +actor(crimewave, paul_l_smith, faron_crush). +actor(crimewave, brion_james, arthur_coddish). +actress(crimewave, sheree_j_wilson, nancy). +actor(crimewave, edward_r_pressman, ernest_trend). +actor(crimewave, bruce_campbell, renaldo_the_heel). +actor(crimewave, reed_birney, vic_ajax). +actor(crimewave, richard_bright, officer_brennan). +actor(crimewave, antonio_fargas, blind_man). +actor(crimewave, hamid_dana, donald_odegard). +actor(crimewave, john_hardy, mr_yarman). +actor(crimewave, emil_sitka, colonel_rodgers). +actor(crimewave, hal_youngblood, jack_elroy). +actor(crimewave, sean_farley, jack_elroy_jr). +actor(crimewave, richard_demanincor, officer_garvey). +actress(crimewave, carrie_hall, cheap_dish). +actor(crimewave, wiley_harker, governor). +actor(crimewave, julius_harris, hardened_convict). +actor(crimewave, ralph_drischell, executioner). +actor(crimewave, robert_symonds, guard_1). +actor(crimewave, patrick_stack, guard_2). +actor(crimewave, philip_a_gillis, priest). +actress(crimewave, bridget_hoffman, nun). +actress(crimewave, ann_marie_gillis, nun). +actress(crimewave, frances_mcdormand, nun). +actress(crimewave, carol_brinn, old_woman). +actor(crimewave, matthew_taylor, muscleman). +actor(crimewave, perry_mallette, grizzled_veteran). +actor(crimewave, chuck_gaidica, weatherman). +actor(crimewave, jimmie_launce, announcer). +actor(crimewave, joseph_french, bandleader). +actor(crimewave, ted_raimi, waiter). +actor(crimewave, dennis_chaitlin, fat_waiter). +actor(crimewave, joel_coen, reporter_at_execution). +actress(crimewave, julie_harris, ''). +actor(crimewave, dan_nelson, waiter). + +movie(down_from_the_mountain, 2000). +director(down_from_the_mountain, nick_doob). +director(down_from_the_mountain, chris_hegedus). +director(down_from_the_mountain, d_a_pennebaker). +actress(down_from_the_mountain, evelyn_cox, herself). +actor(down_from_the_mountain, sidney_cox, himself). +actress(down_from_the_mountain, suzanne_cox, herself). +actor(down_from_the_mountain, willard_cox, himself). +actor(down_from_the_mountain, nathan_best, himself). +actor(down_from_the_mountain, issac_freeman, himself). +actor(down_from_the_mountain, robert_hamlett, himself). +actor(down_from_the_mountain, joseph_rice, himself). +actor(down_from_the_mountain, wilson_waters_jr, himself). +actor(down_from_the_mountain, john_hartford, himself). +actor(down_from_the_mountain, larry_perkins, himself). +actress(down_from_the_mountain, emmylou_harris, herself). +actor(down_from_the_mountain, chris_thomas_king, himself). +actress(down_from_the_mountain, alison_krauss, herself). +actor(down_from_the_mountain, colin_linden, himself). +actor(down_from_the_mountain, pat_enright, himself). +actor(down_from_the_mountain, gene_libbea, himself). +actor(down_from_the_mountain, alan_o_bryant, himself). +actor(down_from_the_mountain, roland_white, himself). +actress(down_from_the_mountain, hannah_peasall, herself). +actress(down_from_the_mountain, leah_peasall, herself). +actress(down_from_the_mountain, sarah_peasall, herself). +actor(down_from_the_mountain, ralph_stanley, himself). +actress(down_from_the_mountain, gillian_welch, herself). +actor(down_from_the_mountain, david_rawlings, himself). +actor(down_from_the_mountain, buck_white, himself). +actress(down_from_the_mountain, cheryl_white, herself). +actress(down_from_the_mountain, sharon_white, herself). +actor(down_from_the_mountain, barry_bales, house_band_bass). +actor(down_from_the_mountain, ron_block, house_band_banjo). +actor(down_from_the_mountain, mike_compton, house_band_mandolin). +actor(down_from_the_mountain, jerry_douglas, house_band_dobro). +actor(down_from_the_mountain, stuart_duncan, house_band_fiddle). +actor(down_from_the_mountain, chris_sharp, house_band_guitar). +actor(down_from_the_mountain, dan_tyminski, house_band_guitar). +actor(down_from_the_mountain, t_bone_burnett, himself). +actor(down_from_the_mountain, ethan_coen, himself). +actor(down_from_the_mountain, joel_coen, himself). +actress(down_from_the_mountain, holly_hunter, herself). +actor(down_from_the_mountain, tim_blake_nelson, himself). +actor(down_from_the_mountain, billy_bob_thornton, audience_member). +actor(down_from_the_mountain, wes_motley, audience_member). +actress(down_from_the_mountain, tamara_trexler, audience_member). + +movie(fargo, 1996). +director(fargo, ethan_coen). +director(fargo, joel_coen). +actor(fargo, william_h_macy, jerry_lundegaard). +actor(fargo, steve_buscemi, carl_showalter). +actor(fargo, peter_stormare, gaear_grimsrud). +actress(fargo, kristin_rudr_d, jean_lundegaard). +actor(fargo, harve_presnell, wade_gustafson). +actor(fargo, tony_denman, scotty_lundegaard). +actor(fargo, gary_houston, irate_customer). +actress(fargo, sally_wingert, irate_customer_s_wife). +actor(fargo, kurt_schweickhardt, car_salesman). +actress(fargo, larissa_kokernot, hooker_1). +actress(fargo, melissa_peterman, hooker_2). +actor(fargo, steve_reevis, shep_proudfoot). +actor(fargo, warren_keith, reilly_diefenbach). +actor(fargo, steve_edelman, morning_show_host). +actress(fargo, sharon_anderson, morning_show_hostess). +actor(fargo, larry_brandenburg, stan_grossman). +actor(fargo, james_gaulke, state_trooper). +actor(fargo, j_todd_anderson, victim_in_the_field). +actress(fargo, michelle_suzanne_ledoux, victim_in_car). +actress(fargo, frances_mcdormand, marge_gunderson). +actor(fargo, john_carroll_lynch, norm_gunderson). +actor(fargo, bruce_bohne, lou). +actress(fargo, petra_boden, cashier). +actor(fargo, steve_park, mike_yanagita). +actor(fargo, wayne_a_evenson, customer). +actor(fargo, cliff_rakerd, officer_olson). +actress(fargo, jessica_shepherd, hotel_clerk). +actor(fargo, peter_schmitz, airport_lot_attendant). +actor(fargo, steven_i_schafer, mechanic). +actress(fargo, michelle_hutchison, escort). +actor(fargo, david_s_lomax, man_in_hallway). +actor(fargo, jos_feliciano, himself). +actor(fargo, bix_skahill, night_parking_attendant). +actor(fargo, bain_boehlke, mr_mohra). +actress(fargo, rose_stockton, valerie). +actor(fargo, robert_ozasky, bismarck_cop_1). +actor(fargo, john_bandemer, bismarck_cop_2). +actor(fargo, don_wescott, bark_beetle_narrator). +actor(fargo, bruce_campbell, soap_opera_actor). +actor(fargo, clifford_nelson, heavyset_man_in_bar). + +movie(the_firm, 1993). +director(the_firm, sydney_pollack). +actor(the_firm, tom_cruise, mitch_mcdeere). +actress(the_firm, jeanne_tripplehorn, abby_mcdeere). +actor(the_firm, gene_hackman, avery_tolar). +actor(the_firm, hal_holbrook, oliver_lambert). +actor(the_firm, terry_kinney, lamar_quinn). +actor(the_firm, wilford_brimley, william_devasher). +actor(the_firm, ed_harris, wayne_tarrance). +actress(the_firm, holly_hunter, tammy_hemphill). +actor(the_firm, david_strathairn, ray_mcdeere). +actor(the_firm, gary_busey, eddie_lomax). +actor(the_firm, steven_hill, f_denton_voyles). +actor(the_firm, tobin_bell, the_nordic_man). +actress(the_firm, barbara_garrick, kay_quinn). +actor(the_firm, jerry_hardin, royce_mcknight). +actor(the_firm, paul_calderon, thomas_richie). +actor(the_firm, jerry_weintraub, sonny_capps). +actor(the_firm, sullivan_walker, barry_abanks). +actress(the_firm, karina_lombard, young_woman_on_beach). +actress(the_firm, margo_martindale, nina_huff). +actor(the_firm, john_beal, nathan_locke). +actor(the_firm, dean_norris, the_squat_man). +actor(the_firm, lou_walker, frank_mulholland). +actress(the_firm, debbie_turner, rental_agent). +actor(the_firm, tommy_cresswell, wally_hudson). +actor(the_firm, david_a_kimball, randall_dunbar). +actor(the_firm, don_jones, attorney). +actor(the_firm, michael_allen, attorney). +actor(the_firm, levi_frazier_jr, restaurant_waiter). +actor(the_firm, brian_casey, telephone_installer). +actor(the_firm, reverend_william_j_parham, minister). +actor(the_firm, victor_nelson, cafe_waiter). +actor(the_firm, richard_ranta, congressman_billings). +actress(the_firm, janie_paris, madge). +actor(the_firm, frank_crawford, judge). +actor(the_firm, bart_whiteman, dutch). +actor(the_firm, david_dwyer, prison_guard). +actor(the_firm, mark_w_johnson, fbi_agent). +actor(the_firm, jerry_chipman, fbi_agent). +actor(the_firm, jimmy_lackie, technician). +actor(the_firm, afemo_omilami, cotton_truck_driver). +actor(the_firm, clint_smith, cotton_truck_driver). +actress(the_firm, susan_elliott, river_museum_guide). +actress(the_firm, erin_branham, river_museum_guide). +actor(the_firm, ed_connelly, pilot). +actress(the_firm, joey_anderson, ruth). +actress(the_firm, deborah_thomas, quinns_maid). +actor(the_firm, tommy_matthews, elvis_aaron_hemphill). +actor(the_firm, chris_schadrack, lawyer_recruiter). +actor(the_firm, buck_ford, lawyer_recruiter). +actor(the_firm, jonathan_kaplan, lawyer_recruiter). +actress(the_firm, rebecca_glenn, young_woman_at_patio_bar). +actress(the_firm, terri_welles, woman_dancing_with_avery). +actor(the_firm, greg_goossen, vietnam_veteran). +actress(the_firm, jeane_aufdenberg, car_rental_agent). +actor(the_firm, william_r_booth, seaplane_pilot). +actor(the_firm, ollie_nightingale, restaurant_singer). +actor(the_firm, teenie_hodges, restaurant_lead_guitarist). +actor(the_firm, little_jimmy_king, memphis_street_musician). +actor(the_firm, james_white, singer_at_hyatt). +actor(the_firm, shan_brisendine, furniture_mover). +actor(the_firm, harry_dach, garbage_truck_driver). +actress(the_firm, julia_hayes, girl_in_bar). +actor(the_firm, tom_mccrory, associate). +actor(the_firm, paul_sorvino, tommie_morolto). +actor(the_firm, joe_viterelli, joey_morolto). + +movie(frankenweenie, 1984). +director(frankenweenie, tim_burton). +actress(frankenweenie, shelley_duvall, susan_frankenstein). +actor(frankenweenie, daniel_stern, ben_frankenstein). +actor(frankenweenie, barret_oliver, victor_frankenstein). +actor(frankenweenie, joseph_maher, mr_chambers). +actress(frankenweenie, roz_braverman, mrs_epstein). +actor(frankenweenie, paul_bartel, mr_walsh). +actress(frankenweenie, sofia_coppola, anne_chambers). +actor(frankenweenie, jason_hervey, frank_dale). +actor(frankenweenie, paul_c_scott, mike_anderson). +actress(frankenweenie, helen_boll, mrs_curtis). +actor(frankenweenie, sparky, sparky). +actor(frankenweenie, rusty_james, raymond). + +movie(ghost_busters, 1984). +director(ghost_busters, ivan_reitman). +actor(ghost_busters, bill_murray, dr_peter_venkman). +actor(ghost_busters, dan_aykroyd, dr_raymond_stantz). +actress(ghost_busters, sigourney_weaver, dana_barrett). +actor(ghost_busters, harold_ramis, dr_egon_spengler). +actor(ghost_busters, rick_moranis, louis_tully). +actress(ghost_busters, annie_potts, janine_melnitz). +actor(ghost_busters, william_atherton, walter_peck_wally_wick). +actor(ghost_busters, ernie_hudson, winston_zeddmore). +actor(ghost_busters, david_margulies, mayor). +actor(ghost_busters, steven_tash, male_student). +actress(ghost_busters, jennifer_runyon, female_student). +actress(ghost_busters, slavitza_jovan, gozer). +actor(ghost_busters, michael_ensign, hotel_manager). +actress(ghost_busters, alice_drummond, librarian). +actor(ghost_busters, jordan_charney, dean_yeager). +actor(ghost_busters, timothy_carhart, violinist). +actor(ghost_busters, john_rothman, library_administrator). +actor(ghost_busters, tom_mcdermott, archbishop). +actor(ghost_busters, roger_grimsby, himself). +actor(ghost_busters, larry_king, himself). +actor(ghost_busters, joe_franklin, himself). +actor(ghost_busters, casey_kasem, himself). +actor(ghost_busters, john_ring, fire_commissioner). +actor(ghost_busters, norman_matlock, police_commissioner). +actor(ghost_busters, joe_cirillo, police_captain). +actor(ghost_busters, joe_schmieg, police_seargeant). +actor(ghost_busters, reginald_veljohnson, jail_guard). +actress(ghost_busters, rhoda_gemignani, real_estate_woman). +actor(ghost_busters, murray_rubin, man_at_elevator). +actor(ghost_busters, larry_dilg, con_edison_man). +actor(ghost_busters, danny_stone, coachman). +actress(ghost_busters, patty_dworkin, woman_at_party). +actress(ghost_busters, jean_kasem, tall_woman_at_party). +actor(ghost_busters, lenny_del_genio, doorman). +actress(ghost_busters, frances_e_nealy, chambermaid). +actor(ghost_busters, sam_moses, hot_dog_vendor). +actor(ghost_busters, christopher_wynkoop, tv_reporter). +actor(ghost_busters, winston_may, businessman_in_cab). +actor(ghost_busters, tommy_hollis, mayor_s_aide). +actress(ghost_busters, eda_reiss_merin, louis_s_neighbor). +actor(ghost_busters, ric_mancini, policeman_at_apartment). +actress(ghost_busters, kathryn_janssen, mrs_van_hoffman). +actor(ghost_busters, stanley_grover, reporter). +actress(ghost_busters, carol_ann_henry, reporter). +actor(ghost_busters, james_hardie, reporter). +actress(ghost_busters, frances_turner, reporter). +actress(ghost_busters, nancy_kelly, reporter). +actor(ghost_busters, paul_trafas, ted_fleming). +actress(ghost_busters, cheryl_birchenfield, annette_fleming). +actress(ghost_busters, ruth_oliver, library_ghost). +actress(ghost_busters, kymberly_herrin, dream_ghost). +actor(ghost_busters, larry_bilzarian, prisoner). +actor(ghost_busters, matteo_cafiso, boy_at_hot_dog_stand). +actress(ghost_busters, paddi_edwards, gozer). +actress(ghost_busters, deborah_gibson, birthday_girl_in_tavern_on_the_green). +actor(ghost_busters, charles_levin, honeymooner). +actor(ghost_busters, joseph_marzano, man_in_taxi). +actor(ghost_busters, joe_medjuck, man_at_library). +actor(ghost_busters, frank_patton, city_hall_cop). +actor(ghost_busters, harrison_ray, terror_dog). +actor(ghost_busters, ivan_reitman, zuul_slimer). +actor(ghost_busters, mario_todisco, prisoner). +actor(ghost_busters, bill_walton, himself). + +movie(girl_with_a_pearl_earring, 2003). +director(girl_with_a_pearl_earring, peter_webber). +actor(girl_with_a_pearl_earring, colin_firth, johannes_vermeer). +actress(girl_with_a_pearl_earring, scarlett_johansson, griet). +actor(girl_with_a_pearl_earring, tom_wilkinson, van_ruijven). +actress(girl_with_a_pearl_earring, judy_parfitt, maria_thins). +actor(girl_with_a_pearl_earring, cillian_murphy, pieter). +actress(girl_with_a_pearl_earring, essie_davis, catharina_vermeer). +actress(girl_with_a_pearl_earring, joanna_scanlan, tanneke). +actress(girl_with_a_pearl_earring, alakina_mann, cornelia_vermeer). +actor(girl_with_a_pearl_earring, chris_mchallem, griet_s_father). +actress(girl_with_a_pearl_earring, gabrielle_reidy, griet_s_mother). +actor(girl_with_a_pearl_earring, rollo_weeks, frans). +actress(girl_with_a_pearl_earring, anna_popplewell, maertge). +actress(girl_with_a_pearl_earring, ana_s_nepper, lisbeth). +actress(girl_with_a_pearl_earring, melanie_meyfroid, aleydis). +actor(girl_with_a_pearl_earring, nathan_nepper, johannes). +actress(girl_with_a_pearl_earring, lola_carpenter, baby_franciscus). +actress(girl_with_a_pearl_earring, charlotte_carpenter, baby_franciscus). +actress(girl_with_a_pearl_earring, olivia_chauveau, baby_franciscus). +actor(girl_with_a_pearl_earring, geoff_bell, paul_the_butcher). +actress(girl_with_a_pearl_earring, virginie_colin, emilie_van_ruijven). +actress(girl_with_a_pearl_earring, sarah_drews, van_ruijven_s_daughter). +actress(girl_with_a_pearl_earring, christelle_bulckaen, wet_nurse). +actor(girl_with_a_pearl_earring, john_mcenery, apothecary). +actress(girl_with_a_pearl_earring, gintare_parulyte, model). +actress(girl_with_a_pearl_earring, claire_johnston, white_haired_woman). +actor(girl_with_a_pearl_earring, marc_maes, old_gentleman). +actor(girl_with_a_pearl_earring, robert_sibenaler, priest). +actor(girl_with_a_pearl_earring, dustin_james, servant_1). +actor(girl_with_a_pearl_earring, joe_reavis, servant_2). +actor(girl_with_a_pearl_earring, martin_serene, sergeant). +actor(girl_with_a_pearl_earring, chris_kelly, gay_blade). +actor(girl_with_a_pearl_earring, leslie_woodhall, neighbour). + +movie(the_godfather, 1972). +director(the_godfather, francis_ford_coppola). +actor(the_godfather, marlon_brando, don_vito_corleone). +actor(the_godfather, al_pacino, michael_corleone). +actor(the_godfather, james_caan, santino_sonny_corleone). +actor(the_godfather, richard_s_castellano, pete_clemenza). +actor(the_godfather, robert_duvall, tom_hagen). +actor(the_godfather, sterling_hayden, capt_mark_mccluskey). +actor(the_godfather, john_marley, jack_woltz). +actor(the_godfather, richard_conte, emilio_barzini). +actor(the_godfather, al_lettieri, virgil_sollozzo). +actress(the_godfather, diane_keaton, kay_adams). +actor(the_godfather, abe_vigoda, salvadore_sally_tessio). +actress(the_godfather, talia_shire, connie). +actor(the_godfather, gianni_russo, carlo_rizzi). +actor(the_godfather, john_cazale, fredo). +actor(the_godfather, rudy_bond, ottilio_cuneo). +actor(the_godfather, al_martino, johnny_fontane). +actress(the_godfather, morgana_king, mama_corleone). +actor(the_godfather, lenny_montana, luca_brasi). +actor(the_godfather, john_martino, paulie_gatto). +actor(the_godfather, salvatore_corsitto, amerigo_bonasera). +actor(the_godfather, richard_bright, al_neri). +actor(the_godfather, alex_rocco, moe_greene). +actor(the_godfather, tony_giorgio, bruno_tattaglia). +actor(the_godfather, vito_scotti, nazorine). +actress(the_godfather, tere_livrano, theresa_hagen). +actor(the_godfather, victor_rendina, philip_tattaglia). +actress(the_godfather, jeannie_linero, lucy_mancini). +actress(the_godfather, julie_gregg, sandra_corleone). +actress(the_godfather, ardell_sheridan, mrs_clemenza). +actress(the_godfather, simonetta_stefanelli, apollonia_vitelli_corleone). +actor(the_godfather, angelo_infanti, fabrizio). +actor(the_godfather, corrado_gaipa, don_tommasino). +actor(the_godfather, franco_citti, calo). +actor(the_godfather, saro_urz, vitelli). +actor(the_godfather, carmine_coppola, piano_player_in_montage_scene). +actor(the_godfather, gian_carlo_coppola, baptism_observer). +actress(the_godfather, sofia_coppola, michael_francis_rizzi). +actor(the_godfather, ron_gilbert, usher_in_bridal_party). +actor(the_godfather, anthony_gounaris, anthony_vito_corleone). +actor(the_godfather, joe_lo_grippo, sonny_s_bodyguard). +actor(the_godfather, sonny_grosso, cop_with_capt_mccluskey_outside_hospital). +actor(the_godfather, louis_guss, don_zaluchi_outspoken_don_at_the_peace_conference). +actor(the_godfather, randy_jurgensen, sonny_s_killer_1). +actor(the_godfather, tony_lip, wedding_guest). +actor(the_godfather, frank_macetta, ''). +actor(the_godfather, lou_martini_jr, boy_at_wedding). +actor(the_godfather, father_joseph_medeglia, priest_at_baptism). +actor(the_godfather, rick_petrucelli, man_in_passenger_seat_when_michael_is_driven_to_the_hospital). +actor(the_godfather, burt_richards, floral_designer). +actor(the_godfather, sal_richards, drunk). +actor(the_godfather, tom_rosqui, rocco_lampone). +actor(the_godfather, frank_sivero, extra). +actress(the_godfather, filomena_spagnuolo, extra_at_wedding_scene). +actor(the_godfather, joe_spinell, willie_cicci). +actor(the_godfather, gabriele_torrei, enzo_robutti_the_baker). +actor(the_godfather, nick_vallelonga, wedding_party_guest). +actor(the_godfather, ed_vantura, wedding_guest). +actor(the_godfather, matthew_vlahakis, clemenza_s_son_pushing_toy_car_in_driveway). + +movie(the_godfather_part_ii, 1974). +director(the_godfather_part_ii, francis_ford_coppola). +actor(the_godfather_part_ii, al_pacino, don_michael_corleone). +actor(the_godfather_part_ii, robert_duvall, tom_hagen). +actress(the_godfather_part_ii, diane_keaton, kay_corleone). +actor(the_godfather_part_ii, robert_de_niro, vito_corleone). +actor(the_godfather_part_ii, john_cazale, fredo_corleone). +actress(the_godfather_part_ii, talia_shire, connie_corleone). +actor(the_godfather_part_ii, lee_strasberg, hyman_roth). +actor(the_godfather_part_ii, michael_v_gazzo, frankie_pentangeli). +actor(the_godfather_part_ii, g_d_spradlin, sen_pat_geary). +actor(the_godfather_part_ii, richard_bright, al_neri). +actor(the_godfather_part_ii, gastone_moschin, don_fanucci). +actor(the_godfather_part_ii, tom_rosqui, rocco_lampone). +actor(the_godfather_part_ii, bruno_kirby, young_clemenza_peter). +actor(the_godfather_part_ii, frank_sivero, genco_abbandando). +actress(the_godfather_part_ii, francesca_de_sapio, young_mama_corleone). +actress(the_godfather_part_ii, morgana_king, older_carmella_mama_corleone). +actress(the_godfather_part_ii, marianna_hill, deanna_dunn_corleone). +actor(the_godfather_part_ii, leopoldo_trieste, signor_roberto_landlord). +actor(the_godfather_part_ii, dominic_chianese, johnny_ola). +actor(the_godfather_part_ii, amerigo_tot, busetta_michael_s_bodyguard). +actor(the_godfather_part_ii, troy_donahue, merle_johnson). +actor(the_godfather_part_ii, john_aprea, young_sal_tessio). +actor(the_godfather_part_ii, joe_spinell, willie_cicci). +actor(the_godfather_part_ii, james_caan, sonny_corleone_special_participation). +actor(the_godfather_part_ii, abe_vigoda, sal_tessio). +actress(the_godfather_part_ii, tere_livrano, theresa_hagen). +actor(the_godfather_part_ii, gianni_russo, carlo_rizzi). +actress(the_godfather_part_ii, maria_carta, signora_andolini_vito_s_mother). +actor(the_godfather_part_ii, oreste_baldini, young_vito_andolini). +actor(the_godfather_part_ii, giuseppe_sillato, don_francesco_ciccio). +actor(the_godfather_part_ii, mario_cotone, don_tommasino). +actor(the_godfather_part_ii, james_gounaris, anthony_vito_corleone). +actress(the_godfather_part_ii, fay_spain, mrs_marcia_roth). +actor(the_godfather_part_ii, harry_dean_stanton, fbi_man_1). +actor(the_godfather_part_ii, david_baker, fbi_man_2). +actor(the_godfather_part_ii, carmine_caridi, carmine_rosato). +actor(the_godfather_part_ii, danny_aiello, tony_rosato). +actor(the_godfather_part_ii, carmine_foresta, policeman). +actor(the_godfather_part_ii, nick_discenza, bartender). +actor(the_godfather_part_ii, father_joseph_medeglia, father_carmelo). +actor(the_godfather_part_ii, william_bowers, senate_committee_chairman). +actor(the_godfather_part_ii, joseph_della_sorte, michael_s_buttonman_1). +actor(the_godfather_part_ii, carmen_argenziano, michael_s_buttonman_2). +actor(the_godfather_part_ii, joe_lo_grippo, michael_s_buttonman_3). +actor(the_godfather_part_ii, ezio_flagello, impresario). +actor(the_godfather_part_ii, livio_giorgi, tenor_in_senza_mamma). +actress(the_godfather_part_ii, kathleen_beller, girl_in_senza_mamma). +actress(the_godfather_part_ii, saveria_mazzola, signora_colombo). +actor(the_godfather_part_ii, tito_alba, cuban_pres_fulgencio_batista). +actor(the_godfather_part_ii, johnny_naranjo, cuban_translator). +actress(the_godfather_part_ii, elda_maida, pentangeli_s_wife). +actor(the_godfather_part_ii, salvatore_po, vincenzo_pentangeli). +actor(the_godfather_part_ii, ignazio_pappalardo, mosca_assassin_in_sicily). +actor(the_godfather_part_ii, andrea_maugeri, strollo). +actor(the_godfather_part_ii, peter_lacorte, signor_abbandando). +actor(the_godfather_part_ii, vincent_coppola, street_vendor). +actor(the_godfather_part_ii, peter_donat, questadt). +actor(the_godfather_part_ii, tom_dahlgren, fred_corngold). +actor(the_godfather_part_ii, paul_b_brown, sen_ream). +actor(the_godfather_part_ii, phil_feldman, senator_1). +actor(the_godfather_part_ii, roger_corman, senator_2). +actress(the_godfather_part_ii, ivonne_coll, yolanda). +actor(the_godfather_part_ii, joe_de_nicola, attendant_at_brothel). +actor(the_godfather_part_ii, edward_van_sickle, ellis_island_doctor). +actress(the_godfather_part_ii, gabriella_belloni, ellis_island_nurse). +actor(the_godfather_part_ii, richard_watson, customs_official). +actress(the_godfather_part_ii, venancia_grangerard, cuban_nurse). +actress(the_godfather_part_ii, erica_yohn, governess). +actress(the_godfather_part_ii, theresa_tirelli, midwife). +actor(the_godfather_part_ii, roman_coppola, sonny_corleone_as_a_boy). +actress(the_godfather_part_ii, sofia_coppola, child_on_steamship_in_ny_harbor). +actor(the_godfather_part_ii, larry_guardino, vito_s_uncle). +actor(the_godfather_part_ii, gary_kurtz, photographer_in_court). +actress(the_godfather_part_ii, laura_lyons, ''). +actress(the_godfather_part_ii, connie_mason, extra). +actor(the_godfather_part_ii, john_megna, young_hyman_roth). +actor(the_godfather_part_ii, frank_pesce, extra). +actress(the_godfather_part_ii, filomena_spagnuolo, extra_in_little_italy). + +movie(the_godfather_part_iii, 1990). +director(the_godfather_part_iii, francis_ford_coppola). +actor(the_godfather_part_iii, al_pacino, don_michael_corleone). +actress(the_godfather_part_iii, diane_keaton, kay_adams_mitchelson). +actress(the_godfather_part_iii, talia_shire, connie_corleone_rizzi). +actor(the_godfather_part_iii, andy_garcia, don_vincent_vinnie_mancini_corleone). +actor(the_godfather_part_iii, eli_wallach, don_altobello). +actor(the_godfather_part_iii, joe_mantegna, joey_zasa). +actor(the_godfather_part_iii, george_hamilton, b_j_harrison). +actress(the_godfather_part_iii, bridget_fonda, grace_hamilton). +actress(the_godfather_part_iii, sofia_coppola, mary_corleone). +actor(the_godfather_part_iii, raf_vallone, cardinal_lamberto). +actor(the_godfather_part_iii, franc_d_ambrosio, anthony_vito_corleone_turiddu_sequence_cavalleria_rusticana). +actor(the_godfather_part_iii, donal_donnelly, archbishop_gilday). +actor(the_godfather_part_iii, richard_bright, al_neri). +actor(the_godfather_part_iii, helmut_berger, frederick_keinszig). +actor(the_godfather_part_iii, don_novello, dominic_abbandando). +actor(the_godfather_part_iii, john_savage, father_andrew_hagen). +actor(the_godfather_part_iii, franco_citti, calo). +actor(the_godfather_part_iii, mario_donatone, mosca). +actor(the_godfather_part_iii, vittorio_duse, don_tommasino). +actor(the_godfather_part_iii, enzo_robutti, don_licio_lucchesi). +actor(the_godfather_part_iii, michele_russo, spara). +actor(the_godfather_part_iii, al_martino, johnny_fontane). +actor(the_godfather_part_iii, robert_cicchini, lou_penning). +actor(the_godfather_part_iii, rogerio_miranda, twin_bodyguard_armand). +actor(the_godfather_part_iii, carlos_miranda, twin_bodyguard_francesco). +actor(the_godfather_part_iii, vito_antuofermo, anthony_the_ant_squigliaro_joey_zaza_s_bulldog). +actor(the_godfather_part_iii, robert_vento, father_john). +actor(the_godfather_part_iii, willie_brown, party_politician). +actress(the_godfather_part_iii, jeannie_linero, lucy_mancini). +actor(the_godfather_part_iii, remo_remotti, camerlengo_cardinal_cardinal__sistine). +actress(the_godfather_part_iii, jeanne_savarino_pesch, francesca_corleone). +actress(the_godfather_part_iii, janet_savarino_smith, kathryn_corleone). +actress(the_godfather_part_iii, tere_livrano, teresa_hagen). +actor(the_godfather_part_iii, carmine_caridi, albert_volpe). +actor(the_godfather_part_iii, don_costello, frank_romano). +actor(the_godfather_part_iii, al_ruscio, leo_cuneo). +actor(the_godfather_part_iii, mickey_knox, marty_parisi). +actor(the_godfather_part_iii, rick_aviles, mask_1). +actor(the_godfather_part_iii, michael_bowen, mask_2). +actor(the_godfather_part_iii, brett_halsey, douglas_michelson). +actor(the_godfather_part_iii, gabriele_torrei, enzo_the_baker). +actor(the_godfather_part_iii, john_abineri, hamilton_banker). +actor(the_godfather_part_iii, brian_freilino, stockholder). +actor(the_godfather_part_iii, gregory_corso, unruly_stockholder). +actor(the_godfather_part_iii, marino_mas, lupo). +actor(the_godfather_part_iii, dado_ruspoli, vanni). +actress(the_godfather_part_iii, valeria_sabel, sister_vincenza). +actor(the_godfather_part_iii, luigi_laezza, keinszig_killer). +actor(the_godfather_part_iii, beppe_pianviti, keinszig_killer). +actor(the_godfather_part_iii, santo_indelicato, guardia_del_corpo). +actor(the_godfather_part_iii, francesco_paolo_bellante, autista_di_don_tommasino). +actor(the_godfather_part_iii, paco_reconti, gesu). +actor(the_godfather_part_iii, mimmo_cuticchio, puppet_narrator). +actor(the_godfather_part_iii, richard_honigman, party_reporter). +actor(the_godfather_part_iii, nicky_blair, nicky_the_casino_host). +actor(the_godfather_part_iii, anthony_guidera, anthony_the_bodyguard). +actor(the_godfather_part_iii, frank_tarsia, frankie_the_bodyguard). +actress(the_godfather_part_iii, diane_agostini, woman_with_child_at_street_fair). +actress(the_godfather_part_iii, jessica_di_cicco, child). +actress(the_godfather_part_iii, catherine_scorsese, woman_in_cafe). +actress(the_godfather_part_iii, ida_bernardini, woman_in_cafe). +actor(the_godfather_part_iii, joe_drago, party_security). +actor(the_godfather_part_iii, david_hume_kennerly, party_photographer). +actor(the_godfather_part_iii, james_d_damiano, son_playing_soccer). +actor(the_godfather_part_iii, michael_boccio, father_of_soccer_player). +actor(the_godfather_part_iii, anton_coppola, conductor_sequence_cavalleria_rusticana). +actress(the_godfather_part_iii, elena_lo_forte, santuzza_played_by_sequence_cavalleria_rusticana). +actress(the_godfather_part_iii, madelyn_ren_e_monti, santuzza_sung_by_lola_sequence_cavalleria_rusticana). +actress(the_godfather_part_iii, corinna_vozza, lucia_sequence_cavalleria_rusticana). +actor(the_godfather_part_iii, angelo_romero, alfio_played_by_sequence_cavalleria_rusticana). +actor(the_godfather_part_iii, paolo_gavanelli, alfio_sung_by_sequence_cavalleria_rusticana). +actor(the_godfather_part_iii, salvatore_billa, hired_assassin). +actor(the_godfather_part_iii, sal_borgese, lucchesi_s_door_guard). +actor(the_godfather_part_iii, james_caan, sonny_corleone). +actor(the_godfather_part_iii, richard_s_castellano, peter_clemenza). +actor(the_godfather_part_iii, john_cazale, fredo_corleone). +actor(the_godfather_part_iii, tony_devon, mob_family_lawyer_at_the_church). +actor(the_godfather_part_iii, andrea_girolami, extra). +actress(the_godfather_part_iii, simonetta_stefanelli, apollonia_vitelli_corleone). +actor(the_godfather_part_iii, lee_strasberg, hyman_roth_stukowski). +actor(the_godfather_part_iii, f_x_vitolo, pasquale). + +movie(groundhog_day, 1993). +director(groundhog_day, harold_ramis). +actor(groundhog_day, bill_murray, phil_connors). +actress(groundhog_day, andie_macdowell, rita). +actor(groundhog_day, chris_elliott, larry). +actor(groundhog_day, stephen_tobolowsky, ned_ryerson). +actor(groundhog_day, brian_doyle_murray, buster_green). +actress(groundhog_day, marita_geraghty, nancy_taylor). +actress(groundhog_day, angela_paton, mrs_lancaster). +actor(groundhog_day, rick_ducommun, gus). +actor(groundhog_day, rick_overton, ralph). +actress(groundhog_day, robin_duke, doris_the_waitress). +actress(groundhog_day, carol_bivins, anchorwoman). +actor(groundhog_day, willie_garson, kenny). +actor(groundhog_day, ken_hudson_campbell, man_in_hallway). +actor(groundhog_day, les_podewell, old_man). +actor(groundhog_day, rod_sell, groundhog_official). +actor(groundhog_day, tom_milanovich, state_trooper). +actor(groundhog_day, john_m_watson_sr, bartender). +actress(groundhog_day, peggy_roeder, piano_teacher). +actor(groundhog_day, harold_ramis, neurologist). +actor(groundhog_day, david_pasquesi, psychiatrist). +actor(groundhog_day, lee_r_sellars, cop). +actor(groundhog_day, chet_dubowski, felix_bank_guard). +actor(groundhog_day, doc_erickson, herman_bank_guard). +actress(groundhog_day, sandy_maschmeyer, phil_s_movie_date). +actress(groundhog_day, leighanne_o_neil, fan_on_street). +actress(groundhog_day, evangeline_binkley, jeopardy__viewer). +actor(groundhog_day, samuel_mages, jeopardy__viewer). +actor(groundhog_day, ben_zwick, jeopardy__viewer). +actress(groundhog_day, hynden_walch, debbie_kleiser). +actor(groundhog_day, michael_shannon, fred_kleiser). +actor(groundhog_day, timothy_hendrickson, bill_waiter). +actress(groundhog_day, martha_webster, alice_waitress). +actress(groundhog_day, angela_gollan, piano_student). +actor(groundhog_day, shaun_chaiyabhat, boy_in_tree). +actress(groundhog_day, dianne_b_shaw, e_r_nurse). +actress(groundhog_day, barbara_ann_grimes, flat_tire_lady). +actress(groundhog_day, ann_heekin, flat_tire_lady). +actress(groundhog_day, lucina_paquet, flat_tire_lady). +actress(groundhog_day, brenda_pickleman, buster_s_wife). +actress(groundhog_day, amy_murdoch, buster_s_daughter). +actor(groundhog_day, eric_saiet, buster_s_son). +actress(groundhog_day, lindsay_albert, woman_with_cigarette). +actor(groundhog_day, roger_adler, guitarist). +actor(groundhog_day, ben_a_fish, bassist). +actor(groundhog_day, don_riozz_mcnichols, drummer). +actor(groundhog_day, brian_willig, saxophonist). +actor(groundhog_day, richard_henzel, dj). +actor(groundhog_day, rob_riley, dj). +actor(groundhog_day, scooter, the_groundhog). +actor(groundhog_day, douglas_blakeslee, man_with_snow_shovel). +actress(groundhog_day, leslie_frates, herself__jeopardy__contestant). +actor(groundhog_day, mason_gamble, ''). +actor(groundhog_day, simon_harvey, news_reporter). +actor(groundhog_day, grady_hutt, ''). +actress(groundhog_day, regina_prokop, polka_dancer). +actor(groundhog_day, daniel_riggs, bachelor). +actor(groundhog_day, paul_terrien, groundhog_official). + +movie(hail_caesar, 2006). +director(hail_caesar, ethan_coen). +director(hail_caesar, joel_coen). + +movie(hearts_of_darkness_a_filmmaker_s_apocalypse, 1991). +director(hearts_of_darkness_a_filmmaker_s_apocalypse, fax_bahr). +director(hearts_of_darkness_a_filmmaker_s_apocalypse, eleanor_coppola). +director(hearts_of_darkness_a_filmmaker_s_apocalypse, george_hickenlooper). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, john_milius, himself). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, sam_bottoms, himself). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, marlon_brando, himself). +actress(hearts_of_darkness_a_filmmaker_s_apocalypse, colleen_camp, herself). +actress(hearts_of_darkness_a_filmmaker_s_apocalypse, eleanor_coppola, herself). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, francis_ford_coppola, himself). +actress(hearts_of_darkness_a_filmmaker_s_apocalypse, gia_coppola, herself). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, roman_coppola, himself). +actress(hearts_of_darkness_a_filmmaker_s_apocalypse, sofia_coppola, herself). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, robert_de_niro, himself). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, robert_duvall, himself). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, laurence_fishburne, himself). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, harrison_ford, ''). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, frederic_forrest, himself). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, albert_hall, himself). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, dennis_hopper, himself). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, george_lucas, himself). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, martin_sheen, himself). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, g_d_spradlin, himself). +actor(hearts_of_darkness_a_filmmaker_s_apocalypse, orson_welles, himself_from_1938_radio_broadcast). + +movie(the_hudsucker_proxy, 1994). +director(the_hudsucker_proxy, ethan_coen). +director(the_hudsucker_proxy, joel_coen). +actor(the_hudsucker_proxy, tim_robbins, norville_barnes). +actress(the_hudsucker_proxy, jennifer_jason_leigh, amy_archer). +actor(the_hudsucker_proxy, paul_newman, sidney_j_mussburger). +actor(the_hudsucker_proxy, charles_durning, waring_hudsucker). +actor(the_hudsucker_proxy, john_mahoney, chief_editor_manhattan_argus). +actor(the_hudsucker_proxy, jim_true_frost, buzz_the_elevator_operator). +actor(the_hudsucker_proxy, bill_cobbs, moses_the_clock_man). +actor(the_hudsucker_proxy, bruce_campbell, smitty_argus_reporter). +actor(the_hudsucker_proxy, harry_bugin, aloysius_mussburger_s_spy). +actor(the_hudsucker_proxy, john_seitz, bennie_the_cabbie). +actor(the_hudsucker_proxy, joe_grifasi, lou_the_cabbie). +actor(the_hudsucker_proxy, roy_brocksmith, board_member). +actor(the_hudsucker_proxy, john_wylie, board_member). +actor(the_hudsucker_proxy, i_m_hobson, board_member). +actor(the_hudsucker_proxy, gary_allen, board_member). +actor(the_hudsucker_proxy, john_scanlan, board_member). +actor(the_hudsucker_proxy, richard_woods, board_member). +actor(the_hudsucker_proxy, jerome_dempsey, board_member). +actor(the_hudsucker_proxy, peter_mcpherson, board_member). +actor(the_hudsucker_proxy, david_byrd, dr_hugo_bronfenbrenner). +actor(the_hudsucker_proxy, christopher_darga, mail_room_orienter). +actor(the_hudsucker_proxy, patrick_cranshaw, ancient_sorter). +actor(the_hudsucker_proxy, robert_weil, mail_room_boss). +actress(the_hudsucker_proxy, mary_lou_rosato, mussburger_s_secretary). +actor(the_hudsucker_proxy, ernest_sarracino, luigi_the_tailor). +actress(the_hudsucker_proxy, eleanor_glockner, mrs_mussburger). +actress(the_hudsucker_proxy, kathleen_perkins, mrs_braithwaite). +actor(the_hudsucker_proxy, joseph_marcus, sears_braithwaite_of_bullard). +actor(the_hudsucker_proxy, peter_gallagher, vic_tenetta_party_singer). +actor(the_hudsucker_proxy, noble_willingham, zebulon_cardoza). +actress(the_hudsucker_proxy, barbara_ann_grimes, mrs_cardoza). +actor(the_hudsucker_proxy, thom_noble, thorstenson_finlandson_finnish_stockholder). +actor(the_hudsucker_proxy, steve_buscemi, beatnik_barman_at_ann_s_440). +actor(the_hudsucker_proxy, william_duff_griffin, newsreel_scientist). +actress(the_hudsucker_proxy, anna_nicole_smith, za_za). +actress(the_hudsucker_proxy, pamela_everett, dream_dancer). +actor(the_hudsucker_proxy, arthur_bridgers, the_hula_hoop_kid). +actor(the_hudsucker_proxy, sam_raimi, hudsucker_brainstormer). +actor(the_hudsucker_proxy, john_cameron, hudsucker_brainstormer). +actor(the_hudsucker_proxy, skipper_duke, mr_grier). +actor(the_hudsucker_proxy, jay_kapner, mr_levin). +actor(the_hudsucker_proxy, jon_polito, mr_bumstead). +actor(the_hudsucker_proxy, richard_whiting, ancient_puzzler). +actress(the_hudsucker_proxy, linda_mccoy, coffee_shop_waitress). +actor(the_hudsucker_proxy, stan_adams, emcee). +actor(the_hudsucker_proxy, john_goodman, rockwell_newsreel_anouncer). +actress(the_hudsucker_proxy, joanne_pankow, newsreel_secretary). +actor(the_hudsucker_proxy, mario_todisco, norville_s_goon). +actor(the_hudsucker_proxy, colin_fickes, newsboy). +actor(the_hudsucker_proxy, dick_sasso, drunk_in_alley). +actor(the_hudsucker_proxy, jesse_brewer, mailroom_screamer). +actor(the_hudsucker_proxy, philip_loch, mailroom_screamer). +actor(the_hudsucker_proxy, stan_lichtenstein, mailroom_screamer). +actor(the_hudsucker_proxy, todd_alcott, mailroom_screamer). +actor(the_hudsucker_proxy, ace_o_connell, mailroom_screamer). +actor(the_hudsucker_proxy, richard_schiff, mailroom_screamer). +actor(the_hudsucker_proxy, frank_jeffries, mailroom_screamer). +actor(the_hudsucker_proxy, lou_criscuolo, mailroom_screamer). +actor(the_hudsucker_proxy, michael_earl_reid, mailroom_screamer). +actor(the_hudsucker_proxy, mike_starr, newsroom_reporter). +actor(the_hudsucker_proxy, david_hagar, newsroom_reporter). +actor(the_hudsucker_proxy, willie_reale, newsroom_reporter). +actor(the_hudsucker_proxy, harvey_meyer, newsroom_reporter). +actor(the_hudsucker_proxy, tom_toner, newsroom_reporter). +actor(the_hudsucker_proxy, david_fawcett, newsroom_reporter). +actor(the_hudsucker_proxy, jeff_still, newsreel_reporter). +actor(the_hudsucker_proxy, david_gould, newsreel_reporter). +actor(the_hudsucker_proxy, gil_pearson, newsreel_reporter). +actor(the_hudsucker_proxy, marc_garber, newsreel_reporter). +actor(the_hudsucker_proxy, david_massie, newsreel_reporter). +actor(the_hudsucker_proxy, mark_jeffrey_miller, newsreel_reporter). +actor(the_hudsucker_proxy, peter_siragusa, newsreel_reporter). +actor(the_hudsucker_proxy, nelson_george, newsreel_reporter). +actor(the_hudsucker_proxy, michael_houlihan, newsreel_reporter). +actor(the_hudsucker_proxy, ed_lillard, newsreel_reporter). +actor(the_hudsucker_proxy, wantland_sandel, new_year_s_mob). +actor(the_hudsucker_proxy, james_deuter, new_year_s_mob). +actor(the_hudsucker_proxy, roderick_peeples, new_year_s_mob). +actress(the_hudsucker_proxy, cynthia_baker, new_year_s_mob). +actor(the_hudsucker_proxy, jack_rooney, man_at_merchandise_mart). +actor(the_hudsucker_proxy, keith_schrader, businessman). + +movie(inside_monkey_zetterland, 1992). +director(inside_monkey_zetterland, jefery_levy). +actor(inside_monkey_zetterland, steve_antin, monkey_zetterland). +actress(inside_monkey_zetterland, patricia_arquette, grace_zetterland). +actress(inside_monkey_zetterland, sandra_bernhard, imogene). +actress(inside_monkey_zetterland, sofia_coppola, cindy). +actor(inside_monkey_zetterland, tate_donovan, brent_zetterland). +actor(inside_monkey_zetterland, rupert_everett, sasha). +actress(inside_monkey_zetterland, katherine_helmond, honor_zetterland). +actor(inside_monkey_zetterland, bo_hopkins, mike_zetterland). +actress(inside_monkey_zetterland, ricki_lake, bella_the_stalker). +actress(inside_monkey_zetterland, debi_mazar, daphne). +actress(inside_monkey_zetterland, martha_plimpton, sofie). +actress(inside_monkey_zetterland, robin_antin, waitress). +actress(inside_monkey_zetterland, frances_bay, grandma). +actor(inside_monkey_zetterland, luca_bercovici, boot_guy). +actress(inside_monkey_zetterland, melissa_lechner, observation_psychiatrist). +actor(inside_monkey_zetterland, lance_loud, psychiatrist). +actor(inside_monkey_zetterland, chris_nash, police_officer). +actress(inside_monkey_zetterland, vivian_schilling, network_producer). +actress(inside_monkey_zetterland, blair_tefkin, brent_s_assistant). + +movie(intolerable_cruelty, 2003). +director(intolerable_cruelty, ethan_coen). +director(intolerable_cruelty, joel_coen). +actor(intolerable_cruelty, george_clooney, miles_massey). +actress(intolerable_cruelty, catherine_zeta_jones, marylin_rexroth). +actor(intolerable_cruelty, geoffrey_rush, donovan_donaly). +actor(intolerable_cruelty, cedric_the_entertainer, gus_petch). +actor(intolerable_cruelty, edward_herrmann, rex_rexroth). +actor(intolerable_cruelty, paul_adelstein, wrigley). +actor(intolerable_cruelty, richard_jenkins, freddy_bender). +actor(intolerable_cruelty, billy_bob_thornton, howard_d_doyle). +actress(intolerable_cruelty, julia_duffy, sarah_sorkin). +actor(intolerable_cruelty, jonathan_hadary, heinz_the_baron_krauss_von_espy). +actor(intolerable_cruelty, tom_aldredge, herb_myerson). +actress(intolerable_cruelty, stacey_travis, bonnie_donaly). +actor(intolerable_cruelty, jack_kyle, ollie_olerud). +actor(intolerable_cruelty, irwin_keyes, wheezy_joe). +actress(intolerable_cruelty, judith_drake, mrs_gutman). +actor(intolerable_cruelty, royce_d_applegate, mr_gutman). +actor(intolerable_cruelty, george_ives, mr_gutman_s_lawyer). +actor(intolerable_cruelty, booth_colman, gutman_trial_judge). +actress(intolerable_cruelty, kristin_dattilo, rex_s_young_woman). +actress(intolerable_cruelty, wendle_josepher, miles_receptionist). +actress(intolerable_cruelty, mary_pat_gleason, nero_s_waitress). +actress(intolerable_cruelty, mia_cottet, ramona_barcelona). +actress(intolerable_cruelty, kiersten_warren, claire_o_mara). +actor(intolerable_cruelty, rosey_brown, gus_s_pal). +actor(intolerable_cruelty, ken_sagoes, gus_s_pal). +actor(intolerable_cruelty, dale_e_turner, gus_s_pal). +actor(intolerable_cruelty, douglas_fisher, maitre_d). +actor(intolerable_cruelty, nicholas_shaffer, waiter). +actress(intolerable_cruelty, isabell_o_connor, judge_marva_munson). +actress(intolerable_cruelty, mary_gillis, court_reporter). +actor(intolerable_cruelty, colin_linden, father_scott). +actress(intolerable_cruelty, julie_osburn, stewardess). +actor(intolerable_cruelty, gary_marshal, las_vegas_waiter). +actor(intolerable_cruelty, blake_clark, convention_secretary). +actor(intolerable_cruelty, allan_trautman, convention_lawyer). +actress(intolerable_cruelty, kate_luyben, santa_fe_tart). +actress(intolerable_cruelty, kitana_baker, santa_fe_tart). +actress(intolerable_cruelty, camille_anderson, santa_fe_tart). +actress(intolerable_cruelty, tamie_sheffield, santa_fe_tart). +actress(intolerable_cruelty, bridget_marquardt, santa_fe_tart). +actress(intolerable_cruelty, emma_harrison, santa_fe_tart). +actor(intolerable_cruelty, john_bliss, mr_mackinnon). +actor(intolerable_cruelty, patrick_thomas_o_brien, bailiff). +actor(intolerable_cruelty, sean_fanton, bailiff). +actress(intolerable_cruelty, justine_baker, wedding_guest). +actor(intolerable_cruelty, bruce_campbell, soap_opera_actor_on_tv). +actress(intolerable_cruelty, barbara_kerr_condon, herb_myerson_s_private_nurse). +actor(intolerable_cruelty, jason_de_hoyos, gardener). +actor(intolerable_cruelty, larry_vigus, lawyer). +actress(intolerable_cruelty, susan_yeagley, tart_1). + +movie(the_ladykillers, 2004). +director(the_ladykillers, ethan_coen). +director(the_ladykillers, joel_coen). +actor(the_ladykillers, tom_hanks, professor_g_h_dorr). +actress(the_ladykillers, irma_p_hall, marva_munson). +actor(the_ladykillers, marlon_wayans, gawain_macsam). +actor(the_ladykillers, j_k_simmons, garth_pancake). +actor(the_ladykillers, tzi_ma, the_general). +actor(the_ladykillers, ryan_hurst, lump_hudson). +actress(the_ladykillers, diane_delano, mountain_girl). +actor(the_ladykillers, george_wallace, sheriff_wyner). +actor(the_ladykillers, john_mcconnell, deputy_sheriff). +actor(the_ladykillers, jason_weaver, weemack_funthes). +actor(the_ladykillers, stephen_root, fernand_gudge). +actress(the_ladykillers, lyne_odums, rosalie_funthes). +actor(the_ladykillers, walter_k_jordan, elron). +actor(the_ladykillers, george_anthony_bell, preacher). +actor(the_ladykillers, greg_grunberg, tv_commercial_director). +actress(the_ladykillers, hallie_singleton, craft_service). +actor(the_ladykillers, robert_baker, quarterback). +actor(the_ladykillers, blake_clark, football_coach). +actor(the_ladykillers, amad_jackson, doughnut_gangster). +actor(the_ladykillers, aldis_hodge, doughnut_gangster). +actress(the_ladykillers, freda_foh_shen, doughnut_woman). +actress(the_ladykillers, paula_martin, gawain_s_mama). +actor(the_ladykillers, jeremy_suarez, li_l_gawain). +actress(the_ladykillers, te_te_benn, gawain_s_sister). +actor(the_ladykillers, khalil_east, gawain_s_brother). +actress(the_ladykillers, jennifer_echols, waffle_hut_waitress). +actress(the_ladykillers, nita_norris, tea_lady). +actress(the_ladykillers, vivian_smallwood, tea_lady). +actress(the_ladykillers, maryn_tasco, tea_lady). +actress(the_ladykillers, muriel_whitaker, tea_lady). +actress(the_ladykillers, jessie_bailey, tea_lady). +actress(the_ladykillers, louisa_abernathy, church_voice). +actress(the_ladykillers, mildred_dumas, church_voice). +actor(the_ladykillers, al_fann, church_voice). +actress(the_ladykillers, mi_mi_green_fann, church_voice). +actor(the_ladykillers, maurice_watson, othar). +actor(the_ladykillers, bruce_campbell, humane_society_worker). +actor(the_ladykillers, michael_dotson, angry_football_fan). + +movie(lick_the_star, 1998). +director(lick_the_star, sofia_coppola). +actress(lick_the_star, christina_turley, kate). +actress(lick_the_star, audrey_heaven, chloe). +actress(lick_the_star, julia_vanderham, rebecca). +actress(lick_the_star, lindsy_drummer, sara). +actor(lick_the_star, robert_schwartzman, greg). +actress(lick_the_star, rachael_vanni, wendy). +actor(lick_the_star, peter_bogdanovich, principal). +actress(lick_the_star, zoe_r_cassavetes, p_e_teacher). +actress(lick_the_star, anahid_nazarian, social_studies_teacher). +actress(lick_the_star, davia_nelson, english_teacher). +actress(lick_the_star, christianna_toler, nadine). +actress(lick_the_star, hilary_fleming, taco_girl). +actress(lick_the_star, eleanor_cummings, sixth_grader_p_e_victim). +actor(lick_the_star, anthony_desimone, snack_counter_victim). +actor(lick_the_star, aron_acord, sexy_boy). + +movie(lost_in_translation, 2003). +director(lost_in_translation, sofia_coppola). +actress(lost_in_translation, scarlett_johansson, charlotte). +actor(lost_in_translation, bill_murray, bob_harris). +actress(lost_in_translation, akiko_takeshita, ms_kawasaki). +actor(lost_in_translation, kazuyoshi_minamimagoe, press_agent). +actor(lost_in_translation, kazuko_shibata, press_agent). +actor(lost_in_translation, take, press_agent). +actor(lost_in_translation, ryuichiro_baba, concierge). +actor(lost_in_translation, akira_yamaguchi, bellboy). +actress(lost_in_translation, catherine_lambert, jazz_singer). +actor(lost_in_translation, fran_ois_du_bois, sausalito_piano). +actor(lost_in_translation, tim_leffman, sausalito_guitar). +actor(lost_in_translation, gregory_pekar, american_businessman_1). +actor(lost_in_translation, richard_allen, american_businessman_2). +actor(lost_in_translation, giovanni_ribisi, john). +actor(lost_in_translation, diamond_yukai, commercial_director). +actor(lost_in_translation, jun_maki, suntory_client). +actress(lost_in_translation, nao_asuka, premium_fantasy_woman). +actor(lost_in_translation, tetsuro_naka, stills_photographer). +actor(lost_in_translation, kanako_nakazato, make_up_person). +actor(lost_in_translation, fumihiro_hayashi, charlie). +actress(lost_in_translation, hiroko_kawasaki, hiroko). +actress(lost_in_translation, daikon, bambie). +actress(lost_in_translation, anna_faris, kelly). +actor(lost_in_translation, asuka_shimuzu, kelly_s_translator). +actor(lost_in_translation, ikuko_takahashi, ikebana_instructor). +actor(lost_in_translation, koichi_tanaka, bartender_ny_bar). +actor(lost_in_translation, hugo_codaro, aerobics_instructor). +actress(lost_in_translation, akiko_monou, p_chan). +actor(lost_in_translation, akimitsu_naruyama, french_japanese_nightclub_patron). +actor(lost_in_translation, hiroshi_kawashima, bartender_nightclub). +actress(lost_in_translation, toshikawa_hiromi, hiromix). +actor(lost_in_translation, nobuhiko_kitamura, nobu). +actor(lost_in_translation, nao_kitman, nao). +actor(lost_in_translation, akira, hans). +actor(lost_in_translation, kunichi_nomura, kun). +actor(lost_in_translation, yasuhiko_hattori, charlie_s_friend). +actor(lost_in_translation, shigekazu_aida, mr_valentine). +actor(lost_in_translation, kazuo_yamada, hospital_receptionist). +actor(lost_in_translation, akira_motomura, old_man). +actor(lost_in_translation, osamu_shigematu, doctor). +actor(lost_in_translation, takashi_fujii, tv_host). +actor(lost_in_translation, kei_takyo, tv_translator). +actor(lost_in_translation, ryo_kondo, politician). +actor(lost_in_translation, yumi_ikeda, politician_s_aide). +actor(lost_in_translation, yumika_saki, politician_s_aide). +actor(lost_in_translation, yuji_okabe, politician_s_aide). +actor(lost_in_translation, diedrich_bollman, german_hotel_guest). +actor(lost_in_translation, georg_o_p_eschert, german_hotel_guest). +actor(lost_in_translation, mark_willms, carl_west). +actress(lost_in_translation, lisle_wilkerson, sexy_businesswoman). +actress(lost_in_translation, nancy_steiner, lydia_harris). + +movie(the_man_who_wasn_t_there, 2001). +director(the_man_who_wasn_t_there, ethan_coen). +director(the_man_who_wasn_t_there, joel_coen). +actor(the_man_who_wasn_t_there, billy_bob_thornton, ed_crane). +actress(the_man_who_wasn_t_there, frances_mcdormand, doris_crane). +actor(the_man_who_wasn_t_there, michael_badalucco, frank). +actor(the_man_who_wasn_t_there, james_gandolfini, dave_big_dave_brewster). +actress(the_man_who_wasn_t_there, katherine_borowitz, ann_nirdlinger). +actor(the_man_who_wasn_t_there, jon_polito, creighton_tolliver). +actress(the_man_who_wasn_t_there, scarlett_johansson, rachel_birdy_abundas). +actor(the_man_who_wasn_t_there, richard_jenkins, walter_abundas). +actor(the_man_who_wasn_t_there, tony_shalhoub, freddy_riedenschneider). +actor(the_man_who_wasn_t_there, christopher_kriesa, officer_persky). +actor(the_man_who_wasn_t_there, brian_haley, officer_pete_krebs). +actor(the_man_who_wasn_t_there, jack_mcgee, burns). +actor(the_man_who_wasn_t_there, gregg_binkley, the_new_man). +actor(the_man_who_wasn_t_there, alan_fudge, diedrickson). +actress(the_man_who_wasn_t_there, lilyan_chauvin, medium). +actor(the_man_who_wasn_t_there, adam_alexi_malle, jacques_carcanogues). +actor(the_man_who_wasn_t_there, ted_rooney, bingo_caller). +actor(the_man_who_wasn_t_there, abraham_benrubi, young_man). +actor(the_man_who_wasn_t_there, christian_ferratti, child). +actress(the_man_who_wasn_t_there, rhoda_gemignani, costanza). +actor(the_man_who_wasn_t_there, e_j_callahan, customer). +actress(the_man_who_wasn_t_there, brooke_smith, sobbing_prisoner). +actor(the_man_who_wasn_t_there, ron_ross, banker). +actress(the_man_who_wasn_t_there, hallie_singleton, waitress). +actor(the_man_who_wasn_t_there, jon_donnelly, gatto_eater). +actor(the_man_who_wasn_t_there, dan_martin, bailiff). +actor(the_man_who_wasn_t_there, nicholas_lanier, tony). +actor(the_man_who_wasn_t_there, tom_dahlgren, judge_1). +actor(the_man_who_wasn_t_there, booth_colman, judge_2). +actor(the_man_who_wasn_t_there, stanley_desantis, new_man_s_customer). +actor(the_man_who_wasn_t_there, peter_siragusa, bartender). +actor(the_man_who_wasn_t_there, christopher_mcdonald, macadam_salesman). +actor(the_man_who_wasn_t_there, rick_scarry, district_attorney). +actor(the_man_who_wasn_t_there, george_ives, lloyd_garroway). +actor(the_man_who_wasn_t_there, devon_cole_borisoff, swimming_boy). +actress(the_man_who_wasn_t_there, mary_bogue, prisoner_visitor). +actor(the_man_who_wasn_t_there, don_donati, pie_contest_timer). +actor(the_man_who_wasn_t_there, arthur_reeves, flophouse_clerk). +actress(the_man_who_wasn_t_there, michelle_weber, dancer). +actress(the_man_who_wasn_t_there, randi_pareira, dancer). +actor(the_man_who_wasn_t_there, robert_loftin, dancer). +actor(the_man_who_wasn_t_there, kenneth_hughes, dancer). +actor(the_man_who_wasn_t_there, gordon_hart, dancer). +actress(the_man_who_wasn_t_there, brenda_mae_hamilton, dancer). +actor(the_man_who_wasn_t_there, lloyd_gordon, dancer). +actor(the_man_who_wasn_t_there, leonard_crofoot, dancer). +actress(the_man_who_wasn_t_there, rita_bland, dancer). +actress(the_man_who_wasn_t_there, audrey_k_baranishyn, dancer). +actress(the_man_who_wasn_t_there, qyn_hughes, dancer). +actress(the_man_who_wasn_t_there, rachel_mcdonald, dancer). +actor(the_man_who_wasn_t_there, craig_berenson, jail_guy). +actress(the_man_who_wasn_t_there, joan_m_blair, prison_matron). +actor(the_man_who_wasn_t_there, geoffrey_gould, alpine_rope_toss_man). +actor(the_man_who_wasn_t_there, phil_hawn, man_in_courtroom). +actress(the_man_who_wasn_t_there, cherilyn_hayres, swing_dancer). +actor(the_man_who_wasn_t_there, john_michael_higgins, emergency_room_physician). +actress(the_man_who_wasn_t_there, monika_malmrose, crying_girl). +actor(the_man_who_wasn_t_there, peter_schrum, truck_driver). +actor(the_man_who_wasn_t_there, max_thayer, witness). + +movie(marie_antoinette, 2006). +director(marie_antoinette, sofia_coppola). +actress(marie_antoinette, kirsten_dunst, marie_antoinette). +actor(marie_antoinette, jason_schwartzman, louis_xvi). +actor(marie_antoinette, rip_torn, king_louis_xv). +actress(marie_antoinette, judy_davis, comtesse_de_noailles). +actress(marie_antoinette, asia_argento, madame_du_barry). +actress(marie_antoinette, marianne_faithfull, maria_theresia). +actress(marie_antoinette, aurore_cl_ment, la_duchesse_de_chartres). +actor(marie_antoinette, guillaume_gallienne, comte_vergennes). +actress(marie_antoinette, clementine_poidatz, comtesse_de_provence). +actress(marie_antoinette, molly_shannon, anne_victoire). +actor(marie_antoinette, steve_coogan, count_mercy_d_argenteau). +actor(marie_antoinette, jamie_dornan, axel_von_fersen). +actress(marie_antoinette, shirley_henderson, aunt_sophie). +actor(marie_antoinette, jean_christophe_bouvet, duc_de_choiseul). +actor(marie_antoinette, filippo_bozotti, dimitri). +actress(marie_antoinette, sarah_adler, ''). +actor(marie_antoinette, mathieu_amalric, man_at_the_masked_ball). +actress(marie_antoinette, rachel_berger, lady_m_b). +actor(marie_antoinette, xavier_bonastre, court_member). +actress(marie_antoinette, io_bottoms, lady_in_waiting_1). +actress(marie_antoinette, sol_ne_bouton, ''). +actress(marie_antoinette, rose_byrne, yolande_martine_gabrielle_de_polastron_duchesse_de_polignac). +actor(marie_antoinette, alain_doutey, ''). +actor(marie_antoinette, gilles_dufour, ''). +actress(marie_antoinette, sabine_glaser, court_member). +actress(marie_antoinette, h_loise_godet, court_member). +actress(marie_antoinette, manon_grosset, une_page). +actor(marie_antoinette, philippe_h_li_s, king_s_aide_de_camp_2). +actor(marie_antoinette, arnaud_klein, garde_royal_royal_guard). +actress(marie_antoinette, aleksia_landeau, countesse_de_castelabjac). +actor(marie_antoinette, benjamin_lemaire, un_page). +actor(marie_antoinette, victor_loukianenko, le_valet_de_marie_antoinette). +actor(marie_antoinette, rapha_l_neal, garden_page). +actress(marie_antoinette, mary_nighy, ''). +actor(marie_antoinette, al_weaver, ''). + +movie(miller_s_crossing, 1990). +director(miller_s_crossing, ethan_coen). +director(miller_s_crossing, joel_coen). +actor(miller_s_crossing, gabriel_byrne, tom_reagan). +actress(miller_s_crossing, marcia_gay_harden, verna). +actor(miller_s_crossing, john_turturro, bernie_bernbaum). +actor(miller_s_crossing, jon_polito, johnny_caspar). +actor(miller_s_crossing, j_e_freeman, eddie_dane). +actor(miller_s_crossing, albert_finney, leo). +actor(miller_s_crossing, mike_starr, frankie). +actor(miller_s_crossing, al_mancini, tic_tac). +actor(miller_s_crossing, richard_woods, mayor_dale_levander). +actor(miller_s_crossing, thomas_toner, o_doole). +actor(miller_s_crossing, steve_buscemi, mink). +actor(miller_s_crossing, mario_todisco, clarence_drop_johnson). +actor(miller_s_crossing, olek_krupa, tad). +actor(miller_s_crossing, michael_jeter, adolph). +actor(miller_s_crossing, lanny_flaherty, terry). +actress(miller_s_crossing, jeanette_kontomitras, mrs_caspar). +actor(miller_s_crossing, louis_charles_mounicou_iii, johnny_caspar_jr). +actor(miller_s_crossing, john_mcconnell, cop__brian). +actor(miller_s_crossing, danny_aiello_iii, cop__delahanty). +actress(miller_s_crossing, helen_jolly, screaming_lady). +actress(miller_s_crossing, hilda_mclean, landlady). +actor(miller_s_crossing, monte_starr, gunman_in_leo_s_house). +actor(miller_s_crossing, don_picard, gunman_in_leo_s_house). +actor(miller_s_crossing, salvatore_h_tornabene, rug_daniels). +actor(miller_s_crossing, kevin_dearie, street_urchin). +actor(miller_s_crossing, michael_badalucco, caspar_s_driver). +actor(miller_s_crossing, charles_ferrara, caspar_s_butler). +actor(miller_s_crossing, esteban_fern_ndez, caspar_s_cousin). +actor(miller_s_crossing, george_fernandez, caspar_s_cousin). +actor(miller_s_crossing, charles_gunning, hitman_at_verna_s). +actor(miller_s_crossing, dave_drinkx, hitman_2). +actor(miller_s_crossing, david_darlow, lazarre_s_messenger). +actor(miller_s_crossing, robert_labrosse, lazarre_s_tough). +actor(miller_s_crossing, carl_rooney, lazarre_s_tough). +actor(miller_s_crossing, jack_harris, man_with_pipe_bomb). +actor(miller_s_crossing, jery_hewitt, son_of_erin). +actor(miller_s_crossing, sam_raimi, snickering_gunman). +actor(miller_s_crossing, john_schnauder_jr, cop_with_bullhorn). +actor(miller_s_crossing, zolly_levin, rabbi). +actor(miller_s_crossing, joey_ancona, boxer). +actor(miller_s_crossing, bill_raye, boxer). +actor(miller_s_crossing, william_preston_robertson, voice). +actress(miller_s_crossing, frances_mcdormand, mayor_s_secretary). + +movie(mission_impossible, 1996). +director(mission_impossible, brian_de_palma). +actor(mission_impossible, tom_cruise, ethan_hunt). +actor(mission_impossible, jon_voight, jim_phelps). +actress(mission_impossible, emmanuelle_b_art, claire_phelps). +actor(mission_impossible, henry_czerny, eugene_kittridge). +actor(mission_impossible, jean_reno, franz_krieger). +actor(mission_impossible, ving_rhames, luther_stickell). +actress(mission_impossible, kristin_scott_thomas, sarah_davies). +actress(mission_impossible, vanessa_redgrave, max). +actor(mission_impossible, dale_dye, frank_barnes). +actor(mission_impossible, marcel_iures, golitsyn). +actor(mission_impossible, ion_caramitru, zozimov). +actress(mission_impossible, ingeborga_dapkunaite, hannah_williams). +actress(mission_impossible, valentina_yakunina, drunken_female_imf_agent). +actor(mission_impossible, marek_vasut, drunken_male_imf_agent). +actor(mission_impossible, nathan_osgood, kittridge_technician). +actor(mission_impossible, john_mclaughlin, tv_interviewer). +actor(mission_impossible, rolf_saxon, cia_analyst_william_donloe). +actor(mission_impossible, karel_dobry, matthias). +actor(mission_impossible, andreas_wisniewski, max_s_companion). +actor(mission_impossible, david_shaeffer, diplomat_rand_housman). +actor(mission_impossible, rudolf_pechan, mayor_brandl). +actor(mission_impossible, gaston_subert, jaroslav_reid). +actor(mission_impossible, ricco_ross, denied_area_security_guard). +actor(mission_impossible, mark_houghton, denied_area_security_guard). +actor(mission_impossible, bob_friend, sky_news_man). +actress(mission_impossible, annabel_mullion, flight_attendant). +actor(mission_impossible, garrick_hagon, cnn_reporter). +actor(mission_impossible, olegar_fedoro, kiev_room_agent). +actor(mission_impossible, sam_douglas, kiev_room_agent). +actor(mission_impossible, andrzej_borkowski, kiev_room_agent). +actress(mission_impossible, maya_dokic, kiev_room_agent). +actress(mission_impossible, carmela_marner, kiev_room_agent). +actress(mission_impossible, mimi_potworowska, kiev_room_agent). +actress(mission_impossible, jirina_trebick, cleaning_woman). +actor(mission_impossible, david_schneider, train_engineer). +actress(mission_impossible, helen_lindsay, female_executive_in_train). +actress(mission_impossible, pat_starr, cia_agent). +actor(mission_impossible, richard_d_sharp, cia_lobby_guard). +actor(mission_impossible, randall_paul, cia_escort_guard). +actress(mission_impossible, sue_doucette, cia_agent). +actor(mission_impossible, graydon_gould, public_official). +actor(mission_impossible, tony_vogel, m_i_5). +actor(mission_impossible, michael_rogers, large_man). +actress(mission_impossible, laura_brook, margaret_hunt). +actor(mission_impossible, morgan_deare, donald_hunt). +actor(mission_impossible, david_phelan, steward_on_train). +actress(mission_impossible, melissa_knatchbull, air_stewardess). +actor(mission_impossible, keith_campbell, fireman). +actor(mission_impossible, michael_cella, student). +actor(mission_impossible, emilio_estevez, jack_harmon). +actor(mission_impossible, john_knoll, passenger_on_train_in_tunnel). + +movie(no_country_for_old_men, 2007). +director(no_country_for_old_men, joel_coen). + +movie(o_brother_where_art_thou, 2000). +director(o_brother_where_art_thou, ethan_coen). +director(o_brother_where_art_thou, joel_coen). +actor(o_brother_where_art_thou, george_clooney, ulysses_everett_mcgill). +actor(o_brother_where_art_thou, john_turturro, pete). +actor(o_brother_where_art_thou, tim_blake_nelson, delmar_o_donnell). +actor(o_brother_where_art_thou, john_goodman, big_dan_teague). +actress(o_brother_where_art_thou, holly_hunter, penny). +actor(o_brother_where_art_thou, chris_thomas_king, tommy_johnson). +actor(o_brother_where_art_thou, charles_durning, pappy_o_daniel). +actor(o_brother_where_art_thou, del_pentecost, junior_o_daniel). +actor(o_brother_where_art_thou, michael_badalucco, george_nelson). +actor(o_brother_where_art_thou, j_r_horne, pappy_s_staff). +actor(o_brother_where_art_thou, brian_reddy, pappy_s_staff). +actor(o_brother_where_art_thou, wayne_duvall, homer_stokes). +actor(o_brother_where_art_thou, ed_gale, the_little_man). +actor(o_brother_where_art_thou, ray_mckinnon, vernon_t_waldrip). +actor(o_brother_where_art_thou, daniel_von_bargen, sheriff_cooley_the_devil). +actor(o_brother_where_art_thou, royce_d_applegate, man_with_bullhorn). +actor(o_brother_where_art_thou, frank_collison, wash_hogwallop). +actor(o_brother_where_art_thou, quinn_gasaway, boy_hogwallop). +actor(o_brother_where_art_thou, lee_weaver, blind_seer). +actor(o_brother_where_art_thou, millford_fortenberry, pomade_vendor). +actor(o_brother_where_art_thou, stephen_root, radio_station_man). +actor(o_brother_where_art_thou, john_locke, mr_french). +actress(o_brother_where_art_thou, gillian_welch, soggy_bottom_customer). +actor(o_brother_where_art_thou, a_ray_ratliff, record_store_clerk). +actress(o_brother_where_art_thou, mia_tate, siren). +actress(o_brother_where_art_thou, musetta_vander, siren). +actress(o_brother_where_art_thou, christy_taylor, siren). +actress(o_brother_where_art_thou, april_hardcastle, waitress). +actor(o_brother_where_art_thou, michael_w_finnell, interrogator). +actress(o_brother_where_art_thou, georgia_rae_rainer, wharvey_gal). +actress(o_brother_where_art_thou, marianna_breland, wharvey_gal). +actress(o_brother_where_art_thou, lindsey_miller, wharvey_gal). +actress(o_brother_where_art_thou, natalie_shedd, wharvey_gal). +actor(o_brother_where_art_thou, john_mcconnell, woolworths_manager). +actor(o_brother_where_art_thou, issac_freeman, gravedigger). +actor(o_brother_where_art_thou, wilson_waters_jr, gravedigger). +actor(o_brother_where_art_thou, robert_hamlett, gravedigger). +actor(o_brother_where_art_thou, willard_cox, cox_family). +actress(o_brother_where_art_thou, evelyn_cox, cox_family). +actress(o_brother_where_art_thou, suzanne_cox, cox_family). +actor(o_brother_where_art_thou, sidney_cox, cox_family). +actor(o_brother_where_art_thou, buck_white, the_whites). +actress(o_brother_where_art_thou, sharon_white, the_whites). +actress(o_brother_where_art_thou, cheryl_white, the_whites). +actor(o_brother_where_art_thou, ed_snodderly, village_idiot). +actor(o_brother_where_art_thou, david_holt, village_idiot). +actor(o_brother_where_art_thou, jerry_douglas, dobro_player). +actor(o_brother_where_art_thou, christopher_francis, kkk_member). +actor(o_brother_where_art_thou, geoffrey_gould, head_of_mob). +actor(o_brother_where_art_thou, nathaniel_lee_jr, ice_boy_on_the_right_straw_hat). + +movie(the_outsiders, 1983). +director(the_outsiders, francis_ford_coppola). +actor(the_outsiders, matt_dillon, dallas_dally_winston). +actor(the_outsiders, ralph_macchio, johnny_cade). +actor(the_outsiders, c_thomas_howell, ponyboy_curtis). +actor(the_outsiders, patrick_swayze, darrel_darry_curtis). +actor(the_outsiders, rob_lowe, sodapop_curtis). +actor(the_outsiders, emilio_estevez, keith_two_bit_mathews). +actor(the_outsiders, tom_cruise, steve_randle). +actor(the_outsiders, glenn_withrow, tim_shepard). +actress(the_outsiders, diane_lane, sherri_cherry_valance). +actor(the_outsiders, leif_garrett, bob_sheldon). +actor(the_outsiders, darren_dalton, randy_anderson). +actress(the_outsiders, michelle_meyrink, marcia). +actor(the_outsiders, gailard_sartain, jerry_wood). +actor(the_outsiders, tom_waits, buck_merrill). +actor(the_outsiders, william_smith, store_clerk). +actor(the_outsiders, tom_hillmann, greaser_in_concession_stand). +actor(the_outsiders, hugh_walkinshaw, soc_in_concession_stand). +actress(the_outsiders, sofia_coppola, little_girl). +actress(the_outsiders, teresa_wilkerson_hunt, woman_at_fire). +actress(the_outsiders, linda_nystedt, nurse). +actress(the_outsiders, s_e_hinton, nurse). +actor(the_outsiders, brent_beesley, suburb_guy). +actor(the_outsiders, john_meier, paul). +actor(the_outsiders, ed_jackson, motorcycle_cop). +actor(the_outsiders, daniel_r_suhart, orderly). +actress(the_outsiders, heather_langenkamp, ''). + +movie(paris_je_t_aime, 2006). +director(paris_je_t_aime, olivier_assayas). +director(paris_je_t_aime, fr_d_ric_auburtin). +director(paris_je_t_aime, christoffer_boe). +director(paris_je_t_aime, sylvain_chomet). +director(paris_je_t_aime, ethan_coen). +director(paris_je_t_aime, joel_coen). +director(paris_je_t_aime, isabel_coixet). +director(paris_je_t_aime, alfonso_cuar_n). +director(paris_je_t_aime, g_rard_depardieu). +director(paris_je_t_aime, jean_luc_godard). +director(paris_je_t_aime, richard_lagravenese). +director(paris_je_t_aime, anne_marie_mi_ville). +director(paris_je_t_aime, vincenzo_natali). +director(paris_je_t_aime, alexander_payne). +director(paris_je_t_aime, walter_salles). +director(paris_je_t_aime, oliver_schmitz). +director(paris_je_t_aime, ettore_scola). +director(paris_je_t_aime, nobuhiro_suwa). +director(paris_je_t_aime, daniela_thomas). +director(paris_je_t_aime, tom_tykwer). +director(paris_je_t_aime, gus_van_sant). +actress(paris_je_t_aime, emilie_ohana, the_young_parisian_recurrent_character). +actress(paris_je_t_aime, julie_bataille, julie_segment_1st_arrondissement). +actor(paris_je_t_aime, steve_buscemi, the_tourist_segment_1st_arrondissement). +actor(paris_je_t_aime, axel_kiener, axel_segment_1st_arrondissement). +actress(paris_je_t_aime, juliette_binoche, the_mother_segment_2nd_arrondissement). +actor(paris_je_t_aime, willem_dafoe, the_cow_boy_segment_2nd_arrondissement). +actress(paris_je_t_aime, marianne_faithfull, segment_4th_arrondissement). +actor(paris_je_t_aime, elias_mcconnell, eli_segment_4th_arrondissement). +actor(paris_je_t_aime, gaspard_ulliel, gaspar_segment_4th_arrondissement). +actor(paris_je_t_aime, ben_gazzara, ben_segment_6th_arrondissement). +actress(paris_je_t_aime, gena_rowlands, gena_segment_6th_arrondissement). +actress(paris_je_t_aime, yolande_moreau, female_mime_segment_7th_arrondissement). +actor(paris_je_t_aime, paul_putner, male_mime_segment_7th_arrondissement). +actress(paris_je_t_aime, olga_kurylenko, the_femme_fatale_segment_8th_arrondissement). +actress(paris_je_t_aime, fanny_ardant, fanny_forestier_segment_9th_arrondissement). +actor(paris_je_t_aime, bob_hoskins, bob_leander_segment_9th_arrondissement). +actor(paris_je_t_aime, melchior_beslon, thomas_segment_10th_arrondissement). +actress(paris_je_t_aime, natalie_portman, francine_segment_10th_arrondissement). +actor(paris_je_t_aime, javier_c_mara, the_doctor_segment_12th_arrondissement). +actress(paris_je_t_aime, isabella_rossellini, the_wife_segment_12th_arrondissement). +actress(paris_je_t_aime, leonor_watling, segment_12th_arrondissement). +actress(paris_je_t_aime, camille_japy, anna_segment_15th_arrondissement). +actor(paris_je_t_aime, nick_nolte, vincent_segment_17th_arrondissement). +actress(paris_je_t_aime, ludivine_sagnier, claire_segment_17th_arrondissement). +actor(paris_je_t_aime, seydou_boro, hassan_segment_19th_arrondissement). +actress(paris_je_t_aime, a_ssa_ma_ga, sophie_segment_19th_arrondissement). + +movie(peggy_sue_got_married, 1986). +director(peggy_sue_got_married, francis_ford_coppola). +actress(peggy_sue_got_married, kathleen_turner, peggy_sue_kelcher_peggy_sue_bodell). +actor(peggy_sue_got_married, nicolas_cage, charlie_bodell). +actor(peggy_sue_got_married, barry_miller, richard_norvik). +actress(peggy_sue_got_married, catherine_hicks, carol_heath). +actress(peggy_sue_got_married, joan_allen, maddy_nagle). +actor(peggy_sue_got_married, kevin_j_o_connor, michael_fitzsimmons). +actor(peggy_sue_got_married, jim_carrey, walter_getz). +actress(peggy_sue_got_married, lisa_jane_persky, delores_dodge). +actress(peggy_sue_got_married, lucinda_jenney, rosalie_testa). +actor(peggy_sue_got_married, wil_shriner, arthur_nagle). +actress(peggy_sue_got_married, barbara_harris, evelyn_kelcher). +actor(peggy_sue_got_married, don_murray, jack_kelcher). +actress(peggy_sue_got_married, sofia_coppola, nancy_kelcher). +actress(peggy_sue_got_married, maureen_o_sullivan, elizabeth_alvorg). +actor(peggy_sue_got_married, leon_ames, barney_alvorg). +actor(peggy_sue_got_married, randy_bourne, scott_bodell). +actress(peggy_sue_got_married, helen_hunt, beth_bodell). +actor(peggy_sue_got_married, don_stark, doug_snell). +actor(peggy_sue_got_married, marshall_crenshaw, reunion_band). +actor(peggy_sue_got_married, chris_donato, reunion_band). +actor(peggy_sue_got_married, robert_crenshaw, reunion_band). +actor(peggy_sue_got_married, tom_teeley, reunion_band). +actor(peggy_sue_got_married, graham_maby, reunion_band). +actor(peggy_sue_got_married, ken_grantham, mr_snelgrove). +actress(peggy_sue_got_married, ginger_taylor, janet). +actress(peggy_sue_got_married, sigrid_wurschmidt, sharon). +actor(peggy_sue_got_married, glenn_withrow, terry). +actor(peggy_sue_got_married, harry_basil, leon). +actor(peggy_sue_got_married, john_carradine, leo). +actress(peggy_sue_got_married, sachi_parker, lisa). +actress(peggy_sue_got_married, vivien_straus, sandy). +actor(peggy_sue_got_married, morgan_upton, mr_gilford). +actor(peggy_sue_got_married, dr_lewis_leibovich, dr_daly). +actor(peggy_sue_got_married, bill_bonham, drunk). +actor(peggy_sue_got_married, joe_lerer, drunk_creep). +actress(peggy_sue_got_married, barbara_oliver, nurse). +actor(peggy_sue_got_married, martin_scott, the_four_mations). +actor(peggy_sue_got_married, marcus_scott, the_four_mations). +actor(peggy_sue_got_married, carl_lockett, the_four_mations). +actor(peggy_sue_got_married, tony_saunders, the_four_mations). +actor(peggy_sue_got_married, vincent_lars, the_four_mations). +actor(peggy_sue_got_married, larry_e_vann, the_four_mations). +actor(peggy_sue_got_married, lawrence_menkin, elderly_gentleman). +actor(peggy_sue_got_married, daniel_r_suhart, chinese_waiter). +actor(peggy_sue_got_married, leslie_hilsinger, majorette). +actor(peggy_sue_got_married, al_nalbandian, lodge_member). +actor(peggy_sue_got_married, dan_leegant, lodge_member). +actor(peggy_sue_got_married, ron_cook, lodge_member). +actress(peggy_sue_got_married, mary_leichtling, reunion_receptionist). +actress(peggy_sue_got_married, cynthia_brian, reunion_woman_2). +actor(peggy_sue_got_married, michael_x_martin, ''). +actress(peggy_sue_got_married, mary_mitchel, ''). + +movie(raising_arizona, 1987). +director(raising_arizona, ethan_coen). +director(raising_arizona, joel_coen). +actor(raising_arizona, nicolas_cage, h_i_mcdonnough). +actress(raising_arizona, holly_hunter, edwina_ed_mcdonnough). +actor(raising_arizona, trey_wilson, nathan_arizona_huffhines_sr). +actor(raising_arizona, john_goodman, gale_snoats). +actor(raising_arizona, william_forsythe, evelle_snoats). +actor(raising_arizona, sam_mcmurray, glen). +actress(raising_arizona, frances_mcdormand, dot). +actor(raising_arizona, randall_tex_cobb, leonard_smalls). +actor(raising_arizona, t_j_kuhn, nathan_arizona_jr). +actress(raising_arizona, lynne_dumin_kitei, florence_arizona). +actor(raising_arizona, peter_benedek, prison_counselor). +actor(raising_arizona, charles_lew_smith, nice_old_grocery_man). +actor(raising_arizona, warren_keith, younger_fbi_agent). +actor(raising_arizona, henry_kendrick, older_fbi_agent). +actor(raising_arizona, sidney_dawson, moses_ear_bending_cellmate). +actor(raising_arizona, richard_blake, parole_board_chairman). +actor(raising_arizona, troy_nabors, parole_board_member). +actress(raising_arizona, mary_seibel, parole_board_member). +actor(raising_arizona, john_o_donnal, hayseed_in_the_pickup). +actor(raising_arizona, keith_jandacek, whitey). +actor(raising_arizona, warren_forsythe, minister). +actor(raising_arizona, ruben_young, trapped_convict). +actor(raising_arizona, dennis_sullivan, policeman_in_arizona_house). +actor(raising_arizona, richard_alexander, policeman_in_arizona_house). +actor(raising_arizona, rusty_lee, feisty_hayseed). +actor(raising_arizona, james_yeater, fingerprint_technician). +actor(raising_arizona, bill_andres, reporter). +actor(raising_arizona, carver_barns, reporter). +actress(raising_arizona, margaret_h_mccormack, unpainted_arizona_secretary). +actor(raising_arizona, bill_rocz, newscaster). +actress(raising_arizona, mary_f_glenn, payroll_cashier). +actor(raising_arizona, jeremy_babendure, scamp_with_squirt_gun). +actor(raising_arizona, bill_dobbins, adoption_agent). +actor(raising_arizona, ralph_norton, gynecologist). +actor(raising_arizona, henry_tank, mopping_convict). +actor(raising_arizona, frank_outlaw, supermarket_manager). +actor(raising_arizona, todd_michael_rodgers, varsity_nathan_jr). +actor(raising_arizona, m_emmet_walsh, machine_shop_ear_bender). +actor(raising_arizona, robert_gray, glen_and_dot_s_kid). +actress(raising_arizona, katie_thrasher, glen_and_dot_s_kid). +actor(raising_arizona, derek_russell, glen_and_dot_s_kid). +actress(raising_arizona, nicole_russell, glen_and_dot_s_kid). +actor(raising_arizona, zachary_sanders, glen_and_dot_s_kid). +actress(raising_arizona, noell_sanders, glen_and_dot_s_kid). +actor(raising_arizona, cody_ranger, arizona_quint). +actor(raising_arizona, jeremy_arendt, arizona_quint). +actress(raising_arizona, ashley_hammon, arizona_quint). +actress(raising_arizona, crystal_hiller, arizona_quint). +actress(raising_arizona, olivia_hughes, arizona_quint). +actress(raising_arizona, emily_malin, arizona_quint). +actress(raising_arizona, melanie_malin, arizona_quint). +actor(raising_arizona, craig_mclaughlin, arizona_quint). +actor(raising_arizona, adam_savageau, arizona_quint). +actor(raising_arizona, benjamin_savageau, arizona_quint). +actor(raising_arizona, david_schneider, arizona_quint). +actor(raising_arizona, michael_stewart, arizona_quint). +actor(raising_arizona, william_preston_robertson, amazing_voice). +actor(raising_arizona, ron_francis_cobert, reporter_1). + +movie(rumble_fish, 1983). +director(rumble_fish, francis_ford_coppola). +actor(rumble_fish, matt_dillon, rusty_james). +actor(rumble_fish, mickey_rourke, the_motorcycle_boy). +actress(rumble_fish, diane_lane, patty). +actor(rumble_fish, dennis_hopper, father). +actress(rumble_fish, diana_scarwid, cassandra). +actor(rumble_fish, vincent_spano, steve). +actor(rumble_fish, nicolas_cage, smokey). +actor(rumble_fish, chris_penn, b_j_jackson). +actor(rumble_fish, laurence_fishburne, midget). +actor(rumble_fish, william_smith, patterson_the_cop). +actor(rumble_fish, michael_higgins, mr_harrigan). +actor(rumble_fish, glenn_withrow, biff_wilcox). +actor(rumble_fish, tom_waits, benny). +actor(rumble_fish, herb_rice, black_pool_player). +actress(rumble_fish, maybelle_wallace, late_pass_clerk). +actress(rumble_fish, nona_manning, patty_s_mom). +actress(rumble_fish, sofia_coppola, donna_patty_s_sister). +actor(rumble_fish, gian_carlo_coppola, cousin_james). +actress(rumble_fish, s_e_hinton, hooker_on_strip). +actor(rumble_fish, emmett_brown, mr_dobson). +actor(rumble_fish, tracey_walter, alley_mugger_1). +actor(rumble_fish, lance_guecia, alley_mugger_2). +actor(rumble_fish, bob_maras, policeman). +actor(rumble_fish, j_t_turner, math_teacher). +actress(rumble_fish, keeva_clayton, lake_girl_1). +actress(rumble_fish, kirsten_hayden, lake_girl_2). +actress(rumble_fish, karen_parker, lake_girl_3). +actress(rumble_fish, sussannah_darcy, lake_girl_4). +actress(rumble_fish, kristi_somers, lake_girl_5). +actress(rumble_fish, heather_langenkamp, ''). + +movie(spies_like_us, 1985). +director(spies_like_us, john_landis). +actor(spies_like_us, chevy_chase, emmett_fitz_hume). +actor(spies_like_us, dan_aykroyd, austin_millbarge). +actor(spies_like_us, steve_forrest, general_sline). +actress(spies_like_us, donna_dixon, karen_boyer). +actor(spies_like_us, bruce_davison, ruby). +actor(spies_like_us, bernie_casey, colonel_rhumbus). +actor(spies_like_us, william_prince, keyes). +actor(spies_like_us, tom_hatten, general_miegs). +actor(spies_like_us, frank_oz, test_monitor). +actor(spies_like_us, charles_mckeown, jerry_hadley). +actor(spies_like_us, james_daughton, bob_hodges). +actor(spies_like_us, jim_staahl, bud_schnelker). +actress(spies_like_us, vanessa_angel, russian_rocket_crew). +actress(spies_like_us, svetlana_plotnikova, russian_rocket_crew). +actor(spies_like_us, bjarne_thomsen, russian_rocket_crew). +actor(spies_like_us, sergei_rousakov, russian_rocket_crew). +actor(spies_like_us, garrick_dombrovski, russian_rocket_crew). +actor(spies_like_us, terry_gilliam, dr_imhaus). +actor(spies_like_us, costa_gavras, tadzhik_highway_patrol). +actor(spies_like_us, seva_novgorodtsev, tadzhik_highway_patrol). +actor(spies_like_us, stephen_hoye, captain_hefling). +actor(spies_like_us, ray_harryhausen, dr_marston). +actor(spies_like_us, mark_stewart, ace_tomato_courier). +actor(spies_like_us, sean_daniel, ace_tomato_driver). +actor(spies_like_us, jeff_harding, fitz_hume_s_associate). +actress(spies_like_us, heidi_sorenson, alice_fitz_hume_s_supervisor). +actress(spies_like_us, margo_random, reporter). +actor(spies_like_us, douglas_lambert, reporter). +actor(spies_like_us, christopher_malcolm, jumpmaster). +actor(spies_like_us, terrance_conder, soldier_1). +actor(spies_like_us, matt_frewer, soldier_2). +actor(spies_like_us, tony_cyrus, the_khan). +actress(spies_like_us, gusti_bogok, dr_la_fong). +actor(spies_like_us, derek_meddings, dr_stinson). +actor(spies_like_us, robert_paynter, dr_gill). +actor(spies_like_us, bob_hope, golfer). +actor(spies_like_us, gurdial_sira, the_khan_s_brother). +actor(spies_like_us, joel_coen, drive_in_security). +actor(spies_like_us, sam_raimi, drive_in_security). +actor(spies_like_us, michael_apted, ace_tomato_agent). +actor(spies_like_us, b_b_king, ace_tomato_agent). +actor(spies_like_us, larry_cohen, ace_tomato_agent). +actor(spies_like_us, martin_brest, drive_in_security). +actor(spies_like_us, ricco_ross, wamp_guard). +actor(spies_like_us, richard_sharpe, wamp_technician). +actor(spies_like_us, stuart_milligan, wamp_technician). +actress(spies_like_us, sally_anlauf, wamp_technician). +actor(spies_like_us, john_daveikis, russian_border_guard). +actor(spies_like_us, laurence_bilzerian, russian_border_guard). +actor(spies_like_us, richard_kruk, russian_border_guard). +actress(spies_like_us, heather_henson, teenage_girl). +actress(spies_like_us, erin_folsey, teenage_girl). +actor(spies_like_us, bob_swaim, special_forces_commander). +actor(spies_like_us, edwin_newman, himself). +actress(spies_like_us, nancy_gair, student). + +movie(star_wars_episode_i__the_phantom_menace, 1999). +director(star_wars_episode_i__the_phantom_menace, george_lucas). +actor(star_wars_episode_i__the_phantom_menace, liam_neeson, qui_gon_jinn). +actor(star_wars_episode_i__the_phantom_menace, ewan_mcgregor, obi_wan_kenobi). +actress(star_wars_episode_i__the_phantom_menace, natalie_portman, queen_padm_naberrie_amidala). +actor(star_wars_episode_i__the_phantom_menace, jake_lloyd, anakin_skywalker). +actress(star_wars_episode_i__the_phantom_menace, pernilla_august, shmi_skywalker). +actor(star_wars_episode_i__the_phantom_menace, frank_oz, yoda). +actor(star_wars_episode_i__the_phantom_menace, ian_mcdiarmid, senator_palpatine). +actor(star_wars_episode_i__the_phantom_menace, oliver_ford_davies, gov_sio_bibble). +actor(star_wars_episode_i__the_phantom_menace, hugh_quarshie, capt_panaka). +actor(star_wars_episode_i__the_phantom_menace, ahmed_best, jar_jar_binks). +actor(star_wars_episode_i__the_phantom_menace, anthony_daniels, c_3po). +actor(star_wars_episode_i__the_phantom_menace, kenny_baker, r2_d2). +actor(star_wars_episode_i__the_phantom_menace, terence_stamp, supreme_chancellor_valorum). +actor(star_wars_episode_i__the_phantom_menace, brian_blessed, boss_nass). +actor(star_wars_episode_i__the_phantom_menace, andrew_secombe, watto). +actor(star_wars_episode_i__the_phantom_menace, ray_park, darth_maul). +actor(star_wars_episode_i__the_phantom_menace, lewis_macleod, sebulba). +actor(star_wars_episode_i__the_phantom_menace, steven_spiers, capt_tarpals). +actor(star_wars_episode_i__the_phantom_menace, silas_carson, viceroy_nute_gunray_ki_adi_mundi_lott_dodd_radiant_vii_pilot). +actor(star_wars_episode_i__the_phantom_menace, ralph_brown, ric_oli). +actress(star_wars_episode_i__the_phantom_menace, celia_imrie, fighter_pilot_bravo_5). +actor(star_wars_episode_i__the_phantom_menace, benedict_taylor, fighter_pilot_bravo_2). +actor(star_wars_episode_i__the_phantom_menace, clarence_smith, fighter_pilot_bravo_3). +actress(star_wars_episode_i__the_phantom_menace, karol_cristina_da_silva, rab). +actor(star_wars_episode_i__the_phantom_menace, samuel_l_jackson, mace_windu). +actor(star_wars_episode_i__the_phantom_menace, dominic_west, palace_guard). +actress(star_wars_episode_i__the_phantom_menace, liz_wilson, eirta). +actress(star_wars_episode_i__the_phantom_menace, candice_orwell, yan). +actress(star_wars_episode_i__the_phantom_menace, sofia_coppola, sach). +actress(star_wars_episode_i__the_phantom_menace, keira_knightley, sab__queen_s_decoy). +actress(star_wars_episode_i__the_phantom_menace, bronagh_gallagher, radiant_vii_captain). +actor(star_wars_episode_i__the_phantom_menace, john_fensom, tc_14). +actor(star_wars_episode_i__the_phantom_menace, greg_proops, beed). +actor(star_wars_episode_i__the_phantom_menace, scott_capurro, fode). +actress(star_wars_episode_i__the_phantom_menace, margaret_towner, jira). +actor(star_wars_episode_i__the_phantom_menace, dhruv_chanchani, kitster). +actor(star_wars_episode_i__the_phantom_menace, oliver_walpole, seek). +actress(star_wars_episode_i__the_phantom_menace, katie_lucas, amee). +actress(star_wars_episode_i__the_phantom_menace, megan_udall, melee). +actor(star_wars_episode_i__the_phantom_menace, hassani_shapi, eeth_koth). +actress(star_wars_episode_i__the_phantom_menace, gin_clarke, adi_gallia). +actor(star_wars_episode_i__the_phantom_menace, khan_bonfils, saesee_tiin). +actress(star_wars_episode_i__the_phantom_menace, michelle_taylor, yarael_poof). +actress(star_wars_episode_i__the_phantom_menace, michaela_cottrell, even_piell). +actress(star_wars_episode_i__the_phantom_menace, dipika_o_neill_joti, depa_billaba). +actor(star_wars_episode_i__the_phantom_menace, phil_eason, yaddle). +actor(star_wars_episode_i__the_phantom_menace, mark_coulier, aks_moe). +actress(star_wars_episode_i__the_phantom_menace, lindsay_duncan, tc_14). +actor(star_wars_episode_i__the_phantom_menace, peter_serafinowicz, darth_maul). +actor(star_wars_episode_i__the_phantom_menace, james_taylor, rune_haako). +actor(star_wars_episode_i__the_phantom_menace, chris_sanders, daultay_dofine). +actor(star_wars_episode_i__the_phantom_menace, toby_longworth, sen_lott_dodd_gragra). +actor(star_wars_episode_i__the_phantom_menace, marc_silk, aks_moe). +actress(star_wars_episode_i__the_phantom_menace, amanda_lucas, tey_how). +actress(star_wars_episode_i__the_phantom_menace, amy_allen, twi_lek_senatorial_aide_dvd_deleted_scenes). +actor(star_wars_episode_i__the_phantom_menace, don_bies, pod_race_mechanic). +actress(star_wars_episode_i__the_phantom_menace, trisha_biggar, orn_free_taa_s_aide). +actor(star_wars_episode_i__the_phantom_menace, jerome_blake, rune_haako_mas_amedda_oppo_rancisis_orn_free_taa). +actress(star_wars_episode_i__the_phantom_menace, michonne_bourriague, aurra_sing). +actor(star_wars_episode_i__the_phantom_menace, ben_burtt, naboo_courier). +actor(star_wars_episode_i__the_phantom_menace, doug_chiang, flag_bearer). +actor(star_wars_episode_i__the_phantom_menace, rob_coleman, pod_race_spectator). +actor(star_wars_episode_i__the_phantom_menace, roman_coppola, senate_guard). +actor(star_wars_episode_i__the_phantom_menace, warwick_davis, wald_pod_race_spectator_mos_espa_citizen). +actor(star_wars_episode_i__the_phantom_menace, c_michael_easton, pod_race_spectator). +actor(star_wars_episode_i__the_phantom_menace, john_ellis, pod_race_spectator). +actor(star_wars_episode_i__the_phantom_menace, ira_feiedman, naboo_courier). +actor(star_wars_episode_i__the_phantom_menace, joss_gower, naboo_fighter_pilot). +actor(star_wars_episode_i__the_phantom_menace, raymond_griffiths, gonk_droid). +actor(star_wars_episode_i__the_phantom_menace, nathan_hamill, pod_race_spectator_naboo_palace_guard). +actor(star_wars_episode_i__the_phantom_menace, tim_harrington, extra_naboo_security_gaurd). +actress(star_wars_episode_i__the_phantom_menace, nifa_hindes, ann_gella). +actress(star_wars_episode_i__the_phantom_menace, nishan_hindes, tann_gella). +actor(star_wars_episode_i__the_phantom_menace, john_knoll, lt_rya_kirsch_bravo_4_flag_bearer). +actress(star_wars_episode_i__the_phantom_menace, madison_lloyd, princess_ellie). +actor(star_wars_episode_i__the_phantom_menace, dan_madsen, kaadu_handler). +actor(star_wars_episode_i__the_phantom_menace, iain_mccaig, orn_free_taa_s_aide). +actor(star_wars_episode_i__the_phantom_menace, rick_mccallum, naboo_courier). +actor(star_wars_episode_i__the_phantom_menace, lorne_peterson, mos_espa_citizen). +actor(star_wars_episode_i__the_phantom_menace, alan_ruscoe, plo_koon_bib_foruna_daultay_dofine). +actor(star_wars_episode_i__the_phantom_menace, steve_sansweet, naboo_courier). +actor(star_wars_episode_i__the_phantom_menace, jeff_shay, pod_race_spectator). +actor(star_wars_episode_i__the_phantom_menace, christian_simpson, bravo_6). +actor(star_wars_episode_i__the_phantom_menace, paul_martin_smith, naboo_courier). +actor(star_wars_episode_i__the_phantom_menace, scott_squires, naboo_speeder_driver). +actor(star_wars_episode_i__the_phantom_menace, tom_sylla, battle_droid). +actor(star_wars_episode_i__the_phantom_menace, danny_wagner, mawhonic). +actor(star_wars_episode_i__the_phantom_menace, dwayne_williams, naboo_courier). +actor(star_wars_episode_i__the_phantom_menace, matthew_wood, bib_fortuna_voice_of_ody_mandrell). +actor(star_wars_episode_i__the_phantom_menace, bob_woods, naboo_courier). + +movie(torrance_rises, 1999). +director(torrance_rises, lance_bangs). +director(torrance_rises, spike_jonze). +director(torrance_rises, torrance_community_dance_group). +actor(torrance_rises, spike_jonze, richard_coufey). +actress(torrance_rises, michelle_adams_meeker, herself). +actress(torrance_rises, ashley_barnett, herself). +actress(torrance_rises, dee_buchanan, herself). +actor(torrance_rises, roman_coppola, roman_coppola). +actress(torrance_rises, sofia_coppola, herself). +actress(torrance_rises, renee_diamond, herself). +actor(torrance_rises, eminem, eminem). +actor(torrance_rises, alvin_gaines_molina, himself). +actress(torrance_rises, janeane_garofalo, janeane_garofalo). +actor(torrance_rises, michael_gier, himself). +actor(torrance_rises, richard_koufey, himself). +actor(torrance_rises, byron_s_loyd, himself). +actress(torrance_rises, allison_lynch, herself). +actress(torrance_rises, madonna, madonna). +actor(torrance_rises, kevin_l_maher, himself). +actor(torrance_rises, tony_maxwell, himself). +actress(torrance_rises, lonne_g_moretton, herself). +actress(torrance_rises, joyeve_palffy, herself). +actress(torrance_rises, kristine_petrucione, herself). +actor(torrance_rises, regis_philbin, regis_philbin). +actress(torrance_rises, cynthia_m_reed, herself). +actor(torrance_rises, chris_rock, chris_rock). +actor(torrance_rises, michael_rooney, michael_rooney). +actor(torrance_rises, justin_ross, himself). +actress(torrance_rises, danette_e_sheppard, herself). +actor(torrance_rises, fatboy_slim, fatboy_slim). +actor(torrance_rises, will_smith, will_smith). +actor(torrance_rises, frank_stancati, himself). +actor(torrance_rises, tim_szczepanski, himself). +actress(torrance_rises, michelle_weber, herself). + +movie(the_usual_suspects, 1995). +director(the_usual_suspects, bryan_singer). +actor(the_usual_suspects, stephen_baldwin, michael_mcmanus). +actor(the_usual_suspects, gabriel_byrne, dean_keaton). +actor(the_usual_suspects, benicio_del_toro, fred_fenster). +actor(the_usual_suspects, kevin_pollak, todd_hockney). +actor(the_usual_suspects, kevin_spacey, roger_verbal_kint). +actor(the_usual_suspects, chazz_palminteri, dave_kujan_us_customs). +actor(the_usual_suspects, pete_postlethwaite, kobayashi). +actress(the_usual_suspects, suzy_amis, edie_finneran). +actor(the_usual_suspects, giancarlo_esposito, jack_baer_fbi). +actor(the_usual_suspects, dan_hedaya, sgt_geoffrey_jeff_rabin). +actor(the_usual_suspects, paul_bartel, smuggler). +actor(the_usual_suspects, carl_bressler, saul_berg). +actor(the_usual_suspects, phillip_simon, fortier). +actor(the_usual_suspects, jack_shearer, renault). +actress(the_usual_suspects, christine_estabrook, dr_plummer). +actor(the_usual_suspects, clark_gregg, dr_walters). +actor(the_usual_suspects, morgan_hunter, arkosh_kovash). +actor(the_usual_suspects, ken_daly, translator). +actress(the_usual_suspects, michelle_clunie, sketch_artist). +actor(the_usual_suspects, louis_lombardi, strausz). +actor(the_usual_suspects, frank_medrano, rizzi). +actor(the_usual_suspects, ron_gilbert, daniel_metzheiser_dept_of_justice). +actor(the_usual_suspects, vito_d_ambrosio, arresting_officer). +actor(the_usual_suspects, gene_lythgow, cop_on_pier). +actor(the_usual_suspects, robert_elmore, bodyguard_1). +actor(the_usual_suspects, david_powledge, bodyguard_2). +actor(the_usual_suspects, bob_pennetta, bodyguard_3). +actor(the_usual_suspects, billy_bates, bodyguard_4). +actress(the_usual_suspects, smadar_hanson, keyser_s_wife). +actor(the_usual_suspects, castulo_guerra, arturro_marquez). +actor(the_usual_suspects, peter_rocca, jaime_arturro_s_bodyguard). +actor(the_usual_suspects, bert_williams, old_cop_in_property). +actor(the_usual_suspects, john_gillespie, ''). +actor(the_usual_suspects, peter_greene, redfoot_the_fence). +actor(the_usual_suspects, christopher_mcquarrie, interrogation_cop). +actor(the_usual_suspects, scott_b_morgan, keyser_s_ze_in_flashback). + +movie(the_virgin_suicides, 1999). +director(the_virgin_suicides, sofia_coppola). +actor(the_virgin_suicides, james_woods, mr_lisbon). +actress(the_virgin_suicides, kathleen_turner, mrs_lisbon). +actress(the_virgin_suicides, kirsten_dunst, lux_lisbon). +actor(the_virgin_suicides, josh_hartnett, trip_fontaine). +actor(the_virgin_suicides, michael_par, adult_trip_fontaine). +actor(the_virgin_suicides, scott_glenn, father_moody). +actor(the_virgin_suicides, danny_devito, dr_horniker). +actress(the_virgin_suicides, a_j_cook, mary_lisbon). +actress(the_virgin_suicides, hanna_r_hall, cecilia_lisbon). +actress(the_virgin_suicides, leslie_hayman, therese_lisbon). +actress(the_virgin_suicides, chelse_swain, bonnie_lisbon). +actor(the_virgin_suicides, anthony_desimone, chase_buell). +actor(the_virgin_suicides, lee_kagan, david_barker). +actor(the_virgin_suicides, robert_schwartzman, paul_baldino). +actor(the_virgin_suicides, noah_shebib, parkie_denton). +actor(the_virgin_suicides, jonathan_tucker, tim_weiner). +actor(the_virgin_suicides, joe_roncetti, kevin_head). +actor(the_virgin_suicides, hayden_christensen, joe_hill_conley). +actor(the_virgin_suicides, chris_hale, peter_sisten). +actor(the_virgin_suicides, joe_dinicol, dominic_palazzolo). +actress(the_virgin_suicides, suki_kaiser, lydia_perl). +actress(the_virgin_suicides, dawn_greenhalgh, mrs_scheer). +actor(the_virgin_suicides, allen_stewart_coates, mr_scheer). +actress(the_virgin_suicides, sherry_miller, mrs_buell). +actor(the_virgin_suicides, jonathon_whittaker, mr_buell). +actress(the_virgin_suicides, michelle_duquet, mrs_denton). +actor(the_virgin_suicides, murray_mcrae, mr_denton). +actress(the_virgin_suicides, roberta_hanley, mrs_weiner). +actor(the_virgin_suicides, paul_sybersma, joe_larson). +actress(the_virgin_suicides, susan_sybersma, mrs_larson). +actor(the_virgin_suicides, peter_snider, trip_s_dad). +actor(the_virgin_suicides, gary_brennan, donald). +actor(the_virgin_suicides, charles_boyland, curt_van_osdol). +actor(the_virgin_suicides, dustin_ladd, chip_willard). +actress(the_virgin_suicides, kristin_fairlie, amy_schraff). +actress(the_virgin_suicides, melody_johnson, julie). +actress(the_virgin_suicides, sheyla_molho, danielle). +actress(the_virgin_suicides, ashley_ainsworth, sheila_davis). +actress(the_virgin_suicides, courtney_hawkrigg, grace). +actor(the_virgin_suicides, fran_ois_klanfer, doctor). +actor(the_virgin_suicides, mackenzie_lawrenz, jim_czeslawski). +actor(the_virgin_suicides, tim_hall, kurt_siles). +actor(the_virgin_suicides, amos_crawley, john). +actor(the_virgin_suicides, andrew_gillies, principal_woodhouse). +actress(the_virgin_suicides, marilyn_smith, mrs_woodhouse). +actress(the_virgin_suicides, sally_cahill, mrs_hedlie). +actress(the_virgin_suicides, tracy_ferencz, nurse). +actor(the_virgin_suicides, scot_denton, mr_o_conner). +actress(the_virgin_suicides, catherine_swing, mrs_o_conner). +actor(the_virgin_suicides, timothy_adams, buzz_romano). +actor(the_virgin_suicides, michael_michaelessi, parks_department_foreman). +actress(the_virgin_suicides, sarah_minhas, wanda_brown). +actress(the_virgin_suicides, megan_kennedy, cheerleader). +actress(the_virgin_suicides, sandi_stahlbrand, meredith_thompson). +actor(the_virgin_suicides, neil_girvan, drunk_man_in_pool). +actress(the_virgin_suicides, jaya_karsemeyer, gloria). +actress(the_virgin_suicides, leah_straatsma, rannie). +actor(the_virgin_suicides, mark_polley, cemetery_worker_1). +actor(the_virgin_suicides, kirk_gonnsen, cemetery_worker_2). +actress(the_virgin_suicides, marianne_moroney, teacher). +actress(the_virgin_suicides, anne_wessels, woman_in_chiffon). +actor(the_virgin_suicides, derek_boyes, football_grieving_teacher). +actor(the_virgin_suicides, john_buchan, john_lydia_s_boss). +actress(the_virgin_suicides, mandy_lee_jones, student). +actor(the_virgin_suicides, giovanni_ribisi, narrator). + +movie(an_american_rhapsody, 2001). +director(an_american_rhapsody, va_g_rdos). +actress(an_american_rhapsody, scarlett_johansson, suzanne_sandor_at_15). +actress(an_american_rhapsody, nastassja_kinski, margit_sandor). +actress(an_american_rhapsody, raffaella_b_ns_gi, suzanne_infant). +actor(an_american_rhapsody, tony_goldwyn, peter_sandor). +actress(an_american_rhapsody, gnes_b_nfalvy, helen). +actor(an_american_rhapsody, zolt_n_seress, george). +actress(an_american_rhapsody, klaudia_szab, maria_at_4). +actor(an_american_rhapsody, zsolt_zagoni, russian_soldier). +actor(an_american_rhapsody, andr_s_sz_ke, istvan). +actress(an_american_rhapsody, erzsi_p_sztor, ilus). +actor(an_american_rhapsody, carlos_laszlo_weiner, boy_on_train_boy_at_party). +actress(an_american_rhapsody, bori_kereszturi, suzanne_at_3). +actor(an_american_rhapsody, p_ter_k_lloy_moln_r, avo_officer). +actress(an_american_rhapsody, zsuzsa_czink_czi, teri). +actor(an_american_rhapsody, bal_zs_galk, jeno). +actress(an_american_rhapsody, kata_dob, claire). +actress(an_american_rhapsody, va_sz_r_nyi, eva). +actor(an_american_rhapsody, don_pugsley, cafe_supervisor). +actor(an_american_rhapsody, vladimir_mashkov, frank). +actress(an_american_rhapsody, lisa_jane_persky, pattie). +actress(an_american_rhapsody, colleen_camp, dottie). +actress(an_american_rhapsody, kelly_endresz_banlaki, suzanne_at_6). +actress(an_american_rhapsody, imola_g_sp_r, stewardess). +actress(an_american_rhapsody, tatyana_kanavka, girl_in_airport). +actress(an_american_rhapsody, mae_whitman, maria_at_10). +actress(an_american_rhapsody, lorna_scott, neighbor_with_poodle). +actress(an_american_rhapsody, sandra_staggs, saleswoman). +actress(an_american_rhapsody, jacqueline_steiger, betty). +actor(an_american_rhapsody, robert_lesser, harold). +actor(an_american_rhapsody, lou_beach, party_goer). +actress(an_american_rhapsody, marlee_jackson, sheila_at_7). +actress(an_american_rhapsody, emmy_rossum, sheila_at_15). +actor(an_american_rhapsody, timothy_everett_moore, paul). +actor(an_american_rhapsody, joshua_dov, richard). +actress(an_american_rhapsody, larisa_oleynik, maria_sandor_at_18). +actress(an_american_rhapsody, kati_b_cs, woman_1_at_market). +actress(an_american_rhapsody, zsuzsa_sz_ger, woman_2_at_market). +actor(an_american_rhapsody, andras_banlaki, ''). +actress(an_american_rhapsody, va_g_rdos, suzanne_sandor_in_family_picture_age_6). +actor(an_american_rhapsody, peter_janosi, german_customs_officer). + +movie(the_black_dahlia, 2006). +director(the_black_dahlia, brian_de_palma). +actor(the_black_dahlia, josh_hartnett, ofcr_dwight_bucky_bleichert). +actress(the_black_dahlia, scarlett_johansson, kay_lake). +actress(the_black_dahlia, hilary_swank, madeleine_linscott). +actor(the_black_dahlia, aaron_eckhart, sgt_leland_lee_blanchard). +actress(the_black_dahlia, mia_kirshner, elizabeth_short). +actor(the_black_dahlia, graham_norris, sgt_john_carter). +actress(the_black_dahlia, judith_benezra, ''). +actor(the_black_dahlia, richard_brake, bobby_dewitt). +actor(the_black_dahlia, kevin_dunn, cleo_short). +actor(the_black_dahlia, troy_evans, ''). +actor(the_black_dahlia, william_finley, ''). +actor(the_black_dahlia, patrick_fischler, a_d_a_ellis_loew). +actor(the_black_dahlia, michael_p_flannigan, desk_sergeant). +actor(the_black_dahlia, gregg_henry, ''). +actress(the_black_dahlia, claudia_katz, frolic_bartender). +actor(the_black_dahlia, john_kavanagh, emmet_linscott). +actress(the_black_dahlia, laura_kightlinger, hooker). +actor(the_black_dahlia, steven_koller, male_nurse). +actor(the_black_dahlia, angus_macinnes, ''). +actor(the_black_dahlia, david_mcdivitt, cop). +actress(the_black_dahlia, rose_mcgowan, sheryl_saddon). +actor(the_black_dahlia, victor_mcguire, ''). +actress(the_black_dahlia, rachel_miner, ''). +actress(the_black_dahlia, stephanie_l_moore, pretty_girl). +actor(the_black_dahlia, james_otis, ''). +actor(the_black_dahlia, david_raibon, black_man). +actress(the_black_dahlia, jemima_rooper, ''). +actor(the_black_dahlia, anthony_russell, ''). +actor(the_black_dahlia, joost_scholte, gi_pick_up). +actor(the_black_dahlia, pepe_serna, ''). +actress(the_black_dahlia, fiona_shaw, ''). +actor(the_black_dahlia, joey_slotnick, ''). +actor(the_black_dahlia, mike_starr, russ_millard). + +movie(fall, 1997). +director(fall, eric_schaeffer). +actor(fall, eric_schaeffer, michael). +actress(fall, amanda_de_cadenet, sarah). +actor(fall, rudolf_martin, phillipe). +actress(fall, francie_swift, robin). +actress(fall, lisa_vidal, sally). +actress(fall, roberta_maxwell, joan_alterman). +actor(fall, jose_yenque, scasse). +actor(fall, josip_kuchan, zsarko). +actress(fall, scarlett_johansson, little_girl). +actress(fall, ellen_barber, woman). +actor(fall, willis_burks_ii, baja). +actor(fall, scott_cohen, derick). +actor(fall, a_j_lopez, bellboy). +actor(fall, casper_martinez, church_goer). +actor(fall, arthur_j_nascarella, anthony_the_maitre_d). +actor(fall, john_o_nelson, guy_by_window). +actor(fall, amaury_nolasco, waiter). +actor(fall, marc_sebastian, popparazi). +actor(fall, evan_thompson, priest). +actor(fall, larry_weiss, paparazzi). + +movie(eight_legged_freaks, 2002). +director(eight_legged_freaks, ellory_elkayem). +actor(eight_legged_freaks, david_arquette, chris_mccormick). +actress(eight_legged_freaks, kari_wuhrer, sheriff_samantha_parker). +actor(eight_legged_freaks, scott_terra, mike_parker). +actress(eight_legged_freaks, scarlett_johansson, ashley_parker). +actor(eight_legged_freaks, doug_e_doug, harlan_griffith). +actor(eight_legged_freaks, rick_overton, deputy_pete_willis). +actor(eight_legged_freaks, leon_rippy, wade). +actor(eight_legged_freaks, matt_czuchry, bret). +actor(eight_legged_freaks, jay_arlen_jones, leon). +actress(eight_legged_freaks, eileen_ryan, gladys). +actor(eight_legged_freaks, riley_smith, randy). +actor(eight_legged_freaks, matt_holwick, larry). +actress(eight_legged_freaks, jane_edith_wilson, emma). +actor(eight_legged_freaks, jack_moore, amos). +actor(eight_legged_freaks, roy_gaintner, floyd). +actor(eight_legged_freaks, don_champlin, leroy). +actor(eight_legged_freaks, john_storey, mark). +actor(eight_legged_freaks, david_earl_waterman, norman). +actress(eight_legged_freaks, randi_j_klein, waitress_1). +actress(eight_legged_freaks, terey_summers, waitress_2). +actor(eight_legged_freaks, john_ennis, cop_1). +actor(eight_legged_freaks, ryan_c_benson, cop_2). +actor(eight_legged_freaks, bruiser, himself). +actor(eight_legged_freaks, tom_noonan, joshua_taft). + +movie(ghost_world, 2000). +director(ghost_world, terry_zwigoff). +actress(ghost_world, thora_birch, enid). +actress(ghost_world, scarlett_johansson, rebecca). +actor(ghost_world, steve_buscemi, seymour). +actor(ghost_world, brad_renfro, josh). +actress(ghost_world, illeana_douglas, roberta_allsworth). +actor(ghost_world, bob_balaban, enid_s_dad). +actress(ghost_world, stacey_travis, dana). +actor(ghost_world, charles_c_stevenson_jr, norman). +actor(ghost_world, dave_sheridan, doug). +actor(ghost_world, tom_mcgowan, joe). +actress(ghost_world, debra_azar, melora). +actor(ghost_world, brian_george, sidewinder_boss). +actor(ghost_world, pat_healy, john_ellis). +actress(ghost_world, rini_bell, graduation_speaker). +actor(ghost_world, t_j_thyne, todd). +actor(ghost_world, ezra_buzzington, weird_al). +actress(ghost_world, lindsey_girardot, vanilla__graduation_rapper). +actress(ghost_world, joy_bisco, jade__graduation_rapper). +actress(ghost_world, venus_demilo, ebony__graduation_rapper). +actress(ghost_world, ashley_peldon, margaret__art_class). +actor(ghost_world, chachi_pittman, phillip__art_class). +actress(ghost_world, janece_jordan, black_girl__art_class). +actress(ghost_world, kaileigh_martin, snotty_girl__art_class). +actor(ghost_world, alexander_fors, hippy_boy__art_class). +actor(ghost_world, marc_vann, jerome_the_angry_guy__record_collector). +actor(ghost_world, james_sie, steven_the_asian_guy__record_collector). +actor(ghost_world, paul_keith, paul_the_fussy_guy__record_collector). +actor(ghost_world, david_cross, gerrold_the_pushy_guy__record_collector). +actor(ghost_world, j_j_bad_boy_jones, fred_chatman__blues_club). +actress(ghost_world, dylan_jones, red_haired_girl__blues_club). +actor(ghost_world, martin_grey, m_c__blues_club). +actor(ghost_world, steve_pierson, blueshammer_member__blues_club). +actor(ghost_world, jake_la_botz, blueshammer_member__blues_club). +actor(ghost_world, johnny_irion, blueshammer_member__blues_club). +actor(ghost_world, nate_wood, blueshammer_member__blues_club). +actor(ghost_world, charles_schneider, joey_mccobb_the_stand_up_comic). +actor(ghost_world, sid_hillman, zine_o_phobia_creep). +actor(ghost_world, joshua_wheeler, zine_o_phobia_creep). +actor(ghost_world, patrick_fischler, masterpiece_video_clerk). +actor(ghost_world, daniel_graves, masterpiece_video_customer). +actor(ghost_world, matt_doherty, masterpiece_video_employee). +actor(ghost_world, joel_michaely, porno_cashier). +actress(ghost_world, debi_derryberry, rude_coffee_customer). +actor(ghost_world, joseph_sikora, reggae_fan). +actor(ghost_world, brett_gilbert, alien_autopsy_guy). +actor(ghost_world, alex_solowitz, cineplex_manager). +actor(ghost_world, tony_ketcham, alcoholic_customer). +actress(ghost_world, mary_bogue, popcorn_customer). +actor(ghost_world, brian_jacobs, soda_customer). +actor(ghost_world, patrick_yonally, garage_sale_hipster). +actress(ghost_world, lauren_bowles, angry_garage_sale_woman). +actress(ghost_world, lorna_scott, phyllis_the_art_show_curator). +actor(ghost_world, jeff_murray, roberta_s_colleague). +actor(ghost_world, jerry_rector, dana_s_co_worker). +actor(ghost_world, john_bunnell, seymour_s_boss). +actress(ghost_world, diane_salinger, psychiatrist). +actress(ghost_world, anna_berger, seymour_s_mother). +actor(ghost_world, bruce_glover, feldman_the_wheel_chair_guy). +actress(ghost_world, joan_m_blair, lady_crossing_street_slowly). +actor(ghost_world, michael_chanslor, orange_colored_sky_keyboarder_graduation_band). +actress(ghost_world, teri_garr, maxine). +actor(ghost_world, alan_heitz, driver). +actor(ghost_world, ernie_hernandez, orange_colored_sky_guitarist_graduation_band). +actor(ghost_world, felice_hernandez, orange_colored_sky_singer_graduation_band). +actor(ghost_world, larry_klein, orange_colored_sky_drummer_graduation_band). +actor(ghost_world, james_matusky, reggae_fan_2). +actor(ghost_world, edward_t_mcavoy, mr_satanist). +actress(ghost_world, margaret_kontra_palmer, lady_at_garage_sale). +actor(ghost_world, larry_parker, orange_colored_sky_bassist_graduation_band). +actor(ghost_world, greg_wendell_reid, yuppie_1). +actress(ghost_world, michelle_marie_white, mom_in_convenience_store). +actor(ghost_world, peter_yarrow, himself). + +movie(a_good_woman, 2004). +director(a_good_woman, mike_barker). +actress(a_good_woman, helen_hunt, mrs_erlynne). +actress(a_good_woman, scarlett_johansson, meg_windermere). +actress(a_good_woman, milena_vukotic, contessa_lucchino). +actor(a_good_woman, stephen_campbell_moore, lord_darlington). +actor(a_good_woman, mark_umbers, robert_windemere). +actor(a_good_woman, roger_hammond, cecil). +actor(a_good_woman, john_standing, dumby). +actor(a_good_woman, tom_wilkinson, tuppy). +actress(a_good_woman, giorgia_massetti, alessandra). +actress(a_good_woman, diana_hardcastle, lady_plymdale). +actress(a_good_woman, shara_orano, francesca). +actress(a_good_woman, jane_how, mrs_stutfield). +actor(a_good_woman, bruce_mcguire, waiter_joe). +actor(a_good_woman, michael_stromme, hotel_desk_clerk). +actor(a_good_woman, antonio_barbaro, paulo). +actress(a_good_woman, valentina_d_uva, giuseppina_glove_shop_girl). +actor(a_good_woman, filippo_santoro, old_man). +actor(a_good_woman, augusto_zucchi, antique_shop_keeper). +actress(a_good_woman, carolina_levi, dress_shop_salesgirl). +actress(a_good_woman, daniela_stanga, dress_shop_owner). +actress(a_good_woman, arianna_mansi, stella_s_maid_1). +actress(a_good_woman, camilla_bertocci, stella_s_maid_2). +actress(a_good_woman, nichola_aigner, mrs_gowper). + +movie(if_lucy_fell, 1996). +director(if_lucy_fell, eric_schaeffer). +actress(if_lucy_fell, sarah_jessica_parker, lucy_ackerman). +actor(if_lucy_fell, eric_schaeffer, joe_macgonaughgill). +actor(if_lucy_fell, ben_stiller, bwick_elias). +actress(if_lucy_fell, elle_macpherson, jane_lindquist). +actor(if_lucy_fell, james_rebhorn, simon_ackerman). +actor(if_lucy_fell, robert_john_burke, handsome_man). +actor(if_lucy_fell, david_thornton, ted). +actor(if_lucy_fell, bill_sage, dick). +actor(if_lucy_fell, dominic_chianese, al). +actress(if_lucy_fell, scarlett_johansson, emily). +actor(if_lucy_fell, michael_storms, sam). +actor(if_lucy_fell, jason_myers, billy). +actress(if_lucy_fell, emily_hart, eddy). +actor(if_lucy_fell, paul_greco, rene). +actor(if_lucy_fell, mujibur_rahman, counterman). +actor(if_lucy_fell, sirajul_islam, counterman). +actor(if_lucy_fell, ben_lin, chinese_messenger). +actress(if_lucy_fell, alice_spivak, elegant_middle_aged_woman). +actress(if_lucy_fell, lisa_gerstein, saleswoman). +actress(if_lucy_fell, molly_schulman, kid). +actor(if_lucy_fell, peter_walker, bag_man). +actor(if_lucy_fell, bradley_jenkel, neighbor). +actor(if_lucy_fell, brian_keane, man_in_gallery). +actress(if_lucy_fell, amanda_kravat, woman_in_park). + +movie(home_alone_3, 1997). +director(home_alone_3, raja_gosnell). +actor(home_alone_3, alex_d_linz, alex_pruitt). +actor(home_alone_3, olek_krupa, peter_beaupre). +actress(home_alone_3, rya_kihlstedt, alice_ribbons). +actor(home_alone_3, lenny_von_dohlen, burton_jernigan). +actor(home_alone_3, david_thornton, earl_unger). +actress(home_alone_3, haviland_morris, karen_pruitt). +actor(home_alone_3, kevin_kilner, jack_pruitt). +actress(home_alone_3, marian_seldes, mrs_hess). +actor(home_alone_3, seth_smith, stan_pruitt). +actress(home_alone_3, scarlett_johansson, molly_pruitt). +actor(home_alone_3, christopher_curry, agent_stuckey). +actor(home_alone_3, baxter_harris, police_captain). +actor(home_alone_3, james_saito, chinese_mob_boss). +actor(home_alone_3, kevin_gudahl, techie). +actor(home_alone_3, richard_hamilton, taxi_driver). +actor(home_alone_3, freeman_coffey, recruiting_officer). +actress(home_alone_3, krista_lally, dispatcher). +actor(home_alone_3, neil_flynn, police_officer_1). +actor(home_alone_3, tony_mockus_jr, police_officer_2). +actor(home_alone_3, pat_healy, agent_rogers). +actor(home_alone_3, james_chisem, police_officer_3). +actor(home_alone_3, darwin_harris, photographer). +actress(home_alone_3, adrianne_duncan, flight_attendant). +actress(home_alone_3, sharon_sachs, annoying_woman). +actor(home_alone_3, joseph_luis_caballero, security_guard). +actor(home_alone_3, larry_c_tankson, cart_driver). +actress(home_alone_3, jennifer_a_daley, police_photographer_2). +actor(home_alone_3, darren_t_knaus, parrot). +actress(home_alone_3, caryn_cheever, ticketing_agent). +actress(home_alone_3, sarah_godshaw, latchkey_girl). +actor(home_alone_3, andy_john_g_kalkounos, police_officer_1). +actor(home_alone_3, zachary_lee, johnny_allen). +actress(home_alone_3, kelly_ann_marquart, girl_on_sidewalk). + +movie(the_horse_whisperer, 1998). +director(the_horse_whisperer, robert_redford). +actor(the_horse_whisperer, robert_redford, tom_booker). +actress(the_horse_whisperer, kristin_scott_thomas, annie_maclean). +actor(the_horse_whisperer, sam_neill, robert_maclean). +actress(the_horse_whisperer, dianne_wiest, diane_booker). +actress(the_horse_whisperer, scarlett_johansson, grace_maclean). +actor(the_horse_whisperer, chris_cooper, frank_booker). +actress(the_horse_whisperer, cherry_jones, liz_hammond). +actor(the_horse_whisperer, ty_hillman, joe_booker). +actress(the_horse_whisperer, kate_bosworth, judith). +actor(the_horse_whisperer, austin_schwarz, twin_1). +actor(the_horse_whisperer, dustin_schwarz, twin_2). +actress(the_horse_whisperer, jeanette_nolan, ellen_booker). +actor(the_horse_whisperer, steve_frye, hank). +actor(the_horse_whisperer, don_edwards, smokey). +actress(the_horse_whisperer, jessalyn_gilsig, lucy_annie_s_assistant). +actor(the_horse_whisperer, william_buddy_byrd, lester_petersen). +actor(the_horse_whisperer, john_hogarty, local_tracker). +actor(the_horse_whisperer, michel_lalonde, park_ranger). +actor(the_horse_whisperer, c_j_byrnes, doctor). +actress(the_horse_whisperer, kathy_baldwin_keenan, nurse_1). +actress(the_horse_whisperer, allison_moorer, barn_dance_vocalist). +actor(the_horse_whisperer, george_a_sack_jr, truck_driver). +actress(the_horse_whisperer, kellee_sweeney, nurse_2). +actor(the_horse_whisperer, stephen_pearlman, david_gottschalk). +actress(the_horse_whisperer, joelle_carter, office_worker_1). +actress(the_horse_whisperer, sunny_chae, office_worker_2). +actress(the_horse_whisperer, anne_joyce, office_worker_3). +actress(the_horse_whisperer, tara_sobeck, schoolgirl_1). +actress(the_horse_whisperer, kristy_ann_servidio, schoolgirl_2). +actress(the_horse_whisperer, marie_engle, neighbor). +actor(the_horse_whisperer, curt_pate, handsome_cowboy). +actor(the_horse_whisperer, steven_brian_conard, ranch_hand). +actress(the_horse_whisperer, tammy_pate, roper). +actress(the_horse_whisperer, gloria_lynne_henry, member_of_magazine_staff). +actor(the_horse_whisperer, lance_r_jones, ranch_hand). +actor(the_horse_whisperer, donnie_saylor, rugged_cowboy). +actor(the_horse_whisperer, george_strait, himself). + +movie(in_good_company, 2004). +director(in_good_company, paul_weitz). +actor(in_good_company, dennis_quaid, dan_foreman). +actor(in_good_company, topher_grace, carter_duryea). +actress(in_good_company, scarlett_johansson, alex_foreman). +actress(in_good_company, marg_helgenberger, ann_foreman). +actor(in_good_company, david_paymer, morty). +actor(in_good_company, clark_gregg, mark_steckle). +actor(in_good_company, philip_baker_hall, eugene_kalb). +actress(in_good_company, selma_blair, kimberly). +actor(in_good_company, frankie_faison, corwin). +actor(in_good_company, ty_burrell, enrique_colon). +actor(in_good_company, kevin_chapman, lou). +actress(in_good_company, amy_aquino, alicia). +actress(in_good_company, zena_grey, jana_foreman). +actress(in_good_company, colleen_camp, receptionist). +actress(in_good_company, lauren_tom, obstetrician). +actor(in_good_company, ron_bottitta, porsche_dealer). +actor(in_good_company, jon_collin, waiter). +actor(in_good_company, shishir_kurup, maitre_d). +actor(in_good_company, tim_edward_rhoze, theo). +actor(in_good_company, enrique_castillo, hector). +actor(in_good_company, john_cho, petey). +actor(in_good_company, chris_ausnit, young_executive). +actress(in_good_company, francesca_roberts, loan_officer). +actor(in_good_company, gregory_north, lawyer). +actor(in_good_company, gregory_hinton, moving_man). +actor(in_good_company, todd_lyon, moving_man). +actor(in_good_company, thomas_j_dooley, moving_man). +actor(in_good_company, robin_t_kirksey, basketball_ringer). +actress(in_good_company, katherine_ellis, maya__roommate). +actor(in_good_company, nick_schutt, carter_s_assistant). +actor(in_good_company, john_kepley, salesman). +actor(in_good_company, mobin_khan, salesman). +actress(in_good_company, jeanne_kort, saleswoman). +actor(in_good_company, dean_a_parker, mike). +actor(in_good_company, richard_hotson, fired_employee). +actress(in_good_company, shar_washington, fired_employee). +actress(in_good_company, rebecca_hedrick, teddy_k_s_assistant). +actor(in_good_company, miguel_arteta, globecom_technician). +actor(in_good_company, sam_tippe, kid_at_party). +actress(in_good_company, roma_torre, anchorwoman). +actor(in_good_company, andre_cablayan, legally_dedd). +actor(in_good_company, dante_powell, legally_dedd). +actress(in_good_company, michalina_almindo, hector_s_date). +actor(in_good_company, bennett_andrews, greensman). +actress(in_good_company, claudia_barroso, bar_patron). +actress(in_good_company, jaclynn_tiffany_brown, basketball_player). +actor(in_good_company, malcolm_mcdowell, teddy_k__globecom_ceo). +actor(in_good_company, scott_sahadi, moving_man). +actress(in_good_company, loretta_shenosky, kalb_s_assistant). +actor(in_good_company, trevor_stynes, man_on_street). + +movie(just_cause, 1995). +director(just_cause, arne_glimcher). +actor(just_cause, sean_connery, paul_armstrong). +actor(just_cause, laurence_fishburne, sheriff_tanny_brown). +actress(just_cause, kate_capshaw, laurie_armstrong). +actor(just_cause, blair_underwood, bobby_earl). +actor(just_cause, ed_harris, blair_sullivan). +actor(just_cause, christopher_murray, detective_t_j_wilcox). +actress(just_cause, ruby_dee, evangeline). +actress(just_cause, scarlett_johansson, kate_armstrong). +actor(just_cause, daniel_j_travanti, warden). +actor(just_cause, ned_beatty, mcnair). +actress(just_cause, liz_torres, delores_rodriguez). +actress(just_cause, lynne_thigpen, ida_conklin). +actress(just_cause, taral_hicks, lena_brown). +actor(just_cause, victor_slezak, sgt_rogers). +actor(just_cause, kevin_mccarthy, phil_prentiss). +actress(just_cause, hope_lange, libby_prentiss). +actor(just_cause, chris_sarandon, lyle_morgan). +actor(just_cause, george_plimpton, elder_phillips). +actress(just_cause, brooke_alderson, dr_doliveau). +actress(just_cause, colleen_fitzpatrick, prosecutor). +actor(just_cause, richard_liberty, chaplin). +actor(just_cause, joel_s_ehrenkranz, judge). +actress(just_cause, barbara_jean_kane, joanie_shriver). +actor(just_cause, maurice_jamaal_brown, reese_brown). +actor(just_cause, patrick_maycock, kid_washing_car_1). +actor(just_cause, jordan_f_vaughn, kid_washing_car_2). +actor(just_cause, francisco_paz, concierge). +actress(just_cause, marie_hyman, clerk). +actor(just_cause, s_bruce_wilson, party_guest). +actor(just_cause, erik_stephan, student). +actress(just_cause, melanie_hughes, receptionist). +actress(just_cause, megan_meinardus, slumber_party_girl). +actress(just_cause, melissa_hood_julien, slumber_party_girl). +actress(just_cause, jenna_del_buono, slumber_party_girl). +actress(just_cause, ashley_popelka, slumber_party_girl). +actress(just_cause, marisa_perry, slumber_party_girl). +actress(just_cause, ashley_council, slumber_party_girl). +actress(just_cause, augusta_lundsgaard, slumber_party_girl). +actress(just_cause, connie_lee_brown, prison_guard). +actor(just_cause, clarence_lark_iii, prison_guard). +actor(just_cause, monte_st_james, prisoner). +actor(just_cause, gary_landon_mills, prisoner). +actor(just_cause, shareef_malnik, prisoner). +actor(just_cause, tony_bolano, prisoner). +actor(just_cause, angelo_maldonado, prisoner). +actor(just_cause, fausto_rodriguez, prisoner). +actress(just_cause, karen_leeds, reporter). +actor(just_cause, dan_romero, reporter). +actor(just_cause, donn_lamkin, reporter). +actress(just_cause, stacie_a_zinn, reporter). +actress(just_cause, kylie_delre, woman_in_courtroom). +actress(just_cause, deborah_smith_ford, medical_examiner). +actor(just_cause, patrick_fullerton, reporter). +actor(just_cause, jody_millard, prison_guard). +actor(just_cause, michael_sassano, courtroom_observer). +actor(just_cause, rene_teboe, man_in_bus_terminal). + +movie(the_island, 2005). +director(the_island, michael_bay). +actor(the_island, ewan_mcgregor, lincoln_six_echo_tom_lincoln). +actress(the_island, scarlett_johansson, jordan_two_delta_sarah_jordan). +actor(the_island, djimon_hounsou, albert_laurent). +actor(the_island, sean_bean, merrick). +actor(the_island, steve_buscemi, mccord). +actor(the_island, michael_clarke_duncan, starkweather). +actor(the_island, ethan_phillips, jones_three_echo). +actor(the_island, brian_stepanek, gandu_three_echo). +actress(the_island, noa_tishby, community_announcer). +actress(the_island, siobhan_flynn, lima_one_alpha). +actor(the_island, troy_blendell, laurent_team_member). +actor(the_island, jamie_mcbride, laurent_team_member). +actor(the_island, kevin_mccorkle, laurent_team_member). +actor(the_island, gary_nickens, laurent_team_member). +actress(the_island, kathleen_rose_perkins, laurent_team_member). +actor(the_island, richard_whiten, laurent_team_member). +actor(the_island, max_baker, carnes). +actor(the_island, phil_abrams, harvest_doctor). +actress(the_island, svetlana_efremova, harvest_midwife). +actress(the_island, katy_boyer, harvest_surgeon). +actor(the_island, randy_oglesby, harvest_surgeon). +actress(the_island, yvette_nicole_brown, harvest_nurse). +actress(the_island, taylor_gilbert, harvest_nurse). +actress(the_island, wendy_haines, harvest_nurse). +actor(the_island, tim_halligan, institute_coroner). +actor(the_island, glenn_morshower, medical_courier). +actor(the_island, michael_canavan, extraction_room_doctor). +actor(the_island, jimmy_smagula, extraction_room_technician). +actor(the_island, ben_tolpin, extraction_room_technician). +actor(the_island, robert_sherman, agnate_in_pod). +actor(the_island, rich_hutchman, dept_of_operations_supervisor). +actor(the_island, gonzalo_menendez, dept_of_operations_technician). +actress(the_island, olivia_tracey, dept_of_operations_agnate). +actor(the_island, ray_xifo, elevator_agnate). +actress(the_island, mary_pat_gleason, nutrition_clerk). +actress(the_island, ashley_yegan, stim_bar_bartender). +actress(the_island, whitney_dylan, client_services_operator). +actress(the_island, mitzi_martin, atrium_tour_guide). +actor(the_island, lewis_dauber, tour_group_man). +actress(the_island, shelby_leverington, tour_group_woman). +actor(the_island, don_creech, god_like_man). +actor(the_island, richard_v_licata, board_member). +actor(the_island, eamon_behrens, censor). +actor(the_island, alex_carter, censor). +actor(the_island, kevin_daniels, censor). +actor(the_island, grant_garrison, censor). +actor(the_island, kenneth_hughes, censor). +actor(the_island, brian_leckner, censor). +actor(the_island, dakota_mitchell, censor). +actor(the_island, marty_papazian, censor). +actor(the_island, phil_somerville, censor). +actor(the_island, ryan_tasz, censor). +actor(the_island, kirk_ward, censor). +actor(the_island, kelvin_han_yee, censor). +actress(the_island, shawnee_smith, suzie). +actor(the_island, chris_ellis, aces__spades_bartender). +actor(the_island, don_michael_paul, bar_guy). +actor(the_island, eric_stonestreet, ed_the_trucker). +actor(the_island, james_granoff, sarah_s_son). +actor(the_island, james_hart, lapd_officer). +actor(the_island, craig_reynolds, lapd_officer). +actor(the_island, trent_ford, calvin_klein_model). +actress(the_island, sage_thomas, girl_at_beach). +actor(the_island, mark_christopher_lawrence, construction_worker). +actress(the_island, jenae_altschwager, kim). +actor(the_island, john_anton, clone). +actress(the_island, mary_castro, busty_dancer_in_bar). +actor(the_island, kim_coates, charles_whitman). +actor(the_island, tom_everett, the_president). +actor(the_island, mitch_haubert, censor_doctor). +actor(the_island, robert_isaac, agnate). +actor(the_island, j_p_manoux, seven_foxtrot). +actress(the_island, jennifer_secord, patron). +actor(the_island, mckay_stewart, falling_building_dodger). +actor(the_island, skyler_stone, sarah_jordan_s_husband). +actor(the_island, richard_john_walters, agnate). + +movie(a_love_song_for_bobby_long, 2004). +director(a_love_song_for_bobby_long, shainee_gabel). +actor(a_love_song_for_bobby_long, john_travolta, bobby_long). +actress(a_love_song_for_bobby_long, scarlett_johansson, pursy_will). +actor(a_love_song_for_bobby_long, gabriel_macht, lawson_pines). +actress(a_love_song_for_bobby_long, deborah_kara_unger, georgianna). +actor(a_love_song_for_bobby_long, dane_rhodes, cecil). +actor(a_love_song_for_bobby_long, david_jensen, junior). +actor(a_love_song_for_bobby_long, clayne_crawford, lee). +actor(a_love_song_for_bobby_long, sonny_shroyer, earl). +actor(a_love_song_for_bobby_long, walter_breaux, ray). +actress(a_love_song_for_bobby_long, carol_sutton, ruthie). +actor(a_love_song_for_bobby_long, warren_kole, sean). +actor(a_love_song_for_bobby_long, bernard_johnson, tiny). +actress(a_love_song_for_bobby_long, gina_ginger_bernal, waitress). +actor(a_love_song_for_bobby_long, douglas_m_griffin, man_1). +actor(a_love_song_for_bobby_long, earl_maddox, man_2). +actor(a_love_song_for_bobby_long, steve_maye, man_3). +actor(a_love_song_for_bobby_long, don_brady, old_man). +actor(a_love_song_for_bobby_long, will_barnett, old_man_2). +actor(a_love_song_for_bobby_long, patrick_mccullough, streetcar_boy). +actress(a_love_song_for_bobby_long, leanne_cochran, streetcar_girl). +actor(a_love_song_for_bobby_long, nick_loren, merchant). +actress(a_love_song_for_bobby_long, brooke_allen, sandy). +actor(a_love_song_for_bobby_long, sal_sapienza, jazz_club_patron). +actor(a_love_song_for_bobby_long, doc_whitney, alcoholic). + +movie(manny__lo, 1996). +director(manny__lo, lisa_krueger). +actress(manny__lo, mary_kay_place, elaine). +actress(manny__lo, scarlett_johansson, amanda). +actress(manny__lo, aleksa_palladino, laurel). +actor(manny__lo, dean_silvers, suburban_family). +actress(manny__lo, marlen_hecht, suburban_family). +actor(manny__lo, forrest_silvers, suburban_family). +actor(manny__lo, tyler_silvers, suburban_family). +actress(manny__lo, lisa_campion, convenience_store_clerk). +actor(manny__lo, glenn_fitzgerald, joey). +actress(manny__lo, novella_nelson, georgine). +actress(manny__lo, susan_decker, baby_store_customer_1). +actress(manny__lo, marla_zuk, baby_store_customer_2). +actress(manny__lo, bonnie_johnson, baby_store_customer_3). +actress(manny__lo, melissa_johnson, child). +actress(manny__lo, angie_phillips, connie). +actor(manny__lo, cameron_boyd, chuck). +actress(manny__lo, monica_smith, chuck_s_mom). +actress(manny__lo, melanie_johansson, golf_course_family). +actor(manny__lo, karsten_johansson, golf_course_family). +actor(manny__lo, hunter_johansson, golf_course_family). +actress(manny__lo, vanessa_johansson, golf_course_family). +actor(manny__lo, frank_green_jr, other_golfer). +actress(manny__lo, shelley_dee_green, other_golfer). +actor(manny__lo, david_destaebler, golf_course_cop). +actor(manny__lo, mark_palmieri, golf_course_cop). +actor(manny__lo, paul_guilfoyle, country_house_owner). +actor(manny__lo, tony_arnaud, sheriff). +actor(manny__lo, nicholas_lent, lo_s_baby). + +movie(match_point, 2005). +director(match_point, woody_allen). +actress(match_point, scarlett_johansson, nola_rice). +actor(match_point, jonathan_rhys_meyers, chris_wilton). +actress(match_point, emily_mortimer, chloe_hewett_wilton). +actor(match_point, matthew_goode, tom_hewett). +actor(match_point, brian_cox, alec_hewett). +actress(match_point, penelope_wilton, eleanor_hewett). +actor(match_point, layke_anderson, youth_at_palace_theatre). +actor(match_point, alexander_armstrong, ''). +actor(match_point, morne_botes, michael). +actress(match_point, rose_keegan, carol). +actor(match_point, eddie_marsan, reeves). +actor(match_point, james_nesbitt, ''). +actor(match_point, steve_pemberton, di_parry). +actress(match_point, miranda_raison, heather). +actor(match_point, colin_salmon, ''). +actress(match_point, zoe_telford, samantha). + +movie(my_brother_the_pig, 1999). +director(my_brother_the_pig, erik_fleming). +actor(my_brother_the_pig, nick_fuoco, george_caldwell). +actress(my_brother_the_pig, scarlett_johansson, kathy_caldwell). +actor(my_brother_the_pig, judge_reinhold, richard_caldwell). +actress(my_brother_the_pig, romy_windsor, dee_dee_caldwell). +actress(my_brother_the_pig, eva_mendes, matilda). +actor(my_brother_the_pig, alex_d_linz, freud). +actor(my_brother_the_pig, paul_renteria, border_guard). +actress(my_brother_the_pig, renee_victor, grandma_berta). +actress(my_brother_the_pig, cambria_gonzalez, mercedes). +actress(my_brother_the_pig, nicole_zarate, annie). +actor(my_brother_the_pig, eduardo_antonio_garcia, luis). +actress(my_brother_the_pig, siri_baruc, tourist_girl). +actor(my_brother_the_pig, charlie_combes, tourist_dad). +actress(my_brother_the_pig, dee_ann_johnston, tourist_mom). +actor(my_brother_the_pig, marco_rodriguez, eduardo). +actor(my_brother_the_pig, rob_johnston, taxi_driver). +actor(my_brother_the_pig, dee_bradley_baker, pig_george). + +movie(north, 1994). +director(north, rob_reiner). +actor(north, elijah_wood, north). +actor(north, jason_alexander, north_s_dad). +actress(north, julia_louis_dreyfus, north_s_mom). +actor(north, marc_shaiman, piano_player). +actor(north, jussie_smollett, adam). +actress(north, taylor_fry, zoe). +actress(north, alana_austin, sarah). +actress(north, peg_shirley, teacher). +actor(north, chuck_cooper, umpire). +actor(north, alan_zweibel, coach). +actor(north, donavon_dietz, assistant_coach). +actor(north, teddy_bergman, teammate). +actor(north, michael_cipriani, teammate). +actor(north, joran_corneal, teammate). +actor(north, joshua_kaplan, teammate). +actor(north, bruce_willis, narrator). +actor(north, james_f_dean, dad_smith). +actor(north, glenn_walker_harris_jr, jeffrey_smith). +actress(north, nancy_nichols, mom_jones). +actor(north, ryan_o_neill, andy_wilson). +actor(north, kim_delgado, dad_johnson). +actor(north, tony_t_johnson, steve_johnson). +actor(north, matthew_mccurley, winchell). +actress(north, carmela_rappazzo, receptionist). +actor(north, jordan_jacobson, vice_president). +actress(north, rafale_yermazyan, austrian_dancer). +actor(north, jon_lovitz, arthur_belt). +actor(north, mitchell_group, dad_wilson). +actress(north, pamela_harley, reporter). +actor(north, glenn_kubota, reporter). +actor(north, matthew_arkin, reporter). +actor(north, marc_coppola, reporter). +actress(north, colette_bryce, reporter). +actor(north, bryon_stewart, bailiff). +actor(north, alan_arkin, judge_buckle). +actor(north, alan_rachins, defense_attorney). +actress(north, abbe_levin, operator). +actress(north, lola_pashalinski, operator). +actress(north, kimberly_topper, operator). +actress(north, c_c_loveheart, operator). +actress(north, helen_hanft, operator). +actress(north, carol_honda, operator). +actress(north, peggy_gormley, operator). +actress(north, lillias_white, operator). +actor(north, dan_aykroyd, pa_tex). +actress(north, reba_mcentire, ma_tex). +actor(north, mark_meismer, texas_dancer). +actress(north, danielle_burgio, texas_dancer). +actor(north, bryan_anthony, texas_dancer). +actress(north, carmit_bachar, texas_dancer). +actor(north, james_harkness, texas_dancer). +actress(north, krista_buonauro, texas_dancer). +actor(north, brett_heine, texas_dancer). +actress(north, kelly_cooper, texas_dancer). +actor(north, chad_e_allen, texas_dancer). +actress(north, stefanie_roos, texas_dancer). +actor(north, donovan_keith_hesser, texas_dancer). +actress(north, jenifer_strovas, texas_dancer). +actor(north, christopher_d_childers, texas_dancer). +actor(north, sebastian_lacause, texas_dancer). +actress(north, lydia_e_merritt, texas_dancer). +actor(north, greg_rosatti, texas_dancer). +actress(north, kelly_shenefiel, texas_dancer). +actress(north, jenifer_panton, betty_lou). +actor(north, keone_young, governor_ho). +actress(north, lauren_tom, mrs_ho). +actor(north, gil_janklowicz, man_on_beach). +actress(north, maud_winchester, stewart_s_mom). +actor(north, tyler_gurciullo, stewart). +actor(north, fritz_sperberg, stewart_s_dad). +actress(north, brynn_hartman, waitress). +actor(north, larry_b_williams, alaskan_pilot). +actor(north, graham_greene, alaskan_dad). +actress(north, kathy_bates, alaskan_mom). +actor(north, abe_vigoda, alaskan_grandpa). +actor(north, richard_belzer, barker). +actor(north, monty_bass, eskimo). +actor(north, farrell_thomas, eskimo). +actor(north, billy_daydoge, eskimo). +actor(north, henri_towers, eskimo). +actress(north, caroline_carr, eskimo). +actress(north, eva_larson, eskimo). +actor(north, ben_stein, curator). +actress(north, marla_frees, d_c_reporter). +actor(north, robert_rigamonti, d_c_reporter). +actor(north, alexander_godunov, amish_dad). +actress(north, kelly_mcgillis, amish_mom). +actor(north, jay_black, amish_pilot). +actress(north, rosalind_chao, chinese_mom). +actor(north, george_cheung, chinese_barber). +actor(north, ayo_adejugbe, african_dad). +actress(north, darwyn_carson, african_mom). +actress(north, lucy_lin, female_newscaster). +actress(north, faith_ford, donna_nelson). +actor(north, john_ritter, ward_nelson). +actress(north, scarlett_johansson, laura_nelson). +actor(north, jesse_zeigler, bud_nelson). +actor(north, robert_costanzo, al). +actress(north, audrey_klebahn, secretary). +actor(north, philip_levy, panhandler). +actor(north, dan_grimaldi, hot_dog_vendor). +actor(north, marvin_braverman, waiter). +actress(north, wendle_josepher, ticket_agent). +actor(north, adam_zweibel, kid_in_airport). +actor(north, matthew_horn, kid_in_airport). +actress(north, sarah_martineck, kid_in_airport). +actor(north, brian_levinson, kid_in_airport). +actor(north, d_l_shroder, federal_express_agent). +actor(north, brother_douglas, new_york_city_pimp). +actor(north, nick_taylor, newsman). +actor(north, jim_great_elk_waters, eskimo_father). +actor(north, michael_werckle, amish_boy). + +movie(the_perfect_score, 2004). +director(the_perfect_score, brian_robbins). +actress(the_perfect_score, erika_christensen, anna_ross). +actor(the_perfect_score, chris_evans, kyle). +actor(the_perfect_score, bryan_greenberg, matty_matthews). +actress(the_perfect_score, scarlett_johansson, francesca_curtis). +actor(the_perfect_score, darius_miles, desmond_rhodes). +actor(the_perfect_score, leonardo_nam, roy). +actress(the_perfect_score, tyra_ferrell, desmond_s_mother). +actor(the_perfect_score, matthew_lillard, larry). +actress(the_perfect_score, vanessa_angel, anita_donlee). +actor(the_perfect_score, bill_mackenzie, lobby_guard). +actor(the_perfect_score, dan_zukovic, mr_g). +actress(the_perfect_score, iris_quinn, kyle_s_mother). +actress(the_perfect_score, lorena_gale, proctor). +actress(the_perfect_score, patricia_idlette, receptionist). +actress(the_perfect_score, lynda_boyd, anna_s_mother). +actor(the_perfect_score, michael_ryan, anna_s_father). +actor(the_perfect_score, robert_clarke, arnie_branch). +actor(the_perfect_score, serge_houde, kurt_dooling). +actor(the_perfect_score, kyle_labine, dave). +actor(the_perfect_score, dee_jay_jackson, ets_lobby_guard). +actor(the_perfect_score, alf_humphreys, tom_helton). +actor(the_perfect_score, fulvio_cecere, francesca_s_father). +actor(the_perfect_score, mike_jarvis, illinois_coach). +actor(the_perfect_score, steve_makaj, kyle_s_father). +actor(the_perfect_score, kurt_max_runte, swat_captain). +actor(the_perfect_score, jay_brazeau, test_instructor). +actress(the_perfect_score, rebecca_reichert, tiffany). +actress(the_perfect_score, jessica_may, ets_woman). +actress(the_perfect_score, miriam_smith, ets_reception). +actor(the_perfect_score, alex_green, security_guard). +actor(the_perfect_score, samuel_scantlebury, keyon). +actress(the_perfect_score, sonja_bennett, pregnant_girl). +actress(the_perfect_score, sarah_afful, girl). +actor(the_perfect_score, alex_corr, preppy_boy). +actor(the_perfect_score, nikolas_malenovic, boy). +actor(the_perfect_score, john_shaw, ets_man). +actor(the_perfect_score, jamie_yochlowitz, man_in_jail). +actor(the_perfect_score, rob_boyce, guard). +actor(the_perfect_score, paul_campbell, guy_in_truck). + +movie(the_spongebob_squarepants_movie, 2004). +director(the_spongebob_squarepants_movie, stephen_hillenburg). +actor(the_spongebob_squarepants_movie, tom_kenny, spongebob_narrator_gary_clay_tough_fish_2_twin_2_houston_voice). +actor(the_spongebob_squarepants_movie, clancy_brown, mr_krabs). +actor(the_spongebob_squarepants_movie, rodger_bumpass, squidward_fish_4). +actor(the_spongebob_squarepants_movie, bill_fagerbakke, patrick_star_fish_2_chum_customer_local_fish). +actor(the_spongebob_squarepants_movie, mr_lawrence, plankton_fish_7_attendant_2_lloyd). +actress(the_spongebob_squarepants_movie, jill_talley, karen_the_computer_wife_old_lady). +actress(the_spongebob_squarepants_movie, carolyn_lawrence, sandy). +actress(the_spongebob_squarepants_movie, mary_jo_catlett, mrs_puff). +actor(the_spongebob_squarepants_movie, jeffrey_tambor, king_neptune). +actress(the_spongebob_squarepants_movie, scarlett_johansson, mindy). +actor(the_spongebob_squarepants_movie, alec_baldwin, dennis). +actor(the_spongebob_squarepants_movie, david_hasselhoff, himself). +actor(the_spongebob_squarepants_movie, kristopher_logan, squinty_the_pirate). +actor(the_spongebob_squarepants_movie, d_p_fitzgerald, bonesy_the_pirate). +actor(the_spongebob_squarepants_movie, cole_s_mckay, scruffy_the_pirate). +actor(the_spongebob_squarepants_movie, dylan_haggerty, stitches_the_pirate). +actor(the_spongebob_squarepants_movie, bart_mccarthy, captain_bart_the_pirate). +actor(the_spongebob_squarepants_movie, henry_kingi, inky_the_pirate). +actor(the_spongebob_squarepants_movie, randolph_jones, tiny_the_pirate). +actor(the_spongebob_squarepants_movie, paul_zies, upper_deck_the_pirate). +actor(the_spongebob_squarepants_movie, gerard_griesbaum, fingers_the_pirate). +actor(the_spongebob_squarepants_movie, aaron_hendry, tangles_the_pirate_cyclops_diver). +actor(the_spongebob_squarepants_movie, maxie_j_santillan_jr, gummy_the_pirate). +actor(the_spongebob_squarepants_movie, peter_deyoung, leatherbeard_the_pirate). +actor(the_spongebob_squarepants_movie, gino_montesinos, tango_the_pirate). +actor(the_spongebob_squarepants_movie, john_siciliano, pokey_the_pirate). +actor(the_spongebob_squarepants_movie, david_stifel, cookie_the_pirate). +actor(the_spongebob_squarepants_movie, alex_baker, martin_the_pirate). +actor(the_spongebob_squarepants_movie, robin_russell, sniffy_the_pirate). +actor(the_spongebob_squarepants_movie, tommy_schooler, salty_the_pirate). +actor(the_spongebob_squarepants_movie, ben_wilson, stovepipe_the_pirate). +actor(the_spongebob_squarepants_movie, jose_zelaya, dooby_the_pirate). +actress(the_spongebob_squarepants_movie, mageina_tovah, usher). +actor(the_spongebob_squarepants_movie, chris_cummins, concession_guy). +actor(the_spongebob_squarepants_movie, todd_duffey, concession_guy). +actor(the_spongebob_squarepants_movie, dee_bradley_baker, man_cop_phil_perch_perkins_waiter_attendant_1_thug_1_coughing_fish_twin_1_frog_fish_monster_freed_fish_sandals). +actress(the_spongebob_squarepants_movie, sirena_irwin, reporter_driver_ice_cream_lady). +actress(the_spongebob_squarepants_movie, lori_alan, pearl). +actor(the_spongebob_squarepants_movie, thomas_f_wilson, fish_3_tough_fish_1_victor). +actor(the_spongebob_squarepants_movie, carlos_alazraqui, squire_goofy_goober_announcer_thief). +actor(the_spongebob_squarepants_movie, joshua_seth, prisoner). +actor(the_spongebob_squarepants_movie, tim_blaney, singing_goofy_goober). +actor(the_spongebob_squarepants_movie, derek_drymon, the_screamer_fisherman). +actor(the_spongebob_squarepants_movie, aaron_springer, laughing_bubble). +actor(the_spongebob_squarepants_movie, neil_ross, cyclops). +actor(the_spongebob_squarepants_movie, stephen_hillenburg, parrot). +actor(the_spongebob_squarepants_movie, michael_patrick_bell, fisherman). +actor(the_spongebob_squarepants_movie, jim_wise, goofy_goober_rock_singer). + +movie(untitled_woody_allen_fall_project_2006, 2006). +director(untitled_woody_allen_fall_project_2006, woody_allen). +actor(untitled_woody_allen_fall_project_2006, woody_allen, ''). +actor(untitled_woody_allen_fall_project_2006, jody_halse, bouncer). +actor(untitled_woody_allen_fall_project_2006, hugh_jackman, ''). +actress(untitled_woody_allen_fall_project_2006, scarlett_johansson, ''). +actor(untitled_woody_allen_fall_project_2006, robyn_kerr, ''). +actor(untitled_woody_allen_fall_project_2006, kevin_mcnally, mike_tinsley). +actor(untitled_woody_allen_fall_project_2006, ian_mcshane, ''). +actor(untitled_woody_allen_fall_project_2006, james_nesbitt, ''). +actor(untitled_woody_allen_fall_project_2006, colin_salmon, ''). + +movie(a_view_from_the_bridge, 2006). +actress(a_view_from_the_bridge, scarlett_johansson, catherine). +actor(a_view_from_the_bridge, anthony_lapaglia, eddie_carbone). diff --git a/examples/prolog_tutorials.swinb b/examples/prolog_tutorials.swinb new file mode 100644 index 0000000..4d9f59f --- /dev/null +++ b/examples/prolog_tutorials.swinb @@ -0,0 +1,27 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# Prolog tutorials + +This notebook collects Prolog tutorials provided as SWISH notebooks. + + - [Using SWI-Prolog version 7 dicts](example/dict.swinb) + - [Using tabling in SWI-Prolog](example/tabling.swinb) + +Note that you can find other tutorials from the *Tutorials* menu at +the [SWI-Prolog home page](http://www.swi-prolog.org). + +--- +## Submitting a tutorial + +If you wish to submit a tutorial, create it on http://swish.swi-prolog.org as a new +notebook. Next, you have two options: + + - Download the notebook to your computer using *File/Download*, fork + https://github.com/SWI-Prolog/swish.git and add the notebook to the `examples` + directory and edit `examples/prolog_tutorials.swinb`. Finally, create + a *pull request*. + - Send a mail to jan@swi-prolog.org with a link to your tutorial. +</div> + +</div> diff --git a/examples/queens.pl b/examples/queens.pl new file mode 100644 index 0000000..0afafb1 --- /dev/null +++ b/examples/queens.pl @@ -0,0 +1,39 @@ +% render solutions nicely. +:- use_rendering(chess). + +%% queens(+N, -Queens) is nondet. +% +% @param Queens is a list of column numbers for placing the queens. +% @author Richard A. O'Keefe (The Craft of Prolog) + +queens(N, Queens) :- + length(Queens, N), + board(Queens, Board, 0, N, _, _), + queens(Board, 0, Queens). + +board([], [], N, N, _, _). +board([_|Queens], [Col-Vars|Board], Col0, N, [_|VR], VC) :- + Col is Col0+1, + functor(Vars, f, N), + constraints(N, Vars, VR, VC), + board(Queens, Board, Col, N, VR, [_|VC]). + +constraints(0, _, _, _) :- !. +constraints(N, Row, [R|Rs], [C|Cs]) :- + arg(N, Row, R-C), + M is N-1, + constraints(M, Row, Rs, Cs). + +queens([], _, []). +queens([C|Cs], Row0, [Col|Solution]) :- + Row is Row0+1, + select(Col-Vars, [C|Cs], Board), + arg(Row, Vars, Row-Row), + queens(Board, Row, Solution). + + +/** <examples> + +?- queens(8, Queens). + +*/ diff --git a/examples/render_XXX.swinb b/examples/render_XXX.swinb new file mode 100644 index 0000000..6aca466 --- /dev/null +++ b/examples/render_XXX.swinb @@ -0,0 +1,20 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# The XXX render plugin + +#### Synopsis + + :- use_rendering(XXX). + +#### Options supported + +#### Reconised terms +</div> + +<div class="nb-cell markdown"> +## Examples + +</div> + +</div> diff --git a/examples/render_bdd.swinb b/examples/render_bdd.swinb new file mode 100644 index 0000000..b62a54e --- /dev/null +++ b/examples/render_bdd.swinb @@ -0,0 +1,87 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# The BDD renderer + +#### Synopsis + + :- use_rendering(bdd). + +#### Options supported + +None + +#### Reconised terms + +The `bdd` renderer recognises CLP(B) residual goals of `library(clpb)` +and draws them as Binary Decision Diagrams (BDDs). Both kinds of +residual goals that `library(clpb)` can emit are supported by +this renderer: + +By default, `library(clpb)` emits `sat/1` residual goals. These are +first translated to BDDs by this renderer. + +In cases where the projection to `sat/1` goals is too costly, you can +set the Prolog flag `clpb_residuals` to `bdd` yourself, and use +`copy_term/3` to obtain a BDD representation of the +residual goals. Currently, setting this flag does not affect the +SWISH toplevel, so you also need to use `del_attrs/1` +to avoid the costly projection. See below for an example. + +In both cases, the graphviz renderer is used for the final output. +</div> + +<div class="nb-cell markdown"> +## Examples + +The first example simply enables the `bdd` renderer and posts a CLP(B) +query to show the residual goal as a BDD. + +</div> + +<div class="nb-cell program"> +:- use_rendering(bdd). +:- use_module(library(clpb)). +</div> + +<div class="nb-cell query"> +sat(X+Y). +</div> + +<div class="nb-cell markdown"> + +The second example sets `clpb_residuals` to `bdd` in order to +prevent the costly projection to `sat/1` goals. Note that this also +requires the use of `del_attrs/1` and—since renderers are +not invoked on subterms—introducing a new variable for the +single residual goal that represents the BDD. + +</div> + +<div class="nb-cell program"> +:- use_rendering(bdd). +:- use_module(library(clpb)). +:- set_prolog_flag(clpb_residuals, bdd). +</div> + +<div class="nb-cell query"> +length(Vs, 20), sat(card([2],Vs)), +copy_term(Vs, Vs, [BDD]), maplist(del_attrs, Vs). +</div> + +<div class="nb-cell markdown"> + +Building on this idea, the third example shows that you can impose an +arbitrary *order* on the variables in the BDD by first stating a +tautology like `+[1,V1,V2,...]`. This orders the variables in the same +way they appear in this list. + +</div> + +<div class="nb-cell query"> +sat(+[1,Z,Y,X]), sat(X+Y+Z), +Vs = [X,Y,Z], +copy_term(Vs, Vs, [BDD]), maplist(del_attrs, Vs). +</div> + +</div> diff --git a/examples/render_c3.swinb b/examples/render_c3.swinb new file mode 100644 index 0000000..3eb8d2d --- /dev/null +++ b/examples/render_c3.swinb @@ -0,0 +1,210 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# Displaying results as charts + +Numerical results are often easier to understand when rendered as a chart than a list of numbers. The SWISH web interface for SWI-Prolog allows rendering data through [C3.js](http://c3js.org). C3 is a JavaScript library that used [D3.js](http://d3js.org) for the actual rendering. However, C3.js can create many useful charts just from data, while D3.js typically requires writing JavaScript and CSS. + +## How it works + +Creating a C3 chart requires including the directive `:- use_rendering(c3).` and binding a Prolog variable to a _dict_ with the _tag_ `c3` and the data needed by C3. The `c3` renderer interferes in two ways with the data: + + - If no size is specified, the width is set to 85% of the available width + and the height to `width/2+50`. The chart is resized if the available + space changes. + - The renderer performs some basic sanity checks on the data and may + report an error. + +## Our first chart + +As a first example, we will create a chart for the _sine_ function in the range `0..360` degrees. The predicate sin/2 defines the sine relation for 37 datapoints on 10 degrees intervals. We use findall/3 to create the required data rows. + +Now, we instantiate the C3 data structure, specifying the row names and the X-axis. +</div> + +<div class="nb-cell program"> +:- use_rendering(c3). + +sin(X,Y) :- + between(0,36,I), + X is I*10, + Y is sin(X*pi/180). + +chart(Chart) :- + findall([X,Y], sin(X,Y), Data), + Chart = c3{data:_{x:x, rows:[[x,sine]|Data]}}. +</div> + +<div class="nb-cell query"> +chart(Sine). +</div> + +<div class="nb-cell markdown"> +## Alternatives for the the data + +By nature, Prolog is a relational language and the set of solutions naturally form a table, where each solution is a row. C3 wants to see a JSON array-of-arrays, where each sub-array is a row and the first row defines the column names, much as you are used to in a spreadsheet. The above creates the data as follows: + +``` +rows: [ [x, sine], + [0, 0.0], + [10, 0.173...], + ... + ] +``` + +The c3 rendering library allows the rows to be compound terms. If we have +a simple X-Y chart we can thus represent the same data as Prolog _pairs_, +a representation that is more common in the Prolog world. + +``` +rows: [ x - sine, + 0 - 0.0, + 10 - 0.173..., + ... + ] +``` + +We can use _dicts_. If we do so, we can omit the first row that +defines the column names as the dict _keys_ are used for that. So, the data can be represented as: + +``` +rows: [ r{x:0, sin:0.0}, + r{x:10, sin:0.173} + ... + ] +``` + +Predicates from library(dicts) can be used to combine series. For example, dicts_join/4 can be used to combine two series on a common key. The example below illustrates this. +</div> + +<div class="nb-cell program"> +:- use_rendering(c3). + +sin(X,Y) :- + between(0,36,I), + X is I*10, + Y is sin(X*pi/180). + +cos(X,Y) :- + between(0,36,I), + X is I*10, + Y is cos(X*pi/180). + +chart(Chart) :- + findall(r{x:X,sin:Y}, sin(X,Y), SinData), % create sin-series + findall(r{x:X,cos:Y}, cos(X,Y), CosData), % create cos-series + dicts_join(x, SinData, CosData, Data), % join on common 'x' key + Chart = c3{data:_{x:x, rows:Data}}. +</div> + +<div class="nb-cell query"> +chart(Chart). +</div> + +<div class="nb-cell markdown"> +You can also represent data with colums. In this case the data should be a list +of lists where each sublist represent a series of values and the first element +is the name of the series. + +``` +columns: [ [x,0,10,...], + [sine,0.0, 0.173,..], + [cosine, 1.0, ...] + ] +``` + +</div> +<div class="nb-cell program"> +:- use_rendering(c3). + +sin(X,Y) :- + between(0,36,I), + X is I*10, + Y is sin(X*pi/180). + +cos(X,Y) :- + between(0,36,I), + X is I*10, + Y is cos(X*pi/180). + +chart(Chart) :- + findall(X, sin(X,Y), XData), % create x values + findall(Y, sin(X,Y), SinData), % create sin-series + findall(Y, cos(X,Y), CosData), % create cos-series + Chart = c3{data:_{x:x, columns:[ + [x|XData],[sine|SinData],[cosine|CosData]]}}. +</div> + +<div class="nb-cell query"> +chart(Chart). +</div> + +<div class="nb-cell markdown"> +## Creating pie and bar charts + +In this example we compute some simple statistics on HTML pages. First, we create a program that created a sorted list of `[Tag,Count]` pairs for each element that appears on a page. Note that the pairs are typically represented as `Tag-Count`, but this representation does not fit C3 well. In this example we stay with the C3 representation. +</div> + +<div class="nb-cell program"> +:- use_rendering(c3). +:- use_module(library(sgml)). +:- use_module(library(xpath)). + +popular_elements(Popular) :- + popular_elements('http://www.swi-prolog.org', Popular). + +popular_elements(URL, Popular) :- + findall(Elem, elem_in(URL, Elem), Elems), + frequency_count(Elems, Popular). + +frequency_count(Elems, Popular) :- + sort(0, =<, Elems, Sorted), + count_same(Sorted, Counted), + sort(2, >=, Counted, Popular). + +count_same([], []). +count_same([H|T0], [H-C|T]) :- + count_same(H, T0, 1, C, T1), + count_same(T1, T). + +count_same(E, [E|T0], C0, C, T) :- !, + C1 is C0+1, + count_same(E, T0, C1, C, T). +count_same(_, T, C, C, T). + +elem_in(URL, Elem) :- + load_html(URL, DOM, []), + xpath(DOM, //'*'(self), element(Elem,_,_)). +</div> + +<div class="nb-cell markdown"> +Below, we run this program in three different queries. + + 1. Traditional Prolog. + 2. Rendered as a C3 pie chart. + 3. Rendered as a bar chart. The latter requires us to name the rows, define the + x-axis and specify that the x-axis must be rendered as text. +</div> + +<div class="nb-cell query"> +popular_elements(Pairs). +</div> + +<div class="nb-cell query"> +popular_elements(_Pairs), +Chart = c3{data:_{columns:_Pairs, type:pie}}. +</div> + +<div class="nb-cell query"> +popular_elements(_Pairs), +Chart = c3{data:_{x:elem, rows:[elem-count|_Pairs], type:bar}, + axis:_{x:_{type:category}}}. +</div> + +<div class="nb-cell markdown"> +## Further reading + +C3 defines most standard charts and many options to make the resulting charts look nice by providing labels for the axis, adding a legenda, choosing color schemes, etc. Please visit the [C3 examples](http://c3js.org/examples.html) for details. +</div> + +</div> diff --git a/examples/render_chess.swinb b/examples/render_chess.swinb new file mode 100644 index 0000000..b024006 --- /dev/null +++ b/examples/render_chess.swinb @@ -0,0 +1,35 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# The chess render plugin + +#### Synopsis + + :- use_rendering(chess). + +#### Options supported + +None + +#### Reconised terms + +The `chess` render plugin recognises a proper list of integers in the range +1 .. |List|. Thus, `[1]` is the only representation for a 1x1 board, a 3x3 +board width queens may be represented as `[1,3,2]`. A value R in the C-th element of the list places a queen in the C-th column at the R-th row. +</div> + +<div class="nb-cell markdown"> +## Examples + +Examples can be found in the two N-queen demo solvers, the [classical](example/queens.pl) and [clp(fd)](example/clpfd_queens.pl) one. +</div> + +<div class="nb-cell program"> +:- use_rendering(chess). +</div> + +<div class="nb-cell query"> +Board = [1,3,2]. +</div> + +</div> diff --git a/examples/render_codes.swinb b/examples/render_codes.swinb new file mode 100644 index 0000000..df2d4d8 --- /dev/null +++ b/examples/render_codes.swinb @@ -0,0 +1,55 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# The codes render plugin + +#### Synopsis + + :- use_rendering(codes). + :- use_rendering(codes, Options). + +#### Options supported + + - min_length(+Integer) + Codes must be a list of at least Integer length. Default is `3`. + - ellipsis(+Integer) + Write list as `bla bla ... bla` if longer than Integer. + Default is 30. + - partial(+Boolean) + It `true` (default), allow a partial list (ending in a + variable). + - charset(+Charset) + Set of characters to accept. Currently allows for + - ascii + Allow 32..126 + - iso_latin_1 + Allow 32..126 and 160..255 + +#### Reconised terms + +A list (or partial) list of likely character codes is rendered as a string. +</div> + +<div class="nb-cell markdown"> +## Examples + +List of character codes are by default rendered as a Prolog list of integers, which is rather hard to interpret: +</div> + +<div class="nb-cell query"> +A = `hello world`. +</div> + +<div class="nb-cell markdown"> +Using the `codes` renderer, Prolog heuristically decides that the integers list is likely to be a string and renders it accordingly. +</div> + +<div class="nb-cell program"> +:- use_rendering(codes). +</div> + +<div class="nb-cell query"> +A = `hello world`. +</div> + +</div> diff --git a/examples/render_graphviz.swinb b/examples/render_graphviz.swinb new file mode 100644 index 0000000..084d315 --- /dev/null +++ b/examples/render_graphviz.swinb @@ -0,0 +1,209 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# The GraphViz renderer + +[GraphViz](http://www.graphviz.org) is a popular rendering program for graphs. It takes the specification for a graph in the _dot_ language and produces a variety of output formats. We are particularly interested in its ability to output SVG, Scalable Vector Graphics, which we can embed in the SWISH output window. + +The `graphviz` renderer needs to obtain a dot specification and it needs to know the layout algorithm to use. It takes two terms: + + - Using Layout(DotString), it simply renders a dot specification using the + layout engine Layout. Provided layout engines are =dot= (most commonly + used), =neato=, =fdp=, =sfdp=, =twopi= and =circo=. Please visit the + [GraphViz](http://www.graphviz.org) site for details. + - Using Layout(Graph), where `Graph` is a Prolog term representing the + dot AST (Abstract Syntax Tree). The AST is translated into concrete + dot syntax using a DCG grammar. + +Before we go into details, we do the _Hello World_ demo. First, load the `graphviz` renderer: +</div> + +<div class="nb-cell program"> +:- use_rendering(graphviz). +</div> + +<div class="nb-cell markdown"> +First, we use the _Hello World_ example from the GrahViz demo pages using a dot string as specification: +</div> + +<div class="nb-cell query"> +X = dot("digraph G { Hello->World }"). +</div> + +<div class="nb-cell markdown"> +Using a dot string as specification is of course not desirable because it makes +it hard to generate a graph from computed data. We introduce the *Prolog representation* for dot with the same example. The only noticible difference is that the _render selection corner_ becomes visible because the graph is given +the attribute `bgcolor=transparent` if no background is given, while the graphviz +default is `white`. +</div> + +<div class="nb-cell query"> +X = dot(digraph(['Hello'->'World'])). +</div> + +<div class="nb-cell markdown"> +The default `dot` program may be omitted. This example also shows that you can use arbitrary terms as node identifiers and that you can add graph attributes. +</div> + +<div class="nb-cell query"> +X = digraph([rankdir='LR', t(Y)->t(y)]). +</div> + +<div class="nb-cell markdown"> +## A more complex example + +The following example is taken from the [Graphviz gallery](http://www.graphviz.org/Gallery.php), +where the first query uses the dot syntax and the second represents the same graph as a Prolog +term. +</div> + +<div class="nb-cell query"> +X = dot("digraph G { + + subgraph cluster_0 { + style=filled; + color=lightgrey; + node [style=filled,color=white]; + a0 -> a1 -> a2 -> a3; + label = \"process #1\"; + } + + subgraph cluster_1 { + node [style=filled]; + b0 -> b1 -> b2 -> b3; + label = \"process #2\"; + color=blue + } + start -> a0; + start -> b0; + a1 -> b3; + b2 -> a3; + a3 -> a0; + a3 -> end; + b3 -> end; + + start [shape=Mdiamond]; + end [shape=Msquare]; +}"). +</div> + +<div class="nb-cell query"> +X = dot(digraph([ + + subgraph(cluster_0, + [ style=filled, + color=lightgrey, + node([style=filled,color=white]), + a0 -> a1 -> a2 -> a3, + label = "process #1" + ]), + + subgraph(cluster_1, + [ node([style=filled]), + b0 -> b1 -> b2 -> b3, + label = "process #2", + color=blue + ]), + start -> a0, + start -> b0, + a1 -> b3, + b2 -> a3, + a3 -> a0, + a3 -> end, + b3 -> end, + + node(start, [shape='Mdiamond']), + node(end, [shape='Msquare']) +])). +</div> + +<div class="nb-cell markdown"> +## Representing dot as Prolog + +The full dot language is represented as a Prolog term. The shape of this term closely follows the +[dot language ](http://www.graphviz.org/content/dot-language) and is informally defined by the +grammar below: + + ``` + Graph := graph(Statements) + | graph(Options, Statements) + | digraph(Statements) + | digraph(Options, Statements) + Options := ID | [ID] | [strict, ID] + Statements := List of statements + Statement := NodeStm | EdgeStm | AttrStm | Name = Value | SubGraph + NodeStm := NodeID | node(NodeID, AttrList) + NodeID := ID | ID:Port | ID:Port:CompassPT + CompassPT := n | ne | e | se | s | sw | w | nw | c | _ + EdgeStm := (NodeID|SubGraph) (EdgeOp (NodeID|SubGraph))+ + EdgeStm | edge(NodeID|SubGraph) (EdgeOp (NodeID|SubGraph))+), AttrList) + EdgeOp := - | -> + AttrStm := graph(AttrList) + | node(AttrList) + | edge(AttrList) + AttrList := List of attributes + Attribute := Name = Value + | Name(Value) + SubGraph := subgraph(ID, Statements) + ``` +</div> + +<div class="nb-cell markdown"> +## Generating Graphs from data + +Generating a graph from static data is of course not very interesting. This section provides an example for generating graphs from Prolog data. This is where the Prolog representation of a _dot_ program comes in: it takes away the burden of generating the concrete dot syntax, avoiding issues such as proper escaping of labels. In the example below we render an arbitrary (acyclic) Prolog term as a tree. We do this by walking down the term, generating a node-id and a label for each node representing a compound term as well as each leaf. Note that we cannot use the label as node id beause the same label may appear in multiple locations. Thus, we generate dot statements like this: + + - node(Id, [label=Label]) + - `ChildID -> ParentId` + +If `Label` is atomic, the plain value (without quotes, see write/1) will be rendered. +Otherwise the label is handed to print/1 by the graphviz rendering. Note that the +graphviz rendering code is called _after_ the toplevel preparation of the answer. +The toplevel preparation removes cycles, combines multiple variables bound to the +same variable, binds named variables to a term =|'$VAR'(Name)|= and extracts +_redidual goals_. In particular, this implies you can *render a variable using +its name* by using the plain variable as the label: The toplevel will bind the label to +=|'$VAR'(Name)|= and print/1 will print this as the variable name. +This is exploited by any_label/2 below. +</div> + +<div class="nb-cell program"> +:- use_rendering(graphviz). + +tree(Compound, Root, Options0, Options) --> + { compound(Compound), !, + atom_concat(n, Options0.id, Root), + compound_name_arguments(Compound, Name, Arguments), + format(string(Label), '~q', [Name]), + ID1 is Options0.id+1 + }, + [node(Root, [label=Label])], + children(Arguments, Root, Options0.put(id, ID1), Options). +tree(Any, Leaf, Options0, Options) --> + { atom_concat(n, Options0.id, Leaf), + ID1 is Options0.id+1, + any_label(Any, Label, Color), + Options = Options0.put(id, ID1) + }, + [ node(Leaf, [label=Label, shape=none, fontcolor=Color]) ]. + +any_label(Any, Label, red4) :- + var(Any), !, Label = Any. +any_label(Any, Label, blue) :- + format(string(Label), '~p', [Any]). + +children([], _, Options, Options) --> []. +children([H|T], Parent, Options0, Options) --> + [ Child -> Parent ], + tree(H, Child, Options0, Options1), + children(T, Parent, Options1, Options). + +gvtree(Term, digraph([rankdir='BT',size=5|Statements])) :- + phrase(tree(Term, _, _{id:1}, _), Statements). +</div> + +<div class="nb-cell query"> +A = f(1, a, `XY`, "XY", X), gvtree(A, T). +</div> + +</div> diff --git a/examples/render_sudoku.swinb b/examples/render_sudoku.swinb new file mode 100644 index 0000000..fa8dfe8 --- /dev/null +++ b/examples/render_sudoku.swinb @@ -0,0 +1,55 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# The sudoku render plugin + +#### Synopsis + + :- use_rendering(sudoku). + +#### Options supported + +None + +#### Reconised terms + +A nested list like below is rendered as a 9x9 board with fat lines at +row/column 3 and 6. Variables result in an empty square. + + ``` + [[_,_,_,_,_,_,_,_,_], + [_,_,_,_,_,3,_,8,5], + [_,_,1,_,2,_,_,_,_], + [_,_,_,5,_,7,_,_,_], + [_,_,4,_,_,_,1,_,_], + [_,9,_,_,_,_,_,_,_], + [5,_,_,_,_,_,_,7,3], + [_,_,2,_,1,_,_,_,_], + [_,_,_,_,4,_,_,_,9]] + ``` +</div> + +<div class="nb-cell markdown"> +## Examples + +The sudoku renderer is demonstrated in the clp(fd) [solver](example/clpfd_sudoku.pl). +</div> + +<div class="nb-cell program"> +:- use_rendering(sudoku). +</div> + +<div class="nb-cell query"> +X = +[[_,_,_,_,_,_,_,_,_], + [_,_,_,_,_,3,_,8,5], + [_,_,1,_,2,_,_,_,_], + [_,_,_,5,_,7,_,_,_], + [_,_,4,_,_,_,1,_,_], + [_,9,_,_,_,_,_,_,_], + [5,_,_,_,_,_,_,7,3], + [_,_,2,_,1,_,_,_,_], + [_,_,_,_,4,_,_,_,9]]. +</div> + +</div> diff --git a/examples/render_svgtree.swinb b/examples/render_svgtree.swinb new file mode 100644 index 0000000..4df13a2 --- /dev/null +++ b/examples/render_svgtree.swinb @@ -0,0 +1,72 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# The SVG based tree render plugin + +#### Synopsis + + :- use_rendering(svgtree). + :- use_rendering(svgtree, Options). + +#### Options supported + + - list(Boolean) + It `false`, do not render a list as a tree. Rendering lists as a tree + has didactic values but is otherwise mostly confusing. + - filter(:NodeFilter) + If present, use call(NodeFilter, Term, Label, Children) + to extract the label and children of a term. Operates + on terms for which this call succeeds on the top node. + If the call fails on a child, the child is rendered as + a term. + +#### Reconised terms + +Any compound term. If a `filter` options is provided, any term that can be +translated by the filter. +</div> + +<div class="nb-cell markdown"> +## Examples + +The [English grammar](example/grammar.pl) provides an example that renders a parse tree. A first usage is explanation of the tree structure of Prolog terms. +</div> + +<div class="nb-cell program"> +:- use_rendering(svgtree). +</div> + +<div class="nb-cell query"> +Tree = a(_, b("hello"), [x,y,z]). +</div> + +<div class="nb-cell markdown"> +The answer rendering is applied *after* SWISH *removes* cycles from the answer. This means that cyclic terms can be handed to it, but the result might not be what you expected. +</div> + +<div class="nb-cell query"> +Tree = a(Tree). +</div> + +<div class="nb-cell markdown"> +## Using filters to create a tree from custom data + +Suppose the data for our tree is stored in the database, like below and we would like to create a tree from this. We do this by defining a _filter_. +</div> + +<div class="nb-cell program"> +:- use_rendering(svgtree, [filter(myfilter)]). + +node('The Netherlands', ['Noord Holland', 'Zuid Holland', 'Utrecht']). +node('Noord Holland', ['Amsterdam', 'Alkmaar', 'Volendam']). +node('Amsterdam', ['Amsterdam Zuid', 'Amsterdam Centrum', 'Amsterdam Noord']). + +myfilter(Name, Name, Children) :- + node(Name, Children). +</div> + +<div class="nb-cell query"> +A = 'The Netherlands'. +</div> + +</div> diff --git a/examples/render_table.swinb b/examples/render_table.swinb new file mode 100644 index 0000000..f25952d --- /dev/null +++ b/examples/render_table.swinb @@ -0,0 +1,122 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# The table render plugin + +This plugin requires a two-deminsional array of terms. + +#### Synopsis + + :- use_rendering(table). + :- use_rendering(table, Options). + +#### Options supported + + - header(HeaderSpec) + Specify the header for a table whos rows match the structure of + HeaderSpec. Each column header may be an arbitrary Prolog + term. + - float_format(+Format) + Render floating point numbers using `format(Format,Float)` + +Other options are passed to write_term/2 + +#### Reconised terms + +The table render plugin expects a proper list of _rows_. Each row must have the same +number of columns and, if a header is provided, the header list must have the same length as the number of columns. Each *Row* must have the same shape and contain the same number of columns. The following terms are supported to represent a row: + + - A _list_ + - A _compound term_, using any functor + - A _dict_. In this case the keys of the dict are using to add a header. +</div> + +<div class="nb-cell markdown"> +## Examples + +The table render plugin is used in the demo program [Einstein's Riddle](example/houses_puzzle.pl). Try the `?- houses(Houses).` query. + +We start with an example from the [rendering overview](rendering.swinb). As +defined above, we can use both lists and terms for the table. The latter is illustrated in the second query. We use the _pair_ representation as this data structure is produced by many libraries. +</div> + +<div class="nb-cell program"> +:- use_rendering(table). +</div> + +<div class="nb-cell query"> +X = [ [ 'Amsterdam', 'The Netherlands' ], + [ 'London', 'United Kingdom' ], + [ 'Paris', 'France' ] + ]. +</div> + +<div class="nb-cell query"> +X = [ 'Amsterdam' - 'The Netherlands', + 'London' - 'United Kingdom', + 'Paris' - 'France' + ]. +</div> + +<div class="nb-cell markdown"> +### Specify column headers + +Next, we use the header(Columns) option to specify the column header. +</div> + +<div class="nb-cell program"> +:- use_rendering(table, [header('Capital' - 'Country')]). +</div> + +<div class="nb-cell query"> +X = [ 'Amsterdam' - 'The Netherlands', + 'London' - 'United Kingdom', + 'Paris' - 'France' + ]. +</div> + +<div class="nb-cell markdown"> +*If* we specify a header, only data with a matching number of columns is rendered as a table. The query below will *not show a table* because the row terms do not match the +header('Capital' - 'Country') header. +</div> + +<div class="nb-cell query"> +X = [ capital('Amsterdam', 'The Netherlands', 825 080), + capital('London', 'United Kingdom', 8 416 535), + capital('Paris', 'France', 2 241 346) + ]. +</div> + +<div class="nb-cell markdown"> +We can make the table render again by specifying the proper row term. Multiple header options may be provided to specify the rendering of rows of different shapes. +</div> + +<div class="nb-cell program"> +:- use_rendering(table, + [ header('Capital' - 'Country'), + header(capital('Capital', 'Country', 'Population')) + ]). +</div> + +<div class="nb-cell query"> +X = [ capital('Amsterdam', 'The Netherlands', 825 080), + capital('London', 'United Kingdom', 8 416 535), + capital('Paris', 'France', 2 241 346) + ]. +</div> + +<div class="nb-cell markdown"> +## Any term may appear in a cell + +Neither columns nor cell values are restricted to simple types. The cell content is simply passed to the generic term rendering. +</div> + +<div class="nb-cell program"> +:- use_rendering(table). +</div> + +<div class="nb-cell query"> +findall(row(Len,List), (between(1,10,Len), length(List,Len)), Rows). +</div> + +</div> diff --git a/examples/rendering.swinb b/examples/rendering.swinb new file mode 100644 index 0000000..0016b67 --- /dev/null +++ b/examples/rendering.swinb @@ -0,0 +1,84 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# Result rendering + +SWISH allows for _rendering_ a Prolog answer in a domain specific way. This +can be compared to the Prolog _hook_ portray/1, although it currently only applies to the answer as a whole and *not* recursively on terms embedded in an answer. A renderer is selected using use_rendering/1 or use_rendering/2, +for example: +</div> + +<div class="nb-cell program"> +:- use_rendering(table). +</div> + +<div class="nb-cell markdown"> +The [table renderer](example/render_table.swinb) recognises a table and renders it as an HTML table. Press the _play_ button to run the simple example below. +</div> + +<div class="nb-cell query"> +X = [ [ 'Amsterdam', 'The Netherlands' ], + [ 'London', 'United Kingdom' ], + [ 'Paris', 'France' ] + ]. +</div> + +<div class="nb-cell markdown"> +## Provided renderers + +The following rendering plugins are currently supported. Please visit the linked notebook for more documentation and examples exploiting these renderers. + + - General purpose renderers + - [table](example/render_table.swinb) renders tables + - [svgtree](example/render_svgtree.swinb) renders Prolog terms as trees + - [graphviz](example/render_graphviz.swinb) render graphs using + [Graphviz](http://www.graphviz.org/). + - [c3](example/render_c3.swinb) renders =c3= dicts as charts (line, bar, pie + etc.) using [C3.js](http://www.c3js.org) + - [codes](example/render_codes.swinb) renders lists of code-points as text. + - Domain specific renderers + - [bdd](example/render_bdd.swinb) renders CLP(B) residual goals as Binary Decision Diagrams (BDDs) + - [chess](example/render_chess.swinb) renders chess positions (currently only + N-queen boards). + - [sudoku](example/render_sudoku.swinb) renders sudoku puzzles. +</div> + +<div class="nb-cell markdown"> +## Adding a new render plugin + +The rendering infrastructure is specialized using a series of _plugins_ provided as Prolog libraries in the directory =lib/render= of the SWISH sources. A render plugin is a _module_ that performs these steps: + + 1. Registering the renderer using register_renderer/2 + 2. Define a rule for term_rendering//3, which + - Identifies the Prolog term as suitable for the plugin. For + example, a _table_ renderer requires a datastructure that can be + interpreted as a table. + - Define the translation to an HTML fragment using + library(http/html_write). The HTML fragment can include _style_ + and (JavaScript) scripts. + +### Embedded JavaScript + +Embedded JavaScript is executed explicitly after the provided HTML DOM node has been added to the document. The infrastructure sets =|$.ajaxScript|= to a `jQuery` object that refers to the script element. This can be used to find the inserted DOM node without generating an `id` attribute. The typical +JavaScript skeleton that avoids poluting the namespace and ensures executing if the node is properly embedded is given below. + +``` +(function() { + if ( $.ajaxScript ) { + // do the work + } +})(); +``` + +SWISH uses [RequireJS](http://requirejs.org/) for dependency tracking. This functionality can be exploited to load JavaScript only once. For example, the [svgtree](example/render_svgtree.swinb) uses this fragment. + +``` + require(["render/svg-tree-drawer", "jquery"], function(svgtree) { + // setup the tree + }); +``` + +The RequireJS paths `c3` and `d3` are preconfigured to load [D3.js](http://www.d3js.org) and [C3.js](http://www.c3js.org) +</div> + +</div> diff --git a/examples/stats.swinb b/examples/stats.swinb new file mode 100644 index 0000000..6af0e4e --- /dev/null +++ b/examples/stats.swinb @@ -0,0 +1,143 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# Display SWISH server statistics + +This page examines the performance and health of the SWISH server. Most of the statistics are gathered by `lib/swish_debug`, which is by default loaded into http://swish.swi-prolog.org but must be explicitly loaded into your own SWISH server. Part of the statistics are based on reading the Linux =|/proc|= file system and thus only function on Linux. + +The first step is easy, showing the overall statistics of the server. +</div> + +<div class="nb-cell query"> +statistics. +</div> + +<div class="nb-cell markdown"> +## Historical performance statistics + +The charts below render historical performance characteristics of the server. Please open the +program below for a description of chart/3. +</div> + +<div class="nb-cell program" data-singleline="true"> +:- use_rendering(c3). + +%% chart(+Period, +Keys, -Chart) is det. +% +% Compute a Chart for the given period combining graphs for the given Keys. +% Defined values for Period are: +% - `minute`: the last 60 1 second measurements +% - `hour`: the last 60 1 minute averages +% - `day`: the last 24 1 hour averages +% - `week`: the last 7 1 day averages +% - `year`: the last 52 1 week averages +% Defines keys are: +% - `cpu`: Total process CPU time in seconds +% - `d_cpu`: Differential CPU time (% CPU) +% - `pengines`: Total number of living Pengines +% - `d_pengines_created`: Pengines create rate (per second) +% - `rss`: Resident set size in bytes +% - `stack`: Total amount of memory allocated for Prolog stacks in bytes +% - `heap`: `rss - stack`. This is a rough estimate of the memory used +% for the program, which should stay bounded if the server is free of +% leaks. Note that it can still grow significantly and can be temporarily +% high if user applications use the dynamic database. +% - `rss_mb`, `stack_mb`, `heap_mb` are the above divided by 1024^2. + +chart(Period, Keys, Chart) :- + swish_stats(Period, Dicts0), + maplist(add_heap_mb, Dicts0, Dicts1), + maplist(rss_mb, Dicts1, Dicts2), + maplist(free_mb, Dicts2, Dicts3), + maplist(stack_mb, Dicts3, Dicts4), + maplist(fix_date, Dicts4, Dicts), + dicts_slice([time|Keys], Dicts, LastFirstRows), + reverse(LastFirstRows, Rows), + period_format(Period, DateFormat), + Chart = c3{data:_{x:time, xFormat:null, rows:Rows}, + axis:_{x:_{type: timeseries, + tick: _{format: DateFormat, + rotate: 90, + multiline: false}}}}. + +period_format(minute, '%M:%S'). +period_format(hour, '%H:%M'). +period_format(day, '%m-%d %H:00'). +period_format(week, '%Y-%m-%d'). +period_format(year, '%Y-%m-%d'). + +add_heap_mb(Stat0, Stat) :- + Heap is ( Stat0.get(rss) - + Stat0.get(stack) - + Stat0.get(fordblks) + ) / (1024^2), !, + put_dict(heap_mb, Stat0, Heap, Stat). +add_heap_mb(Stat0, Stat) :- + Heap is ( Stat0.get(rss) - + Stat0.get(stack) + ) / (1024^2), !, + put_dict(heap_mb, Stat0, Heap, Stat). +add_heap_mb(Stat, Stat). + +rss_mb(Stat0, Stat) :- + Gb is Stat0.get(rss)/(1024**2), !, + put_dict(rss_mb, Stat0, Gb, Stat). +rss_mb(Stat, Stat). + +free_mb(Stat0, Stat) :- + Gb is Stat0.get(fordblks)/(1024**2), !, + put_dict(free_mb, Stat0, Gb, Stat). +free_mb(Stat, Stat). + +stack_mb(Stat0, Stat) :- + Gb is Stat0.get(stack)/(1024**2), !, + put_dict(stack_mb, Stat0, Gb, Stat). +stack_mb(Stat, Stat). + +fix_date(Stat0, Stat) :- + Time is Stat0.time * 1000, + put_dict(time, Stat0, Time, Stat). +</div> + +<div class="nb-cell markdown"> +### Number of Pengines and CPU load over the past hour + +The number of Pegines denotes the number of actively executing queries. These queries may be sleeping while waiting for input, a debugger command or the user asking for more answers. Note that the number of Pengines is sampled and short-lived Pengines does not appear in this chart. +</div> + +<div class="nb-cell query"> +chart(hour, [pengines,d_cpu], Chart). +</div> + +<div class="nb-cell markdown"> +### Memory usage over the past hour + +*rss* is the total (_resident_) memory usage as reported by Linux. *stack* is the memory occupied by all Prolog stacks. +*heap* is an approximation of the memory used for the Prolog program space, computed as _rss_ - _stack_ - _free_. This is incorrect for two reasons. It ignores the C-stacks and the not-yet-committed memory of the Prolog stacks is not part of *rss*. *free* is memory that is freed but not yet reused as reported by GNU =|malinfo()|= as `fordblks`. +</div> + +<div class="nb-cell query"> +chart(hour, [rss_mb,heap_mb,stack_mb,free_mb], Chart). +</div> + +<div class="nb-cell markdown"> +## Health statistics + +The statistics below assesses the number of *Pengines* (actively executing queries from users) and the *highlight states*, the number of server-side mirrors we have from client's source code used to compute the semantically enriched tokens. If such states are not explicitly invalidated by the client, they are removed after having not been accessed for one hour. The *stale modules* count refers to temporary modules that are not associated to a Pengine, nor to a highlight state and probably indicate a leak. +</div> + +<div class="nb-cell program" data-singleline="true"> +:- use_rendering(table). + +stats([stale_modules-Stale|Pairs]) :- + aggregate_all(count, pengine_stale_module(_), Stale), + findall(Key-Value, + (swish_statistics(Stat), Stat =.. [Key,Value]), + Pairs). +</div> + +<div class="nb-cell query"> +stats(Stats). +</div> + +</div> diff --git a/examples/swish_tutorials.swinb b/examples/swish_tutorials.swinb new file mode 100644 index 0000000..e118ec1 --- /dev/null +++ b/examples/swish_tutorials.swinb @@ -0,0 +1,13 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# SWISH Tutorials + +This notebook provides an overview of tutorials about using SWISH. + + - [Rendering answers graphically](example/rendering.swinb) + - [Using HTML cells in notebooks](example/htmlcell.swinb) + - [Access the SWISH interface from Prolog](example/jquery.swinb) +</div> + +</div> diff --git a/examples/tabling.swinb b/examples/tabling.swinb new file mode 100644 index 0000000..19c228d --- /dev/null +++ b/examples/tabling.swinb @@ -0,0 +1,99 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# Using tabling (SLG resolution) + +This notebook illustrates SWI-Prolog tabling, implementing the examples from the +[manual page](http://www.swi-prolog.org/pldoc/man?section=tabling). Please consult this page for additional background information. + +## Computing Fibonacci numbers + +The nth-Fibonacci number is the sum of the two preceeding ones, where the Fibonacci number of 0 and 1 are both 1. + +### First, the simple way + +The most natural definition for the N-th Fibonacci number in Prolog is below. Unfortunately, the _complexity_ of this is O(2^N), making it only suitable for the few Fibonacci numbers. +</div> + +<div class="nb-cell program"> +fib(0, 1) :- !. +fib(1, 1) :- !. +fib(N, F) :- + N > 1, + N1 is N-1, + N2 is N-2, + fib(N1, F1), + fib(N2, F2), + F is F1+F2. +</div> + +<div class="nb-cell query"> +time(fib(30, Fib)). +</div> + +<div class="nb-cell markdown"> +### Now using tabling + +By simply adding a table/1 directive, repetitive computation of lower numbers is avoided. Note that this effectively also inverts the order of computation, were we +compute low Fibonacci first. +</div> + +<div class="nb-cell program"> +:- table fib/2. + +fib(0, 1) :- !. +fib(1, 1) :- !. +fib(N, F) :- + N > 1, + N1 is N-1, + N2 is N-2, + fib(N1, F1), + fib(N2, F2), + F is F1+F2. +</div> + +<div class="nb-cell query"> +time(fib(30, Fib)). +</div> + +<div class="nb-cell query"> +time(fib(1000, Fib)). +</div> + +<div class="nb-cell markdown"> +## Computing connections in a graph + +Tabling also avoids non-termination of the computation due to _left recursion_, i.e., a goal calling (possibly indirectly) a copy of itself. Finally, tabling avoids producing the same results twice by ignoring any (intermediate) result that is already in its tables. This means that, for example, connections in a railway network can be evaluated without _stratification_ and _cycle detection_ being added by the user. Here is an example. +</div> + +<div class="nb-cell program"> +:- use_module(library(tabling)). +:- table connection/2. + +connection(X, Y) :- + connection(X, Z), + connection(Z, Y). +connection(X, Y) :- + connection(Y, X). + +connection('Amsterdam', 'Schiphol'). +connection('Amsterdam', 'Haarlem'). +connection('Schiphol', 'Leiden'). +connection('Haarlem', 'Leiden'). +</div> + +<div class="nb-cell query" data-tabled="true"> +connection('Amsterdam', X). +</div> + +<div class="nb-cell markdown"> +### About Tabling in SWI-Prolog + +Tabling in SWI-Prolog is based on _delimited continuations_. The initiative to this +comes from Tom Schrijvers, Benoit Desouter and Bart Demoen. See + + - [Tabling as a library with delimited control](http://dx.doi.org/10.1017/S1471068415000137) + - [Delimited continuations for prolog](http://dx.doi.org/10.1017/S1471068413000331) +</div> + +</div> diff --git a/examples/trill/BRCA.pl b/examples/trill/BRCA.pl new file mode 100644 index 0000000..8d1ff7f --- /dev/null +++ b/examples/trill/BRCA.pl @@ -0,0 +1,490 @@ +:-use_module(library(trill)). + +:-trill. + +/* +Model of risk factor of breast cancer, from +Klinov, P., Parsia, B.: Optimization and evaluation of reasoning in probabilistic +description logic: Towards a systematic approach. In: International Semantic Web +Conference. LNCS, vol. 5318, pp. 213–228. Springer (2008) +*/ + +/** <examples> + +?- prob_instanceOf('WomanUnderLifetimeBRCRisk','Helen',Prob). +?- instanceOf('WomanUnderLifetimeBRCRisk','Helen',ListExpl). + +?- prob_sub_class('WomanAged3040','WomanUnderLifetimeBRCRisk',Prob). +?- sub_class('WomanAged3040','WomanUnderLifetimeBRCRisk',ListExpl). + +*/ + +% Axioms +equivalentClasses(['WomanUnderLifetimeBRCRisk',intersectionOf(['Woman',someValuesFrom('hasRisk','LifetimeBRCRisk')])]). +equivalentClasses(['WomanUnderModeratelyIncreasedBRCRisk',intersectionOf(['WomanUnderIncreasedBRCRisk',someValuesFrom('hasRisk','ModeratelyIncreasedBRCRisk')])]). +equivalentClasses(['WomanUnderModeratelyReducedBRCRisk',someValuesFrom('hasRisk','ModeratelyReducedBRCRisk')]). +equivalentClasses(['WomanUnderReducedBRCRisk',intersectionOf(['WomanUnderBRCRisk',someValuesFrom('hasRisk','ReducedBRCRisk')])]). +equivalentClasses(['WomanUnderRelativeBRCRisk',intersectionOf([someValuesFrom('hasRisk','RelativeBRCRisk'),'Woman'])]). +equivalentClasses(['WomanUnderShortTermBRCRisk',intersectionOf(['Woman',someValuesFrom('hasRisk','ShortTermBRCRisk')])]). +equivalentClasses(['WomanUnderStronglyIncreasedBRCRisk',intersectionOf([someValuesFrom('hasRisk','StronglyIncreasedBRCRisk'),'WomanUnderIncreasedBRCRisk'])]). +equivalentClasses(['WomanUnderStronglyReducedBRCRisk',someValuesFrom('hasRisk','StronglyReducedBRCRisk')]). +equivalentClasses(['WomanUnderWeakelyIncreasedBRCRisk',intersectionOf(['WomanUnderIncreasedBRCRisk',someValuesFrom('hasRisk','WeakelyIncreasedBRCRisk')])]). +equivalentClasses(['WomanUnderWeakelyReducedBRCRisk',someValuesFrom('hasRisk','WeakelyReducedBRCRisk')]). +equivalentClasses(['WomanWithAtypicalHyperplasia',intersectionOf(['Woman',someValuesFrom('hasRiskFactor','AtypicalHyperplasia')])]). +equivalentClasses(['WomanWithBRCA1Mutation',intersectionOf(['Woman',someValuesFrom('hasRiskFactor','BRCA1Mutation')])]). +equivalentClasses(['WomanWithBRCA2Mutation',intersectionOf([someValuesFrom('hasRiskFactor','BRCA2Mutation'),'Woman'])]). +equivalentClasses(['WomanWithBRCAMutation',intersectionOf([someValuesFrom('hasRiskFactor','BRCAMutation'),'Woman'])]). +equivalentClasses(['WomanWithCarcinomaInSitu',intersectionOf(['Woman',someValuesFrom('hasRiskFactor','CarcinomaInSitu')])]). +equivalentClasses(['WomanWithEarlyFirstChild',intersectionOf(['Woman',someValuesFrom('hasRiskFactor','EarlyFirstChild')])]). +equivalentClasses(['WomanWithEarlyFirstPeriodAndLateMenopause',intersectionOf(['WomanHavingFirstPeriodBefore12','WomanWithLateMenopause'])]). +equivalentClasses(['WomanWithEarlyMenopause',intersectionOf(['Woman',someValuesFrom('hasRiskFactor','EarlyMenopause')])]). +equivalentClasses(['WomanWithFamilyBRCHistory',intersectionOf(['Woman',someValuesFrom('hasRiskFactor','FamilyCancerHistory')])]). +equivalentClasses(['WomanWithHighBoneDensity',intersectionOf([someValuesFrom('hasRiskFactor','HighBreastDensity'),'Woman'])]). +equivalentClasses(['WomanWithHighBreastDensity',intersectionOf([someValuesFrom('hasRiskFactor','HighBreastDensity'),'Woman'])]). +equivalentClasses(['WomanWithHighLevelOfEstrogen',intersectionOf(['Woman',someValuesFrom('hasRiskFactor','HighLevelOfEstrogen')])]). +equivalentClasses(['WomanWithImmediateRelativesBRCAffected',intersectionOf(['Woman',someValuesFrom('hasRiskFactor','TwoImmediateRelativesAffected')])]). +equivalentClasses(['WomanWithLateFirstChild',intersectionOf([someValuesFrom('hasRiskFactor','LateFirstChild'),'Woman'])]). +equivalentClasses(['WomanWithLateMenopause',intersectionOf([someValuesFrom('hasRiskFactor','LateMenopause'),'Woman'])]). +equivalentClasses(['WomanWithMotherAffectedAfterAge60',someValuesFrom('hasRiskFactor','MotherAffectedAfterAge60')]). +equivalentClasses(['WomanWithMotherAffectedBeforeAge60',someValuesFrom('hasRiskFactor','MotherAffectedBeforeAge60')]). +equivalentClasses(['WomanWithMotherBRCAffected',intersectionOf(['Woman',someValuesFrom('hasRiskFactor','MotherAffected')])]). +equivalentClasses(['WomanWithPersonalBRCHistory',intersectionOf([someValuesFrom('hasRiskFactor','PersonalBRCHistory'),'Woman'])]). +equivalentClasses(['WomanWithRiskFactors',intersectionOf(['Woman',someValuesFrom('hasRiskFactor','RiskFactor')])]). +equivalentClasses(['WomanWithUsualHyperplasia',intersectionOf(['Woman',someValuesFrom('hasRiskFactor','UsualHyperplasia')])]). +equivalentClasses(['WomanWithoutBreastfeeding',intersectionOf([someValuesFrom('hasRiskFactor','NoBreastfeeding'),'Woman'])]). +equivalentClasses(['WomanWithoutChildren',intersectionOf(['Woman',someValuesFrom('hasRiskFactor','NoChildren'),someValuesFrom('hasRiskFactor',unionOf(['Age4050','Age50Plus','Age3040']))])]). + +disjointClasses(['AfricanAmerican','AshkenaziJew']). +disjointClasses(['Age2030','Age3040']). +disjointClasses(['Age2030','Age4050']). +disjointClasses(['Age2030','Age5060']). +disjointClasses(['Age2030','Age6070']). +disjointClasses(['Age2030','Age70Plus']). +disjointClasses(['Age2030','AgeUnder20']). +disjointClasses(['Age3040','Age4050']). +disjointClasses(['Age3040','Age6070']). +disjointClasses(['Age3040','Age70Plus']). +disjointClasses(['Age3040','AgeUnder20']). +disjointClasses(['Age4050','Age70Plus']). +disjointClasses(['Age5060','Age3040']). +disjointClasses(['Age5060','Age4050']). +disjointClasses(['Age5060','Age6070']). +disjointClasses(['Age5060','Age70Plus']). +disjointClasses(['Age6070','Age4050']). +disjointClasses(['Age6070','Age70Plus']). +disjointClasses(['AgeUnder20','Age4050']). +disjointClasses(['AgeUnder50','Age50Plus']). +disjointClasses(['AtypicalHyperplasia','UsualHyperplasia']). +disjointClasses(['BeforeMenopause','AfterMenopause']). +disjointClasses(['BeforeMenopause','LateMenopause']). +disjointClasses(['EarlyFirstChild','LateFirstChild']). +disjointClasses(['LateMenopause','EarlyMenopause']). +disjointClasses(['ModerateDecrease','WeakDecrease']). +disjointClasses(['MotherAffectedBeforeAge60','MotherAffectedAfterAge60']). +disjointClasses(['PostmenopausalWoman','PremenopausalWoman']). +disjointClasses(['StrongDecrease','ModerateDecrease']). +disjointClasses(['StrongDecrease','WeakDecrease']). +disjointClasses(['StrongIncrease','ModerateIncrease']). +disjointClasses(['StrongIncrease','WeakIncrease']). +disjointClasses(['WeakIncrease','ModerateIncrease']). +disjointClasses(['WomanUnderModeratelyIncreasedBRCRisk','WomanUnderStronglyIncreasedBRCRisk']). +disjointClasses(['WomanUnderModeratelyReducedBRCRisk','WomanUnderStronglyReducedBRCRisk']). +disjointClasses(['WomanUnderModeratelyReducedBRCRisk','WomanUnderWeakelyReducedBRCRisk']). +disjointClasses(['WomanUnderReducedBRCRisk','WomanUnderIncreasedBRCRisk']). +disjointClasses(['WomanUnderStronglyReducedBRCRisk','WomanUnderWeakelyReducedBRCRisk']). +disjointClasses(['WomanUnderWeakelyIncreasedBRCRisk','WomanUnderModeratelyIncreasedBRCRisk']). +disjointClasses(['WomanUnderWeakelyIncreasedBRCRisk','WomanUnderStronglyIncreasedBRCRisk']). +disjointClasses(['WomanWithLateFirstChild','WomanWithEarlyFirstChild']). +disjointClasses(['WomanWithLateFirstChild','WomanWithoutChildren']). +disjointClasses(['WomanWithoutChildren','WomanWithEarlyFirstChild']). + +subClassOf('WomanTakingEstrogen','Woman'). +subClassOf('WomanTakingProgestin','Woman'). +subClassOf('AbsoluteBRCRisk','BRCRisk'). +subClassOf('AbsoluteRiskCategory','RiskCategory'). +subClassOf('AfricanAmerican','Ethnicity'). +subClassOf('AfricanAmericanWoman','Woman'). +subClassOf('AfterMenopause','KnownFactor'). +subClassOf('Age','KnownFactor'). +subClassOf('Age2030','AgeUnder50'). +subClassOf('Age3040','AgeUnder50'). +subClassOf('Age4050','AgeUnder50'). +subClassOf('Age5060','Age'). +subClassOf('Age50Plus','Age'). +subClassOf('Age6070','Age'). +subClassOf('Age70Plus','Age'). +subClassOf('AgeUnder20','AgeUnder50'). +subClassOf('AgeUnder50','Age'). +subClassOf('Alcohol','KnownFactor'). +subClassOf('AshkenaziJew','Ethnicity'). +subClassOf('AshkenaziJewishWoman','Woman'). +subClassOf('AshkenaziJewishWoman','WomanWithBRCAMutation'). +subClassOf('AtypicalHyperplasia','BenignBreastDisease'). +subClassOf('BRCA1Mutation','BRCAMutation'). +subClassOf('BRCA2Mutation','BRCAMutation'). +subClassOf('BRCAMutation','InferredFactor'). +subClassOf('BRCRisk',intersectionOf([someValuesFrom('riskType','BRCRType'),'Risk'])). +subClassOf('BeforeMenopause','KnownFactor'). +subClassOf('BenignBreastDisease','InferredFactor'). +subClassOf('BirthControlPills','KnownFactor'). +subClassOf('BreastCancer','Cancer'). +subClassOf('Cancer','Disease'). +subClassOf('CarcinomaInSitu','InferredFactor'). +subClassOf('Disease','http://www.w3.org/2002/07/owl#Thing'). +subClassOf('EarlyFirstChild','KnownFactor'). +subClassOf('EarlyMenopause','KnownFactor'). +subClassOf('Estrogen','PostmenopausalHormones'). +subClassOf('EstrogenProgestin','PostmenopausalHormones'). +subClassOf('EstrogenTestosterone','PostmenopausalHormones'). +subClassOf('Ethnicity','http://www.w3.org/2002/07/owl#Thing'). +subClassOf('FamilyCancerHistory','KnownFactor'). +subClassOf('Female','Gender'). +subClassOf('FirstPeriodBefore12','KnownFactor'). +subClassOf('Gender','http://www.w3.org/2002/07/owl#Thing'). +subClassOf('HighBoneDensity','InferredFactor'). +subClassOf('HighBreastDensity','InferredFactor'). +subClassOf('HighLevelOfEstrogen','InferredFactor'). +subClassOf('IncreasedBRCRisk','RelativeBRCRisk'). +subClassOf('IncreasedRiskCategory','RelativeRiskCategory'). +subClassOf('InferredFactor','RiskFactor'). +subClassOf('KnownFactor','RiskFactor'). +subClassOf('LackOfExercise','KnownFactor'). +subClassOf('LateFirstChild','KnownFactor'). +subClassOf('LateMenopause','KnownFactor'). +subClassOf('LifetimeBRCRisk','AbsoluteBRCRisk'). +subClassOf('Male','Gender'). +subClassOf('ModerateDecrease','ReducedRiskCategory'). +subClassOf('ModerateIncrease','IncreasedRiskCategory'). +subClassOf('ModeratelyIncreasedBRCRisk','IncreasedBRCRisk'). +subClassOf('ModeratelyReducedBRCRisk','ReducedBRCRisk'). +subClassOf('MotherAffected','FamilyCancerHistory'). +subClassOf('MotherAffectedAfterAge60','MotherAffected'). +subClassOf('MotherAffectedBeforeAge60','MotherAffected'). +subClassOf('NoBreastfeeding','KnownFactor'). +subClassOf('NoChildren','NoBreastfeeding'). +subClassOf('Overweight','KnownFactor'). +subClassOf('OverweightWoman','Woman'). +subClassOf('Person','http://www.w3.org/2002/07/owl#Thing'). +subClassOf('Person',someValuesFrom('hasGender','Gender')). +subClassOf('PersonUnderRisk','Person'). +subClassOf('PersonalBRCHistory','KnownFactor'). +subClassOf('PostmenopausalHormones','KnownFactor'). +subClassOf('PostmenopausalWoman','Woman'). +subClassOf('PostmenopausalWomanTakingEstrogenAndProgestin','PostmenopausalWoman'). +subClassOf('PostmenopausalWomanTakingEstrogenAndTestosterone','PostmenopausalWoman'). +subClassOf('PostmenopausalWomanWithHighLevelOfEstrogen','Woman'). +subClassOf('PremenopausalWoman','Woman'). +subClassOf('Progestin','PostmenopausalHormones'). +subClassOf('RadiationExposureDuringYouth','KnownFactor'). +subClassOf('ReducedBRCRisk','RelativeBRCRisk'). +subClassOf('ReducedRiskCategory','RelativeRiskCategory'). +subClassOf('RelativeBRCRisk','BRCRisk'). +subClassOf('RelativeRiskCategory','RiskCategory'). +subClassOf('Risk','http://www.w3.org/2002/07/owl#Thing'). +subClassOf('RiskCategory','http://www.w3.org/2002/07/owl#Thing'). +subClassOf('RiskFactor','http://www.w3.org/2002/07/owl#Thing'). +subClassOf('RiskFactor',allValuesFrom('relatedToDisease','Disease')). +subClassOf('RiskType',intersectionOf(['http://www.w3.org/2002/07/owl#Thing',someValuesFrom('riskOf','Disease')])). +subClassOf('SeniorWomanWithMotherBRCAffected','Woman'). +subClassOf('ShortTermBRCRisk','AbsoluteBRCRisk'). +subClassOf('StrongDecrease','ReducedRiskCategory'). +subClassOf('StrongIncrease','IncreasedRiskCategory'). +subClassOf('StronglyIncreasedBRCRisk','IncreasedBRCRisk'). +subClassOf('StronglyReducedBRCRisk','ReducedBRCRisk'). +subClassOf('Testosterone','PostmenopausalHormones'). +subClassOf('TwoImmediateRelativesAffected','FamilyCancerHistory'). +subClassOf('UsualHyperplasia','BenignBreastDisease'). +subClassOf('WeakDecrease','ReducedRiskCategory'). +subClassOf('WeakIncrease','IncreasedRiskCategory'). +subClassOf('WeakelyIncreasedBRCRisk','IncreasedBRCRisk'). +subClassOf('WeakelyReducedBRCRisk','ReducedBRCRisk'). +subClassOf('Woman','http://www.w3.org/2002/07/owl#Thing'). +subClassOf('Woman','WomanUnderLifetimeBRCRisk'). +subClassOf('WomanAbusingAlcohol','Woman'). +subClassOf('WomanAged2030','Woman'). +subClassOf('WomanAged3040','Woman'). +subClassOf('WomanAged4050','Woman'). +subClassOf('WomanAged5060','Woman'). +subClassOf('WomanAged6070','Woman'). +subClassOf('WomanAged70Plus','Woman'). +subClassOf('WomanAgedUnder20','Woman'). +subClassOf('WomanAgedUnder50','WomanWithRiskFactors'). +subClassOf('WomanExposedToRadiationDuringYouth','Woman'). +subClassOf('WomanHavingFirstPeriodBefore12','Woman'). +subClassOf('WomanLackingExercise','Woman'). +subClassOf('WomanTakingBirthControlPills','Woman'). +subClassOf('WomanTakingPostmenopausalHormones','Woman'). +subClassOf('WomanUnderLifetimeBRCRisk','WomanUnderAbsoluteBRCRisk'). +subClassOf('WomanUnderModeratelyIncreasedBRCRisk','WomanUnderIncreasedBRCRisk'). +subClassOf('WomanUnderModeratelyReducedBRCRisk','WomanUnderReducedBRCRisk'). +subClassOf('WomanUnderRelativeBRCRisk','Woman'). +subClassOf('WomanUnderShortTermBRCRisk','WomanUnderAbsoluteBRCRisk'). +subClassOf('WomanUnderStronglyIncreasedBRCRisk','WomanUnderIncreasedBRCRisk'). +subClassOf('WomanUnderStronglyReducedBRCRisk','WomanUnderReducedBRCRisk'). +subClassOf('WomanUnderWeakelyIncreasedBRCRisk','WomanUnderIncreasedBRCRisk'). +subClassOf('WomanUnderWeakelyReducedBRCRisk','WomanUnderReducedBRCRisk'). +subClassOf('WomanWithAtypicalHyperplasia','Woman'). +subClassOf('WomanWithBRCA1Mutation','WomanUnderLifetimeBRCRisk'). +subClassOf('WomanWithBRCAMutation','WomanWithRiskFactors'). +subClassOf('WomanWithBRCAMutation','WomanUnderLifetimeBRCRisk'). +subClassOf('WomanWithBRCAMutation','WomanUnderLifetimeBRCRisk'). +subClassOf('WomanWithCarcinomaInSitu','Woman'). +subClassOf('WomanWithEarlyFirstChild','Woman'). +subClassOf('WomanWithEarlyFirstPeriodAndLateMenopause','Woman'). +subClassOf('WomanWithEarlyMenopause','PostmenopausalWoman'). +subClassOf('WomanWithEarlyMenopause','Woman'). +subClassOf('WomanWithFamilyBRCHistory','Woman'). +subClassOf('WomanWithHighBoneDensity','Woman'). +subClassOf('WomanWithHighBreastDensity','Woman'). +subClassOf('WomanWithHighLevelOfEstrogen','Woman'). +subClassOf('WomanWithImmediateRelativesBRCAffected','Woman'). +subClassOf('WomanWithLateFirstChild','Woman'). +subClassOf('WomanWithLateMenopause','PostmenopausalWoman'). +subClassOf('WomanWithLateMenopause','Woman'). +subClassOf('WomanWithMotherAffectedAfterAge60','WomanWithMotherBRCAffected'). +subClassOf('WomanWithMotherAffectedBeforeAge60','WomanWithMotherBRCAffected'). +subClassOf('WomanWithMotherBRCAffected','Woman'). +subClassOf('WomanWithRiskFactors','Woman'). +subClassOf('WomanWithUsualHyperplasia','Woman'). +subClassOf('WomanWithoutBreastfeeding','Woman'). +subClassOf('WomanWithoutChildren','Woman'). +subClassOf('WomanAgedUnder20','WomanUnderShortTermBRCRisk'). +subClassOf('WomanAged3040','WomanUnderShortTermBRCRisk'). +subClassOf('WomanAged6070','WomanUnderShortTermBRCRisk'). +subClassOf('WomanWithMotherAffectedBeforeAge60','WomanUnderModeratelyIncreasedBRCRisk'). +subClassOf('WomanWithLateMenopause','WomanUnderModeratelyIncreasedBRCRisk'). +subClassOf('PostmenopausalWomanTakingEstrogen','WomanUnderModeratelyIncreasedBRCRisk'). +subClassOf('PostmenopausalWomanTakingProgestin','WomanUnderModeratelyIncreasedBRCRisk'). +subClassOf('WomanHavingFirstPeriodBefore12','WomanWithHighLevelOfEstrogen'). + +subPropertyOf('hasAge','hasRiskFactor'). +subPropertyOf('willDevelopInLongTerm','willDevelop'). +subPropertyOf('willDevelopInShortTerm','willDevelop'). + +functionalProperty('hasAge'). +functionalProperty('hasGender'). +functionalProperty('riskCategory'). +functionalProperty('riskOf'). +functionalProperty('riskType'). +functionalProperty('increaseFactor'). + +propertyDomain('hasAge','Person'). +propertyDomain('hasGender','Person'). +propertyDomain('hasRace','Person'). +propertyDomain('hasRisk','Person'). +propertyDomain('hasRiskFactor','Person'). +propertyDomain('relatedToDisease','RiskFactor'). +propertyDomain('riskCategory','Risk'). +propertyDomain('riskOf','RiskType'). +propertyDomain('riskType','Risk'). +propertyDomain('willDevelop','Person'). +propertyDomain('willDevelopInLongTerm','Person'). +propertyDomain('willDevelopInShortTerm','Person'). +propertyDomain('increaseFactor','RelativeRiskCategory'). + +propertyRange('hasAge','Age'). +propertyRange('hasGender','Gender'). +propertyRange('hasRace','Ethnicity'). +propertyRange('hasRisk','Risk'). +propertyRange('hasRiskFactor','RiskFactor'). +propertyRange('relatedToDisease','Disease'). +propertyRange('riskCategory','RiskCategory'). +propertyRange('riskOf','Disease'). +propertyRange('riskType','RiskType'). +propertyRange('willDevelop','Disease'). +propertyRange('willDevelopInLongTerm','Disease'). +propertyRange('willDevelopInShortTerm','Disease'). +propertyRange('increaseFactor','http://www.w3.org/2001/XMLSchema#decimal'). + +annotationAssertion('disponte:probability',subClassOf('AshkenaziJewishWoman','WomanWithBRCAMutation'),literal('0.025')). +annotationAssertion('disponte:probability',subClassOf('PostmenopausalWomanTakingEstrogen','WomanUnderWeakelyIncreasedBRCRisk'),literal('0.67')). +annotationAssertion('disponte:probability',subClassOf('PostmenopausalWomanTakingTestosterone','subClassOf WomanUnderWeakelyIncreasedBRCRisk'),literal('0.85')). +annotationAssertion('disponte:probability',subClassOf('PostmenopausalWomanTakingEstrogenAndProgestin','WomanUnderWeakelyIncreasedBRCRisk'),literal('0.35')). +annotationAssertion('disponte:probability',subClassOf('WomanWithMotherAffectedAfterAge60','WomanUnderWeakelyIncreasedBRCRisk'),literal('1.0')). +annotationAssertion('disponte:probability',subClassOf('WomanWithBRCAMutation','WomanUnderLifetimeBRCRisk'),literal('0.85')). +annotationAssertion('disponte:probability',subClassOf('PostmenopausalWomanTakingProgestin','WomanUnderWeakelyIncreasedBRCRisk'),literal('0.13')). +annotationAssertion('disponte:probability',subClassOf('WomanWithBRCA1Mutation','WomanUnderLifetimeBRCRisk'),literal('0.8')). +annotationAssertion('disponte:probability',subClassOf('PostmenopausalWomanTakingEstrogenAndTestosterone','WomanUnderWeakelyIncreasedBRCRisk'),literal('0.21')). +annotationAssertion('disponte:probability',subClassOf('Woman','WomanUnderLifetimeBRCRisk'),literal('0.123')). + +% Individuals +classAssertion('Woman','Helen'). +classAssertion('WomanTakingEstrogen','Helen'). +classAssertion('PostmenopausalWoman','Helen'). +classAssertion('WomanAged3040','Helen'). + +/* + % Declarations -optional- +objectProperty('hasAge'). +objectProperty('hasGender'). +objectProperty('hasRace'). +objectProperty('hasRisk'). +objectProperty('hasRiskFactor'). +objectProperty('relatedToDisease'). +objectProperty('riskCategory'). +objectProperty('riskOf'). +objectProperty('riskType'). +objectProperty('willDevelop'). +objectProperty('willDevelopInLongTerm'). +objectProperty('willDevelopInShortTerm'). +dataProperty('increaseFactor'). +dataProperty('http://www.w3.org/2006/12/owl11#maxExclusive'). +dataProperty('http://www.w3.org/2006/12/owl11#minExclusive'). +annotationProperty('http://www.w3.org/2000/01/rdf-schema#label'). +annotationProperty('http://www.w3.org/2000/01/rdf-schema#comment'). +annotationProperty('https://sites.google.com/a/unife.it/ml/bundle#probability'). +class('WomanTakingEstrogen'). +class('WomanTakingProgestin'). +class('AbsoluteBRCRisk'). +class('AbsoluteRiskCategory'). +class('AfricanAmerican'). +class('AfricanAmericanWoman'). +class('AfterMenopause'). +class('Age'). +class('Age2030'). +class('Age3040'). +class('Age4050'). +class('Age5060'). +class('Age50Plus'). +class('Age6070'). +class('Age70Plus'). +class('AgeUnder20'). +class('AgeUnder50'). +class('Alcohol'). +class('AshkenaziJew'). +class('AshkenaziJewishWoman'). +class('AtypicalHyperplasia'). +class('BRCA1Mutation'). +class('BRCA2Mutation'). +class('BRCAMutation'). +class('BRCRType'). +class('BRCRisk'). +class('BeforeMenopause'). +class('BenignBreastDisease'). +class('BirthControlPills'). +class('BreastCancer'). +class('Cancer'). +class('CarcinomaInSitu'). +class('Disease'). +class('EarlyFirstChild'). +class('EarlyMenopause'). +class('Estrogen'). +class('EstrogenProgestin'). +class('EstrogenTestosterone'). +class('Ethnicity'). +class('FamilyCancerHistory'). +class('Female'). +class('FirstPeriodBefore12'). +class('Gender'). +class('HighBoneDensity'). +class('HighBreastDensity'). +class('HighLevelOfEstrogen'). +class('IncreasedBRCRisk'). +class('IncreasedRiskCategory'). +class('InferredFactor'). +class('KnownFactor'). +class('LackOfExercise'). +class('LateFirstChild'). +class('LateMenopause'). +class('LifetimeBRCRisk'). +class('Male'). +class('ModerateDecrease'). +class('ModerateIncrease'). +class('ModeratelyIncreasedBRCRisk'). +class('ModeratelyReducedBRCRisk'). +class('MotherAffected'). +class('MotherAffectedAfterAge60'). +class('MotherAffectedBeforeAge60'). +class('NoBreastfeeding'). +class('NoChildren'). +class('Overweight'). +class('OverweightWoman'). +class('Person'). +class('PersonUnderRisk'). +class('PersonalBRCHistory'). +class('PostmenopausalHormones'). +class('PostmenopausalWoman'). +class('PostmenopausalWomanTakingEstrogen'). +class('PostmenopausalWomanTakingEstrogenAndProgestin'). +class('PostmenopausalWomanTakingEstrogenAndTestosterone'). +class('PostmenopausalWomanTakingProgestin'). +class('PostmenopausalWomanTakingTestosterone'). +class('PostmenopausalWomanWithHighLevelOfEstrogen'). +class('PremenopausalWoman'). +class('Progestin'). +class('RadiationExposureDuringYouth'). +class('ReducedBRCRisk'). +class('ReducedRiskCategory'). +class('RelativeBRCRisk'). +class('RelativeRiskCategory'). +class('Risk'). +class('RiskCategory'). +class('RiskFactor'). +class('RiskType'). +class('SeniorWomanWithMotherBRCAffected'). +class('ShortTermBRCRisk'). +class('StrongDecrease'). +class('StrongIncrease'). +class('StronglyIncreasedBRCRisk'). +class('StronglyReducedBRCRisk'). +class('Testosterone'). +class('TwoImmediateRelativesAffected'). +class('UsualHyperplasia'). +class('WeakDecrease'). +class('WeakIncrease'). +class('WeakelyIncreasedBRCRisk'). +class('WeakelyReducedBRCRisk'). +class('Woman'). +class('WomanAbusingAlcohol'). +class('WomanAged2030'). +class('WomanAged3040'). +class('WomanAged4050'). +class('WomanAged5060'). +class('WomanAged50Plus'). +class('WomanAged6070'). +class('WomanAged70Plus'). +class('WomanAgedUnder20'). +class('WomanAgedUnder50'). +class('WomanExposedToRadiationDuringYouth'). +class('WomanHavingFirstPeriodBefore12'). +class('WomanLackingExercise'). +class('WomanTakingBirthControlPills'). +class('WomanTakingPostmenopausalHormones'). +class('WomanUnderAbsoluteBRCRisk'). +class('WomanUnderBRCRisk'). +class('WomanUnderIncreasedBRCRisk'). +class('WomanUnderLifetimeBRCRisk'). +class('WomanUnderModeratelyIncreasedBRCRisk'). +class('WomanUnderModeratelyReducedBRCRisk'). +class('WomanUnderReducedBRCRisk'). +class('WomanUnderRelativeBRCRisk'). +class('WomanUnderShortTermBRCRisk'). +class('WomanUnderStronglyIncreasedBRCRisk'). +class('WomanUnderStronglyReducedBRCRisk'). +class('WomanUnderWeakelyIncreasedBRCRisk'). +class('WomanUnderWeakelyReducedBRCRisk'). +class('WomanWithAtypicalHyperplasia'). +class('WomanWithBRCA1Mutation'). +class('WomanWithBRCA2Mutation'). +class('WomanWithBRCAMutation'). +class('WomanWithCarcinomaInSitu'). +class('WomanWithEarlyFirstChild'). +class('WomanWithEarlyFirstPeriodAndLateMenopause'). +class('WomanWithEarlyMenopause'). +class('WomanWithFamilyBRCHistory'). +class('WomanWithHighBoneDensity'). +class('WomanWithHighBreastDensity'). +class('WomanWithHighLevelOfEstrogen'). +class('WomanWithImmediateRelativesBRCAffected'). +class('WomanWithLateFirstChild'). +class('WomanWithLateMenopause'). +class('WomanWithMotherAffectedAfterAge60'). +class('WomanWithMotherAffectedBeforeAge60'). +class('WomanWithMotherBRCAffected'). +class('WomanWithPersonalBRCHistory'). +class('WomanWithRiskFactors'). +class('WomanWithUsualHyperplasia'). +class('WomanWithoutBreastfeeding'). +class('WomanWithoutChildren'). +class('http://www.w3.org/2002/07/owl#Thing'). +*/ diff --git a/examples/trill/DBPedia.pl b/examples/trill/DBPedia.pl new file mode 100644 index 0000000..37f85e3 --- /dev/null +++ b/examples/trill/DBPedia.pl @@ -0,0 +1,1263 @@ +:-use_module(library(trill)). + +:-trill. + +/* +An extract of the DBPedia ontology, it contains structured information from Wikipedia. +http://dbpedia.org/ +*/ + +/** <examples> + +?- prob_sub_class('Place','PopulatedPlace',Prob). +?- sub_class('Place','PopulatedPlace',ListExpl). + +*/ + +owl_rdf('<?xml version="1.0"?> + +<!DOCTYPE rdf:RDF [ + <!ENTITY owl "http://www.w3.org/2002/07/owl#" > + <!ENTITY Work "http://dbpedia.org/ontology/Work/" > + <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > + <!ENTITY Lake "http://dbpedia.org/ontology/Lake/" > + <!ENTITY Drug "http://dbpedia.org/ontology/Drug/" > + <!ENTITY Canal "http://dbpedia.org/ontology/Canal/" > + <!ENTITY Bridge "http://dbpedia.org/ontology/Bridge/" > + <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" > + <!ENTITY Stream "http://dbpedia.org/ontology/Stream/" > + <!ENTITY School "http://dbpedia.org/ontology/School/" > + <!ENTITY Weapon "http://dbpedia.org/ontology/Weapon/" > + <!ENTITY Person "http://dbpedia.org/ontology/Person/" > + <!ENTITY Rocket "http://dbpedia.org/ontology/Rocket/" > + <!ENTITY Planet "http://dbpedia.org/ontology/Planet/" > + <!ENTITY Software "http://dbpedia.org/ontology/Software/" > + <!ENTITY Building "http://dbpedia.org/ontology/Building/" > + <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > + <!ENTITY Mountain "http://dbpedia.org/ontology/Mountain/" > + <!ENTITY GrandPrix "http://dbpedia.org/ontology/GrandPrix/" > + <!ENTITY Astronaut "http://dbpedia.org/ontology/Astronaut/" > + <!ENTITY Automobile "http://dbpedia.org/ontology/Automobile/" > + <!ENTITY Spacecraft "http://dbpedia.org/ontology/Spacecraft/" > + <!ENTITY wgs84_pos "http://www.w3.org/2003/01/geo/wgs84_pos#" > + <!ENTITY LunarCrater "http://dbpedia.org/ontology/LunarCrater/" > + <!ENTITY SpaceShuttle "http://dbpedia.org/ontology/SpaceShuttle/" > + <!ENTITY SpaceStation "http://dbpedia.org/ontology/SpaceStation/" > + <!ENTITY SpaceMission "http://dbpedia.org/ontology/SpaceMission/" > + <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > + <!ENTITY PopulatedPlace "http://dbpedia.org/ontology/PopulatedPlace/" > + <!ENTITY Infrastructure "http://dbpedia.org/ontology/Infrastructure/" > + <!ENTITY AutomobileEngine "http://dbpedia.org/ontology/AutomobileEngine/" > + <!ENTITY ChemicalCompound "http://dbpedia.org/ontology/ChemicalCompound/" > + <!ENTITY disponte "https://sites.google.com/a/unife.it/ml/disponte#" > + <!ENTITY MeanOfTransportation "http://dbpedia.org/ontology/MeanOfTransportation/" > + <!ENTITY GeopoliticalOrganisation "http://dbpedia.org/ontology/GeopoliticalOrganisation/" > +]> + + +<rdf:RDF xmlns="http://dbpedia.org/ontology/" + xml:base="http://dbpedia.org/ontology/" + xmlns:Software="http://dbpedia.org/ontology/Software/" + xmlns:Astronaut="http://dbpedia.org/ontology/Astronaut/" + xmlns:SpaceStation="http://dbpedia.org/ontology/SpaceStation/" + xmlns:Building="http://dbpedia.org/ontology/Building/" + xmlns:Bridge="http://dbpedia.org/ontology/Bridge/" + xmlns:Work="http://dbpedia.org/ontology/Work/" + xmlns:GrandPrix="http://dbpedia.org/ontology/GrandPrix/" + xmlns:Spacecraft="http://dbpedia.org/ontology/Spacecraft/" + xmlns:MeanOfTransportation="http://dbpedia.org/ontology/MeanOfTransportation/" + xmlns:Infrastructure="http://dbpedia.org/ontology/Infrastructure/" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#" + xmlns:PopulatedPlace="http://dbpedia.org/ontology/PopulatedPlace/" + xmlns:Drug="http://dbpedia.org/ontology/Drug/" + xmlns:ChemicalCompound="http://dbpedia.org/ontology/ChemicalCompound/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:disponte="https://sites.google.com/a/unife.it/ml/disponte#" + xmlns:SpaceShuttle="http://dbpedia.org/ontology/SpaceShuttle/" + xmlns:Lake="http://dbpedia.org/ontology/Lake/" + xmlns:LunarCrater="http://dbpedia.org/ontology/LunarCrater/" + xmlns:School="http://dbpedia.org/ontology/School/" + xmlns:Rocket="http://dbpedia.org/ontology/Rocket/" + xmlns:wgs84_pos="http://www.w3.org/2003/01/geo/wgs84_pos#" + xmlns:GeopoliticalOrganisation="http://dbpedia.org/ontology/GeopoliticalOrganisation/" + xmlns:AutomobileEngine="http://dbpedia.org/ontology/AutomobileEngine/" + xmlns:Automobile="http://dbpedia.org/ontology/Automobile/" + xmlns:Canal="http://dbpedia.org/ontology/Canal/" + xmlns:SpaceMission="http://dbpedia.org/ontology/SpaceMission/" + xmlns:Planet="http://dbpedia.org/ontology/Planet/" + xmlns:Stream="http://dbpedia.org/ontology/Stream/" + xmlns:Weapon="http://dbpedia.org/ontology/Weapon/" + xmlns:xsd="http://www.w3.org/2001/XMLSchema#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:Person="http://dbpedia.org/ontology/Person/" + xmlns:Mountain="http://dbpedia.org/ontology/Mountain/"> + <owl:Ontology rdf:about="http://dbpedia.org/ontology/"> + <owl:versionInfo xml:lang="en">Version 3.5</owl:versionInfo> + </owl:Ontology> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Annotation properties + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- https://sites.google.com/a/unife.it/ml/disponte#probability --> + + <owl:AnnotationProperty rdf:about="&disponte;probability"/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Classes + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://dbpedia.org/ontology/Actor --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Actor"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/AdministrativeRegion --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/AdministrativeRegion"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/AdultActor --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/AdultActor"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Airport --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Airport"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Album --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Album"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Ambassador --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Ambassador"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/AmericanFootballPlayer --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/AmericanFootballPlayer"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Architect --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Architect"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Artist --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Artist"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Astronaut --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Astronaut"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Athlete --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Athlete"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/BadmintonPlayer --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/BadmintonPlayer"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/BaseballPlayer --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/BaseballPlayer"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/BasketballPlayer --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/BasketballPlayer"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/BodyOfWater --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/BodyOfWater"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Book --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Book"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Boxer --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Boxer"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Bridge --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Bridge"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/BritishRoyalty --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/BritishRoyalty"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Building --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Building"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Canal --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Canal"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Cardinal --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Cardinal"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Cave --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Cave"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Chancellor --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Chancellor"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/ChristianBishop --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/ChristianBishop"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/City --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/City"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Settlement"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_A0_"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_A0_144_"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_144_"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Cleric --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Cleric"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/CollegeCoach --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/CollegeCoach"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Comedian --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Comedian"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/ComicsCharacter --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/ComicsCharacter"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/ComicsCreator --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/ComicsCreator"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Congressman --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Congressman"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Continent --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Continent"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Country --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Country"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Cricketer --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Cricketer"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Criminal --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Criminal"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Cyclist --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Cyclist"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/EurovisionSongContestEntry --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/EurovisionSongContestEntry"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/FictionalCharacter --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/FictionalCharacter"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/FigureSkater --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/FigureSkater"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Film --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Film"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/FormulaOneRacer --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/FormulaOneRacer"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/GaelicGamesPlayer --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/GaelicGamesPlayer"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Governor --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Governor"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/GridironFootballPlayer --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/GridironFootballPlayer"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/HistoricPlace --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/HistoricPlace"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Hospital --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Hospital"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/IceHockeyPlayer --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/IceHockeyPlayer"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Island --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Island"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Journalist --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Journalist"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Judge --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Judge"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Lake --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Lake"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/LaunchPad --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/LaunchPad"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Lighthouse --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Lighthouse"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/LunarCrater --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/LunarCrater"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Magazine --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Magazine"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Mayor --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Mayor"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/MemberOfParliament --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/MemberOfParliament"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/MilitaryPerson --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/MilitaryPerson"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Model --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Model"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Monarch --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Monarch"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Monument --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Monument"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Mountain --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Mountain"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/MountainRange --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/MountainRange"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Musical --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Musical"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/MusicalArtist --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/MusicalArtist"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/MusicalWork --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/MusicalWork"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/NascarDriver --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/NascarDriver"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/NationalCollegiateAthleticAssociationAthlete --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/NationalCollegiateAthleticAssociationAthlete"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Newspaper --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Newspaper"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/OfficeHolder --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/OfficeHolder"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Park --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Park"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Person --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Person"/> + + + + <!-- http://dbpedia.org/ontology/Philosopher --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Philosopher"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Place --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Place"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Settlement"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_A0_"/> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.31</disponte:probability> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Place"/> + <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/A73_A0_"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.71</disponte:probability> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Place"/> + <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.32</disponte:probability> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Place"/> + <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/Settlement"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + + + + <!-- http://dbpedia.org/ontology/PlayboyPlaymate --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/PlayboyPlaymate"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/PokerPlayer --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/PokerPlayer"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Politician --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Politician"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Pope --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Pope"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/PopulatedPlace --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/PopulatedPlace"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Settlement"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_144_"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/President --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/President"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/PrimeMinister --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/PrimeMinister"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/ProtectedArea --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/ProtectedArea"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/River --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/River"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/RugbyPlayer --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/RugbyPlayer"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Saint --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Saint"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Scientist --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Scientist"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Senator --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Senator"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Settlement --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Settlement"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.11</disponte:probability> + <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/Place"/> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Settlement"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.81</disponte:probability> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Settlement"/> + <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/A0_144_"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.41</disponte:probability> + <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Settlement"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + + + + <!-- http://dbpedia.org/ontology/ShoppingMall --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/ShoppingMall"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Single --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Single"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/SiteOfSpecialScientificInterest --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/SiteOfSpecialScientificInterest"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/SkiArea --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/SkiArea"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Skyscraper --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Skyscraper"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/SoccerManager --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/SoccerManager"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/SoccerPlayer --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/SoccerPlayer"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Software --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Software"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Song --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Song"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Stadium --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Stadium"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Station --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Station"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Stream --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Stream"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/TelevisionEpisode --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/TelevisionEpisode"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/TelevisionShow --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/TelevisionShow"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/TennisPlayer --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/TennisPlayer"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Town --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Town"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Settlement"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_A0_"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_A0_144_"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_144_"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Valley --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Valley"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/VideoGame --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/VideoGame"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Village --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Village"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Settlement"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_A0_"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_A0_144_"/> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_144_"/> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.23</disponte:probability> + <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Village"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.9</disponte:probability> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Village"/> + <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/A0_144_"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.32</disponte:probability> + <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/Place"/> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Village"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.21</disponte:probability> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Village"/> + <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/A73_A0_144_"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.3</disponte:probability> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Village"/> + <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/A73_A0_"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.91</disponte:probability> + <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/Settlement"/> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Village"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.67</disponte:probability> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Village"/> + <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/A73_144_"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + + + + <!-- http://dbpedia.org/ontology/VoiceActor --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/VoiceActor"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/WineRegion --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/WineRegion"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Work --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Work"/> + + + + <!-- http://dbpedia.org/ontology/WorldHeritageSite --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/WorldHeritageSite"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Wrestler --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Wrestler"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/Writer --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/Writer"> + <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/> + </owl:Class> + + + + <!-- http://dbpedia.org/ontology/A0_144_ --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/A0_144_"> + <owl:equivalentClass> + <owl:Class> + <owl:intersectionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://dbpedia.org/ontology/Place"/> + <rdf:Description rdf:about="http://dbpedia.org/ontology/PopulatedPlace"/> + </owl:intersectionOf> + </owl:Class> + </owl:equivalentClass> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.71</disponte:probability> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/A0_144_"/> + <owl:annotatedProperty rdf:resource="&owl;equivalentClass"/> + <owl:annotatedTarget> + <owl:Class> + <owl:intersectionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://dbpedia.org/ontology/Place"/> + <rdf:Description rdf:about="http://dbpedia.org/ontology/PopulatedPlace"/> + </owl:intersectionOf> + </owl:Class> + </owl:annotatedTarget> + </owl:Axiom> + + + + <!-- http://dbpedia.org/ontology/A73_A0_ --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/A73_A0_"> + <owl:equivalentClass> + <owl:Class> + <owl:intersectionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://dbpedia.org/ontology/PopulatedPlace"/> + <rdf:Description rdf:about="http://dbpedia.org/ontology/Settlement"/> + </owl:intersectionOf> + </owl:Class> + </owl:equivalentClass> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.7</disponte:probability> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/A73_A0_"/> + <owl:annotatedProperty rdf:resource="&owl;equivalentClass"/> + <owl:annotatedTarget> + <owl:Class> + <owl:intersectionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://dbpedia.org/ontology/PopulatedPlace"/> + <rdf:Description rdf:about="http://dbpedia.org/ontology/Settlement"/> + </owl:intersectionOf> + </owl:Class> + </owl:annotatedTarget> + </owl:Axiom> + + + + <!-- http://dbpedia.org/ontology/A73_A0_144_ --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/A73_A0_144_"> + <owl:equivalentClass> + <owl:Class> + <owl:intersectionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://dbpedia.org/ontology/Place"/> + <rdf:Description rdf:about="http://dbpedia.org/ontology/PopulatedPlace"/> + <rdf:Description rdf:about="http://dbpedia.org/ontology/Settlement"/> + </owl:intersectionOf> + </owl:Class> + </owl:equivalentClass> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.81</disponte:probability> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/A73_A0_144_"/> + <owl:annotatedProperty rdf:resource="&owl;equivalentClass"/> + <owl:annotatedTarget> + <owl:Class> + <owl:intersectionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://dbpedia.org/ontology/Place"/> + <rdf:Description rdf:about="http://dbpedia.org/ontology/PopulatedPlace"/> + <rdf:Description rdf:about="http://dbpedia.org/ontology/Settlement"/> + </owl:intersectionOf> + </owl:Class> + </owl:annotatedTarget> + </owl:Axiom> + + + + <!-- http://dbpedia.org/ontology/A73_144_ --> + + <owl:Class rdf:about="http://dbpedia.org/ontology/A73_144_"> + <owl:equivalentClass> + <owl:Class> + <owl:intersectionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://dbpedia.org/ontology/Place"/> + <rdf:Description rdf:about="http://dbpedia.org/ontology/Settlement"/> + </owl:intersectionOf> + </owl:Class> + </owl:equivalentClass> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.51</disponte:probability> + <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/A73_144_"/> + <owl:annotatedProperty rdf:resource="&owl;equivalentClass"/> + <owl:annotatedTarget> + <owl:Class> + <owl:intersectionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://dbpedia.org/ontology/Place"/> + <rdf:Description rdf:about="http://dbpedia.org/ontology/Settlement"/> + </owl:intersectionOf> + </owl:Class> + </owl:annotatedTarget> + </owl:Axiom> +</rdf:RDF> + + + +<!-- Generated by the OWL API (version 3.4.2) http://owlapi.sourceforge.net --> +'). diff --git a/examples/trill/biopaxLevel3.pl b/examples/trill/biopaxLevel3.pl new file mode 100644 index 0000000..6e9b47f --- /dev/null +++ b/examples/trill/biopaxLevel3.pl @@ -0,0 +1,3066 @@ +:-use_module(library(trill)). + +:-trill. + +/* +Model of metabolic pathways. +http://www.biopax.org/ +*/ + +/** <examples> + +?- prob_sub_class('TransportWithBiochemicalReaction','Entity',Prob). +?- sub_class('TransportWithBiochemicalReaction','Entity',ListExpl). + +*/ + +owl_rdf('<?xml version="1.0"?> + +<!DOCTYPE rdf:RDF [ + <!ENTITY owl "http://www.w3.org/2002/07/owl#" > + <!ENTITY swrl "http://www.w3.org/2003/11/swrl#" > + <!ENTITY swrlb "http://www.w3.org/2003/11/swrlb#" > + <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > + <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > + <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > + <!ENTITY protege "http://protege.stanford.edu/plugins/owl/protege#" > + <!ENTITY disponte "https://sites.google.com/a/unife.it/ml/disponte#" > + <!ENTITY xsp "http://www.owl-ontologies.com/2005/08/07/xsp.owl#" > +]> + + +<rdf:RDF xmlns="http://www.biopax.org/release/biopax-level3.owl#" + xml:base="http://www.biopax.org/release/biopax-level3.owl" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:swrl="http://www.w3.org/2003/11/swrl#" + xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#" + xmlns:xsp="http://www.owl-ontologies.com/2005/08/07/xsp.owl#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:xsd="http://www.w3.org/2001/XMLSchema#" + xmlns:swrlb="http://www.w3.org/2003/11/swrlb#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:disponte="https://sites.google.com/a/unife.it/ml/disponte#"> + <owl:Ontology rdf:about="http://www.biopax.org/release/biopax-level3.owl"> + <rdfs:comment rdf:datatype="&xsd;string">This is version 1.0 of the BioPAX Level 3 ontology. The goal of the BioPAX group is to develop a common exchange format for biological pathway data. More information is available at http://www.biopax.org. This ontology is freely available under the LGPL (http://www.gnu.org/copyleft/lesser.html).</rdfs:comment> + </owl:Ontology> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Annotation properties + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- https://sites.google.com/a/unife.it/ml/disponte#probability --> + + <owl:AnnotationProperty rdf:about="&disponte;probability"/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Object Properties + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#absoluteRegion --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#absoluteRegion"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">Absolute location as defined by the referenced sequence database record. E.g. an operon has a absolute region on the DNA molecule referenced by the UnificationXref.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + <rdfs:domain> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/> + </owl:unionOf> + </owl:Class> + </rdfs:domain> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#bindsTo --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#bindsTo"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdf:type rdf:resource="&owl;InverseFunctionalProperty"/> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">A binding feature represents a "half" of the bond between two entities. This property points to another binding feature which represents the other half. The bond can be covalent or non-covalent.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BindingFeature"/> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BindingFeature"/> + <owl:inverseOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#bindsTo"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#cellType --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#cellType"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment xml:lang="en">A cell type, e.g. 'HeLa'. This should reference a term in a controlled vocabulary of cell types. Best practice is to refer to OBO Cell Ontology. http://www.obofoundry.org/cgi-bin/detail.cgi?id=cell</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BioSource"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#CellVocabulary"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#cellularLocation --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#cellularLocation"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">A cellular location, e.g. 'cytoplasm'. This should reference a term in the Gene Ontology Cellular Component ontology. The location referred to by this property should be as specific as is known. If an interaction is known to occur in multiple locations, separate interactions (and physicalEntities) must be created for each different location. If the location of a participant in a complex is unspecified, it may be assumed to be the same location as that of the complex. + + A molecule in two different cellular locations are considered two different physical entities.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#CellularLocationVocabulary"/> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#cofactor --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#cofactor"> + <rdfs:comment xml:lang="en">Any cofactor(s) or coenzyme(s) required for catalysis of the conversion by the enzyme. COFACTOR is a sub-property of PARTICIPANTS.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Catalysis"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#component --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#component"> + <rdf:type rdf:resource="&owl;InverseFunctionalProperty"/> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Complex"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#componentStoichiometry --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#componentStoichiometry"> + <rdfs:comment rdf:datatype="&xsd;string">The stoichiometry of components in a complex</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Complex"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#confidence --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#confidence"> + <rdfs:comment rdf:datatype="&xsd;string">Confidence in the containing instance. Usually a statistical measure.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#controlled --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#controlled"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment xml:lang="en">The entity that is controlled, e.g., in a biochemical reaction, the reaction is controlled by an enzyme. CONTROLLED is a sub-property of PARTICIPANTS.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/> + <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/> + <rdfs:range> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Interaction"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Pathway"/> + </owl:unionOf> + </owl:Class> + </rdfs:range> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#controller --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#controller"> + <rdfs:comment xml:lang="en">The controlling entity, e.g., in a biochemical reaction, an enzyme is the controlling entity of the reaction. CONTROLLER is a sub-property of PARTICIPANTS.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/> + <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/> + <rdfs:range> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Pathway"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + </owl:unionOf> + </owl:Class> + </rdfs:range> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#dataSource --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#dataSource"> + <rdfs:comment rdf:datatype="&xsd;string">A free text description of the source of this data, e.g. a database or person name. This property should be used to describe the source of the data. This is meant to be used by databases that export their data to the BioPAX format or by systems that are integrating data from multiple sources. The granularity of use (specifying the data source in many or few instances) is up to the user. It is intended that this property report the last data source, not all data sources that the data has passed through from creation.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#deltaG --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#deltaG"> + <rdfs:comment rdf:datatype="&xsd;string">For biochemical reactions, this property refers to the standard transformed Gibbs energy change for a reaction written in terms of biochemical reactants (sums of species), delta-G + +Since Delta-G can change based on multiple factors including ionic strength and temperature a reaction can have multiple DeltaG values.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#entityFeature --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#entityFeature"> + <rdf:type rdf:resource="&owl;InverseFunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">Variable features that are observed for this entity - such as known PTM or methylation sites and non-covalent bonds.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#entityReference --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#entityReference"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">Reference entity for this physical entity.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <rdfs:domain> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Dna"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Protein"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Rna"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/> + </owl:unionOf> + </owl:Class> + </rdfs:domain> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#entityReferenceType --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#entityReferenceType"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">A controlled vocabulary term that is used to describe the type of grouping such as homology or functional group.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReferenceTypeVocabulary"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#evidence --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#evidence"> + <rdfs:comment rdf:datatype="&xsd;string">Scientific evidence supporting the existence of the entity as described.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/> + <rdfs:domain> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Entity"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/> + </owl:unionOf> + </owl:Class> + </rdfs:domain> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#evidenceCode --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#evidenceCode"> + <rdfs:comment rdf:datatype="&xsd;string">A pointer to a term in an external controlled vocabulary, such as the GO, PSI-MI or BioCyc evidence codes, that describes the nature of the support, such as 'traceable author statement' or 'yeast two-hybrid'.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EvidenceCodeVocabulary"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#experimentalFeature --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#experimentalFeature"> + <rdfs:comment rdf:datatype="&xsd;string">A feature of the experimental form of the participant of the interaction, such as a protein tag. It is not expected to occur in vivo or be necessary for the interaction.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#experimentalForm --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#experimentalForm"> + <rdfs:comment rdf:datatype="&xsd;string">The experimental forms associated with an evidence instance.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#experimentalFormDescription --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#experimentalFormDescription"> + <rdfs:comment rdf:datatype="&xsd;string">Descriptor of this experimental form from a controlled vocabulary.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalFormVocabulary"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#experimentalFormEntity --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#experimentalFormEntity"> + <rdfs:comment rdf:datatype="&xsd;string">The gene or physical entity that this experimental form describes.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/> + <rdfs:range> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Gene"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + </owl:unionOf> + </owl:Class> + </rdfs:range> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#feature --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#feature"> + <rdfs:comment rdf:datatype="&xsd;string">Sequence features of the owner physical entity.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#featureLocation --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#featureLocation"> + <rdfs:comment rdf:datatype="&xsd;string">Location of the feature on the sequence of the interactor. One feature may have more than one location, used e.g. for features which involve sequence positions close in the folded, three-dimensional state of a protein, but non-continuous along the sequence.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#featureLocationType --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#featureLocationType"> + <rdfs:comment rdf:datatype="&xsd;string">A controlled vocabulary term describing the type of the sequence location such as C-Terminal or SH2 Domain.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#interactionScore --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#interactionScore"> + <rdfs:comment rdf:datatype="&xsd;string">The score of an interaction e.g. a genetic interaction score.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#GeneticInteraction"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#interactionType --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#interactionType"> + <rdfs:comment rdf:datatype="&xsd;string">External controlled vocabulary annotating the interaction type, for example "phosphorylation". This is annotation useful for e.g. display on a web page or database searching, but may not be suitable for other computing tasks, like reasoning.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#kEQ --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#kEQ"> + <rdfs:comment rdf:datatype="&xsd;string">This quantity is dimensionless and is usually a single number. The measured equilibrium constant for a biochemical reaction, encoded by the slot KEQ, is actually the apparent equilibrium constant, K'. Concentrations in the equilibrium constant equation refer to the total concentrations of all forms of particular biochemical reactants. For example, in the equilibrium constant equation for the biochemical reaction in which ATP is hydrolyzed to ADP and inorganic phosphate: + +K' = [ADP][P<sub>i</sub>]/[ATP], + +The concentration of ATP refers to the total concentration of all of the following species: + +[ATP] = [ATP<sup>4-</sup>] + [HATP<sup>3-</sup>] + [H<sub>2</sub>ATP<sup>2-</sup>] + [MgATP<sup>2-</sup>] + [MgHATP<sup>-</sup>] + [Mg<sub>2</sub>ATP]. + +The apparent equilibrium constant is formally dimensionless, and can be kept so by inclusion of as many of the terms (1 mol/dm<sup>3</sup>) in the numerator or denominator as necessary. It is a function of temperature (T), ionic strength (I), pH, and pMg (pMg = -log<sub>10</sub>[Mg<sup>2+</sup>]). Therefore, these quantities must be specified to be precise, and values for KEQ for biochemical reactions may be represented as 5-tuples of the form (K' T I pH pMg). This property may have multiple values, representing different measurements for K' obtained under the different experimental conditions listed in the 5-tuple. (This definition adapted from EcoCyc)</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#left --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#left"> + <rdfs:comment rdf:datatype="&xsd;string">The participants on the left side of the conversion interaction. Since conversion interactions may proceed in either the left-to-right or right-to-left direction, occupants of the LEFT property may be either reactants or products. LEFT is a sub-property of PARTICIPANTS.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#memberEntityReference --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#memberEntityReference"> + <rdfs:comment rdf:datatype="&xsd;string">An entity reference that qualifies for the definition of this group. For example a member of a PFAM protein family.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#memberFeature --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#memberFeature"> + <rdf:type rdf:resource="&owl;TransitiveProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">An entity feature that belongs to this homology grouping. Example: a homologous phosphorylation site across a protein family.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity"> + <rdf:type rdf:resource="&owl;TransitiveProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">This property stores the members of a generic physical entity. + +For representing homology generics a better way is to use generic entity references and generic features. However not all generic logic can be captured by this, such as complex generics or rare cases where feature cardinality is variable. Usages of this property should be limited to such cases.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#modificationType --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#modificationType"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">Description and classification of the feature.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ModificationFeature"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#nextStep --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#nextStep"> + <rdfs:comment rdf:datatype="&xsd;string">The next step(s) of the pathway. Contains zero or more pathwayStep instances. If there is no next step, this property is empty. Multiple pathwayStep instances indicate pathway branching.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#notFeature --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#notFeature"> + <rdfs:comment rdf:datatype="&xsd;string">Sequence features where the owner physical entity has a feature. If not specified, other potential features are not known.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#organism --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#organism"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment xml:lang="en">An organism, e.g. 'Homo sapiens'. This is the organism that the entity is found in. Pathways may not have an organism associated with them, for instance, reference pathways from KEGG. Sequence-based entities (DNA, protein, RNA) may contain an xref to a sequence database that contains organism information, in which case the information should be consistent with the value for ORGANISM.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BioSource"/> + <rdfs:domain> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Gene"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Pathway"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#ProteinReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/> + </owl:unionOf> + </owl:Class> + </rdfs:domain> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#participant --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#participant"> + <rdfs:comment rdf:datatype="&xsd;string">This property lists the entities that participate in this interaction. For example, in a biochemical reaction, the participants are the union of the reactants and the products of the reaction. This property has a number of sub-properties, such as LEFT and RIGHT used in the biochemicalInteraction class. Any participant listed in a sub-property will automatically be assumed to also be in PARTICIPANTS by a number of software systems, including Protege, so this property should not contain any instances if there are instances contained in a sub-property.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#participantStoichiometry --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#participantStoichiometry"> + <rdfs:comment rdf:datatype="&xsd;string">Stoichiometry of the left and right participants.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#pathwayComponent --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#pathwayComponent"> + <rdfs:comment rdf:datatype="&xsd;string">The set of interactions and/or pathwaySteps in this pathway/network. Each instance of the pathwayStep class defines: 1) a set of interactions that together define a particular step in the pathway, for example a catalysis instance and the conversion that it catalyzes; 2) an order relationship to one or more other pathway steps (via the NEXT-STEP property). Note: This ordering is not necessarily temporal - the order described may simply represent connectivity between adjacent steps. Temporal ordering information should only be inferred from the direction of each interaction.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Pathway"/> + <rdfs:range> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Interaction"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Pathway"/> + </owl:unionOf> + </owl:Class> + </rdfs:range> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#pathwayOrder --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#pathwayOrder"> + <rdfs:comment rdf:datatype="&xsd;string">The ordering of components (interactions and pathways) in the context of this pathway. This is useful to specific circular or branched pathways or orderings when component biochemical reactions are normally reversible, but are directed in the context of this pathway.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Pathway"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#phenotype --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#phenotype"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">The phenotype quality used to define this genetic interaction e.g. viability.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#GeneticInteraction"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#physicalEntity --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#physicalEntity"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment xml:lang="en">The physical entity to be annotated with stoichiometry.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#product --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#product"> + <rdfs:comment rdf:datatype="&xsd;string">The product of a template reaction.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReaction"/> + <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/> + <rdfs:range> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Dna"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Protein"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Rna"/> + </owl:unionOf> + </owl:Class> + </rdfs:range> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#regionType --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#regionType"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/> + <rdfs:domain> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/> + </owl:unionOf> + </owl:Class> + </rdfs:domain> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#relationshipType --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#relationshipType"> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipXref"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#right --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#right"> + <rdfs:comment rdf:datatype="&xsd;string">The participants on the right side of the conversion interaction. Since conversion interactions may proceed in either the left-to-right or right-to-left direction, occupants of the RIGHT property may be either reactants or products. RIGHT is a sub-property of PARTICIPANTS.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#scoreSource --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#scoreSource"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#sequenceIntervalBegin --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#sequenceIntervalBegin"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">The begin position of a sequence interval.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceInterval"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceSite"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#sequenceIntervalEnd --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#sequenceIntervalEnd"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">The end position of a sequence interval.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceInterval"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceSite"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#stepConversion --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#stepConversion"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">The central process that take place at this step of the biochemical pathway.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalPathwayStep"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/> + <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#stepProcess"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#stepProcess --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#stepProcess"> + <rdfs:comment rdf:datatype="&xsd;string">An interaction or a pathway that are a part of this pathway step.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/> + <rdfs:range> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Interaction"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Pathway"/> + </owl:unionOf> + </owl:Class> + </rdfs:range> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#structure --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#structure"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment xml:lang="en">Defines the chemical structure and other information about this molecule, using an instance of class chemicalStructure.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ChemicalStructure"/> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#subRegion --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#subRegion"> + <rdfs:comment rdf:datatype="&xsd;string">The sub region of a region or nucleic acid molecule. The sub region must be wholly part of the region, not outside of it.</rdfs:comment> + <rdfs:range> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/> + </owl:unionOf> + </owl:Class> + </rdfs:range> + <rdfs:domain> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/> + </owl:unionOf> + </owl:Class> + </rdfs:domain> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#template --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#template"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">The template molecule that is used in this template reaction.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReaction"/> + <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/> + <rdfs:range> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Dna"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Rna"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/> + </owl:unionOf> + </owl:Class> + </rdfs:range> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#tissue --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#tissue"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment xml:lang="en">An external controlled vocabulary of tissue types.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BioSource"/> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/> + </owl:ObjectProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#xref --> + + <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#xref"> + <rdfs:comment xml:lang="en">Values of this property define external cross-references from this entity to entities in external databases.</rdfs:comment> + <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:domain> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#BioSource"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Entity"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Evidence"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Provenance"/> + </owl:unionOf> + </owl:Class> + </rdfs:domain> + </owl:ObjectProperty> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Data properties + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#author --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#author"> + <rdfs:comment xml:lang="en">The authors of this publication, one per property value.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PublicationXref"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#availability --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#availability"> + <rdfs:comment xml:lang="en">Describes the availability of this data (e.g. a copyright statement).</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#catalysisDirection --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#catalysisDirection"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">This property represents the direction of this catalysis under all +physiological conditions if there is one. + +Note that chemically a catalyst will increase the rate of the reaction +in both directions. In biology, however, there are cases where the +enzyme is expressed only when the controlled bidirectional conversion is +on one side of the chemical equilibrium [todo : example]. If that is the +case and the controller, under biological conditions, is always +catalyzing the conversion in one direction then this fact can be +captured using this property. If the enzyme is active for both +directions, or the conversion is not bidirectional, this property should +be left empty.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Catalysis"/> + <rdfs:range> + <rdfs:Datatype> + <owl:oneOf> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">LEFT-TO-RIGHT</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">RIGHT-TO-LEFT</rdf:first> + <rdf:rest rdf:resource="&rdf;nil"/> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </owl:oneOf> + </rdfs:Datatype> + </rdfs:range> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#chemicalFormula --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#chemicalFormula"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">The chemical formula of the small molecule. Note: chemical formula can also be stored in the STRUCTURE property (in CML). In case of disagreement between the value of this property and that in the CML file, the CML value takes precedence.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#comment --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#comment"> + <rdfs:comment rdf:datatype="&xsd;string">Comment on the data in the container class. This property should be used instead of the OWL documentation elements (rdfs:comment) for instances because information in 'comment' is data to be exchanged, whereas the rdfs:comment field is used for metadata about the structure of the BioPAX ontology.</rdfs:comment> + <rdfs:range rdf:resource="&xsd;string"/> + <rdfs:domain> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Entity"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + </owl:unionOf> + </owl:Class> + </rdfs:domain> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#controlType --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#controlType"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">Defines the nature of the control relationship between the CONTROLLER and the CONTROLLED entities. + +The following terms are possible values: + +ACTIVATION: General activation. Compounds that activate the specified enzyme activity by an unknown mechanism. The mechanism is defined as unknown, because either the mechanism has yet to be elucidated in the experimental literature, or the paper(s) curated thus far do not define the mechanism, and a full literature search has yet to be performed. + +The following term can not be used in the catalysis class: +INHIBITION: General inhibition. Compounds that inhibit the specified enzyme activity by an unknown mechanism. The mechanism is defined as unknown, because either the mechanism has yet to be elucidated in the experimental literature, or the paper(s) curated thus far do not define the mechanism, and a full literature search has yet to be performed. + +The following terms can only be used in the modulation class (these definitions from EcoCyc): +INHIBITION-ALLOSTERIC +Allosteric inhibitors decrease the specified enzyme activity by binding reversibly to the enzyme and inducing a conformational change that decreases the affinity of the enzyme to its substrates without affecting its VMAX. Allosteric inhibitors can be competitive or noncompetitive inhibitors, therefore, those inhibition categories can be used in conjunction with this category. + +INHIBITION-COMPETITIVE +Competitive inhibitors are compounds that competitively inhibit the specified enzyme activity by binding reversibly to the enzyme and preventing the substrate from binding. Binding of the inhibitor and substrate are mutually exclusive because it is assumed that the inhibitor and substrate can both bind only to the free enzyme. A competitive inhibitor can either bind to the active site of the enzyme, directly excluding the substrate from binding there, or it can bind to another site on the enzyme, altering the conformation of the enzyme such that the substrate can not bind to the active site. + +INHIBITION-IRREVERSIBLE +Irreversible inhibitors are compounds that irreversibly inhibit the specified enzyme activity by binding to the enzyme and dissociating so slowly that it is considered irreversible. For example, alkylating agents, such as iodoacetamide, irreversibly inhibit the catalytic activity of some enzymes by modifying cysteine side chains. + +INHIBITION-NONCOMPETITIVE +Noncompetitive inhibitors are compounds that noncompetitively inhibit the specified enzyme by binding reversibly to both the free enzyme and to the enzyme-substrate complex. The inhibitor and substrate may be bound to the enzyme simultaneously and do not exclude each other. However, only the enzyme-substrate complex (not the enzyme-substrate-inhibitor complex) is catalytically active. + +INHIBITION-OTHER +Compounds that inhibit the specified enzyme activity by a mechanism that has been characterized, but that cannot be clearly classified as irreversible, competitive, noncompetitive, uncompetitive, or allosteric. + +INHIBITION-UNCOMPETITIVE +Uncompetitive inhibitors are compounds that uncompetitively inhibit the specified enzyme activity by binding reversibly to the enzyme-substrate complex but not to the enzyme alone. + +ACTIVATION-NONALLOSTERIC +Nonallosteric activators increase the specified enzyme activity by means other than allosteric. + +ACTIVATION-ALLOSTERIC +Allosteric activators increase the specified enzyme activity by binding reversibly to the enzyme and inducing a conformational change that increases the affinity of the enzyme to its substrates without affecting its VMAX.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/> + <rdfs:range> + <rdfs:Datatype> + <owl:oneOf> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">ACTIVATION</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">ACTIVATION-ALLOSTERIC</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">ACTIVATION-NONALLOSTERIC</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">INHIBITION</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">INHIBITION-ALLOSTERIC</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">INHIBITION-COMPETITIVE</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">INHIBITION-IRREVERSIBLE</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">INHIBITION-NONCOMPETITIVE</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">INHIBITION-OTHER</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">INHIBITION-UNCOMPETITIVE</rdf:first> + <rdf:rest rdf:resource="&rdf;nil"/> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </owl:oneOf> + </rdfs:Datatype> + </rdfs:range> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#conversionDirection --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#conversionDirection"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">This property represents the direction of the reaction. If a reaction is fundamentally irreversible, then it will run in a single direction under all contexts. Otherwise it is reversible.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/> + <rdfs:range> + <rdfs:Datatype> + <owl:oneOf> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">LEFT-TO-RIGHT</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">REVERSIBLE</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">RIGHT-TO-LEFT</rdf:first> + <rdf:rest rdf:resource="&rdf;nil"/> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </owl:oneOf> + </rdfs:Datatype> + </rdfs:range> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#db --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#db"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment xml:lang="en">The name of the external database to which this xref refers.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#dbVersion --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#dbVersion"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment xml:lang="en">The version of the external database in which this xref was last known to be valid. Resources may have recommendations for referencing dataset versions. For instance, the Gene Ontology recommends listing the date the GO terms were downloaded.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#deltaGPrime0 --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#deltaGPrime0"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">For biochemical reactions, this property refers to the standard transformed Gibbs energy change for a reaction written in terms of biochemical reactants (sums of species), delta-G'<sup>o</sup>. + + delta-G'<sup>o</sup> = -RT lnK' +and + delta-G'<sup>o</sup> = delta-H'<sup>o</sup> - T delta-S'<sup>o</sup> + +delta-G'<sup>o</sup> has units of kJ/mol. Like K', it is a function of temperature (T), ionic strength (I), pH, and pMg (pMg = -log<sub>10</sub>[Mg<sup>2+</sup>]). Therefore, these quantities must be specified, and values for DELTA-G for biochemical reactions are represented as 5-tuples of the form (delta-G'<sup>o</sup> T I pH pMg). + +(This definition from EcoCyc)</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/> + <rdfs:range rdf:resource="&xsd;float"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#deltaH --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#deltaH"> + <rdfs:comment rdf:datatype="&xsd;string">For biochemical reactions, this property refers to the standard transformed enthalpy change for a reaction written in terms of biochemical reactants (sums of species), delta-H'<sup>o</sup>. + + delta-G'<sup>o</sup> = delta-H'<sup>o</sup> - T delta-S'<sup>o</sup> + +Units: kJ/mole + +(This definition from EcoCyc)</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction"/> + <rdfs:range rdf:resource="&xsd;float"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#deltaS --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#deltaS"> + <rdfs:comment rdf:datatype="&xsd;string">For biochemical reactions, this property refers to the standard transformed entropy change for a reaction written in terms of biochemical reactants (sums of species), delta-S'<sup>o</sup>. + + delta-G'<sup>o</sup> = delta-H'<sup>o</sup> - T delta-S'<sup>o</sup> + +(This definition from EcoCyc)</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction"/> + <rdfs:range rdf:resource="&xsd;float"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#displayName --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#displayName"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">An abbreviated name for this entity, preferably a name that is short enough to be used in a visualization application to label a graphical element that represents this entity. If no short name is available, an xref may be used for this purpose by the visualization application.</rdfs:comment> + <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#name"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#eCNumber --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#eCNumber"> + <rdfs:comment rdf:datatype="&xsd;string">The unique number assigned to a reaction by the Enzyme Commission of the International Union of Biochemistry and Molecular Biology. + +Note that not all biochemical reactions currently have EC numbers assigned to them.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#id --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#id"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment xml:lang="en">The primary identifier in the external database of the object to which this xref refers.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#idVersion --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#idVersion"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">The version number of the identifier (ID). E.g. The RefSeq accession number NM_005228.3 should be split into NM_005228 as the ID and 3 as the ID-VERSION.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#intraMolecular --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#intraMolecular"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">This flag represents whether the binding feature is within the same molecule or not.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BindingFeature"/> + <rdfs:range rdf:resource="&xsd;boolean"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#ionicStrength --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#ionicStrength"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">The ionic strength is defined as half of the total sum of the concentration (ci) of every ionic species (i) in the solution times the square of its charge (zi). For example, the ionic strength of a 0.1 M solution of CaCl2 is 0.5 x (0.1 x 22 + 0.2 x 12) = 0.3 M +(Definition from http://www.lsbu.ac.uk/biology/enztech/ph.html)</rdfs:comment> + <rdfs:range rdf:resource="&xsd;float"/> + <rdfs:domain> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#KPrime"/> + </owl:unionOf> + </owl:Class> + </rdfs:domain> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#kPrime --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#kPrime"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">The apparent equilibrium constant K'. Concentrations in the equilibrium constant equation refer to the total concentrations of all forms of particular biochemical reactants. For example, in the equilibrium constant equation for the biochemical reaction in which ATP is hydrolyzed to ADP and inorganic phosphate: + +K' = [ADP][P<sub>i</sub>]/[ATP], + +The concentration of ATP refers to the total concentration of all of the following species: + +[ATP] = [ATP<sup>4-</sup>] + [HATP<sup>3-</sup>] + [H<sub>2</sub>ATP<sup>2-</sup>] + [MgATP<sup>2-</sup>] + [MgHATP<sup>-</sup>] + [Mg<sub>2</sub>ATP]. + +The apparent equilibrium constant is formally dimensionless, and can be kept so by inclusion of as many of the terms (1 mol/dm<sup>3</sup>) in the numerator or denominator as necessary. It is a function of temperature (T), ionic strength (I), pH, and pMg (pMg = -log<sub>10</sub>[Mg<sup>2+</sup>]). +(Definition from EcoCyc)</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/> + <rdfs:range rdf:resource="&xsd;float"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#molecularWeight --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#molecularWeight"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment xml:lang="en">Defines the molecular weight of the molecule, in daltons.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/> + <rdfs:range rdf:resource="&xsd;float"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#name --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#name"> + <rdfs:comment xml:lang="en">One or more synonyms for the name of this individual. This should include the values of the standardName and displayName property so that it is easy to find all known names in one place.</rdfs:comment> + <rdfs:range rdf:resource="&xsd;string"/> + <rdfs:domain> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#BioSource"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Entity"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Provenance"/> + </owl:unionOf> + </owl:Class> + </rdfs:domain> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#pMg --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#pMg"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">A measure of the concentration of magnesium (Mg) in solution. (pMg = -log<sub>10</sub>[Mg<sup>2+</sup>])</rdfs:comment> + <rdfs:range rdf:resource="&xsd;float"/> + <rdfs:domain> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#KPrime"/> + </owl:unionOf> + </owl:Class> + </rdfs:domain> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#patoData --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#patoData"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">The phenotype data from PATO, formatted as PhenoXML (defined at http://www.fruitfly.org/~cjm/obd/formats.html)</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#ph --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#ph"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">A measure of acidity and alkalinity of a solution that is a number on a scale on which a value of 7 represents neutrality and lower numbers indicate increasing acidity and higher numbers increasing alkalinity and on which each unit of change represents a tenfold change in acidity or alkalinity and that is the negative logarithm of the effective hydrogen-ion concentration or hydrogen-ion activity in gram equivalents per liter of the solution. (Definition from Merriam-Webster Dictionary)</rdfs:comment> + <rdfs:range rdf:resource="&xsd;float"/> + <rdfs:domain> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#KPrime"/> + </owl:unionOf> + </owl:Class> + </rdfs:domain> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#positionStatus --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#positionStatus"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">The confidence status of the sequence position. This could be: +EQUAL: The SEQUENCE-POSITION is known to be at the SEQUENCE-POSITION. +GREATER-THAN: The site is greater than the SEQUENCE-POSITION. +LESS-THAN: The site is less than the SEQUENCE-POSITION.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceSite"/> + <rdfs:range> + <rdfs:Datatype> + <owl:oneOf> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">EQUAL</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">GREATER-THAN</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">LESS-THAN</rdf:first> + <rdf:rest rdf:resource="&rdf;nil"/> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </owl:oneOf> + </rdfs:Datatype> + </rdfs:range> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#sequence --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#sequence"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment xml:lang="en">Polymer sequence in uppercase letters. For DNA, usually A,C,G,T letters representing the nucleosides of adenine, cytosine, guanine and thymine, respectively; for RNA, usually A, C, U, G; for protein, usually the letters corresponding to the 20 letter IUPAC amino acid code.</rdfs:comment> + <rdfs:range rdf:resource="&xsd;string"/> + <rdfs:domain> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#ProteinReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/> + </owl:unionOf> + </owl:Class> + </rdfs:domain> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#sequencePosition --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#sequencePosition"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">The integer listed gives the position. The first base or amino acid is position 1. In combination with the numeric value, the property 'POSITION-STATUS' allows to express fuzzy positions, e.g. 'less than 4'.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceSite"/> + <rdfs:range rdf:resource="&xsd;int"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#source --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#source"> + <rdfs:comment rdf:datatype="&xsd;string">The source in which the reference was published, such as: a book title, or a journal title and volume and pages.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PublicationXref"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#spontaneous --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#spontaneous"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">Specifies whether a conversion occurs spontaneously or not. If the spontaneity is not known, the SPONTANEOUS property should be left empty.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/> + <rdfs:range rdf:resource="&xsd;boolean"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#standardName --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#standardName"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment xml:lang="en">The preferred full name for this entity.</rdfs:comment> + <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#name"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#stepDirection --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#stepDirection"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">Direction of the conversion in this particular pathway context. +This property can be used for annotating direction of enzymatic activity. Even if an enzyme catalyzes a reaction reversibly, the flow of matter through the pathway will force the equilibrium in a given direction for that particular pathway.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalPathwayStep"/> + <rdfs:range> + <rdfs:Datatype> + <owl:oneOf> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">LEFT-TO-RIGHT</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">REVERSIBLE</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">RIGHT-TO-LEFT</rdf:first> + <rdf:rest rdf:resource="&rdf;nil"/> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </owl:oneOf> + </rdfs:Datatype> + </rdfs:range> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#stoichiometricCoefficient --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#stoichiometricCoefficient"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">Stoichiometric coefficient for one of the entities in an interaction or complex. This value can be any rational number. Generic values such as "n" or "n+1" should not be used - polymers are currently not covered.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + <rdfs:range rdf:resource="&xsd;float"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#structureData --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#structureData"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">This property holds a string of data defining chemical structure or other information, in either the CML or SMILES format, as specified in property Structure-Format. If, for example, the CML format is used, then the value of this property is a string containing the XML encoding of the CML data.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ChemicalStructure"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#structureFormat --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#structureFormat"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment xml:lang="en">This property specifies which format is used to define chemical structure data.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ChemicalStructure"/> + <rdfs:range> + <rdfs:Datatype> + <owl:oneOf> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">CML</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">InChI</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">SMILES</rdf:first> + <rdf:rest rdf:resource="&rdf;nil"/> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </owl:oneOf> + </rdfs:Datatype> + </rdfs:range> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#temperature --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#temperature"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">Temperature in Celsius</rdfs:comment> + <rdfs:range rdf:resource="&xsd;float"/> + <rdfs:domain> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#KPrime"/> + </owl:unionOf> + </owl:Class> + </rdfs:domain> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#templateDirection --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#templateDirection"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">The direction of the template reaction on the template.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReaction"/> + <rdfs:range> + <rdfs:Datatype> + <owl:oneOf> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">FORWARD</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">REVERSE</rdf:first> + <rdf:rest rdf:resource="&rdf;nil"/> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </owl:oneOf> + </rdfs:Datatype> + </rdfs:range> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#term --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#term"> + <rdfs:comment rdf:datatype="&xsd;string">The external controlled vocabulary term.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#title --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#title"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment xml:lang="en">The title of the publication.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PublicationXref"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#url --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#url"> + <rdfs:comment xml:lang="en">The URL at which the publication can be found, if it is available through the Web.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PublicationXref"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#value --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#value"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment rdf:datatype="&xsd;string">The value of the score.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/> + <rdfs:range rdf:resource="&xsd;string"/> + </owl:DatatypeProperty> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#year --> + + <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#year"> + <rdf:type rdf:resource="&owl;FunctionalProperty"/> + <rdfs:comment xml:lang="en">The year in which this publication was published.</rdfs:comment> + <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PublicationXref"/> + <rdfs:range rdf:resource="&xsd;int"/> + </owl:DatatypeProperty> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Classes + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#BindingFeature --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#BindingFeature"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#FragmentFeature"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition : An entity feature that represent the bound state of a physical entity. A pair of binding features represents a bond. + +Rationale: A physical entity in a molecular complex is considered as a new state of an entity as it is structurally and functionally different. Binding features provide facilities for describing these states. Similar to other features, a molecule can have bound and not-bound states. + +Usage: Typically, binding features are present in pairs, each describing the binding characteristic for one of the interacting physical entities. One exception is using a binding feature with no paired feature to describe any potential binding. For example, an unbound receptor can be described by using a "not-feature" property with an unpaired binding feature as its value. BindingSiteType and featureLocation allows annotating the binding location. + +IntraMolecular property should be set to "true" if the bond links two parts of the same molecule. A pair of binding features are still used where they are owned by the same physical entity. + +If the binding is due to the covalent interactions, for example in the case of lipoproteins, CovalentBindingFeature subclass should be used instead of this class.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#BioSource --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#BioSource"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ChemicalStructure"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: The biological source (organism, tissue or cell type) of an Entity. + +Usage: Some entities are considered source-neutral (e.g. small molecules), and the biological source of others can be deduced from their constituentss (e.g. complex, pathway). + +Instances: HeLa cells, Homo sapiens, and mouse liver tissue.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#BiochemicalPathwayStep --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#BiochemicalPathwayStep"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#stepProcess"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:comment rdf:datatype="&xsd;string">Definition: Imposes ordering on a step in a biochemical pathway. +Retionale: A biochemical reaction can be reversible by itself, but can be physiologically directed in the context of a pathway, for instance due to flux of reactants and products. +Usage: Only one conversion interaction can be ordered at a time, but multiple catalysis or modulation instances can be part of one step.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ComplexAssembly"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Degradation"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A conversion in which molecules of one or more physicalEntity pools, undergo covalent modifications and become a member of one or more other physicalEntity pools. The substrates of biochemical reactions are defined in terms of sums of species. This is a convention in biochemistry, and, in principle, all EC reactions should be biochemical reactions. + +Examples: ATP + H2O = ADP + Pi + +Comment: In the example reaction above, ATP is considered to be an equilibrium mixture of several species, namely ATP4-, HATP3-, H2ATP2-, MgATP2-, MgHATP-, and Mg2ATP. Additional species may also need to be considered if other ions (e.g. Ca2+) that bind ATP are present. Similar considerations apply to ADP and to inorganic phosphate (Pi). When writing biochemical reactions, it is not necessary to attach charges to the biochemical reactants or to include ions such as H+ and Mg2+ in the equation. The reaction is written in the direction specified by the EC nomenclature system, if applicable, regardless of the physiological direction(s) in which the reaction proceeds. Polymerization reactions involving large polymers whose structure is not explicitly captured should generally be represented as unbalanced reactions in which the monomer is consumed but the polymer remains unchanged, e.g. glycogen + glucose = glycogen. A better coverage for polymerization will be developed.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Catalysis --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Catalysis"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#controlled"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#controlType"/> + <owl:hasValue rdf:datatype="&xsd;string">ACTIVATION</owl:hasValue> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Modulation"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReactionRegulation"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A control interaction in which a physical entity (a catalyst) increases the rate of a conversion interaction by lowering its activation energy. Instances of this class describe a pairing between a catalyzing entity and a catalyzed conversion. +Rationale: Catalysis, theoretically, is always bidirectional since it acts by lowering the activation energy. Physiologically, however, it can have a direction because of the concentration of the participants. For example, the oxidative decarboxylation catalyzed by Isocitrate dehydrogenase always happens in one direction under physiological conditions since the produced carbon dioxide is constantly removed from the system. + +Usage: A separate catalysis instance should be created for each different conversion that a physicalEntity may catalyze and for each different physicalEntity that may catalyze a conversion. For example, a bifunctional enzyme that catalyzes two different biochemical reactions would be linked to each of those biochemical reactions by two separate instances of the catalysis class. Also, catalysis reactions from multiple different organisms could be linked to the same generic biochemical reaction (a biochemical reaction is generic if it only includes small molecules). Generally, the enzyme catalyzing a conversion is known and the use of this class is obvious, however, in the cases where a catalyzed reaction is known to occur but the enzyme is not known, a catalysis instance can be created without a controller specified. +Synonyms: facilitation, acceleration. +Examples: The catalysis of a biochemical reaction by an enzyme, the enabling of a transport interaction by a membrane pore complex, and the facilitation of a complex assembly by a scaffold protein. Hexokinase -> (The "Glucose + ATP -> Glucose-6-phosphate +ADP" reaction). A plasma membrane Na+/K+ ATPase is an active transporter (antiport pump) using the energy of ATP to pump Na+ out of the cell and K+ in. Na+ from cytoplasm to extracellular space would be described in a transport instance. K+ from extracellular space to cytoplasm would be described in a transport instance. The ATPase pump would be stored in a catalysis instance controlling each of the above transport instances. A biochemical reaction that does not occur by itself under physiological conditions, but has been observed to occur in the presence of cell extract, likely via one or more unknown enzymes present in the extract, would be stored in the CONTROLLED property, with the CONTROLLER property empty.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#CellVocabulary --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#CellVocabulary"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#CellularLocationVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReferenceTypeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EvidenceCodeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalFormVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference to the Cell Type Ontology (CL). Homepage at http://obofoundry.org/cgi-bin/detail.cgi?cell. Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=CL</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#CellularLocationVocabulary --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#CellularLocationVocabulary"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReferenceTypeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EvidenceCodeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalFormVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference to the Gene Ontology Cellular Component (GO CC) ontology. Homepage at http://www.geneontology.org. Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=GO</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#ChemicalStructure --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#ChemicalStructure"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#structureData"/> + <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#structureFormat"/> + <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: The chemical structure of a small molecule. + +Usage: Structure information is stored in the property structureData, in one of three formats: the CML format (see URL www.xml-cml.org), the SMILES format (see URL www.daylight.com/dayhtml/smiles/) or the InChI format (http://www.iupac.org/inchi/). The structureFormat property specifies which format is used. + +Examples: The following SMILES string describes the structure of glucose-6-phosphate: +'C(OP(=O)(O)O)[CH]1([CH](O)[CH](O)[CH](O)[CH](O)O1)'.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Complex --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Complex"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Complex"/> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Dna"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Protein"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Rna"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A physical entity whose structure is comprised of other physical entities bound to each other covalently or non-covalently, at least one of which is a macromolecule (e.g. protein, DNA, or RNA) and the Stoichiometry of the components are known. + +Comment: Complexes must be stable enough to function as a biological unit; in general, the temporary association of an enzyme with its substrate(s) should not be considered or represented as a complex. A complex is the physical product of an interaction (complexAssembly) and is not itself considered an interaction. +The boundaries on the size of complexes described by this class are not defined here, although possible, elements of the cell such a mitochondria would typically not be described using this class (later versions of this ontology may include a cellularComponent class to represent these). The strength of binding cannot be described currently, but may be included in future versions of the ontology, depending on community need. +Examples: Ribosome, RNA polymerase II. Other examples of this class include complexes of multiple protein monomers and complexes of proteins and small molecules.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#ComplexAssembly --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#ComplexAssembly"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Degradation"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Transport"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A conversion interaction in which a set of physical entities, at least one being a macromolecule (e.g. protein, RNA, DNA), aggregate to from a complex physicalEntity. One of the participants of a complexAssembly must be an instance of the class Complex. The modification of the physicalentities involved in the ComplexAssembly is captured via BindingFeature class. + +Usage: This class is also used to represent complex disassembly. The assembly or disassembly of a complex is often a spontaneous process, in which case the direction of the complexAssembly (toward either assembly or disassembly) should be specified via the SPONTANEOUS property. Conversions in which participants obtain or lose CovalentBindingFeatures ( e.g. glycolysation of proteins) should be modeled with BiochemicalReaction. + +Synonyms: aggregation, complex formation + +Examples: Assembly of the TFB2 and TFB3 proteins into the TFIIH complex, and assembly of the ribosome through aggregation of its subunits.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Control --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Control"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#GeneticInteraction"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#MolecularInteraction"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReaction"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: An interaction in which one entity regulates, modifies, or otherwise influences a continuant entity, i.e. pathway or interaction. + +Usage: Conceptually, physical entities are involved in interactions (or events) and the events are controlled or modified, not the physical entities themselves. For example, a kinase activating a protein is a frequent event in signaling pathways and is usually represented as an 'activation' arrow from the kinase to the substrate in signaling diagrams. This is an abstraction, called "Activity Flow" representation, that can be ambiguous without context. In BioPAX, this information should be captured as the kinase catalyzing (via an instance of the catalysis class) a Biochemical Reaction in which the substrate is phosphorylated. +Subclasses of control define types specific to the biological process that is being controlled and should be used instead of the generic "control" class when applicable. + +A control can potentially have multiple controllers. This acts as a logical AND, i.e. both controllers are needed to regulate the controlled event. Alternatively multiple controllers can control the same event and this acts as a logical OR, i.e. any one of them is sufficient to regulate the controlled event. Using this structure it is possible to describe arbitrary control logic using BioPAX. + +Rationale: Control can be temporally non-atomic, for example a pathway can control another pathway in BioPAX. +Synonyms: regulation, mediation + +Examples: A small molecule that inhibits a pathway by an unknown mechanism.</rdfs:comment> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.7</disponte:probability> + <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/> + <owl:annotatedTarget rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#xref"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UnificationXref"/> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:comment rdf:datatype="&xsd;string">Used to reference terms from external controlled vocabularies (CVs) from the ontology. To support consistency and compatibility, open, freely available CVs should be used whenever possible, such as the Gene Ontology (GO)15 or other open biological CVs listed on the OBO website (http://obo.sourceforge.net/). See the section on controlled vocabularies in Section 4 for more information.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Conversion --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Conversion"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#GeneticInteraction"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: An interaction in which molecules of one or more physicalEntity pools are physically transformed and become a member of one or more other physicalEntity pools. + +Comments: Conversions in BioPAX are stoichiometric and closed world, i.e. it is assumed that all of the participants are listed. Both properties are due to the law of mass conservation. + +Usage: Subclasses of conversion represent different types of transformation reflected by the properties of different physicalEntity. BiochemicalReactions will change the ModificationFeatures on a PhysicalEntity , Transport will change the CellularLocation and ComplexAssembly will change BindingFeatures. Generic Conversion class should only be used when the modification does not fit into one of these classes. + +Example: Opening of a voltage gated channel.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#CovalentBindingFeature --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#CovalentBindingFeature"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BindingFeature"/> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ModificationFeature"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition : An entity feature that represent the covalently bound state of a physical entity. + +Rationale: Most frequent covalent modifications to proteins and DNA, such as phosphorylation and metylation are covered by the ModificationFeature class. In these cases, the added groups are simple and stateless therefore they can be captured by a controlled vocabulary. In other cases, such as ThiS-Thilacyl-disulfide, the covalently linked molecules are best represented as a molecular complex. CovalentBindingFeature should be used to model such covalently linked complexes. + +Usage: Using this construct, it is possible to represent small molecules as a covalent complex of two other small molecules. The demarcation of small molecules is a general problem and is delegated to small molecule databases.The best practice is not to model using covalent complexes unless at least one of the participants is a protein, DNA or RNA. + +Examples: +disulfide bond +UhpC + glc-6P -> Uhpc-glc-6p +acetyl-ACP -> decenoyl-ACP +charged tRNA</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Degradation --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Degradation"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#conversionDirection"/> + <owl:hasValue rdf:datatype="&xsd;string">LEFT-TO-RIGHT</owl:hasValue> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Transport"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A conversion in which a pool of macromolecules are degraded into their elementary units. + +Usage: This conversion always has a direction of left-to-right and is irreversible. Degraded molecules are always represented on the left, degradation products on the right. + +Comments: Degradation is a complex abstraction over multiple reactions. Although it obeys law of mass conservation and stoichiometric, the products are rarely specified since they are ubiquitous. + +Example: Degradation of a protein to amino acids.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#DeltaG --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#DeltaG"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#deltaGPrime0"/> + <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: Standard transformed Gibbs energy change for a reaction written in terms of biochemical reactants. +Usage: Delta-G is represented as a 5-tuple of delta-G'<sup>0</sup>, temperature, ionic strength , pH, and pMg . A conversion in BioPAX may have multiple Delta-G values, representing different measurements for delta-G'<sup>0</sup> obtained under the different experimental conditions.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Dna --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Dna"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#entityReference"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaReference"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Dna"/> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Protein"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Rna"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A physical entity consisting of a sequence of deoxyribonucleotide monophosphates; a deoxyribonucleic acid. +Usage: DNA should be used for pools of individual DNA molecules. For describing subregions on those molecules use DNARegion. +Examples: a chromosome, a plasmid. A specific example is chromosome 7 of Homo sapiens.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#DnaReference --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaReference"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberEntityReference"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaReference"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#subRegion"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ProteinReference"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A DNA reference is a grouping of several DNA entities that are common in sequence. Members can differ in celular location, sequence features, SNPs, mutations and bound partners. + +Comments : Note that this is not a reference gene. Genes are non-physical,stateless continuants. Their physical manifestations can span multiple DNA molecules, sometimes even across chromosomes due to regulatory regions. Similarly a gene is not necessarily made up of deoxyribonucleic acid and can be present in multiple copies ( which are different DNA regions).</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#DnaRegion --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#entityReference"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Protein"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Rna"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A region on a DNA molecule. +Usage: DNARegion is not a pool of independent molecules but a subregion on these molecules. As such, every DNARegion has a defining DNA molecule. +Examples: Protein encoding region, promoter</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#subRegion"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ProteinReference"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A DNARegionReference is a grouping of several DNARegion entities that are common in sequence and genomic position. Members can differ in cellular location, sequence features, SNPs, mutations and bound partners.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Entity --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Entity"> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A discrete biological unit used when describing pathways. + +Rationale: Entity is the most abstract class for representing interacting + elements in a pathway. It includes both occurents (interactions and + pathways) and continuants (physical entities and genes). Loosely speaking, + BioPAX Entity is an atomic scientific statement with an associated source, + evidence and references. +Synonyms: element, thing, object, bioentity, statement.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#EntityFeature --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:comment rdf:datatype="&xsd;string">Description: A characteristic of a physical entity that can change while the entity still retains its biological identity. + +Rationale: Two phosphorylated forms of a protein are strictly speaking different chemical molecules. It is, however, standard in biology to treat them as different states of the same entity, where the entity is loosely defined based on sequence. Entity Feature class and its subclassses captures these variable characteristics. A Physical Entity in BioPAX represents a pool of molecules rather than an individual molecule. This is a notion imported from chemistry( See PhysicalEntity). Pools are defined by a set of Entity Features in the sense that a single molecule must have all of the features in the set in order to be considered a member of the pool. Since it is impossible to list and experimentally test all potential features for an entity, features that are not listed in the selection criteria is neglected Pools can also be defined by the converse by specifying features that are known to NOT exist in a specific context. As DNA, RNA and Proteins can be hierarchicaly organized into families based on sequence homology so can entity features. The memberFeature property allows capturing such hierarchical classifications among entity features. + + +Usage: Subclasses of entity feature describe most common biological instances and should be preferred whenever possible. One common usecase for instantiating entity feature is, for describing active/inactive states of proteins where more specific feature information is not available. + +Examples: Open/close conformational state of channel proteins, "active"/"inactive" states, excited states of photoreactive groups.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#EntityReference --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#EntityReference"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: An entity reference is a grouping of several physical entities across different contexts and molecular states, that share common physical properties and often named and treated as a single entity with multiple states by biologists. + +Rationale: Many protein, small molecule and gene databases share this point of view, and such a grouping is an important prerequisite for interoperability with those databases. Biologists would often group different pools of molecules in different contexts under the same name. For example cytoplasmic and extracellular calcium have different effects on the cell's behavior, but they are still called calcium. For DNA, RNA and Proteins the grouping is defined based on a wildtype sequence, for small molecules it is defined by the chemical structure. + +Usage: Entity references store the information common to a set of molecules in various states described in the BioPAX document, including database cross-references. For instance, the P53 protein can be phosphorylated in multiple different ways. Each separate P53 protein (pool) in a phosphorylation state would be represented as a different protein (child of physicalEntity) and all things common to all P53 proteins, including all possible phosphorylation sites, the sequence common to all of them and common references to protein databases containing more information about P53 would be stored in a Entity Reference. + +Comments: This grouping has three semantic implications: + +1. Members of different pools share many physical and biochemical properties. This includes their chemical structure, sequence, organism and set of molecules they react with. They will also share a lot of secondary information such as their names, functional groupings, annotation terms and database identifiers. + +2. A small number of transitions seperates these pools. In other words it is relatively easy and frequent for a molecule to transform from one physical entity to another that belong to the same reference entity. For example an extracellular calcium can become cytoplasmic, and p53 can become phosphorylated. However no calcium virtually becomes sodium, or no p53 becomes mdm2. In the former it is the sheer energy barrier of a nuclear reaction, in the latter sheer statistical improbability of synthesizing the same sequence without a template. If one thinks about the biochemical network as molecules transforming into each other, and remove edges that respond to transcription, translation, degradation and covalent modification of small molecules, each remaining component is a reference entity. + +3. Some of the pools in the same group can overlap. p53-p@ser15 can overlap with p53-p@thr18. Most of the experiments in molecular biology will only check for one state variable, rarely multiple, and never for the all possible combinations. So almost all statements that refer to the state of the molecule talk about a pool that can overlap with other pools. However no overlaps is possible between molecules of different groups.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#EntityReferenceTypeVocabulary --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#EntityReferenceTypeVocabulary"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EvidenceCodeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalFormVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/> + <rdfs:comment rdf:datatype="&xsd;string">Definiiton: A reference to a term from an entity reference group ontology. As of the writing of this documentation, there is no standard ontology of these terms, though a common type is ‘homology’.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Evidence --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Evidence"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + <rdfs:subClassOf> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#confidence"/> + <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality> + </owl:Restriction> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#evidenceCode"/> + <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality> + </owl:Restriction> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#experimentalForm"/> + <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality> + </owl:Restriction> + </owl:unionOf> + </owl:Class> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: The support for a particular assertion, such as the existence of an interaction or pathway. +Usage: At least one of confidence, evidenceCode, or experimentalForm must be instantiated when creating an evidence instance. XREF may reference a publication describing the experimental evidence using a publicationXref or may store a description of the experiment in an experimental description database using a unificationXref (if the referenced experiment is the same) or relationshipXref (if it is not identical, but similar in some way e.g. similar in protocol). Evidence is meant to provide more information than just an xref to the source paper. +Examples: A description of a molecular binding assay that was used to detect a protein-protein interaction.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#EvidenceCodeVocabulary --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#EvidenceCodeVocabulary"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalFormVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference to the PSI Molecular Interaction ontology (MI) experimental method types, including "interaction detection method", "participant identification method", "feature detection method". Homepage at http://www.psidev.info/. Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=MI + +Terms from the Pathway Tools Evidence Ontology may also be used. Homepage http://brg.ai.sri.com/evidence-ontology/</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#experimentalFormDescription"/> + <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: The form of a physical entity in a particular experiment, as it may be modified for purposes of experimental design. +Examples: A His-tagged protein in a binding assay. A protein can be tagged by multiple tags, so can have more than 1 experimental form type terms</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#ExperimentalFormVocabulary --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#ExperimentalFormVocabulary"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference to the PSI Molecular Interaction ontology (MI) participant identification method (e.g. mass spectrometry), experimental role (e.g. bait, prey), experimental preparation (e.g. expression level) type. Homepage at http://www.psidev.info/. Browse http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=MI&termId=MI%3A0002&termName=participant%20identification%20method + +http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=MI&termId=MI%3A0495&termName=experimental%20role + +http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=MI&termId=MI%3A0346&termName=experimental%20preparation</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#FragmentFeature --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#FragmentFeature"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ModificationFeature"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: An entity feature that represents the resulting physical entity subsequent to a cleavage or degradation event. + +Usage: Fragment Feature can be used to cover multiple types of modfications to the sequence of the physical entity: +1. A protein with a single cleavage site that converts the protein into two fragments (e.g. pro-insulin converted to insulin and C-peptide). TODO: CV term for sequence fragment? PSI-MI CV term for cleavage site? +2. A protein with two cleavage sites that removes an internal sequence e.g. an intein i.e. ABC -> A +3. Cleavage of a circular sequence e.g. a plasmid. + +In the case of removal ( e.g. intron) the fragment that is *removed* is specified in the feature location property. In the case of a "cut" (e.g. restriction enzyme cut site) the location of the cut is specified instead. +Examples: Insulin Hormone</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Gene --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Gene"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#organism"/> + <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Pathway"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A continuant that encodes information that can be inherited through replication. +Rationale: Gene is an abstract continuant that can be best described as a "schema", a common conception commonly used by biologists to demark a component within genome. In BioPAX, Gene is considered a generalization over eukaryotic and prokaryotic genes and is used only in genetic interactions. Gene is often confused with DNA and RNA fragments, however, these are considered the physical encoding of a gene. N.B. Gene expression regulation makes use of DNA and RNA physical entities and not this class. +Usage: Gene should only be used for describing GeneticInteractions.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#GeneticInteraction --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#GeneticInteraction"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#interactionType"/> + <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#phenotype"/> + <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Gene"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/> + <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">2</owl:minCardinality> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#MolecularInteraction"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReaction"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition : Genetic interactions between genes occur when two genetic perturbations (e.g. mutations) have a combined phenotypic effect not caused by either perturbation alone. A gene participant in a genetic interaction represents the gene that is perturbed. Genetic interactions are not physical interactions but logical (AND) relationships. Their physical manifestations can be complex and span an arbitarily long duration. + +Rationale: Currently, BioPAX provides a simple definition that can capture most genetic interactions described in the literature. In the future, if required, the definition can be extended to capture other logical relationships and different, participant specific phenotypes. + +Example: A synthetic lethal interaction occurs when cell growth is possible without either gene A OR B, but not without both gene A AND B. If you knock out A and B together, the cell will die.</rdfs:comment> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.7</disponte:probability> + <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#GeneticInteraction"/> + <owl:annotatedTarget rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Interaction --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Interaction"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Pathway"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A biological relationship between two or more entities. + +Rationale: In BioPAX, interactions are atomic from a database modeling perspective, i.e. interactions can not be decomposed into sub-interactions. When representing non-atomic continuants with explicit subevents the pathway class should be used instead. Interactions are not necessarily temporally atomic, for example genetic interactions cover a large span of time. Interactions as a formal concept is a continuant, it retains its identitiy regardless of time, or any differences in specific states or properties. + +Usage: Interaction is a highly abstract class and in almost all cases it is more appropriate to use one of the subclasses of interaction. +It is partially possible to define generic reactions by using generic participants. A more comprehensive method is planned for BioPAX L4 for covering all generic cases like oxidization of a generic alcohol. + +Synonyms: Process, relationship, event. + +Examples: protein-protein interaction, biochemical reaction, enzyme catalysis</rdfs:comment> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.89</disponte:probability> + <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/> + <owl:annotatedTarget rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Pathway"/> + <owl:annotatedProperty rdf:resource="&owl;disjointWith"/> + </owl:Axiom> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference to the PSI Molecular Interaction ontology (MI) interaction type. Homepage at http://www.psidev.info/. Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=MI&termId=MI%3A0190&termName=interaction%20type</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#KPrime --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#KPrime"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#kPrime"/> + <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: The apparent equilibrium constant, K', and associated values. +Usage: Concentrations in the equilibrium constant equation refer to the total concentrations of all forms of particular biochemical reactants. For example, in the equilibrium constant equation for the biochemical reaction in which ATP is hydrolyzed to ADP and inorganic phosphate: + +K' = [ADP][P<sub>i</sub>]/[ATP], + +The concentration of ATP refers to the total concentration of all of the following species: + +[ATP] = [ATP<sup>4-</sup>] + [HATP<sup>3-</sup>] + [H<sub>2</sub>ATP<sup>2-</sup>] + [MgATP<sup>2-</sup>] + [MgHATP<sup>-</sup>] + [Mg<sub>2</sub>ATP]. + +The apparent equilibrium constant is formally dimensionless, and can be kept so by inclusion of as many of the terms (1 mol/dm<sup>3</sup>) in the numerator or denominator as necessary. It is a function of temperature (T), ionic strength (I), pH, and pMg (pMg = -log<sub>10</sub>[Mg<sup>2+</sup>]). Therefore, these quantities must be specified to be precise, and values for KEQ for biochemical reactions may be represented as 5-tuples of the form (K' T I pH pMg). This property may have multiple values, representing different measurements for K' obtained under the different experimental conditions listed in the 5-tuple. (This definition adapted from EcoCyc) + +See http://www.chem.qmul.ac.uk/iubmb/thermod/ for a thermodynamics tutorial.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#ModificationFeature --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#ModificationFeature"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: An entity feature that represents the covalently modified state of a dna, rna or a protein. + +Rationale: In Biology, identity of DNA, RNA and Protein entities are defined around a wildtype sequence. Covalent modifications to this basal sequence are represented using modificaton features. Since small molecules are identified based on their chemical structure, not sequence, a covalent modification to a small molecule would result in a different molecule. + +Usage: The added groups should be simple and stateless, such as phosphate or methyl groups and are captured by the modificationType controlled vocabulary. In other cases, such as covalently linked proteins, use CovalentBindingFeature instead. + +Instances: A phosphorylation on a protein, a methylation on a DNA.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Modulation --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Modulation"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#controller"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#controlled"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Catalysis"/> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReactionRegulation"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A control interaction in which a physical entity modulates a catalysis interaction. + +Rationale: Biologically, most modulation interactions describe an interaction in which a small molecule alters the ability of an enzyme to catalyze a specific reaction. Instances of this class describe a pairing between a modulating entity and a catalysis interaction. + +Usage: A typical modulation instance has a small molecule as the controller entity and a catalysis instance as the controlled entity. A separate modulation instance should be created for each different catalysis instance that a physical entity may modulate, and for each different physical entity that may modulate a catalysis instance. +Examples: Allosteric activation and competitive inhibition of an enzyme's ability to catalyze a specific reaction.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#MolecularInteraction --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#MolecularInteraction"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:comment rdf:datatype="&xsd;string">Definition: An interaction in which participants bind physically to each other, directly or indirectly through intermediary molecules. + +Rationale: There is a large body of interaction data, mostly produced by high throughput systems, that does not satisfy the level of detail required to model them with ComplexAssembly class. Specifically, what is lacking is the stoichiometric information and completeness (closed-world) of participants required to model them as chemical processes. Nevertheless interaction data is extremely useful and can be captured in BioPAX using this class. + +Usage: This class should be used by default for representing molecular interactions such as those defined by PSI-MI level 2.5. The participants in a molecular interaction should be listed in the PARTICIPANT slot. Note that this is one of the few cases in which the PARTICPANT slot should be directly populated with instances (see comments on the PARTICPANTS property in the interaction class description). If all participants are known with exact stoichiometry, ComplexAssembly class should be used instead. + +Example: Two proteins observed to interact in a yeast-two-hybrid experiment where there is not enough experimental evidence to suggest that the proteins are forming a complex by themselves without any indirect involvement of other proteins. This is the case for most large-scale yeast two-hybrid screens.</rdfs:comment> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.2</disponte:probability> + <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#MolecularInteraction"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + <owl:annotatedTarget> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + </owl:Restriction> + </owl:annotatedTarget> + </owl:Axiom> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Pathway --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Pathway"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A set or series of interactions, often forming a network, which biologists have found useful to group together for organizational, historic, biophysical or other reasons. + +Usage: Pathways can be used for demarcating any subnetwork of a BioPAX model. It is also possible to define a pathway without specifying the interactions within the pathway. In this case, the pathway instance could consist simply of a name and could be treated as a 'black box'. Pathways can also soverlap, i.e. a single interaction might belong to multiple pathways. Pathways can also contain sub-pathways. Pathways are continuants. + +Synonyms: network, module, cascade, +Examples: glycolysis, valine biosynthesis, EGFR signaling</rdfs:comment> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.89</disponte:probability> + <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/> + <owl:annotatedTarget rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Pathway"/> + <owl:annotatedProperty rdf:resource="&owl;disjointWith"/> + </owl:Axiom> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.9</disponte:probability> + <owl:annotatedTarget rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/> + <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Pathway"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#PathwayStep --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A step in an ordered pathway. +Rationale: Some pathways can have a temporal order. For example, if the pathway boundaries are based on a perturbation phenotype link, the pathway might start with the perturbing agent and end at gene expression leading to the observed changes. Pathway steps can represent directed compound graphs. +Usage: Multiple interactions may occur in a pathway step, each should be listed in the stepProcess property. Order relationships between pathway steps may be established with the nextStep slot. If the reaction contained in the step is a reversible biochemical reaction but physiologically has a direction in the context of this pathway, use the subclass BiochemicalPathwayStep. + +Example: A metabolic pathway may contain a pathway step composed of one biochemical reaction (BR1) and one catalysis (CAT1) instance, where CAT1 describes the catalysis of BR1. The M phase of the cell cycle, defined as a pathway, precedes the G1 phase, also defined as a pathway.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: The phenotype measured in the experiment e.g. growth rate or viability of a cell. This is only the type, not the value e.g. for a synthetic lethal interaction, the phenotype is viability, specified by ID: PATO:0000169, "viability", not the value (specified by ID: PATO:0000718, "lethal (sensu genetics)". A single term in a phenotype controlled vocabulary can be referenced using the xref, or the PhenoXML describing the PATO EQ model phenotype description can be stored as a string in PATO-DATA.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A pool of molecules or molecular complexes. + +Comments: Each PhysicalEntity is defined by a sequence or structure based on an EntityReference AND any set of Features that are given. For example, ser46 phosphorylated p53 is a physical entity in BioPAX defined by the p53 sequence and the phosphorylation feature on the serine at position 46 in the sequence. Features are any combination of cellular location, covalent and non-covalent bonds with other molecules and covalent modifications. + +For a specific molecule to be a member of the pool it has to satisfy all of the specified features. Unspecified features are treated as unknowns or unneccesary. Features that are known to not be on the molecules should be explicitly stated with the "not feature" property. +A physical entity in BioPAX never represents a specific molecular instance. + +Physical Entity can be heterogenous and potentially overlap, i.e. a single molecule can be counted as a member of multiple pools. This makes BioPAX semantics different than regular chemical notation but is necessary for dealing with combinatorial complexity. + +Synonyms: part, interactor, object, species + +Examples: extracellular calcium, ser 64 phosphorylated p53</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Protein --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Protein"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#entityReference"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ProteinReference"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Protein"/> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Rna"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A physical entity consisting of a sequence of amino acids; a protein monomer; a single polypeptide chain. +Examples: The epidermal growth factor receptor (EGFR) protein.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#ProteinReference --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#ProteinReference"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberEntityReference"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ProteinReference"/> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/> + <rdfs:comment rdf:datatype="&xsd;string">A protein reference is a grouping of several protein entities that are encoded by the same gene. Members can differ in celular location, sequence features and bound partners. Currently conformational states (such as open and closed) are not covered.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Provenance --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Provenance"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#xref"/> + <owl:allValuesFrom> + <owl:Class> + <owl:unionOf rdf:parseType="Collection"> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#PublicationXref"/> + <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#UnificationXref"/> + </owl:unionOf> + </owl:Class> + </owl:allValuesFrom> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: The direct source of pathway data or score. +Usage: This does not store the trail of sources from the generation of the data to this point, only the last known source, such as a database, tool or algorithm. The xref property may contain a publicationXref referencing a publication describing the data source (e.g. a database publication). A unificationXref may be used when pointing to an entry in a database of databases describing this database. +Examples: A database, scoring method or person name.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#PublicationXref --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#PublicationXref"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UnificationXref"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: An xref that defines a reference to a publication such as a book, journal article, web page, or software manual. +Usage: The reference may or may not be in a database, although references to PubMed are preferred when possible. The publication should make a direct reference to the instance it is attached to. Publication xrefs should make use of PubMed IDs wherever possible. The DB property of an xref to an entry in PubMed should use the string "PubMed" and not "MEDLINE". +Examples: PubMed:10234245</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: Vocabulary for defining relationship Xref types. A reference to the PSI Molecular Interaction ontology (MI) Cross Reference type. Homepage at http://www.psidev.info/. Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=MI&termId=MI%3A0353&termName=cross-reference%20type</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#RelationshipXref --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#RelationshipXref"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: An xref that defines a reference to an entity in an external resource that does not have the same biological identity as the referring entity. +Usage: There is currently no controlled vocabulary of relationship types for BioPAX, although one will be created in the future if a need develops. +Examples: A link between a gene G in a BioPAX data collection, and the protein product P of that gene in an external database. This is not a unification xref because G and P are different biological entities (one is a gene and one is a protein). Another example is a relationship xref for a protein that refers to the Gene Ontology biological process, e.g. 'immune response,' that the protein is involved in.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Rna --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Rna"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#entityReference"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Rna"/> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A physical entity consisting of a sequence of ribonucleotide monophosphates; a ribonucleic acid. +Usage: RNA should be used for pools of individual RNA molecules. For describing subregions on those molecules use RNARegion. +Examples: messengerRNA, microRNA, ribosomalRNA. A specific example is the let-7 microRNA.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#RnaReference --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaReference"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#subRegion"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberEntityReference"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/> + <rdfs:comment rdf:datatype="&xsd;string">Defintion: A RNA reference is a grouping of several RNA entities that are either encoded by the same gene or replicates of the same genome. Members can differ in celular location, sequence features and bound partners. Currently conformational states (such as hairpin) are not covered.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#RnaRegion --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#entityReference"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A region on a RNA molecule. +Usage: RNARegion is not a pool of independent molecules but a subregion on these molecules. As such, every RNARegion has a defining RNA molecule. +Examples: CDS, 3' UTR, Hairpin</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#subRegion"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A RNARegion reference is a grouping of several RNARegion entities that are common in sequence and genomic position. Members can differ in celular location, sequence features, mutations and bound partners.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Score --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Score"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#value"/> + <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A score associated with a publication reference describing how the score was determined, the name of the method and a comment briefly describing the method. +Usage: The xref must contain at least one publication that describes the method used to determine the score value. There is currently no standard way of describing values, so any string is valid. +Examples: The statistical significance of a result, e.g. "p<0.05".</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#SequenceInterval --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#SequenceInterval"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceSite"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: An interval on a sequence. +Usage: Interval is defined as an ordered pair of SequenceSites. All of the sequence from the begin site to the end site (inclusive) is described, not any subset.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#SequenceLocation --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A location on a nucleotide or amino acid sequence. +Usage: For most purposes it is more appropriate to use subclasses of this class. Direct instances of SequenceLocation can be used for uknown locations that can not be classified neither as an interval nor a site.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/> + <rdfs:comment rdf:datatype="&xsd;string">Definiiton: A reference to the PSI Molecular Interaction ontology (MI) of covalent sequence modifications. Homepage at http://www.psidev.info/. Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=MI&termId=MI%3A0252&termName=biological%20feature. Only children that are covelent modifications at specific positions can be used.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference to a controlled vocabulary of sequence regions, such as InterPro or Sequence Ontology (SO). Homepage at http://www.sequenceontology.org/. Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=SO</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#SequenceSite --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#SequenceSite"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: Describes a site on a sequence, i.e. the position of a single nucleotide or amino acid. +Usage: A sequence site is always defined based on the reference sequence of the owning entity. For DNARegion and RNARegion it is relative to the region itself not the genome or full RNA molecule.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#SmallMolecule --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#feature"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BindingFeature"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#notFeature"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BindingFeature"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#entityReference"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A pool of molecules that are neither complexes nor are genetically encoded. + +Rationale: Identity of small molecules are based on structure, rather than sequence as in the case of DNA, RNA or Protein. A small molecule reference is a grouping of several small molecule entities that have the same chemical structure. + +Usage : Smalle Molecules can have a cellular location and binding features. They can't have modification features as covalent modifications of small molecules are not considered as state changes but treated as different molecules. +Some non-genomic macromolecules, such as large complex carbohydrates are currently covered by small molecules despite they lack a static structure. Better coverage for such molecules require representation of generic stoichiometry and polymerization, currently planned for BioPAX level 4. + +Examples: glucose, penicillin, phosphatidylinositol</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberEntityReference"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:comment rdf:datatype="&xsd;string">A small molecule reference is a grouping of several small molecule entities that have the same chemical structure. Members can differ in celular location and bound partners. Covalent modifications of small molecules are not considered as state changes but treated as different molecules.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Stoichiometry --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#stoichiometricCoefficient"/> + <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#physicalEntity"/> + <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality> + </owl:Restriction> + </rdfs:subClassOf> + <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: Stoichiometric coefficient of a physical entity in the context of a conversion or complex. +Usage: For each participating element there must be 0 or 1 stoichiometry element. A non-existing stoichiometric element is treated as unknown. +This is an n-ary bridge for left, right and component properties. Relative stoichiometries ( e.g n, n+1) often used for describing polymerization is not supported.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#TemplateReaction --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#TemplateReaction"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:comment rdf:datatype="&xsd;string">Definiton: An interaction where a macromolecule is polymerized from a + template macromolecule. + +Rationale: This is an abstraction over multiple (not explicitly stated) biochemical + reactions. The ubiquitous molecules (NTP and amino acids) consumed are also usually + omitted. Template reaction is non-stoichiometric, does not obey law of + mass conservation and temporally non-atomic. It, however, provides a + mechanism to capture processes that are central to all living organisms. + +Usage: Regulation of TemplateReaction, e.g. via a transcription factor can be + captured using TemplateReactionRegulation. TemplateReaction can also be + indirect for example, it is not necessary to represent intermediary mRNA + for describing expression of a protein. It was decided to not subclass + TemplateReaction to subtypes such as transcription of translation for the + sake of simplicity. If needed these subclasses can be added in the + future. + +Examples: Transcription, translation, replication, reverse transcription. E.g. + DNA to RNA is transcription, RNA to protein is translation and DNA to + protein is protein expression from DNA.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#TemplateReactionRegulation --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#TemplateReactionRegulation"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#controlled"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReaction"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#controlType"/> + <owl:allValuesFrom> + <rdfs:Datatype> + <owl:oneOf> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">ACTIVATION</rdf:first> + <rdf:rest> + <rdf:Description> + <rdf:type rdf:resource="&rdf;List"/> + <rdf:first rdf:datatype="&xsd;string">INHIBITION</rdf:first> + <rdf:rest rdf:resource="&rdf;nil"/> + </rdf:Description> + </rdf:rest> + </rdf:Description> + </owl:oneOf> + </rdfs:Datatype> + </owl:allValuesFrom> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#controller"/> + <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:comment rdf:datatype="&xsd;string">Definition: Regulation of an expression reaction by a controlling element such as a transcription factor or microRNA. + +Usage: To represent the binding of the transcription factor to a regulatory element in the TemplateReaction, create a complex of the transcription factor and the regulatory element and set that as the controller.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference to the BRENDA (BTO). Homepage at http://www.brenda-enzymes.info/. Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=BTO</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Transport --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Transport"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: An conversion in which molecules of one or more physicalEntity pools change their subcellular location and become a member of one or more other physicalEntity pools. A transport interaction does not include the transporter entity, even if one is required in order for the transport to occur. Instead, transporters are linked to transport interactions via the catalysis class. + +Usage: If there is a simultaneous chemical modification of the participant(s), use transportWithBiochemicalReaction class. + +Synonyms: translocation. + +Examples: The movement of Na+ into the cell through an open voltage-gated channel.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#TransportWithBiochemicalReaction --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#TransportWithBiochemicalReaction"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction"/> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Transport"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A conversion interaction that is both a biochemicalReaction and a transport. In transportWithBiochemicalReaction interactions, one or more of the substrates changes both their location and their physical structure. Active transport reactions that use ATP as an energy source fall under this category, even if the only covalent change is the hydrolysis of ATP to ADP. + +Rationale: This class was added to support a large number of transport events in pathway databases that have a biochemical reaction during the transport process. It is not expected that other double inheritance subclasses will be added to the ontology at the same level as this class. + +Examples: In the PEP-dependent phosphotransferase system, transportation of sugar into an E. coli cell is accompanied by the sugar's phosphorylation as it crosses the plasma membrane.</rdfs:comment> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.9</disponte:probability> + <owl:annotatedTarget rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction"/> + <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TransportWithBiochemicalReaction"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.8</disponte:probability> + <owl:annotatedTarget rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Transport"/> + <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TransportWithBiochemicalReaction"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#UnificationXref --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#UnificationXref"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#db"/> + <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:subClassOf> + <owl:Restriction> + <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#id"/> + <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality> + </owl:Restriction> + </rdfs:subClassOf> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A unification xref defines a reference to an entity in an external resource that has the same biological identity as the referring entity +Rationale: Unification xrefs are critically important for data integration. In the future they may be replaced by direct miriam links and rdf:id based identity management. + +Usage: For example, if one wished to link from a database record, C, describing a chemical compound in a BioPAX data collection to a record, C', describing the same chemical compound in an external database, one would use a unification xref since records C and C' describe the same biological identity. Generally, unification xrefs should be used whenever possible, although there are cases where they might not be useful, such as application to application data exchange.Identity of interactions can be computed based on the identity of its participants. An xref in a protein pointing to a gene, e.g. in the LocusLink database17, would not be a unification xref since the two entities do not have the same biological identity (one is a protein, the other is a gene). Instead, this link should be a captured as a relationship xref. References to an external controlled vocabulary term within the OpenControlledVocabulary class should use a unification xref where possible (e.g. GO:0005737). +Examples: An xref in a protein instance pointing to an entry in the Swiss-Prot database, and an xref in an RNA instance pointing to the corresponding RNA sequence in the RefSeq database..</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#UtilityClass --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"> + <rdfs:comment rdf:datatype="&xsd;string">Definition: This is a placeholder for classes, used for annotating the "Entity" and its subclasses. Mostly, these are not an "Entity" themselves. Examples include references to external databases, controlled vocabularies, evidence and provenance. + +Rationale: Utility classes are created when simple slots are insufficient to describe an aspect of an entity or to increase compatibility of this ontology with other standards. + +Usage: The utilityClass class is actually a metaclass and is only present to organize the other helper classes under one class hierarchy; instances of utilityClass should never be created.</rdfs:comment> + </owl:Class> + + + + <!-- http://www.biopax.org/release/biopax-level3.owl#Xref --> + + <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Xref"> + <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/> + <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference from an instance of a class in this ontology to an object in an external resource. +Rationale: Xrefs in the future can be removed in the future in favor of explicit miram links. +Usage: For most cases one of the subclasses of xref should be used.</rdfs:comment> + </owl:Class> +</rdf:RDF> + + + +<!-- Generated by the OWL API (version 3.5.0) http://owlapi.sourceforge.net --> +'). diff --git a/examples/trill/commander.pl b/examples/trill/commander.pl new file mode 100644 index 0000000..d3c1c1e --- /dev/null +++ b/examples/trill/commander.pl @@ -0,0 +1,14 @@ +:-use_module(library(trill)). + +:-trill. + +/** <examples> + +?- instanceOf(commander,john,Expl). + +*/ +subClassOf(allValuesFrom(commands,soldier),commander). +classAssertion(guard,pete). +classAssertion(guard,al). +classAssertion(allValuesFrom(commands,guard),john). +subClassOf(guard,soldier). diff --git a/examples/trill/examples_trill.swinb b/examples/trill/examples_trill.swinb new file mode 100644 index 0000000..ad33dac --- /dev/null +++ b/examples/trill/examples_trill.swinb @@ -0,0 +1,19 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +# Welcome to TRILL on SWISH + +You are reading a TRILL on SWISH _notebook_. A notebook is a mixture of _text_, _programs_ and _queries_. This notebook gives an overview of example programs shipped with TRILL on SWISH. + +- *Examples* + - [Biopax](example/trill/biopaxLevel3.pl) models metabolic pathways ([Home Page](http://www.biopax.org/)). + - [BRCA](example/trill/BRCA.pl) models risk factor of breast cancer, from Klinov, P., Parsia, B.: _Optimization and evaluation of reasoning in probabilistic + description logic: Towards a systematic approach_. In: International Semantic Web Conference. LNCS, vol. 5318, pp. 213-228. Springer (2008). + - [DBPedia](example/trill/DBPedia.pl) is an extract of the DBPedia ontology, it contains structured information from Wikipedia ([Home Page](http://dbpedia.org/)). + - [people+pets](example/trill/peoplePets.pl) uses both RDF/XML and Prolog syntax. It is inpired by the people+pets ontology from Patel-Schneider, P, F., Horrocks, I., and Bechhofer, S. 2003. _Tutorial on OWL_. The knowledge base indicates that the individuals that own an animal which is a pet are nature lovers, from Zese, R.: _Reasoning with Probabilistic Logics_. ArXiv e-prints 1405.0915v3. Doctoral Consortium of the 30th International Conference on Logic Programming (ICLP 2014), July 19-22, Vienna, Austria. + - [Vicodi](example/trill/vicodi.pl) is an extract of the Vicodi knowledge base that contains information on European history ([Home Page](http://www.vicodi.org/)). + - [Commander](example/trill/commander.pl) is an example using only Prolog syntax. + - [John employee](example/trill/johnEmployee.pl) is the example shown in help. +</div> + +</div> diff --git a/examples/trill/johnEmployee.pl b/examples/trill/johnEmployee.pl new file mode 100644 index 0000000..fa7a1ef --- /dev/null +++ b/examples/trill/johnEmployee.pl @@ -0,0 +1,42 @@ +:-use_module(library(trill)). + +:-trill. + +/** <examples> + +?- instanceOf(person,john,Expl). + +*/ + +owl_rdf('<?xml version="1.0"?> +<rdf:RDF xmlns="http://example.foo#" + xml:base="http://example.foo" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:xml="http://www.w3.org/XML/1998/namespace" + xmlns:xsd="http://www.w3.org/2001/XMLSchema#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> + <owl:Ontology rdf:about="http://example.foo"/> + + <!-- Classes --> + <owl:Class rdf:about="http://example.foo#worker"> + <rdfs:subClassOf rdf:resource="http://example.foo#person"/> + </owl:Class> + +</rdf:RDF>'). +subClassOf('employee','worker'). +owl_rdf('<?xml version="1.0"?> +<rdf:RDF xmlns="http://example.foo#" + xml:base="http://example.foo" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:xml="http://www.w3.org/XML/1998/namespace" + xmlns:xsd="http://www.w3.org/2001/XMLSchema#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> + <owl:Ontology rdf:about="http://example.foo"/> + + <!-- Individuals --> + <owl:NamedIndividual rdf:about="http://example.foo#john"> + <rdf:type rdf:resource="http://example.foo#employee"/> + </owl:NamedIndividual> +</rdf:RDF>'). diff --git a/examples/trill/peoplePets.pl b/examples/trill/peoplePets.pl new file mode 100644 index 0000000..25f543a --- /dev/null +++ b/examples/trill/peoplePets.pl @@ -0,0 +1,194 @@ +:-use_module(library(trill)). + +:-trill. + +/* +This knowledge base is inpired by the people+pets ontology from +Patel-Schneider, P, F., Horrocks, I., and Bechhofer, S. 2003. Tutorial on OWL. +The knowledge base indicates that the individuals that own an animal which is a pet are nature lovers, from +Zese, R.: Reasoning with Probabilistic Logics. ArXiv e-prints 1405.0915v3. +Doctoral Consortium of the 30th International Conference on Logic Programming (ICLP 2014), July 19-22, Vienna, Austria. +*/ + +/** <examples> + +?- prob_instanceOf('natureLover','Kevin',Prob). +?- instanceOf('natureLover','Kevin',ListExpl). + +*/ + +owl_rdf('<?xml version="1.0"?> + +<!DOCTYPE rdf:RDF [ + <!ENTITY owl "http://www.w3.org/2002/07/owl#" > + <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > + <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > + <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > + <!ENTITY disponte "https://sites.google.com/a/unife.it/ml/disponte#" > +]> + + +<rdf:RDF xmlns="http://cohse.semanticweb.org/ontologies/people#" + xml:base="http://cohse.semanticweb.org/ontologies/people" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:xsd="http://www.w3.org/2001/XMLSchema#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:disponte="https://sites.google.com/a/unife.it/ml/disponte#"> + <owl:Ontology rdf:about="http://cohse.semanticweb.org/ontologies/people"/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Annotation properties + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- https://sites.google.com/a/unife.it/ml/disponte#probability --> + + <owl:AnnotationProperty rdf:about="&disponte;probability"/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Object Properties + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://cohse.semanticweb.org/ontologies/people#has_animal --> + + <owl:ObjectProperty rdf:about="http://cohse.semanticweb.org/ontologies/people#has_animal"> + <rdfs:label>has_animal</rdfs:label> + <rdfs:comment></rdfs:comment> + </owl:ObjectProperty> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Classes + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://cohse.semanticweb.org/ontologies/people#cat --> + + <!--owl:Class rdf:about="http://cohse.semanticweb.org/ontologies/people#cat"> + <rdfs:label>cat</rdfs:label> + <rdfs:subClassOf rdf:resource="http://cohse.semanticweb.org/ontologies/people#pet"/> + <rdfs:comment></rdfs:comment> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.6</disponte:probability> + <owl:annotatedSource rdf:resource="http://cohse.semanticweb.org/ontologies/people#cat"/> + <owl:annotatedTarget rdf:resource="http://cohse.semanticweb.org/ontologies/people#pet"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom--> + + + + <!-- http://cohse.semanticweb.org/ontologies/people#natureLover --> + + <owl:Class rdf:about="http://cohse.semanticweb.org/ontologies/people#natureLover"/> + + + + <!-- http://cohse.semanticweb.org/ontologies/people#pet --> + + <owl:Class rdf:about="http://cohse.semanticweb.org/ontologies/people#pet"/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Individuals + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://cohse.semanticweb.org/ontologies/people#Fluffy --> + + <owl:NamedIndividual rdf:about="http://cohse.semanticweb.org/ontologies/people#Fluffy"> + <rdf:type rdf:resource="http://cohse.semanticweb.org/ontologies/people#cat"/> + <rdfs:label>Fuffy</rdfs:label> + <rdfs:comment></rdfs:comment> + </owl:NamedIndividual> + <owl:Axiom> + <disponte:probability>0.4</disponte:probability> + <owl:annotatedSource rdf:resource="http://cohse.semanticweb.org/ontologies/people#Fluffy"/> + <owl:annotatedTarget rdf:resource="http://cohse.semanticweb.org/ontologies/people#cat"/> + <owl:annotatedProperty rdf:resource="&rdf;type"/> + </owl:Axiom> + + + + <!-- http://cohse.semanticweb.org/ontologies/people#Kevin --> + + <owl:NamedIndividual rdf:about="http://cohse.semanticweb.org/ontologies/people#Kevin"> + <rdfs:label>Kevin</rdfs:label> + <rdfs:comment></rdfs:comment> + <has_animal rdf:resource="http://cohse.semanticweb.org/ontologies/people#Fluffy"/> + <has_animal rdf:resource="http://cohse.semanticweb.org/ontologies/people#Tom"/> + </owl:NamedIndividual> + + + + <!-- http://cohse.semanticweb.org/ontologies/people#Tom --> + + <owl:NamedIndividual rdf:about="http://cohse.semanticweb.org/ontologies/people#Tom"> + <rdf:type rdf:resource="http://cohse.semanticweb.org/ontologies/people#cat"/> + <rdfs:label>Tom</rdfs:label> + <rdfs:comment></rdfs:comment> + </owl:NamedIndividual> + <owl:Axiom> + <disponte:probability>0.3</disponte:probability> + <owl:annotatedSource rdf:resource="http://cohse.semanticweb.org/ontologies/people#Tom"/> + <owl:annotatedTarget rdf:resource="http://cohse.semanticweb.org/ontologies/people#cat"/> + <owl:annotatedProperty rdf:resource="&rdf;type"/> + </owl:Axiom> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // General axioms + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + <owl:Axiom> + <owl:annotatedTarget rdf:resource="http://cohse.semanticweb.org/ontologies/people#natureLover"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + <owl:annotatedSource> + <owl:Restriction> + <rdfs:subClassOf rdf:resource="http://cohse.semanticweb.org/ontologies/people#natureLover"/> + <owl:onProperty rdf:resource="http://cohse.semanticweb.org/ontologies/people#has_animal"/> + <owl:someValuesFrom rdf:resource="http://cohse.semanticweb.org/ontologies/people#pet"/> + </owl:Restriction> + </owl:annotatedSource> + </owl:Axiom> +</rdf:RDF>'). + +subClassOf('cat','pet'). +annotationAssertion('disponte:probability',subClassOf('cat','pet'),literal('0.6')). diff --git a/examples/trill/vicodi.pl b/examples/trill/vicodi.pl new file mode 100644 index 0000000..8cee136 --- /dev/null +++ b/examples/trill/vicodi.pl @@ -0,0 +1,1707 @@ +:-use_module(library(trill)). + +:-trill. + +/* +This knowledge base is an extract of the Vicodi knowledge base that contains information on European history. +http://www.vicodi.org/ +*/ + +/** <examples> + +?- prob_instanceOf('vicodi:Role','vicodi:Anthony-van-Dyck-is-Painter-in-Flanders',Prob). +?- instanceOf('vicodi:Role','vicodi:Anthony-van-Dyck-is-Painter-in-Flanders',ListExpl). + +?- prob_sub_class('vicodi:Painter','vicodi:Role',Prob). +?- sub_class('vicodi:Painter','vicodi:Role',ListExpl). + +*/ + +owl_rdf('<?xml version="1.0"?> + +<!DOCTYPE rdf:RDF [ + <!ENTITY owl "http://www.w3.org/2002/07/owl#" > + <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > + <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > + <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > + <!ENTITY disponte "https://sites.google.com/a/unife.it/ml/disponte#" > +]> + + +<rdf:RDF xmlns="http://example.org#" + xml:base="http://example.org" + xmlns:vicodi="http://vicodi.org/ontology#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:xsd="http://www.w3.org/2001/XMLSchema#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:disponte="https://sites.google.com/a/unife.it/ml/disponte#"> + <owl:Ontology rdf:about="http://example.org"/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Annotation properties + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- https://sites.google.com/a/unife.it/ml/disponte#probability --> + + <owl:AnnotationProperty rdf:about="&disponte;probability"/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Object Properties + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://vicodi.org/ontology#exists --> + + <owl:ObjectProperty rdf:about="http://vicodi.org/ontology#exists"> + <rdfs:range rdf:resource="http://vicodi.org/ontology#Time"/> + <rdfs:domain rdf:resource="http://vicodi.org/ontology#Time-Dependent"/> + <rdfs:subPropertyOf rdf:resource="http://vicodi.org/ontology#related"/> + </owl:ObjectProperty> + + + + <!-- http://vicodi.org/ontology#hasCategory --> + + <owl:ObjectProperty rdf:about="http://vicodi.org/ontology#hasCategory"> + <rdfs:range rdf:resource="http://vicodi.org/ontology#Category"/> + <rdfs:domain rdf:resource="http://vicodi.org/ontology#Time-Dependent"/> + <rdfs:subPropertyOf rdf:resource="http://vicodi.org/ontology#related"/> + </owl:ObjectProperty> + + + + <!-- http://vicodi.org/ontology#hasLocationPart --> + + <owl:ObjectProperty rdf:about="http://vicodi.org/ontology#hasLocationPart"> + <rdfs:domain rdf:resource="http://vicodi.org/ontology#Location"/> + <rdfs:range rdf:resource="http://vicodi.org/ontology#Location"/> + <rdfs:subPropertyOf rdf:resource="http://vicodi.org/ontology#related"/> + </owl:ObjectProperty> + + + + <!-- http://vicodi.org/ontology#hasRole --> + + <owl:ObjectProperty rdf:about="http://vicodi.org/ontology#hasRole"> + <rdfs:domain rdf:resource="http://vicodi.org/ontology#Flavour"/> + <rdfs:range rdf:resource="http://vicodi.org/ontology#Role"/> + <rdfs:subPropertyOf rdf:resource="http://vicodi.org/ontology#related"/> + </owl:ObjectProperty> + + + + <!-- http://vicodi.org/ontology#isLocationPartOf --> + + <owl:ObjectProperty rdf:about="http://vicodi.org/ontology#isLocationPartOf"> + <rdfs:domain rdf:resource="http://vicodi.org/ontology#Location"/> + <rdfs:range rdf:resource="http://vicodi.org/ontology#Location"/> + <rdfs:subPropertyOf rdf:resource="http://vicodi.org/ontology#related"/> + </owl:ObjectProperty> + + + + <!-- http://vicodi.org/ontology#related --> + + <owl:ObjectProperty rdf:about="http://vicodi.org/ontology#related"> + <rdfs:range rdf:resource="http://vicodi.org/ontology#VicodiOI"/> + <rdfs:domain rdf:resource="http://vicodi.org/ontology#VicodiOI"/> + </owl:ObjectProperty> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Data properties + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://vicodi.org/ontology#intervalEnd --> + + <owl:DatatypeProperty rdf:about="http://vicodi.org/ontology#intervalEnd"> + <rdfs:domain rdf:resource="http://vicodi.org/ontology#TemporalInterval"/> + <rdfs:range rdf:resource="&rdfs;Literal"/> + </owl:DatatypeProperty> + + + + <!-- http://vicodi.org/ontology#intervalStart --> + + <owl:DatatypeProperty rdf:about="http://vicodi.org/ontology#intervalStart"> + <rdfs:domain rdf:resource="http://vicodi.org/ontology#TemporalInterval"/> + <rdfs:range rdf:resource="&rdfs;Literal"/> + </owl:DatatypeProperty> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Classes + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://kaon.semanticweb.org/2001/11/kaon-lexical#Root --> + + <owl:Class rdf:about="http://kaon.semanticweb.org/2001/11/kaon-lexical#Root"/> + + + + <!-- http://vicodi.org/ontology#Abbey --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Abbey"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Building"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Abstract-Notion --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Abstract-Notion"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Flavour"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Animal --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Animal"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Natural-Object"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Architect --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Architect"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Creator"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Armament --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Armament"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Artefact --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Artefact"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Object"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Artist --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Artist"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Creator"/> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.85</disponte:probability> + <owl:annotatedSource rdf:resource="http://vicodi.org/ontology#Artist"/> + <owl:annotatedTarget rdf:resource="http://vicodi.org/ontology#Creator"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + + + + <!-- http://vicodi.org/ontology#Artistic-Movement --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Artistic-Movement"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Movement"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Artistic-Style --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Artistic-Style"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Abstract-Notion"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Author --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Author"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Creator"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Badge --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Badge"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Conceptual-Object"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Battle --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Battle"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Board --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Board"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Management-Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Book --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Book"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Writing"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Building --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Building"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Category --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Category"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#VicodiOI"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Cathedral --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Cathedral"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Building"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Church --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Church"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Building"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Church-Reformer --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Church-Reformer"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Religious-Leader"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#City --> + + <owl:Class rdf:about="http://vicodi.org/ontology#City"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Settlement"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Cleric --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Cleric"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Clerical-Leader --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Clerical-Leader"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Leader"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Clothing --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Clothing"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Commodity --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Commodity"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Natural-Object"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Composer --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Composer"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artist"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Conceptual-Object --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Conceptual-Object"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Object"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Country --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Country"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Location"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Creator --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Creator"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.8</disponte:probability> + <owl:annotatedSource rdf:resource="http://vicodi.org/ontology#Creator"/> + <owl:annotatedTarget rdf:resource="http://vicodi.org/ontology#Person-Role"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + + + + <!-- http://vicodi.org/ontology#Crime --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Crime"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Cultural-Agreement --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Cultural-Agreement"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Cultural-Organisation --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Cultural-Organisation"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Diplomat --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Diplomat"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Functionary"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Disaster --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Disaster"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Discoverer --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Discoverer"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Disease --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Disease"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Natural-Object"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Dynasty --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Dynasty"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Social-Group"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Ecclesiarch --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Ecclesiarch"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Religious-Leader"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Economic-Enterprise --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Economic-Enterprise"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Economic-Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Economic-Organisation --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Economic-Organisation"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Economic-Symbol --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Economic-Symbol"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Symbol"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Educational-Organisation --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Educational-Organisation"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Election --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Election"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Emperor --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Emperor"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Head-of-State"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Engineer --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Engineer"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Creator"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Environment --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Environment"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Natural-Object"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Ethnic-Group --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Ethnic-Group"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Social-Group"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Event --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Event"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Flavour"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Fictional-Event --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Fictional-Event"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Fictional-Person --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Fictional-Person"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Individual"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Field-of-Knowledge --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Field-of-Knowledge"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Intellectual-Construct"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Flavour --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Flavour"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Time-Dependent"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Food --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Food"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Natural-Object"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Functionary --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Functionary"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Geographical-Discovery --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Geographical-Discovery"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Geographical-Feature --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Geographical-Feature"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Location"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Geographical-Region --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Geographical-Region"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Geographical-Feature"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Governmental-Organisation --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Governmental-Organisation"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Political-Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Head-of-Government --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Head-of-Government"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Secular-Leader"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Head-of-State --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Head-of-State"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Secular-Leader"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Idea --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Idea"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Abstract-Notion"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Ideology --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Ideology"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Abstract-Notion"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Illness --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Illness"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Life-Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Individual --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Individual"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Flavour"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Intellectual-Construct --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Intellectual-Construct"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Abstract-Notion"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Intellectual-Movement --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Intellectual-Movement"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Movement"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#International-Alliance --> + + <owl:Class rdf:about="http://vicodi.org/ontology#International-Alliance"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Political-Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#International-Organisation --> + + <owl:Class rdf:about="http://vicodi.org/ontology#International-Organisation"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Intra-State-Group --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Intra-State-Group"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Location"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Inventor --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Inventor"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Journal --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Journal"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Writing"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#King --> + + <owl:Class rdf:about="http://vicodi.org/ontology#King"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Head-of-State"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Landmark --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Landmark"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Geographical-Feature"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Language --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Language"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Abstract-Notion"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Leader --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Leader"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#League --> + + <owl:Class rdf:about="http://vicodi.org/ontology#League"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Political-Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Legislation --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Legislation"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Life-Event --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Life-Event"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Liturgical-Object --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Liturgical-Object"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Location --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Location"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Flavour"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Magnate --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Magnate"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Secular-Leader"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Management-Organisation --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Management-Organisation"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Masonic-Lodge --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Masonic-Lodge"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Cultural-Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Measurable-Trend --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Measurable-Trend"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Abstract-Notion"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Meeting --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Meeting"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Military-Organisation --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Military-Organisation"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Military-Person --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Military-Person"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Military-Unit --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Military-Unit"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Military-Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Minister --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Minister"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Functionary"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Monastery --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Monastery"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Building"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Movement --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Movement"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Social-Group"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#National-Symbol --> + + <owl:Class rdf:about="http://vicodi.org/ontology#National-Symbol"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Symbol"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Natural-Object --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Natural-Object"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Object"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Newspaper --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Newspaper"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Writing"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Non-Military-Conflict --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Non-Military-Conflict"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Object --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Object"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Flavour"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Organisation --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Organisation"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Flavour"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Other-Religious-Leader --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Other-Religious-Leader"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Religious-Leader"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Other-Religious-Person --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Other-Religious-Person"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Painter --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Painter"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artist"/> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.5</disponte:probability> + <owl:annotatedTarget rdf:resource="http://vicodi.org/ontology#Artist"/> + <owl:annotatedSource rdf:resource="http://vicodi.org/ontology#Painter"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + + + + <!-- http://vicodi.org/ontology#Painting --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Painting"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Work-of-Art"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Pamphlet --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Pamphlet"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Writing"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Party --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Party"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Political-Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Pastime --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Pastime"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Conceptual-Object"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Period --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Period"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Period-in-Office --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Period-in-Office"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Person --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Person"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Individual"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Person-Role --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Person-Role"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Role"/> + </owl:Class> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.9</disponte:probability> + <owl:annotatedSource rdf:resource="http://vicodi.org/ontology#Person-Role"/> + <owl:annotatedTarget rdf:resource="http://vicodi.org/ontology#Role"/> + <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/> + </owl:Axiom> + + + + <!-- http://vicodi.org/ontology#Philanthropist --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Philanthropist"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Philosopher --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Philosopher"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Scientist"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Piece-of-Music --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Piece-of-Music"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Work-of-Art"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Political-Organisation --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Political-Organisation"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Political-Region --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Political-Region"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Location"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Political-Symbol --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Political-Symbol"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Symbol"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Politician --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Politician"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Functionary"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Pollution --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Pollution"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Pope --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Pope"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Religious-Leader"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Population-Movement --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Population-Movement"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Prince --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Prince"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Head-of-State"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Public-Oration --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Public-Oration"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Publisher --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Publisher"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Creator"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Queen --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Queen"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Head-of-State"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Relic --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Relic"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Religious-Community --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Community"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Religious-Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Religious-Ideology --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Ideology"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Ideology"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Religious-Leader --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Leader"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Leader"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Religious-Movement --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Movement"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Movement"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Religious-Order --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Order"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Religious-Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Religious-Organisation --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Organisation"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Cultural-Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Religious-Practice --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Practice"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Conceptual-Object"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Religious-Symbol --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Symbol"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Symbol"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Representative-Institution --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Representative-Institution"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Political-Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Ritual --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Ritual"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Conceptual-Object"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Role --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Role"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Time-Dependent"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Saint --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Saint"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Scandal --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Scandal"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Scientific-Instrument --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Scientific-Instrument"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Scientist --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Scientist"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Sculptor --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Sculptor"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artist"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Sculpture --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Sculpture"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Work-of-Art"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Secular-Ideology --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Secular-Ideology"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Ideology"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Secular-Leader --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Secular-Leader"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Leader"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Secular-Movement --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Secular-Movement"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Movement"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Settlement --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Settlement"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Location"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Ship --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Ship"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Vehicle"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Social-Group --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Social-Group"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Flavour"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Social-Stratum --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Social-Stratum"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Social-Group"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Stereotype-Group --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Stereotype-Group"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Social-Group"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Structure --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Structure"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Sultan --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Sultan"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Head-of-State"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Symbol --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Symbol"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Role"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Technical-Scientific-Advance --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Technical-Scientific-Advance"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#TemporalInterval --> + + <owl:Class rdf:about="http://vicodi.org/ontology#TemporalInterval"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Time"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Time --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Time"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#VicodiOI"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Time-Dependent --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Time-Dependent"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#VicodiOI"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Trade-Association --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Trade-Association"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Economic-Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Trades-Union --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Trades-Union"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Economic-Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Train --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Train"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Vehicle"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Treaty --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Treaty"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#University --> + + <owl:Class rdf:about="http://vicodi.org/ontology#University"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Educational-Organisation"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Uprising --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Uprising"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Vehicle --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Vehicle"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#VicodiOI --> + + <owl:Class rdf:about="http://vicodi.org/ontology#VicodiOI"> + <rdfs:subClassOf rdf:resource="http://kaon.semanticweb.org/2001/11/kaon-lexical#Root"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Village --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Village"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Settlement"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#War --> + + <owl:Class rdf:about="http://vicodi.org/ontology#War"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Water --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Water"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Geographical-Feature"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Work-of-Art --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Work-of-Art"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/> + </owl:Class> + + + + <!-- http://vicodi.org/ontology#Writing --> + + <owl:Class rdf:about="http://vicodi.org/ontology#Writing"> + <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/> + </owl:Class> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Individuals + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://vicodi.org/ontology#Anthony-van-Dyck --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#Anthony-van-Dyck"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#Anthony-van-Dyck-is-Painter-in-Flanders --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#Anthony-van-Dyck-is-Painter-in-Flanders"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Painter"/> + </owl:NamedIndividual> + <owl:Axiom> + <disponte:probability rdf:datatype="&xsd;decimal">0.9</disponte:probability> + <owl:annotatedSource rdf:resource="http://vicodi.org/ontology#Anthony-van-Dyck-is-Painter-in-Flanders"/> + <owl:annotatedTarget rdf:resource="http://vicodi.org/ontology#Painter"/> + <owl:annotatedProperty rdf:resource="&rdf;type"/> + </owl:Axiom> + + + + <!-- http://vicodi.org/ontology#%C3%81rp%C3%A1d-Dynasty --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%81rp%C3%A1d-Dynasty"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Dynasty"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#%C3%81rp%C3%A1d-Goncz --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%81rp%C3%A1d-Goncz"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#%C3%81rp%C3%A1d-Goncz-is-Head-of-Government-in-Hungary-between-1990-2000 --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%81rp%C3%A1d-Goncz-is-Head-of-Government-in-Hungary-between-1990-2000"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Head-of-Government"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#%C3%81rp%C3%A1d-Szakasits --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%81rp%C3%A1d-Szakasits"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#%C3%81rp%C3%A1d-Szakasits-is-Head-of-Government-in-Hungary-between-1948-1950 --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%81rp%C3%A1d-Szakasits-is-Head-of-Government-in-Hungary-between-1948-1950"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Head-of-Government"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#%C3%81rp%C3%A1d-of-Hungary --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%81rp%C3%A1d-of-Hungary"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#%C3%81rp%C3%A1d-of-Hungary-is-Prince-in-Hungary-between-896-907 --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%81rp%C3%A1d-of-Hungary-is-Prince-in-Hungary-between-896-907"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Prince"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#%C3%86thelwulf-King-of-Wessex --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%86thelwulf-King-of-Wessex"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#%C3%89douard-Drumont --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%89douard-Drumont"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#%C3%89douard-Herriot --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%89douard-Herriot"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#%C3%89douard-Valliant --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%89douard-Valliant"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#%C3%89mile-Vandervelde --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%89mile-Vandervelde"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#1st-Abdication-of-Napoleon --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#1st-Abdication-of-Napoleon"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Event"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#1st-Battle-of-Poitiers --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#1st-Battle-of-Poitiers"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Battle"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#1st-Battle-of-St-Albans --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#1st-Battle-of-St-Albans"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Battle"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#12-year-truce --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#12-year-truce"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Non-Military-Conflict"/> + </owl:NamedIndividual> + + + + <!-- http://vicodi.org/ontology#20-year-building-programme-for-German-high-seas-fleet --> + + <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#20-year-building-programme-for-German-high-seas-fleet"> + <rdf:type rdf:resource="http://vicodi.org/ontology#Legislation"/> + </owl:NamedIndividual> +</rdf:RDF> + + + +<!-- Generated by the OWL API (version 3.5.0) http://owlapi.sourceforge.net --> +'). diff --git a/lib/trill_on_swish/gitty_driver_bdb.pl b/lib/trill_on_swish/gitty_driver_bdb.pl new file mode 100644 index 0000000..965a998 --- /dev/null +++ b/lib/trill_on_swish/gitty_driver_bdb.pl @@ -0,0 +1,278 @@ +/* Part of SWI-Prolog + + Author: Jan Wielemaker + E-mail: J.Wielemaker@cs.vu.nl + WWW: http://www.swi-prolog.org + Copyright (C): 2015, VU University Amsterdam + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, if you link this library with other files, + compiled with a Free Software compiler, to produce an executable, this + library does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however + invalidate any other reasons why the executable file might be covered by + the GNU General Public License. +*/ + +:- module(gitty_driver_bdb, + [ gitty_close/1, % +Store + gitty_file/3, % +Store, ?Name, ?Hash + + gitty_update_head/4, % +Store, +Name, +OldCommit, +NewCommit + delete_head/2, % +Store, +Name + set_head/3, % +Store, +Name, +Hash + store_object/4, % +Store, +Hash, +Header, +Data + delete_object/2, % +Store, +Hash + + gitty_hash/2, % +Store, ?Hash + load_plain_commit/3, % +Store, +Hash, -Meta + load_object/5 % +Store, +Hash, -Data, -Type, -Size + ]). +:- use_module(library(zlib)). +:- use_module(library(dcg/basics)). +:- use_module(library(memfile)). +:- use_module(library(bdb)). + +/** <module> Gitty BDB driver + +This version of the driver uses library(bdb), the BerkeyDB database. +This driver is particularly suited for large numbers of files. The store +uses less disk space and starts much faster on large numbers of files. + +The BDB database file contains two databases: + + - =heads= maps a file name to the hash of the last object + - =objects= contains the object blobs. +*/ + + +:- dynamic + bdb_env/2, % Store, Env + bdb_db/3. % Store, Database, Handle +:- volatile + bdb_env/2, + bdb_db/3. + + +bdb_handle(Store, Database, Handle) :- + bdb_db(Store, Database, Handle), !. +bdb_handle(Store, Database, Handle) :- + with_mutex(gitty_bdb, bdb_handle_sync(Store, Database, Handle)). + +bdb_handle_sync(Store, Database, Handle) :- + bdb_db(Store, Database, Handle), !. +bdb_handle_sync(Store, Database, Handle) :- + bdb_store(Store, Env), + db_types(Database, KeyType, ValueType), + bdb_open(Database, update, Handle, + [ environment(Env), + key(KeyType), + value(ValueType) + ]), + asserta(bdb_db(Store, Database, Handle)). + +db_types(heads, atom, atom). % Name --> Hash +db_types(objects, atom, c_blob). % Hash --> Blob + +%% bdb_store(+Store, -Env) is det. +% +% Get the BDB environment for Store. + +bdb_store(Store, Env) :- + bdb_env(Store, Env), !. +bdb_store(Store, Env) :- + with_mutex(gitty_bdb, bdb_store_sync(Store, Env)). + +bdb_store_sync(Store, Env) :- + bdb_env(Store, Env), !. +bdb_store_sync(Store, Env) :- + ensure_directory(Store), + bdb_init(Env, + [ home(Store), + create(true), + thread(true), + init_txn(true), + recover(true), + register(true) + ]), + asserta(bdb_env(Store, Env)). + +ensure_directory(Dir) :- + exists_directory(Dir), !. +ensure_directory(Dir) :- + make_directory(Dir). + +%% gitty_close(+Store) is det. +% +% Close the BDB environment associated with a gitty store + +gitty_close(Store) :- + with_mutex(gitty_bdb, gitty_close_sync(Store)). + +gitty_close_sync(Store) :- + ( retract(bdb_env(Store, Env)) + -> bdb_close_environment(Env) + ; true + ). + + +%% gitty_file(+Store, ?File, ?Head) is nondet. +% +% True when File entry in the gitty store and Head is the HEAD +% revision. + +gitty_file(Store, Head, Hash) :- + bdb_handle(Store, heads, H), + ( nonvar(Head) + -> bdb_get(H, Head, Hash) + ; bdb_enum(H, Head, Hash) + ). + +%% gitty_update_head(+Store, +Name, +OldCommit, +NewCommit) is det. +% +% Update the head of a gitty store for Name. OldCommit is the +% current head and NewCommit is the new head. If Name is created, +% and thus there is no head, OldCommit must be `-`. +% +% This operation can fail because another writer has updated the +% head. This can both be in-process or another process. +% +% @error gitty(file_exists(Name) if the file already exists +% @error gitty(not_at_head(Name, OldCommit) if the head was moved +% by someone else. + +gitty_update_head(Store, Name, OldCommit, NewCommit) :- + bdb_store(Store, Env), + bdb_transaction( + Env, + gitty_update_head_sync(Store, Name, OldCommit, NewCommit)). + +gitty_update_head_sync(Store, Name, OldCommit, NewCommit) :- + bdb_handle(Store, heads, BDB), + ( OldCommit == (-) + -> ( bdb_get(BDB, Name, _) + -> throw(error(gitty(file_exists(Name),_))) + ; bdb_put(BDB, Name, NewCommit) + ) + ; ( bdb_get(BDB, Name, OldCommit) + -> bdb_put(BDB, Name, NewCommit) + ; throw(error(gitty(not_at_head(Name, OldCommit)), _)) + ) + ). + +%% delete_head(+Store, +Name) is det. +% +% Delete the named head. + +delete_head(Store, Name) :- + bdb_handle(Store, heads, BDB), + bdb_del(BDB, Name, _Old). + +%% set_head(+Store, +File, +Hash) is det. +% +% Set the head of the given File to Hash + +set_head(Store, File, Hash) :- + bdb_handle(Store, heads, BDB), + bdb_put(BDB, File, Hash). + +%% load_plain_commit(+Store, +Hash, -Meta:dict) is semidet. +% +% Load the commit data as a dict. Fails if Hash does not exist or +% is not a commit. + +load_plain_commit(Store, Hash, Meta) :- + load_object(Store, Hash, String, commit, _Size), + term_string(Meta, String, []). + +%% store_object(+Store, +Hash, +Header:string, +Data:string) is det. +% +% Store the actual object. The store must associate Hash with the +% concatenation of Hdr and Data. + +store_object(Store, Hash, Hdr, Data) :- + compress_string(Hdr, Data, Object), + bdb_handle(Store, objects, BDB), + bdb_put(BDB, Hash, Object). + +compress_string(Header, Data, String) :- + setup_call_cleanup( + new_memory_file(MF), + ( setup_call_cleanup( + open_memory_file(MF, write, Out, [encoding(utf8)]), + setup_call_cleanup( + zopen(Out, OutZ, [ format(gzip), + close_parent(false) + ]), + format(OutZ, '~s~s', [Header, Data]), + close(OutZ)), + close(Out)), + memory_file_to_string(MF, String, octet) + ), + free_memory_file(MF)). + +%% load_object(+Store, +Hash, -Data, -Type, -Size) is det. +% +% Load an object given its Hash. Data holds the content as a +% string, Type is the object type (an atom) and Size is the size +% of the object in bytes. + +load_object(Store, Hash, Data, Type, Size) :- + bdb_handle(Store, objects, BDB), + bdb_get(BDB, Hash, Blob), + setup_call_cleanup( + open_string(Blob, In), + setup_call_cleanup( + zopen(In, InZ, [ format(gzip), + close_parent(false) + ]), + ( set_stream(InZ, encoding(utf8)), + read_object(InZ, Data, Type, Size) + ), + close(InZ)), + close(In)). + +read_object(In, Data, Type, Size) :- + get_code(In, C0), + read_hdr(C0, In, Hdr), + phrase((nonblanks(TypeChars), " ", integer(Size)), Hdr), + atom_codes(Type, TypeChars), + read_string(In, _, Data). + +read_hdr(C, In, [C|T]) :- + C > 0, !, + get_code(In, C1), + read_hdr(C1, In, T). +read_hdr(_, _, []). + +%% gitty_hash(+Store, ?Hash) is nondet. +% +% True when Hash is an object in the store. + +gitty_hash(Store, Hash) :- + bdb_handle(Store, objects, BDB), + ( nonvar(Hash) + -> bdb_get(BDB, Hash, _) + ; bdb_enum(BDB, Hash, _) + ). + +%% delete_object(+Store, +Hash) +% +% Delete an existing object + +delete_object(Store, Hash) :- + bdb_handle(Store, objects, BDB), + bdb_del(BDB, Hash, _). diff --git a/lib/trill_on_swish/gitty_driver_files.pl b/lib/trill_on_swish/gitty_driver_files.pl new file mode 100644 index 0000000..19ebb19 --- /dev/null +++ b/lib/trill_on_swish/gitty_driver_files.pl @@ -0,0 +1,451 @@ +/* Part of SWI-Prolog + + Author: Jan Wielemaker + E-mail: J.Wielemaker@cs.vu.nl + WWW: http://www.swi-prolog.org + Copyright (C): 2015, VU University Amsterdam + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, if you link this library with other files, + compiled with a Free Software compiler, to produce an executable, this + library does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however + invalidate any other reasons why the executable file might be covered by + the GNU General Public License. +*/ + +:- module(gitty_driver_files, + [ gitty_close/1, % +Store + gitty_file/3, % +Store, ?Name, ?Hash + + gitty_update_head/4, % +Store, +Name, +OldCommit, +NewCommit + delete_head/2, % +Store, +Name + set_head/3, % +Store, +Name, +Hash + store_object/4, % +Store, +Hash, +Header, +Data + delete_object/2, % +Store, +Hash + + gitty_hash/2, % +Store, ?Hash + load_plain_commit/3, % +Store, +Hash, -Meta + load_object/5, % +Store, +Hash, -Data, -Type, -Size + + gitty_rescan/1 % Store + ]). +:- use_module(library(zlib)). +:- use_module(library(filesex)). +:- use_module(library(lists)). +:- use_module(library(apply)). +:- use_module(library(dcg/basics)). + +/** <module> Gitty plain files driver + +This version of the driver uses plain files to store the gitty data. It +consists of a nested directory structure with files named after the +hash. Objects and hash computation is the same as for `git`. The _heads_ +(files) are computed on startup by scanning all objects. There is a file +=ref/head= that is updated if a head is updated. Other clients can watch +this file and update their notion of the head. This implies that the +store can handle multiple clients that can access a shared file system, +optionally shared using NFS from different machines. + +The store is simple and robust. The main disadvantages are long startup +times as the store holds more objects and relatively high disk usage due +to rounding the small objects to disk allocation units. + +@bug Shared access does not work on Windows. +*/ + +:- dynamic + head/3, % Store, Name, Hash + store/2, % Store, Updated + heads_input_stream_cache/2. % Store, Stream +:- volatile + head/3, + store/2, + heads_input_stream_cache/2. % Store, Stream + +% enable/disable syncing remote servers running on the same file store. +% This facility requires shared access to files and thus doesn't work on +% Windows. + +:- if(current_prolog_flag(windows, true)). +remote_sync(false). +:- else. +remote_sync(true). +:- endif. + +%% gitty_close(+Store) is det. +% +% Close resources associated with a store. + +gitty_close(Store) :- + ( retract(heads_input_stream_cache(Store, In)) + -> close(In) + ; true + ), + retractall(head(Store,_,_)), + retractall(store(Store,_)). + + +%% gitty_file(+Store, ?File, ?Head) is nondet. +% +% True when File entry in the gitty store and Head is the HEAD +% revision. + +gitty_file(Store, Head, Hash) :- + gitty_scan(Store), + head(Store, Head, Hash). + +%% load_plain_commit(+Store, +Hash, -Meta:dict) is semidet. +% +% Load the commit data as a dict. + +load_plain_commit(Store, Hash, Meta) :- + load_object(Store, Hash, String, _, _), + term_string(Meta, String, []). + +%% store_object(+Store, +Hash, +Header:string, +Data:string) is det. +% +% Store the actual object. The store must associate Hash with the +% concatenation of Hdr and Data. + +store_object(Store, Hash, Hdr, Data) :- + sub_atom(Hash, 0, 2, _, Dir0), + sub_atom(Hash, 2, 2, _, Dir1), + sub_atom(Hash, 4, _, 0, File), + directory_file_path(Store, Dir0, D0), + ensure_directory(D0), + directory_file_path(D0, Dir1, D1), + ensure_directory(D1), + directory_file_path(D1, File, Path), + ( exists_file(Path) + -> true + ; setup_call_cleanup( + gzopen(Path, write, Out, [encoding(utf8)]), + format(Out, '~s~s', [Hdr, Data]), + close(Out)) + ). + +ensure_directory(Dir) :- + exists_directory(Dir), !. +ensure_directory(Dir) :- + make_directory(Dir). + +%% load_object(+Store, +Hash, -Data, -Type, -Size) is det. +% +% Load the given object. + +load_object(Store, Hash, Data, Type, Size) :- + hash_file(Store, Hash, Path), + setup_call_cleanup( + gzopen(Path, read, In, [encoding(utf8)]), + read_object(In, Data, Type, Size), + close(In)). + +read_object(In, Data, Type, Size) :- + get_code(In, C0), + read_hdr(C0, In, Hdr), + phrase((nonblanks(TypeChars), " ", integer(Size)), Hdr), + atom_codes(Type, TypeChars), + read_string(In, _, Data). + +read_hdr(C, In, [C|T]) :- + C > 0, !, + get_code(In, C1), + read_hdr(C1, In, T). +read_hdr(_, _, []). + +%% gitty_rescan(?Store) is det. +% +% Update our view of the shared storage for all stores matching +% Store. + +gitty_rescan(Store) :- + retractall(store(Store, _)). + +%% gitty_scan(+Store) is det. +% +% Scan gitty store for files (entries), filling head/3. This is +% performed lazily at first access to the store. +% +% @tdb Possibly we need to maintain a cached version of this +% index to avoid having to open all objects of the gitty +% store. + +gitty_scan(Store) :- + store(Store, _), !, + ( remote_sync(true) + -> with_mutex(gitty, remote_updates(Store)) + ; true + ). +gitty_scan(Store) :- + with_mutex(gitty, gitty_scan_sync(Store)). + +:- thread_local + latest/3. + +gitty_scan_sync(Store) :- + store(Store, _), !. +gitty_scan_sync(Store) :- + remote_sync(true), !, + restore_heads_from_remote(Store). +gitty_scan_sync(Store) :- + read_heads_from_objects(Store). + +%% read_heads_from_objects(+Store) is det. +% +% Establish the head(Store,File,Hash) relation by reading all +% objects and adding a fact for the most recent commit. + +read_heads_from_objects(Store) :- + gitty_scan_latest(Store), + forall(retract(latest(Name, Hash, _Time)), + assert(head(Store, Name, Hash))), + get_time(Now), + assertz(store(Store, Now)). + +%% gitty_scan_latest(+Store) +% +% Scans the gitty store, extracting the latest version of each +% named entry. + +gitty_scan_latest(Store) :- + retractall(head(Store, _, _)), + retractall(latest(_, _, _)), + ( gitty_hash(Store, Hash), + load_object(Store, Hash, Data, commit, _Size), + term_string(Meta, Data, []), + _{name:Name, time:Time} :< Meta, + ( latest(Name, _, OldTime), + OldTime > Time + -> true + ; retractall(latest(Name, _, _)), + assertz(latest(Name, Hash, Time)) + ), + fail + ; true + ). + + +%% gitty_hash(+Store, ?Hash) is nondet. +% +% True when Hash is an object in the store. + +gitty_hash(Store, Hash) :- + var(Hash), !, + access_file(Store, exist), + directory_files(Store, Level0), + member(E0, Level0), + E0 \== '..', + atom_length(E0, 2), + directory_file_path(Store, E0, Dir0), + directory_files(Dir0, Level1), + member(E1, Level1), + E1 \== '..', + atom_length(E1, 2), + directory_file_path(Dir0, E1, Dir), + directory_files(Dir, Files), + member(File, Files), + atom_length(File, 36), + atomic_list_concat([E0,E1,File], Hash). +gitty_hash(Store, Hash) :- + hash_file(Store, Hash, File), + exists_file(File). + +%% delete_object(+Store, +Hash) +% +% Delete an existing object + +delete_object(Store, Hash) :- + hash_file(Store, Hash, File), + delete_file(File). + +hash_file(Store, Hash, Path) :- + sub_atom(Hash, 0, 2, _, Dir0), + sub_atom(Hash, 2, 2, _, Dir1), + sub_atom(Hash, 4, _, 0, File), + atomic_list_concat([Store, Dir0, Dir1, File], /, Path). + + + /******************************* + * SYNCING * + *******************************/ + +%% gitty_update_head(+Store, +Name, +OldCommit, +NewCommit) is det. +% +% Update the head of a gitty store for Name. OldCommit is the +% current head and NewCommit is the new head. If Name is created, +% and thus there is no head, OldCommit must be `-`. +% +% This operation can fail because another writer has updated the +% head. This can both be in-process or another process. + +gitty_update_head(Store, Name, OldCommit, NewCommit) :- + with_mutex(gitty, + gitty_update_head_sync(Store, Name, OldCommit, NewCommit)). + +gitty_update_head_sync(Store, Name, OldCommit, NewCommit) :- + remote_sync(true), !, + setup_call_cleanup( + heads_output_stream(Store, HeadsOut), + gitty_update_head_sync(Store, Name, OldCommit, NewCommit, HeadsOut), + close(HeadsOut)). +gitty_update_head_sync(Store, Name, OldCommit, NewCommit) :- + gitty_update_head_sync2(Store, Name, OldCommit, NewCommit). + +gitty_update_head_sync(Store, Name, OldCommit, NewCommit, HeadsOut) :- + gitty_update_head_sync2(Store, Name, OldCommit, NewCommit), + format(HeadsOut, '~q.~n', [head(Name, OldCommit, NewCommit)]). + +gitty_update_head_sync2(Store, Name, OldCommit, NewCommit) :- + gitty_scan(Store), % fetch remote changes + ( OldCommit == (-) + -> ( head(Store, Name, _) + -> throw(error(gitty(file_exists(Name),_))) + ; assertz(head(Store, Name, NewCommit)) + ) + ; ( retract(head(Store, Name, OldCommit)) + -> assertz(head(Store, Name, NewCommit)) + ; throw(error(gitty(not_at_head(Name, OldCommit)), _)) + ) + ). + +remote_updates(Store) :- + remote_updates(Store, List), + maplist(update_head(Store), List). + +update_head(Store, head(Name, OldCommit, NewCommit)) :- + ( OldCommit == (-) + -> \+ head(Store, Name, _) + ; retract(head(Store, Name, OldCommit)) + ), !, + assert(head(Store, Name, NewCommit)). +update_head(_, _). + +%% remote_updates(+Store, -List) is det. +% +% Find updates from other gitties on the same filesystem. Note +% that we have to push/pop the input context to avoid creating a +% notion of an input context which possibly relate messages +% incorrectly to the sync file. + +remote_updates(Store, List) :- + heads_input_stream(Store, Stream), + setup_call_cleanup( + '$push_input_context'(gitty_sync), + read_new_terms(Stream, List), + '$pop_input_context'). + +read_new_terms(Stream, Terms) :- + read(Stream, First), + read_new_terms(First, Stream, Terms). + +read_new_terms(end_of_file, _, List) :- !, + List = []. +read_new_terms(Term, Stream, [Term|More]) :- + read(Stream, Term2), + read_new_terms(Term2, Stream, More). + +heads_output_stream(Store, Out) :- + heads_file(Store, HeadsFile), + open(HeadsFile, append, Out, + [ encoding(utf8), + lock(exclusive) + ]). + +heads_input_stream(Store, Stream) :- + heads_input_stream_cache(Store, Stream0), !, + Stream = Stream0. +heads_input_stream(Store, Stream) :- + heads_file(Store, File), + between(1, 2, _), + catch(open(File, read, In, + [ encoding(utf8), + eof_action(reset) + ]), + _, + create_heads_file(Store)), !, + assert(heads_input_stream_cache(Store, In)), + Stream = In. + +create_heads_file(Store) :- + call_cleanup( + heads_output_stream(Store, Out), + close(Out)), + fail. % always fail! + +heads_file(Store, HeadsFile) :- + ensure_directory(Store), + directory_file_path(Store, ref, RefDir), + ensure_directory(RefDir), + directory_file_path(RefDir, head, HeadsFile). + +%% restore_heads_from_remote(Store) +% +% Restore the known heads by reading the remote sync file. + +restore_heads_from_remote(Store) :- + heads_file(Store, File), + exists_file(File), + setup_call_cleanup( + open(File, read, In, [encoding(utf8)]), + restore_heads(Store, In), + close(In)), !, + get_time(Now), + assertz(store(Store, Now)). +restore_heads_from_remote(Store) :- + read_heads_from_objects(Store), + heads_file(Store, File), + setup_call_cleanup( + open(File, write, Out, [encoding(utf8)]), + save_heads(Store, Out), + close(Out)), !. + +restore_heads(Store, In) :- + read(In, Term0), + Term0 = epoch(_), + read(In, Term1), + restore_heads(Term1, In, Store). + +restore_heads(end_of_file, _, _) :- !. +restore_heads(head(File, _, Hash), In, Store) :- + retractall(head(Store, File, _)), + assertz(head(Store, File, Hash)), + read(In, Term), + restore_heads(Term, In, Store). + +save_heads(Store, Out) :- + get_time(Now), + format(Out, 'epoch(~0f).~n~n', [Now]), + forall(head(Store, File, Hash), + format(Out, '~q.~n', [head(File, -, Hash)])). + + +%% delete_head(+Store, +Head) is det. +% +% Delete Head from Store. Used by gitty_fsck/1 to remove heads +% that have no commits. Should we forward this to remotes, or +% should they do their own thing? + +delete_head(Store, Head) :- + retractall(head(Store, Head, _)). + +%% set_head(+Store, +File, +Hash) is det. +% +% Set the head of the given File to Hash + +set_head(Store, File, Hash) :- + retractall(head(Store, File, _)), + asserta(head(Store, File, Hash)). diff --git a/lib/trill_on_swish/gitty_tools.pl b/lib/trill_on_swish/gitty_tools.pl new file mode 100644 index 0000000..5f7092d --- /dev/null +++ b/lib/trill_on_swish/gitty_tools.pl @@ -0,0 +1,280 @@ +/* Part of SWI-Prolog + + Author: Jan Wielemaker + E-mail: J.Wielemaker@cs.vu.nl + WWW: http://www.swi-prolog.org + Copyright (C): 2015, VU University Amsterdam + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, if you link this library with other files, + compiled with a Free Software compiler, to produce an executable, this + library does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however + invalidate any other reasons why the executable file might be covered by + the GNU General Public License. +*/ + +:- module(gitty_tools, + [ gitty_copy_store/3, % +StoreIn, +StoreOut, +Driver + gitty_compare_stores/2, % +Store1, +Store2 + gitty_fsck/2 % +Store, +Options + ]). +:- use_module(gitty). +:- use_module(library(apply)). +:- use_module(library(option)). +:- use_module(library(aggregate)). + +/** <module> Gitty maintenance tools + +This file contains some maintenance predicates for gitty stores. It +notably allows for copying, synchronizing and comparing stores. +*/ + +%% gitty_copy_store(+StoreIn, +StoreOut, +Driver) is det. +% +% Copy a gitty store, using Driver for the target StoreOut. This +% copies the entire history and data of StoreIn to StoreOut, +% possibly transcribing to another driver. Note that the hashes +% are independent from the driver. +% +% Note that gitty_copy_store/3 can also be used to migrate updates +% from StoreIn to an older copy StoreOut. + +gitty_copy_store(StoreIn, StoreOut, Driver) :- + gitty_open(StoreIn, []), + gitty_open(StoreOut, [driver(Driver)]), + State = state(0), + ( gitty_file(StoreIn, File, _), + State = state(N0), + N is N0+1, + nb_setarg(1, State, N), + format(user_error, '~N~D ~`.t ~q ~50|', [N, File]), + ( copy_file(File, StoreIn, StoreOut) + -> fail + ; format('Failed to copy ~q~n', [File]) + ) + ; true + ). + +copy_file(File, StoreIn, StoreOut) :- + gitty_history(StoreIn, File, History, [depth(1000000)]), + reverse(History, LastToFirst), + maplist(copy_commit(StoreIn, StoreOut), LastToFirst). + +copy_commit(_StoreIn, StoreOut, Commit) :- + gitty_hash(StoreOut, Commit.commit), !, + put_char(user_error, '+'). +copy_commit(StoreIn, StoreOut, Commit) :- + gitty_data(StoreIn, Commit.commit, Data, Meta0), + del_keys([commit, symbolic], Meta0, Meta), + ( Prev = Meta.get(previous), + gitty_commit(StoreIn, Prev, PrevCommit), + PrevCommit.name == Meta.name + -> gitty_update(StoreOut, Meta.name, Data, Meta, _) + ; gitty_create(StoreOut, Meta.name, Data, Meta, _) + ), + put_char(user_error, '.'). + +del_keys([], Dict, Dict). +del_keys([H|T], Dict0, Dict) :- + del_dict(H, Dict0, _, Dict1), !, + del_keys(T, Dict1, Dict). +del_keys([_|T], Dict0, Dict) :- + del_keys(T, Dict0, Dict). + +%% gitty_compare_stores(+Store1, +Store2) is semidet. +% +% True if both stores are exactly the same. +% +% @bug Should (optionally) describe the differences + +gitty_compare_stores(Store1, Store2) :- + gitty_open(Store1, []), + gitty_open(Store2, []), + gitty_full_history(Store1, History1), + gitty_full_history(Store2, History2), + History1 == History2. + +gitty_full_history(Store, History) :- + setof(File, Hash^gitty_file(Store, File, Hash), Files), + maplist(gitty_full_history(Store), Files, History). + +gitty_full_history(Store, File, History) :- + gitty_history(Store, File, History, [depth(1000000)]). + +%% gitty_fsck(+Store, +Options) +% +% Check integrity of the store. Requires the following step: +% +% - Validate objects by recomputing and comparing their hash +% fix: remove bad objects +% - Validate each commit +% - Does the data exists? +% - Does previous exist? +% - Reconstruct heads + +gitty_fsck(Store, Options) :- + gitty_open(Store, []), + check_objects(Store, Options), + load_commits(Store), + check_heads(Store, Options), + check_commits(Store, Options). + +check_objects(Store, Options) :- + aggregate_all(count, + ( gitty_hash(Store, Hash), + check_object(Store, Hash, Options) + ), Objects), + progress(checked_objects(Objects)). + +%% check_object(+Store, +Hash) is det. +% +% Check the validity of the object indicated by Hash by +% recomputing the hash from the object content. If fix(true) is +% specified, bad objects are deleted from the store. + +check_object(Store, Hash, _) :- + gitty:fsck_object(Store, Hash), !. +check_object(Store, Hash, Options) :- + gripe(bad_object(Store, Hash)), + fix(gitty:delete_object(Store, Hash), Options). + +%% load_commits(+Store) is det. +% +% Load all commits into a dynamic predicate +% +% commit(Store, CommitHash, PrevCommitHash, DataHash) + +:- dynamic + commit/5. % Store, Commit, Prev, Name, Data + +load_commits(Store) :- + clean_commits(Store), + ( gitty_hash(Store, Hash), + gitty_commit(Store, Hash, Commit), + ( Prev = Commit.get(previous) + -> true + ; Prev = (-) + ), + assertz(commit(Store, Commit.commit, Prev, Commit.name, Commit.data)), + fail + ; true + ). + +clean_commits(Store) :- + retractall(commit(Store, _, _, _, _)). + +%% check_heads(+Store, +Options) +% +% Verify the head admin. + +check_heads(Store, Options) :- + forall(head(Store, File, Head), + check_head(Store, File, Head, Options)), + forall(gitty_file(Store, File, Head), + check_head_exists(Store, File, Head, Options)). + +check_head(Store, File, Head, Options) :- + ( gitty_file(Store, File, Head) + -> true + ; gitty_file(Store, File, WrongHash) + -> gripe(head_mismatch(Store, File, Head, WrongHash)), + fix(gitty:set_head(Store, File, Head), Options) + ; gripe(lost_head(Store, File, Head)), + fix(gitty:set_head(Store, File, Head), Options) + ). + +check_head_exists(Store, File, Head, Options) :- + ( head(Store, File, Head) + -> true + ; ( option(fix(true), Options) + -> assertion(\+head(Store, File, _)) + ; true + ), + gripe(lost_file(Store, File)), + fix(gitty:delete_head(Store, File), Options) + ). + +head(Store, File, Head) :- + commit(Store, Head, _, File, _), + \+ commit(Store, _, Head, _, _). + +%% check_commits(Store, Options) +% +% Check connectivity of all commits. + +check_commits(Store, Options) :- + forall(gitty_file(Store, _File, Head), + check_commit(Store, Head, Options)). + +%% check_commit(+Store, +Head, +Options) is det. +% +% Validate a commit. First checks the connectivety. If this fails +% we have some options: +% +% - Remove the most recent part of the history until it becomes +% consistent. +% - If data is missing from an older commit, rewrite the +% history. + +check_commit(Store, Head, Options) :- + ( gitty_commit(Store, Head, Commit) + -> ( gitty_hash(Store, Commit.data) + -> true + ; gripe(no_data(Commit.data)), + fail + ), + ( Prev = Commit.get(previous) + -> check_commit(Store, Prev, Options) + ; true + ) + ; gripe(no_commit(Store, Head)), + fail + ), !. +check_commit(_, _, _). + + +:- meta_predicate + fix(0, +). + +fix(Goal, Options) :- + option(fix(true), Options), !, + call(Goal). +fix(_, _). + + +gripe(Term) :- + print_message(error, gitty(Term)). +progress(Term) :- + print_message(informational, gitty(Term)). + +:- multifile prolog:message//1. + +prolog:message(gitty(Term)) --> + gitty_message(Term). + +gitty_message(no_commit(Store, File, Head)) --> + [ '~p: file ~p: missing commit object ~p'-[Store, File, Head] ]. +gitty_message(bad_object(Store, Hash)) --> + [ '~p: ~p: corrupt object'-[Store, Hash] ]. +gitty_message(lost_file(Store, File)) --> + [ '~p: ~p: lost file'-[Store, File] ]. +gitty_message(lost_head(Store, File, Head)) --> + [ '~p: ~p: lost head: ~p'-[Store, File, Head] ]. +gitty_message(head_mismatch(Store, File, Head, WrongHash)) --> + [ '~p: ~p: wrong head (~p --> ~p)'-[Store, File, WrongHash, Head] ]. +gitty_message(checked_objects(Count)) --> + [ 'Checked ~D objects'-[Count] ]. diff --git a/lib/trill_on_swish/procps.pl b/lib/trill_on_swish/procps.pl new file mode 100644 index 0000000..61aff16 --- /dev/null +++ b/lib/trill_on_swish/procps.pl @@ -0,0 +1,208 @@ +/* Part of SWI-Prolog + + Author: Jan Wielemaker + E-mail: J.Wielemaker@cs.vu.nl + WWW: http://www.swi-prolog.org + Copyright (C): 2015, VU University Amsterdam + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, if you link this library with other files, + compiled with a Free Software compiler, to produce an executable, this + library does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however + invalidate any other reasons why the executable file might be covered by + the GNU General Public License. +*/ + +:- module(procps, + [ procps_stat/1, % -Stat + procps_stat/2, % +Pid, -Stat + procps_thread_stat/2, % ?Thread, -Stat + procps_status/1, % -Status + procps_status/2 % +Pid, -Status + ]). +:- if(exists_source(library(unix))). +:- use_module(library(unix)). +:- endif. + + /******************************* + * /proc/[pid]/stat * + *******************************/ + +procps_stat(Stat) :- + current_prolog_flag(pid, Pid), + procps_stat(Pid, Stat). +procps_stat(Pid, Stat) :- + atomic_list_concat(['/proc/', Pid, '/stat'], StatFile), + stat_file_dict(StatFile, Stat). + +procps_thread_stat(Thread, Stat) :- + current_prolog_flag(pid, Pid), + thread_property(Thread, system_thread_id(TID)), + atomic_list_concat(['/proc/', Pid, '/task/', TID, '/stat'], StatFile), + stat_file_dict(StatFile, Stat). + +stat_file_dict(StatFile, Stat) :- + setup_call_cleanup( + open(StatFile, read, In), + read_string(In, _, String), + close(In)), + split_string(String, " ", " \n", Parts), + parts_pairs(Parts, 1, Pairs), + dict_pairs(Stat, stat, Pairs). + +parts_pairs([], _, []). +parts_pairs([H0|T0], I0, [H|T]) :- + part_pair(H0, I0, H), + I is I0+1, + parts_pairs(T0, I, T). + +part_pair(String, I, Key-Value) :- + stat_field(Key, I), !, + stat_field_value(Key, String, Value). +part_pair(String, I, I-String). + +stat_field_value(comm, String, Command) :- !, + sub_string(String, 1, _, 1, Command). +stat_field_value(state, String, Atom) :- !, + atom_string(Atom, String). +stat_field_value(Field, String, Seconds) :- + time_field(Field), !, + number_string(ClockTicks, String), + clockticks(TicksPerSec), + Seconds is ClockTicks/TicksPerSec. +stat_field_value(Field, String, Bytes) :- + page_field(Field), !, + number_string(Pages, String), + pagesize(BytesPerPage), + Bytes is Pages*BytesPerPage. +stat_field_value(_, String, Number) :- + number_string(Number, String). + +:- if(current_predicate(sysconf/1)). +% the weird way to call sysconf confuses ClioPatria's cpack code +% analysis enough to accept this ... +term_expansion(clockticks(sysconf), Expansion) :- + ( member(Sysconf, [sysconf(clk_tck(TicksPerSec))]), + call(Sysconf) + -> Expansion = clockticks(TicksPerSec) + ; Expansion = clockticks(100) + ). +term_expansion(pagesize(sysconf), Expansion) :- + ( member(Sysconf, [sysconf(pagesize(Bytes))]), + call(Sysconf) + -> Expansion = pagesize(Bytes) + ; Expansion = pagesize(4096) + ). +clockticks(sysconf). +pagesize(sysconf). +:- else. +clockticks(100). +pagesize(4096). +:- endif. + +time_field(utime). +time_field(stime). +time_field(cutime). +time_field(cstime). +time_field(starttime). + +page_field(rss). + +stat_field(pid, 1). +stat_field(comm, 2). +stat_field(state, 3). +stat_field(ppid, 4). +stat_field(pgrp, 5). +stat_field(session, 6). +stat_field(tty_nr, 7). +stat_field(tpgid, 8). +stat_field(flags, 9). +stat_field(minflt, 10). +stat_field(cminflt, 11). +stat_field(majflt, 12). +stat_field(cmajflt, 13). +stat_field(utime, 14). +stat_field(stime, 15). +stat_field(cutime, 16). +stat_field(cstime, 17). +stat_field(priority, 18). +stat_field(nice, 19). +stat_field(num_threads, 20). +stat_field(itrealvalue, 21). +stat_field(starttime, 22). +stat_field(vsize, 23). +stat_field(rss, 24). +stat_field(rsslim, 25). +stat_field(startcode, 26). +stat_field(endcode, 27). +stat_field(startstack, 28). +stat_field(kstkesp, 29). +stat_field(kstkeip, 30). +stat_field(signal, 31). +stat_field(blocked, 32). +stat_field(sigignore, 33). +stat_field(sigcatch, 34). +stat_field(wchan, 35). +stat_field(nswap, 36). +stat_field(cnswap, 37). +stat_field(exit_signal, 38). +stat_field(processor, 39). +stat_field(rt_priority, 40). +stat_field(policy, 41). +stat_field(delayacct_blkio_ticks, 42). +stat_field(guest_time, 43). +stat_field(cguest_time, 44). + + + /******************************* + * /proc/[pid]/status * + *******************************/ + +procps_status(Stat) :- + current_prolog_flag(pid, Pid), + procps_status(Pid, Stat). +procps_status(Pid, Stat) :- + atomic_list_concat(['/proc/', Pid, '/status'], StatFile), + status_file_dict(StatFile, Stat). + +status_file_dict(StatFile, Status) :- + setup_call_cleanup( + open(StatFile, read, In), + read_string(In, _, String), + close(In)), + split_string(String, "\n", " \n", Lines), + status_line_pairs(Lines, Pairs), + dict_pairs(Status, status, Pairs). + +status_line_pairs([], []). +status_line_pairs([H0|T0], [Name-Value|T]) :- + split_string(H0, ":", " \t", [NameS, ValueS]), + string_lower(NameS, NameLS), + atom_string(Name, NameLS), + status_value(Name, ValueS, Value), !, + status_line_pairs(T0, T). +status_line_pairs([_|T0], T) :- + status_line_pairs(T0, T). + +status_value(state, ValueS, State) :- !, + split_string(ValueS, " ", " ", [Vs|_]), + atom_string(State, Vs). +status_value(Name, ValueS, Bytes) :- + sub_atom(Name, 0, _, _, vm), !, + split_string(ValueS, " ", " ", [Vs,"kB"]), + number_string(Kb, Vs), + Bytes is Kb*1024. diff --git a/lib/trill_on_swish/profiles.pl b/lib/trill_on_swish/profiles.pl new file mode 100644 index 0000000..a9ac5bc --- /dev/null +++ b/lib/trill_on_swish/profiles.pl @@ -0,0 +1,123 @@ +/* Part of SWI-Prolog + + Author: Jan Wielemaker + E-mail: J.Wielemaker@cs.vu.nl + WWW: http://www.swi-prolog.org + Copyright (C): 2014-2015, VU University Amsterdam + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, if you link this library with other files, + compiled with a Free Software compiler, to produce an executable, this + library does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however + invalidate any other reasons why the executable file might be covered by + the GNU General Public License. +*/ + +:- module(swish_profiles, []). +:- use_module(library(lists)). +:- use_module(library(readutil)). +:- use_module(library(filesex)). +:- use_module(library(dcg/basics)). + +:- multifile + user:file_search_path/2, + swish_config:config/2, + swish_config:source_alias/2. + +% make profile(File) find the example data +user:file_search_path(profile, swish(profiles)). +% make SWISH serve /profile/File as profile(File). +swish_config:source_alias(profile, [access(read), search('*.{pl,swinb}')]). + + /******************************* + * SWISH CONFIG * + *******************************/ + +%% swish_config:config(-Name, -Profiles) is det. +% +% Provides the object `config.swish.profiles`, a JSON object that +% provides the available profiles. + +swish_config:config(profiles, Profiles) :- + findall(Profile, swish_profile(Profile), Profiles0), + sort(value, =<, Profiles0, Profiles1), + join_profiles(Profiles1, Profiles). + +join_profiles([], []). +join_profiles([P1,P2|T0], [P|T]) :- + join_profiles(P1, P2, P), !, + join_profiles(T0, T). +join_profiles([P|T0], [P1|T]) :- + P1 = P.put(type, [P.type]), + join_profiles(T0, T). + +join_profiles(P1, P2, profile{value:Name, type:[Ext1,Ext2], + label:Label, title:Title}) :- + P1 >:< _{value:Name, type:Ext1, label:Label1, title:Title1}, + P2 >:< _{value:Name, type:Ext2, label:Label2, title:Title2}, + join_value(Label1, Label2, Label), + join_value(Title1, Title2, Title). + +join_value(V, V, V) :- !. +join_value(V, "No title", V) :- !. +join_value("No title", V, V) :- !. +join_value(V, _, V). + +swish_profile(profile{value:Name, type:Ext, label:Label, title:Title}) :- + absolute_file_name(profile(.), Dir, + [ file_type(directory), + access(read), + solutions(all) + ]), + directory_file_path(Dir, '*.{pl,swinb}', Pattern), + expand_file_name(Pattern, Files), + member(FilePath, Files), + file_base_name(FilePath, File), + file_name_extension(Name, Ext, File), + value_label(Name, Label), + title(FilePath, Title). + +value_label(Value, Label) :- + atom_codes(Value, Codes), + phrase(label(Label), Codes). + +label(Label) --> + string(_), "-", !, rest(Codes), + { string_codes(Label, Codes) }. +label(Label) --> + rest(Codes), + { string_codes(Label, Codes) }. + +title(FilePath, Title) :- + first_line(FilePath, FirstLine), + ( FirstLine == end_of_file + -> Title = "Empty" + ; phrase(title(Title), FirstLine) + ). + +first_line(File, Line) :- + setup_call_cleanup( + open(File, read, In), + read_line_to_codes(In, Line), + close(In)). + +title(Title) --> + "%", whites, !, rest(Codes), + { string_codes(Title, Codes) }. +title("No title") --> rest(_). + +rest(List, List, []). diff --git a/lib/trill_on_swish/swish_csv.pl b/lib/trill_on_swish/swish_csv.pl new file mode 100644 index 0000000..1e7bd43 --- /dev/null +++ b/lib/trill_on_swish/swish_csv.pl @@ -0,0 +1,144 @@ +/* Part of SWI-Prolog + + Author: Jan Wielemaker + E-mail: J.Wielemaker@cs.vu.nl + WWW: http://www.swi-prolog.org + Copyright (C): 2015, VU University Amsterdam + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, if you link this library with other files, + compiled with a Free Software compiler, to produce an executable, this + library does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however + invalidate any other reasons why the executable file might be covered by + the GNU General Public License. +*/ + +:- module(swish_csv, []). +:- use_module(library(pengines), []). +:- use_module(library(pairs)). +:- use_module(library(csv), [csv_write_stream/3]). +:- use_module(library(apply)). +:- use_module(library(pprint)). +:- use_module(library(option)). + +/** <module> Support CSV output from a Pengines server + +This module defines the result-format `csv` for Pengines. It allows +SWISH users to post a query against the core Prolog system or a saved +SWISH program and obtain the results using a simple web client such as +`curl`. An example shell script is provided in =client/swish-ask.sh=. + +@tbd Provide streaming output +*/ + +:- multifile + pengines:write_result/3, + pengines:write_result/4, + write_answers/2, % Answers, Bindings + write_answers/3. % Answers, Bindings, Options + +%% pengines:write_result(+Format, +Event, +VarNames) is semidet. +% +% Hook into library(pengines) that makes pengines support CSV +% output. + +pengines:write_result(csv, Event, VarNames) :- + csv(Event, VarNames, []). +pengines:write_result(csv, Event, VarNames, OptionDict) :- + ( Disposition = OptionDict.get(disposition) + -> Options = [disposition(Disposition)] + ; Options = [] + ), + csv(Event, VarNames, Options). + +csv(create(_Id, Features), VarNames, Options) :- !, + memberchk(answer(Answer), Features), + csv(Answer, VarNames, Options). +csv(destroy(_Id, Wrapped), VarNames, Options) :- !, + csv(Wrapped, VarNames, Options). +csv(success(_Id, Answers, _Time, More), VarNames, Options) :- !, + VarTerm =.. [row|VarNames], + success(Answers, VarTerm, [more(More)|Options]). +csv(error(_Id, Error), _VarNames, _Options) :- !, + message_to_string(Error, Msg), + format('Status: 400 Bad request~n'), + format('Content-type: text/plain~n~n'), + format('ERROR: ~w~n', [Msg]). +csv(output(_Id, message(_Term, _Class, HTML, _Where)), _VarNames, _Opts) :- !, + format('Status: 400 Bad request~n'), + format('Content-type: text/html~n~n'), + format('<html>~n~s~n</html>~n', [HTML]). +csv(page(Page, Event), VarNames, Options) :- + csv(Event, VarNames, [page(Page)|Options]). +csv(Event, _VarNames, _) :- + print_term(Event, [output(user_error)]). + +success(Answers, VarTerm, Options) :- + write_answers(Answers, VarTerm, Options), !. +success(Answers, VarTerm, Options) :- + write_answers(Answers, VarTerm), !, + assertion(\+option(page(_), Options)). +success(Answers, _VarTerm, Options) :- + option(page(Page), Options), + Page > 1, !, + maplist(csv_answer, Answers, Rows), + forall(paginate(100, OutPage, Rows), + csv_write_stream(current_output, OutPage, [])). +success(Answers, VarTerm, Options) :- + option(disposition(Disposition), Options, 'swish-result.csv'), + maplist(csv_answer, Answers, Rows), + format('Content-encoding: chunked~n'), + format('Content-disposition: attachment; filename="~w"~n', [Disposition]), + format('Content-type: text/csv~n~n'), + csv_write_stream(current_output, [VarTerm], []), + forall(paginate(100, Page, Rows), + csv_write_stream(current_output, Page, [])). + +paginate(Len, Page, List) :- + length(Page0, Len), + ( append(Page0, Rest, List) + -> ( Page = Page0 + ; paginate(Len, Page, Rest) + ) + ; Page = List + ). + + +csv_answer(JSON, Row) :- + is_dict(JSON), !, + dict_pairs(JSON, _, Pairs), + pairs_values(Pairs, Values), + maplist(csv_value, Values, CVSValues), + Row =.. [row|CVSValues]. +csv_answer(RowIn, Row) :- + compound(RowIn), !, + RowIn =.. [_|Values], + maplist(csv_value, Values, CVSValues), + Row =.. [row|CVSValues]. + +csv_value(Var, '') :- + var(Var), !. +csv_value(Number, Number) :- + number(Number), !. +csv_value(Atom, Atom) :- + atom(Atom), !. +csv_value(String, String) :- + string(String), !. +csv_value(Term, Value) :- + term_string(Term, Value). + + diff --git a/lib/trill_on_swish/swish_debug.pl b/lib/trill_on_swish/swish_debug.pl new file mode 100644 index 0000000..0e80797 --- /dev/null +++ b/lib/trill_on_swish/swish_debug.pl @@ -0,0 +1,373 @@ +/* Part of SWI-Prolog + + Author: Jan Wielemaker + E-mail: J.Wielemaker@cs.vu.nl + WWW: http://www.swi-prolog.org + Copyright (C): 2015, VU University Amsterdam + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, if you link this library with other files, + compiled with a Free Software compiler, to produce an executable, this + library does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however + invalidate any other reasons why the executable file might be covered by + the GNU General Public License. +*/ + +:- module(swish_debug, + [ pengine_stale_module/1, % -Module, -State + pengine_stale_module/2, % -Module, -State + swish_statistics/1, % -Statistics + start_swish_stat_collector/0, + swish_stats/2 % ?Period, ?Dicts + ]). +:- use_module(library(pengines)). +:- use_module(library(broadcast)). +:- use_module(library(lists)). +:- use_module(library(apply)). +:- use_module(library(debug)). +:- use_module(library(aggregate)). +:- use_module(procps). +:- use_module(highlight). +:- if(exists_source(library(mallocinfo))). +:- use_module(library(mallocinfo)). +:- endif. + +%% pengine_stale_module(-M, -State) is nondet. +% +% True if M seems to be a pengine module with no associated +% pengine. State is a dict that describes what we know about the +% module. + +pengine_stale_module(M) :- + current_module(M), + is_uuid(M), + \+ live_module(M), + \+ current_highlight_state(M, _). + +pengine_stale_module(M, State) :- + pengine_stale_module(M), + stale_module_state(M, State). + +live_module(M) :- + pengine_property(Pengine, module(M)), + pengine_property(Pengine, thread(Thread)), + catch(thread_property(Thread, status(running)), _, fail). + +stale_module_state(M, State) :- + findall(N-V, stale_module_property(M, N, V), Properties), + dict_create(State, stale, Properties). + +stale_module_property(M, pengine, Pengine) :- + pengine_property(Pengine, module(M)). +stale_module_property(M, pengine_queue, Queue) :- + pengine_property(Pengine, module(M)), + member(G, pengines:pengine_queue(Pengine, Queue, _TimeOut, _Time)), + call(G). % fool ClioPatria cpack xref +stale_module_property(M, pengine_pending_queue, Queue) :- + pengine_property(Pengine, module(M)), + member(G, [pengines:output_queue(Pengine, Queue, _Time)]), + call(G). % fool ClioPatria cpack xref +stale_module_property(M, thread, Thread) :- + pengine_property(Pengine, module(M)), + member(G, [pengines:pengine_property(Pengine, thread(Thread))]), + call(G). % fool ClioPatria cpack xref +stale_module_property(M, thread_status, Status) :- + pengine_property(Pengine, module(M)), + pengine_property(Pengine, thread(Thread)), + catch(thread_property(Thread, status(Status)), _, fail). +stale_module_property(M, program_space, Space) :- + module_property(M, program_space(Space)). + + +%% swish_statistics(?State) +% +% True if State is a statistics about SWISH + +swish_statistics(highlight_states(Count)) :- + aggregate_all(count, current_highlight_state(_,_), Count). +swish_statistics(pengines(Count)) :- + aggregate_all(count, pengine_property(_,thread(_)), Count). +swish_statistics(remote_pengines(Count)) :- + aggregate_all(count, pengine_property(_,remote(_)), Count). +swish_statistics(pengines_created(Count)) :- + ( flag(pengines_created, Old, Old) + -> Count = Old + ; Count = 0 + ). + +:- listen(pengine(Action), swish_update_stats(Action)). + +swish_update_stats(create(_Pengine, _Application, _Options0)) :- + flag(pengines_created, Old, Old+1). +swish_update_stats(send(_Pengine, _Event)). + + +%% is_uuid(@UUID) +% +% True if UUID looks like a UUID + +is_uuid(M) :- + atom(M), + atom_length(M, 36), + forall(sub_atom(M, S, 1, _, C), + uuid_code(S, C)). + +uuid_sep(8). +uuid_sep(13). +uuid_sep(18). +uuid_sep(23). + +uuid_code(S, -) :- !, uuid_sep(S). +uuid_code(_, X) :- char_type(X, xdigit(_)). + + /******************************* + * STATISTICS * + *******************************/ + +:- if(current_predicate(http_unix_daemon:http_daemon/0)). +:- use_module(library(broadcast)). +:- listen(http(post_server_start), start_swish_stat_collector). +:- else. +:- initialization + start_swish_stat_collector. +:- endif. + +%% start_swish_stat_collector +% +% Start collecting statistical performance information for the +% running SWISH server. + +start_swish_stat_collector :- + thread_property(_, alias(swish_stats)), !. +start_swish_stat_collector :- + swish_stat_collector(swish_stats, + [ 60, % collect a minute + 60, % collect an hour + 24, % collect a day + 7, % collect a week + 52 % collect a year + ], + 1). + +swish_stat_collector(Name, Dims, Interval) :- + atom(Name), !, + thread_create(stat_collect(Dims, Interval), _, [alias(Name)]). +swish_stat_collector(Thread, Dims, Interval) :- + thread_create(stat_collect(Dims, Interval), Thread, []). + +%% swish_stats(?Period, ?Stats:list(dict)) is nondet. +% +% Get the collected statistics for the given Period. Period is one +% of =minute=, =hour=, =day=, =week= or =year=. Stats is a list of +% statistics structures, last one first. The =minute= period +% contains 60 second measurements, the hour 60 minutes, the day 24 +% hours, etc. Each dict constains the following keys: +% +% * cpu +% Total process CPU time +% * d_cpu +% Differential CPU (is avg CPU per second) +% * pengines +% Number of running pengines +% * pengines_created +% Total number of pengines created +% * d_pengines_created +% Pengines created per second +% * rss +% Total resident memory +% * stack +% Memory in all Prolog stacks. + +swish_stats(Name, Stats) :- + stats_ring(Name, Ring), + swish_stats(swish_stats, Ring, Stats). + +stats_ring(minute, 1). +stats_ring(hour, 2). +stats_ring(day, 3). +stats_ring(week, 4). +stats_ring(year, 5). + +swish_stats(Name, Ring, Stats) :- + thread_self(Me), + thread_send_message(Name, Me-get_stats(Ring)), + thread_get_message(get_stats(Ring, Stats)). + +stat_collect(Dims, Interval) :- + new_sliding_stats(Dims, SlidingStat), + get_time(Now), + ITime is floor(Now), + stat_loop(SlidingStat, _{}, ITime, Interval, [true]). + +stat_loop(SlidingStat, Stat0, StatTime, Interval, Wrap) :- + ( thread_self(Me), + thread_get_message(Me, Request, + [ deadline(StatTime) + ]) + -> ( reply_stats_request(Request, SlidingStat) + -> true + ; debug(swish_stats, 'Failed to process ~p', [Request]) + ), + stat_loop(SlidingStat, Stat0, StatTime, Interval, Wrap) + ; get_stats(Wrap, Stat1), + dif_stat(Stat1, Stat0, Stat), + push_sliding_stats(SlidingStat, Stat, Wrap1), + NextTime is StatTime+Interval, + stat_loop(SlidingStat, Stat1, NextTime, Interval, Wrap1) + ). + +dif_stat(Stat1, Stat0, Stat) :- + maplist(dif_field(Stat1, Stat0), + [ cpu - d_cpu, + pengines_created - d_pengines_created + ], + Fields), !, + dict_pairs(Extra, _, Fields), + put_dict(Extra, Stat1, Stat). +dif_stat(Stat, _, Stat). + +dif_field(Stat1, Stat0, Key-DKey, DKey-DValue) :- + DValue is Stat1.get(Key) - Stat0.get(Key). + +reply_stats_request(Client-get_stats(Period), SlidingStat) :- + arg(Period, SlidingStat, Ring), + ring_values(Ring, Values), + thread_send_message(Client, get_stats(Period, Values)). + +%% get_stats(+Wrap, -Stats:dict) is det. +% +% Request elementary statistics. + +get_stats(Wrap, Stats) :- + Stats0 = stats{ cpu:CPU, + rss:RSS, + stack:Stack, + pengines:Pengines, + pengines_created:PenginesCreated, + time:Time + }, + get_time(Now), + Time is floor(Now), + statistics(process_cputime, PCPU), + statistics(cputime, MyCPU), + CPU is PCPU-MyCPU, + statistics(stack, Stack), + catch(procps_stat(Stat), _, + Stat = stat{rss:0}), + RSS = Stat.rss, + swish_statistics(pengines(Pengines)), + swish_statistics(pengines_created(PenginesCreated)), + add_fordblks(Wrap, Stats0, Stats). + +:- if(current_predicate(mallinfo/1)). +add_fordblks(Wrap, Stats0, Stats) :- + ( Wrap = [true|_] + -> member(G, [mallinfo(MallInfo)]), + call(G), % fool ClioPatria xref + FordBlks = MallInfo.get(fordblks), + b_setval(fordblks, FordBlks) + ; nb_current(fordblks, FordBlks) + ), !, + Stats = Stats0.put(fordblks, FordBlks). +:- endif. +add_fordblks(_, Stats, Stats). + + +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Maintain sliding statistics. The statistics are maintained in a ring. If +the ring wraps around, the average is pushed to the next ring. +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + +new_sliding_stats(Dims, Stats) :- + maplist(new_ring, Dims, Rings), + compound_name_arguments(Stats, sliding_stats, Rings). + +push_sliding_stats(Stats, Values, Wrap) :- + push_sliding_stats(1, Stats, Values, Wrap). + +push_sliding_stats(I, Stats, Values, [Wrap|WrapT]) :- + arg(I, Stats, Ring), + push_ring(Ring, Values, Wrap), + ( Wrap == true + -> average_ring(Ring, Avg), + I2 is I+1, + ( push_sliding_stats(I2, Stats, Avg, WrapT) + -> true + ; true + ) + ; WrapT = [] + ). + +new_ring(Dim, ring(0, Ring)) :- + compound_name_arity(Ring, [], Dim). + +push_ring(Ring, Value, Wrap) :- + Ring = ring(Here0, Data), + Here is Here0+1, + compound_name_arity(Data, _, Size), + Arg is (Here0 mod Size)+1, + ( Arg == Size + -> Wrap = true + ; Wrap = false + ), + nb_setarg(Arg, Data, Value), + nb_setarg(1, Ring, Here). + +ring_values(Ring, Values) :- + Ring = ring(Here, Data), + compound_name_arity(Data, _, Size), + Start is Here - 1, + End is Start - min(Here,Size), + read_ring(Start, End, Size, Data, Values). + +read_ring(End, End, _, _, []) :- !. +read_ring(Here0, End, Size, Data, [H|T]) :- + A is (Here0 mod Size)+1, + arg(A, Data, H), + Here1 is Here0-1, + read_ring(Here1, End, Size, Data, T). + +average_ring(ring(_,Data), Avg) :- + compound_name_arguments(Data, _, Dicts), + average_dicts(Dicts, Avg). + +average_dicts(Dicts, Avg) :- + dicts_to_same_keys(Dicts, dict_fill(0), Dicts1), + Dicts1 = [H|_], + is_dict(H, Tag), + dict_keys(H, Keys), + length(Dicts1, Len), + maplist(avg_key(Dicts1, Len), Keys, Pairs), + dict_pairs(Avg, Tag, Pairs). + +avg_key(Dicts, Len, Key, Key-Avg) :- + maplist(get_dict(Key), Dicts, Values), + sum_list(Values, Sum), + Avg is Sum/Len. + + + /******************************* + * SANDBOX * + *******************************/ + +:- multifile + sandbox:safe_primitive/1. + +sandbox:safe_primitive(swish_debug:pengine_stale_module(_)). +sandbox:safe_primitive(swish_debug:pengine_stale_module(_,_)). +sandbox:safe_primitive(swish_debug:swish_statistics(_)). +sandbox:safe_primitive(swish_debug:swish_stats(_, _)). diff --git a/profiles/00-Empty.pl b/profiles/00-Empty.pl new file mode 100644 index 0000000..e69de29 diff --git a/profiles/00-Empty.swinb b/profiles/00-Empty.swinb new file mode 100644 index 0000000..e69de29 diff --git a/profiles/10-Empty-TRILL.pl b/profiles/10-Empty-TRILL.pl new file mode 100644 index 0000000..1784da4 --- /dev/null +++ b/profiles/10-Empty-TRILL.pl @@ -0,0 +1,6 @@ +% Empty with TRILL loaded +:- use_module(library(trill)). + +:- trill. + + diff --git a/profiles/10-Empty-TRILL.swinb b/profiles/10-Empty-TRILL.swinb new file mode 100644 index 0000000..e69de29 diff --git a/profiles/20-Non-Probabilistic-TRILL.pl b/profiles/20-Non-Probabilistic-TRILL.pl new file mode 100644 index 0000000..9c09db8 --- /dev/null +++ b/profiles/20-Non-Probabilistic-TRILL.pl @@ -0,0 +1,49 @@ +% TRILL loaded with non probabilistic KB +:- use_module(library(trill)). + +:- trill. + +owl_rdf('<?xml version="1.0"?> + +<!-- + +/** <examples> + +Here examples of the form +?- instanceOf(\'className\',\'indName\',Prob). + +*/ +--> + +<!DOCTYPE rdf:RDF [ + <!ENTITY owl "http://www.w3.org/2002/07/owl#" > + <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > + <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > + <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > +]> + + +<rdf:RDF xmlns="http://here.the.IRI.of.your.ontology#" + xml:base="http://here.the.IRI.of.your.ontology" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:xsd="http://www.w3.org/2001/XMLSchema#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> + <owl:Ontology rdf:about="http://here.the.IRI.of.your.ontology"/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Your Axioms Here + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + +</rdf:RDF> +'). + +/**************************** + * Other axioms here + ****************************/ diff --git a/profiles/20-Non-Probabilistic-TRILL.swinb b/profiles/20-Non-Probabilistic-TRILL.swinb new file mode 100644 index 0000000..ce70979 --- /dev/null +++ b/profiles/20-Non-Probabilistic-TRILL.swinb @@ -0,0 +1,45 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +This notebook uses the non probabilistic profile +</div> + +<div class="nb-cell program" data-singleline="true"> +owl_rdf(' +<?xml version="1.0"?><br /> +<br /> +<!DOCTYPE rdf:RDF [<br /> + <!ENTITY owl "http://www.w3.org/2002/07/owl#" ><br /> + <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" ><br /> + <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" ><br /> + <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" ><br /> +]><br /> +<br /> +<br /> +<rdf:RDF xmlns="http://here.the.IRI.of.your.ontology#"<br /> + xml:base="http://here.the.IRI.of.your.ontology"<br /> + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"<br /> + xmlns:owl="http://www.w3.org/2002/07/owl#"<br /> + xmlns:xsd="http://www.w3.org/2001/XMLSchema#"<br /> + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"><br /> + <owl:Ontology rdf:about="http://here.the.IRI.of.your.ontology"/><br /> + <br /> +<br /> +<br /> + <!-- <br /> + ///////////////////////////////////////////////////////////////////////////////////////<br /> + //<br /> + // Your Axioms Here<br /> + //<br /> + ///////////////////////////////////////////////////////////////////////////////////////<br /> + --><br /> +<br /> +</rdf:RDF> +'). +</div> + +<div class="nb-cell query"> +</div> + + +</div> diff --git a/profiles/30-Probabilistic-TRILL.pl b/profiles/30-Probabilistic-TRILL.pl new file mode 100644 index 0000000..ecabea9 --- /dev/null +++ b/profiles/30-Probabilistic-TRILL.pl @@ -0,0 +1,68 @@ +% TRILL loaded with probabilistic KB +:- use_module(library(trill)). + +:- trill. + +owl_rdf('<?xml version="1.0"?> + +<!-- + +/** <examples> + + Here examples of the form + ?- prob_instanceOf(\'className\',\'indName\',Prob). + +*/ +--> + +<!DOCTYPE rdf:RDF [ + <!ENTITY owl "http://www.w3.org/2002/07/owl#" > + <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > + <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > + <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > + <!ENTITY disponte "https://sites.google.com/a/unife.it/ml/disponte#" > +]> + + +<rdf:RDF xmlns="http://here.the.IRI.of.your.ontology#" + xml:base="http://here.the.IRI.of.your.ontology" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:xsd="http://www.w3.org/2001/XMLSchema#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:disponte="https://sites.google.com/a/unife.it/ml/disponte#"> + <owl:Ontology rdf:about="http://here.the.IRI.of.your.ontology"/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Annotation properties + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- https://sites.google.com/a/unife.it/ml/disponte#probability --> + + <owl:AnnotationProperty rdf:about="&disponte;probability"/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Other Axioms + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + +</rdf:RDF>'). + +/**************************** + * Other axioms here + ****************************/ diff --git a/profiles/30-Probabilistic-TRILL.swinb b/profiles/30-Probabilistic-TRILL.swinb new file mode 100644 index 0000000..cfc0d84 --- /dev/null +++ b/profiles/30-Probabilistic-TRILL.swinb @@ -0,0 +1,53 @@ +<div class="notebook"> + +<div class="nb-cell markdown"> +This notebook uses the probabilistic profile +</div> + +<div class="nb-cell program" data-background="true" data-singleline="true"> +owl_rdf(' +<?xml version="1.0"?><br /> +<br /> +<!DOCTYPE rdf:RDF [<br /> + <!ENTITY owl "http://www.w3.org/2002/07/owl#" ><br /> + <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" ><br /> + <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" ><br /> + <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" ><br /> + <!ENTITY disponte "https://sites.google.com/a/unife.it/ml/disponte#" ><br /> +]><br /> +<br /> +<br /> +<rdf:RDF xmlns="http://here.the.IRI.of.your.ontology#"<br /> + xml:base="http://here.the.IRI.of.your.ontology"<br /> + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"<br /> + xmlns:owl="http://www.w3.org/2002/07/owl#"<br /> + xmlns:xsd="http://www.w3.org/2001/XMLSchema#"<br /> + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"<br /> + xmlns:disponte="https://sites.google.com/a/unife.it/ml/disponte#"><br /> + <owl:Ontology rdf:about="http://here.the.IRI.of.your.ontology"/><br /> + <br /> +<br /> +<br /> + <!-- <br /> + ///////////////////////////////////////////////////////////////////////////////////////<br /> + //<br /> + // Annotation properties<br /> + //<br /> + ///////////////////////////////////////////////////////////////////////////////////////<br /> + --><br /> +<br /> + <br /> +<br /> +<br /> + <!-- https://sites.google.com/a/unife.it/ml/disponte#probability --><br /> +<br /> + <owl:AnnotationProperty rdf:about="&disponte;probability"/><br /> +<br /> +</rdf:RDF> +'). +</div> + +<div class="nb-cell query"> +</div> + +</div> diff --git a/web/bower_components/codemirror/mode/css/css.js b/web/bower_components/codemirror/mode/css/css.js new file mode 100644 index 0000000..ea7bd01 --- /dev/null +++ b/web/bower_components/codemirror/mode/css/css.js @@ -0,0 +1,825 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("css", function(config, parserConfig) { + var inline = parserConfig.inline + if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode("text/css"); + + var indentUnit = config.indentUnit, + tokenHooks = parserConfig.tokenHooks, + documentTypes = parserConfig.documentTypes || {}, + mediaTypes = parserConfig.mediaTypes || {}, + mediaFeatures = parserConfig.mediaFeatures || {}, + mediaValueKeywords = parserConfig.mediaValueKeywords || {}, + propertyKeywords = parserConfig.propertyKeywords || {}, + nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {}, + fontProperties = parserConfig.fontProperties || {}, + counterDescriptors = parserConfig.counterDescriptors || {}, + colorKeywords = parserConfig.colorKeywords || {}, + valueKeywords = parserConfig.valueKeywords || {}, + allowNested = parserConfig.allowNested, + supportsAtComponent = parserConfig.supportsAtComponent === true; + + var type, override; + function ret(style, tp) { type = tp; return style; } + + // Tokenizers + + function tokenBase(stream, state) { + var ch = stream.next(); + if (tokenHooks[ch]) { + var result = tokenHooks[ch](stream, state); + if (result !== false) return result; + } + if (ch == "@") { + stream.eatWhile(/[\w\\\-]/); + return ret("def", stream.current()); + } else if (ch == "=" || (ch == "~" || ch == "|") && stream.eat("=")) { + return ret(null, "compare"); + } else if (ch == "\"" || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } else if (ch == "#") { + stream.eatWhile(/[\w\\\-]/); + return ret("atom", "hash"); + } else if (ch == "!") { + stream.match(/^\s*\w*/); + return ret("keyword", "important"); + } else if (/\d/.test(ch) || ch == "." && stream.eat(/\d/)) { + stream.eatWhile(/[\w.%]/); + return ret("number", "unit"); + } else if (ch === "-") { + if (/[\d.]/.test(stream.peek())) { + stream.eatWhile(/[\w.%]/); + return ret("number", "unit"); + } else if (stream.match(/^-[\w\\\-]+/)) { + stream.eatWhile(/[\w\\\-]/); + if (stream.match(/^\s*:/, false)) + return ret("variable-2", "variable-definition"); + return ret("variable-2", "variable"); + } else if (stream.match(/^\w+-/)) { + return ret("meta", "meta"); + } + } else if (/[,+>*\/]/.test(ch)) { + return ret(null, "select-op"); + } else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) { + return ret("qualifier", "qualifier"); + } else if (/[:;{}\[\]\(\)]/.test(ch)) { + return ret(null, ch); + } else if ((ch == "u" && stream.match(/rl(-prefix)?\(/)) || + (ch == "d" && stream.match("omain(")) || + (ch == "r" && stream.match("egexp("))) { + stream.backUp(1); + state.tokenize = tokenParenthesized; + return ret("property", "word"); + } else if (/[\w\\\-]/.test(ch)) { + stream.eatWhile(/[\w\\\-]/); + return ret("property", "word"); + } else { + return ret(null, null); + } + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == quote && !escaped) { + if (quote == ")") stream.backUp(1); + break; + } + escaped = !escaped && ch == "\\"; + } + if (ch == quote || !escaped && quote != ")") state.tokenize = null; + return ret("string", "string"); + }; + } + + function tokenParenthesized(stream, state) { + stream.next(); // Must be '(' + if (!stream.match(/\s*[\"\')]/, false)) + state.tokenize = tokenString(")"); + else + state.tokenize = null; + return ret(null, "("); + } + + // Context management + + function Context(type, indent, prev) { + this.type = type; + this.indent = indent; + this.prev = prev; + } + + function pushContext(state, stream, type, indent) { + state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context); + return type; + } + + function popContext(state) { + if (state.context.prev) + state.context = state.context.prev; + return state.context.type; + } + + function pass(type, stream, state) { + return states[state.context.type](type, stream, state); + } + function popAndPass(type, stream, state, n) { + for (var i = n || 1; i > 0; i--) + state.context = state.context.prev; + return pass(type, stream, state); + } + + // Parser + + function wordAsValue(stream) { + var word = stream.current().toLowerCase(); + if (valueKeywords.hasOwnProperty(word)) + override = "atom"; + else if (colorKeywords.hasOwnProperty(word)) + override = "keyword"; + else + override = "variable"; + } + + var states = {}; + + states.top = function(type, stream, state) { + if (type == "{") { + return pushContext(state, stream, "block"); + } else if (type == "}" && state.context.prev) { + return popContext(state); + } else if (supportsAtComponent && /@component/.test(type)) { + return pushContext(state, stream, "atComponentBlock"); + } else if (/^@(-moz-)?document$/.test(type)) { + return pushContext(state, stream, "documentTypes"); + } else if (/^@(media|supports|(-moz-)?document|import)$/.test(type)) { + return pushContext(state, stream, "atBlock"); + } else if (/^@(font-face|counter-style)/.test(type)) { + state.stateArg = type; + return "restricted_atBlock_before"; + } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) { + return "keyframes"; + } else if (type && type.charAt(0) == "@") { + return pushContext(state, stream, "at"); + } else if (type == "hash") { + override = "builtin"; + } else if (type == "word") { + override = "tag"; + } else if (type == "variable-definition") { + return "maybeprop"; + } else if (type == "interpolation") { + return pushContext(state, stream, "interpolation"); + } else if (type == ":") { + return "pseudo"; + } else if (allowNested && type == "(") { + return pushContext(state, stream, "parens"); + } + return state.context.type; + }; + + states.block = function(type, stream, state) { + if (type == "word") { + var word = stream.current().toLowerCase(); + if (propertyKeywords.hasOwnProperty(word)) { + override = "property"; + return "maybeprop"; + } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) { + override = "string-2"; + return "maybeprop"; + } else if (allowNested) { + override = stream.match(/^\s*:(?:\s|$)/, false) ? "property" : "tag"; + return "block"; + } else { + override += " error"; + return "maybeprop"; + } + } else if (type == "meta") { + return "block"; + } else if (!allowNested && (type == "hash" || type == "qualifier")) { + override = "error"; + return "block"; + } else { + return states.top(type, stream, state); + } + }; + + states.maybeprop = function(type, stream, state) { + if (type == ":") return pushContext(state, stream, "prop"); + return pass(type, stream, state); + }; + + states.prop = function(type, stream, state) { + if (type == ";") return popContext(state); + if (type == "{" && allowNested) return pushContext(state, stream, "propBlock"); + if (type == "}" || type == "{") return popAndPass(type, stream, state); + if (type == "(") return pushContext(state, stream, "parens"); + + if (type == "hash" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) { + override += " error"; + } else if (type == "word") { + wordAsValue(stream); + } else if (type == "interpolation") { + return pushContext(state, stream, "interpolation"); + } + return "prop"; + }; + + states.propBlock = function(type, _stream, state) { + if (type == "}") return popContext(state); + if (type == "word") { override = "property"; return "maybeprop"; } + return state.context.type; + }; + + states.parens = function(type, stream, state) { + if (type == "{" || type == "}") return popAndPass(type, stream, state); + if (type == ")") return popContext(state); + if (type == "(") return pushContext(state, stream, "parens"); + if (type == "interpolation") return pushContext(state, stream, "interpolation"); + if (type == "word") wordAsValue(stream); + return "parens"; + }; + + states.pseudo = function(type, stream, state) { + if (type == "word") { + override = "variable-3"; + return state.context.type; + } + return pass(type, stream, state); + }; + + states.documentTypes = function(type, stream, state) { + if (type == "word" && documentTypes.hasOwnProperty(stream.current())) { + override = "tag"; + return state.context.type; + } else { + return states.atBlock(type, stream, state); + } + }; + + states.atBlock = function(type, stream, state) { + if (type == "(") return pushContext(state, stream, "atBlock_parens"); + if (type == "}" || type == ";") return popAndPass(type, stream, state); + if (type == "{") return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top"); + + if (type == "interpolation") return pushContext(state, stream, "interpolation"); + + if (type == "word") { + var word = stream.current().toLowerCase(); + if (word == "only" || word == "not" || word == "and" || word == "or") + override = "keyword"; + else if (mediaTypes.hasOwnProperty(word)) + override = "attribute"; + else if (mediaFeatures.hasOwnProperty(word)) + override = "property"; + else if (mediaValueKeywords.hasOwnProperty(word)) + override = "keyword"; + else if (propertyKeywords.hasOwnProperty(word)) + override = "property"; + else if (nonStandardPropertyKeywords.hasOwnProperty(word)) + override = "string-2"; + else if (valueKeywords.hasOwnProperty(word)) + override = "atom"; + else if (colorKeywords.hasOwnProperty(word)) + override = "keyword"; + else + override = "error"; + } + return state.context.type; + }; + + states.atComponentBlock = function(type, stream, state) { + if (type == "}") + return popAndPass(type, stream, state); + if (type == "{") + return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top", false); + if (type == "word") + override = "error"; + return state.context.type; + }; + + states.atBlock_parens = function(type, stream, state) { + if (type == ")") return popContext(state); + if (type == "{" || type == "}") return popAndPass(type, stream, state, 2); + return states.atBlock(type, stream, state); + }; + + states.restricted_atBlock_before = function(type, stream, state) { + if (type == "{") + return pushContext(state, stream, "restricted_atBlock"); + if (type == "word" && state.stateArg == "@counter-style") { + override = "variable"; + return "restricted_atBlock_before"; + } + return pass(type, stream, state); + }; + + states.restricted_atBlock = function(type, stream, state) { + if (type == "}") { + state.stateArg = null; + return popContext(state); + } + if (type == "word") { + if ((state.stateArg == "@font-face" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) || + (state.stateArg == "@counter-style" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase()))) + override = "error"; + else + override = "property"; + return "maybeprop"; + } + return "restricted_atBlock"; + }; + + states.keyframes = function(type, stream, state) { + if (type == "word") { override = "variable"; return "keyframes"; } + if (type == "{") return pushContext(state, stream, "top"); + return pass(type, stream, state); + }; + + states.at = function(type, stream, state) { + if (type == ";") return popContext(state); + if (type == "{" || type == "}") return popAndPass(type, stream, state); + if (type == "word") override = "tag"; + else if (type == "hash") override = "builtin"; + return "at"; + }; + + states.interpolation = function(type, stream, state) { + if (type == "}") return popContext(state); + if (type == "{" || type == ";") return popAndPass(type, stream, state); + if (type == "word") override = "variable"; + else if (type != "variable" && type != "(" && type != ")") override = "error"; + return "interpolation"; + }; + + return { + startState: function(base) { + return {tokenize: null, + state: inline ? "block" : "top", + stateArg: null, + context: new Context(inline ? "block" : "top", base || 0, null)}; + }, + + token: function(stream, state) { + if (!state.tokenize && stream.eatSpace()) return null; + var style = (state.tokenize || tokenBase)(stream, state); + if (style && typeof style == "object") { + type = style[1]; + style = style[0]; + } + override = style; + state.state = states[state.state](type, stream, state); + return override; + }, + + indent: function(state, textAfter) { + var cx = state.context, ch = textAfter && textAfter.charAt(0); + var indent = cx.indent; + if (cx.type == "prop" && (ch == "}" || ch == ")")) cx = cx.prev; + if (cx.prev) { + if (ch == "}" && (cx.type == "block" || cx.type == "top" || + cx.type == "interpolation" || cx.type == "restricted_atBlock")) { + // Resume indentation from parent context. + cx = cx.prev; + indent = cx.indent; + } else if (ch == ")" && (cx.type == "parens" || cx.type == "atBlock_parens") || + ch == "{" && (cx.type == "at" || cx.type == "atBlock")) { + // Dedent relative to current context. + indent = Math.max(0, cx.indent - indentUnit); + cx = cx.prev; + } + } + return indent; + }, + + electricChars: "}", + blockCommentStart: "/*", + blockCommentEnd: "*/", + fold: "brace" + }; +}); + + function keySet(array) { + var keys = {}; + for (var i = 0; i < array.length; ++i) { + keys[array[i]] = true; + } + return keys; + } + + var documentTypes_ = [ + "domain", "regexp", "url", "url-prefix" + ], documentTypes = keySet(documentTypes_); + + var mediaTypes_ = [ + "all", "aural", "braille", "handheld", "print", "projection", "screen", + "tty", "tv", "embossed" + ], mediaTypes = keySet(mediaTypes_); + + var mediaFeatures_ = [ + "width", "min-width", "max-width", "height", "min-height", "max-height", + "device-width", "min-device-width", "max-device-width", "device-height", + "min-device-height", "max-device-height", "aspect-ratio", + "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio", + "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color", + "max-color", "color-index", "min-color-index", "max-color-index", + "monochrome", "min-monochrome", "max-monochrome", "resolution", + "min-resolution", "max-resolution", "scan", "grid", "orientation", + "device-pixel-ratio", "min-device-pixel-ratio", "max-device-pixel-ratio", + "pointer", "any-pointer", "hover", "any-hover" + ], mediaFeatures = keySet(mediaFeatures_); + + var mediaValueKeywords_ = [ + "landscape", "portrait", "none", "coarse", "fine", "on-demand", "hover", + "interlace", "progressive" + ], mediaValueKeywords = keySet(mediaValueKeywords_); + + var propertyKeywords_ = [ + "align-content", "align-items", "align-self", "alignment-adjust", + "alignment-baseline", "anchor-point", "animation", "animation-delay", + "animation-direction", "animation-duration", "animation-fill-mode", + "animation-iteration-count", "animation-name", "animation-play-state", + "animation-timing-function", "appearance", "azimuth", "backface-visibility", + "background", "background-attachment", "background-blend-mode", "background-clip", + "background-color", "background-image", "background-origin", "background-position", + "background-repeat", "background-size", "baseline-shift", "binding", + "bleed", "bookmark-label", "bookmark-level", "bookmark-state", + "bookmark-target", "border", "border-bottom", "border-bottom-color", + "border-bottom-left-radius", "border-bottom-right-radius", + "border-bottom-style", "border-bottom-width", "border-collapse", + "border-color", "border-image", "border-image-outset", + "border-image-repeat", "border-image-slice", "border-image-source", + "border-image-width", "border-left", "border-left-color", + "border-left-style", "border-left-width", "border-radius", "border-right", + "border-right-color", "border-right-style", "border-right-width", + "border-spacing", "border-style", "border-top", "border-top-color", + "border-top-left-radius", "border-top-right-radius", "border-top-style", + "border-top-width", "border-width", "bottom", "box-decoration-break", + "box-shadow", "box-sizing", "break-after", "break-before", "break-inside", + "caption-side", "clear", "clip", "color", "color-profile", "column-count", + "column-fill", "column-gap", "column-rule", "column-rule-color", + "column-rule-style", "column-rule-width", "column-span", "column-width", + "columns", "content", "counter-increment", "counter-reset", "crop", "cue", + "cue-after", "cue-before", "cursor", "direction", "display", + "dominant-baseline", "drop-initial-after-adjust", + "drop-initial-after-align", "drop-initial-before-adjust", + "drop-initial-before-align", "drop-initial-size", "drop-initial-value", + "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis", + "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", + "float", "float-offset", "flow-from", "flow-into", "font", "font-feature-settings", + "font-family", "font-kerning", "font-language-override", "font-size", "font-size-adjust", + "font-stretch", "font-style", "font-synthesis", "font-variant", + "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", + "font-variant-ligatures", "font-variant-numeric", "font-variant-position", + "font-weight", "grid", "grid-area", "grid-auto-columns", "grid-auto-flow", + "grid-auto-rows", "grid-column", "grid-column-end", "grid-column-gap", + "grid-column-start", "grid-gap", "grid-row", "grid-row-end", "grid-row-gap", + "grid-row-start", "grid-template", "grid-template-areas", "grid-template-columns", + "grid-template-rows", "hanging-punctuation", "height", "hyphens", + "icon", "image-orientation", "image-rendering", "image-resolution", + "inline-box-align", "justify-content", "left", "letter-spacing", + "line-break", "line-height", "line-stacking", "line-stacking-ruby", + "line-stacking-shift", "line-stacking-strategy", "list-style", + "list-style-image", "list-style-position", "list-style-type", "margin", + "margin-bottom", "margin-left", "margin-right", "margin-top", + "marker-offset", "marks", "marquee-direction", "marquee-loop", + "marquee-play-count", "marquee-speed", "marquee-style", "max-height", + "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index", + "nav-left", "nav-right", "nav-up", "object-fit", "object-position", + "opacity", "order", "orphans", "outline", + "outline-color", "outline-offset", "outline-style", "outline-width", + "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y", + "padding", "padding-bottom", "padding-left", "padding-right", "padding-top", + "page", "page-break-after", "page-break-before", "page-break-inside", + "page-policy", "pause", "pause-after", "pause-before", "perspective", + "perspective-origin", "pitch", "pitch-range", "play-during", "position", + "presentation-level", "punctuation-trim", "quotes", "region-break-after", + "region-break-before", "region-break-inside", "region-fragment", + "rendering-intent", "resize", "rest", "rest-after", "rest-before", "richness", + "right", "rotation", "rotation-point", "ruby-align", "ruby-overhang", + "ruby-position", "ruby-span", "shape-image-threshold", "shape-inside", "shape-margin", + "shape-outside", "size", "speak", "speak-as", "speak-header", + "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set", + "tab-size", "table-layout", "target", "target-name", "target-new", + "target-position", "text-align", "text-align-last", "text-decoration", + "text-decoration-color", "text-decoration-line", "text-decoration-skip", + "text-decoration-style", "text-emphasis", "text-emphasis-color", + "text-emphasis-position", "text-emphasis-style", "text-height", + "text-indent", "text-justify", "text-outline", "text-overflow", "text-shadow", + "text-size-adjust", "text-space-collapse", "text-transform", "text-underline-position", + "text-wrap", "top", "transform", "transform-origin", "transform-style", + "transition", "transition-delay", "transition-duration", + "transition-property", "transition-timing-function", "unicode-bidi", + "vertical-align", "visibility", "voice-balance", "voice-duration", + "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress", + "voice-volume", "volume", "white-space", "widows", "width", "word-break", + "word-spacing", "word-wrap", "z-index", + // SVG-specific + "clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color", + "flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events", + "color-interpolation", "color-interpolation-filters", + "color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering", + "marker", "marker-end", "marker-mid", "marker-start", "shape-rendering", "stroke", + "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", + "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering", + "baseline-shift", "dominant-baseline", "glyph-orientation-horizontal", + "glyph-orientation-vertical", "text-anchor", "writing-mode" + ], propertyKeywords = keySet(propertyKeywords_); + + var nonStandardPropertyKeywords_ = [ + "scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-dark-shadow-color", + "scrollbar-face-color", "scrollbar-highlight-color", "scrollbar-shadow-color", + "scrollbar-3d-light-color", "scrollbar-track-color", "shape-inside", + "searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button", + "searchfield-results-decoration", "zoom" + ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_); + + var fontProperties_ = [ + "font-family", "src", "unicode-range", "font-variant", "font-feature-settings", + "font-stretch", "font-weight", "font-style" + ], fontProperties = keySet(fontProperties_); + + var counterDescriptors_ = [ + "additive-symbols", "fallback", "negative", "pad", "prefix", "range", + "speak-as", "suffix", "symbols", "system" + ], counterDescriptors = keySet(counterDescriptors_); + + var colorKeywords_ = [ + "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", + "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", + "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", + "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", + "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", + "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", + "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", + "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", + "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", + "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", + "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", + "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", + "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink", + "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", + "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", + "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", + "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", + "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", + "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", + "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", + "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", + "purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown", + "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", + "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", + "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", + "whitesmoke", "yellow", "yellowgreen" + ], colorKeywords = keySet(colorKeywords_); + + var valueKeywords_ = [ + "above", "absolute", "activeborder", "additive", "activecaption", "afar", + "after-white-space", "ahead", "alias", "all", "all-scroll", "alphabetic", "alternate", + "always", "amharic", "amharic-abegede", "antialiased", "appworkspace", + "arabic-indic", "armenian", "asterisks", "attr", "auto", "avoid", "avoid-column", "avoid-page", + "avoid-region", "background", "backwards", "baseline", "below", "bidi-override", "binary", + "bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box", + "both", "bottom", "break", "break-all", "break-word", "bullets", "button", "button-bevel", + "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "calc", "cambodian", + "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret", + "cell", "center", "checkbox", "circle", "cjk-decimal", "cjk-earthly-branch", + "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote", + "col-resize", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse", + "compact", "condensed", "contain", "content", + "content-box", "context-menu", "continuous", "copy", "counter", "counters", "cover", "crop", + "cross", "crosshair", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal", + "decimal-leading-zero", "default", "default-button", "dense", "destination-atop", + "destination-in", "destination-out", "destination-over", "devanagari", "difference", + "disc", "discard", "disclosure-closed", "disclosure-open", "document", + "dot-dash", "dot-dot-dash", + "dotted", "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out", + "element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede", + "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er", + "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er", + "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et", + "ethiopic-halehame-gez", "ethiopic-halehame-om-et", + "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et", + "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "ethiopic-halehame-tig", + "ethiopic-numeric", "ew-resize", "exclusion", "expanded", "extends", "extra-condensed", + "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "flex", "flex-end", "flex-start", "footnotes", + "forwards", "from", "geometricPrecision", "georgian", "graytext", "grid", "groove", + "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hard-light", "hebrew", + "help", "hidden", "hide", "higher", "highlight", "highlighttext", + "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "hue", "icon", "ignore", + "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite", + "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis", + "inline-block", "inline-flex", "inline-grid", "inline-table", "inset", "inside", "intrinsic", "invert", + "italic", "japanese-formal", "japanese-informal", "justify", "kannada", + "katakana", "katakana-iroha", "keep-all", "khmer", + "korean-hangul-formal", "korean-hanja-formal", "korean-hanja-informal", + "landscape", "lao", "large", "larger", "left", "level", "lighter", "lighten", + "line-through", "linear", "linear-gradient", "lines", "list-item", "listbox", "listitem", + "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian", + "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian", + "lower-roman", "lowercase", "ltr", "luminosity", "malayalam", "match", "matrix", "matrix3d", + "media-controls-background", "media-current-time-display", + "media-fullscreen-button", "media-mute-button", "media-play-button", + "media-return-to-realtime-button", "media-rewind-button", + "media-seek-back-button", "media-seek-forward-button", "media-slider", + "media-sliderthumb", "media-time-remaining-display", "media-volume-slider", + "media-volume-slider-container", "media-volume-sliderthumb", "medium", + "menu", "menulist", "menulist-button", "menulist-text", + "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic", + "mix", "mongolian", "monospace", "move", "multiple", "multiply", "myanmar", "n-resize", + "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop", + "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap", + "ns-resize", "numbers", "numeric", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote", + "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset", + "outside", "outside-shape", "overlay", "overline", "padding", "padding-box", + "painted", "page", "paused", "persian", "perspective", "plus-darker", "plus-lighter", + "pointer", "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d", + "progress", "push-button", "radial-gradient", "radio", "read-only", + "read-write", "read-write-plaintext-only", "rectangle", "region", + "relative", "repeat", "repeating-linear-gradient", + "repeating-radial-gradient", "repeat-x", "repeat-y", "reset", "reverse", + "rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY", + "rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running", + "s-resize", "sans-serif", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen", + "scroll", "scrollbar", "se-resize", "searchfield", + "searchfield-cancel-button", "searchfield-decoration", + "searchfield-results-button", "searchfield-results-decoration", + "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama", + "simp-chinese-formal", "simp-chinese-informal", "single", + "skew", "skewX", "skewY", "skip-white-space", "slide", "slider-horizontal", + "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow", + "small", "small-caps", "small-caption", "smaller", "soft-light", "solid", "somali", + "source-atop", "source-in", "source-out", "source-over", "space", "space-around", "space-between", "spell-out", "square", + "square-button", "start", "static", "status-bar", "stretch", "stroke", "sub", + "subpixel-antialiased", "super", "sw-resize", "symbolic", "symbols", "table", + "table-caption", "table-cell", "table-column", "table-column-group", + "table-footer-group", "table-header-group", "table-row", "table-row-group", + "tamil", + "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai", + "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight", + "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er", + "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top", + "trad-chinese-formal", "trad-chinese-informal", + "translate", "translate3d", "translateX", "translateY", "translateZ", + "transparent", "ultra-condensed", "ultra-expanded", "underline", "up", + "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal", + "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url", + "var", "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted", + "visibleStroke", "visual", "w-resize", "wait", "wave", "wider", + "window", "windowframe", "windowtext", "words", "wrap", "wrap-reverse", "x-large", "x-small", "xor", + "xx-large", "xx-small" + ], valueKeywords = keySet(valueKeywords_); + + var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_) + .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_) + .concat(valueKeywords_); + CodeMirror.registerHelper("hintWords", "css", allWords); + + function tokenCComment(stream, state) { + var maybeEnd = false, ch; + while ((ch = stream.next()) != null) { + if (maybeEnd && ch == "/") { + state.tokenize = null; + break; + } + maybeEnd = (ch == "*"); + } + return ["comment", "comment"]; + } + + CodeMirror.defineMIME("text/css", { + documentTypes: documentTypes, + mediaTypes: mediaTypes, + mediaFeatures: mediaFeatures, + mediaValueKeywords: mediaValueKeywords, + propertyKeywords: propertyKeywords, + nonStandardPropertyKeywords: nonStandardPropertyKeywords, + fontProperties: fontProperties, + counterDescriptors: counterDescriptors, + colorKeywords: colorKeywords, + valueKeywords: valueKeywords, + tokenHooks: { + "/": function(stream, state) { + if (!stream.eat("*")) return false; + state.tokenize = tokenCComment; + return tokenCComment(stream, state); + } + }, + name: "css" + }); + + CodeMirror.defineMIME("text/x-scss", { + mediaTypes: mediaTypes, + mediaFeatures: mediaFeatures, + mediaValueKeywords: mediaValueKeywords, + propertyKeywords: propertyKeywords, + nonStandardPropertyKeywords: nonStandardPropertyKeywords, + colorKeywords: colorKeywords, + valueKeywords: valueKeywords, + fontProperties: fontProperties, + allowNested: true, + tokenHooks: { + "/": function(stream, state) { + if (stream.eat("/")) { + stream.skipToEnd(); + return ["comment", "comment"]; + } else if (stream.eat("*")) { + state.tokenize = tokenCComment; + return tokenCComment(stream, state); + } else { + return ["operator", "operator"]; + } + }, + ":": function(stream) { + if (stream.match(/\s*\{/)) + return [null, "{"]; + return false; + }, + "$": function(stream) { + stream.match(/^[\w-]+/); + if (stream.match(/^\s*:/, false)) + return ["variable-2", "variable-definition"]; + return ["variable-2", "variable"]; + }, + "#": function(stream) { + if (!stream.eat("{")) return false; + return [null, "interpolation"]; + } + }, + name: "css", + helperType: "scss" + }); + + CodeMirror.defineMIME("text/x-less", { + mediaTypes: mediaTypes, + mediaFeatures: mediaFeatures, + mediaValueKeywords: mediaValueKeywords, + propertyKeywords: propertyKeywords, + nonStandardPropertyKeywords: nonStandardPropertyKeywords, + colorKeywords: colorKeywords, + valueKeywords: valueKeywords, + fontProperties: fontProperties, + allowNested: true, + tokenHooks: { + "/": function(stream, state) { + if (stream.eat("/")) { + stream.skipToEnd(); + return ["comment", "comment"]; + } else if (stream.eat("*")) { + state.tokenize = tokenCComment; + return tokenCComment(stream, state); + } else { + return ["operator", "operator"]; + } + }, + "@": function(stream) { + if (stream.eat("{")) return [null, "interpolation"]; + if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/, false)) return false; + stream.eatWhile(/[\w\\\-]/); + if (stream.match(/^\s*:/, false)) + return ["variable-2", "variable-definition"]; + return ["variable-2", "variable"]; + }, + "&": function() { + return ["atom", "atom"]; + } + }, + name: "css", + helperType: "less" + }); + + CodeMirror.defineMIME("text/x-gss", { + documentTypes: documentTypes, + mediaTypes: mediaTypes, + mediaFeatures: mediaFeatures, + propertyKeywords: propertyKeywords, + nonStandardPropertyKeywords: nonStandardPropertyKeywords, + fontProperties: fontProperties, + counterDescriptors: counterDescriptors, + colorKeywords: colorKeywords, + valueKeywords: valueKeywords, + supportsAtComponent: true, + tokenHooks: { + "/": function(stream, state) { + if (!stream.eat("*")) return false; + state.tokenize = tokenCComment; + return tokenCComment(stream, state); + } + }, + name: "css", + helperType: "gss" + }); + +}); diff --git a/web/bower_components/codemirror/mode/htmlmixed/htmlmixed.js b/web/bower_components/codemirror/mode/htmlmixed/htmlmixed.js new file mode 100644 index 0000000..d74083e --- /dev/null +++ b/web/bower_components/codemirror/mode/htmlmixed/htmlmixed.js @@ -0,0 +1,152 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript"), require("../css/css")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript", "../css/css"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + var defaultTags = { + script: [ + ["lang", /(javascript|babel)/i, "javascript"], + ["type", /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^$/i, "javascript"], + ["type", /./, "text/plain"], + [null, null, "javascript"] + ], + style: [ + ["lang", /^css$/i, "css"], + ["type", /^(text\/)?(x-)?(stylesheet|css)$/i, "css"], + ["type", /./, "text/plain"], + [null, null, "css"] + ] + }; + + function maybeBackup(stream, pat, style) { + var cur = stream.current(), close = cur.search(pat); + if (close > -1) { + stream.backUp(cur.length - close); + } else if (cur.match(/<\/?$/)) { + stream.backUp(cur.length); + if (!stream.match(pat, false)) stream.match(cur); + } + return style; + } + + var attrRegexpCache = {}; + function getAttrRegexp(attr) { + var regexp = attrRegexpCache[attr]; + if (regexp) return regexp; + return attrRegexpCache[attr] = new RegExp("\\s+" + attr + "\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*"); + } + + function getAttrValue(text, attr) { + var match = text.match(getAttrRegexp(attr)) + return match ? match[2] : "" + } + + function getTagRegexp(tagName, anchored) { + return new RegExp((anchored ? "^" : "") + "<\/\s*" + tagName + "\s*>", "i"); + } + + function addTags(from, to) { + for (var tag in from) { + var dest = to[tag] || (to[tag] = []); + var source = from[tag]; + for (var i = source.length - 1; i >= 0; i--) + dest.unshift(source[i]) + } + } + + function findMatchingMode(tagInfo, tagText) { + for (var i = 0; i < tagInfo.length; i++) { + var spec = tagInfo[i]; + if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2]; + } + } + + CodeMirror.defineMode("htmlmixed", function (config, parserConfig) { + var htmlMode = CodeMirror.getMode(config, { + name: "xml", + htmlMode: true, + multilineTagIndentFactor: parserConfig.multilineTagIndentFactor, + multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag + }); + + var tags = {}; + var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes; + addTags(defaultTags, tags); + if (configTags) addTags(configTags, tags); + if (configScript) for (var i = configScript.length - 1; i >= 0; i--) + tags.script.unshift(["type", configScript[i].matches, configScript[i].mode]) + + function html(stream, state) { + var style = htmlMode.token(stream, state.htmlState), tag = /\btag\b/.test(style), tagName + if (tag && !/[<>\s\/]/.test(stream.current()) && + (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) && + tags.hasOwnProperty(tagName)) { + state.inTag = tagName + " " + } else if (state.inTag && tag && />$/.test(stream.current())) { + var inTag = /^([\S]+) (.*)/.exec(state.inTag) + state.inTag = null + var modeSpec = stream.current() == ">" && findMatchingMode(tags[inTag[1]], inTag[2]) + var mode = CodeMirror.getMode(config, modeSpec) + var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false); + state.token = function (stream, state) { + if (stream.match(endTagA, false)) { + state.token = html; + state.localState = state.localMode = null; + return null; + } + return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState)); + }; + state.localMode = mode; + state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, "")); + } else if (state.inTag) { + state.inTag += stream.current() + if (stream.eol()) state.inTag += " " + } + return style; + }; + + return { + startState: function () { + var state = CodeMirror.startState(htmlMode); + return {token: html, inTag: null, localMode: null, localState: null, htmlState: state}; + }, + + copyState: function (state) { + var local; + if (state.localState) { + local = CodeMirror.copyState(state.localMode, state.localState); + } + return {token: state.token, inTag: state.inTag, + localMode: state.localMode, localState: local, + htmlState: CodeMirror.copyState(htmlMode, state.htmlState)}; + }, + + token: function (stream, state) { + return state.token(stream, state); + }, + + indent: function (state, textAfter) { + if (!state.localMode || /^\s*<\//.test(textAfter)) + return htmlMode.indent(state.htmlState, textAfter); + else if (state.localMode.indent) + return state.localMode.indent(state.localState, textAfter); + else + return CodeMirror.Pass; + }, + + innerMode: function (state) { + return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode}; + } + }; + }, "xml", "javascript", "css"); + + CodeMirror.defineMIME("text/html", "htmlmixed"); +}); diff --git a/web/bower_components/codemirror/mode/javascript/javascript.js b/web/bower_components/codemirror/mode/javascript/javascript.js new file mode 100644 index 0000000..ca87541 --- /dev/null +++ b/web/bower_components/codemirror/mode/javascript/javascript.js @@ -0,0 +1,748 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// TODO actually recognize syntax of TypeScript constructs + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +function expressionAllowed(stream, state, backUp) { + return /^(?:operator|sof|keyword c|case|new|[\[{}\(,;:]|=>)$/.test(state.lastType) || + (state.lastType == "quasi" && /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)))) +} + +CodeMirror.defineMode("javascript", function(config, parserConfig) { + var indentUnit = config.indentUnit; + var statementIndent = parserConfig.statementIndent; + var jsonldMode = parserConfig.jsonld; + var jsonMode = parserConfig.json || jsonldMode; + var isTS = parserConfig.typescript; + var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/; + + // Tokenizer + + var keywords = function(){ + function kw(type) {return {type: type, style: "keyword"};} + var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); + var operator = kw("operator"), atom = {type: "atom", style: "atom"}; + + var jsKeywords = { + "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, + "return": C, "break": C, "continue": C, "new": kw("new"), "delete": C, "throw": C, "debugger": C, + "var": kw("var"), "const": kw("var"), "let": kw("var"), + "function": kw("function"), "catch": kw("catch"), + "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), + "in": operator, "typeof": operator, "instanceof": operator, + "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom, + "this": kw("this"), "class": kw("class"), "super": kw("atom"), + "yield": C, "export": kw("export"), "import": kw("import"), "extends": C, + "await": C, "async": kw("async") + }; + + // Extend the 'normal' keywords with the TypeScript language extensions + if (isTS) { + var type = {type: "variable", style: "variable-3"}; + var tsKeywords = { + // object-like things + "interface": kw("class"), + "implements": C, + "namespace": C, + "module": kw("module"), + "enum": kw("module"), + + // scope modifiers + "public": kw("modifier"), + "private": kw("modifier"), + "protected": kw("modifier"), + "abstract": kw("modifier"), + + // operators + "as": operator, + + // types + "string": type, "number": type, "boolean": type, "any": type + }; + + for (var attr in tsKeywords) { + jsKeywords[attr] = tsKeywords[attr]; + } + } + + return jsKeywords; + }(); + + var isOperatorChar = /[+\-*&%=<>!?|~^]/; + var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; + + function readRegexp(stream) { + var escaped = false, next, inSet = false; + while ((next = stream.next()) != null) { + if (!escaped) { + if (next == "/" && !inSet) return; + if (next == "[") inSet = true; + else if (inSet && next == "]") inSet = false; + } + escaped = !escaped && next == "\\"; + } + } + + // Used as scratch variables to communicate multiple values without + // consing up tons of objects. + var type, content; + function ret(tp, style, cont) { + type = tp; content = cont; + return style; + } + function tokenBase(stream, state) { + var ch = stream.next(); + if (ch == '"' || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } else if (ch == "." && stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) { + return ret("number", "number"); + } else if (ch == "." && stream.match("..")) { + return ret("spread", "meta"); + } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { + return ret(ch); + } else if (ch == "=" && stream.eat(">")) { + return ret("=>", "operator"); + } else if (ch == "0" && stream.eat(/x/i)) { + stream.eatWhile(/[\da-f]/i); + return ret("number", "number"); + } else if (ch == "0" && stream.eat(/o/i)) { + stream.eatWhile(/[0-7]/i); + return ret("number", "number"); + } else if (ch == "0" && stream.eat(/b/i)) { + stream.eatWhile(/[01]/i); + return ret("number", "number"); + } else if (/\d/.test(ch)) { + stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/); + return ret("number", "number"); + } else if (ch == "/") { + if (stream.eat("*")) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } else if (stream.eat("/")) { + stream.skipToEnd(); + return ret("comment", "comment"); + } else if (expressionAllowed(stream, state, 1)) { + readRegexp(stream); + stream.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/); + return ret("regexp", "string-2"); + } else { + stream.eatWhile(isOperatorChar); + return ret("operator", "operator", stream.current()); + } + } else if (ch == "`") { + state.tokenize = tokenQuasi; + return tokenQuasi(stream, state); + } else if (ch == "#") { + stream.skipToEnd(); + return ret("error", "error"); + } else if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return ret("operator", "operator", stream.current()); + } else if (wordRE.test(ch)) { + stream.eatWhile(wordRE); + var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; + return (known && state.lastType != ".") ? ret(known.type, known.style, word) : + ret("variable", "variable", word); + } + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next; + if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){ + state.tokenize = tokenBase; + return ret("jsonld-keyword", "meta"); + } + while ((next = stream.next()) != null) { + if (next == quote && !escaped) break; + escaped = !escaped && next == "\\"; + } + if (!escaped) state.tokenize = tokenBase; + return ret("string", "string"); + }; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return ret("comment", "comment"); + } + + function tokenQuasi(stream, state) { + var escaped = false, next; + while ((next = stream.next()) != null) { + if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) { + state.tokenize = tokenBase; + break; + } + escaped = !escaped && next == "\\"; + } + return ret("quasi", "string-2", stream.current()); + } + + var brackets = "([{}])"; + // This is a crude lookahead trick to try and notice that we're + // parsing the argument patterns for a fat-arrow function before we + // actually hit the arrow token. It only works if the arrow is on + // the same line as the arguments and there's no strange noise + // (comments) in between. Fallback is to only notice when we hit the + // arrow, and not declare the arguments as locals for the arrow + // body. + function findFatArrow(stream, state) { + if (state.fatArrowAt) state.fatArrowAt = null; + var arrow = stream.string.indexOf("=>", stream.start); + if (arrow < 0) return; + + var depth = 0, sawSomething = false; + for (var pos = arrow - 1; pos >= 0; --pos) { + var ch = stream.string.charAt(pos); + var bracket = brackets.indexOf(ch); + if (bracket >= 0 && bracket < 3) { + if (!depth) { ++pos; break; } + if (--depth == 0) break; + } else if (bracket >= 3 && bracket < 6) { + ++depth; + } else if (wordRE.test(ch)) { + sawSomething = true; + } else if (/["'\/]/.test(ch)) { + return; + } else if (sawSomething && !depth) { + ++pos; + break; + } + } + if (sawSomething && !depth) state.fatArrowAt = pos; + } + + // Parser + + var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true}; + + function JSLexical(indented, column, type, align, prev, info) { + this.indented = indented; + this.column = column; + this.type = type; + this.prev = prev; + this.info = info; + if (align != null) this.align = align; + } + + function inScope(state, varname) { + for (var v = state.localVars; v; v = v.next) + if (v.name == varname) return true; + for (var cx = state.context; cx; cx = cx.prev) { + for (var v = cx.vars; v; v = v.next) + if (v.name == varname) return true; + } + } + + function parseJS(state, style, type, content, stream) { + var cc = state.cc; + // Communicate our context to the combinators. + // (Less wasteful than consing up a hundred closures on every call.) + cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style; + + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = true; + + while(true) { + var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; + if (combinator(type, content)) { + while(cc.length && cc[cc.length - 1].lex) + cc.pop()(); + if (cx.marked) return cx.marked; + if (type == "variable" && inScope(state, content)) return "variable-2"; + return style; + } + } + } + + // Combinator utils + + var cx = {state: null, column: null, marked: null, cc: null}; + function pass() { + for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); + } + function cont() { + pass.apply(null, arguments); + return true; + } + function register(varname) { + function inList(list) { + for (var v = list; v; v = v.next) + if (v.name == varname) return true; + return false; + } + var state = cx.state; + cx.marked = "def"; + if (state.context) { + if (inList(state.localVars)) return; + state.localVars = {name: varname, next: state.localVars}; + } else { + if (inList(state.globalVars)) return; + if (parserConfig.globalVars) + state.globalVars = {name: varname, next: state.globalVars}; + } + } + + // Combinators + + var defaultVars = {name: "this", next: {name: "arguments"}}; + function pushcontext() { + cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; + cx.state.localVars = defaultVars; + } + function popcontext() { + cx.state.localVars = cx.state.context.vars; + cx.state.context = cx.state.context.prev; + } + function pushlex(type, info) { + var result = function() { + var state = cx.state, indent = state.indented; + if (state.lexical.type == "stat") indent = state.lexical.indented; + else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev) + indent = outer.indented; + state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info); + }; + result.lex = true; + return result; + } + function poplex() { + var state = cx.state; + if (state.lexical.prev) { + if (state.lexical.type == ")") + state.indented = state.lexical.indented; + state.lexical = state.lexical.prev; + } + } + poplex.lex = true; + + function expect(wanted) { + function exp(type) { + if (type == wanted) return cont(); + else if (wanted == ";") return pass(); + else return cont(exp); + }; + return exp; + } + + function statement(type, value) { + if (type == "var") return cont(pushlex("vardef", value.length), vardef, expect(";"), poplex); + if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); + if (type == "keyword b") return cont(pushlex("form"), statement, poplex); + if (type == "{") return cont(pushlex("}"), block, poplex); + if (type == ";") return cont(); + if (type == "if") { + if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex) + cx.state.cc.pop()(); + return cont(pushlex("form"), expression, statement, poplex, maybeelse); + } + if (type == "function") return cont(functiondef); + if (type == "for") return cont(pushlex("form"), forspec, statement, poplex); + if (type == "variable") return cont(pushlex("stat"), maybelabel); + if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), + block, poplex, poplex); + if (type == "case") return cont(expression, expect(":")); + if (type == "default") return cont(expect(":")); + if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), + statement, poplex, popcontext); + if (type == "class") return cont(pushlex("form"), className, poplex); + if (type == "export") return cont(pushlex("stat"), afterExport, poplex); + if (type == "import") return cont(pushlex("stat"), afterImport, poplex); + if (type == "module") return cont(pushlex("form"), pattern, pushlex("}"), expect("{"), block, poplex, poplex) + if (type == "async") return cont(statement) + return pass(pushlex("stat"), expression, expect(";"), poplex); + } + function expression(type) { + return expressionInner(type, false); + } + function expressionNoComma(type) { + return expressionInner(type, true); + } + function expressionInner(type, noComma) { + if (cx.state.fatArrowAt == cx.stream.start) { + var body = noComma ? arrowBodyNoComma : arrowBody; + if (type == "(") return cont(pushcontext, pushlex(")"), commasep(pattern, ")"), poplex, expect("=>"), body, popcontext); + else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext); + } + + var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma; + if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); + if (type == "function") return cont(functiondef, maybeop); + if (type == "keyword c") return cont(noComma ? maybeexpressionNoComma : maybeexpression); + if (type == "(") return cont(pushlex(")"), maybeexpression, comprehension, expect(")"), poplex, maybeop); + if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression); + if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop); + if (type == "{") return contCommasep(objprop, "}", null, maybeop); + if (type == "quasi") return pass(quasi, maybeop); + if (type == "new") return cont(maybeTarget(noComma)); + return cont(); + } + function maybeexpression(type) { + if (type.match(/[;\}\)\],]/)) return pass(); + return pass(expression); + } + function maybeexpressionNoComma(type) { + if (type.match(/[;\}\)\],]/)) return pass(); + return pass(expressionNoComma); + } + + function maybeoperatorComma(type, value) { + if (type == ",") return cont(expression); + return maybeoperatorNoComma(type, value, false); + } + function maybeoperatorNoComma(type, value, noComma) { + var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma; + var expr = noComma == false ? expression : expressionNoComma; + if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext); + if (type == "operator") { + if (/\+\+|--/.test(value)) return cont(me); + if (value == "?") return cont(expression, expect(":"), expr); + return cont(expr); + } + if (type == "quasi") { return pass(quasi, me); } + if (type == ";") return; + if (type == "(") return contCommasep(expressionNoComma, ")", "call", me); + if (type == ".") return cont(property, me); + if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me); + } + function quasi(type, value) { + if (type != "quasi") return pass(); + if (value.slice(value.length - 2) != "${") return cont(quasi); + return cont(expression, continueQuasi); + } + function continueQuasi(type) { + if (type == "}") { + cx.marked = "string-2"; + cx.state.tokenize = tokenQuasi; + return cont(quasi); + } + } + function arrowBody(type) { + findFatArrow(cx.stream, cx.state); + return pass(type == "{" ? statement : expression); + } + function arrowBodyNoComma(type) { + findFatArrow(cx.stream, cx.state); + return pass(type == "{" ? statement : expressionNoComma); + } + function maybeTarget(noComma) { + return function(type) { + if (type == ".") return cont(noComma ? targetNoComma : target); + else return pass(noComma ? expressionNoComma : expression); + }; + } + function target(_, value) { + if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorComma); } + } + function targetNoComma(_, value) { + if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoComma); } + } + function maybelabel(type) { + if (type == ":") return cont(poplex, statement); + return pass(maybeoperatorComma, expect(";"), poplex); + } + function property(type) { + if (type == "variable") {cx.marked = "property"; return cont();} + } + function objprop(type, value) { + if (type == "variable" || cx.style == "keyword") { + cx.marked = "property"; + if (value == "get" || value == "set") return cont(getterSetter); + return cont(afterprop); + } else if (type == "number" || type == "string") { + cx.marked = jsonldMode ? "property" : (cx.style + " property"); + return cont(afterprop); + } else if (type == "jsonld-keyword") { + return cont(afterprop); + } else if (type == "modifier") { + return cont(objprop) + } else if (type == "[") { + return cont(expression, expect("]"), afterprop); + } else if (type == "spread") { + return cont(expression); + } + } + function getterSetter(type) { + if (type != "variable") return pass(afterprop); + cx.marked = "property"; + return cont(functiondef); + } + function afterprop(type) { + if (type == ":") return cont(expressionNoComma); + if (type == "(") return pass(functiondef); + } + function commasep(what, end) { + function proceed(type, value) { + if (type == ",") { + var lex = cx.state.lexical; + if (lex.info == "call") lex.pos = (lex.pos || 0) + 1; + return cont(what, proceed); + } + if (type == end || value == end) return cont(); + return cont(expect(end)); + } + return function(type, value) { + if (type == end || value == end) return cont(); + return pass(what, proceed); + }; + } + function contCommasep(what, end, info) { + for (var i = 3; i < arguments.length; i++) + cx.cc.push(arguments[i]); + return cont(pushlex(end, info), commasep(what, end), poplex); + } + function block(type) { + if (type == "}") return cont(); + return pass(statement, block); + } + function maybetype(type) { + if (isTS && type == ":") return cont(typeexpr); + } + function maybedefault(_, value) { + if (value == "=") return cont(expressionNoComma); + } + function typeexpr(type) { + if (type == "variable") {cx.marked = "variable-3"; return cont(afterType);} + } + function afterType(type, value) { + if (value == "<") return cont(commasep(typeexpr, ">"), afterType) + if (type == "[") return cont(expect("]"), afterType) + } + function vardef() { + return pass(pattern, maybetype, maybeAssign, vardefCont); + } + function pattern(type, value) { + if (type == "modifier") return cont(pattern) + if (type == "variable") { register(value); return cont(); } + if (type == "spread") return cont(pattern); + if (type == "[") return contCommasep(pattern, "]"); + if (type == "{") return contCommasep(proppattern, "}"); + } + function proppattern(type, value) { + if (type == "variable" && !cx.stream.match(/^\s*:/, false)) { + register(value); + return cont(maybeAssign); + } + if (type == "variable") cx.marked = "property"; + if (type == "spread") return cont(pattern); + if (type == "}") return pass(); + return cont(expect(":"), pattern, maybeAssign); + } + function maybeAssign(_type, value) { + if (value == "=") return cont(expressionNoComma); + } + function vardefCont(type) { + if (type == ",") return cont(vardef); + } + function maybeelse(type, value) { + if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex); + } + function forspec(type) { + if (type == "(") return cont(pushlex(")"), forspec1, expect(")"), poplex); + } + function forspec1(type) { + if (type == "var") return cont(vardef, expect(";"), forspec2); + if (type == ";") return cont(forspec2); + if (type == "variable") return cont(formaybeinof); + return pass(expression, expect(";"), forspec2); + } + function formaybeinof(_type, value) { + if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } + return cont(maybeoperatorComma, forspec2); + } + function forspec2(type, value) { + if (type == ";") return cont(forspec3); + if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } + return pass(expression, expect(";"), forspec3); + } + function forspec3(type) { + if (type != ")") cont(expression); + } + function functiondef(type, value) { + if (value == "*") {cx.marked = "keyword"; return cont(functiondef);} + if (type == "variable") {register(value); return cont(functiondef);} + if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, maybetype, statement, popcontext); + } + function funarg(type) { + if (type == "spread") return cont(funarg); + return pass(pattern, maybetype, maybedefault); + } + function className(type, value) { + if (type == "variable") {register(value); return cont(classNameAfter);} + } + function classNameAfter(type, value) { + if (value == "extends") return cont(expression, classNameAfter); + if (type == "{") return cont(pushlex("}"), classBody, poplex); + } + function classBody(type, value) { + if (type == "variable" || cx.style == "keyword") { + if (value == "static") { + cx.marked = "keyword"; + return cont(classBody); + } + cx.marked = "property"; + if (value == "get" || value == "set") return cont(classGetterSetter, functiondef, classBody); + return cont(functiondef, classBody); + } + if (value == "*") { + cx.marked = "keyword"; + return cont(classBody); + } + if (type == ";") return cont(classBody); + if (type == "}") return cont(); + } + function classGetterSetter(type) { + if (type != "variable") return pass(); + cx.marked = "property"; + return cont(); + } + function afterExport(_type, value) { + if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); } + if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); } + return pass(statement); + } + function afterImport(type) { + if (type == "string") return cont(); + return pass(importSpec, maybeFrom); + } + function importSpec(type, value) { + if (type == "{") return contCommasep(importSpec, "}"); + if (type == "variable") register(value); + if (value == "*") cx.marked = "keyword"; + return cont(maybeAs); + } + function maybeAs(_type, value) { + if (value == "as") { cx.marked = "keyword"; return cont(importSpec); } + } + function maybeFrom(_type, value) { + if (value == "from") { cx.marked = "keyword"; return cont(expression); } + } + function arrayLiteral(type) { + if (type == "]") return cont(); + return pass(expressionNoComma, maybeArrayComprehension); + } + function maybeArrayComprehension(type) { + if (type == "for") return pass(comprehension, expect("]")); + if (type == ",") return cont(commasep(maybeexpressionNoComma, "]")); + return pass(commasep(expressionNoComma, "]")); + } + function comprehension(type) { + if (type == "for") return cont(forspec, comprehension); + if (type == "if") return cont(expression, comprehension); + } + + function isContinuedStatement(state, textAfter) { + return state.lastType == "operator" || state.lastType == "," || + isOperatorChar.test(textAfter.charAt(0)) || + /[,.]/.test(textAfter.charAt(0)); + } + + // Interface + + return { + startState: function(basecolumn) { + var state = { + tokenize: tokenBase, + lastType: "sof", + cc: [], + lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), + localVars: parserConfig.localVars, + context: parserConfig.localVars && {vars: parserConfig.localVars}, + indented: basecolumn || 0 + }; + if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") + state.globalVars = parserConfig.globalVars; + return state; + }, + + token: function(stream, state) { + if (stream.sol()) { + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = false; + state.indented = stream.indentation(); + findFatArrow(stream, state); + } + if (state.tokenize != tokenComment && stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + if (type == "comment") return style; + state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type; + return parseJS(state, style, type, content, stream); + }, + + indent: function(state, textAfter) { + if (state.tokenize == tokenComment) return CodeMirror.Pass; + if (state.tokenize != tokenBase) return 0; + var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; + // Kludge to prevent 'maybelse' from blocking lexical scope pops + if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) { + var c = state.cc[i]; + if (c == poplex) lexical = lexical.prev; + else if (c != maybeelse) break; + } + if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; + if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat") + lexical = lexical.prev; + var type = lexical.type, closing = firstChar == type; + + if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info + 1 : 0); + else if (type == "form" && firstChar == "{") return lexical.indented; + else if (type == "form") return lexical.indented + indentUnit; + else if (type == "stat") + return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0); + else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false) + return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); + else if (lexical.align) return lexical.column + (closing ? 0 : 1); + else return lexical.indented + (closing ? 0 : indentUnit); + }, + + electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, + blockCommentStart: jsonMode ? null : "/*", + blockCommentEnd: jsonMode ? null : "*/", + lineComment: jsonMode ? null : "//", + fold: "brace", + closeBrackets: "()[]{}''\"\"``", + + helperType: jsonMode ? "json" : "javascript", + jsonldMode: jsonldMode, + jsonMode: jsonMode, + + expressionAllowed: expressionAllowed, + skipExpression: function(state) { + var top = state.cc[state.cc.length - 1] + if (top == expression || top == expressionNoComma) state.cc.pop() + } + }; +}); + +CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/); + +CodeMirror.defineMIME("text/javascript", "javascript"); +CodeMirror.defineMIME("text/ecmascript", "javascript"); +CodeMirror.defineMIME("application/javascript", "javascript"); +CodeMirror.defineMIME("application/x-javascript", "javascript"); +CodeMirror.defineMIME("application/ecmascript", "javascript"); +CodeMirror.defineMIME("application/json", {name: "javascript", json: true}); +CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true}); +CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true}); +CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true }); +CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true }); + +}); diff --git a/web/css/swish-min.css b/web/css/swish-min.css new file mode 100644 index 0000000..0b9d3a4 --- /dev/null +++ b/web/css/swish-min.css @@ -0,0 +1,14 @@ +ul.dropdown-menu li.checkbox input{margin-left:3px}ul.dropdown-menu li.checkbox span{margin-left:20px}.dropdown-menu>li{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:pointer}.dropdown-menu .sub-menu{left:100%;position:absolute;top:0;display:none;margin-top:-1px;border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:#fff;box-shadow:none}.right-caret:after,.left-caret:after{content:"";border-bottom:5px solid transparent;border-top:5px solid transparent;display:inline-block;height:0;vertical-align:middle;width:0;margin-left:5px}.right-caret:after{border-left:5px solid #ffaf46}.left-caret:after{border-right:5px solid #ffaf46}.dropdown-icon{margin-left:-12px;margin-right:5px;padding:0;background-repeat:no-repeat;background-size:100%;background-position:50% 50%;display:inline-block;vertical-align:middle;height:18px;width:18px}html,body{width:100%;height:100%;padding:0;margin:0;overflow:hidden}nav.navbar{margin-bottom:5px}#content{width:100%;height:calc(100% - 98px);padding:0;background-color:#fff}.pane-container,.pane-wrapper{width:100%;height:100%;background-color:white:green}.splittable{background-color:#fff;width:100%;height:100%;padding:5px}div.tabbed{height:100%}div.tab-content{height:calc(100% - 40px)}div.tab-pane{position:relative;height:100%}span.glyphicon.xclose:hover{opacity:.8}span.glyphicon.xclose{margin-left:5px;opacity:.2}a.tab-new.compact>span{padding:6px 0}.nav>li>a.compact{padding:0 5px}span.tab-dirty{display:none;background-image:url(../icons/wip.png);padding:0;background-repeat:no-repeat;background-size:90% 60%;background-position:0 40%;vertical-align:middle;height:30px;width:21px}.nav>li>a.compact.data-dirty>span.tab-dirty{display:inline-block}.tabbed-select:{width:100%}.tabbed-create{margin:2em 0 1em;text-align:center}label.tabbed-left{text-align:right;margin-right:.6em;white-space:nowrap;width:5em}label.tabbed-right{text-align:left;margin-left:.6em;white-space:nowrap;width:5em}.tabbed-profile>label{font-style:italic;font-weight:400;color:#888}.tab-icon{padding:0;background-repeat:no-repeat;background-size:70%;background-position:50% 40%;display:inline-block;vertical-align:middle;height:30px;width:30px}.tabbed-profile{width:100%;text-align:center}.tabbed-profile .select-profile{display:inline-block}form.search-sources{margin:3em auto 1em;width:80%}.CodeMirror{font-family:monospace;height:300px;color:#000}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumbers{}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:0;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{0%{}50%{background-color:transparent}100%{}}@-webkit-keyframes blink{0%{}50%{background-color:transparent}100%{}}@keyframes blink{0%{}50%{background-color:transparent}100%{}}.CodeMirror-overwrite .CodeMirror-cursor{}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable,.cm-s-default .cm-punctuation,.cm-s-default .cm-property,.cm-s-default .cm-operator{}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px;*zoom:1;*display:inline}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:0!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper{-webkit-user-select:none;-moz-user-select:none;user-select:none}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:none;font-variant-ligatures:none}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;overflow:auto}.CodeMirror-widget{}.CodeMirror-code{outline:0}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.CodeMirror span{*vertical-align:text-bottom}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0}.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,.2);box-shadow:2px 3px 5px rgba(0,0,0,.2);border-radius:3px;border:1px solid silver;background:#fff;font-size:90%;font-family:monospace;max-width:19em;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}.cm-s-prolog span.cm-number{color:#000}.cm-s-prolog span.cm-neg-number{color:#000}.cm-s-prolog span.cm-atom{color:#762}.cm-s-prolog span.cm-qatom{color:#008}.cm-s-prolog span.cm-string{color:#008;font-style:italic}.cm-s-prolog span.cm-string_terminal{color:#008;font-style:italic}.cm-s-prolog span.cm-bqstring{color:#040;font-style:italic}.cm-s-prolog span.cm-codes{color:#040;font-style:italic}.cm-s-prolog span.cm-chars{color:#040;font-style:italic}.cm-s-prolog span.cm-functor{color:#000;font-style:italic}.cm-s-prolog span.cm-tag{color:#000;font-weight:700}.cm-s-prolog span.cm-key{color:#000;font-weight:700}.cm-s-prolog span.cm-ext_quant{color:#000;font-weight:700}.cm-s-prolog span.cm-qq_content{color:#900}.cm-s-prolog span.cm-qq_open,.cm-s-prolog span.cm-qq_sep,.cm-s-prolog span.cm-qq_close{color:#00f;font-weight:700}.cm-s-prolog span.cm-qq_type{font-weight:700}.cm-s-prolog span.cm-comment{color:#060;font-style:italic;line-height:1em}.cm-s-prolog span.cm-comment_string{color:#060;font-style:italic;line-height:1em}.cm-s-prolog span.cm-var{color:#800}.cm-s-prolog span.cm-var-2{color:#888}.cm-s-prolog span.cm-anon{color:#800}.cm-s-prolog span.cm-singleton{color:#800;font-weight:700}.cm-s-prolog span.cm-identifier{font-weight:700}.cm-s-prolog span.cm-module{color:#549}.cm-s-prolog span.cm-head_exported{color:#00f;font-weight:700}.cm-s-prolog span.cm-head_unreferenced{color:red;font-weight:700}.cm-s-prolog span.cm-head_built_in{background:orange;font-weight:700}.cm-s-prolog span.cm-head_iso{background:orange;font-weight:700}.cm-s-prolog span.cm-head_hook{color:#00f;text-decoration:underline}.cm-s-prolog span.cm-head_extern{color:#00f;font-weight:700}.cm-s-prolog span.cm-head_public{color:#016300;font-weight:700}.cm-s-prolog span.cm-head_constraint{color:#008b8b;font-weight:700}.cm-s-prolog span.cm-head{font-weight:700}.cm-s-prolog span.cm-goal_built_in{color:#00f}.cm-s-prolog span.cm-goal_imported{color:#00f}.cm-s-prolog span.cm-goal_autoload{color:#008}.cm-s-prolog span.cm-goal_undefined{color:red}.cm-s-prolog span.cm-goal_dynamic{color:#f0f}.cm-s-prolog span.cm-goal_thread_local{color:#f0f;text-decoration:underline}.cm-s-prolog span.cm-goal_constraint{color:#008b8b}.cm-s-prolog span.cm-goal_recursion{text-decoration:underline}.cm-s-prolog span.cm-meta{color:#00f}.cm-s-prolog span.cm-op_type{color:#00f}.cm-s-prolog span.cm-file_no_depends{color:#00f;text-decoration:underline;background:#fcd}.cm-s-prolog span.cm-file{color:#00f;text-decoration:underline}.cm-s-prolog span.cm-nofile{color:red}.cm-s-prolog span.cm-option_name{color:#3434ba}.cm-s-prolog span.cm-no_option_name{color:red}.cm-s-prolog span.cm-flag_name{color:#00f}.cm-s-prolog span.cm-no_flag_name{color:red}.cm-s-prolog span.cm-error{border-bottom:1px dashed red}.cm-s-prolog span.cm-link{color:#762}.cm-s-prolog span.cm-expanded{color:#00f;text-decoration:underline}.cm-s-prolog span.cm-xpce_method{font-weight:700}.cm-s-prolog span.cm-xpce_class_built_in{color:#00f}.cm-s-prolog span.cm-xpce_class_lib{color:#00f;font-style:italic}.cm-s-prolog span.cm-xpce_class_user{color:#000;font-style:italic}.cm-s-prolog span.cm-xpce_class_undef{color:#000;font-style:italic}.cm-s-prolog span.cm-outofsync{border:1px dotted red}.cm-s-prolog span.cm-html{color:#909;font-weight:700}.cm-s-prolog span.cm-entity{color:#909}.cm-s-prolog span.cm-html_attribute{color:#909}.cm-s-prolog span.cm-sgml_attr_function{color:#00f}.cm-s-prolog span.cm-http_location_for_id{font-weight:700}.cm-s-prolog span.cm-http_no_location_for_id{color:red;font-weight:700}.cm-jumped{background:#ff0}.CodeMirror-hover-tooltip{background-color:infobackground;border:1px solid #000;border-radius:4px;color:infotext;font-size:10pt;overflow:hidden;padding:2px 5px;position:fixed;z-index:100;max-width:600px;opacity:0;transition:opacity .4s;-moz-transition:opacity .4s;-webkit-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s}.CodeMirror-hover-tooltip .pred-name{color:#00f;font-family:monospace;margin-right:5px}.CodeMirror-hover-tooltip .pred-tag{font-weight:700;margin-right:5px}.CodeMirror-hover-tooltip .pred-summary{font-style:italic}.CodeMirror-templates-variable{outline:solid #4664A5 1px}.CodeMirror-templates-variable-start{}.CodeMirror-templates-variable-end{}.CodeMirror-templates-variable-selected{background-color:#B4D7FF}.CodeMirror-hint-template{background:url(data:image/gif;base64,R0lGODlhEAAQANUAAH5weoJ1g4h8kY+EoZaMsZyTv6CYyGd9qWqArG+Fr3aLs3yRuIKXvYmdwY2hxIaUroiVrIyXqoidwZGlx4+aqJScpfr9//f8//b8//n9/9Xz/+v5/5ifovH7/+n5/+36//D7//T8/+r6/+v6//P8//f9//b9//r+//n+/56inqKlm6iol62rlP7xevzndvjQasiYQP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADEALAAAAAAQABAAAAaEwJhwSCwOYcikEkmEtZ7QKKzpMhgKhIEgAHBNj6+wePwVsjTotJpFXGk88Hh8RVRpJo4GY6FIIDwqRCkaIxuFIoUjIylEHHd5e30IHxxEFRogIB2ZmpoVRBR3EgsJByGnJBREERolFyWwJhgmJRFEEBonFigoFhYZvRBED8TFxsRGyUVBADs=) no-repeat left center;padding-left:18px;margin:3px 0}.CodeMirror-hints-contextInfo{position:absolute;z-index:10;border:double #d4d0c8 3px;max-height:200px;max-width:400px;min-width:400px;overflow:auto;background:#FFFFE1;font-family:Tahoma;font-size:12px;padding:5px}.CodeMirror-hints{overflow-x:visible}.CodeMirror-hint{position:relative;max-width:none;overflow:visible}.CodeMirror-hint-description{display:none}.CodeMirror-hint-description.active{display:block;position:absolute;z-index:20;left:10px;top:0}.prolog-editor,.CodeMirror{height:100%}.CodeMirror pre.CodeMirror-placeholder{color:#999}.CodeMirror .source-msg.error{color:red;border-left:2px solid red}.CodeMirror .source-msg{border-left:2px solid #000;padding:0 5px;background-color:#ddd;cursor:hand;cursor:pointer}.CodeMirror .source-msg>span{color:#888;font-weight:700;border:1px solid #bbb}.CodeMirror .source-msg:hover>span{color:red}.CodeMirror-hover{outline:1px solid grey}.CodeMirror-search-match{background-color:#ff0}.CodeMirror-search-alt-match{background-color:#bee}.CodeMirror .trace.call{background-color:#0f0}.CodeMirror .trace.exit{background-color:#0f0}.CodeMirror .trace.fail{background-color:red}.CodeMirror .trace.redo{background-color:#ff0}.CodeMirror .trace.exception{background-color:#f0f}.Prolog-breakpoints{width:1em}.breakpoint-marker{color:#822;padding-left:4px;font-size:120%;position:relative;top:-.2em}div.edit-modal{position:absolute;left:0;right:0;top:0;bottom:0;z-index:2000}div.edit-modal>div.mask{position:absolute;left:0;right:0;top:0;bottom:0;background:#000;opacity:.2}div.edit-modal .goto-source{position:absolute;padding:.2em .5em 0;border-radius:5px;border:1px solid #000;background:#fff;box-shadow:10px 10px 5px #888;z-index:2001}div.prolog-query{height:100%;padding:5px;background-color:#eee}table.prolog-query{width:100%;height:100%}table.prolog-query .buttons-right{text-align:right}table.prolog-query textarea.query{width:100%;height:100%;box-sizing:border-box}table.prolog-query .prolog-prompt{vertical-align:top;font-weight:700}span.run-chk-table{margin-right:5px;color:#777}span.run-chk-table input{position:relative;top:2px}ul.dropdown-menu.history{max-height:30ex;overflow:auto}div.prolog-runners{width:100%;height:100%;background-image:url(../icons/red_bird_op.svg);background-size:80%;background-repeat:no-repeat;background-position:35% 50%;overflow:auto;padding:0 5px}div.prolog-runner{position:relative;margin:2px 0;border:1px solid #ccc;border-radius:5px}div.prolog-runner.tabled{border:0}div.prolog-runner>a.close{position:absolute;top:-4px;right:-10px;z-index:10}div.prolog-runner:focus{outline:0}div.prolog-runner.iconic>div.runner-results{display:none}div.runner-title{padding:0 5px 2px;border-width:2px;border-radius:5px;box-sizing:border-box}div.prolog-runner:focus div.runner-title{border:2px solid #000}div.runner-results{padding:2px 0;background-color:#fff;border-radius:5px}span.answer-no{float:right;color:#060;font-size:80%;margin-right:2px;font-style:italic}div.answer{padding-left:5px;border-radius:5px}div.answer.even{background-color:#eee}div.answer.odd{background-color:#fff}div.response{font-style:italic;color:#00f;font-size:90%;margin-left:10%;background-color:#eee;border:1px solid #ccc;border-radius:5px;padding:0 5px}span.prolog-true{font-weight:700}span.prolog-false{font-weight:700;color:red}div.cputime{text-align:right}div.cputime span{background-color:#ccc;border-radius:5px;border:1px solid #888;padding:0 5px;font-size:80%;font-style:italic;color:#060}span.runner-state{position:relative;top:2px;width:1.5em;height:1.5em;margin-right:5px;background-size:100%;background-repeat:no-repeat;display:inline-block}div.runners-menu{position:absolute;top:3px;right:5px;z-index:2000}div.runner-title button.dropdown-toggle{background:none repeat scroll 0 0 transparent;border:0 none;cursor:pointer;padding:0}div.runner-title>button{background:none repeat scroll 0 0 transparent;border:0 none;cursor:pointer;padding:3px 0;color:#000;float:right;font-size:21px;font-weight:700;line-height:1;opacity:.2;text-shadow:0 1px 0 #fff;margin-left:5px}div.runner-title>button.rtb-toggleIconic{padding:8px 0}div.runner-title>button:hover{opacity:.8}span.runner-state.idle,span.runner-state.wait-next,span.runner-state.wait-input{background-image:url(../icons/red_bird.svg)}span.runner-state.wait-debug{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wMfEyg27OEfWQAAAYdJREFUWMPtVsFtwzAMJINMwlHyt0foCIW6gUYQMkJGsP8dRauwH9GQacqiDffThoARR6LE4/EoGeBt/93w6AIG4J3N8FcA7AXVm/BBMDdP8JkIsASqHx20BtMD7bKJiBnAfErc5nzld31wDQKuBuEN3mOjHj+j9GZmVuaWv4xNRHwo+7Kgmxk4dCH/WyDuemDI2cMQIGx5ZaOv+Uz9RQNepfdYqPbzB2/9ekGwAaJ7ElpOuiTooFb7zEQw5Gyejs2TcMgZhpxhJjLRYkcjXv8mgJloQS4gpgoMO4RqsMjNEoSYGADg8XquFgqIs1et0Rm4y8BYqK9rJ+8nrm7//VwY4BDT8oh66w7wdINuY1i36FYDQr+2r5gWRoQBLcxaM71vhGbHtACkGCDEtBp7vJ4rbVhlGvc1g5ujOMWARjlMG3NeQI0xQPj4hG9dzgLeKLMkxRLzbmlBJjUQi5FqDmv/lp9O+LY3mWJAzY7F2JG5PXbBWwaZ9/hc+g3f2lCPW36Xg3nbn7EfAs3X9neMq50AAAAASUVORK5CYII=)}span.runner-state.running{background-image:url(../icons/running.gif)}span.runner-state.true,span.runner-state.stopped,span.runner-state.false{background-image:url(../icons/dead.png)}span.runner-state.error,span.runner-state.aborted{background-image:url(../icons/error.png)}div.controller.running>span.running{display:inline}div.controller.running>span.sparklines{display:inline}div.controller.wait-next>span.sparklines{display:inline}div.controller.wait-next>span.wait-next{display:inline}div.controller.wait-input>span.wait-input{display:inline}div.controller>span{display:none}span.wait-input button{float:right;box-sizing:border-box}span.wait-input span{display:block;overflow:hidden}span.wait-input input{width:100%;box-sizing:border-box}pre.prolog-message{white-space:pre-wrap;padding:2px;margin:0}pre.msg-information{color:#060;font-style:italic}pre.msg-informational{color:#060;font-style:italic}pre.msg-warning{color:red}pre.msg-error{color:red;font-weight:700}table.prolog-answers{width:100%}table.prolog-answers td{padding:0 5px;border:1px solid #888;vertical-align:top}table.prolog-answers th{padding:0 5px;border:1px solid #888;text-align:center}table.prolog-answers tr:nth-child(odd){background-color:#eee}table.prolog-answers tr:nth-child(even){background-color:#fff}table.prolog-answers tr.projection{border-bottom:2px solid #333}tr.projection th.pl-pvar{color:#800;font-weight:700}tr.projection th.residuals{color:#888;font-weight:400;font-style:italic}.answer-nth{width:2ex;text-align:right}th.answer-nth{color:#888;font-weight:400;font-style:italic}td.answer-nth{color:#060;font-size:80%;font-style:italic;background-color:#eee;vertical-align:top}div.trace-buttons button>span{display:none}div.trace-buttons button,div.RIP{display:inline-block;width:24px;height:24px;background-size:90%;background-position:50% 50%;background-repeat:no-repeat;margin-left:5px}button.nodebug{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDQAOjeB7qwAABLlJREFUaN7tWltMHGUU/v7ZYSmXBbpbEDXYGi6VCmpo+2BMDETJQpvyYBVvNGmIIabaGH1Aa3wg6UubGH1Qa9Rq2jRdEqlPmBhSG0LUxhZptlDKStGEWIHtUsp1F3b3P8cHdpYBamEH9kLSk5xkM5OZnG/O951z/pMF7lt8TUT6wNFzI+8w0KAAZz56MffYRgTgBZACAEKIE8GenMNNTYLiBUAx8EyK9oOZD6Fk+EzDV5y0kQBABwAcxGvZluG2xm89lg0FgJkhiUHEYJIVSpLvwpHTN20bAoAW/BaLAkkEIoaUvNsvA22Hv7uRndAAmAEKffmcTBUP2ZJCmSBIyTuFX7l06IuBgoQFQETzAcv5LFjTTdiabQYxQtfoUWb5S8NnfaUJCUDjvUYdIkZWugn5DyaDodEJuRRER/2nfU8nYAYYUoYCJYTdkqqiKC9Nn6XNMkDn6473VCYWAMnhL7/U0zeZsGNbGhQFWpbSSHLry0edLyQQhWgZhfSemmxCaX4GVJMGgpOJ+Pv9TVfqE4dCmoj57p5sVvBkYRbMZhNIEiSxSUo+ue/DzncTAkAoqP+lEhHDnCRQtj0TaSkmTTeCiD+xN146lhAUWo2rJoGyYisy0tVw5ljS+8+9d/HzpiZW4ibicOMKBXUvFwIoK7bClmXW95C32sd+O13e1K7GqQ8QpORVZ0IAKCu24QFrSrgAyCDV+UeUH8oPtm+Kj4iX9IGVnBh4qtiKvNy0cBYlUc20iX96pv5XSwwBkI5GkTkzUFpkRf4jGQt0Ii6flr4LO19t3xLTUYIiEPNiEIzHCzajpNCqzU4g4t0+Eegoeqn14RiJmMJUMuoFWzPxxHbb/GguGcy0Q1WTfi55pS0vNp1YsqEM6L1wWyZ2leSED+YMPEaCv4kkHtW4iOeBrNWIF7+DBYuoA1ioImsD4Pr7Drpdo9AwCMClkPJGVAHIJQI2dCQFw3l9FAODE/rLF83JyXudpyrGo5sB3RwkDWyDmIA/em/hn6Ep/XKqTVXFfuepiplI36caLaNS0jL+rubZzm43Rm7p4xQtIjhR191c6zeSTYMijpxCQUm47HRj9I5Pf/lkX3DiTbTUSqM6iomI/QHC5asjmJic01ebj12OqkZArKkSGKDQ4g68ks35JTqvujE149dvZD9wOaqPr8c4bUDEq+8D3tkgunrc8PqC4cchxNt9DvuX63WgMVxGpbw3hWa8AVzp9WBuLhx8gBkHXc12x3qeyAxoYGUKTU374ewbRSCgaVP4WEGt66z9x/U+ExurQlI7kS2/Pz45i2t/3oZcuDnJkDWus3s6orGVMN4H7pKB2+Oz6P9rTB+8h4Wodjn2dEVrL2RQxMv7gGfMi4HBcZBkbbK8SRCV/Q67K5qbOcMa0IvY7ZnB4NBkOHgAN4SQlf2OvYPR3o0appAGZMg9gyH3lD4bThPUqmuOKncsttMGRTwf/L/uGQwvDr4rEKTqvpbnPYiRKWsR8YgueAG0pU4Hnh1o2ROz4A2eiWnRYmthopys6Wrd50WMzdhuNCRiABACjlSL7fXeFmPjcDwo5CPS6rw4cb3o9wNdX+8KIE5mZBo9AsYBhjjnarbH/a8G9y3e9h/uU+EcypgobwAAAABJRU5ErkJggg==)}button.continue{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDDMd/Pc1cgAABW9JREFUaN7tWV1sFFUU/s7sdLZl2+2P2NJfWloDEQIaYhPEhESJBiSBRMODPy+mkYjRBx/EFNE+SFIxGiHhzajAA0GUJ30w+CAqQlECRIEEiKVLW1pK45b+7e7M3M+H6ZRZdpew7SysSU8ymUzunXvvN+ec73z3DjBnczZn/2sTABg/8Fx1QNOLACAWd5viGV6JQTP1WyWv/zwsAj5wAKP7nt8pgnaAIAmAAAlCTd2dZ6ddwdOPIIcJDoM8RbGP2RI4Vtl24sp9BTC2f30EQH2Wi/e0qzv64aTA/rxiIPyddPxs5R7AvnV9BGoAAkbICaqUxSffYcWhrBigrDT9lNuvRyht87ee+SnHIbSuD2ANSBgrXnZA3KPRToDxUdgjEdi3IrCGL0FZca+HFBQ/ebjA2CFbTpu5AKAnhY1SgLLvHb0EIIVl0ArLUFC1HGyKwRw4g3hvF5Q5BpAaRW27YU0u5jd4UTbD9huA5o15wAY480sCBTBqW1G8cguMymW3xyU3DQ4u2c8OaL4DSEpYZftyiRZAUct6FNav9ubOS9crWt7OkQemwogKpO3bFaxfjYKq5dMsJsBHvXta6nzNAS+LJK78CIikoUo67KQVQHQD0Iughaqgh2sgRvFdJyhqWgt7tA/W2ABAhgJQ7wLwzRMS/fLpXgFr753nvVQJ6KUNMGpbEQhVZpzEGunB6N8H3XGi1UUVlX6xkiaCozNbvNNuRrsxfv4QYn1dGZNbD9dBKyp3xynrnxha41sIhUMPtUXHh3aLZQfEI5EEFkyZ5ksIqQlYbhPlAi4h+STAtSA1QiF+7XcIgOCCx9NOVFC6CPbETaeikxsB+FLgdNl82AZwdiYv39i7tIXAXpDPAsTktePQSxugFZalTlRWD/afdDwJLvOPhWZhlW+ev1KpF24geYx0QirW/2daatX0kDdMF+QFAACQLadNEO+5VGlGuwFaqUVOL/TmWHXeAACAqrcudpEcAAiaE1CTI6ke0AJetVuaVwCcjY3qdtlLmaMZGMkrW3wTcz4VFKpRBUeKKzsOMlW3JcmWfAOgRAjl1BNRVnpVm7TPyDMA7uIdnldOyKR44HZRzD8ASdtOldEDt6k0zwB45YiratODdORInnpgKjxsO60H7hSCeZYDBMSN8fQ5kCQEHxSA7q8aC40R+VSgWknKlLaBIh6RaZ630iexR+1e7QwfBW0ocAoPJ6CsnYveN0/lFEAwqr0AUVvvPGoRb5FSzHA4kCTV16ZIdZE6ACtzWolt4V+kSmQ6yUPAgFZYknaLaZTU3mWfQYA4N6Oz0Wytd3fDM7DVtwDL3MUHSxtghBciUDAPEjAyJro1+S+seBSj/X+AKuE5NMOBuJVoW9qBRM4BAEBkV32zptk/UNRiNyyC4QaEKpcBktmx5sQQopFfQDvuLl4B8k7z9vjuGZ9Oz9SufVZXAds8QuEaNxz0ovkoqV4J0VLTK3Yr4nx5Wu7iJyB4tbk9cWRWx+uzsct7WoJGPPqFAK+4PK8ZxQjXtCLgnNgDAMaHL2J86IK3mA1qgo1N7WbXrP8PzL4KQyK75n8IsT9wqVULBFFS/QQCwWKMDZ5DbKTHm7AXAkrb0Lgj1u3LDw6/rLuz/A0RtQekThCiadCNMBITN70a6Lhlxjct7sBNX2R80pORZY1PSMoHuNoZXkfwEKhKUnmeB7VE4rWmDsS87zz12IWs5v3t7KOSMwAA8E9naAXI70HWTQs8cGdze2JHut9SjXXXs5r3am91bgEAQOTjeTW2UocV2UKqbS3bza8zjjOLeZMWsLA6ktVAPdcb/MkhvwD46YH7BSCp2qxq/DWrcU5c8oe9Vi3Mct7LmLM588v+A+5od3b4azuuAAAAAElFTkSuQmCC)}button.skip{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDDc5pJgUpwAABxRJREFUaN7tWWtsHFcV/u7MeNeveG0H2/WTxE4opVQqfamNWsEPVEoiixIwoFaVeKhQgRTSVlSQFLF/SoRQhBASUvkB6kMNWKWKVIkiNUUJCBJC+kpUoVhO7Tp27KS2d73P2dmZ8/FjPbuz3hnHXm9aKvlKI69n7s75zv3O+c65d4HNsTk2x0d6qGq+xNG7GuLpSJeirZU/MX3na/lsYst3X19QCvxQHIj/fs+gptvfUMRegoMg2wCCIEACIEhZ/lv4H1z5nARkgeQClJxW5AnHUSc6f/DG+DVzIPnsnhtAeQrglysArQ88ACk9L5/7bxK/6ni/7c8qetyuiQMcHdHTuewhivMoQKMCkKZDGQ2AKgHxB19wFbYJyWcBOoFzSZmCyHe69v332IYcuDI60txopl8gOVw0oggtsg361h1QkV4ovb4quulYYC4BO/4enKX3kF8YA20ThLiLIxD5ZWe4+afqe6/n1+0AR0dCaTNzjJR7XPCqpRdG3x1QDe01VxDaJqzZMzCnT4JWysvM0a7rxr6qvgZnzQ6QUJnn9vxJKCNunOp9t0PvuPGaSyHtHDLjf4F1+e1iWJF8oTs2/pCKQlb7ru5++NHQ7m+SPOCuvN7zGegdnypQe40vpTSEtl4PgMgvTRbugTclGyPxw6/ET12VAT493Jiqt8cA9oKEatsGY2DXh1KY0mMvw5p7082LtGj5T/btm5kOmm8AQLLe3q+WwbOuHkbvrcuKEUC5lYEkp+Gkr4BWBnRygJ0vSOWy9njVhlBQdWEoownGlh7obUPQ6vyFoHHoC3BSM7CTsyDYpBz9CQD7AhkgoVLPfnESlAGCMHpuhdY+6A9cLOSnz8BZHAfprFXnS1K5rDZKDyHcdxfC3bf42rGXJrF07nn3/fHZxs7O2wJUScs8c+8tLnjoIWitA4XVX3nZWVhjr8BZGNsQeIAQ20R28m8wp/7ha8to6Yde3+a+q7U7M/vZwBAS4H7XiNbcBVDg17Hkp09DsjFvQTsulFeVkvMCNQ9HUuWpZRc/CRiGSCc03ETh1wHeCBLZmVMwWrfBaOqqsBdq24FMZr7gsOBLAI755wDV7UChFVDNHYXVrYj5FOzYhAueUHiw/eFTR6rI0aOMfu7Q5fbZlwgOQ4jc3BvQB++tBBYZAGZOFhZL8dNBL9SoZMjtbZTRBIhTcTmxSU8o8Gj7wyePVKsyKnrcVoIn3XCyYhd8bWp1TaUQFLku0AGQLS44peu+MemYi8X4VcKXNiqVXfvPnwUYIwTMZ0ErWWFTGQ3LiyYg2B3MABguS0if1YCZLD5XdN6pSfWFvOuusJhLlQxougseICPBdcDbEtMBqHzkM19UG8CI1aZ/YMJlXhwTul/ueTrgVQpZqZ8HHdDXAacolbaWz9WIAauAi6DYvuJRLtUBDpRtRsQJ2CJ4db5mm0EW3+uGjh8Ha2OARQZ8Q8hlCKx2G736orjJW2GXHruBDJSqZiADXipVjRwQj11KIANXDSFvyWcAA2uhshoGwOUKxIAcWFMI0ZPtAQyUkryGDhTtSiADLDs0CAohT5OFVRhwWVLI1CoDSjovEtC+exTy6nXAXQ1/OWOVDExEt9WHWp3DEN5BBQVxVU920psDvklcYv7dQ42vFvwQd8uZ0cinDG9L7J9IKLbChKxbg8IR+ysi+D5AQOhtD8qZD0ri0uJ93psTBRyqX/P286TjexXiVapiwFE4B9AqAVkBXgtBC0d87YZa+nwOyEoYqPC2UaHHAn8q3TnrTIH+/dNnpw/37ib4IiitLqBw5OMIt26HXtcApRm+DET67oa9NQbbjCFx6TRAy/v4edliPaKVFQu/nVjF7mv9o+/xmdfoOLcJeN59lxmfQC52AUppq9gVUCwkZ/8DiuXRX7V/6KD10M59yGllxcKvE/X0QRupAwNPXLmgaeYugCfcd5lLE0hc/Bdo53ztmvEJxCZegzjF9isDhZGhg7lf+7YS2blzvnvYsmq9gdH/WGLxUrRnt91kPkdyL0lYmctYuvh3tPTcCc0IF+dmY+NIzL0FT0wvakr2bj9gnyjfD5DWahvwlRv0XF15IK539EQvZfrTiyMkD7s6nzdjiE0dh23GQbGRvPwWEnNvesGPK1G7VoIHAHXltzcfUODPCIauAl5APtP9w/Fve85SG9DQtmZlVcO/K5OAiUPNjyiF35A0CEJpOupCEeQy73vCVf3Tzufuvz6K+Zr9QrOiy1vzSLz8QEfL8JH5ciea7iNkFMQWH6n8o5a3vrU9GvDTDwDtAz03TKYqbm3/SfqvEO1ugBe94En8fPCA9cBq4ItHi9WOe24440zNd+vr8MD37uDB9NmpXzTembedUSjuBPDjHQfzf8CT1/5gfF3H0ImnP/GxWiP4QEMo5RNCHykHHC0l2Byb4/9r/A9GxF3/Bu0ZYwAAAABJRU5ErkJggg==)}button.up{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDDYM6zDhxQAABQZJREFUaN7tWW1oVWUc/z3n3JdtXudUzBfyZcuRaUVSmbVerDQLC0FIkCAR+1YIUhLNivslqm9ClrhR2ZQopPrSlyAQMZGQymXZjERN0d07d9e2u3nOPef5//pwPHdznqsbe+buwD8cuFye8zy/3///+7889wJlZp3Nj6RzTcv7O3c/2ExC3Wi9VW4EFGUrqStJeaVj133vTTgCpI6TAlID0G9lP1q8aYIRCMCTGhSBQJrbd9Y/P5EiUARPaoBiU8uX53bU3hspufEEm/14RcpOXK6xPUm4AAAHCviTIhWkhmUnob18SOQUtL98zhsXLo0Lgb4vVi7VmquE3lMk7yd1DSixwOMS5XlU3bUOfW3fQnwHpIZQDuve5Mra9Bkn3Dc21sDzn69+VqAbfS2PBSBZBHg98KSGshJILdmA7tZPQQpA3aCqej4j8ZJS4JgS6Nz3XHXCkxaBrOUQsCFAKAuIVUApACIABQoDa2KTZ8GqmIZU/QvoafsmIAVuOPtB9T9Az7tjJqHuvasXWoLvKXJn6F0oC/bUOljVc2CnZgGJFJQ1fP/1tO1H/9mDoGiQQtLfWNfo7DVOgC3PTMqL+pmUJaHX7RmLEJ+9FIhXjmJnQdcvTXCyv4eSc6nkaeNltFfUJyF4QCFe+zjitz8E2AlA9CgeYso9G6Hik640OSQVrTeN5kBfy6oHtJaXQ9nE5zXAnjIfoBjZ//L5Q9Bu1+AiesAoAdFqK+mD1LBr5sOeugAIvDVqczqO47+2/YO/2lfX6O4wRiDf/PRMTf/FsFTaMxYFob9evoiGOF3QTi5ITt8BKVBKITl9EVS8CgBQ6DmHXOsegAzegzroeu5mpUBjBHxLngAlTgpU1TSoZHWo1YhxwYd7/iiczK+QQt81/QAU2JUzMH3ZFminC52/7Qa1G75+Mum56xamUTDaBwhpCOu7Pem2krqn5yB/8jv4+YtgRDMDBRQNL38BLPQhd6wZUugNNd8hgjVz08iZ78SU5SEAq3JaSfn0n/5xKPgsoY8R0g3qbopsJkWRGrnje+Dl24s5LEqvrX/HPzV4P3MRoJ4ZRsCKV0Umr+7PopD7OwQvQv3a3LntTWo9iotPv5/aRGqb1HC7ilhFERvrt/tHhu5pMgJTQznAsiMJuJfaBo0TbJn3evuuUuP0EGuse7uwf8zuA0yviJF6MikggioS1Yz83otFzQv9r0rdB64el1XTHdsLH5Y620gEMnW5ZKw/roKZR4EkEAyLV1eqy5eKEdDC1pL1YODDD/967qs35Uo5eCQG9bWP+BDfDdfJgm0dmWj06vCVD630CuufTMO/3rkxowREACWRFYjiIezSgPSH8/xQSyXcNflCxTLXd44uSSN/o3PNEMgArLxyCYGKHh+0N7jOe6W2mrUNfYBzYLhHG40AKIFbo5oYpdikaGi4M11GEY7QjJIQdRE8DQ145nOAOqgLUQCHjgzlSUCC4hdJwDx4gwQyIJMDEYiag8Q8+DGMgERKaCzMIIGB5IzyNMufgB7oAyUkVPYEgkRFySpU1gTCJgWlSuQAyzwCxQ47YSUkxW6b+etr3CwzMk73JjM+qTn8SsNCWRGo3wIX9HcCGA6DApTaYYrAVT/uPnr3iRFl2k9/LFamBDhC2CoyB85nazAe1rD4+IjWHz5RIonPZGePCwGKb0ZCownleEmo7P5mHVUfeLj20IhePnIat+yWTXT7H9J2ChlDGcHsAAAAAElFTkSuQmCC)}button.retry{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDDgagWd5GgAAB1NJREFUaN7tmVtsHGcVx3/nm9n1+hLHzj2NY9eNMWqFBK1DUAJSIhRAQqqoCjU0IkUgQXkBBVUUpebBCBR4qaJGQmpA3ITKLShUsgJ9KWoVKanS0kJL1KYkcZr6Ejtq1vb6speZ7/AwsxfbMxvb2QQq5ZPGs96dnXP+5/zP/5z5Fm6v2+v2el8vuRk3VUUyP+tZaxP1zdFXpOZfL65taZwck97Tc7ccwPhP7+tyHN2tIrtRs0NE1oJZKyICAiJIeAZBSmfDvM+D12lBLqpw3PruH1q+duLiTQGg/Xvcq+vTnxfhO4h8rNKx8mtTfm95ICqv/Qti+lY9cuLNmgEYO3L3Xoz5hYhpj3MMcTCJenBToWNUASGggnpziPWjQHhinMONdfUHpfeYv2IAerQnMZ6b/iHGfBfEBEYM4qZIrO3GWd2B29KB1DUjTnJlteNn0clh/PfOYycvIToP8MBsqnHfht5j08sGoH/CGbvS/WdEHihGTZJNpNp2kty8HXFTtReCuWt4Q2fQqeEKEOZkY6phr/Qeyy8ZgPZjRlu7fisi+4ppTW78MA1dn0Xcupsuk/7Vs/hDL5fqy4g51rD/xBdF0CUBGDly5wFR53CRm/Udu6nv2HNLtd4f/zf+yGuVdPpq0yN//fV1AQwd2dJmbOItRBoFQ3LTvTR23/8/aVje5VNo+lIRxHBT1u2WRwdm3aoa6zuPq2ijKDirNtCw7TOgfuS1tpDFT1/Ay4yg3gxayBFkeYHEAmDATSBOHZJswGncgFnVhiQbYn1xtvRQmL6CFLIgbMmkvAPAoVgArxztSTA7vh8FFWi485OBcbsYQG70VXJDp1E/T1GdYiU2ok948hYiDs6aLhJt2xGTjNB7wV1/D97IPxAFEXlUlR+bOACbZ0d3q2oLKE6qFbd5axD9BUf28knmLv0d62UBBVUUG56D/0HR8Fx+bcvvqaLq47/3Nvm3/wbeXKQt09IOTjK8r22f/c2n74vNgLV8TkRRhWRrV2TkvZkx5oZfQgKmoMpZMfwRq2+okXEDucBBgESApQjCdZoM/jqr5oNGzKdQ9qiAnUtTGDpDYuvOSL9M00bsxGVUwMID8TUg+qGQwrir29EI7ueuvArWoiKIysDGa5selP4XvBXU6KFrP9/5MKrPqCBeehBnwz1IsmmxW03rYeKdMCjmo7EUwtpNRQqYRGOQgQVHPn2hRAGxfH+FzgOw5uunf6/os0Xq+elLkTbFbQwohKJit8UCUHQzalEUcesX8VHzGbQwF/AdTW88cO71G57trR4vBsTPXousA3GcyvpqdqsM9atVQNRijLOoBmx2MgCnoGIv1kLrRf2zVp1AuLKZyLorFz6oUFelD5QuitR+62eDSAiIMlWbduWmwUfVoLYQ3XPUR9UGo7iCG58ADSKhRBawWq8CpOZr0m1NIScqiFjU+pF2A1BaAlE1A6phH4pIJdYvg8RoDefQwC72unZVbXUA4fNtbCrLIG0tB+nQrl2C3aVQKGZ8QINuiwA19L9MXY3NQNGuVquBSpSRNaBeSYWCP7WmkMbWQNlu1QwERRKMLXEZsKiY4NGvhnsyhPyuloFA/eR6GSjKlR85LAWRsFgxNfJ+FiURJlSr1kCgfhb34o8SO6xIn4g0BNO6CXhdGQmNr4Gw2e0aenLzKyBgDKIoRs7kJ5zHOvsvZZebgeCeGmu3UuJdkKcF7g3ac6goKsUGFRbp9SJBM2p7EIOEwx2W7XWrvVPAM8urAIuoCUaUOAphUTWIgFHhX/NpUzGjoySb21D1Fx2mbjWY5Lxri7NTqL15X3hjJTUQPE8QaTc4ys8Trl2V/6bJJF3gyyUdlgTNd+zATbXi1rdGRsIYl9a79uIX5shNDJKbfKdIJ1TMhKh8YeuBodeXWQKQCLMaV8QL+o/5wLfJbevL7wc5UFR0tXkyoy+jNh9y3Y+eDMWQS18gOzFYyoRFz6nvb297bPj5lfaB4r3i7FY+2ZXkY1tf7imEh8I4YP0c6cHnA+ci5nL1cky9e4rs5GAl9V40Jrur/fHxCzfWBwKKRNktjhJFEIsEfPCQu9uqOQ6sCclC86aPUN/aVa4jL8fUyEt4uanSQ7qIHHdnUvvv6B+ZXanrVw/fvdl3/JHFe62xGwWTiwS88wnvRbGyCzgfusvUldfIjP0TtR5edoL05RcoZNMBT4OIPbl15tpDN+I8QC6h+ciNgPiNgnxsCz3Xzzo3Ufcs6MeLGxt1Desp5CdR6yNBBDxVvtV5cPrpeSQY+EbDkr2eS6v0Hiv9sDH6VNcvEfmKhBvIVTKRV+QHVWeAwX5SNpH8FfCl0u5M6WZkBNPbeXDmucrvTA08vK75/t9dXeaz2IpnkaozQGc/2bueyO9T5dCCPvEu1nxiofMAZKZv6Zaju4TYKOT7LhxKnAd+gsp/XMf0tn9vZiT6Gxk61g8v2YH2daP+yTf/j341nDravS4U8WUcK1+m1gCmbzGFag7AN9OW2+v2ev+s/wKIypfbke4fXgAAAABJRU5ErkJggg==)}button.abort{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDTcgwTHWUAAABeFJREFUaN7tWU1sVFUU/s69b+Z1eJ15pbUF6gCagIFEWFgXXRhRSNCVisRuXECFDRsSY4IhcdHERGITQgKJuoBUVyaQKK40xhYlXbCgmyaKEgP0Jy0ghb5pp/P33j0u3kz72s5M3512xEXPcnLn3u875zv3nnMesG7r9nTs8nuQ/4e9qJY/OX0HXgewy+7u/3K14PlsZ2y2pfEIg/9KHO2/VncCTt+BV5nVBYCaobjXdjIX6aMbmVrBO3bsOASdEkRJBvbZ3f3X60agBJ5I7AUAZh6vlUQQPBElSz8DeE2HhAi7MHVp/6EgeAAgoiQEnXLs2HE+2xlbJXgAIGZ1IXVp/6E1JZC6tP+QIu4pgadYC8hqq4lEOfBktYFiLcX9xF5F3BOWBOnKhho3w2jvAEkT7uggPGcMZJih5FQOvLC3w2jvAHs5uBND4Nn70JGT0JFNCbxMJCGsVhjbXoFseSFUJKqBF1YrZCLpO6Zxs5acSNfzMpFctE6l/4E7MQTljKBSYq8EPmhealwrEhRK8xXAhyEBAGHBVyLBrIYFU0/i2MD3KxKY7tv3Jlh8HkxYY2tnRfDVSJCrzjEBkOLDsOAXkRi7Ac5MzZMAqY+bun/7KbjOWI5EbARR80KWSJA0V77OrFYY7R1wAXhTt0GGmUREnhXki4A1wAPwzxTBCoOaJUWeWzGJm45d+5aIPpvn44zBHR0EWAHCqE4ivgXRHQch7a2AmwMVwSs3B2G1hQZfiianHy5Ikri3ccPsN0vXli2izry/6fdswXgAxh6SRoILaai5KZAZB0WtKpe8AmQEsmUnOD0JlXkMVh6kvRXRXW+DGpr8NZpSBHGvbWUuUtfy67niLcSXO2NOOnYcHD75fKkwQACnH8GdGPJ1qun5sOBXfMi0SATAU3FblXV8aTXYdQEf6iXWIUFF0TPrVaW1gg9VC1HXjYxtZS6CuJeZx/3EHvHlEUjsmsALY1XgtcrpspFIbINs74BobJ2XzX/lee1yelkkmOFNj8CdHAKnHz0V8FoEgiSI1TlmngYB7Iz6QIoJGwp81lkMXqlpQJ3TBa9NoERCSGNOSNEkiMBuDpxzIMx4+EPNODjnAJ7/2JEQTUQyowteu6XUqSrDSKgwcRPKGQEBYEZN7alWBGZbGo8IQ5wXREkulgfRHQch4lv0vEaATGyBueMNSGsT2M2DiJIkxflUs3V0zSOwlp4vvXrM/tUbpp9YFYF6gtdpimqWUM2yEYb/0BUfO6ISaFoEPljFCqsN7Oa05ET18nzJqwvF3DPLPK/T2VWKhKiX593RQXhTt6Ee34Y3NggwVwVfaySoXp4PeBEgQCa2w3j25drL6gqRkEunxMkXdx6GoJ7g0CmS7KzxYDUNIEtEDZxLgQtzoAa7elMEgKIWqMGGykwBhTSIKAHCnlyDMfaSee/WlT/AZSXUdQWekOK+KI37mIFcyj9QRkPLhkp3vZCnifhTZoyj2CuHak9l1D8zlypKz587kRD3u67Aq9pSnrl6997pt54fZvBuIrEJyoVKPwRFYhBmorznZx+gMDIINTMBEgaYeZzBnySsuT4z6t7MFYyMTnvqOSMojA6Cs9MAUXGsghP2BwM/ag22APwKgOAVQGYc0d3vgja0AF5+wfNeHvk/f4DnjEEYZqkjOxE/+stXS/Y7AeALAGA3N98nQ0YB5c57nuemkL/1HTg3AzIiYK4+2Kp4C9nd/ddJ8WFmNQwZAbtZ5O8OwHtyZ8HzM5PI//2zHyHDhGIeV6xOlpseJKz01wx1kpnHyTCh0g/9/85MLnj+yR3k7w6A3SwgI1BKDZPiw9Xmoyu+xJWmdCRN7Xq+Wnu6dLhbbRqnXQuVG69DyGVzmzD1fDkSZLUByls0hQsDXqucXpQTHJg+VNB8iP3mc6I0uiNBK2p+1Z+YSiSo+O9awJcjQQRt8Nr9QDCxqyVsWAsmdpiEXZOvlPMTbCU22vHM1VrawGU5MRN7B0I9WTp5rqut5YfudVu3p2j/AkT4owo7DZieAAAAAElFTkSuQmCC)}div.RIP{background-image:url(../icons/rip.png)}span.depth{display:inline-block;font-weight:700;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAUCAYAAABF5ffbAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wQBDjQRuYQ78AAAABJ0RVh0Q29tbWVudABEZXB0aCBtYXNrQcBmawAAABhJREFUGNNjYEAD7Wdr/zMxYAGjggMlCACJuAL3jmFt7AAAAABJRU5ErkJggg==)}span.port{font-weight:700;padding-right:.5ex;margin-right:.5ex;background-color:#ccf;display:inline-block;width:11ex;text-align:right;border-radius:5px}span.port.fail{color:red}span.port.redo{color:#ff0}span.port.exit{color:#0c0}span.port.exception{color:#f0f}div.prolog-exception{color:red;font-size:80%;margin-left:5em}div.controller.running>span.sparklines{margin-left:.5em}.jqstooltip{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}div.render-multi{position:relative;vertical-align:top;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAQAAAA6heU+AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAEMQAABDEAbRyZ/IAAAAHdElNRQfeCg8LIivxaI+JAAABT0lEQVQoz33SsW5SYRgG4AchbSkcYrVpo6bGoXFydvMK3HsJLt6Ct+AFeBVunVx0cjFODvofqyDQFDVttef8cg6IA4SkFXjX70ned/gqk4kV+SUVnGs8rayC54KA/e7DvdpydiZIJXbEJyyFp4IjW27IFG+Xwp9SR266LhM/PT5dAn9IfbGtJROtP2ch/C711bZELmrYOFwIB1JtOxpyfzQl1n4vgANBx65NuaGmlsR69h88EXTcUpcpNLQkknJ3dAUeS327wlr+fpxe57Av6F1iLYmxOLgEe4K+2zZkitm2xFgumsOJrs/67liTGc4qm8YyUbw7gxNdwbE9NZlixhKlXBTl+1NYaU9SPfdU5Ubz0inL5aJya3h2oBa03XdNZqzZaR5uvq5/mFyUcVSUo0JRLerlxQFqwQPVN/FF+T4Jj0YL32ial8/eJfDK6vwDMhCTheu9OHEAAAAASUVORK5CYII=);background-size:15px;background-repeat:no-repeat}#render-select{position:absolute;background-color:#fff;padding:5px 0 5px 20px;border:1px solid #000;border-radius:5px;box-shadow:5px 5px 5px #888;z-index:500;white-space:nowrap}.render-selecting{outline:1px solid #800}.render-multi-active{position:absolute;left:0;top:0;width:20px;height:20px}div.render-item a{float:right;padding:0 10px}div.render-error{display:inline-block}div.render-error span.error{color:red}pre.console{padding:0 9px;border:0;margin:0}span.format{white-space:pre;font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.render-table{border:2px solid #333}.render-table td{padding:0 5px;border:1px solid #888}.render-table th{padding:0 5px;border:1px solid #888;text-align:center}.render-table tr:nth-child(odd){background-color:#eee}.render-table tr:nth-child(even){background-color:#fff}.render-table tr.hrow{border-bottom:2px solid #333}.render-code-list{color:#040;font-style:italic}.render-ellipsis{colour:#00f;padding:0 5px}.render-svg-tree{padding:5px;display:inline-block}.render-svg-tree svg text{padding:.5em .2em}.render-svg-tree svg g.collapsed g text{padding:0 .5ex}.render-svg-tree svg polyline{fill:none}.render-svg-tree g.noleaf text{font-weight:700;fill:#00f}.render-svg-tree g.leaf text{font-weight:400;fill:#000}.render-C3{display:inline-block}.answer svg{vertical-align:top}.render-graphviz{display:inline-block}.fold{display:none}.pl-ellipsis{color:#00f;text-decoration:underline}.pl-functor:hover{color:#00f;text-decoration:underline}.pl-infix:hover{color:#00f;text-decoration:underline}.pl-var{color:#800}.pl-ovar{color:#800;font-weight:700}.pl-anon{color:#800}.pl-avar{color:#888}.pl-var{color:#800}.pl-atom{color:#762}.pl-functor{color:#000;font-style:italic}.pl-comment{color:#060;font-style:italic}span.diff-tags{margin-left:2em}.diff-tag{border:1px solid #ddd;padding:0 4px;margin-left:2px;border-radius:5px;background-color:#e1edff}.diff-tag.added{color:green}.diff-tag.deleted{text-decoration:line-through;color:red}pre.udiff .udiff-del{color:red}pre.udiff .udiff-add{color:green}/*! jQuery UI - v1.12.0 - 2016-07-08 +* http://jqueryui.com +* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup>.ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup>.ui-controlgroup-item:focus,.ui-controlgroup>.ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical>.ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label+.ui-controlgroup-item{border-left:0}.ui-controlgroup-vertical .ui-controlgroup-label+.ui-controlgroup-item{border-top:0}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:0}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:0}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc(100% - 2.4em)}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:0}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:0}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==);height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:700;line-height:1.5;padding:2px .4em;margin:.5em 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:0;background:0;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #d3d3d3}.ui-widget-content{border:1px solid #aaa;background:#fff;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAAAAAAy19n/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0T//xSrMc0AAAAHdElNRQfgBwgUCS/MOMhhAAAATUlEQVQY073OoQ2AQBAF0Z/p4qrZbuiMam414iQUQLKg+Sgc+pInR4yODWmKof1EgQM3XLjwhbvGjTtOnLjzrLhw4vrKwA0typx1++MFHrwm/bbhD4gAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDctMDhUMjA6MDk6NDcrMDI6MDDHOgbTAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA3LTA4VDIwOjA5OjQ3KzAyOjAwtme+bwAAAABJRU5ErkJggg==) 50% 50% repeat-x;color:#222;font-weight:700}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #d3d3d3;background:#e6e6e6 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAAAAAAao4lEAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0T//xSrMc0AAAAHdElNRQfgBwgUCS/MOMhhAAAATElEQVQ4y2N4l8fEwDCKRhF1EcOzZwzPjRie32Fi3MvEeIGJ8SsT4zcmRg4mRk4mxm9MjF+ZGB8zfGRmYljF8EmOiUF4wB08ioYEAgDUMBI63vAgyAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNi0wNy0wOFQyMDowOTo0NyswMjowMMc6BtMAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTYtMDctMDhUMjA6MDk6NDcrMDI6MDC2Z75vAAAAAElFTkSuQmCC) 50% 50% repeat-x;font-weight:400;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #999;background:#dadada url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAAAAAAao4lEAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0T//xSrMc0AAAAHdElNRQfgBwgUCS/MOMhhAAAAS0lEQVQ4y2N4+p+JgWEUjSIqo6+3GW57MTH+YWIUZ2I0Ybj/h4kph+HRByamdoanjxme+zExBjAxmjAx/mZiXMHEIDPwDh5FQwEBABzuEyBfPm9/AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA3LTA4VDIwOjA5OjQ3KzAyOjAwxzoG0wAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wNy0wOFQyMDowOTo0NyswMjowMLZnvm8AAAAASUVORK5CYII=) 50% 50% repeat-x;font-weight:400;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#212121;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px #5e9ed6}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #aaa;background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQAQAAAABHIzd2AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAd2KE6QAAAAHdElNRQfgBwgUCS/MOMhhAAAAEUlEQVQoz2NoYBiFo3AU4oAAlWjIAdM0sWkAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDctMDhUMjA6MDk6NDcrMDI6MDDHOgbTAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA3LTA4VDIwOjA5OjQ3KzAyOjAwtme+bwAAAABJRU5ErkJggg==) 50% 50% repeat-x;font-weight:400;color:#212121}.ui-icon-background,.ui-state-active .ui-icon-background{border:#aaa;background-color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AcIFAkvzDjIYQAAAI1JREFUSMftzyEKAkEUgOF/nmIQbIOIsKMGQRgxewjrVqtZMGnd+3gDwYN4hRV2i+MbweIVRMNLX/jTT77ppjkLABiGYRjfBtWU6prcffbuXvAESmHIjK0wYu52QkHkJBQs3VGYsKIiXzQ08dPIDz20U3FjFux5Rb22SfAEVwoDPGtB6ND/i2nDMIwf8gY8YSRTiOx5LgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNi0wNy0wOFQyMDowOTo0NyswMjowMMc6BtMAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTYtMDctMDhUMjA6MDk6NDcrMDI6MDC2Z75vAAAAAElFTkSuQmCC) 50% 50% repeat-x;color:#363636}.ui-state-checked{border:1px solid #fcefa1;background:#fbf9ee}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AcIFAkvzDjIYQAAAIpJREFUSMftz7ENAWEYh/Hn/xYS51whVhCN1g5KI1jAAJbQ0ItEfRMYgA0uZvg+yR2J7j4FsYFQvNWveKqHtHjM7hMDAMdxHOfb0LZ1HQLJmnGckrJmFyvS8Da6ro0eW52NXKXCh4KjktHXm1ejVDRy7bkYmTY6GV1WOhgd5iwNKBj8xbTjOM4PeQJHLShkmp8JSAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNi0wNy0wOFQyMDowOTo0NyswMjowMMc6BtMAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTYtMDctMDhUMjA6MDk6NDcrMDI6MDC2Z75vAAAAAElFTkSuQmCC) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAQAAABFnnJAAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAIn/tYtYAAAAHdElNRQffChMXNR3//v8QAAAaVElEQVR42u2dbZAlVXnHfw0kFCEsaAggLLsllQgmhsruQKV8SZWURe6Yqk3UcsndsYJEyQ7RCMYyO+Nmhg8MwtyJQV4kNbsFxqJqXrJLlEBVuKMCFsYtEHdXo4SYRGAW4q58iHH9kCKWdD706+nz2t33zr0zff5Tu/fefs45ffo8/z6n+zzPeU5wCR5NximDroDHYOEJ0HB4AohoE9IedCXWEp4AebRZApaaRIFeE2Dw90+bsHLOJWAXOgokJQ/+GnsIkQDmDjBM/0yw3T/6/GF89rY2je3ciRKrXUGk/uWYAqaSN1AfkSdALzrAXTVKSPIm92F51MkLAQHLwDIBgaHkOtc4dAjSeYDkEpP7QIcQpObJIyonqJQ/uct057edO6xZd9eSbde4jpD1AOYO0BWme9A+fERnN6nQXEq9e9M0BOVLrtfPDBmC0jOB5rvIdA9mjVr13rGXYL43zXU394FZybZ+Zl2hPAHMCAfeNG2WKhPMPAQlJQ/+GnuIXhNgvaPN0kZSrx2eAA2HnwlsODwBGg5PgIbDE6Dh8ARoODwBGg5PgIbD+wMU8w66/muMMv4Abh4BNmNM2+gPYD6DXT11/AHs5vCo7huKJOX8AdwsYOYm1Ctol+a7a9k29dtKXyp86kvfMN4Asj9ABP1seJLKZG/Ty225XfwBTLUzn92e34wwLjv53BAQ/QFU30UsO/UC6jT2+9PFH8B0/7nVTU+f0OptUOZM6wJVjEEmg+uw+wOYyGXrf5Ir9+ZgAwbfOHX9AQZd/zWGNwc3HH4iqOHwBGg4PAEaDk+AhsMToOHwBGg4PAEajtMGXYGhQzjAWf76c6Wl639avex9aYRB1iC01qC6KciecwBXLg4BIRht/S7xAcIKkrKoeg5b/SPVB8ZS7OSomtvtClxSlch7ipDAdvmBwwXo8wcODeRyCaHB2ONSv8AgEz/LnSOR2FvAfIVmAoWW3GC7iYX654cA18vXeevYGynoQQcfGi2RtlG0Tg3CNHeglObPrjpLcnvp6xAa5Oays6sz3wb5WgZQ9iEwdLh7bKlc2FntHndTbuBQuklBLuVWbQHTLehStr0NJHmZ18Csi3NJpZaZu0A7g81l2LpYty7adgfZzu7yEFkVdorb5UINyvQAbl1nvafcwLGX6VcdA2MH61Zu4JCmKszDtHkAVOY9TZNocBh0Ddbz+Svk9TOBDYcnQMPhCdBweAI0HJ4ADYcnQMPhCdBwiItDk2Cpg4M9Hng/4dICLhbRavlsa6Ndz1IKGQGShVEu4d6rNUDvUK0sW83dWsAUajazxrVL547slMmf/hralVsgLNQSUC8ONS/hdLFotxXHekcBXVluoSH09XdrAd052oXlte1SubMrsPVA9ZamSwt0xaVhLuHUbUuwdQtE3Txp7DXQlWMP4W6vuVtAerXFQFZtUJDbFpZnylGtTwyFks0GY53BOpDTlCWAewMEJfK61cDchC7nt6/t15/flttGAHsbmBVoJ4CZQBoClHsLyBqgiskiyJWhLj0UPk3nr4Ks3lWfIUxn3xVLkxFcHUHAdP4kp/oZwFZyFrvBtL65WMuS/gCmBhAfYEyXb66c6RJNZeQvze72pVKBnYCmK1guBJBYLl2CG0zqXU63vXGrJWWHADd3qtAaIsI8CtbJ7da86utwG4Pru7SZyqm+qY39GUAJHx8gj7Z1x6QNB0+AhsNPBTccngANhydAw+EJ0HB4AjQcngC9xiDN2RVQ9AewwWSvcrn0dk17d79Rv3aBZbJ7yK5d9gcwwWQxd5klTCx2uxwWmOpRd3GVeXl4YF3+alewLr+p9AEhmwjKV8se7VeebMwvjay2+7frRDOYLHa23IE2Xf6oztppWjwaOkndr3RNoH4G0DkdmO1V2dBQxWkhunPsblP6GAYhrra+oMRR1XlV57evbB5KFPcLyJqw7A7cxSEkKJE3kbotgbYv3q4eQsKkRlsP4V6yKUbAGiPrAfKGwipVs+0kYDe21h0dg1wPou4hxE9Vit7cxaoziL3HkKhfHAKW00qpOvCog4/cvdRYNvoDuFj77eEhzMh8AdQuFeamzwYhfXSRJGVQUppPUdWhpi9QWwNDbQfuYizVPQT2wtjq5rVY9UHT5SESsBB0aJTrAm8OFjE0XfNawc8EimiY+j0BGg9PgIbDE6Dh8ARoODwBGo7hI0BruKxlGx1FArjZsk0mm9BJqkvRorsmr2KDjoMwNCgXLt4lnHTAaI36dElI0jKmqxqyPsMG2gG8DkQCmGepzbPdyV3doqukQJhOlKrX7kVd/2iaoqvJn3yrFlQ93/u4bTW/wZERQAz3LiOzh+tCpgcEsfpXlOcyd+1R17/CqGHtbHJ29flFj4JiKW7hIxqHxBbgtrrdhMTXRqf+oi9OsRex/TYdlSXFdMXwEaZdzhuFvEtYgKymIvSuDG4OEXqnsiKBdC4Z6hrawieIBN9gW8DXQRYtPN9k+gAj9l0vXLeV0MkjCoTSc0RiCFZH5Rfr06uw8g1AmbeArIl1Pnm2LZlM8tFU2gUCaSAJcmdXPQOY/YnE8BEeKcT9Amyeaia3y7o7WaykZbu8RgaOxxIs45/6lRg2hxD9Q6RHXzBsO4f67nmNMXy2AI81hSdAw+EJ0HB4AjQcG4kAU+lMw1Rfyr+E7fHfkL061UFEgPm44VaZr1zSYxZLvw0hzwjeAmWVOMVM+n1GmXuqFj0u4Xmu5jCHuZrnlRSYstZ+dyzdrTmHXm7LCfcV/sxnSLUUzQOEPMJzwNmM5xJnr2Tz6fF93KApOpskOshOw8oiufQICzyXUyEs8gGhcWcK6ae5tYRcrKGqdrvZJ/weZ7/weztXM8sIcJhJvsIRbQuoz+FibtPv/GnbFDtKkbW87RrTKb+EAHMAPC4kX8kVLhPkGFs1zXsQlBQIGUm/H1Zc4re4IvdbJEBkCRhLZcUlYiHTAgWmmdGu39UZs0aE38UabucwI2wG3sKnGdEQ4DgAb6i4wigkmdIOnCX5FGYCFCkeQDYRlKi+W0wQ4zngKD/mS4bqb48/d2pTbDLkXuQ5gQBF7BNMyfuEvgrgVkgpMM2thR4ha0B9Q27iifT7Vco6bOZ8As401PLPDTJzD5jI1RtQB4pSylEsUf9n+GT+cDYT2LUUcJQfS2nEKpwb2/JChT9PhF8xlD/Gt4znf5LMZLyPJyUCZBSQO/8IrcKnXLv3G2s6yT9yN3Ajk8r8J4AXct9lTDOT/ltbJOq/nzNECrhOBavUX8TrATiF17QpzgHQPKDYeoCEArCPJ7VpAtA+5F1Z+CxiE5+Pv31IIb2IDjALTNJhhzQEFC2pVZeZ2qMk2FJ8geukY5H6D3IG8FGAeNAvYQuQ1V+8wHOsZfxS+m1Ektl6ALgkVvyTXMLzCvkUzzMPPMmUpg8w45e5Mf1WRJutPMxuJoFTCZnkTINDyTS3KpW0NfdPh+3YYEvxQQUBxtkH7ORg/Bw1x0QkqG4Mkvl9pjXP3fHniEJm6wEipUcUUL2GTQlyVS+wufCpaiKYJLrPxSFmK7OQey+Y1QwDEWZqdPGHa6ZQ+3Tsh5gCkFO/iQDTue9ypyOr/3E+I/ySYe4SzT3AtOI1r4wckiEq+yw20X4g5BeYkV4BI0oUj3QKV2d7yIPrc/9kLKZvObBYMYUeCQUE9Q+TP8AU8Obc7+cqdeN1EYJC/b0sPcJgzN672Seqf5gI4DEQbCRbgEcFeAI0HJ4ADYcnQMPhCbCx8ETOnuEEkQAth4XZerjsvOmGKaVFfTpny5bf8ucJhb+iZ8OBgvyA4rx5a/nuPsgBvmZpn05hfqEM3hn/mbHAAgvJj/xrYIsu08CMwjd/lffGM1CP8RXeyLjSnPsCO4GDvJErCsZacH/3TWz7YvppbomPRqXdrLD3HUx/7ZTyu9rjoxm+2b7IkzQBsCCYuwE67GGULjBKt/i+TosucJBrOMBOUK6feInNwMtcbGjdhXgyaZHHuT9PgEj9kTVNpkDILks0cNtcYbSe8Iu8jy/yPh5hh6aBpriVecYlm1625ap681WX7dv/i4v4EefzMps1i08n6RASMMGsVg4Y5E9zkk38jlKeNP8iMFayBRPpwdTcnpcfkIzwB7lGcf55xlnkAbqJv0XeHJxMp84wXSlQS35Jl9pyeAsvsspRjnOYHypTTDHDZm7g5T7MA77AhfyA8/gBF/GiNlU0lz5plCPa1AWc5IjWXJPcfWNK6ajQaroFcmpvi191OALwbuAsrgWgxUpGgGeE2fQZpnlGazbVYQVbMOebeYQdfJnf42u8U+FcNsUM+xjvi/rhjfwrv8F/8Ov8C9cpTCofAxJnqQlF/kQOGOSb2K5xfFkQFF+cy++wJy0/WiI7pzyLGlfxz7w99/sbCpeWDwNbgB3k/K0SAlxJ4kwRfd7aFxXcwov8N09xnKdYlaSJ+qeN5w4N9vDRNDyNqgd6ljfzPX6N7/Gb2UNQijZ3k9j7JxTGn0x+Kj83yLNnABHZ2Bvh6yXbbrRwTcUe4h1Cq7xDe/7CDZp/CEzuXrVP2gi7uYEPx+4cMjtDIa88wspum4EkN6m/GAJCNUYmBFhRyj/Mp5jkDj7B7fwtnxXkYxIlRJNQXXmm/uKjX4ZWYQhYMch10peJzN1F+QJj8dhf8OV0J4BblP4WyVBQPsQMYLj7k7eABKq3gNE0QpGaICLk95RP8jfG2tWRB4RG9dsfozMKqN4A7uDjPMg1wAHez518QpAuMMYj/JSxYt5ikKjsXb4sDhIS0qVLGHsG6y9RV7qp85/h5tyvm6X+ZJyo4+/G1zCukJt+wy6t+urLF63qj5y0oo59lNRlS8AKo6BZQP8zPh8/91/D5/mZIsUOxlgs5nU1B0/UmJ7wKIMOlHj4c0c0REkU9P4ADYe3BTQcngANhydAw+EJ0HA0jwCR2Vj1TtNJTbkfcyjnLOXRodse3oY8ASbSBqj+GlI9PkBdtAjT5VpHtF4NX43f//dIFPhr9rCf/XyEj3A3H5dyRq3zcPzrLOCs+C/CXj5HyC3cQsjn2CvlN4evKHozFP0ZZLkthRzpQZTHyF4DJ5jlGI8C13F6avaUC7Htsg398npfYIxJOkwwq5hUic58lO0cYZumFsmE7PXchzxT+Nb0+0meVcyFHuWbjDNJJy5HnA63m8OT2fuu0pBsnntVhc/sFlIEqaPMjCLkZ8hoLkdqzs7MwbPxLPERTudVad3LMGAMmOVyxoAxiQBH2QZsS9V/VFHC+fGnennq8/wiPwHO5v+U8m9yA+O8PrXpl+8nr4znL0NUs55TzKSrClW30AoP57wo5B4uouDlue8y/pifA/BSciA/BDwKHGEbR/lC6Utz31LGlFvZSaWI7Gxjue95bI9Vnqhftsm3eJexDv/LTwD4Ce9RSA8xTgi0Y/XL07ojuT81ZjTfo/rPADNsZ4QRpUdBix3APJFhV4Y53HdAl0k2s5WLuTjzGRLXBkbq366MFBQWvlUz9piqaEMnvvthUdk/bc/d/Sr1dwWfh+Jc+7OczAXCOSTlfzsdYA9b0Nn0NnGy9DVluCj9fBj4A0WKvwQiG8Y4kd1PREhGK/n2mQJ+CPycU9nMbTwWHc7vF/Aqp8dNt8qWCi5fGFO4OTyZzpC30queUb4Td38g+8WJ6lcpcII/yv26l/sNZ1cRLAqNEQ0eJ5UhcEaFUbs4xl8vHA+5X3oGyBuLj/Kp0s8AeyH2wljIWjcbAiY5nVf5JvOsskXRxWaB1tUh1/NHVSmCwp9ZqjrDbKy87HseifqjgWBzNsoBmcPbHKMEyvu3w4Nsi/9k9cMsR3kEeIzoSUPGCl/ma5zF6Up3rGlLgI1zOIf7OIfXxf+bsU1xLHkGuBz1DbWVU9nKVrYCe5MUeWNQxvFJ7SPgsL8FvMzFsW+syt5vc7I6wn8CFyr8aaJAWhOEzPE4XeRewLxljXh0N/sLKeYl87QYjy1ULCm/T9kDXE4UokvuAbIQUePs5bZ8lDB3DJIAZrToph3/S2wuWM3Vz93q2qvrHz1fvMofshI7Zmzip4W8y/w7z7GsbaWQIF0vsE+KQvb7zMQuedP8U6GPmVf4L4gUKaaQA/op4xd4c3AeO/gr4NM8opQucBb3xrRqcYi3SRTLQ0WAvFucnY5rAk+AhqN5tgAPAZ4ADYcnQMNRJMC8Nl74PXw7naT9NvcMuuIevYH4EPhvXAp8n8ukdF+S5scf4r2DrrxHfeR7gLu4FIBLuauQ6p5U/dkM3XuUvcBxwjhitgr/E/cgdkvj8Nkio2tL/o7XL244kCdACxhlFNnU+DZlXtXRC+J/apwdf+6x1KqjcNiAhbjxF7T5bCls8pDjqbuGrOI3aL6va2RDwF3cSLY07G5uEhpGk1s6Yp8JbMVbw+qRrJMVJ24XhCiZqtl8W4oFxriLB7iWmzQluAV0t13hukJGgGj8HyVaYCU+B4gXbmqGA+zUhCaIEKn/mCJccidWt1r9duVEKRZ5gGsZQ62+u2JXrzu5SVvCibQHawQBkiGgE4//3dhmdWnFUfgFspj5KnSBVxTxc5JOX6d+VzzACg8YpOJnBhcXlingBCc4AX3almoASHqAvBlENom49wA2RGt4i4sbM7Xr1T/4HuB47unmxEZ5Coh6gOxub+UeALOjTyvzqo52LM/4gWJjeJiI/XNMd/+i5rt4dIxuGoVHlt/EnWznTm4yxNq+wEmiT7XOkGwapZHGn3fwFwrpZwtr0LOS9D2D3pxs7/ztQRZsKWzykBPcG1vpjmvu8ao7gQwpIgIcVzI6380t0S5Il9mlyNNhj3H8NvkT2PIOBzYkAVwwy++mb/6H+Lpxx4yNjMYSwGNDwlsDGw5PgIbDE6Dh8ARoODwBGg5PgCI6RptAx2oxWGfIEyBk1WIC6t2WEIPCMzxjlHeMvgodqyfDuoPYA2xhj5UEamTkaWlL6LAaWxo6rEoUEul3QCE/IJSkoqB+aXmS7wquMFyfu/pdvJrWBYqxgiMcY1k5JauPJhwK+UKKc/pR4wVAhzZbonMbSjjATkke+Rno8otXoN+tQycVg1HbpRtkRlBNAFDvOGEjACTOHqJRKPu1GisPSwk6Aujzi2X0QsV6aahYfLlOoX4IPMacwatHj2PMpeqfyzVQwFx8dCtzHHMoQQdb/rXBhlB9BJkAkQrK2+SSfC1WmZP23JggYI5VWkxoleh25onKJDDFHoikc8a8eWloSLuuIA4BurE/S6HfUWD4Ye7kI2TPKuWl6xL5GEH2CwucUw4jXGo9gclp3Sxdl/Dm4IbDzwQ2HJ4ADYcnQMPhCdBweAI0HEUCmNbeemxAZARo8RAA5/EhTaz9yM72VY3UY10iIUCLbhp+9FK6SiVPMsch3kXXYaK4aJA9UIgEfmCN5R4aJBNBR9jGU7yVkK9yNaEyHHKEFvvZYggmG0EOVFr8LQZK7LfcQ4OIAC26vML5wFc4wgQ/4jzFGt4QOMq93M8qWzQbmEbpVJFqR+Jw6ps4ySYpnnbIVTzBVbmA62r5E2ksfpV8hMPxPxTxuj0UiGwBVwLfBeBqAL7Lu7hSUvAklzPGfcBuunxUSwA1LgMuBOACTlGsRYyCy1zAKcBrireTC+N/lwGvKcq/AHhTLH+Tf7txRbEHiKDuAZKUx9jKEbZpwyGrewBxffFnpS68v3IPDZJngFW2pIumFxhTBnGJjMDzjHM9VzJeigAH2Cn8Lvob9VvuoUFCgGivgFf4Lr/Feah3DMi8AeaAPcp9rsKN5TC18ZHfNu5P4jhB3+fvNorPq4cN3h+g4fBPyw2HJ0DD4QnQcHgCNBwZAWz7AdSVz/KNVP4Nxb5//Zb3+/oGLa+I5C3Ath9AXbktzFy/5f2+vkHLK+PU1wHcw7WS5DLO5dH4e135HfypJH8LZ6eTzf2W9/v6Bi2vgWgIyCL/55dNvU3xLY+ifDndWnZZmz8w5LeVXyyhH/lt12+rvzn/CWFhmi6/SZ6vhfqqS6IYKlYdDNoWSjZb/bsE7EK9Orhu+S757eWrwmG75g9QLzALS/wOc6XI8oMA7NS2X3L0U9xGT1Zo5Qkg77UbKH/p5Mm4m43H6gbWNZC9/EBZmqsC7OWbCVC/fYL0eDV5suNvpP6eEOC0+kXk8Fru//IIrT2CGfnl6FVKyK98rJI/dMhrM5M9aJDt5XZuJ1N/T9DrIWAB+ADVh4D6Xby+fnIJ1bpwU/luPYith9Kdfy+3C+rvQQ8QPQTa9gNwky8BY4zF3/Ly/E7YoeLokZzUJscoRykX6x9KR58WJDZ51fZJri+sLL9NUL/6rCUREeCQUIEEhxTf8ijK22kDtrX5Q0N+W/nFEvqR33b9tvqb8heDV5WVA0Lnr77qkojmAVa4jLcUJMu5nX3qyh/lt6XNKB/ig2sm7/f1DVpeAxEB4B84g1O4OD56iEX+TEhXV/73nMvpqSvod3gwp561kPf7+gYtrwzvENJweGtgw+EJ0HB4AjQcngANhydAw+EJ0HDkjUHum6cPp9yjAkRr4Ej67bAydV25x9BBHgLqqe6wtYR6d25QuwQPAUUC2BR4mMNGeRKeQQebAnWxvBOEFW39HhoUCTACRgWOMGKURxE69AgxO0yYNnwBu0OFR0nIQ8BIhVLE3OYS6t2/NgJ5lIR+y5jhe8r3bwF9QJn9AoZd7lEBfiKo4fAEaDg8ARoOT4CGwxOg4fAEaDjWLwHafkKoFxAJUH+eLWSKkKm+17vNkhAAwqMiRALsiv8NGra7O1L/8qCruREgEmCJZF3fIGG7u736ewjXHiCkLf0rh1D6UyNSr56Gifr9M0BPIHoELbHMkvLeCoDlwr9ymHZKlah/l1G+7J8BegWRAKYeYFeqmuRfORLMSEfkeP7tXPmq0kX1+0GgBxDXBtYP9B4yzYxyswb5zaCYJq9+VR28+vsA1x6gPuz7d5RTf1uTzqMUhuktIGA5/idDpX7/DNADiENAm2XaQ9m5hnGnX/z0qAkfH6DhWL+2AI+e4P8BepjE/N9O74IAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTUtMTAtMTlUMjM6NTM6MjkrMDI6MDC1OmPTAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTE5VDIzOjUzOjI5KzAyOjAwxGfbbwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=)}.ui-widget-header .ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAQAAABFnnJAAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAIn/tYtYAAAAHdElNRQffChMXNR3//v8QAAAaVElEQVR42u2dbZAlVXnHfw0kFCEsaAggLLsllQgmhsruQKV8SZWURe6Yqk3UcsndsYJEyQ7RCMYyO+Nmhg8MwtyJQV4kNbsFxqJqXrJLlEBVuKMCFsYtEHdXo4SYRGAW4q58iHH9kCKWdD706+nz2t33zr0zff5Tu/fefs45ffo8/z6n+zzPeU5wCR5NximDroDHYOEJ0HB4AohoE9IedCXWEp4AebRZApaaRIFeE2Dw90+bsHLOJWAXOgokJQ/+GnsIkQDmDjBM/0yw3T/6/GF89rY2je3ciRKrXUGk/uWYAqaSN1AfkSdALzrAXTVKSPIm92F51MkLAQHLwDIBgaHkOtc4dAjSeYDkEpP7QIcQpObJIyonqJQ/uct057edO6xZd9eSbde4jpD1AOYO0BWme9A+fERnN6nQXEq9e9M0BOVLrtfPDBmC0jOB5rvIdA9mjVr13rGXYL43zXU394FZybZ+Zl2hPAHMCAfeNG2WKhPMPAQlJQ/+GnuIXhNgvaPN0kZSrx2eAA2HnwlsODwBGg5PgIbDE6Dh8ARoODwBGg5PgIbD+wMU8w66/muMMv4Abh4BNmNM2+gPYD6DXT11/AHs5vCo7huKJOX8AdwsYOYm1Ctol+a7a9k29dtKXyp86kvfMN4Asj9ABP1seJLKZG/Ty225XfwBTLUzn92e34wwLjv53BAQ/QFU30UsO/UC6jT2+9PFH8B0/7nVTU+f0OptUOZM6wJVjEEmg+uw+wOYyGXrf5Ir9+ZgAwbfOHX9AQZd/zWGNwc3HH4iqOHwBGg4PAEaDk+AhsMToOHwBGg4PAEajtMGXYGhQzjAWf76c6Wl639avex9aYRB1iC01qC6KciecwBXLg4BIRht/S7xAcIKkrKoeg5b/SPVB8ZS7OSomtvtClxSlch7ipDAdvmBwwXo8wcODeRyCaHB2ONSv8AgEz/LnSOR2FvAfIVmAoWW3GC7iYX654cA18vXeevYGynoQQcfGi2RtlG0Tg3CNHeglObPrjpLcnvp6xAa5Oays6sz3wb5WgZQ9iEwdLh7bKlc2FntHndTbuBQuklBLuVWbQHTLehStr0NJHmZ18Csi3NJpZaZu0A7g81l2LpYty7adgfZzu7yEFkVdorb5UINyvQAbl1nvafcwLGX6VcdA2MH61Zu4JCmKszDtHkAVOY9TZNocBh0Ddbz+Svk9TOBDYcnQMPhCdBweAI0HJ4ADYcnQMPhCdBwiItDk2Cpg4M9Hng/4dICLhbRavlsa6Ndz1IKGQGShVEu4d6rNUDvUK0sW83dWsAUajazxrVL547slMmf/hralVsgLNQSUC8ONS/hdLFotxXHekcBXVluoSH09XdrAd052oXlte1SubMrsPVA9ZamSwt0xaVhLuHUbUuwdQtE3Txp7DXQlWMP4W6vuVtAerXFQFZtUJDbFpZnylGtTwyFks0GY53BOpDTlCWAewMEJfK61cDchC7nt6/t15/flttGAHsbmBVoJ4CZQBoClHsLyBqgiskiyJWhLj0UPk3nr4Ks3lWfIUxn3xVLkxFcHUHAdP4kp/oZwFZyFrvBtL65WMuS/gCmBhAfYEyXb66c6RJNZeQvze72pVKBnYCmK1guBJBYLl2CG0zqXU63vXGrJWWHADd3qtAaIsI8CtbJ7da86utwG4Pru7SZyqm+qY39GUAJHx8gj7Z1x6QNB0+AhsNPBTccngANhydAw+EJ0HB4AjQcngC9xiDN2RVQ9AewwWSvcrn0dk17d79Rv3aBZbJ7yK5d9gcwwWQxd5klTCx2uxwWmOpRd3GVeXl4YF3+alewLr+p9AEhmwjKV8se7VeebMwvjay2+7frRDOYLHa23IE2Xf6oztppWjwaOkndr3RNoH4G0DkdmO1V2dBQxWkhunPsblP6GAYhrra+oMRR1XlV57evbB5KFPcLyJqw7A7cxSEkKJE3kbotgbYv3q4eQsKkRlsP4V6yKUbAGiPrAfKGwipVs+0kYDe21h0dg1wPou4hxE9Vit7cxaoziL3HkKhfHAKW00qpOvCog4/cvdRYNvoDuFj77eEhzMh8AdQuFeamzwYhfXSRJGVQUppPUdWhpi9QWwNDbQfuYizVPQT2wtjq5rVY9UHT5SESsBB0aJTrAm8OFjE0XfNawc8EimiY+j0BGg9PgIbDE6Dh8ARoODwBGo7hI0BruKxlGx1FArjZsk0mm9BJqkvRorsmr2KDjoMwNCgXLt4lnHTAaI36dElI0jKmqxqyPsMG2gG8DkQCmGepzbPdyV3doqukQJhOlKrX7kVd/2iaoqvJn3yrFlQ93/u4bTW/wZERQAz3LiOzh+tCpgcEsfpXlOcyd+1R17/CqGHtbHJ29flFj4JiKW7hIxqHxBbgtrrdhMTXRqf+oi9OsRex/TYdlSXFdMXwEaZdzhuFvEtYgKymIvSuDG4OEXqnsiKBdC4Z6hrawieIBN9gW8DXQRYtPN9k+gAj9l0vXLeV0MkjCoTSc0RiCFZH5Rfr06uw8g1AmbeArIl1Pnm2LZlM8tFU2gUCaSAJcmdXPQOY/YnE8BEeKcT9Amyeaia3y7o7WaykZbu8RgaOxxIs45/6lRg2hxD9Q6RHXzBsO4f67nmNMXy2AI81hSdAw+EJ0HB4AjQcG4kAU+lMw1Rfyr+E7fHfkL061UFEgPm44VaZr1zSYxZLvw0hzwjeAmWVOMVM+n1GmXuqFj0u4Xmu5jCHuZrnlRSYstZ+dyzdrTmHXm7LCfcV/sxnSLUUzQOEPMJzwNmM5xJnr2Tz6fF93KApOpskOshOw8oiufQICzyXUyEs8gGhcWcK6ae5tYRcrKGqdrvZJ/weZ7/weztXM8sIcJhJvsIRbQuoz+FibtPv/GnbFDtKkbW87RrTKb+EAHMAPC4kX8kVLhPkGFs1zXsQlBQIGUm/H1Zc4re4IvdbJEBkCRhLZcUlYiHTAgWmmdGu39UZs0aE38UabucwI2wG3sKnGdEQ4DgAb6i4wigkmdIOnCX5FGYCFCkeQDYRlKi+W0wQ4zngKD/mS4bqb48/d2pTbDLkXuQ5gQBF7BNMyfuEvgrgVkgpMM2thR4ha0B9Q27iifT7Vco6bOZ8As401PLPDTJzD5jI1RtQB4pSylEsUf9n+GT+cDYT2LUUcJQfS2nEKpwb2/JChT9PhF8xlD/Gt4znf5LMZLyPJyUCZBSQO/8IrcKnXLv3G2s6yT9yN3Ajk8r8J4AXct9lTDOT/ltbJOq/nzNECrhOBavUX8TrATiF17QpzgHQPKDYeoCEArCPJ7VpAtA+5F1Z+CxiE5+Pv31IIb2IDjALTNJhhzQEFC2pVZeZ2qMk2FJ8geukY5H6D3IG8FGAeNAvYQuQ1V+8wHOsZfxS+m1Ektl6ALgkVvyTXMLzCvkUzzMPPMmUpg8w45e5Mf1WRJutPMxuJoFTCZnkTINDyTS3KpW0NfdPh+3YYEvxQQUBxtkH7ORg/Bw1x0QkqG4Mkvl9pjXP3fHniEJm6wEipUcUUL2GTQlyVS+wufCpaiKYJLrPxSFmK7OQey+Y1QwDEWZqdPGHa6ZQ+3Tsh5gCkFO/iQDTue9ypyOr/3E+I/ySYe4SzT3AtOI1r4wckiEq+yw20X4g5BeYkV4BI0oUj3QKV2d7yIPrc/9kLKZvObBYMYUeCQUE9Q+TP8AU8Obc7+cqdeN1EYJC/b0sPcJgzN672Seqf5gI4DEQbCRbgEcFeAI0HJ4ADYcnQMPhCbCx8ETOnuEEkQAth4XZerjsvOmGKaVFfTpny5bf8ucJhb+iZ8OBgvyA4rx5a/nuPsgBvmZpn05hfqEM3hn/mbHAAgvJj/xrYIsu08CMwjd/lffGM1CP8RXeyLjSnPsCO4GDvJErCsZacH/3TWz7YvppbomPRqXdrLD3HUx/7ZTyu9rjoxm+2b7IkzQBsCCYuwE67GGULjBKt/i+TosucJBrOMBOUK6feInNwMtcbGjdhXgyaZHHuT9PgEj9kTVNpkDILks0cNtcYbSe8Iu8jy/yPh5hh6aBpriVecYlm1625ap681WX7dv/i4v4EefzMps1i08n6RASMMGsVg4Y5E9zkk38jlKeNP8iMFayBRPpwdTcnpcfkIzwB7lGcf55xlnkAbqJv0XeHJxMp84wXSlQS35Jl9pyeAsvsspRjnOYHypTTDHDZm7g5T7MA77AhfyA8/gBF/GiNlU0lz5plCPa1AWc5IjWXJPcfWNK6ajQaroFcmpvi191OALwbuAsrgWgxUpGgGeE2fQZpnlGazbVYQVbMOebeYQdfJnf42u8U+FcNsUM+xjvi/rhjfwrv8F/8Ov8C9cpTCofAxJnqQlF/kQOGOSb2K5xfFkQFF+cy++wJy0/WiI7pzyLGlfxz7w99/sbCpeWDwNbgB3k/K0SAlxJ4kwRfd7aFxXcwov8N09xnKdYlaSJ+qeN5w4N9vDRNDyNqgd6ljfzPX6N7/Gb2UNQijZ3k9j7JxTGn0x+Kj83yLNnABHZ2Bvh6yXbbrRwTcUe4h1Cq7xDe/7CDZp/CEzuXrVP2gi7uYEPx+4cMjtDIa88wspum4EkN6m/GAJCNUYmBFhRyj/Mp5jkDj7B7fwtnxXkYxIlRJNQXXmm/uKjX4ZWYQhYMch10peJzN1F+QJj8dhf8OV0J4BblP4WyVBQPsQMYLj7k7eABKq3gNE0QpGaICLk95RP8jfG2tWRB4RG9dsfozMKqN4A7uDjPMg1wAHez518QpAuMMYj/JSxYt5ikKjsXb4sDhIS0qVLGHsG6y9RV7qp85/h5tyvm6X+ZJyo4+/G1zCukJt+wy6t+urLF63qj5y0oo59lNRlS8AKo6BZQP8zPh8/91/D5/mZIsUOxlgs5nU1B0/UmJ7wKIMOlHj4c0c0REkU9P4ADYe3BTQcngANhydAw+EJ0HA0jwCR2Vj1TtNJTbkfcyjnLOXRodse3oY8ASbSBqj+GlI9PkBdtAjT5VpHtF4NX43f//dIFPhr9rCf/XyEj3A3H5dyRq3zcPzrLOCs+C/CXj5HyC3cQsjn2CvlN4evKHozFP0ZZLkthRzpQZTHyF4DJ5jlGI8C13F6avaUC7Htsg398npfYIxJOkwwq5hUic58lO0cYZumFsmE7PXchzxT+Nb0+0meVcyFHuWbjDNJJy5HnA63m8OT2fuu0pBsnntVhc/sFlIEqaPMjCLkZ8hoLkdqzs7MwbPxLPERTudVad3LMGAMmOVyxoAxiQBH2QZsS9V/VFHC+fGnennq8/wiPwHO5v+U8m9yA+O8PrXpl+8nr4znL0NUs55TzKSrClW30AoP57wo5B4uouDlue8y/pifA/BSciA/BDwKHGEbR/lC6Utz31LGlFvZSaWI7Gxjue95bI9Vnqhftsm3eJexDv/LTwD4Ce9RSA8xTgi0Y/XL07ojuT81ZjTfo/rPADNsZ4QRpUdBix3APJFhV4Y53HdAl0k2s5WLuTjzGRLXBkbq366MFBQWvlUz9piqaEMnvvthUdk/bc/d/Sr1dwWfh+Jc+7OczAXCOSTlfzsdYA9b0Nn0NnGy9DVluCj9fBj4A0WKvwQiG8Y4kd1PREhGK/n2mQJ+CPycU9nMbTwWHc7vF/Aqp8dNt8qWCi5fGFO4OTyZzpC30queUb4Td38g+8WJ6lcpcII/yv26l/sNZ1cRLAqNEQ0eJ5UhcEaFUbs4xl8vHA+5X3oGyBuLj/Kp0s8AeyH2wljIWjcbAiY5nVf5JvOsskXRxWaB1tUh1/NHVSmCwp9ZqjrDbKy87HseifqjgWBzNsoBmcPbHKMEyvu3w4Nsi/9k9cMsR3kEeIzoSUPGCl/ma5zF6Up3rGlLgI1zOIf7OIfXxf+bsU1xLHkGuBz1DbWVU9nKVrYCe5MUeWNQxvFJ7SPgsL8FvMzFsW+syt5vc7I6wn8CFyr8aaJAWhOEzPE4XeRewLxljXh0N/sLKeYl87QYjy1ULCm/T9kDXE4UokvuAbIQUePs5bZ8lDB3DJIAZrToph3/S2wuWM3Vz93q2qvrHz1fvMofshI7Zmzip4W8y/w7z7GsbaWQIF0vsE+KQvb7zMQuedP8U6GPmVf4L4gUKaaQA/op4xd4c3AeO/gr4NM8opQucBb3xrRqcYi3SRTLQ0WAvFucnY5rAk+AhqN5tgAPAZ4ADYcnQMNRJMC8Nl74PXw7naT9NvcMuuIevYH4EPhvXAp8n8ukdF+S5scf4r2DrrxHfeR7gLu4FIBLuauQ6p5U/dkM3XuUvcBxwjhitgr/E/cgdkvj8Nkio2tL/o7XL244kCdACxhlFNnU+DZlXtXRC+J/apwdf+6x1KqjcNiAhbjxF7T5bCls8pDjqbuGrOI3aL6va2RDwF3cSLY07G5uEhpGk1s6Yp8JbMVbw+qRrJMVJ24XhCiZqtl8W4oFxriLB7iWmzQluAV0t13hukJGgGj8HyVaYCU+B4gXbmqGA+zUhCaIEKn/mCJccidWt1r9duVEKRZ5gGsZQ62+u2JXrzu5SVvCibQHawQBkiGgE4//3dhmdWnFUfgFspj5KnSBVxTxc5JOX6d+VzzACg8YpOJnBhcXlingBCc4AX3almoASHqAvBlENom49wA2RGt4i4sbM7Xr1T/4HuB47unmxEZ5Coh6gOxub+UeALOjTyvzqo52LM/4gWJjeJiI/XNMd/+i5rt4dIxuGoVHlt/EnWznTm4yxNq+wEmiT7XOkGwapZHGn3fwFwrpZwtr0LOS9D2D3pxs7/ztQRZsKWzykBPcG1vpjmvu8ao7gQwpIgIcVzI6380t0S5Il9mlyNNhj3H8NvkT2PIOBzYkAVwwy++mb/6H+Lpxx4yNjMYSwGNDwlsDGw5PgIbDE6Dh8ARoODwBGg5PgCI6RptAx2oxWGfIEyBk1WIC6t2WEIPCMzxjlHeMvgodqyfDuoPYA2xhj5UEamTkaWlL6LAaWxo6rEoUEul3QCE/IJSkoqB+aXmS7wquMFyfu/pdvJrWBYqxgiMcY1k5JauPJhwK+UKKc/pR4wVAhzZbonMbSjjATkke+Rno8otXoN+tQycVg1HbpRtkRlBNAFDvOGEjACTOHqJRKPu1GisPSwk6Aujzi2X0QsV6aahYfLlOoX4IPMacwatHj2PMpeqfyzVQwFx8dCtzHHMoQQdb/rXBhlB9BJkAkQrK2+SSfC1WmZP23JggYI5VWkxoleh25onKJDDFHoikc8a8eWloSLuuIA4BurE/S6HfUWD4Ye7kI2TPKuWl6xL5GEH2CwucUw4jXGo9gclp3Sxdl/Dm4IbDzwQ2HJ4ADYcnQMPhCdBweAI0HEUCmNbeemxAZARo8RAA5/EhTaz9yM72VY3UY10iIUCLbhp+9FK6SiVPMsch3kXXYaK4aJA9UIgEfmCN5R4aJBNBR9jGU7yVkK9yNaEyHHKEFvvZYggmG0EOVFr8LQZK7LfcQ4OIAC26vML5wFc4wgQ/4jzFGt4QOMq93M8qWzQbmEbpVJFqR+Jw6ps4ySYpnnbIVTzBVbmA62r5E2ksfpV8hMPxPxTxuj0UiGwBVwLfBeBqAL7Lu7hSUvAklzPGfcBuunxUSwA1LgMuBOACTlGsRYyCy1zAKcBrireTC+N/lwGvKcq/AHhTLH+Tf7txRbEHiKDuAZKUx9jKEbZpwyGrewBxffFnpS68v3IPDZJngFW2pIumFxhTBnGJjMDzjHM9VzJeigAH2Cn8Lvob9VvuoUFCgGivgFf4Lr/Feah3DMi8AeaAPcp9rsKN5TC18ZHfNu5P4jhB3+fvNorPq4cN3h+g4fBPyw2HJ0DD4QnQcHgCNBwZAWz7AdSVz/KNVP4Nxb5//Zb3+/oGLa+I5C3Ath9AXbktzFy/5f2+vkHLK+PU1wHcw7WS5DLO5dH4e135HfypJH8LZ6eTzf2W9/v6Bi2vgWgIyCL/55dNvU3xLY+ifDndWnZZmz8w5LeVXyyhH/lt12+rvzn/CWFhmi6/SZ6vhfqqS6IYKlYdDNoWSjZb/bsE7EK9Orhu+S757eWrwmG75g9QLzALS/wOc6XI8oMA7NS2X3L0U9xGT1Zo5Qkg77UbKH/p5Mm4m43H6gbWNZC9/EBZmqsC7OWbCVC/fYL0eDV5suNvpP6eEOC0+kXk8Fru//IIrT2CGfnl6FVKyK98rJI/dMhrM5M9aJDt5XZuJ1N/T9DrIWAB+ADVh4D6Xby+fnIJ1bpwU/luPYith9Kdfy+3C+rvQQ8QPQTa9gNwky8BY4zF3/Ly/E7YoeLokZzUJscoRykX6x9KR58WJDZ51fZJri+sLL9NUL/6rCUREeCQUIEEhxTf8ijK22kDtrX5Q0N+W/nFEvqR33b9tvqb8heDV5WVA0Lnr77qkojmAVa4jLcUJMu5nX3qyh/lt6XNKB/ig2sm7/f1DVpeAxEB4B84g1O4OD56iEX+TEhXV/73nMvpqSvod3gwp561kPf7+gYtrwzvENJweGtgw+EJ0HB4AjQcngANhydAw+EJ0HDkjUHum6cPp9yjAkRr4Ej67bAydV25x9BBHgLqqe6wtYR6d25QuwQPAUUC2BR4mMNGeRKeQQebAnWxvBOEFW39HhoUCTACRgWOMGKURxE69AgxO0yYNnwBu0OFR0nIQ8BIhVLE3OYS6t2/NgJ5lIR+y5jhe8r3bwF9QJn9AoZd7lEBfiKo4fAEaDg8ARoOT4CGwxOg4fAEaDjWLwHafkKoFxAJUH+eLWSKkKm+17vNkhAAwqMiRALsiv8NGra7O1L/8qCruREgEmCJZF3fIGG7u736ewjXHiCkLf0rh1D6UyNSr56Gifr9M0BPIHoELbHMkvLeCoDlwr9ymHZKlah/l1G+7J8BegWRAKYeYFeqmuRfORLMSEfkeP7tXPmq0kX1+0GgBxDXBtYP9B4yzYxyswb5zaCYJq9+VR28+vsA1x6gPuz7d5RTf1uTzqMUhuktIGA5/idDpX7/DNADiENAm2XaQ9m5hnGnX/z0qAkfH6DhWL+2AI+e4P8BepjE/N9O74IAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTUtMTAtMTlUMjM6NTM6MjkrMDI6MDC1OmPTAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTE5VDIzOjUzOjI5KzAyOjAwxGfbbwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=)}.ui-button .ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAQAAABFnnJAAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAiEnuKCAAAAAHdElNRQffChMXNR3//v8QAAAaqklEQVR42u2de5BlRX3HPwdIKGJYiCGwwrJbUolgopidgUr5SJWUIXeSqk3UYsndsaJGyQ7RqGiZnZHM8Aez4tzRAAuS2qXAWFTNI7tEDVSFOyJiYdxScXd9hrwEB4m7+keM6x8pYsnJH+fVfU6/zjn3zr1zT3+n7txzz6+7T3f/fv04/fv1r4MFPJqMMwadAY/BwgtAw+EFQEabkPagM7GR8AIgos0KsNIkEei1AAy+/bQJK8dcAfagE4Ek5cGXsYeQBcDcAYbpnwm29qOPH8ZPb2vD2J6dMLFaCSL2r8YiYEp5hPoIUQB60QHuqZFCEjdph+VRJy4EBKwCqwQEhpTrlHHoEKTrAEkRk3agQwiF6hERpRNUip+0Mt3zbc8Oa+bdNWVbGTcRsh7A3AG6wtQG7cNH9HQTC82p1GubpiFITLlePzNkCEqvBJpbkakNZpVate3YUzC3TXPezX1glrKtn9lUOKt0DBvz9FVTv8u0p7CKqf8KHOLqhkAx5ZFhf5UeYLTRZmWU2GuHF4CGw68ENhxeABoOLwANhxeAhsMLQMPhBaDh8ALQcHh7gHzcQed/g1HGHsDNIsCmjGkb7QHMT7Czp449gF0dHuV9pISknD2AmwbMXIV6Bu3RXLumbWO/LfWV3Lc+9ZGxBijaA0TQr4YnoUz6Nj3dFtvFHsCUO/PT7fHNCOO0k++RgGwPoLqWserUC6jD2Nuniz2Aqf255U0vPqHV2qDMkzYFqiiD2qwY29gw2wOYhMvW/yQlD0dJX9hrbeDgK8ckni5xB53/DYZXBzccfiGo4fAC0HB4AWg4vAA0HF4AGg4vAA2HF4CGo/zGkFFHOMBV/vprpaXzf1a96H2phEHmILTmoLoqyB5zACWXh4AQjLp+F/8AYQVKWVR9hi3/EesDYyp24aga260ELqFKxD1DCmArfuBQAH38wKGCXIoQGpQ9LvkLDDT5u9wzEoq9BswlNAtQaIkNtkYs5V8cAlyLr7PWsVdS0IMOPjRqIm2jaJ0chGnsQEkVn656StK89HkIDXRz2lnpzM1AzGUAZSeBoUPrsYVykc5qbdyNuYFD6iYGuaRbtQZMTdAlbXsdFOhlXgOzLs4llJpm7gLtEmxOw9bFunXRthZke7rLJLIq7CJup0s5KNMDuHWd9Wa5gWMv0688BsYO1i3dwCFMVZiHafMAqIx7libQ4DDoHGzm51eI61cCGw4vAA2HF4CGwwtAw+EFoOHwAtBweAFoOOTNoYmz1MHB7g+8n3CpAReNaLV4tr3Rrk8phUwAko1RLu7eq1VA71AtLVvO3WrA5Go208a1S8eO9JTJn74M7co1EOZyCag3h5q3cLpotNuKe70TAV1abq4h9Pl3qwHdM9q57bXtUrGzEth6oHpb0wsbdOWtYS7u1G1bsHUbRN0saew50KVjd+Fuz7mbQ3q1xqDI2iBHt20sbxt9EYdSymaFsU5hHRTDlBUA9woISsR1y4G5Cl2eb9/br3++LbZNAOx1YGagXQDaFmfWSgEo9xaQVUAVlUUgpKFOPZS+Tc+vgizfVecQpqfvianJCK72IGB6fhJTPQewpZz5bjDtb87nsqQ9gKkC5AmMqfjmzJmKaEpDLJrd7EvFArsAmkqwmnMg0S+n+Sb2rqbH3rjlkrJDgJs5VWh1EWEeBevEdqtedTncxuD6Jm2mdKofamOfAyjh/QOIMAvgSMILQMPhl4IbDi8ADYcXgIbDC0DD4QWg4fAC0GsMUp1dAXl7ABtM+iqXordr6rv7jfq5CyyL3UNW9qI9gAkmjbnLKmGisdvjsMFUj7qbq8zbwwPr9lc7g3XxTakPCNlCkJgtu7ff4mKjuDWy2unfrgvNYNLY2WIH2nDiXZ2207R5NHSiupd0Q6CeA+iMDsz6qmxoqGK0ELUcu9mU3odBiKuuLyhxV/Vc1fPtO5uHEpkAyIrC8gfIRwesJ+wrHz8g0+VV20CdhanrgqLac91C1PHx0QdkAiAqCqvIsO0kAbuyte7oGAg9iLqHkL9VIXrTilVPkHuPoeknxCFgNc2UqgOPOvjI3EuNVaM9gIu23+4ewozMFkBtUmGu+mwQ0nsXSUIGJaliiKoGNX2BWhuom8aAi7JUNwnshbLVzWqx6kTTZRKJIQeb8DAZrw6WMTRd80bBrwTKaBj7vQA0Hl4AGg4vAA2HF4CGwwtAwzF8AtAalkXSZiAvAG66bJPKJnSi6kK06G7Iq9ig/SAMDcq5i3dTxUzUyE+XREhaxnBVXdZnGKETwOtAFgDzKrV5tTtp1S26ShEI04VS9d69qOufSEN0NfGTq2pO1cXep7zGcgSRCYDs7r2ITB+uc5keEMTsX1M+y9y1R13/GhOGvbPJ09XPly0K8qm4uY9oHBJfwVmVmT1e2zRZCfurj+NrTq6c1bv/9U7VE2O2jD5CR8DXQSIASdWaTKZAPDRBjfpHouj6D/np+TzIByEUc7giPTugYVtA9ci8hYtVpncwYj/1wvVYCR09EoGwMI9IFMFqr/xyfnrlVr4BKPMWkFWxzibPdiSTiT6RUrtAUOgHAuHpqoHIbE8ku4/wSCGfF2A7cMRkdln3JIu1NG2X18jA8V6CVfysX4n8QpCp85bbYH/akXkOUAervuWrMGwnh3ombTCGTxfgsaHwAtBweAFoOLwANByjJACz6UrDbF/Sv4yx+O+yQRe1d4gE4GBccescrJzSYxZNvw0hT0rWAmWZOMt8ej2vjD1bSzwu42mu5RjHuJanlSIwa8393pi6V/MMPd0WE+7L/ZmfkHIp2hgS8jBPAecxJQTOXskOpvcPcaMm6WyR6Ai7DTuLiqlHWOIpgYWwzFukyp3PhZ9jfwm6nENV7vZySPo9xb3S7zGuZYFx4BgzPMpxbQ2on+HiTFp/8qftUOwoRFbztjKmS36JACwC8Hkp+JqQeFFAnmWHpnqPgFIEQsbT62OKIn6Nq4TfsgBEmoDJlJbfIhYyJ4nAHPNaDwa6jW/j0u98Dsc4xjjbgFfwYcY1AnASgJdU3GEUkixpB84UMYRZAPIiHkC2EJSwvpsPEOMp4AQ/5tOG7I/F37u1IbYYYi/zlCQAeRwSChVySOqrAPZDKgJz7M/1CFkF6ityC4+n19co87CNiwh4kSGXf2mgmXtAszo+UKRSTsQS9n+MD4q3s5XAriWBE/y4EEbOwgWxLi9U2PNE+FVD+pN8zfj8J8iU1Yd4oiAAmQgUO/8Irdx3MXfXGXM6wz9yF/BeZpTxTwHPCNdFzDGffjYWCfvv5xxZBFyXglXsz+PFAJzBC9oQ5wNoJii2HiARATjEE9owAWgneVfnvvPYwifiq3coqJfQARaAGTrsKgwBeU1q1W2mdi8JthCf5O2FexH7j3AO8G6AeNAvoQsosj9fwPOtafxSejVeoNl6ALgsZvwTXMbTCvosT3MQeIJZTR9gxi/z3vQqjzY7eIi9zABnEjLDiwwGJXPsVzJph/DRYQwbbCHephCAKQ4BuzkSz6MWmY4I1ZVBRfl+kTXOXfH3uIJm6wEipkcioHoNm5Xoql5gW+5bVUUwQ9TO5SFmBwsgvBcsaIaBCPM1uvhjNUOobTruhVgEQGC/SQDmhOtip1Nk/+f5mPSrCHOXaO4B5hSveWXokAxR2Xe+iu4FQn6B+cIrYCQS+TudXOlskzy4QfgUsZy+5cByxRB6JCIgsX+YHETMAi8Xfj9VqRuvixAU7O9l6hEGo/beyyGZ/cMkAB4DwSjpAjwqwAtAw+EFoOHwAtBweAEYLTwu6DOcIAtAy2Fjth4uJ2+6YVapUZ8TdNnFt/yDhNJf3rLhcI5+WPFcUVu+tw90gC9Y6qeTW18og9fHf2YsscRS8kN8DWzRZQ6YV9jmr/OmeAXqMR7lpUwp1bnPsBs4wku5KqesBfd330S3L4ef49b4bpTaLQp935H01+5CfFd9fLTCt9AXehImAJYkdTdAh31M0AUm6Obf12nRBY5wPYfZDcr9E99nG/AclxpqdyleTFrm89wvCkDE/kibVhSBkD25nTVlTw+P9hN+ijfzKd7Mw+zSVNAs+znIVEGnJ279VD3B5fj2/+ISfshFPMc2jY+DGTqEBEyzoKUDBvpXOM0WfkdJT6p/GZgsWYMJ9UiqbhfphwtK+CNcr3j+QaZY5gG6ib2FqA5OllPnmavkqEXc0qXWHN7K91jnBCc5xg+UIWaZZxs38lwf1gGf4WK+y4V8l0v4njZUtJY+Y6Qj69QlnOa4Vl2TtL5JJXVCqjXdBjm1tcWvOdwB+APgXN4KQIu1TACelFbT55njSa3aVIc1bM6cb+FhdvFZfp8v8HqFcdks8xxiqi/sh5fyL/wm/8Fv8E3erlCpvAdIjKWmFfETOmCgb2FMY/iyJDE+v5bfYV+afrRFdlH5FDWu4Z95rfD7SwqTlncC24FdCPZWiQBcTWJMEX3v7wsLbuV7/Ddf5iRfZr1ATdg/Z3x2aNCHT6TuaVQ90Hd4Od/m1/k2v5VNglK0uYtE3z+tUP5k9DP5uYGezQFkZGNvhC+WrLuJXJnyPcTrpFp5nfb5uQYqTgKT1qu2SRtnLzfyzticoyidoRS3OMIWzTaDAt3Efvm8omIeQzIBWFPS38mHmOF2PsBH+FvukOiTBZGQVUJ16Rn781O/DK3cELBmoOuozxGpu/P0JSbjsT9ny+kuAG5e+lskQ0HZOUTEYH3rT94CEqjeAiZSFzVqAZFRfE/5IH9jzF0dekBoZL99Gp2JgOoN4HZu4kGuBw5zHXfyAYm6xCQP81Mm83HzTqKyd/myOEJISJcuYWwZrC+iLnVT5z/PLcKvWwr9yRRRx9+NyzCloJt+wx4t++rTl63sj4y0oo59gtRkS8IaE6DZQP8zPhHP+6/nE/xMEWIXkyzn47qqg6drLE94lEEHSkz+3BENUQUR9PYADYfXBTQcXgAaDi8ADYcXgIajeQIQqY1V7zSdVJX7Hod0zlXeHbrj4W0QBWA6rYDqryHV/QPURYsw3a51XGvV8Ln4/X9fQQQ+yj7u5V7exbu4i5sKMaPaeSj+dS5wbvwX4WY+Tsit3ErIx7m5EN/sviJvzZC3ZyjSbSGKnh5keozsNXCaBZ7lEeDtnJ2qPYuJ2E7Zhn5ZvS8xyQwdpllQLKpETz7BGMfZqclFsiB7A/dRXCl8dXp9mu8o1kJP8FWmmKETpyMvh9vV4cnqfVepSDavvarcZ3ZzIYLUUGZe4fIzZEKIkaqzM3XwQrxKfJyzeb6w72UYMAkscCWTwGRBAE6wE9iZsv+EIoWL4m/19tSn+UV+ApzH/ynpX+VGpnhxqtMv309eHa9fhqhWPWeZT3cVqprQGg8JVhTFHi4SwSuF6yL+lJ8D8P3khjgEPAIcZycn+GTporkfKWOKreykUkR6tknhWsRYzPKE/UWdfIs3GPPwv/wEgJ/wRgX1KFOEQDtmf3FZd1z4U2Necx3lfx6YZ4xxxpUWBS12AQeJFLtFmN19B3SZYRs7uJRLM5sheW9gxP4xpaegMHdVTdljyqINnbj1w7KyfxoTWr+K/V3J5iG/1v4dTguOcI4W4r+WDrCP7eh0els4XbpMGS5Jvx8C/kgR4q+ASIcxRaT3kxGSiVWx+cwCPwB+zpls4zYei25nc4CQ5zk7rrp1tlcw+cIYws3gyfQEUUuvmqN8I+7+oGgXJ7NfxcBp/kT4dQ/3G56uErDINUY0eJxWusCZkEbt/Bh/g3Q/5P7CHEBUFp/gQ6XnADdDbIWxlNVuNgTMcDbP81UOss52RRebOYhWu4q2OZMOcn9mquoJCzHzsmsRCfujgWBbNsoBmcHbIhMEyvbb4UF2xn9F9sMCJ3gYeIxoplHEGp/lC5zL2UpzrDmLg43zOZ/7OJ9fif+bsVNxL5kDXIm6Qe3gTHawgx3AzUmIbAiI/F9EneDMEE4Bo83RM3T4JguKzdER+59jLLaNzXsBiNhvmrjdxnX8J3Cxgv0AjzJNyDE+SpedWsu/hzWp7xecRuwt7D8+FG+uz/4fyoXYlttUXvRyIFpKqa2mFJ4RymoDB/kaaEaLbtrxf59tOa25et6tzr06/9H84nn+mLXYMGMLP83FXeXfeYpVbS2FBOl+gUMFL2R/yHxskjfHP+X6mIMK+wXZZV8+RNGhn9J/gVcHi9jFXwMf1rTiJc7lnlisWhzlNQURE6ESANEszi6OGwIvAA1H83QBHhK8ADQcXgAajrwAHNT6C7+br6eLtF/n7kFn3KM3kJeC/5XLgddzRSHcp6X18VfxKrbxpkFn3qM+xB7gAJcDcDkHcqHuTtmfrdC9UdkLnCSMPWar8D9xD2JfZhrGhaiTgqLqZP3khgOiALSACSYoqhpfo4yrurs1/qhxXvy9z5KrjsJgA5biyl/SxrOFsNFDTqbmGkUWv0RzvamRCUDU/tdYo9gHZIueoprW7tU2j4DA4VzQaJ9sXgSyzY2TGgbaQiwxyQHGOaBNAbYyHwuJXoxHCpkAtOL/LeFXEbYTQ4+AZltY8pQu8KyC0km/o/4hv24/qbmW7y4zEbtfUNEPcBPHuYkDmhRA5+h9ZJEIQCce/7uxzuryiqPwM2Q+81XoAj9S+M9JOn0d+13xAGs8YKDK3xlcTFhmgVOc4hT06ViqASBZChbVIEWViOzjto7H22gPb35zY8Z2PfvtrphDYJkHeCuTyhAhB2Jjzzt5nzaFU2nnnw9xUhgWTo3KLCDqAbLW3hI6/+zuV5RxVXc7ljl+oDgYHqZj+xxT61/WXMt3J+mmXniK9PdxJ2PcyfsMvra3OlFGZoaQHBqlocbft/N+BfWO3B70LCV9z6BXJ9s7f7uTBVsIGz3kFPfEWrqTmjZe9SSQIUUkACeVEi12cyu0c9RV9ijidNhnHL9N9gS2uMOBkRQAFyzwu+mb/1G+aDwxY5TRWAHwGEl4bWDD4QWg4fAC0HB4AWg4vAA0HF4A8uhYvPlvMgcQNogCELJuUQH17kiIQeFJnjTSO0ZbhY7VkmHTQe4BtrPPKgRqZMLT0qbQYT3WNHRYL4iQLH6HFfTDUkoqEdRvLU/iXcVVhvK5s9/FqmlTIO8rOMKzrCqXZPXehEMpXkh+TT+qvADo0GZ79GxDCofZXaBHRyDo4ssl0J/WoaPKzqjt1BFZEVQLAKhPnLAJABD7GZGVQtmv9Zh5WFLQCYA+vpxGL1isp4aK7debFOpJ4LMsKg8cseFZFlP2LwoVFLAY393BotIeKJ+CDrb4G4ORYH2EogBELCivk0vitVhnsXDmxjQBi6zTYlrLRLcnT1cWApPvgYi6aIwrUkND2E0FeQjQjf1ZCP2JAsMPcycfIZurlKduSogbQ+wFC5xDDiNccj2NyWjdTN2U8OrghsOvBDYcXgAaDi8ADYcXgIbDC0DDkRcA095bjxGEuDn0MwBcyDs0W0MjPdvntBtHPTYhEgFo0U3dj15OV8nkGRY5yhvoOiwU5xWyh3OewA9vMN1Dg2Qh6Dg7+TKvJuRzXEuodIccocW9bLc6ky26Ks7/lh0l9pvuoUEkAC26/IiLgEc5zjQ/5ELFHt4QOME93M862zUHmEbhVL6qx2N36ls4zZaCP+2Qa3icawSH62r646kvfhV9nGPxB4W/bg8FIl3A1cC3ALgWgG/xBq4uMHiGK5nkPmAvXd6tFQA1rgAuBmArZyj2IkbOZbZyBvCC4u3k4vhzBfCCIv2twMti+sv8240rIgF4EnilcPeV8T0ZHeAButzCDk6wS5me3kziQunXHbFn+wxbeb8gFkX6hbw//pjiR2G2KugeSiRzgHW2p5uml5jMnzIPJErgg0xxA1czpfWHrRoCDrNb+p23N+o33UODRACi8zB+xLd4JReiPjEgswZYBPYpz7kKR8tgavQhHhv3Z7GfoH/j70bF5tXDBm8P0HD42XLD4QWg4fAC0HB4AWg4MgGwnQdQl77Al1L6lxTn/vWb3u/yDZpeEclbwKcL5+V+RjoPoC7d5mau3/R+l2/Q9Mo48/cA7uatBcoVXMAj8XVd+u38eYH+Cs5LtQn9pve7fIOm10A0BGSe/8VtU69RXInI01fTo2VXtfEDQ3xb+vkU+hHfVn5b/s3xT0kb03TxTXQxF+pSl0TeVazaGbTNlWy2+3cF2IN6d3Dd9F3i29NXucN2jR+g3mAWlvgdCqkU6ZGr/d3a+kvufojb6MkOLdXWsHwx83Q09DAed4vjcT6dUHPfnL69wEkPZIsdaEXOJXVd/lzSDzF7FrjOmIObuU1gf09wVv0kBLwg/C+P0NojmNEbBusbgD3/9rg2NdmDBtrNfISP0FP2934IWALeQvUhoH4Xr89fMYVqXbgpfVP+iucvlKNHIiCyvwdDQDQJtJ0H4EZfASaZjK9EungSdqi4e1yg2ugY6Sjpcv7Dwt2vSBQbvWr9JOULK9Nvk9ivfmpJRAJwVMpAgqOKKxF5ejutwLY2fmiIb0s/n0I/4tvKb8u/KX7eeVVZOiB1/upSl0S0DrDGFbwiR1kVTvapS3+E3y4cRvkZ3rZh9H6Xb9D0GogEAP6BcziDS+O7R1nmL6Rwdel/zwWcndr8fYMHBfZsBL3f5Rs0vTK8QUjD4bWBDYcXgIbDC0DD4QWg4fAC0HB4AWg4RGWQ7XTeYad7VICsDRxPr44pQ9elewwdikNAPdYds6ZQr+UGtVPwkJAXABsDj3HMSE/cM+hgY6DOl3eCsKKu30ODvACMg5GB44wb6ZGHDj1CzAYTpgNfwG5Q4VESxSFgvEIqcmxzCvXar02APEpCf2TM8M3y/VtAH1DmvIBhp3tUgF8Iaji8ADQcXgAaDi8ADYcXgIbDC0DDsXkFoO0XhHoBWQDqr7OFzBIy2/d8t1mRHEB4VIQsAHviz6Bha90R+1cHnc1RgCwAKyT7+gYJW+v27O8hXHuAkHbhUw5h4U+NiL16MUzY7+cAPYFsEbTCKivKthUAq7lPObi5b0/Yv8dIX/VzgF5BFgBTD7AnZU3yKScE84U7xSNd2kL6qtRl9vtBoAcYph5AZH+gpXv29xSuPUB92I9wKsf+tiacRykM01tAwGr8KULFfj8H6AHk7eFtVmkPZecaxp1+/tujJrx/gIZj8+oCPHqC/wc2957uSJx+mQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNS0xMC0xOVQyMzo1MzoyOSswMjowMLU6Y9MAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTUtMTAtMTlUMjM6NTM6MjkrMDI6MDDEZ9tvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon,.ui-state-default .ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAQAAABFnnJAAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QARaw7li0AAAAHdElNRQffChMXNR3//v8QAAAalUlEQVR42u2da4wlR3XHf207sQjx2iHEXuz1rnASbBIw2RlbEY9IWMi5k0ibAPI6dwcFCDg7DoSnyM7gzPiDZzFzh8T4gaNdyybI0jyy6wCxpfgOxhiZsALM7PKMQxJsZnHYhQ8hLB8iB+HOh+pXdderu++de+d2/Ud3bt8+VdVVdU49us6pU8G1eDQZZw06Ax6DhReAhsMLgIw2Ie1BZ2Iz4QUgizYrwEqTRKDXAjD49tMmrBxzBdiHTgTilAdfxh5CFgBzBxgmfybY2o8+fhg9va0NY3t2zMRqJRDsX41EwJTyCPURWQHoRQe4r0YKcdy4HZZHnbgQELAKrBIQGFKuU8ahQ5CsA8RFjNuBDiEUqicLkU5QKX7cynTPtz07rJl315RtZdxCSHsAcwfoClMbtA8f4ukmFppTqdc2TUNQNuV6/cyQISi9EmhuRaY2mFZq1bZjT8HcNs15N/eBacq2fmZLobwAmBEOvGrarFQWMPMQFKc8+DL2EL0WgK2ONiujxF47vAA0HH4lsOHwAtBweAFoOLwANBxeABoOLwANhxeAhsPbA+TjDjr/m4wy9gBuFgE2ZUzbaA9gfoKdPXXsAezqcJH3kRKScvYAbhowcxXqGbRPc+2ato39ttRXct/61EfGGqBoDyCgXw2PQ5n0bXq6LbaLPYApd+an2+ObEUZpx98jAdkeQHUtY9WpF1CHsbdPF3sAU/tzy5tefEKrtUGZJ20JVFEGmRSuw24PYBIuW/8Tl9yrgw0YfOXUtQcYdP43GV4d3HD4haCGwwtAw+EFoOHwAtBweAFoOLwANBxeABqOcwadgaFDOMBV/vprpaXzf0696H2phEHmILTmoLoqyB5zACWXh4AQjLp+F/8AYQVKWVR9hi3/gvWBMRW7cFSN7VYCl1Al4p4lBbAVP3AogD5+4FBBLkUIDcoel/wFBpr8Xe4ZMcVeA+YSmgUotMQGWyOW8p8dAlyLr7PWsVdS0IMOPjRqIm2jaJ0chEnsQEnNPl31lLh56fMQGujmtNPSmZtBNpcBlJ0Ehg6txxbKRTqrtXE35gYOqZsY5JJu1RowNUGXtO11UKCXeQ1MuziXUGqauQu0S7A5DVsX69ZF21qQ7ekuk8iqsIu4nS7loEwP4NZ11pvlBo69TL/yGBg7WLd0A4cwVWEeps0DoDLuOZpAg8Ogc7CVn18hrl8JbDi8ADQcXgAaDi8ADYcXgIbDC0DD4QWg4ZA3h8bOUgcHuz/wfsKlBlw0otXi2fZGuz6lFFIBiDdGubh7r1YBvUO1tGw5d6sBk6vZVBvXLh1b6CnjP30Z2pVrIMzlElBvDjVv4XTRaLcV93onArq03FxD6PPvVgO6Z7Rz22vbpWKnJbD1QPW2phc26Mpbw1zcqdu2YOs2iLpZ0thzoEvH7sLdnnM3h/RqjUGRtUGObttYnjJHtT8xlFI2K4x1CuugGKasALhXQFAirlsOzFXo8nz73n79822xbQJgrwMzA+0CYBYgjQCUewtIK6CKyiLIpKFOPZS+Tc+vgjTfVecQpqfvi6jxCK72IGB6fhxTPQewpZz6bjDtb87nsqQ9gKkC5AmMqfjmzJmKaEojWzS72ZeKBXYBNJVgNedAYrV0Cm4wsXc1OfbGLZeUHQLczKlCq4sI8yhYJ7Zb9arL4TYG1zdpM6VT/VAb+xxACe8fIIu29cSkkYMXgIbDLwU3HF4AGg4vAA2HF4CGwwtAw+EFoNcYpDq7AvL2ADaY9FUuRW/X1Hf3G/VzF1gWu4es7EV7ABNMGnOXVcJYY7fPYYOpHnU3V5m3hwfW7a92Buvim1IfENKFoGy27N5+i4uN2a2R1U7/dl1oBpPGzhY70IbL3tVpO02bR0MnqntJNwXqOYDO6MCsr0qHhipGC6Ll2M2m9D4MQlx1fUGJu6rnqp5v39k8lMifF5BWYdkTuPNDSFAibkx12wJt37xd3YWEiY22HsI9ZZOPgE1G2gNkFYVVsmY7ScCubK07OgaZHkTdQ8jfqhC9acWqJ8i9x5CwXx4CVpNMqTpw0cELcy81Vo32AC7afrt7CDNSWwC1SYW56tNBSO9dJA4ZlKRmQ1Q1qOkL1NrAUNuBuyhLdZPAXihb3awWq040XSaRgEVAh4a5LvDqYBlD0zVvFvxKoIyGsd8LQOPhBaDh8ALQcHgBaDi8ADQcwycAreHSlo068gLgpss2qWxCJ6ouRIvupryKDdoPwtCgnLt4F3fSARM18tMlFpKWMVxVl/UpRugE8DqQBcC8Sm1e7Y5bdYuuUgTCZKFUvXdPdP0TSYiuJn58Vc2perb3cTtqfsSRCoDs7r2IVB+uc5keEETsX1M+y9y1i65/jQnD3tn46ernyxYF+VTc3Ec0DrGv4LTKzB6vbZqsmP3Vx/E1J1fOOm29ziIgtlZI6SN0BHwdZE3Cgtx/FfSmDG4GEXqjspge9x86kwx1Dm3uE+TWP2JHwNdB6i08W2V6ByP2Uy9cj5XQ0YUIhIV5RKwIVnvll/PTK7fyDUCZt4C0inU2ebYjmUz0iYTaBYLCPCLIPF01EJntiWT3ER4J5PMCbJZqJrPLuidZrCVpu7xGBo73YqziZ/1KDJtBSKh9h/DoC4bt5FDfPW8yhk8X4LGp8ALQcHgBaDi8ADQcoyQAs8lKw2xf0r+MsejvskEXtXcQAnAoqrgNDlVO6VGLpt+GkCcka4GyTJxlPrmeV8aerSUel/EU17LOOtfylFIEZq253x9R92ueoafbYsK9uT/zExIuiXWAkId4EjifqUzg9JXsUHL/MDdqkk4XiY6y17CzqJi6wBJPZlgIy7xJqtz5XPg5DpagyzlU5W4/h6XfU9wj/R7jWhYYB9aZ4RGOa2tA/QwXZ9L6kz9th2KLEGnN28qYLPnFArAIwOek4GuZxIsCcpJdmuo9CkoRCBlPrtcVRfwqV2V+ywIgNAGTCS2/RSxkThKBOea1+3d1yqxx6Xc+h2OsM84O4GV8iHGNAJwC4EUVdxiFxEvagTMlG8IsAHkRDyBdCIpZ380HiPAkcIIf8ylD9sei773aENsMsZd5UhKAPA5L278PS30VwEFIRGCOg7keIa1AfUVu47Hk+hplHnZwEQHPN+TyLw00cw9oVscHilTKiVjM/r/hA9nb6Upg15LACX5cCCNn4YWRLi9U2PMI/Koh/Um+anz+46Qq48M8XhCAVASKnb9AK/ddzN11xpzO8E/cCbybGWX808DTmesi5phPPpuLmP338TxZBFyXglXsz+MFAJzFc9oQFwBoJii2HiAWATjM49owAWgneVfnvvPYxsejq7cpqJfQARaAGTrsKQwBeU1q1W2mdi8JthCf4K2Fe4L9R3ke8E6AaNAvoQsosj9fwAusafxScjVeoNl6ALgsYvzjXMZTCvosT3EIeJxZTR9gxi/z7uQqjza7eJD9zABnEzLD8w0GJXMcVDJpV+ajwxg22EK8RSEAUxwG9nI0mkctMi0I1ZVBRfl+vjXOndH3uIJm6wEE04UIqF7DZiW6qhfYkftWVRHMINq5PMTsYgEy7wULmmFAYL5GF79eM4TapuMeiEQAMuw3CcBc5rrY6RTZ/zn+RvpVhLlLNPcAc4rXvDJ0iIeo9DtfRfcAIb/AfOEVUIhE/k4nVzrbJA9uyHyKWE7ecmC5Ygg9YhGQ2D9M9gCzwEszv5+s1I3XRQgK9vcydYHBqL33c1hm/zAJgMdAMEq6AI8K8ALQcHgBaDi8ADQcXgBGC49l9BlOkAWg5bAxWw+XkzfdMKvUqM9ldNnFt/xDhNJf3rLhSI5+RPHcrLZ8fx/oAJ+31E8nt75QBq+N/sxYYoml+Ef2NbBFlzlgXmGbv8EbohWoR3mEFzOlVOc+zV7gKC/mqpyyFtzffWPdvhx+jluiuyK1mxX6vqPJr72F+K76eLHCt9AXehwmAJYkdTdAhwNM0AUm6Obf12nRBY5yPUfYC8r9E99nB/AMlxpqdylaTFrmc9yXFQDBfqFNK4pAyD6LN3DbWqHYT/hJ3sgneSMPsUdTQbMc5BBTBZ1eeuSq+vBVl+Pb/4tL+CEX8Qw7NJtPZ+gQEjDNgpYOGOhf5gzb+F0lPa7+ZWCyZA3G1KOJuj1LP1JQwh/lesXzDzHFMvfTje0tsurgeDl1nrlKjlqyW7rUmsNb+B4bnOAU6/xAGWKWeXZwI8/0YR3waS7mu1zId7mE72lDibX0GSMdWacu4QzHteqauPVNKqkTUq3pNsiprS1+zeEOwB8A5/FmAFqspQLwhLSaPs8cT2jVpjqsYXPmfDMPsYfP8Pt8ntcqjMtmmecwU31hP7yYf+W3+A9+k2/wVoVK5V1AbCw1rYgf0wEDfRtjGsOXJYnx+bX8DgeS9MUW2UXlU9S4hn/h1ZnfX1SYtLwd2AnsIWNvFQvA1cTGFOL7YF9YcAvf47/5Eqf4EhsFasz+OeOzQ4M+fCJxT6Pqgb7NS/kWv8G3+O10EpSgzZ3E+v5phfInpZ/Nzw30dA4gIx17Bb5Qsu4mcmXK9xCvkWrlNdrn5xpodhIYt161Tdo4+7mRt0fmHEXpDKW4xRG2aLYZFOgm9uddQKjGyFgA1pT0t/NBZriN9/Nh/o6PSvTJgkjIKqG69JT9+alfilZuCFgz0HXUZxDq7jx9iclo7M/ZcroLgJuX/hbxUFB2DiEYrG/98VtADNVbwETiokYtIDKK7ykf4G+NuatDDwiN7LdPo1MRUL0B3MZ7eYDrgSNcx+28X6IuMclD/JTJfNy8k6j0Xb4sjhIS0qVLGFkG64uoS93U+c9zc+bXzYX+ZArR8XejMkwp6KbfsE/Lvvr0ZSv7hZGW6NgnSEy2JKwxAZoN9D/j49G8/3o+zs8UIfYwyXI+rqs6eLrG8oRHGXSgxOTPHWKIKoigtwdoOLwuoOHwAtBweAFoOLwANBzNEwChNla903QSVe67HNI5T3l36I6HtyErANNJBVR/DanuH6AuWoTJdq3jWquGz0bv/wcKIvARDnAP9/AO3sGdvLcQU9TOg9Gv84Dzoj+Bm/gYIbdwCyEf46ZCfLP7irw1Q96eoUi3hSh6epDpEdLXwGkWOMnDwFs5N1F7FhOxnbIN/bJ6X2KSGTpMs6BYVBFPPsEYx9mtyUW8IHsD91JcKXxlcn2GbyvWQk/wFaaYoROlIy+H29Xh8ep9V6lINq+9qtxndnMhgsRQZl7h8jNkIhMjUWen6uCFaJX4OOfybGHfyzBgEljgSiaByYIAnGA3sDth/wlFChdF3+rtqU/xi/wEOJ//U9K/wo1M8YJEp1++n7w6Wr8MUa16zjKf7CpUNaE1HsxYURR7OCGCV2aui/hTfg7A9+Mb2SHgYeA4uznBJ0oXzf1IGVNsZSeVQOjZJjPXWYxFLI/ZX9TJt3idMQ//y08A+AmvV1CPMUUItCP2F5d1xzN/asxrrkX+54F5xhhnXGlR0GIPcAih2C3C7O47oMsMO9jFpVya2gzJewMF+8eUnoLC3FU1ZY8pizZ0otYPy8r+aSzT+lXs70o2D/m19m9zJuMI51gh/qvpAAfYiU6nt40zpcuU4pLk+0HgjxQh/goQOowphN5PRkgqVsXmMwv8APg5Z7ODW3lU3M6eF/As50ZVt8HOCiZfGEO4GTyZnpDV0qvmKF+Puj8o2sXJ7FcxcJo/yfy6m/sMT1cJmHCNIQaPM0oXOBPSqJ0f42+Q7ofcV5gDZJXFJ/hg6TnATRBZYSyltZsOATOcy7N8hUNssFPRxaaO1tUu17N3VSGC3J+ZqnrCQsS89DqLmP1iINiRjnJAavC2yASBsv12eIDd0V+R/bDACR4CHkXMNIpY4zN8nvM4V2mONWdxsHEBF3AvF/Ar0X8zdivuxXOAK1E3qF2czS52sQu4KQ6RDgHC/4XoBGeGcAooNkfP0OEbLCg2Rwv2P8NYZBub9wIg2G+auN3KdfwncLGC/QCPME3IOh+hy26t5d9DmtQPZpxG7C/sPz4cba5P/x/OhdiR21Re9HKQtZRSW00pPCOU1QYO8jXQjBbdpOP/PjtyWnP1vFude3X+xfziWf6YtcgwYxs/zcVd5d95klVtLYUEyX6BwwUvZH/IfGSSN8c/5/qYQwr7BdllXz5E0aGf0n+BVwdnsYe/Bj6kacVLnMfdkVi1OMarCiKWhUoAsmZxdnHcFHgBaDiapwvwkOAFoOHwAtBw5AXgkNZf+F18LVmk/Rp3DTrjHr2BvBT8b1wOvJYrCuE+Ja2Pv4JXsIM3DDrzHvWR7QHu4HIALueOXKi7EvanK3SvV/YCpwgjj9kq/E/Ug9iXmYZxIepURlF1qn5yw4GsALSACSYoqhpfpYyrurs9+qhxfvR9wJKrjsJgA5aiyl/SxrOFsNFDTiXmGkUWv0hzvaWRCoBo/2usUewD0kXPrJrW7tU2j4DA4VxQsU82LwLp5sZJDQNtIZaY5A7GuUObAmxnPhISvRiPFNKFIDH+TyA2WH1HmgfIHi5N/i6PsFfjmkBALKKeVLhL7kTr9PE26fy6vd0Rawgscz9vZlIZIuSOyNTrdt6jTeF0wvoyJ3psWcQ9QCca/7uRzuryiqPw06Q+81XoAj9S+M+JO30d+11xP2vcb6DK3ylcTFhmgdOc5jT06ViqASDuAbJqkKJKxL0HsEHs4c1vbkzZrmf/4HuAU5lh4fSozAJED5C29lZmApje/bIyrupuxzLHDxQHw8N0ZJ9jav3Lmmv57iTdxAtPkf4ebmeM23mPwdf2difKyMwQ4kOjNNTo+zbep6B+NLcHPU1J3zPo1cn2zt/uZMEWwkYPOc3dkZbulKaNVz0JZEghBOCUUqKz3dwK7Rx1lX2KOB0OGMdvkz2BLe5wYCQFwAUL/F7y5n+MLxhPzBhlNFYAPEYSXhvYcHgBaDi8ADQcXgAaDi8ADYcXgDw6Rp1Ax6ox2GLICkDIhkUF1LsjIQaFJ3jCSO8YbRU6VkuGLQe5B9jJAasQqJEKT0ubQoeNSNPQYaMgQrL4HVHQj0gpqURQv7U8jncVVxnK585+F6umLYG8r2CBk6wql2T13oRDKV5Ifk1fVF4AdGizUzzbkMIR9hbows5AF18ugf60Dh1VdkZtp47IiqBaAEB94oRNACA29pCVQumvjYh5WFLQCYA+vpxGL1isp4aK7ddbFOpJ4EkWDVY9epxkMWH/YqaCAhaju7tY5KRDCjrY4m8ORoL1AkUBECwor5OL47XYYLFw5sY0AYts0GJay0S3J09XFgKT7wFBXTTGzVJDQ9gtBXkI0I39aQj9iQLDD3MnL5DOVcpTtySyG0PsBQucQw4jXHI9jclo3UzdkvDq4IbDrwQ2HF4AGg4vAA2HF4CGwwtAw5EXANPeW48RRCoALT4NwIW8TeNrX+jZPquhemxJxALQopu4H72crpLJMyxyjNfRdVgozitkj+Q8gR/ZZLqHBvFC0HF28yVeSchnuZZQ6Q5ZoMU97LQ6ky26Ks7/lh0l9pvuoYEQgBZdfsRFwCMcZ5ofcqFiD28InOBu7mODnZoDTEU4la/q8cid+jbOsK3gTzvkGh7jmozDdTX9scQXv4o+znr0QeGv20MBoQu4GvgmAKJD+Cav4+oCg2e4kknuBfbT5Z1aAVDjCuBiALZzlmIvonAus52zgOcUbycXR58rgOcU6W8HXhLRX+LfblwhBOAJ4OWZuy+P7snoAPfT5WZ2cYI9yvT0ZhIXSr8+Gnm2T7Gd92XEoki/kPdFH1N8EWa7gu6hRDwH2GBnsml6iUmlExehBD7EFDdwNVNaf9iqIeAIe6XfeXujftM9NIgFQJyH8SO+ycu5EPWJAak1wCJwQHnOVThaBlOjj+yxcX8W+Qn6Dn8/KjavHjZ4e4CGw8+WGw4vAA2HF4CGwwtAw5EKgO08gLr0Bb6Y0L+oOPev3/R+l2/Q9IqI3wI+VTgv99PSeQB16TY3c/2m97t8g6ZXxtm/DnAXby5QruCFPBxd16Xfxp8X6C/j/ESb0G96v8s3aHoNiCEg9fyf3Tb1KsVVFnn6anK07Ko2fmCIb0s/n0I/4tvKb8u/Of5paWOaLr6Jns2FutQlkXcVq3YGbXMlm+7+XQH2od4dXDd9l/j29FXusF3jB6g3mIUlfoeZVIr0owDs1dZffPeD3EpPdmiptobli5mno6GH0bhbHI/z6YSa++b07QWOeyBb7EArci6p6/Lnkn6I2bPAdcYc3MStGfb3BOfUTyKD5zL/yyO09ghm9IbB+gZgz789rk1N9oCBdhMf5sP0lP29HwKWgDdRfQio38Xr81dMoVoXbkrflL/i+Qvl6EIEsuzvwRAgJoG28wDc6CvAJJPRVZaePQk7VNw9nqHa6BjpKOly/sPC3S9LFBu9av3E5Qsr02+V2K9+akkIATgmZSDGMcVVFnl6O6nAtjZ+aIhvSz+fQj/i28pvy78pft55VVk6IHX+6lKXhFgHWOMKXpajrGZO9qlLf5jfKRxG+Wnesmn0fpdv0PQaEAIA/8jzOItLo7vHWOYvpHB16f/ACzk3sfn7Og9k2LMZ9H6Xb9D0yvAGIQ2H1wY2HF4AGg4vAA2HF4CGwwtAw+EFoOHIKoNsp/MOO92jAmRt4Hhyta4MXZfuMXQoDgH1WLduTaFeyw1qp+AhIS8ANgaus26kx+4ZdLAxUOfLO0ZYUdfvoUFeAMbByMBxxo104aFDjxCzwYTpwBewG1R4lERxCBivkIoc25xCvfZrEyCPktAfGTN8s3z/FtAHlDkvYNjpHhXgF4IaDi8ADYcXgIbDC0DD4QWg4fAC0HBsXQFo+wWhXkAWgPrrbCGzhMz2Pd9tViQHEB4VIQvAvugzaNhat2D/6qCzOQqQBWCFeF/fIGFr3Z79PYRrDxDSLnzKISz8qSHYqxfDmP1+DtATyBZBK6yyomxbAbCa+5SDm/v2mP37jPRVPwfoFWQBMPUA+xLWxJ9yQjBfuFM80qWdSV+Vusx+Pwj0APLewPqO3kPmmFee11N8M8iHybJflQfP/j7AtQeoD/sRTuXY39aE8yiFYXoLCFiNPkWo2O/nAD2APAS0WaU9lJ1rGHX6+W+PmvD+ARqOrasL8OgJ/h+DVadYm94w9wAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNS0xMC0xOVQyMzo1MzoyOSswMjowMLU6Y9MAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTUtMTAtMTlUMjM6NTM6MjkrMDI6MDDEZ9tvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==)}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAQAAABFnnJAAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QARaw7li0AAAAHdElNRQffChMXNR3//v8QAAAalUlEQVR42u2da4wlR3XHf207sQjx2iHEXuz1rnASbBIw2RlbEY9IWMi5k0ibAPI6dwcFCDg7DoSnyM7gzPiDZzFzh8T4gaNdyybI0jyy6wCxpfgOxhiZsALM7PKMQxJsZnHYhQ8hLB8iB+HOh+pXdderu++de+d2/Ud3bt8+VdVVdU49us6pU8G1eDQZZw06Ax6DhReAhsMLgIw2Ie1BZ2Iz4QUgizYrwEqTRKDXAjD49tMmrBxzBdiHTgTilAdfxh5CFgBzBxgmfybY2o8+fhg9va0NY3t2zMRqJRDsX41EwJTyCPURWQHoRQe4r0YKcdy4HZZHnbgQELAKrBIQGFKuU8ahQ5CsA8RFjNuBDiEUqicLkU5QKX7cynTPtz07rJl315RtZdxCSHsAcwfoClMbtA8f4ukmFppTqdc2TUNQNuV6/cyQISi9EmhuRaY2mFZq1bZjT8HcNs15N/eBacq2fmZLobwAmBEOvGrarFQWMPMQFKc8+DL2EL0WgK2ONiujxF47vAA0HH4lsOHwAtBweAFoOLwANBxeABoOLwANhxeAhsPbA+TjDjr/m4wy9gBuFgE2ZUzbaA9gfoKdPXXsAezqcJH3kRKScvYAbhowcxXqGbRPc+2ato39ttRXct/61EfGGqBoDyCgXw2PQ5n0bXq6LbaLPYApd+an2+ObEUZpx98jAdkeQHUtY9WpF1CHsbdPF3sAU/tzy5tefEKrtUGZJ20JVFEGmRSuw24PYBIuW/8Tl9yrgw0YfOXUtQcYdP43GV4d3HD4haCGwwtAw+EFoOHwAtBweAFoOLwANBxeABqOcwadgaFDOMBV/vprpaXzf0696H2phEHmILTmoLoqyB5zACWXh4AQjLp+F/8AYQVKWVR9hi3/gvWBMRW7cFSN7VYCl1Al4p4lBbAVP3AogD5+4FBBLkUIDcoel/wFBpr8Xe4ZMcVeA+YSmgUotMQGWyOW8p8dAlyLr7PWsVdS0IMOPjRqIm2jaJ0chEnsQEnNPl31lLh56fMQGujmtNPSmZtBNpcBlJ0Ehg6txxbKRTqrtXE35gYOqZsY5JJu1RowNUGXtO11UKCXeQ1MuziXUGqauQu0S7A5DVsX69ZF21qQ7ekuk8iqsIu4nS7loEwP4NZ11pvlBo69TL/yGBg7WLd0A4cwVWEeps0DoDLuOZpAg8Ogc7CVn18hrl8JbDi8ADQcXgAaDi8ADYcXgIbDC0DD4QWg4ZA3h8bOUgcHuz/wfsKlBlw0otXi2fZGuz6lFFIBiDdGubh7r1YBvUO1tGw5d6sBk6vZVBvXLh1b6CnjP30Z2pVrIMzlElBvDjVv4XTRaLcV93onArq03FxD6PPvVgO6Z7Rz22vbpWKnJbD1QPW2phc26Mpbw1zcqdu2YOs2iLpZ0thzoEvH7sLdnnM3h/RqjUGRtUGObttYnjJHtT8xlFI2K4x1CuugGKasALhXQFAirlsOzFXo8nz73n79822xbQJgrwMzA+0CYBYgjQCUewtIK6CKyiLIpKFOPZS+Tc+vgjTfVecQpqfvi6jxCK72IGB6fhxTPQewpZz6bjDtb87nsqQ9gKkC5AmMqfjmzJmKaEojWzS72ZeKBXYBNJVgNedAYrV0Cm4wsXc1OfbGLZeUHQLczKlCq4sI8yhYJ7Zb9arL4TYG1zdpM6VT/VAb+xxACe8fIIu29cSkkYMXgIbDLwU3HF4AGg4vAA2HF4CGwwtAw+EFoNcYpDq7AvL2ADaY9FUuRW/X1Hf3G/VzF1gWu4es7EV7ABNMGnOXVcJYY7fPYYOpHnU3V5m3hwfW7a92Buvim1IfENKFoGy27N5+i4uN2a2R1U7/dl1oBpPGzhY70IbL3tVpO02bR0MnqntJNwXqOYDO6MCsr0qHhipGC6Ll2M2m9D4MQlx1fUGJu6rnqp5v39k8lMifF5BWYdkTuPNDSFAibkx12wJt37xd3YWEiY22HsI9ZZOPgE1G2gNkFYVVsmY7ScCubK07OgaZHkTdQ8jfqhC9acWqJ8i9x5CwXx4CVpNMqTpw0cELcy81Vo32AC7afrt7CDNSWwC1SYW56tNBSO9dJA4ZlKRmQ1Q1qOkL1NrAUNuBuyhLdZPAXihb3awWq040XSaRgEVAh4a5LvDqYBlD0zVvFvxKoIyGsd8LQOPhBaDh8ALQcHgBaDi8ADQcwycAreHSlo068gLgpss2qWxCJ6ouRIvupryKDdoPwtCgnLt4F3fSARM18tMlFpKWMVxVl/UpRugE8DqQBcC8Sm1e7Y5bdYuuUgTCZKFUvXdPdP0TSYiuJn58Vc2perb3cTtqfsSRCoDs7r2IVB+uc5keEETsX1M+y9y1i65/jQnD3tn46ernyxYF+VTc3Ec0DrGv4LTKzB6vbZqsmP3Vx/E1J1fOOm29ziIgtlZI6SN0BHwdZE3Cgtx/FfSmDG4GEXqjspge9x86kwx1Dm3uE+TWP2JHwNdB6i08W2V6ByP2Uy9cj5XQ0YUIhIV5RKwIVnvll/PTK7fyDUCZt4C0inU2ebYjmUz0iYTaBYLCPCLIPF01EJntiWT3ER4J5PMCbJZqJrPLuidZrCVpu7xGBo73YqziZ/1KDJtBSKh9h/DoC4bt5FDfPW8yhk8X4LGp8ALQcHgBaDi8ADQcoyQAs8lKw2xf0r+MsejvskEXtXcQAnAoqrgNDlVO6VGLpt+GkCcka4GyTJxlPrmeV8aerSUel/EU17LOOtfylFIEZq253x9R92ueoafbYsK9uT/zExIuiXWAkId4EjifqUzg9JXsUHL/MDdqkk4XiY6y17CzqJi6wBJPZlgIy7xJqtz5XPg5DpagyzlU5W4/h6XfU9wj/R7jWhYYB9aZ4RGOa2tA/QwXZ9L6kz9th2KLEGnN28qYLPnFArAIwOek4GuZxIsCcpJdmuo9CkoRCBlPrtcVRfwqV2V+ywIgNAGTCS2/RSxkThKBOea1+3d1yqxx6Xc+h2OsM84O4GV8iHGNAJwC4EUVdxiFxEvagTMlG8IsAHkRDyBdCIpZ380HiPAkcIIf8ylD9sei773aENsMsZd5UhKAPA5L278PS30VwEFIRGCOg7keIa1AfUVu47Hk+hplHnZwEQHPN+TyLw00cw9oVscHilTKiVjM/r/hA9nb6Upg15LACX5cCCNn4YWRLi9U2PMI/Koh/Um+anz+46Qq48M8XhCAVASKnb9AK/ddzN11xpzO8E/cCbybGWX808DTmesi5phPPpuLmP338TxZBFyXglXsz+MFAJzFc9oQFwBoJii2HiAWATjM49owAWgneVfnvvPYxsejq7cpqJfQARaAGTrsKQwBeU1q1W2mdi8JthCf4K2Fe4L9R3ke8E6AaNAvoQsosj9fwAusafxScjVeoNl6ALgsYvzjXMZTCvosT3EIeJxZTR9gxi/z7uQqjza7eJD9zABnEzLD8w0GJXMcVDJpV+ajwxg22EK8RSEAUxwG9nI0mkctMi0I1ZVBRfl+vjXOndH3uIJm6wEE04UIqF7DZiW6qhfYkftWVRHMINq5PMTsYgEy7wULmmFAYL5GF79eM4TapuMeiEQAMuw3CcBc5rrY6RTZ/zn+RvpVhLlLNPcAc4rXvDJ0iIeo9DtfRfcAIb/AfOEVUIhE/k4nVzrbJA9uyHyKWE7ecmC5Ygg9YhGQ2D9M9gCzwEszv5+s1I3XRQgK9vcydYHBqL33c1hm/zAJgMdAMEq6AI8K8ALQcHgBaDi8ADQcXgBGC49l9BlOkAWg5bAxWw+XkzfdMKvUqM9ldNnFt/xDhNJf3rLhSI5+RPHcrLZ8fx/oAJ+31E8nt75QBq+N/sxYYoml+Ef2NbBFlzlgXmGbv8EbohWoR3mEFzOlVOc+zV7gKC/mqpyyFtzffWPdvhx+jluiuyK1mxX6vqPJr72F+K76eLHCt9AXehwmAJYkdTdAhwNM0AUm6Obf12nRBY5yPUfYC8r9E99nB/AMlxpqdylaTFrmc9yXFQDBfqFNK4pAyD6LN3DbWqHYT/hJ3sgneSMPsUdTQbMc5BBTBZ1eeuSq+vBVl+Pb/4tL+CEX8Qw7NJtPZ+gQEjDNgpYOGOhf5gzb+F0lPa7+ZWCyZA3G1KOJuj1LP1JQwh/lesXzDzHFMvfTje0tsurgeDl1nrlKjlqyW7rUmsNb+B4bnOAU6/xAGWKWeXZwI8/0YR3waS7mu1zId7mE72lDibX0GSMdWacu4QzHteqauPVNKqkTUq3pNsiprS1+zeEOwB8A5/FmAFqspQLwhLSaPs8cT2jVpjqsYXPmfDMPsYfP8Pt8ntcqjMtmmecwU31hP7yYf+W3+A9+k2/wVoVK5V1AbCw1rYgf0wEDfRtjGsOXJYnx+bX8DgeS9MUW2UXlU9S4hn/h1ZnfX1SYtLwd2AnsIWNvFQvA1cTGFOL7YF9YcAvf47/5Eqf4EhsFasz+OeOzQ4M+fCJxT6Pqgb7NS/kWv8G3+O10EpSgzZ3E+v5phfInpZ/Nzw30dA4gIx17Bb5Qsu4mcmXK9xCvkWrlNdrn5xpodhIYt161Tdo4+7mRt0fmHEXpDKW4xRG2aLYZFOgm9uddQKjGyFgA1pT0t/NBZriN9/Nh/o6PSvTJgkjIKqG69JT9+alfilZuCFgz0HXUZxDq7jx9iclo7M/ZcroLgJuX/hbxUFB2DiEYrG/98VtADNVbwETiokYtIDKK7ykf4G+NuatDDwiN7LdPo1MRUL0B3MZ7eYDrgSNcx+28X6IuMclD/JTJfNy8k6j0Xb4sjhIS0qVLGFkG64uoS93U+c9zc+bXzYX+ZArR8XejMkwp6KbfsE/Lvvr0ZSv7hZGW6NgnSEy2JKwxAZoN9D/j49G8/3o+zs8UIfYwyXI+rqs6eLrG8oRHGXSgxOTPHWKIKoigtwdoOLwuoOHwAtBweAFoOLwANBzNEwChNla903QSVe67HNI5T3l36I6HtyErANNJBVR/DanuH6AuWoTJdq3jWquGz0bv/wcKIvARDnAP9/AO3sGdvLcQU9TOg9Gv84Dzoj+Bm/gYIbdwCyEf46ZCfLP7irw1Q96eoUi3hSh6epDpEdLXwGkWOMnDwFs5N1F7FhOxnbIN/bJ6X2KSGTpMs6BYVBFPPsEYx9mtyUW8IHsD91JcKXxlcn2GbyvWQk/wFaaYoROlIy+H29Xh8ep9V6lINq+9qtxndnMhgsRQZl7h8jNkIhMjUWen6uCFaJX4OOfybGHfyzBgEljgSiaByYIAnGA3sDth/wlFChdF3+rtqU/xi/wEOJ//U9K/wo1M8YJEp1++n7w6Wr8MUa16zjKf7CpUNaE1HsxYURR7OCGCV2aui/hTfg7A9+Mb2SHgYeA4uznBJ0oXzf1IGVNsZSeVQOjZJjPXWYxFLI/ZX9TJt3idMQ//y08A+AmvV1CPMUUItCP2F5d1xzN/asxrrkX+54F5xhhnXGlR0GIPcAih2C3C7O47oMsMO9jFpVya2gzJewMF+8eUnoLC3FU1ZY8pizZ0otYPy8r+aSzT+lXs70o2D/m19m9zJuMI51gh/qvpAAfYiU6nt40zpcuU4pLk+0HgjxQh/goQOowphN5PRkgqVsXmMwv8APg5Z7ODW3lU3M6eF/As50ZVt8HOCiZfGEO4GTyZnpDV0qvmKF+Puj8o2sXJ7FcxcJo/yfy6m/sMT1cJmHCNIQaPM0oXOBPSqJ0f42+Q7ofcV5gDZJXFJ/hg6TnATRBZYSyltZsOATOcy7N8hUNssFPRxaaO1tUu17N3VSGC3J+ZqnrCQsS89DqLmP1iINiRjnJAavC2yASBsv12eIDd0V+R/bDACR4CHkXMNIpY4zN8nvM4V2mONWdxsHEBF3AvF/Ar0X8zdivuxXOAK1E3qF2czS52sQu4KQ6RDgHC/4XoBGeGcAooNkfP0OEbLCg2Rwv2P8NYZBub9wIg2G+auN3KdfwncLGC/QCPME3IOh+hy26t5d9DmtQPZpxG7C/sPz4cba5P/x/OhdiR21Re9HKQtZRSW00pPCOU1QYO8jXQjBbdpOP/PjtyWnP1vFude3X+xfziWf6YtcgwYxs/zcVd5d95klVtLYUEyX6BwwUvZH/IfGSSN8c/5/qYQwr7BdllXz5E0aGf0n+BVwdnsYe/Bj6kacVLnMfdkVi1OMarCiKWhUoAsmZxdnHcFHgBaDiapwvwkOAFoOHwAtBw5AXgkNZf+F18LVmk/Rp3DTrjHr2BvBT8b1wOvJYrCuE+Ja2Pv4JXsIM3DDrzHvWR7QHu4HIALueOXKi7EvanK3SvV/YCpwgjj9kq/E/Ug9iXmYZxIepURlF1qn5yw4GsALSACSYoqhpfpYyrurs9+qhxfvR9wJKrjsJgA5aiyl/SxrOFsNFDTiXmGkUWv0hzvaWRCoBo/2usUewD0kXPrJrW7tU2j4DA4VxQsU82LwLp5sZJDQNtIZaY5A7GuUObAmxnPhISvRiPFNKFIDH+TyA2WH1HmgfIHi5N/i6PsFfjmkBALKKeVLhL7kTr9PE26fy6vd0Rawgscz9vZlIZIuSOyNTrdt6jTeF0wvoyJ3psWcQ9QCca/7uRzuryiqPw06Q+81XoAj9S+M+JO30d+11xP2vcb6DK3ylcTFhmgdOc5jT06ViqASDuAbJqkKJKxL0HsEHs4c1vbkzZrmf/4HuAU5lh4fSozAJED5C29lZmApje/bIyrupuxzLHDxQHw8N0ZJ9jav3Lmmv57iTdxAtPkf4ebmeM23mPwdf2difKyMwQ4kOjNNTo+zbep6B+NLcHPU1J3zPo1cn2zt/uZMEWwkYPOc3dkZbulKaNVz0JZEghBOCUUqKz3dwK7Rx1lX2KOB0OGMdvkz2BLe5wYCQFwAUL/F7y5n+MLxhPzBhlNFYAPEYSXhvYcHgBaDi8ADQcXgAaDi8ADYcXgDw6Rp1Ax6ox2GLICkDIhkUF1LsjIQaFJ3jCSO8YbRU6VkuGLQe5B9jJAasQqJEKT0ubQoeNSNPQYaMgQrL4HVHQj0gpqURQv7U8jncVVxnK585+F6umLYG8r2CBk6wql2T13oRDKV5Ifk1fVF4AdGizUzzbkMIR9hbows5AF18ugf60Dh1VdkZtp47IiqBaAEB94oRNACA29pCVQumvjYh5WFLQCYA+vpxGL1isp4aK7ddbFOpJ4EkWDVY9epxkMWH/YqaCAhaju7tY5KRDCjrY4m8ORoL1AkUBECwor5OL47XYYLFw5sY0AYts0GJay0S3J09XFgKT7wFBXTTGzVJDQ9gtBXkI0I39aQj9iQLDD3MnL5DOVcpTtySyG0PsBQucQw4jXHI9jclo3UzdkvDq4IbDrwQ2HF4AGg4vAA2HF4CGwwtAw5EXANPeW48RRCoALT4NwIW8TeNrX+jZPquhemxJxALQopu4H72crpLJMyxyjNfRdVgozitkj+Q8gR/ZZLqHBvFC0HF28yVeSchnuZZQ6Q5ZoMU97LQ6ky26Ks7/lh0l9pvuoYEQgBZdfsRFwCMcZ5ofcqFiD28InOBu7mODnZoDTEU4la/q8cid+jbOsK3gTzvkGh7jmozDdTX9scQXv4o+znr0QeGv20MBoQu4GvgmAKJD+Cav4+oCg2e4kknuBfbT5Z1aAVDjCuBiALZzlmIvonAus52zgOcUbycXR58rgOcU6W8HXhLRX+LfblwhBOAJ4OWZuy+P7snoAPfT5WZ2cYI9yvT0ZhIXSr8+Gnm2T7Gd92XEoki/kPdFH1N8EWa7gu6hRDwH2GBnsml6iUmlExehBD7EFDdwNVNaf9iqIeAIe6XfeXujftM9NIgFQJyH8SO+ycu5EPWJAak1wCJwQHnOVThaBlOjj+yxcX8W+Qn6Dn8/KjavHjZ4e4CGw8+WGw4vAA2HF4CGwwtAw5EKgO08gLr0Bb6Y0L+oOPev3/R+l2/Q9IqI3wI+VTgv99PSeQB16TY3c/2m97t8g6ZXxtm/DnAXby5QruCFPBxd16Xfxp8X6C/j/ESb0G96v8s3aHoNiCEg9fyf3Tb1KsVVFnn6anK07Ko2fmCIb0s/n0I/4tvKb8u/Of5paWOaLr6Jns2FutQlkXcVq3YGbXMlm+7+XQH2od4dXDd9l/j29FXusF3jB6g3mIUlfoeZVIr0owDs1dZffPeD3EpPdmiptobli5mno6GH0bhbHI/z6YSa++b07QWOeyBb7EArci6p6/Lnkn6I2bPAdcYc3MStGfb3BOfUTyKD5zL/yyO09ghm9IbB+gZgz789rk1N9oCBdhMf5sP0lP29HwKWgDdRfQio38Xr81dMoVoXbkrflL/i+Qvl6EIEsuzvwRAgJoG28wDc6CvAJJPRVZaePQk7VNw9nqHa6BjpKOly/sPC3S9LFBu9av3E5Qsr02+V2K9+akkIATgmZSDGMcVVFnl6O6nAtjZ+aIhvSz+fQj/i28pvy78pft55VVk6IHX+6lKXhFgHWOMKXpajrGZO9qlLf5jfKRxG+Wnesmn0fpdv0PQaEAIA/8jzOItLo7vHWOYvpHB16f/ACzk3sfn7Og9k2LMZ9H6Xb9D0yvAGIQ2H1wY2HF4AGg4vAA2HF4CGwwtAw+EFoOHIKoNsp/MOO92jAmRt4Hhyta4MXZfuMXQoDgH1WLduTaFeyw1qp+AhIS8ANgaus26kx+4ZdLAxUOfLO0ZYUdfvoUFeAMbByMBxxo104aFDjxCzwYTpwBewG1R4lERxCBivkIoc25xCvfZrEyCPktAfGTN8s3z/FtAHlDkvYNjpHhXgF4IaDi8ADYcXgIbDC0DD4QWg4fAC0HBsXQFo+wWhXkAWgPrrbCGzhMz2Pd9tViQHEB4VIQvAvugzaNhat2D/6qCzOQqQBWCFeF/fIGFr3Z79PYRrDxDSLnzKISz8qSHYqxfDmP1+DtATyBZBK6yyomxbAbCa+5SDm/v2mP37jPRVPwfoFWQBMPUA+xLWxJ9yQjBfuFM80qWdSV+Vusx+Pwj0APLewPqO3kPmmFee11N8M8iHybJflQfP/j7AtQeoD/sRTuXY39aE8yiFYXoLCFiNPkWo2O/nAD2APAS0WaU9lJ1rGHX6+W+PmvD+ARqOrasL8OgJ/h+DVadYm94w9wAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNS0xMC0xOVQyMzo1MzoyOSswMjowMLU6Y9MAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTUtMTAtMTlUMjM6NTM6MjkrMDI6MDDEZ9tvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==)}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABLFBMVEUug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8p2Tp3AAAAY3RSTlMAWEd8IjKY4b3Ld2acsomqpVpOeudAQGVmhVOLRpGUY2NhTaBobXqbc6W/fcC8463l6eSBjl3f3eC51tvSxNXU12LacP4Nzplp+DgqFhzFedHjp4FYyJPQ2K/wzZCniLC7x6vHwZbrAAAAAWJLR0QAiAUdSAAAAAd0SU1FB98KExc1Hf/+/xAAAA+BSURBVHja7V0LYxvFEd67iyQsxycZJGgDCYrBKSR1WjdJX5RCGiJICzFpmxCamFLm//+H7t5rZ2f2oeNk6Wzv58T23D7nu9m9md09WYiIiIgeIIFk213Ysv7QcwY6dy8Bv/4JZkBl3iwhxAJBwSSA9sdIV6kJvgLAGgBPA6R88etGTYJaICcgof0x0ukdZATQ4rwBljnZIAOs/3YVPOmcQUFy+2u3ZU68mdYKZsG8i/QGcwvx3mFuAZ4ObN4C7KSwLvoIYKWBmYindmKCm58DVuDjTJ8CdAht/imwdVx2RygiIiIiIiKixzhzT3DLflDCojWgzntCS9DsRoCfsAZ86wFsQUjWvlFKLB1gBLAMNLsZLiasAUqAJ7pUtW8yGGL9t/fYk2xZUUk8xUVgCRAKAja2HMAtWNhs1ojWVlgPSMzafCNq2xZgReLpcff1AD5CtjoHhHHRnwIREREREREREdtDN8c/6JoG6+8ceHSsAPh2KrTI3bl//DgA61CgNvBf4eqRZOBZzOLgSrM34O2AJdXfvq0GH0EsnVXGNODNAUkER2LNKKuPFABX4grt83AZQgTwBSDwaxAu7sliKljlJmtWZnZaoZc/aw6vCXkHkLBZCGHcUtxvouEW2qgXHOOWM0TgTw/USG4HBG9IoAEQ1jbdqdt+Cpxx+fBjMiIiIiIiIuKyovux1I5uRmI5je6u0uaHBreqAs2368BKDfjjeba3aukAShd4c2oFr05ldgcnYN3e551kVbrbt8S3VAFf3WC9qYgfgbcneW8th90TLwGBs+HCamY+Brz8JZblnsDygxHO1uFwfYHtnRMLYuGwJRpnr2yIFTpgT7UyTGqn5S024C7OCGA94N0z0+kQCxNg74DzFq6UzAJmNwHWvXW+Q++8AWwIkCESHAL2UZ44czCGvYcDeB6LgQmzAsF26AMEkEmQpLJpKbSCQ9u33CN/sr0XDgJXCd4DFsAz93s9YNvvx0RERERERPQaZ/sU544KeVXWUmK9jkW4OmiXvaX+wK/g6M9aArO20n450ZhmBqfIdnb8G1/tAey0uOk7lnuTnrfDA66+JQMwhYURfXoJAXudXQlwv99dJHk+H8C2nmHuV7P++oKDuiy4iq+dgDrcdBGQWMJh3nVPPMXTbbvTQFLBnxnWSEFi6SELdwGbKHjHsKU2uiDiPbNiJYAOibWHd3pSU4sJLDoz3++3pBPBNuwxIYyfACEhwrvDXNFh0Sl5YyQQvYYOAYXWH/zrRxcQF12/iIiIiIiLjfScP8gsbgf4tquoN/xz9O/TVoB1m8X0vtLgbiCkpFKvKESvNkPY0WWB4hWlagopCobM+C6F0gJ0fmHdAmcE9mXYAI9e6PF6qb8RnRkEQEmCEc9SEeubQL8IsGy/c4JSIlMC8E9hid3QtaQZYn0ZAitYAMtvntgoCXJYAD2vUNPdG/2ZjmwOIDmsKzSpthI6B1gOyPTG/HWfDAn/cEz5KH9qVwgsvyls8LMyWzDA6Wh3k+gz0IekhwR0RRv9IyIiIiIuFzLlJ2Sr578ykLiyqd4NZedGQ1+ONwKeG+yUrpJLxYwmZ34+rogxwFhcIRWgErtS3BUOmSaKqxVIgVol2MvzIXL2it8NQgq3aMJPP9fitNJwaujb9JjKbGdrt0qvez0Yw2AA44HRAcGCCXrW1iqUFya2FpsgLc/ztAQhZGQQgBgAZaID3eKOQYCsel+icaWhtgDXfndZna5wAIM333wLMAGz2cz/BobABIgAAbsGgaBURxckIQkmpOygSfh8/vZ87rIAGAL6oRqu5gBAHTR6PC+KzzUBb77zi18aBFy7do0dj3fL5AIlQOn/LibANCmQ+ps2Bu+l6gs1eE3BaQH7SnUY7ut1gKyw/4YAVT9aYiur0xXKIXD9Oh4CMyFvgfzeFMiKr59JgNL/6o133QQk5IK8kiT7CQph4P3Fwj0HwL5kQOqPCSj+NQQUkyAi4KYqffNmfeGgnAQPiDqoACeAvaIhCAEf4PWJyfSq/J67CKANwocFUIOHh4egTZRZQLY/HMpveggUspuAwxLVhWQM74zHt2CM3xFCQ0he+FXxhfUdUAIGhAAwLGCi9fcQ0FT3UQFicoOGAGoB2X6B+hYxGdQcOwRjTI7HzVNgXLc/dloAJyA0BHB6OQfmTeaGgMxsr6mu9APgDeEAsQD62MtY/ZPyHuAqMv3oBq5wYNL7uBA/Fo4LlICCgVysD1k2LdDC12Mcmq5LODu0Wq6h2F2r/hERERERPcft2/70FLzr2gC2o48EmQ537xSPqTu1WAXbTYw9qeRJU7Z0TXZXloX4NelP7n2uyWhrTi7JxzbWP8s0AyPlRR6Nh9oP2ZFdnuw0jpyVikxfv1O54jUDsrAC2WkyPZuxcgVXlsv70WiQK2cubZ7tqeJ2gu/pXYC7RH/luC20/so3b6JfejqcOWYCfiO/9nCHMnmfM5Tf2BuksYX4rTgWv8Px7VgKY0MWpvz24G0kq/5Pp64OQuXsV3JtcMjiZGenae251isWTXTFCShXBxAB927ef3DjJlo2yqR9Z7g/XgJ+D3+QX3/ECirXn8g4+JCx8QClT80OVs58am/vdi2ieWAEe1PJQSnsVM56tuMioJoFkAXswZ/gtu6Q1B8t2YUt4M/iE/EXvaR0SCzgkFjAobKAuZanRuwhR0A5STXxLWnv01L6tOlgEcxrAygC1AzpGybg3s0PPpRfdv0rTx0TkEKx6lTLf4XP5Nfn6MSEMcYL+S0io/Ri/Ep86CCgju5So0PEfgSGOcvDYCgWRrxICMgIw0T/5kSESQCSH35ybXTtb48qeb+ubnc1eWrePcGGQCVj8e5dLSvbb9Y7rQQIAnlBrQ+6j9CQRe47VYf1U0AdMRKuIaGGO6nOLwuiPw/gU6y/uP+FnP4mX9xvCJDjP/WUZ4pO2CRqLrKyRX7iB9BlbyLbPgHGJ0+p/vQxKMpDXTq52BG4mjflgdVgYCzOIfIWAb7hA0VEREREbAFDvDCtXDk4ZHke61/P+GhhsRXhffpBlx6ksJTfl/jRfATI1XwXvvzyq6/gEerOntK/gPzl1g24dw9u3KrTy9gNc1liSGR6oQneqN80htFw+MRgwP/hYiFMZV1jFG2CZGBJvfGF9rz+rvAP7Youh7KCKQtumnQjNmUvWVfBq84jXcdMBjt6c7BM0MGVcoyX8MRyWvZnEqBcLVRC6V78Nw1AE/D1N48ff/O17s9QQD7V7honoIxG6p2mYjEKHXhIRblUkWpfO1PrMYiAB2qvDje4VKy7CKDhJVeXpJe7e9qiloWs9U/N/FDY+m5T/KlMGiF3FQbkQIZZvtgHRRlABZ4ynhPYAiYTfF59fHKiwktNgNRfoCUwyjgNFuwiMfGm/7UNIP3LO1jPAZ/BrgQ8bTLkuVEe5n4CDuSvB+pfnawMbAgLZAEken3wYP/BCRw1FT5RvRutjwBqAd8W8jNTf63geFlgYRbXhEH63nw+Nwio7mz5Y7FYvP9wsXhIDjwsnXPAyYkaAHgSfDIcjtY4CZI54NtqDqgYUPrnRjh6S/V3oYsv9+AIMaAqOkDTXgYmAR99VP0jBuKcA4bZyckJnGAG6GNw3U+BZ+IZjv9p6LacTPSClZwB5b9UMwDGj/rX3foCfQwqiyjhmANgqIAJsN3DLgQQpMW9f1b7AZYzguYMK63lSapmysd16j//9W/zY11EMWtU0iBTS3pZfWCjvR+wfRw8f36AxOme4ip93DBGO2w8BiMiIiI6Y4hPR7/4Tk0x373Ydqc2iJcALxvh+3rW/X7b3doYrit1r1fCi/KJo75rG5jBDBf4j8WZEes7eTYr+J91r2hVvFQBVG0CrzQBr5ocxG2w+RG5poRtPdALVIaZeqbPvPWfIa6XCl9HjVPXg/UnpRdybRTl5i1SkF6YwuvBa3N3ljW3SQLkDKBC6JdG42YfJnhjrNRfby/mpv62o7vTdIr1ey2/vTYyzLZIQF7f79xNQE6GPMBxitOw/jYCUsNkioPmAyOcNgjIYDabbc7T1Qq7CeBlkP5Sd2NS7GwBm50ECwMoX5opdHiuCXiOMuX+CnB65zlgs9EanfTua/E+zkQKEQYMfjo/BYTY4BQ40wqXPTitxVOsI50DsJSv//T5VoP1H9SyLDz9YZt96NNqRURERERExBkjB5941oARcWRWekOiC3Z2qP7gEc+eACAUGAQUaSnOkI9S9c3IoELmWp6UmdzhbU5855wlQ7FDtkECTApMAsq0ps/F7ZHq0QwGATidE0CDRb4YYB7G3QgB+DAwJaBY/qg6WfwY4T5XGTABI4tOYY0NcZ1/P2AlAjZoASsRsGEL2OwcQLH1OWDDTwG+3rHlp0APsF0/ICIiIiLicsP/HtlFR/pfAT8+RGc3pZdydIk+J1e9Rwo/5uh9hnH+1PICRe2b0M8/aCv3Dkv4nyRAoNPJipURY4C+WarP67eT+4YUjoX4MRfH+G3r5UJGtOb7tVqRwXwg/zXHt2FunmdXMpjyQH0NeureZtW5+SN9h8ZTUKft9xwEFB+NluzXn68HCSSJulDL++pLf/6eSpdXkv2eElBYgMQxvuNqXlgap5MRAY9KNCbeUu4dRsUzcIrOvMhgdAiLoYOACzcJjgGOj47xtF8uR+iQFNb8Fy77hvFLeX9ensu35iMiIiIiOoO+HxCS6SGqtnLb9rrKIdD3A0IyPUbXVm7bXlc5eP+hwYtVZHqQsq3ctr2uchD0/YBXuoJaPlW+4Wkll0dpi/TnjQxUFs70Vzr9lbN9Ad50daKTpAvaf4Hfd/ABdAPQyHUlotoNPj3Fu8Oh/Dyd5ddb5LZ0vHtm/wlGf8RPP/0kzP4IcbLi/hqgd3odshq9p6TDuEMsv2AK+fMTAoL9EfV/h3xS6r8+AqboM+gsBNh+tlEo2L7FQnwWcCJK/VcmIDwE1KdvtTHx0BCBEIHeISVIfipLBk6a/EHQ9wMsk1o9CepJjE5SQGX3pGqdJGn7dJI102t+XLIaA40cxKYfY10fo23lMDbtyHR1pNrKYWzale3qSreVIyIiIiIiIjyoHIczk3sP8vcDw/IFJAD8BBRfWEHhJ0DQP3rYb5QfSQgemRAE9TeXTP78Xd8RLeDSzwGX/SkQERERERERsW4k58cTCJ6ChKz9QdeE/H2gPiMRgb6uQAC93+dJ/3VYANX3XOlvWkBxvL34chDQ7L2Z+hocqtIXdg7Iapj64zte6n9+bKCrBZT5z6/+XS3g3Ovf9Sng0P/CzgEBaP3Pjw0ELaANlN71/4iInuP/VPKCJpghgS4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTUtMTAtMTlUMjM6NTM6MjkrMDI6MDC1OmPTAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTE5VDIzOjUzOjI5KzAyOjAwxGfbbwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABLFBMVEXNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgrNCgoYgUqcAAAAY3RSTlMAWEd8IjKY4b3Ld2acsomqpVpOeudAQGVmhVOLRpGUY2NhTaBobXqbc6W/fcC8463l6eSBjl3f3eC51tvSxNXU12LacP4Nzplp+DgqFhzFedHjp4FYyJPQ2K/wzZCniLC7x6vHwZbrAAAAAWJLR0QAiAUdSAAAAAd0SU1FB98KExc1Hf/+/xAAAA+BSURBVHja7V0LYxvFEd67iyQsxycZJGgDCYrBKSR1WjdJX5RCGiJICzFpmxCamFLm//+H7t5rZ2f2oeNk6Wzv58T23D7nu9m9md09WYiIiIgeIIFk213Ysv7QcwY6dy8Bv/4JZkBl3iwhxAJBwSSA9sdIV6kJvgLAGgBPA6R88etGTYJaICcgof0x0ukdZATQ4rwBljnZIAOs/3YVPOmcQUFy+2u3ZU68mdYKZsG8i/QGcwvx3mFuAZ4ObN4C7KSwLvoIYKWBmYindmKCm58DVuDjTJ8CdAht/imwdVx2RygiIiIiIiKixzhzT3DLflDCojWgzntCS9DsRoCfsAZ86wFsQUjWvlFKLB1gBLAMNLsZLiasAUqAJ7pUtW8yGGL9t/fYk2xZUUk8xUVgCRAKAja2HMAtWNhs1ojWVlgPSMzafCNq2xZgReLpcff1AD5CtjoHhHHRnwIREREREREREdtDN8c/6JoG6+8ceHSsAPh2KrTI3bl//DgA61CgNvBf4eqRZOBZzOLgSrM34O2AJdXfvq0GH0EsnVXGNODNAUkER2LNKKuPFABX4grt83AZQgTwBSDwaxAu7sliKljlJmtWZnZaoZc/aw6vCXkHkLBZCGHcUtxvouEW2qgXHOOWM0TgTw/USG4HBG9IoAEQ1jbdqdt+Cpxx+fBjMiIiIiIiIuKyovux1I5uRmI5je6u0uaHBreqAs2368BKDfjjeba3aukAShd4c2oFr05ldgcnYN3e551kVbrbt8S3VAFf3WC9qYgfgbcneW8th90TLwGBs+HCamY+Brz8JZblnsDygxHO1uFwfYHtnRMLYuGwJRpnr2yIFTpgT7UyTGqn5S024C7OCGA94N0z0+kQCxNg74DzFq6UzAJmNwHWvXW+Q++8AWwIkCESHAL2UZ44czCGvYcDeB6LgQmzAsF26AMEkEmQpLJpKbSCQ9u33CN/sr0XDgJXCd4DFsAz93s9YNvvx0RERERERPQaZ/sU544KeVXWUmK9jkW4OmiXvaX+wK/g6M9aArO20n450ZhmBqfIdnb8G1/tAey0uOk7lnuTnrfDA66+JQMwhYURfXoJAXudXQlwv99dJHk+H8C2nmHuV7P++oKDuiy4iq+dgDrcdBGQWMJh3nVPPMXTbbvTQFLBnxnWSEFi6SELdwGbKHjHsKU2uiDiPbNiJYAOibWHd3pSU4sJLDoz3++3pBPBNuwxIYyfACEhwrvDXNFh0Sl5YyQQvYYOAYXWH/zrRxcQF12/iIiIiIiLjfScP8gsbgf4tquoN/xz9O/TVoB1m8X0vtLgbiCkpFKvKESvNkPY0WWB4hWlagopCobM+C6F0gJ0fmHdAmcE9mXYAI9e6PF6qb8RnRkEQEmCEc9SEeubQL8IsGy/c4JSIlMC8E9hid3QtaQZYn0ZAitYAMtvntgoCXJYAD2vUNPdG/2ZjmwOIDmsKzSpthI6B1gOyPTG/HWfDAn/cEz5KH9qVwgsvyls8LMyWzDA6Wh3k+gz0IekhwR0RRv9IyIiIiIuFzLlJ2Sr578ykLiyqd4NZedGQ1+ONwKeG+yUrpJLxYwmZ34+rogxwFhcIRWgErtS3BUOmSaKqxVIgVol2MvzIXL2it8NQgq3aMJPP9fitNJwaujb9JjKbGdrt0qvez0Yw2AA44HRAcGCCXrW1iqUFya2FpsgLc/ztAQhZGQQgBgAZaID3eKOQYCsel+icaWhtgDXfndZna5wAIM333wLMAGz2cz/BobABIgAAbsGgaBURxckIQkmpOygSfh8/vZ87rIAGAL6oRqu5gBAHTR6PC+KzzUBb77zi18aBFy7do0dj3fL5AIlQOn/LibANCmQ+ps2Bu+l6gs1eE3BaQH7SnUY7ut1gKyw/4YAVT9aYiur0xXKIXD9Oh4CMyFvgfzeFMiKr59JgNL/6o133QQk5IK8kiT7CQph4P3Fwj0HwL5kQOqPCSj+NQQUkyAi4KYqffNmfeGgnAQPiDqoACeAvaIhCAEf4PWJyfSq/J67CKANwocFUIOHh4egTZRZQLY/HMpveggUspuAwxLVhWQM74zHt2CM3xFCQ0he+FXxhfUdUAIGhAAwLGCi9fcQ0FT3UQFicoOGAGoB2X6B+hYxGdQcOwRjTI7HzVNgXLc/dloAJyA0BHB6OQfmTeaGgMxsr6mu9APgDeEAsQD62MtY/ZPyHuAqMv3oBq5wYNL7uBA/Fo4LlICCgVysD1k2LdDC12Mcmq5LODu0Wq6h2F2r/hERERERPcft2/70FLzr2gC2o48EmQ537xSPqTu1WAXbTYw9qeRJU7Z0TXZXloX4NelP7n2uyWhrTi7JxzbWP8s0AyPlRR6Nh9oP2ZFdnuw0jpyVikxfv1O54jUDsrAC2WkyPZuxcgVXlsv70WiQK2cubZ7tqeJ2gu/pXYC7RH/luC20/so3b6JfejqcOWYCfiO/9nCHMnmfM5Tf2BuksYX4rTgWv8Px7VgKY0MWpvz24G0kq/5Pp64OQuXsV3JtcMjiZGenae251isWTXTFCShXBxAB927ef3DjJlo2yqR9Z7g/XgJ+D3+QX3/ECirXn8g4+JCx8QClT80OVs58am/vdi2ieWAEe1PJQSnsVM56tuMioJoFkAXswZ/gtu6Q1B8t2YUt4M/iE/EXvaR0SCzgkFjAobKAuZanRuwhR0A5STXxLWnv01L6tOlgEcxrAygC1AzpGybg3s0PPpRfdv0rTx0TkEKx6lTLf4XP5Nfn6MSEMcYL+S0io/Ri/Ep86CCgju5So0PEfgSGOcvDYCgWRrxICMgIw0T/5kSESQCSH35ybXTtb48qeb+ubnc1eWrePcGGQCVj8e5dLSvbb9Y7rQQIAnlBrQ+6j9CQRe47VYf1U0AdMRKuIaGGO6nOLwuiPw/gU6y/uP+FnP4mX9xvCJDjP/WUZ4pO2CRqLrKyRX7iB9BlbyLbPgHGJ0+p/vQxKMpDXTq52BG4mjflgdVgYCzOIfIWAb7hA0VEREREbAFDvDCtXDk4ZHke61/P+GhhsRXhffpBlx6ksJTfl/jRfATI1XwXvvzyq6/gEerOntK/gPzl1g24dw9u3KrTy9gNc1liSGR6oQneqN80htFw+MRgwP/hYiFMZV1jFG2CZGBJvfGF9rz+rvAP7Youh7KCKQtumnQjNmUvWVfBq84jXcdMBjt6c7BM0MGVcoyX8MRyWvZnEqBcLVRC6V78Nw1AE/D1N48ff/O17s9QQD7V7honoIxG6p2mYjEKHXhIRblUkWpfO1PrMYiAB2qvDje4VKy7CKDhJVeXpJe7e9qiloWs9U/N/FDY+m5T/KlMGiF3FQbkQIZZvtgHRRlABZ4ynhPYAiYTfF59fHKiwktNgNRfoCUwyjgNFuwiMfGm/7UNIP3LO1jPAZ/BrgQ8bTLkuVEe5n4CDuSvB+pfnawMbAgLZAEken3wYP/BCRw1FT5RvRutjwBqAd8W8jNTf63geFlgYRbXhEH63nw+Nwio7mz5Y7FYvP9wsXhIDjwsnXPAyYkaAHgSfDIcjtY4CZI54NtqDqgYUPrnRjh6S/V3oYsv9+AIMaAqOkDTXgYmAR99VP0jBuKcA4bZyckJnGAG6GNw3U+BZ+IZjv9p6LacTPSClZwB5b9UMwDGj/rX3foCfQwqiyjhmANgqIAJsN3DLgQQpMW9f1b7AZYzguYMK63lSapmysd16j//9W/zY11EMWtU0iBTS3pZfWCjvR+wfRw8f36AxOme4ip93DBGO2w8BiMiIiI6Y4hPR7/4Tk0x373Ydqc2iJcALxvh+3rW/X7b3doYrit1r1fCi/KJo75rG5jBDBf4j8WZEes7eTYr+J91r2hVvFQBVG0CrzQBr5ocxG2w+RG5poRtPdALVIaZeqbPvPWfIa6XCl9HjVPXg/UnpRdybRTl5i1SkF6YwuvBa3N3ljW3SQLkDKBC6JdG42YfJnhjrNRfby/mpv62o7vTdIr1ey2/vTYyzLZIQF7f79xNQE6GPMBxitOw/jYCUsNkioPmAyOcNgjIYDabbc7T1Qq7CeBlkP5Sd2NS7GwBm50ECwMoX5opdHiuCXiOMuX+CnB65zlgs9EanfTua/E+zkQKEQYMfjo/BYTY4BQ40wqXPTitxVOsI50DsJSv//T5VoP1H9SyLDz9YZt96NNqRURERERExBkjB5941oARcWRWekOiC3Z2qP7gEc+eACAUGAQUaSnOkI9S9c3IoELmWp6UmdzhbU5855wlQ7FDtkECTApMAsq0ps/F7ZHq0QwGATidE0CDRb4YYB7G3QgB+DAwJaBY/qg6WfwY4T5XGTABI4tOYY0NcZ1/P2AlAjZoASsRsGEL2OwcQLH1OWDDTwG+3rHlp0APsF0/ICIiIiLicsP/HtlFR/pfAT8+RGc3pZdydIk+J1e9Rwo/5uh9hnH+1PICRe2b0M8/aCv3Dkv4nyRAoNPJipURY4C+WarP67eT+4YUjoX4MRfH+G3r5UJGtOb7tVqRwXwg/zXHt2FunmdXMpjyQH0NeureZtW5+SN9h8ZTUKft9xwEFB+NluzXn68HCSSJulDL++pLf/6eSpdXkv2eElBYgMQxvuNqXlgap5MRAY9KNCbeUu4dRsUzcIrOvMhgdAiLoYOACzcJjgGOj47xtF8uR+iQFNb8Fy77hvFLeX9ensu35iMiIiIiOoO+HxCS6SGqtnLb9rrKIdD3A0IyPUbXVm7bXlc5eP+hwYtVZHqQsq3ctr2uchD0/YBXuoJaPlW+4Wkll0dpi/TnjQxUFs70Vzr9lbN9Ad50daKTpAvaf4Hfd/ABdAPQyHUlotoNPj3Fu8Oh/Dyd5ddb5LZ0vHtm/wlGf8RPP/0kzP4IcbLi/hqgd3odshq9p6TDuEMsv2AK+fMTAoL9EfV/h3xS6r8+AqboM+gsBNh+tlEo2L7FQnwWcCJK/VcmIDwE1KdvtTHx0BCBEIHeISVIfipLBk6a/EHQ9wMsk1o9CepJjE5SQGX3pGqdJGn7dJI102t+XLIaA40cxKYfY10fo23lMDbtyHR1pNrKYWzale3qSreVIyIiIiIiIjyoHIczk3sP8vcDw/IFJAD8BBRfWEHhJ0DQP3rYb5QfSQgemRAE9TeXTP78Xd8RLeDSzwGX/SkQERERERERsW4k58cTCJ6ChKz9QdeE/H2gPiMRgb6uQAC93+dJ/3VYANX3XOlvWkBxvL34chDQ7L2Z+hocqtIXdg7Iapj64zte6n9+bKCrBZT5z6/+XS3g3Ovf9Sng0P/CzgEBaP3Pjw0ELaANlN71/4iInuP/VPKCJpghgS4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTUtMTAtMTlUMjM6NTM6MjkrMDI6MDC1OmPTAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTE5VDIzOjUzOjI5KzAyOjAwxGfbbwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=)}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:-8px -8px 8px #aaa;box-shadow:-8px -8px 8px #aaa}/*! + * StyleSheet for JQuery splitter Plugin + * Copyright (C) 2010 Jakub Jankiewicz <http://jcubic.pl> + * + * Same license as plugin + */.splitter_panel{position:relative}.splitter_panel .vsplitter{background-color:grey;cursor:col-resize;z-index:900;width:7px}.splitter_panel .hsplitter{background-color:#5F5F5F;cursor:row-resize;z-index:800;height:7px}.splitter_panel .vsplitter.splitter-invisible,.splitter_panel .hsplitter.splitter-invisible{background:0}.splitter_panel .vsplitter,.splitter_panel .left_panel,.splitter_panel .right_panel,.splitter_panel .hsplitter,.splitter_panel .top_panel,.splitter_panel .bottom_panel{position:absolute;overflow:auto}.splitter_panel .vsplitter,.splitter_panel .left_panel,.splitter_panel .right_panel{height:100%}.splitter_panel .hsplitter,.splitter_panel .top_panel,.splitter_panel .bottom_panel{width:100%}.splitter_panel .top_panel,.splitter_panel .left_panel,.splitter_panel .vsplitter{top:0}.splitter_panel .top_panel,.splitter_panel .bottom_panel,.splitter_panel .left_panel,.splitter_panel .hsplitter{left:0}.splitter_panel .bottom_panel{bottom:0}.splitter_panel .right_panel{right:0}.splitterMask{position:absolute;left:0;top:0;right:0;bottom:0;z-index:1000}/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:before,:after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot);src:url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff) format('woff'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover,a.text-primary:focus{color:#286090}.text-success{color:#3c763d}a.text-success:hover,a.text-success:focus{color:#2b542c}.text-info{color:#31708f}a.text-info:hover,a.text-info:focus{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover,a.text-warning:focus{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover,a.text-danger:focus{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover,a.bg-primary:focus{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month]{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month]{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:focus,.btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#fff;background-color:#398439;border-color:#255625}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:transparent;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}.tm-tag{color:#555;background-color:#f5f5f5;border:#bbb 1px solid;box-shadow:0 1px 1px rgba(0,0,0,.075) inset;display:inline-block;border-radius:3px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;margin:0 5px 5px 0;padding:4px;text-decoration:none;transition:border .2s linear 0s,box-shadow .2s linear 0s;-moz-transition:border .2s linear 0s,box-shadow .2s linear 0s;-webkit-transition:border .2s linear 0s,box-shadow .2s linear 0s;vertical-align:middle}.tm-tag .tm-tag-remove{color:#000;font-weight:700;margin-left:4px;opacity:.2}.tm-tag .tm-tag-remove:hover{color:#000;text-decoration:none;opacity:.4}.tm-tag.tm-tag-warning{color:#945203;background-color:#f2c889;border-color:#f0a12f}.tm-tag.tm-tag-error{color:#84212e;background-color:#e69ca6;border-color:#d24a5d}.tm-tag.tm-tag-success{color:#638421;background-color:#cde69c;border-color:#a5d24a}.tm-tag.tm-tag-info{color:#4594b5;background-color:#c5eefa;border-color:#5dc8f7}.tm-tag.tm-tag-inverse{color:#ccc;background-color:#555;border-color:#333;box-shadow:0 1px 1px rgba(0,0,0,.2) inset}.tm-tag.tm-tag-inverse .tm-tag-remove{color:#fff}.tm-tag.tm-tag-large{font-size:16.25px;border-radius:4px;padding:11px 7px}.tm-tag.tm-tag-small{font-size:11.049999999999999px;border-radius:3px;padding:2px 4px}.tm-tag.tm-tag-mini{font-size:9.75px;border-radius:2px;padding:0 2px}.tm-tag.tm-tag-plain{color:#333;box-shadow:none;background:0;border:0}.tm-tag.tm-tag-disabled{color:#aaa;background-color:#e6e6e6;border-color:#ccc;box-shadow:none}.tm-tag.tm-tag-disabled .tm-tag-remove{display:none}input[type=text].tm-input{margin-bottom:5px;vertical-align:middle!important}.control-group.tm-group{margin-bottom:5px}.form-horizontal .control-group.tm-group{margin-bottom:15px}.c3 svg{font:10px sans-serif;-webkit-tap-highlight-color:transparent}.c3 path,.c3 line{fill:none;stroke:#000}.c3 text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid,.c3-event-rect,.c3-bars path{shape-rendering:crispEdges}.c3-chart-arc path{stroke:#fff}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid line{stroke:#aaa}.c3-grid text{fill:#aaa}.c3-xgrid,.c3-ygrid{stroke-dasharray:3 3}.c3-text.c3-empty{fill:gray;font-size:2em}.c3-line{stroke-width:1px}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:steelblue;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:lightgray;stroke-width:1}.c3-title{font:14px sans-serif}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;-webkit-box-shadow:7px 7px 12px -9px #777;-moz-box-shadow:7px 7px 12px -9px #777;box-shadow:7px 7px 12px -9px #777;opacity:.9}.c3-tooltip tr{border:1px solid #CCC}.c3-tooltip th{background-color:#aaa;font-size:14px;padding:2px 5px;text-align:left;color:#FFF}.c3-tooltip td{font-size:13px;padding:3px 6px;background-color:#fff;border-left:1px dotted #999}.c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3-tooltip td.value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000}span.twitter-typeahead .tt-dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:250px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}span.twitter-typeahead .tt-suggestion>p{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}span.twitter-typeahead .tt-suggestion>p:hover,span.twitter-typeahead .tt-suggestion>p:focus{text-decoration:none;outline:0;background-color:#e8e8e8}span.twitter-typeahead .tt-suggestion.tt-cursor{background-color:#f8f8f8}span.twitter-typeahead{width:100%}.input-group span.twitter-typeahead{display:block!important}.input-group span.twitter-typeahead .tt-dropdown-menu{top:32px!important}.input-group.input-group-lg span.twitter-typeahead .tt-dropdown-menu{top:44px!important}.input-group.input-group-sm span.twitter-typeahead .tt-dropdown-menu{top:28px!important}.tt-suggestion{max-width:30em;overflow:hidden}.tt-suggestion .tt-label{padding-left:1.5em}.tt-suggestion .tt-match.file,.tt-file-header{background-size:1em;background-repeat:no-repeat;background-position:5px 5px}.tt-match.predicate.built_in .tt-label{color:#00f}.tt-suggestion .tt-title{color:#555;white-space:nowrap;overflow:hidden;font-style:italic;font-size:80%}.tt-suggestion .tt-tags{max-width:100px;float:right;margin-right:2px}.tt-suggestion .tt-tag{max-width:30px;border:1px solid #ddd;padding:0 4px;margin-left:2px;border-radius:5px;background-color:#e1edff}.tt-suggestion .tt-line{white-space:nowrap}.tt-suggestion .tt-lineno{display:inline-block;width:40px;min-width:20px;font-family:monospace;color:#999;background-color:#eee;border-right:1px solid #ddd;padding:0 3px 0 5px;text-align:right}.tt-suggestion .tt-text{padding-left:5px;white-space:nowrap}div.tt-file-header{padding-left:5em;background-color:#ddd;color:#000}span.tt-path-file{font-weight:700}div.tt-match.source{overflow:hidden}table.diff{width:100%;border-collapse:collapse;border:1px solid darkgray;white-space:pre-wrap}table.diff tbody{font-family:Courier,monospace}table.diff tbody th{font-family:verdana,arial,'Bitstream Vera Sans',helvetica,sans-serif;background:#EED;font-size:11px;font-weight:400;border:1px solid #BBC;color:#886;padding:.3em .5em .1em 2em;text-align:right;vertical-align:top}table.diff thead{border-bottom:1px solid #BBC;background:#EFEFEF;font-family:Verdana}table.diff thead th.texttitle{text-align:left}table.diff tbody td{padding:0;vertical-align:top}table.diff .empty{background-color:#DDD}table.diff .replace{background-color:#FD8}table.diff .delete{background-color:#E99}table.diff .skip{background-color:#EFEFEF;border:1px solid #AAA;border-right:1px solid #BBC}table.diff .insert{background-color:#9E9}table.diff th.author{text-align:right;border-top:1px solid #BBC;background:#EFEFEF}.notebook{position:relative;width:100%;height:100%}.nb-toolbar,.nb-content{width:100%;padding-left:1em;padding-right:1em}.notebook.hamburger .nb-toolbar{display:none}.nb-toolbar{position:absolute;padding-top:5px;padding-bottom:5px;margin-bottom:1em;border-bottom:1px solid #ddd}.nb-toolbar .action-fullscreen{right:5px;position:absolute}div.notebook-menu{display:none}.notebook.hamburger div.notebook-menu{display:block;position:absolute;top:3px;right:1em;z-index:2000}.notebook.hamburger .nb-view{top:0;height:100%}.nb-view{position:absolute;top:40px;height:calc(100% - 40px);width:100%;overflow-y:auto}.nb-content{position:relative;width:100%}.nb-bottom{width:100%;height:30%}.dropdown.cell-type{display:inline}.nb-cell.markdown:not(.runnable){background-color:transparent;border:0}.nb-cell.html:not(.runnable){background-color:transparent;border:0}.nb-cell{box-sizing:border-box;background-color:#eee;border:1px solid #ccc;border-radius:5px}.nb-type-select{padding:1em 0}.nb-type-select>label{margin-left:1em;margin-right:1em;position:relative;top:.1em}.nb-type-more{padding-bottom:1em;padding-left:1em}.nb-type-more label{margin-right:1em;position:relative;top:.1em}.nb-type-more input{display:inline}.nb-cell .close-select{font-size:150%;padding:0 5px;border:0;color:#888;background-color:transparent;float:right}.nb-cell.active,.nb-cell.active>.with-buttons{border:1px solid #888}.nb-cell.singleline div.editor{height:2em}.nb-cell.singleline .CodeMirror-hscrollbar{height:0}.nb-cell .CodeMirror-scroll{max-height:40em}.nb-cell .CodeMirror{border-radius:5px}.nb-cell .nb-cell-buttons{display:inline-block;float:right}.nb-cell span.glyphicon-cloud{color:#000}.nb-cell.background span.glyphicon-cloud{color:#fff}.nb-cell.query,.nb-cell.program{border:0;background:transparent}.nb-cell>.with-buttons{background-color:#eee;border:1px solid #ccc;border-radius:5px;width:calc(100% - 50px)}.nb-cell .nb-query-menu{display:inline;float:left}.nb-query-menu button{background:transparent;padding:3px 5px 0;border:0;color:#888}.nb-query-menu button:hover{color:#000}.nb-cell .prolog-prompt{float:left;padding-right:.3em;padding-top:.25em;font-weight:700;text-align:right}.nb-cell .editor.query{margin-left:44px}.nb-cell.program,.nb-cell.query{margin-bottom:1em}.nb-cell.not-for-query{opacity:.5}.nb-placeholder{opacity:.5}.nb-cell.markdown pre.code{width:90%;margin:auto;margin-bottom:1em}.nb-cell.markdown dl.termlist{margin-left:5%}.nb-cell.markdown dl.termlist dd{margin-left:2em}.type-icon.pl{background-image:url(../icons/owl.png)}.type-icon.swinb{background-image:url(../icons/swinb.png)}.type-icon.select{background-image:url(../icons/select.png)}div.feedback{position:absolute;bottom:3px;left:0;right:3px;padding:0 10px 3px;z-index:1000;border:1px solid #888;border-radius:5px;background-color:#cff;box-shadow:3px 3px 5px #888}div.feedback.warning{background-color:#fdd}.modal-header .glyphicon-warning-sign{color:#fa0;font-size:150%}.modal-header .warning{color:red}div.btn-group.diff{margin-top:1em}div.btn-transparent button.dropdown-toggle{background:none repeat scroll 0 0 transparent;border:0 none;cursor:pointer;padding:0;color:#000;float:right;font-size:16px;font-weight:700;line-height:1;opacity:.2}div.btn-transparent>button:hover{opacity:.8}a.pengine-logo{position:absolute;top:4px;left:4px;width:42px;height:42px;background-image:url(../icons/red_bird.svg);background-size:100%}.splitter_panel .vsplitter,.splitter_panel .hsplitter{z-index:100;border:2px outset #ccc}.splitter_panel .vsplitter{width:3px}.splitter_panel .hsplitter{height:3px}.splitter_panel .vsplitter,.splitter_panel .left_panel,.splitter_panel .right_panel,.splitter_panel .hsplitter,.splitter_panel .top_panel,.splitter_panel .bottom_panel{overflow:visible}body .modal-dialog{width:80%;max-width:800px;margin-left:auto;margin-right:auto}body .modal-dialog.modal-wide{width:90%;max-width:none}body .modal-dialog.swish-embedded-manual{width:90%;max-width:1000px}body .modal-dialog.swish-embedded-manual div.modal-body{padding:0}iframe.swish-embedded-manual{width:100%;border:0} \ No newline at end of file diff --git a/web/css/swish-min.css.gz b/web/css/swish-min.css.gz new file mode 100644 index 0000000..1eaf467 Binary files /dev/null and b/web/css/swish-min.css.gz differ diff --git a/web/help/debug.html b/web/help/debug.html new file mode 100644 index 0000000..9bab0fe --- /dev/null +++ b/web/help/debug.html @@ -0,0 +1,165 @@ +<!DOCTYPE HTML> + +<html> + <head> + <title>Debugging a query</title> + </head> + <body> + +<style> +table.runner-states { + border: 1px solid #ccc; + width: 90%; + margin: auto; +} +table.runner-states th { + font-style:italic; + white-space:nowrap; + padding-right:2em; + padding-left:5px; + vertical-align:top; +} +table.runner-states tr:nth-child(even) { + background-color: #eee; +} +table.runner-states tr.group th { + color: #fff; + background-color: #aaa; + text-align: center; +} +div.explain-trace-button { display:inline-block; width:70%; vertical-align:top; } +div.trace-buttons { margin-bottom: 1em; } +div.trace-buttons button.inline { vertical-align:bottom; margin-left: 0px; + width: 1.5em; height: 1.5em; + } +</style> + +<h2>Write clean code</h2> + +<p> +Most novices try to write a single rule using a long and complicated +control structure that produces the desired answer. The rule typically +doesn't work, so they start adding additional control structures and +conditions to fix the corner cases. Suprisingly quickly, it gets very +difficult to read the rule. Recognise this? You need to write monolitic +queries in query languages such as SQL or SPARQL. Prolog allows for +<em>composing</em> rules from simpler ones. <strong>Use +composition!</strong> + + +<p> +First of all, make sure your program consists of small predicates, where +the body (the part after the <code>:-</code> operator) is typically a +simple sequence (<em>conjunction</em>) of sub-queries (goals). In +particular + + <ul> + <li>Keep the number of sub-queries of a clause <em>low</em>. + Say below 5. If you need more, there exists typically a + meaningful <em>concept</em> that can be expressed as a + helper predicate to reduce the length of the conjunction. + + <li>Avoid the use of control structures such as + <code>( If -> Then ; Else )</code>, and in particular nested + versions thereof. + + <li>Avoid complex control structures as arguments to + <em>meta-predicates</em> such as <code>findall/3</code>. + </ul> + +<p> +Following the above guidelines (1) makes your program easier to read, +(2) makes it easier to formulate new queries (<em>code reuse</em>) and +(3) <strong>makes the program easier to debug</strong>. + + +<h2>My query still gives the wrong result (or <b>false</b>)</h2> + +<p> +If the answer is wrong, you may consider tracing the execution of the +query. To start debugging at a particular place in the source, set a +<em>breakpoint</em> by clicking a line number in the <em>gutter</em> of +the editor. To trace from the beginning, use the menu <strong>Solutions +-> Debug (trace)</strong>. Note that you can add a (conditional) call to +<code>trace/0</code> anywhere in the program to start debugging at that +point. + +<p> +In trace mode, you single-step through the execution of the program. The +<span style="color:darkblue">SWI</span><span +style="color:maroon">SH</span> debugger only shows calls appearing in +the current source files; details for called predicates are hidden. The +following buttons are displayed below the <em>port</em> + +<div class="trace-buttons"> + <button class="nodebug" title="Continue"></button> + <div class="explain-trace-button"> +Continue without debugging. Execution will stop on completion, +reaching a <em>breakpoint</em> or <em>error</em>. Breakpoints +may be set and cleared before using this button. + </div><br> + <button class="continue" title="Step into"></button> + <div class="explain-trace-button"> +Advance a single step. If possible, go <em>into</em> the next rule. + </div><br> + <button class="skip" title="Step over"></button> + <div class="explain-trace-button"> +Advance a single step. Step <em>over</em> the next rule. + </div><br> + <button class="up" title="Step out"></button> +Complete execution of this rule, stopping in the <em>parent</em><br> + <button class="retry" title="Retry"></button> + <div class="explain-trace-button"> +This is <strong>Prolog's secret weapon</strong>: if you are at the end +(<b>Exit</b> <b>Fail</b> or <b>Exception</b>), you can go back to the +beginning and now use <button class="continue inline" title="Step +into"></button> instead of <button class="skip inline" title="Step +over"></button> to get more details. + </div><br> + <button class="abort" title="Abort"></button> + <div class="explain-trace-button"> + Abort executing this query. + </div> +</div> + +<p> +<div class="trace-buttons"> +Note that the nice small predicates not only makes reading and reusing +your code easy, but also facilitates <em>hierarchical</em> debugging by +first stepping <em>over</em> (<button class="skip inline" title="Step +over"></button>) all details and as soon as a goal gives an unexpected +result, <em>retry</em> (<button class="retry inline" +title="Retry"></button>) and step <em>into</em> (<button class="continue +inline" title="Step into"></button>) the rule. +</div> + + +<h2>My query raises an error</h2> + +<p> +If your query contains an error, such as dividing by zero or adding a +number to an atom, Prolog will <em>raise an exception</em>. <span +style="color:darkblue">SWI</span><span style="color:maroon">SH</span> +tries to start the tracer as soon as possible. Unfortunately, Prolog +optimization sometimes causes that it cannot stop right there or that +much of the execution context is not available. In that case, run the +query in <em>debug mode</em> as illustrated below. + +<pre> +?- debug, goal. +</pre> + +<p> +<div class="trace-buttons"> +That should stop at the error location. If you wonder about the context, +use the <em>Step Out</em> (<button class="up inline" title="Step +out"></button>) button to get to a higher level and <em>Retry</em> +(<button class="retry inline" title="Retry"></button>) to follow the +execution that leads to the error in detail (<button class="continue +inline" title="Step into"></button>). +</div> + +</body> +</html> + + diff --git a/web/help/editor.html b/web/help/editor.html new file mode 100644 index 0000000..b97bf76 --- /dev/null +++ b/web/help/editor.html @@ -0,0 +1,25 @@ +<!DOCTYPE HTML> + +<html> + <head> + <title>Using the Prolog editor</title> + </head> + <body> + +<h2>Navigating</h2> + +<p> +If a token is related to one or more source locations, a <b>long click</b> (> +500 millseconds) opens a menu below the cursor that allows for jumping to the +related location. Currently, these are: + + <ul> + <li>:- include(<a>file</a>). + <li>a predicate all written as <a>name</a>(arg, ...). + </ul> + +<p> +Future versions are likely to add more options, such as jumping to caller +locations, open the documentation, listing predicates, etc. +</body> +</html> diff --git a/web/icons/rb_favicon.ico b/web/icons/rb_favicon.ico new file mode 100644 index 0000000..2a974fd Binary files /dev/null and b/web/icons/rb_favicon.ico differ diff --git a/web/icons/wip.png b/web/icons/wip.png new file mode 100644 index 0000000..62dbd0e Binary files /dev/null and b/web/icons/wip.png differ diff --git a/web/js/swish-min.js b/web/js/swish-min.js new file mode 100644 index 0000000..b53f1cb --- /dev/null +++ b/web/js/swish-min.js @@ -0,0 +1,330 @@ +/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */ + +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the MIT license + */ + +/*! jQuery UI - v1.12.0 - 2016-07-08 +* http://jqueryui.com +* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +/*! + * JQuery Spliter Plugin + * Copyright (C) 2010-2013 Jakub Jankiewicz <http://jcubic.pl> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/* =================================================== + * tagmanager.js v3.0.1 + * http://welldonethings.com/tags/manager + * =================================================== + * Copyright 2012 Max Favilli + * + * Licensed under the Mozilla Public License, Version 2.0 You may not use this work except in compliance with the License. + * + * http://www.mozilla.org/MPL/2.0/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + +/*! + * typeahead.js 0.10.5 + * https://github.com/twitter/typeahead.js + * Copyright 2013-2014 Twitter, Inc. and other contributors; Licensed MIT + */ + +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/** +* +* jquery.sparkline.js +* +* v2.1.2 +* (c) Splunk, Inc +* Contact: Gareth Watts (gareth@splunk.com) +* http://omnipotent.net/jquery.sparkline/ +* +* Generates inline sparkline charts from data supplied either to the method +* or inline in HTML +* +* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag +* (Firefox 2.0+, Safari, Opera, etc) +* +* License: New BSD License +* +* Copyright (c) 2012, Splunk Inc. +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without modification, +* are permitted provided that the following conditions are met: +* +* * Redistributions of source code must retain the above copyright notice, +* this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following disclaimer in the documentation +* and/or other materials provided with the distribution. +* * Neither the name of Splunk Inc nor the names of its contributors may +* be used to endorse or promote products derived from this software without +* specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +* +* Usage: +* $(selector).sparkline(values, options) +* +* If values is undefined or set to 'html' then the data values are read from the specified tag: +* <p>Sparkline: <span class="sparkline">1,4,6,6,8,5,3,5</span></p> +* $('.sparkline').sparkline(); +* There must be no spaces in the enclosed data set +* +* Otherwise values must be an array of numbers or null values +* <p>Sparkline: <span id="sparkline1">This text replaced if the browser is compatible</span></p> +* $('#sparkline1').sparkline([1,4,6,6,8,5,3,5]) +* $('#sparkline2').sparkline([1,4,6,null,null,5,3,5]) +* +* Values can also be specified in an HTML comment, or as a values attribute: +* <p>Sparkline: <span class="sparkline"><!--1,4,6,6,8,5,3,5 --></span></p> +* <p>Sparkline: <span class="sparkline" values="1,4,6,6,8,5,3,5"></span></p> +* $('.sparkline').sparkline(); +* +* For line charts, x values can also be specified: +* <p>Sparkline: <span class="sparkline">1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5</span></p> +* $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ]) +* +* By default, options should be passed in as teh second argument to the sparkline function: +* $('.sparkline').sparkline([1,2,3,4], {type: 'bar'}) +* +* Options can also be set by passing them on the tag itself. This feature is disabled by default though +* as there's a slight performance overhead: +* $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true}) +* <p>Sparkline: <span class="sparkline" sparkType="bar" sparkBarColor="red">loading</span></p> +* Prefix all options supplied as tag attribute with "spark" (configurable by setting tagOptionPrefix) +* +* Supported options: +* lineColor - Color of the line used for the chart +* fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart +* width - Width of the chart - Defaults to 3 times the number of values in pixels +* height - Height of the chart - Defaults to the height of the containing element +* chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied +* chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied +* chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax +* chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied +* chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied +* composite - If true then don't erase any existing chart attached to the tag, but draw +* another chart over the top - Note that width and height are ignored if an +* existing chart is detected. +* tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values' +* enableTagOptions - Whether to check tags for sparkline options +* tagOptionPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark' +* disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a +* hidden dom element, avoding a browser reflow +* disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled, +* making the plugin perform much like it did in 1.x +* disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled) +* disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled +* defaults to false (highlights enabled) +* highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase +* tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body +* tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied +* tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis +* tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis +* tooltipFormatter - Optional callback that allows you to override the HTML displayed in the tooltip +* callback is given arguments of (sparkline, options, fields) +* tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title +* tooltipFormat - A format string or SPFormat object (or an array thereof for multiple entries) +* to control the format of the tooltip +* tooltipPrefix - A string to prepend to each field displayed in a tooltip +* tooltipSuffix - A string to append to each field displayed in a tooltip +* tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true) +* tooltipValueLookups - An object or range map to map field values to tooltip strings +* (eg. to map -1 to "Lost", 0 to "Draw", and 1 to "Win") +* numberFormatter - Optional callback for formatting numbers in tooltips +* numberDigitGroupSep - Character to use for group separator in numbers "1,234" - Defaults to "," +* numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to "." +* numberDigitGroupCount - Number of digits between group separator - Defaults to 3 +* +* There are 7 types of sparkline, selected by supplying a "type" option of 'line' (default), +* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box' +* line - Line chart. Options: +* spotColor - Set to '' to not end each line in a circular spot +* minSpotColor - If set, color of spot at minimum value +* maxSpotColor - If set, color of spot at maximum value +* spotRadius - Radius in pixels +* lineWidth - Width of line in pixels +* normalRangeMin +* normalRangeMax - If set draws a filled horizontal bar between these two values marking the "normal" +* or expected range of values +* normalRangeColor - Color to use for the above bar +* drawNormalOnTop - Draw the normal range above the chart fill color if true +* defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart +* highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable +* highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable +* valueSpots - Specify which points to draw spots on, and in which color. Accepts a range map +* +* bar - Bar chart. Options: +* barColor - Color of bars for postive values +* negBarColor - Color of bars for negative values +* zeroColor - Color of bars with zero values +* nullColor - Color of bars with null values - Defaults to omitting the bar entirely +* barWidth - Width of bars in pixels +* colorMap - Optional mappnig of values to colors to override the *BarColor values above +* can be an Array of values to control the color of individual bars or a range map +* to specify colors for individual ranges of values +* barSpacing - Gap between bars in pixels +* zeroAxis - Centers the y-axis around zero if true +* +* tristate - Charts values of win (>0), lose (<0) or draw (=0) +* posBarColor - Color of win values +* negBarColor - Color of lose values +* zeroBarColor - Color of draw values +* barWidth - Width of bars in pixels +* barSpacing - Gap between bars in pixels +* colorMap - Optional mappnig of values to colors to override the *BarColor values above +* can be an Array of values to control the color of individual bars or a range map +* to specify colors for individual ranges of values +* +* discrete - Options: +* lineHeight - Height of each line in pixels - Defaults to 30% of the graph height +* thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor +* thresholdColor +* +* bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ... +* options: +* targetColor - The color of the vertical target marker +* targetWidth - The width of the target marker in pixels +* performanceColor - The color of the performance measure horizontal bar +* rangeColors - Colors to use for each qualitative range background color +* +* pie - Pie chart. Options: +* sliceColors - An array of colors to use for pie slices +* offset - Angle in degrees to offset the first slice - Try -90 or +90 +* borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border) +* borderColor - Color to use for the pie chart border - Defaults to #000 +* +* box - Box plot. Options: +* raw - Set to true to supply pre-computed plot points as values +* values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier +* When set to false you can supply any number of values and the box plot will +* be computed for you. Default is false. +* showOutliers - Set to true (default) to display outliers as circles +* outlierIQR - Interquartile range used to determine outliers. Default 1.5 +* boxLineColor - Outline color of the box +* boxFillColor - Fill color for the box +* whiskerColor - Line color used for whiskers +* outlierLineColor - Outline color of outlier circles +* outlierFillColor - Fill color of the outlier circles +* spotRadius - Radius of outlier circles +* medianColor - Line color of the median line +* target - Draw a target cross hair at the supplied value (default undefined) +* +* +* +* Examples: +* $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false }); +* $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 }); +* $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }): +* $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' }); +* $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' }); +* $('#pie').sparkline([1,1,2], { type:'pie' }); +*/ + +/*** +This is part of jsdifflib v1.0. <http://snowtide.com/jsdifflib> + +Copyright (c) 2007, Snowtide Informatics Systems, Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the Snowtide Informatics Systems nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. +***/ + +/* +This is part of jsdifflib v1.0. <http://github.com/cemerick/jsdifflib> + +Copyright 2007 - 2011 Chas Emerick <cemerick@snowtide.com>. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Chas Emerick ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Chas Emerick OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Chas Emerick. +*/ + +/* + * js-sha1 v0.3.0 + * https://github.com/emn178/js-sha1 + * + * Copyright 2014-2015, emn178@gmail.com + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(a,b){function s(e){var t=!!e&&"length"in e&&e.length,r=n.type(e);return"function"===r||n.isWindow(e)?!1:"array"===r||0===t||"number"==typeof t&&t>0&&t-1 in e}function z(e,t,r){if(n.isFunction(t))return n.grep(e,function(e,n){return!!t.call(e,n,e)!==r});if(t.nodeType)return n.grep(e,function(e){return e===t!==r});if("string"==typeof t){if(y.test(t))return n.filter(t,e,r);t=n.filter(t,e)}return n.grep(e,function(e){return h.call(t,e)>-1!==r})}function F(e,t){while((e=e[t])&&1!==e.nodeType);return e}function H(e){var t={};return n.each(e.match(G)||[],function(e,n){t[n]=!0}),t}function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}function M(){this.expando=n.expando+M.uid++}function R(e,t,r){var i;if(void 0===r&&1===e.nodeType)if(i="data-"+t.replace(Q,"-$&").toLowerCase(),r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:P.test(r)?n.parseJSON(r):r}catch(s){}O.set(e,t,r)}else r=void 0;return r}function W(e,t,r,i){var s,o=1,u=20,a=i?function(){return i.cur()}:function(){return n.css(e,t,"")},f=a(),l=r&&r[3]||(n.cssNumber[t]?"":"px"),c=(n.cssNumber[t]||"px"!==l&&+f)&&T.exec(n.css(e,t));if(c&&c[3]!==l){l=l||c[3],r=r||[],c=+f||1;do o=o||".5",c/=o,n.style(e,t,c+l);while(o!==(o=a()/f)&&1!==o&&--u)}return r&&(c=+c||+f||0,s=r[1]?c+(r[1]+1)*r[2]:+r[2],i&&(i.unit=l,i.start=c,i.end=s)),s}function _(e,t){var r="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&n.nodeName(e,t)?n.merge([e],r):r}function aa(e,t){for(var n=0,r=e.length;r>n;n++)N.set(e[n],"globalEval",!t||N.get(t[n],"globalEval"))}function ca(e,t,r,i,s){for(var o,u,a,f,l,c,h=t.createDocumentFragment(),p=[],d=0,v=e.length;v>d;d++)if(o=e[d],o||0===o)if("object"===n.type(o))n.merge(p,o.nodeType?[o]:o);else if(ba.test(o)){u=u||h.appendChild(t.createElement("div")),a=(Y.exec(o)||["",""])[1].toLowerCase(),f=$[a]||$._default,u.innerHTML=f[1]+n.htmlPrefilter(o)+f[2],c=f[0];while(c--)u=u.lastChild;n.merge(p,u.childNodes),u=h.firstChild,u.textContent=""}else p.push(t.createTextNode(o));h.textContent="",d=0;while(o=p[d++])if(i&&n.inArray(o,i)>-1)s&&s.push(o);else if(l=n.contains(o.ownerDocument,o),u=_(h.appendChild(o),"script"),l&&aa(u),r){c=0;while(o=u[c++])Z.test(o.type||"")&&r.push(o)}return h}function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(e){}}function ja(e,t,r,i,s,o){var u,a;if("object"==typeof t){"string"!=typeof r&&(i=i||r,r=void 0);for(a in t)ja(e,a,r,i,t[a],o);return e}if(null==i&&null==s?(s=r,i=r=void 0):null==s&&("string"==typeof r?(s=i,i=void 0):(s=i,i=r,r=void 0)),s===!1)s=ha;else if(!s)return e;return 1===o&&(u=s,s=function(e){return n().off(e),u.apply(this,arguments)},s.guid=u.guid||(u.guid=n.guid++)),e.each(function(){n.event.add(this,t,s,i,r)})}function pa(e,t){return n.nodeName(e,"table")&&n.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function qa(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ra(e){var t=na.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function sa(e,t){var r,i,s,o,u,a,f,l;if(1===t.nodeType){if(N.hasData(e)&&(o=N.access(e),u=N.set(t,o),l=o.events)){delete u.handle,u.events={};for(s in l)for(r=0,i=l[s].length;i>r;r++)n.event.add(t,s,l[s][r])}O.hasData(e)&&(a=O.access(e),f=n.extend({},a),O.set(t,f))}}function ta(e,t){var n=t.nodeName.toLowerCase();"input"===n&&X.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function ua(e,t,r,i){t=f.apply([],t);var s,o,u,a,c,h,p=0,d=e.length,v=d-1,m=t[0],g=n.isFunction(m);if(g||d>1&&"string"==typeof m&&!l.checkClone&&ma.test(m))return e.each(function(n){var s=e.eq(n);g&&(t[0]=m.call(this,n,s.html())),ua(s,t,r,i)});if(d&&(s=ca(t,e[0].ownerDocument,!1,e,i),o=s.firstChild,1===s.childNodes.length&&(s=o),o||i)){for(u=n.map(_(s,"script"),qa),a=u.length;d>p;p++)c=s,p!==v&&(c=n.clone(c,!0,!0),a&&n.merge(u,_(c,"script"))),r.call(e[p],c,p);if(a)for(h=u[u.length-1].ownerDocument,n.map(u,ra),p=0;a>p;p++)c=u[p],Z.test(c.type||"")&&!N.access(c,"globalEval")&&n.contains(h,c)&&(c.src?n._evalUrl&&n._evalUrl(c.src):n.globalEval(c.textContent.replace(oa,"")))}return e}function va(e,t,r){for(var i,s=t?n.filter(t,e):e,o=0;null!=(i=s[o]);o++)r||1!==i.nodeType||n.cleanData(_(i)),i.parentNode&&(r&&n.contains(i.ownerDocument,i)&&aa(_(i,"script")),i.parentNode.removeChild(i));return e}function ya(e,t){var r=n(t.createElement(e)).appendTo(t.body),i=n.css(r[0],"display");return r.detach(),i}function za(e){var t=d,r=xa[e];return r||(r=ya(e,t),"none"!==r&&r||(wa=(wa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=wa[0].contentDocument,t.write(),t.close(),r=ya(e,t),wa.detach()),xa[e]=r),r}function Fa(e,t,r){var i,s,o,u,a=e.style;return r=r||Ca(e),u=r?r.getPropertyValue(t)||r[t]:void 0,""!==u&&void 0!==u||n.contains(e.ownerDocument,e)||(u=n.style(e,t)),r&&!l.pixelMarginRight()&&Ba.test(u)&&Aa.test(t)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=u,u=r.width,a.width=i,a.minWidth=s,a.maxWidth=o),void 0!==u?u+"":u}function Ga(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function Ma(e){if(e in La)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ka.length;while(n--)if(e=Ka[n]+t,e in La)return e}function Na(e,t,n){var r=T.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Oa(e,t,r,i,s){for(var o=r===(i?"border":"content")?4:"width"===t?1:0,u=0;4>o;o+=2)"margin"===r&&(u+=n.css(e,r+U[o],!0,s)),i?("content"===r&&(u-=n.css(e,"padding"+U[o],!0,s)),"margin"!==r&&(u-=n.css(e,"border"+U[o]+"Width",!0,s))):(u+=n.css(e,"padding"+U[o],!0,s),"padding"!==r&&(u+=n.css(e,"border"+U[o]+"Width",!0,s)));return u}function Pa(e,t,r){var i=!0,s="width"===t?e.offsetWidth:e.offsetHeight,o=Ca(e),u="border-box"===n.css(e,"boxSizing",!1,o);if(0>=s||null==s){if(s=Fa(e,t,o),(0>s||null==s)&&(s=e.style[t]),Ba.test(s))return s;i=u&&(l.boxSizingReliable()||s===e.style[t]),s=parseFloat(s)||0}return s+Oa(e,t,r||(u?"border":"content"),i,o)+"px"}function Qa(e,t){for(var r,i,s,o=[],u=0,a=e.length;a>u;u++)i=e[u],i.style&&(o[u]=N.get(i,"olddisplay"),r=i.style.display,t?(o[u]||"none"!==r||(i.style.display=""),""===i.style.display&&V(i)&&(o[u]=N.access(i,"olddisplay",za(i.nodeName)))):(s=V(i),"none"===r&&s||N.set(i,"olddisplay",s?r:n.css(i,"display"))));for(u=0;a>u;u++)i=e[u],i.style&&(t&&"none"!==i.style.display&&""!==i.style.display||(i.style.display=t?o[u]||"":"none"));return e}function Ra(e,t,n,r,i){return new Ra.prototype.init(e,t,n,r,i)}function Wa(){return a.setTimeout(function(){Sa=void 0}),Sa=n.now()}function Xa(e,t){var n,r=0,i={height:e};for(t=t?1:0;4>r;r+=2-t)n=U[r],i["margin"+n]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function Ya(e,t,n){for(var r,i=(_a.tweeners[t]||[]).concat(_a.tweeners["*"]),s=0,o=i.length;o>s;s++)if(r=i[s].call(n,t,e))return r}function Za(e,t,r){var i,s,o,u,a,f,l,c,h=this,p={},d=e.style,v=e.nodeType&&V(e),m=N.get(e,"fxshow");r.queue||(a=n._queueHooks(e,"fx"),null==a.unqueued&&(a.unqueued=0,f=a.empty.fire,a.empty.fire=function(){a.unqueued||f()}),a.unqueued++,h.always(function(){h.always(function(){a.unqueued--,n.queue(e,"fx").length||a.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(r.overflow=[d.overflow,d.overflowX,d.overflowY],l=n.css(e,"display"),c="none"===l?N.get(e,"olddisplay")||za(e.nodeName):l,"inline"===c&&"none"===n.css(e,"float")&&(d.display="inline-block")),r.overflow&&(d.overflow="hidden",h.always(function(){d.overflow=r.overflow[0],d.overflowX=r.overflow[1],d.overflowY=r.overflow[2]}));for(i in t)if(s=t[i],Ua.exec(s)){if(delete t[i],o=o||"toggle"===s,s===(v?"hide":"show")){if("show"!==s||!m||void 0===m[i])continue;v=!0}p[i]=m&&m[i]||n.style(e,i)}else l=void 0;if(n.isEmptyObject(p))"inline"===("none"===l?za(e.nodeName):l)&&(d.display=l);else{m?"hidden"in m&&(v=m.hidden):m=N.access(e,"fxshow",{}),o&&(m.hidden=!v),v?n(e).show():h.done(function(){n(e).hide()}),h.done(function(){var t;N.remove(e,"fxshow");for(t in p)n.style(e,t,p[t])});for(i in p)u=Ya(v?m[i]:0,i,h),i in m||(m[i]=u.start,v&&(u.end=u.start,u.start="width"===i||"height"===i?1:0))}}function $a(e,t){var r,i,s,o,u;for(r in e)if(i=n.camelCase(r),s=t[i],o=e[r],n.isArray(o)&&(s=o[1],o=e[r]=o[0]),r!==i&&(e[i]=o,delete e[r]),u=n.cssHooks[i],u&&"expand"in u){o=u.expand(o),delete e[i];for(r in o)r in e||(e[r]=o[r],t[r]=s)}else t[i]=s}function _a(e,t,r){var i,s,o=0,u=_a.prefilters.length,a=n.Deferred().always(function(){delete f.elem}),f=function(){if(s)return!1;for(var t=Sa||Wa(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,i=1-r,o=0,u=l.tweens.length;u>o;o++)l.tweens[o].run(i);return a.notifyWith(e,[l,i,n]),1>i&&u?n:(a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:n.extend({},t),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},r),originalProperties:t,originalOptions:r,startTime:Sa||Wa(),duration:r.duration,tweens:[],createTween:function(t,r){var i=n.Tween(e,l.opts,t,r,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(i),i},stop:function(t){var n=0,r=t?l.tweens.length:0;if(s)return this;for(s=!0;r>n;n++)l.tweens[n].run(1);return t?(a.notifyWith(e,[l,1,0]),a.resolveWith(e,[l,t])):a.rejectWith(e,[l,t]),this}}),c=l.props;for($a(c,l.opts.specialEasing);u>o;o++)if(i=_a.prefilters[o].call(l,e,c,l.opts))return n.isFunction(i.stop)&&(n._queueHooks(l.elem,l.opts.queue).stop=n.proxy(i.stop,i)),i;return n.map(c,Ya,l),n.isFunction(l.opts.start)&&l.opts.start.call(e,l),n.fx.timer(n.extend(f,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function fb(e){return e.getAttribute&&e.getAttribute("class")||""}function wb(e){return function(t,r){"string"!=typeof t&&(r=t,t="*");var i,s=0,o=t.toLowerCase().match(G)||[];if(n.isFunction(r))while(i=o[s++])"+"===i[0]?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(r)):(e[i]=e[i]||[]).push(r)}}function xb(e,t,r,i){function u(l){var h;return s[l]=!0,n.each(e[l]||[],function(e,n){var a=n(t,r,i);return"string"!=typeof a||o||s[a]?o?!(h=a):void 0:(t.dataTypes.unshift(a),u(a),!1)}),h}var s={},o=e===tb;return u(t.dataTypes[0])||!s["*"]&&u("*")}function yb(e,t){var r,i,s=n.ajaxSettings.flatOptions||{};for(r in t)void 0!==t[r]&&((s[r]?e:i||(i={}))[r]=t[r]);return i&&n.extend(!0,e,i),e}function zb(e,t,n){var r,i,s,o,u=e.contents,a=e.dataTypes;while("*"===a[0])a.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in u)if(u[i]&&u[i].test(r)){a.unshift(i);break}if(a[0]in n)s=a[0];else{for(i in n){if(!a[0]||e.converters[i+" "+a[0]]){s=i;break}o||(o=i)}s=s||o}return s?(s!==a[0]&&a.unshift(s),n[s]):void 0}function Ab(e,t,n,r){var i,s,o,u,a,f={},l=e.dataTypes.slice();if(l[1])for(o in e.converters)f[o.toLowerCase()]=e.converters[o];s=l.shift();while(s)if(e.responseFields[s]&&(n[e.responseFields[s]]=t),!a&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),a=s,s=l.shift())if("*"===s)s=a;else if("*"!==a&&a!==s){if(o=f[a+" "+s]||f["* "+s],!o)for(i in f)if(u=i.split(" "),u[1]===s&&(o=f[a+" "+u[0]]||f["* "+u[0]])){o===!0?o=f[i]:f[i]!==!0&&(s=u[0],l.unshift(u[1]));break}if(o!==!0)if(o&&e["throws"])t=o(t);else try{t=o(t)}catch(c){return{state:"parsererror",error:o?c:"No conversion from "+a+" to "+s}}}return{state:"success",data:t}}function Gb(e,t,r,i){var s;if(n.isArray(t))n.each(t,function(t,n){r||Cb.test(e)?i(e,n):Gb(e+"["+("object"==typeof n&&null!=n?t:"")+"]",n,r,i)});else if(r||"object"!==n.type(t))i(e,t);else for(s in t)Gb(e+"["+s+"]",t[s],r,i)}function Mb(e){return n.isWindow(e)?e:9===e.nodeType&&e.defaultView}var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.4",n=function(e,t){return new n.fn.init(e,t)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(e,t){return t.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(t){return null!=t?0>t?this[t+this.length]:this[t]:e.call(this)},pushStack:function(e){var t=n.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return n.each(this,e)},map:function(e){return this.pushStack(n.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var e,t,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;for("boolean"==typeof u&&(l=u,u=arguments[a]||{},a++),"object"==typeof u||n.isFunction(u)||(u={}),a===f&&(u=this,a--);f>a;a++)if(null!=(e=arguments[a]))for(t in e)r=u[t],i=e[t],u!==i&&(l&&i&&(n.isPlainObject(i)||(s=n.isArray(i)))?(s?(s=!1,o=r&&n.isArray(r)?r:[]):o=r&&n.isPlainObject(r)?r:{},u[t]=n.extend(l,o,i)):void 0!==i&&(u[t]=i));return u},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===n.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){var t=e&&e.toString();return!n.isArray(e)&&t-parseFloat(t)+1>=0},isPlainObject:function(e){var t;if("object"!==n.type(e)||e.nodeType||n.isWindow(e))return!1;if(e.constructor&&!k.call(e,"constructor")&&!k.call(e.constructor.prototype||{},"isPrototypeOf"))return!1;for(t in e);return void 0===t||k.call(e,t)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?i[j.call(e)]||"object":typeof e},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(e){return e.replace(p,"ms-").replace(q,r)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var n,r=0;if(s(e)){for(n=e.length;n>r;r++)if(t.call(e[r],r,e[r])===!1)break}else for(r in e)if(t.call(e[r],r,e[r])===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(o,"")},makeArray:function(e,t){var r=t||[];return null!=e&&(s(Object(e))?n.merge(r,"string"==typeof e?[e]:e):g.call(r,e)),r},inArray:function(e,t,n){return null==t?-1:h.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;n>r;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],s=0,o=e.length,u=!n;o>s;s++)r=!t(e[s],s),r!==u&&i.push(e[s]);return i},map:function(e,t,n){var r,i,o=0,u=[];if(s(e))for(r=e.length;r>o;o++)i=t(e[o],o,n),null!=i&&u.push(i);else for(o in e)i=t(e[o],o,n),null!=i&&u.push(i);return f.apply([],u)},guid:1,proxy:function(t,r){var i,s,o;return"string"==typeof r&&(i=t[r],r=t,t=i),n.isFunction(t)?(s=e.call(arguments,2),o=function(){return t.apply(r||this,s.concat(e.call(arguments)))},o.guid=t.guid=t.guid||n.guid++,o):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){i["[object "+t+"]"]=t.toLowerCase()});var t=function(e){function st(e,t,r,i){var s,u,f,l,c,d,g,y,S=t&&t.ownerDocument,x=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==x&&9!==x&&11!==x)return r;if(!i&&((t?t.ownerDocument||t:E)!==p&&h(t),t=t||p,v)){if(11!==x&&(d=Y.exec(e)))if(s=d[1]){if(9===x){if(!(f=t.getElementById(s)))return r;if(f.id===s)return r.push(f),r}else if(S&&(f=S.getElementById(s))&&b(t,f)&&f.id===s)return r.push(f),r}else{if(d[2])return D.apply(r,t.getElementsByTagName(e)),r;if((s=d[3])&&n.getElementsByClassName&&t.getElementsByClassName)return D.apply(r,t.getElementsByClassName(s)),r}if(n.qsa&&!C[e+" "]&&(!m||!m.test(e))){if(1!==x)S=t,y=e;else if("object"!==t.nodeName.toLowerCase()){(l=t.getAttribute("id"))?l=l.replace(et,"\\$&"):t.setAttribute("id",l=w),g=o(e),u=g.length,c=$.test(l)?"#"+l:"[id='"+l+"']";while(u--)g[u]=c+" "+mt(g[u]);y=g.join(","),S=Z.test(e)&&dt(t.parentNode)||t}if(y)try{return D.apply(r,S.querySelectorAll(y)),r}catch(T){}finally{l===w&&t.removeAttribute("id")}}}return a(e.replace(U,"$1"),t,r,i)}function ot(){function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}var e=[];return t}function ut(e){return e[w]=!0,e}function at(e){var t=p.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ft(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function lt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||L)-(~e.sourceIndex||L);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ht(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ut(function(t){return t=+t,ut(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function dt(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function vt(){}function mt(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function gt(e,t,n){var r=t.dir,i=n&&"parentNode"===r,s=x++;return t.first?function(t,n,s){while(t=t[r])if(1===t.nodeType||i)return e(t,n,s)}:function(t,n,o){var u,a,f,l=[S,s];if(o){while(t=t[r])if((1===t.nodeType||i)&&e(t,n,o))return!0}else while(t=t[r])if(1===t.nodeType||i){if(f=t[w]||(t[w]={}),a=f[t.uniqueID]||(f[t.uniqueID]={}),(u=a[r])&&u[0]===S&&u[1]===s)return l[2]=u[2];if(a[r]=l,l[2]=e(t,n,o))return!0}}}function yt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function bt(e,t,n){for(var r=0,i=t.length;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r,i){for(var s,o=[],u=0,a=e.length,f=null!=t;a>u;u++)(s=e[u])&&(n&&!n(s,r,i)||(o.push(s),f&&t.push(u)));return o}function Et(e,t,n,r,i,s){return r&&!r[w]&&(r=Et(r)),i&&!i[w]&&(i=Et(i,s)),ut(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||bt(t||"*",u.nodeType?[u]:u,[]),m=!e||!s&&t?v:wt(v,h,e,u,a),g=n?i||(s?e:d||r)?[]:o:m;if(n&&n(m,g,u,a),r){f=wt(g,p),r(f,[],u,a),l=f.length;while(l--)(c=f[l])&&(g[p[l]]=!(m[p[l]]=c))}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?H(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=wt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):D.apply(o,g)})}function St(e){for(var t,n,i,s=e.length,o=r.relative[e[0].type],u=o||r.relative[" "],a=o?1:0,l=gt(function(e){return e===t},u,!0),c=gt(function(e){return H(t,e)>-1},u,!0),h=[function(e,n,r){var i=!o&&(r||n!==f)||((t=n).nodeType?l(e,n,r):c(e,n,r));return t=null,i}];s>a;a++)if(n=r.relative[e[a].type])h=[gt(yt(h),n)];else{if(n=r.filter[e[a].type].apply(null,e[a].matches),n[w]){for(i=++a;s>i;i++)if(r.relative[e[i].type])break;return Et(a>1&&yt(h),a>1&&mt(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(U,"$1"),n,i>a&&St(e.slice(a,i)),s>i&&St(e=e.slice(i)),s>i&&mt(e))}h.push(n)}return yt(h)}function xt(e,t){var n=t.length>0,i=e.length>0,s=function(s,o,u,a,l){var c,d,m,g=0,y="0",b=s&&[],w=[],E=f,x=s||i&&r.find.TAG("*",l),T=S+=null==E?1:Math.random()||.1,N=x.length;for(l&&(f=o===p||o||l);y!==N&&null!=(c=x[y]);y++){if(i&&c){d=0,o||c.ownerDocument===p||(h(c),u=!v);while(m=e[d++])if(m(c,o||p,u)){a.push(c);break}l&&(S=T)}n&&((c=!m&&c)&&g--,s&&b.push(c))}if(g+=y,n&&y!==g){d=0;while(m=t[d++])m(b,w,o,u);if(s){if(g>0)while(y--)b[y]||w[y]||(w[y]=M.call(a));w=wt(w)}D.apply(a,w),l&&!s&&w.length>0&&g+t.length>1&&st.uniqueSort(a)}return l&&(S=T,f=E),b};return n?ut(s):s}var t,n,r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w="sizzle"+1*new Date,E=e.document,S=0,x=0,T=ot(),N=ot(),C=ot(),k=function(e,t){return e===t&&(c=!0),0},L=1<<31,A={}.hasOwnProperty,O=[],M=O.pop,_=O.push,D=O.push,P=O.slice,H=function(e,t){for(var n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",j="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",I="\\["+j+"*("+F+")(?:"+j+"*([*^$|!~]?=)"+j+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+F+"))|)"+j+"*\\]",q=":("+F+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",R=new RegExp(j+"+","g"),U=new RegExp("^"+j+"+|((?:^|[^\\\\])(?:\\\\.)*)"+j+"+$","g"),z=new RegExp("^"+j+"*,"+j+"*"),W=new RegExp("^"+j+"*([>+~]|"+j+")"+j+"*"),X=new RegExp("="+j+"*([^\\]'\"]*?)"+j+"*\\]","g"),V=new RegExp(q),$=new RegExp("^"+F+"$"),J={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),TAG:new RegExp("^("+F+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+j+"*(even|odd|(([+-]|)(\\d*)n|)"+j+"*(?:([+-]|)"+j+"*(\\d+)|))"+j+"*\\)|)","i"),bool:new RegExp("^(?:"+B+")$","i"),needsContext:new RegExp("^"+j+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+j+"*((?:-\\d)?\\d*)"+j+"*\\)|)(?=[^-]|$)","i")},K=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,G=/^[^{]+\{\s*\[native \w/,Y=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/[+~]/,et=/'|\\/g,tt=new RegExp("\\\\([\\da-f]{1,6}"+j+"?|("+j+")|.)","ig"),nt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},rt=function(){h()};try{D.apply(O=P.call(E.childNodes),E.childNodes),O[E.childNodes.length].nodeType}catch(it){D={apply:O.length?function(e,t){_.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}n=st.support={},s=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},h=st.setDocument=function(e){var t,i,o=e?e.ownerDocument||e:E;return o!==p&&9===o.nodeType&&o.documentElement?(p=o,d=p.documentElement,v=!s(p),(i=p.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",rt,!1):i.attachEvent&&i.attachEvent("onunload",rt)),n.attributes=at(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=at(function(e){return e.appendChild(p.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=G.test(p.getElementsByClassName),n.getById=at(function(e){return d.appendChild(e).id=w,!p.getElementsByName||!p.getElementsByName(w).length}),n.getById?(r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&v){var n=t.getElementById(e);return n?[n]:[]}},r.filter.ID=function(e){var t=e.replace(tt,nt);return function(e){return e.getAttribute("id")===t}}):(delete r.find.ID,r.filter.ID=function(e){var t=e.replace(tt,nt);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,s=t.getElementsByTagName(e);if("*"===e){while(n=s[i++])1===n.nodeType&&r.push(n);return r}return s},r.find.CLASS=n.getElementsByClassName&&function(e,t){return"undefined"!=typeof t.getElementsByClassName&&v?t.getElementsByClassName(e):void 0},g=[],m=[],(n.qsa=G.test(p.querySelectorAll))&&(at(function(e){d.appendChild(e).innerHTML="<a id='"+w+"'></a><select id='"+w+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+j+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+j+"*(?:value|"+B+")"),e.querySelectorAll("[id~="+w+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+w+"+*").length||m.push(".#.+[+~]")}),at(function(e){var t=p.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+j+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(n.matchesSelector=G.test(y=d.matches||d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&at(function(e){n.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),g.push("!=",q)}),m=m.length&&new RegExp(m.join("|")),g=g.length&&new RegExp(g.join("|")),t=G.test(d.compareDocumentPosition),b=t||G.test(d.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!!r&&1===r.nodeType&&!!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},k=t?function(e,t){if(e===t)return c=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r?r:(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&r||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===p||e.ownerDocument===E&&b(E,e)?-1:t===p||t.ownerDocument===E&&b(E,t)?1:l?H(l,e)-H(l,t):0:4&r?-1:1)}:function(e,t){if(e===t)return c=!0,0;var n,r=0,i=e.parentNode,s=t.parentNode,o=[e],u=[t];if(!i||!s)return e===p?-1:t===p?1:i?-1:s?1:l?H(l,e)-H(l,t):0;if(i===s)return lt(e,t);n=e;while(n=n.parentNode)o.unshift(n);n=t;while(n=n.parentNode)u.unshift(n);while(o[r]===u[r])r++;return r?lt(o[r],u[r]):o[r]===E?-1:u[r]===E?1:0},p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&h(e),t=t.replace(X,"='$1']"),n.matchesSelector&&v&&!C[t+" "]&&(!g||!g.test(t))&&(!m||!m.test(t)))try{var r=y.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&h(e),b(e,t)},st.attr=function(e,t){(e.ownerDocument||e)!==p&&h(e);var i=r.attrHandle[t.toLowerCase()],s=i&&A.call(r.attrHandle,t.toLowerCase())?i(e,t,!v):void 0;return void 0!==s?s:n.attributes||!v?e.getAttribute(t):(s=e.getAttributeNode(t))&&s.specified?s.value:null},st.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,r=[],i=0,s=0;if(c=!n.detectDuplicates,l=!n.sortStable&&e.slice(0),e.sort(k),c){while(t=e[s++])t===e[s]&&(i=r.push(s));while(i--)e.splice(r[i],1)}return l=null,e},i=st.getText=function(e){var t,n="",r=0,s=e.nodeType;if(s){if(1===s||9===s||11===s){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===s||4===s)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},r=st.selectors={cacheLength:50,createPseudo:ut,match:J,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(tt,nt),e[3]=(e[3]||e[4]||e[5]||"").replace(tt,nt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return J.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=o(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(tt,nt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=T[e+" "];return t||(t=new RegExp("(^|"+j+")"+e+"("+j+"|$)"))&&T(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace(R," ")+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var s="nth"!==e.slice(0,3),o="last"!==e.slice(-4),u="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,a){var f,l,c,h,p,d,v=s!==o?"nextSibling":"previousSibling",m=t.parentNode,g=u&&t.nodeName.toLowerCase(),y=!a&&!u,b=!1;if(m){if(s){while(v){h=t;while(h=h[v])if(u?h.nodeName.toLowerCase()===g:1===h.nodeType)return!1;d=v="only"===e&&!d&&"nextSibling"}return!0}if(d=[o?m.firstChild:m.lastChild],o&&y){h=m,c=h[w]||(h[w]={}),l=c[h.uniqueID]||(c[h.uniqueID]={}),f=l[e]||[],p=f[0]===S&&f[1],b=p&&f[2],h=p&&m.childNodes[p];while(h=++p&&h&&h[v]||(b=p=0)||d.pop())if(1===h.nodeType&&++b&&h===t){l[e]=[S,p,b];break}}else if(y&&(h=t,c=h[w]||(h[w]={}),l=c[h.uniqueID]||(c[h.uniqueID]={}),f=l[e]||[],p=f[0]===S&&f[1],b=p),b===!1)while(h=++p&&h&&h[v]||(b=p=0)||d.pop())if((u?h.nodeName.toLowerCase()===g:1===h.nodeType)&&++b&&(y&&(c=h[w]||(h[w]={}),l=c[h.uniqueID]||(c[h.uniqueID]={}),l[e]=[S,b]),h===t))break;return b-=i,b===r||b%r===0&&b/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return i[w]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?ut(function(e,n){var r,s=i(e,t),o=s.length;while(o--)r=H(e,s[o]),e[r]=!(n[r]=s[o])}):function(e){return i(e,0,n)}):i}},pseudos:{not:ut(function(e){var t=[],n=[],r=u(e.replace(U,"$1"));return r[w]?ut(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)(s=o[u])&&(e[u]=!(t[u]=s))}):function(e,i,s){return t[0]=e,r(t,null,s,n),t[0]=null,!n.pop()}}),has:ut(function(e){return function(t){return st(e,t).length>0}}),contains:ut(function(e){return e=e.replace(tt,nt),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:ut(function(e){return $.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(tt,nt).toLowerCase(),function(t){var n;do if(n=v?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return K.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){for(var r=0>n?n+t:n;++r<t;)e.push(r);return e})}},r.pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=ct(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=ht(t);return vt.prototype=r.filters=r.pseudos,r.setFilters=new vt,o=st.tokenize=function(e,t){var n,i,s,o,u,a,f,l=N[e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=r.preFilter;while(u){n&&!(i=z.exec(u))||(i&&(u=u.slice(i[0].length)||u),a.push(s=[])),n=!1,(i=W.exec(u))&&(n=i.shift(),s.push({value:n,type:i[0].replace(U," ")}),u=u.slice(n.length));for(o in r.filter)!(i=J[o].exec(u))||f[o]&&!(i=f[o](i))||(n=i.shift(),s.push({value:n,type:o,matches:i}),u=u.slice(n.length));if(!n)break}return t?u.length:u?st.error(e):N(e,a).slice(0)},u=st.compile=function(e,t){var n,r=[],i=[],s=C[e+" "];if(!s){t||(t=o(e)),n=t.length;while(n--)s=St(t[n]),s[w]?r.push(s):i.push(s);s=C(e,xt(i,r)),s.selector=e}return s},a=st.select=function(e,t,i,s){var a,f,l,c,h,p="function"==typeof e&&e,d=!s&&o(e=p.selector||e);if(i=i||[],1===d.length){if(f=d[0]=d[0].slice(0),f.length>2&&"ID"===(l=f[0]).type&&n.getById&&9===t.nodeType&&v&&r.relative[f[1].type]){if(t=(r.find.ID(l.matches[0].replace(tt,nt),t)||[])[0],!t)return i;p&&(t=t.parentNode),e=e.slice(f.shift().value.length)}a=J.needsContext.test(e)?0:f.length;while(a--){if(l=f[a],r.relative[c=l.type])break;if((h=r.find[c])&&(s=h(l.matches[0].replace(tt,nt),Z.test(f[0].type)&&dt(t.parentNode)||t))){if(f.splice(a,1),e=s.length&&mt(f),!e)return D.apply(i,s),i;break}}}return(p||u(e,d))(s,t,!v,i,!t||Z.test(e)&&dt(t.parentNode)||t),i},n.sortStable=w.split("").sort(k).join("")===w,n.detectDuplicates=!!c,h(),n.sortDetached=at(function(e){return 1&e.compareDocumentPosition(p.createElement("div"))}),at(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ft("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&at(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ft("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),at(function(e){return null==e.getAttribute("disabled")})||ft(B,function(e,t,n){var r;return n?void 0:e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),st}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(e,t,r){var i=[],s=void 0!==r;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(s&&n(e).is(r))break;i.push(e)}return i},v=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;n.filter=function(e,t,r){var i=t[0];return r&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?n.find.matchesSelector(i,e)?[i]:[]:n.find.matches(e,n.grep(t,function(e){return 1===e.nodeType}))},n.fn.extend({find:function(e){var t,r=this.length,i=[],s=this;if("string"!=typeof e)return this.pushStack(n(e).filter(function(){for(t=0;r>t;t++)if(n.contains(s[t],this))return!0}));for(t=0;r>t;t++)n.find(e,s[t],i);return i=this.pushStack(r>1?n.unique(i):i),i.selector=this.selector?this.selector+" "+e:e,i},filter:function(e){return this.pushStack(z(this,e||[],!1))},not:function(e){return this.pushStack(z(this,e||[],!0))},is:function(e){return!!z(this,"string"==typeof e&&w.test(e)?n(e):e||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(e,t,r){var i,s;if(!e)return this;if(r=r||A,"string"==typeof e){if(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:B.exec(e),!i||!i[1]&&t)return!t||t.jquery?(t||r).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof n?t[0]:t,n.merge(this,n.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:d,!0)),x.test(i[1])&&n.isPlainObject(t))for(i in t)n.isFunction(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return s=d.getElementById(i[2]),s&&s.parentNode&&(this.length=1,this[0]=s),this.context=d,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):n.isFunction(e)?void 0!==r.ready?r.ready(e):e(n):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),n.makeArray(e,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(e){var t=n(e,this),r=t.length;return this.filter(function(){for(var e=0;r>e;e++)if(n.contains(this,t[e]))return!0})},closest:function(e,t){for(var r,i=0,s=this.length,o=[],u=w.test(e)||"string"!=typeof e?n(e,t||this.context):0;s>i;i++)for(r=this[i];r&&r!==t;r=r.parentNode)if(r.nodeType<11&&(u?u.index(r)>-1:1===r.nodeType&&n.find.matchesSelector(r,e))){o.push(r);break}return this.pushStack(o.length>1?n.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?h.call(n(e),this[0]):h.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),n.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return u(e,"parentNode")},parentsUntil:function(e,t,n){return u(e,"parentNode",n)},next:function(e){return F(e,"nextSibling")},prev:function(e){return F(e,"previousSibling")},nextAll:function(e){return u(e,"nextSibling")},prevAll:function(e){return u(e,"previousSibling")},nextUntil:function(e,t,n){return u(e,"nextSibling",n)},prevUntil:function(e,t,n){return u(e,"previousSibling",n)},siblings:function(e){return v((e.parentNode||{}).firstChild,e)},children:function(e){return v(e.firstChild)},contents:function(e){return e.contentDocument||n.merge([],e.childNodes)}},function(e,t){n.fn[e]=function(r,i){var s=n.map(this,t,r);return"Until"!==e.slice(-5)&&(i=r),i&&"string"==typeof i&&(s=n.filter(i,s)),this.length>1&&(E[e]||n.uniqueSort(s),D.test(e)&&s.reverse()),this.pushStack(s)}});var G=/\S+/g;n.Callbacks=function(e){e="string"==typeof e?H(e):n.extend({},e);var t,r,i,s,o=[],u=[],a=-1,f=function(){for(s=e.once,i=t=!0;u.length;a=-1){r=u.shift();while(++a<o.length)o[a].apply(r[0],r[1])===!1&&e.stopOnFalse&&(a=o.length,r=!1)}e.memory||(r=!1),t=!1,s&&(o=r?[]:"")},l={add:function(){return o&&(r&&!t&&(a=o.length-1,u.push(r)),function i(t){n.each(t,function(t,r){n.isFunction(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==n.type(r)&&i(r)})}(arguments),r&&!t&&f()),this},remove:function(){return n.each(arguments,function(e,t){var r;while((r=n.inArray(t,o,r))>-1)o.splice(r,1),a>=r&&a--}),this},has:function(e){return e?n.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return s=u=[],o=r="",this},disabled:function(){return!o},lock:function(){return s=u=[],r||(o=r=""),this},locked:function(){return!!s},fireWith:function(e,n){return s||(n=n||[],n=[e,n.slice?n.slice():n],u.push(n),t||f()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!i}};return l},n.extend({Deferred:function(e){var t=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],r="pending",i={state:function(){return r},always:function(){return s.done(arguments).fail(arguments),this},then:function(){var e=arguments;return n.Deferred(function(r){n.each(t,function(t,o){var u=n.isFunction(e[t])&&e[t];s[o[1]](function(){var e=u&&u.apply(this,arguments);e&&n.isFunction(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[o[0]+"With"](this===i?r.promise():this,u?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?n.extend(e,i):i}},s={};return i.pipe=i.then,n.each(t,function(e,n){var o=n[2],u=n[3];i[n[1]]=o.add,u&&o.add(function(){r=u},t[1^e][2].disable,t[2][2].lock),s[n[0]]=function(){return s[n[0]+"With"](this===s?i:this,arguments),this},s[n[0]+"With"]=o.fireWith}),i.promise(s),e&&e.call(s,s),s},when:function(t){var r=0,i=e.call(arguments),s=i.length,o=1!==s||t&&n.isFunction(t.promise)?s:0,u=1===o?t:n.Deferred(),a=function(t,n,r){return function(i){n[t]=this,r[t]=arguments.length>1?e.call(arguments):i,r===f?u.notifyWith(n,r):--o||u.resolveWith(n,r)}},f,l,c;if(s>1)for(f=new Array(s),l=new Array(s),c=new Array(s);s>r;r++)i[r]&&n.isFunction(i[r].promise)?i[r].promise().progress(a(r,l,f)).done(a(r,c,i)).fail(u.reject):--o;return o||u.resolveWith(c,i),u.promise()}});var I;n.fn.ready=function(e){return n.ready.promise().done(e),this},n.extend({isReady:!1,readyWait:1,holdReady:function(e){e?n.readyWait++:n.ready(!0)},ready:function(e){(e===!0?--n.readyWait:n.isReady)||(n.isReady=!0,e!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}}),n.ready.promise=function(e){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(e)},n.ready.promise();var K=function(e,t,r,i,s,o,u){var a=0,f=e.length,l=null==r;if("object"===n.type(r)){s=!0;for(a in r)K(e,t,a,r[a],!0,o,u)}else if(void 0!==i&&(s=!0,n.isFunction(i)||(u=!0),l&&(u?(t.call(e,i),t=null):(l=t,t=function(e,t,r){return l.call(n(e),r)})),t))for(;f>a;a++)t(e[a],r,u?i:i.call(e[a],a,t(e[a],r)));return s?e:l?t.call(e):f?t(e[0],r):o},L=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};M.uid=1,M.prototype={register:function(e,t){var n=t||{};return e.nodeType?e[this.expando]=n:Object.defineProperty(e,this.expando,{value:n,writable:!0,configurable:!0}),e[this.expando]},cache:function(e){if(!L(e))return{};var t=e[this.expando];return t||(t={},L(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[t]=n;else for(r in t)i[r]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][t]},access:function(e,t,r){var i;return void 0===t||t&&"string"==typeof t&&void 0===r?(i=this.get(e,t),void 0!==i?i:this.get(e,n.camelCase(t))):(this.set(e,t,r),void 0!==r?r:t)},remove:function(e,t){var r,i,s,o=e[this.expando];if(void 0!==o){if(void 0===t)this.register(e);else{n.isArray(t)?i=t.concat(t.map(n.camelCase)):(s=n.camelCase(t),t in o?i=[t,s]:(i=s,i=i in o?[i]:i.match(G)||[])),r=i.length;while(r--)delete o[i[r]]}(void 0===t||n.isEmptyObject(o))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!n.isEmptyObject(t)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;n.extend({hasData:function(e){return O.hasData(e)||N.hasData(e)},data:function(e,t,n){return O.access(e,t,n)},removeData:function(e,t){O.remove(e,t)},_data:function(e,t,n){return N.access(e,t,n)},_removeData:function(e,t){N.remove(e,t)}}),n.fn.extend({data:function(e,t){var r,i,s,o=this[0],u=o&&o.attributes;if(void 0===e){if(this.length&&(s=O.get(o),1===o.nodeType&&!N.get(o,"hasDataAttrs"))){r=u.length;while(r--)u[r]&&(i=u[r].name,0===i.indexOf("data-")&&(i=n.camelCase(i.slice(5)),R(o,i,s[i])));N.set(o,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each(function(){O.set(this,e)}):K(this,function(t){var r,i;if(o&&void 0===t){if(r=O.get(o,e)||O.get(o,e.replace(Q,"-$&").toLowerCase()),void 0!==r)return r;if(i=n.camelCase(e),r=O.get(o,i),void 0!==r)return r;if(r=R(o,i,void 0),void 0!==r)return r}else i=n.camelCase(e),this.each(function(){var n=O.get(this,i);O.set(this,i,t),e.indexOf("-")>-1&&void 0!==n&&O.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){O.remove(this,e)})}}),n.extend({queue:function(e,t,r){var i;return e?(t=(t||"fx")+"queue",i=N.get(e,t),r&&(!i||n.isArray(r)?i=N.access(e,t,n.makeArray(r)):i.push(r)),i||[]):void 0},dequeue:function(e,t){t=t||"fx";var r=n.queue(e,t),i=r.length,s=r.shift(),o=n._queueHooks(e,t),u=function(){n.dequeue(e,t)};"inprogress"===s&&(s=r.shift(),i--),s&&("fx"===t&&r.unshift("inprogress"),delete o.stop,s.call(e,u,o)),!i&&o&&o.empty.fire()},_queueHooks:function(e,t){var r=t+"queueHooks";return N.get(e,r)||N.access(e,r,{empty:n.Callbacks("once memory").add(function(){N.remove(e,[t+"queue",r])})})}}),n.fn.extend({queue:function(e,t){var r=2;return"string"!=typeof e&&(t=e,e="fx",r--),arguments.length<r?n.queue(this[0],e):void 0===t?this:this.each(function(){var r=n.queue(this,e,t);n._queueHooks(this,e),"fx"===e&&"inprogress"!==r[0]&&n.dequeue(this,e)})},dequeue:function(e){return this.each(function(){n.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var r,i=1,s=n.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(u--)r=N.get(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(t)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),U=["Top","Right","Bottom","Left"],V=function(e,t){return e=t||e,"none"===n.css(e,"display")||!n.contains(e.ownerDocument,e)},X=/^(?:checkbox|radio)$/i,Y=/<([\w:-]+)/,Z=/^$|\/(?:java|ecma)script/i,$={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,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;var ba=/<|&#?\w+;/;!function(){var e=d.createDocumentFragment(),t=e.appendChild(d.createElement("div")),n=d.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),l.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;n.event={global:{},add:function(e,t,r,i,s){var o,u,a,f,l,c,h,p,d,v,m,g=N.get(e);if(g){r.handler&&(o=r,r=o.handler,s=o.selector),r.guid||(r.guid=n.guid++),(f=g.events)||(f=g.events={}),(u=g.handle)||(u=g.handle=function(t){return"undefined"!=typeof n&&n.event.triggered!==t.type?n.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(G)||[""],l=t.length;while(l--)a=fa.exec(t[l])||[],d=m=a[1],v=(a[2]||"").split(".").sort(),d&&(h=n.event.special[d]||{},d=(s?h.delegateType:h.bindType)||d,h=n.event.special[d]||{},c=n.extend({type:d,origType:m,data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&n.expr.match.needsContext.test(s),namespace:v.join(".")},o),(p=f[d])||(p=f[d]=[],p.delegateCount=0,h.setup&&h.setup.call(e,i,v,u)!==!1||e.addEventListener&&e.addEventListener(d,u)),h.add&&(h.add.call(e,c),c.handler.guid||(c.handler.guid=r.guid)),s?p.splice(p.delegateCount++,0,c):p.push(c),n.event.global[d]=!0)}},remove:function(e,t,r,i,s){var o,u,a,f,l,c,h,p,d,v,m,g=N.hasData(e)&&N.get(e);if(g&&(f=g.events)){t=(t||"").match(G)||[""],l=t.length;while(l--)if(a=fa.exec(t[l])||[],d=m=a[1],v=(a[2]||"").split(".").sort(),d){h=n.event.special[d]||{},d=(i?h.delegateType:h.bindType)||d,p=f[d]||[],a=a[2]&&new RegExp("(^|\\.)"+v.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=p.length;while(o--)c=p[o],!s&&m!==c.origType||r&&r.guid!==c.guid||a&&!a.test(c.namespace)||i&&i!==c.selector&&("**"!==i||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,h.remove&&h.remove.call(e,c));u&&!p.length&&(h.teardown&&h.teardown.call(e,v,g.handle)!==!1||n.removeEvent(e,d,g.handle),delete f[d])}else for(d in f)n.event.remove(e,d+t[l],r,i,!0);n.isEmptyObject(f)&&N.remove(e,"handle events")}},dispatch:function(t){t=n.event.fix(t);var r,i,s,o,u,a=[],f=e.call(arguments),l=(N.get(this,"events")||{})[t.type]||[],c=n.event.special[t.type]||{};if(f[0]=t,t.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,t)!==!1){a=n.event.handlers.call(this,t,l),r=0;while((o=a[r++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,i=0;while((u=o.handlers[i++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(u.namespace)||(t.handleObj=u,t.data=u.data,s=((n.event.special[u.origType]||{}).handle||u.handler).apply(o.elem,f),void 0!==s&&(t.result=s)===!1&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var r,i,s,o,u=[],a=t.delegateCount,f=e.target;if(a&&f.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;f!==this;f=f.parentNode||this)if(1===f.nodeType&&(f.disabled!==!0||"click"!==e.type)){for(i=[],r=0;a>r;r++)o=t[r],s=o.selector+" ",void 0===i[s]&&(i[s]=o.needsContext?n(s,this).index(f)>-1:n.find(s,this,null,[f]).length),i[s]&&i.push(o);i.length&&u.push({elem:f,handlers:i})}return a<t.length&&u.push({elem:this,handlers:t.slice(a)}),u},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||d,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||void 0===s||(e.which=1&s?1:2&s?3:4&s?2:0),e}},fix:function(e){if(e[n.expando])return e;var t,r,i,s=e.type,o=e,u=this.fixHooks[s];u||(this.fixHooks[s]=u=ea.test(s)?this.mouseHooks:da.test(s)?this.keyHooks:{}),i=u.props?this.props.concat(u.props):this.props,e=new n.Event(o),t=i.length;while(t--)r=i[t],e[r]=o[r];return e.target||(e.target=d),3===e.target.nodeType&&(e.target=e.target.parentNode),u.filter?u.filter(e,o):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==ia()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===ia()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(e){return n.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},n.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},n.Event=function(e,t){return this instanceof n.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?ga:ha):this.type=e,t&&n.extend(this,t),this.timeStamp=e&&e.timeStamp||n.now(),void (this[n.expando]=!0)):new n.Event(e,t)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:ha,isPropagationStopped:ha,isImmediatePropagationStopped:ha,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ga,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ga,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ga,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){n.event.special[e]={delegateType:t,bindType:t,handle:function(e){var r,i=this,s=e.relatedTarget,o=e.handleObj;return s&&(s===i||n.contains(i,s))||(e.type=o.origType,r=o.handler.apply(this,arguments),e.type=t),r}}}),n.fn.extend({on:function(e,t,n,r){return ja(this,e,t,n,r)},one:function(e,t,n,r){return ja(this,e,t,n,r,1)},off:function(e,t,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,n(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(s in e)this.off(s,t,e[s]);return this}return t!==!1&&"function"!=typeof t||(r=t,t=void 0),r===!1&&(r=ha),this.each(function(){n.event.remove(this,e,r,t)})}});var ka=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,la=/<script|<style|<link/i,ma=/checked\s*(?:[^=]|=\s*.checked.)/i,na=/^true\/(.*)/,oa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;n.extend({htmlPrefilter:function(e){return e.replace(ka,"<$1></$2>")},clone:function(e,t,r){var i,s,o,u,a=e.cloneNode(!0),f=n.contains(e.ownerDocument,e);if(!(l.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||n.isXMLDoc(e)))for(u=_(a),o=_(e),i=0,s=o.length;s>i;i++)ta(o[i],u[i]);if(t)if(r)for(o=o||_(e),u=u||_(a),i=0,s=o.length;s>i;i++)sa(o[i],u[i]);else sa(e,a);return u=_(a,"script"),u.length>0&&aa(u,!f&&_(e,"script")),a},cleanData:function(e){for(var t,r,i,s=n.event.special,o=0;void 0!==(r=e[o]);o++)if(L(r)){if(t=r[N.expando]){if(t.events)for(i in t.events)s[i]?n.event.remove(r,i):n.removeEvent(r,i,t.handle);r[N.expando]=void 0}r[O.expando]&&(r[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(e){return va(this,e,!0)},remove:function(e){return va(this,e)},text:function(e){return K(this,function(e){return void 0===e?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return ua(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pa(this,e);t.appendChild(e)}})},prepend:function(){return ua(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pa(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return ua(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return ua(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(n.cleanData(_(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return n.clone(this,e,t)})},html:function(e){return K(this,function(e){var t=this[0]||{},r=0,i=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!la.test(e)&&!$[(Y.exec(e)||["",""])[1].toLowerCase()]){e=n.htmlPrefilter(e);try{for(;i>r;r++)t=this[r]||{},1===t.nodeType&&(n.cleanData(_(t,!1)),t.innerHTML=e);t=0}catch(s){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return ua(this,arguments,function(t){var r=this.parentNode;n.inArray(this,e)<0&&(n.cleanData(_(this)),r&&r.replaceChild(t,this))},e)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){n.fn[e]=function(e){for(var r,i=[],s=n(e),o=s.length-1,u=0;o>=u;u++)r=u===o?this:this.clone(!0),n(s[u])[t](r),g.apply(i,r.get());return this.pushStack(i)}});var wa,xa={HTML:"block",BODY:"block"},Aa=/^margin/,Ba=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ca=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=a),t.getComputedStyle(e)},Da=function(e,t,n,r){var i,s,o={};for(s in t)o[s]=e.style[s],e.style[s]=t[s];i=n.apply(e,r||[]);for(s in t)e.style[s]=o[s];return i},Ea=d.documentElement;!function(){var e,t,r,i,s=d.createElement("div"),o=d.createElement("div");if(o.style){o.style.backgroundClip="content-box",o.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===o.style.backgroundClip,s.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",s.appendChild(o);function u(){o.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",o.innerHTML="",Ea.appendChild(s);var n=a.getComputedStyle(o);e="1%"!==n.top,i="2px"===n.marginLeft,t="4px"===n.width,o.style.marginRight="50%",r="4px"===n.marginRight,Ea.removeChild(s)}n.extend(l,{pixelPosition:function(){return u(),e},boxSizingReliable:function(){return null==t&&u(),t},pixelMarginRight:function(){return null==t&&u(),r},reliableMarginLeft:function(){return null==t&&u(),i},reliableMarginRight:function(){var e,t=o.appendChild(d.createElement("div"));return t.style.cssText=o.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",t.style.marginRight=t.style.width="0",o.style.width="1px",Ea.appendChild(s),e=!parseFloat(a.getComputedStyle(t).marginRight),Ea.removeChild(s),o.removeChild(t),e}})}}();var Ha=/^(none|table(?!-c[ea]).+)/,Ia={position:"absolute",visibility:"hidden",display:"block"},Ja={letterSpacing:"0",fontWeight:"400"},Ka=["Webkit","O","Moz","ms"],La=d.createElement("div").style;n.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fa(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var s,o,u,a=n.camelCase(t),f=e.style;return t=n.cssProps[a]||(n.cssProps[a]=Ma(a)||a),u=n.cssHooks[t]||n.cssHooks[a],void 0===r?u&&"get"in u&&void 0!==(s=u.get(e,!1,i))?s:f[t]:(o=typeof r,"string"===o&&(s=T.exec(r))&&s[1]&&(r=W(e,t,s),o="number"),null!=r&&r===r&&("number"===o&&(r+=s&&s[3]||(n.cssNumber[a]?"":"px")),l.clearCloneStyle||""!==r||0!==t.indexOf("background")||(f[t]="inherit"),u&&"set"in u&&void 0===(r=u.set(e,r,i))||(f[t]=r)),void 0)}},css:function(e,t,r,i){var s,o,u,a=n.camelCase(t);return t=n.cssProps[a]||(n.cssProps[a]=Ma(a)||a),u=n.cssHooks[t]||n.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,r)),void 0===s&&(s=Fa(e,t,i)),"normal"===s&&t in Ja&&(s=Ja[t]),""===r||r?(o=parseFloat(s),r===!0||isFinite(o)?o||0:s):s}}),n.each(["height","width"],function(e,t){n.cssHooks[t]={get:function(e,r,i){return r?Ha.test(n.css(e,"display"))&&0===e.offsetWidth?Da(e,Ia,function(){return Pa(e,t,i)}):Pa(e,t,i):void 0},set:function(e,r,i){var s,o=i&&Ca(e),u=i&&Oa(e,t,i,"border-box"===n.css(e,"boxSizing",!1,o),o);return u&&(s=T.exec(r))&&"px"!==(s[3]||"px")&&(e.style[t]=r,r=n.css(e,t)),Na(e,r,u)}}}),n.cssHooks.marginLeft=Ga(l.reliableMarginLeft,function(e,t){return t?(parseFloat(Fa(e,"marginLeft"))||e.getBoundingClientRect().left-Da(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px":void 0}),n.cssHooks.marginRight=Ga(l.reliableMarginRight,function(e,t){return t?Da(e,{display:"inline-block"},Fa,[e,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(e,t){n.cssHooks[e+t]={expand:function(n){for(var r=0,i={},s="string"==typeof n?n.split(" "):[n];4>r;r++)i[e+U[r]+t]=s[r]||s[r-2]||s[0];return i}},Aa.test(e)||(n.cssHooks[e+t].set=Na)}),n.fn.extend({css:function(e,t){return K(this,function(e,t,r){var i,s,o={},u=0;if(n.isArray(t)){for(i=Ca(e),s=t.length;s>u;u++)o[t[u]]=n.css(e,t[u],!1,i);return o}return void 0!==r?n.style(e,t,r):n.css(e,t)},e,t,arguments.length>1)},show:function(){return Qa(this,!0)},hide:function(){return Qa(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}}),n.Tween=Ra,Ra.prototype={constructor:Ra,init:function(e,t,r,i,s,o){this.elem=e,this.prop=r,this.easing=s||n.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=o||(n.cssNumber[r]?"":"px")},cur:function(){var e=Ra.propHooks[this.prop];return e&&e.get?e.get(this):Ra.propHooks._default.get(this)},run:function(e){var t,r=Ra.propHooks[this.prop];return this.options.duration?this.pos=t=n.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),r&&r.set?r.set(this):Ra.propHooks._default.set(this),this}},Ra.prototype.init.prototype=Ra.prototype,Ra.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=n.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){n.fx.step[e.prop]?n.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[n.cssProps[e.prop]]&&!n.cssHooks[e.prop]?e.elem[e.prop]=e.now:n.style(e.elem,e.prop,e.now+e.unit)}}},Ra.propHooks.scrollTop=Ra.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},n.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},n.fx=Ra.prototype.init,n.fx.step={};var Sa,Ta,Ua=/^(?:toggle|show|hide)$/,Va=/queueHooks$/;n.Animation=n.extend(_a,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return W(n.elem,e,T.exec(t),n),n}]},tweener:function(e,t){n.isFunction(e)?(t=e,e=["*"]):e=e.match(G);for(var r,i=0,s=e.length;s>i;i++)r=e[i],_a.tweeners[r]=_a.tweeners[r]||[],_a.tweeners[r].unshift(t)},prefilters:[Za],prefilter:function(e,t){t?_a.prefilters.unshift(e):_a.prefilters.push(e)}}),n.speed=function(e,t,r){var i=e&&"object"==typeof e?n.extend({},e):{complete:r||!r&&t||n.isFunction(e)&&e,duration:e,easing:r&&t||t&&!n.isFunction(t)&&t};return i.duration=n.fx.off?0:"number"==typeof i.duration?i.duration:i.duration in n.fx.speeds?n.fx.speeds[i.duration]:n.fx.speeds._default,null!=i.queue&&i.queue!==!0||(i.queue="fx"),i.old=i.complete,i.complete=function(){n.isFunction(i.old)&&i.old.call(this),i.queue&&n.dequeue(this,i.queue)},i},n.fn.extend({fadeTo:function(e,t,n,r){return this.filter(V).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,r,i){var s=n.isEmptyObject(e),o=n.speed(t,r,i),u=function(){var t=_a(this,n.extend({},e),o);(s||N.get(this,"finish"))&&t.stop(!0)};return u.finish=u,s||o.queue===!1?this.each(u):this.queue(o.queue,u)},stop:function(e,t,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,s=null!=e&&e+"queueHooks",o=n.timers,u=N.get(this);if(s)u[s]&&u[s].stop&&i(u[s]);else for(s in u)u[s]&&u[s].stop&&Va.test(s)&&i(u[s]);for(s=o.length;s--;)o[s].elem!==this||null!=e&&o[s].queue!==e||(o[s].anim.stop(r),t=!1,o.splice(s,1));!t&&r||n.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,r=N.get(this),i=r[e+"queue"],s=r[e+"queueHooks"],o=n.timers,u=i?i.length:0;for(r.finish=!0,n.queue(this,e,[]),s&&s.stop&&s.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;u>t;t++)i[t]&&i[t].finish&&i[t].finish.call(this);delete r.finish})}}),n.each(["toggle","show","hide"],function(e,t){var r=n.fn[t];n.fn[t]=function(e,n,i){return null==e||"boolean"==typeof e?r.apply(this,arguments):this.animate(Xa(t,!0),e,n,i)}}),n.each({slideDown:Xa("show"),slideUp:Xa("hide"),slideToggle:Xa("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){n.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),n.timers=[],n.fx.tick=function(){var e,t=0,r=n.timers;for(Sa=n.now();t<r.length;t++)e=r[t],e()||r[t]!==e||r.splice(t--,1);r.length||n.fx.stop(),Sa=void 0},n.fx.timer=function(e){n.timers.push(e),e()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ta||(Ta=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(Ta),Ta=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(e,t){return e=n.fx?n.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=a.setTimeout(t,e);n.stop=function(){a.clearTimeout(r)}})},function(){var e=d.createElement("input"),t=d.createElement("select"),n=t.appendChild(d.createElement("option"));e.type="checkbox",l.checkOn=""!==e.value,l.optSelected=n.selected,t.disabled=!0,l.optDisabled=!n.disabled,e=d.createElement("input"),e.value="t",e.type="radio",l.radioValue="t"===e.value}();var ab,bb=n.expr.attrHandle;n.fn.extend({attr:function(e,t){return K(this,n.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){n.removeAttr(this,e)})}}),n.extend({attr:function(e,t,r){var i,s,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?n.prop(e,t,r):(1===o&&n.isXMLDoc(e)||(t=t.toLowerCase(),s=n.attrHooks[t]||(n.expr.match.bool.test(t)?ab:void 0)),void 0!==r?null===r?void n.removeAttr(e,t):s&&"set"in s&&void 0!==(i=s.set(e,r,t))?i:(e.setAttribute(t,r+""),r):s&&"get"in s&&null!==(i=s.get(e,t))?i:(i=n.find.attr(e,t),null==i?void 0:i))},attrHooks:{type:{set:function(e,t){if(!l.radioValue&&"radio"===t&&n.nodeName(e,"input")){var r=e.value;return e.setAttribute("type",t),r&&(e.value=r),t}}}},removeAttr:function(e,t){var r,i,s=0,o=t&&t.match(G);if(o&&1===e.nodeType)while(r=o[s++])i=n.propFix[r]||r,n.expr.match.bool.test(r)&&(e[i]=!1),e.removeAttribute(r)}}),ab={set:function(e,t,r){return t===!1?n.removeAttr(e,r):e.setAttribute(r,r),r}},n.each(n.expr.match.bool.source.match(/\w+/g),function(e,t){var r=bb[t]||n.find.attr;bb[t]=function(e,t,n){var i,s;return n||(s=bb[t],bb[t]=i,i=null!=r(e,t,n)?t.toLowerCase():null,bb[t]=s),i}});var cb=/^(?:input|select|textarea|button)$/i,db=/^(?:a|area)$/i;n.fn.extend({prop:function(e,t){return K(this,n.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[n.propFix[e]||e]})}}),n.extend({prop:function(e,t,r){var i,s,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&n.isXMLDoc(e)||(t=n.propFix[t]||t,s=n.propHooks[t]),void 0!==r?s&&"set"in s&&void 0!==(i=s.set(e,r,t))?i:e[t]=r:s&&"get"in s&&null!==(i=s.get(e,t))?i:e[t]},propHooks:{tabIndex:{get:function(e){var t=n.find.attr(e,"tabindex");return t?parseInt(t,10):cb.test(e.nodeName)||db.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.optSelected||(n.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var eb=/[\t\r\n\f]/g;n.fn.extend({addClass:function(e){var t,r,i,s,o,u,a,f=0;if(n.isFunction(e))return this.each(function(t){n(this).addClass(e.call(this,t,fb(this)))});if("string"==typeof e&&e){t=e.match(G)||[];while(r=this[f++])if(s=fb(r),i=1===r.nodeType&&(" "+s+" ").replace(eb," ")){u=0;while(o=t[u++])i.indexOf(" "+o+" ")<0&&(i+=o+" ");a=n.trim(i),s!==a&&r.setAttribute("class",a)}}return this},removeClass:function(e){var t,r,i,s,o,u,a,f=0;if(n.isFunction(e))return this.each(function(t){n(this).removeClass(e.call(this,t,fb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e){t=e.match(G)||[];while(r=this[f++])if(s=fb(r),i=1===r.nodeType&&(" "+s+" ").replace(eb," ")){u=0;while(o=t[u++])while(i.indexOf(" "+o+" ")>-1)i=i.replace(" "+o+" "," ");a=n.trim(i),s!==a&&r.setAttribute("class",a)}}return this},toggleClass:function(e,t){var r=typeof e;return"boolean"==typeof t&&"string"===r?t?this.addClass(e):this.removeClass(e):n.isFunction(e)?this.each(function(r){n(this).toggleClass(e.call(this,r,fb(this),t),t)}):this.each(function(){var t,i,s,o;if("string"===r){i=0,s=n(this),o=e.match(G)||[];while(t=o[i++])s.hasClass(t)?s.removeClass(t):s.addClass(t)}else void 0!==e&&"boolean"!==r||(t=fb(this),t&&N.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||e===!1?"":N.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+fb(n)+" ").replace(eb," ").indexOf(t)>-1)return!0;return!1}});var gb=/\r/g,hb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(e){var t,r,i,s=this[0];if(arguments.length)return i=n.isFunction(e),this.each(function(r){var s;1===this.nodeType&&(s=i?e.call(this,r,n(this).val()):e,null==s?s="":"number"==typeof s?s+="":n.isArray(s)&&(s=n.map(s,function(e){return null==e?"":e+""})),t=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,s,"value")||(this.value=s))});if(s)return t=n.valHooks[s.type]||n.valHooks[s.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(r=t.get(s,"value"))?r:(r=s.value,"string"==typeof r?r.replace(gb,""):null==r?"":r)}}),n.extend({valHooks:{option:{get:function(e){var t=n.find.attr(e,"value");return null!=t?t:n.trim(n.text(e)).replace(hb," ")}},select:{get:function(e){for(var t,r,i=e.options,s=e.selectedIndex,o="select-one"===e.type||0>s,u=o?null:[],a=o?s+1:i.length,f=0>s?a:o?s:0;a>f;f++)if(r=i[f],(r.selected||f===s)&&(l.optDisabled?!r.disabled:null===r.getAttribute("disabled"))&&(!r.parentNode.disabled||!n.nodeName(r.parentNode,"optgroup"))){if(t=n(r).val(),o)return t;u.push(t)}return u},set:function(e,t){var r,i,s=e.options,o=n.makeArray(t),u=s.length;while(u--)i=s[u],(i.selected=n.inArray(n.valHooks.option.get(i),o)>-1)&&(r=!0);return r||(e.selectedIndex=-1),o}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(e,t){return n.isArray(t)?e.checked=n.inArray(n(e).val(),t)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var ib=/^(?:focusinfocus|focusoutblur)$/;n.extend(n.event,{trigger:function(e,t,r,i){var s,o,u,f,l,c,h,p=[r||d],v=k.call(e,"type")?e.type:e,m=k.call(e,"namespace")?e.namespace.split("."):[];if(o=u=r=r||d,3!==r.nodeType&&8!==r.nodeType&&!ib.test(v+n.event.triggered)&&(v.indexOf(".")>-1&&(m=v.split("."),v=m.shift(),m.sort()),l=v.indexOf(":")<0&&"on"+v,e=e[n.expando]?e:new n.Event(v,"object"==typeof e&&e),e.isTrigger=i?2:3,e.namespace=m.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=r),t=null==t?[e]:n.makeArray(t,[e]),h=n.event.special[v]||{},i||!h.trigger||h.trigger.apply(r,t)!==!1)){if(!i&&!h.noBubble&&!n.isWindow(r)){for(f=h.delegateType||v,ib.test(f+v)||(o=o.parentNode);o;o=o.parentNode)p.push(o),u=o;u===(r.ownerDocument||d)&&p.push(u.defaultView||u.parentWindow||a)}s=0;while((o=p[s++])&&!e.isPropagationStopped())e.type=s>1?f:h.bindType||v,c=(N.get(o,"events")||{})[e.type]&&N.get(o,"handle"),c&&c.apply(o,t),c=l&&o[l],c&&c.apply&&L(o)&&(e.result=c.apply(o,t),e.result===!1&&e.preventDefault());return e.type=v,i||e.isDefaultPrevented()||h._default&&h._default.apply(p.pop(),t)!==!1||!L(r)||l&&n.isFunction(r[v])&&!n.isWindow(r)&&(u=r[l],u&&(r[l]=null),n.event.triggered=v,r[v](),n.event.triggered=void 0,u&&(r[l]=u)),e.result}},simulate:function(e,t,r){var i=n.extend(new n.Event,r,{type:e,isSimulated:!0});n.event.trigger(i,null,t)}}),n.fn.extend({trigger:function(e,t){return this.each(function(){n.event.trigger(e,t,this)})},triggerHandler:function(e,t){var r=this[0];return r?n.event.trigger(e,t,r,!0):void 0}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){n.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),n.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),l.focusin="onfocusin"in a,l.focusin||n.each({focus:"focusin",blur:"focusout"},function(e,t){var r=function(e){n.event.simulate(t,e.target,n.event.fix(e))};n.event.special[t]={setup:function(){var n=this.ownerDocument||this,i=N.access(n,t);i||n.addEventListener(e,r,!0),N.access(n,t,(i||0)+1)},teardown:function(){var n=this.ownerDocument||this,i=N.access(n,t)-1;i?N.access(n,t,i):(n.removeEventListener(e,r,!0),N.remove(n,t))}}});var jb=a.location,kb=n.now(),lb=/\?/;n.parseJSON=function(e){return JSON.parse(e+"")},n.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new a.DOMParser).parseFromString(e,"text/xml")}catch(r){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+e),t};var mb=/#.*$/,nb=/([?&])_=[^&]*/,ob=/^(.*?):[ \t]*([^\r\n]*)$/gm,pb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,qb=/^(?:GET|HEAD)$/,rb=/^\/\//,sb={},tb={},ub="*/".concat("*"),vb=d.createElement("a");vb.href=jb.href,n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:jb.href,type:"GET",isLocal:pb.test(jb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ub,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":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?yb(yb(e,n.ajaxSettings),t):yb(n.ajaxSettings,e)},ajaxPrefilter:wb(sb),ajaxTransport:wb(tb),ajax:function(e,t){function N(e,t,o,f){var c,d,b,w,S,T=t;2!==E&&(E=2,u&&a.clearTimeout(u),r=void 0,s=f||"",x.readyState=e>0?4:0,c=e>=200&&300>e||304===e,o&&(w=zb(h,x,o)),w=Ab(h,w,x,c),c?(h.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(n.lastModified[i]=S),S=x.getResponseHeader("etag"),S&&(n.etag[i]=S)),204===e||"HEAD"===h.type?T="nocontent":304===e?T="notmodified":(T=w.state,d=w.data,b=w.error,c=!b)):(b=T,!e&&T||(T="error",0>e&&(e=0))),x.status=e,x.statusText=(t||T)+"",c?m.resolveWith(p,[d,T,x]):m.rejectWith(p,[x,T,b]),x.statusCode(y),y=void 0,l&&v.trigger(c?"ajaxSuccess":"ajaxError",[x,h,c?d:b]),g.fireWith(p,[x,T]),l&&(v.trigger("ajaxComplete",[x,h]),--n.active||n.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var r,i,s,o,u,f,l,c,h=n.ajaxSetup({},t),p=h.context||h,v=h.context&&(p.nodeType||p.jquery)?n(p):n.event,m=n.Deferred(),g=n.Callbacks("once memory"),y=h.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,getResponseHeader:function(e){var t;if(2===E){if(!o){o={};while(t=ob.exec(s))o[t[1].toLowerCase()]=t[2]}t=o[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===E?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return E||(e=w[n]=w[n]||e,b[e]=t),this},overrideMimeType:function(e){return E||(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>E)for(t in e)y[t]=[y[t],e[t]];else x.always(e[x.status]);return this},abort:function(e){var t=e||S;return r&&r.abort(t),N(0,t),this}};if(m.promise(x).complete=g.add,x.success=x.done,x.error=x.fail,h.url=((e||h.url||jb.href)+"").replace(mb,"").replace(rb,jb.protocol+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=n.trim(h.dataType||"*").toLowerCase().match(G)||[""],null==h.crossDomain){f=d.createElement("a");try{f.href=h.url,f.href=f.href,h.crossDomain=vb.protocol+"//"+vb.host!=f.protocol+"//"+f.host}catch(T){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=n.param(h.data,h.traditional)),xb(sb,h,t,x),2===E)return x;l=n.event&&h.global,l&&0===n.active++&&n.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!qb.test(h.type),i=h.url,h.hasContent||(h.data&&(i=h.url+=(lb.test(i)?"&":"?")+h.data,delete h.data),h.cache===!1&&(h.url=nb.test(i)?i.replace(nb,"$1_="+kb++):i+(lb.test(i)?"&":"?")+"_="+kb++)),h.ifModified&&(n.lastModified[i]&&x.setRequestHeader("If-Modified-Since",n.lastModified[i]),n.etag[i]&&x.setRequestHeader("If-None-Match",n.etag[i])),(h.data&&h.hasContent&&h.contentType!==!1||t.contentType)&&x.setRequestHeader("Content-Type",h.contentType),x.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+ub+"; q=0.01":""):h.accepts["*"]);for(c in h.headers)x.setRequestHeader(c,h.headers[c]);if(!h.beforeSend||h.beforeSend.call(p,x,h)!==!1&&2!==E){S="abort";for(c in{success:1,error:1,complete:1})x[c](h[c]);if(r=xb(tb,h,t,x)){if(x.readyState=1,l&&v.trigger("ajaxSend",[x,h]),2===E)return x;h.async&&h.timeout>0&&(u=a.setTimeout(function(){x.abort("timeout")},h.timeout));try{E=1,r.send(b,N)}catch(T){if(!(2>E))throw T;N(-1,T)}}else N(-1,"No Transport");return x}return x.abort()},getJSON:function(e,t,r){return n.get(e,t,r,"json")},getScript:function(e,t){return n.get(e,void 0,t,"script")}}),n.each(["get","post"],function(e,t){n[t]=function(e,r,i,s){return n.isFunction(r)&&(s=s||i,i=r,r=void 0),n.ajax(n.extend({url:e,type:t,dataType:s,data:r,success:i},n.isPlainObject(e)&&e))}}),n._evalUrl=function(e){return n.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(e){var t;return n.isFunction(e)?this.each(function(t){n(this).wrapAll(e.call(this,t))}):(this[0]&&(t=n(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return n.isFunction(e)?this.each(function(t){n(this).wrapInner(e.call(this,t))}):this.each(function(){var t=n(this),r=t.contents();r.length?r.wrapAll(e):t.append(e)})},wrap:function(e){var t=n.isFunction(e);return this.each(function(r){n(this).wrapAll(t?e.call(this,r):e)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(e){return!n.expr.filters.visible(e)},n.expr.filters.visible=function(e){return e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0};var Bb=/%20/g,Cb=/\[\]$/,Db=/\r?\n/g,Eb=/^(?:submit|button|image|reset|file)$/i,Fb=/^(?:input|select|textarea|keygen)/i;n.param=function(e,t){var r,i=[],s=function(e,t){t=n.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(e)||e.jquery&&!n.isPlainObject(e))n.each(e,function(){s(this.name,this.value)});else for(r in e)Gb(r,e[r],t,s);return i.join("&").replace(Bb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=n.prop(this,"elements");return e?n.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!n(this).is(":disabled")&&Fb.test(this.nodeName)&&!Eb.test(e)&&(this.checked||!X.test(e))}).map(function(e,t){var r=n(this).val();return null==r?null:n.isArray(r)?n.map(r,function(e){return{name:t.name,value:e.replace(Db,"\r\n")}}):{name:t.name,value:r.replace(Db,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(e){}};var Hb={0:200,1223:204},Ib=n.ajaxSettings.xhr();l.cors=!!Ib&&"withCredentials"in Ib,l.ajax=Ib=!!Ib,n.ajaxTransport(function(e){var t,n;return l.cors||Ib&&!e.crossDomain?{send:function(r,i){var s,o=e.xhr();if(o.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(s in e.xhrFields)o[s]=e.xhrFields[s];e.mimeType&&o.overrideMimeType&&o.overrideMimeType(e.mimeType),e.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(s in r)o.setRequestHeader(s,r[s]);t=function(e){return function(){t&&(t=n=o.onload=o.onerror=o.onabort=o.onreadystatechange=null,"abort"===e?o.abort():"error"===e?"number"!=typeof o.status?i(0,"error"):i(o.status,o.statusText):i(Hb[o.status]||o.status,o.statusText,"text"!==(o.responseType||"text")||"string"!=typeof o.responseText?{binary:o.response}:{text:o.responseText},o.getAllResponseHeaders()))}},o.onload=t(),n=o.onerror=t("error"),void 0!==o.onabort?o.onabort=n:o.onreadystatechange=function(){4===o.readyState&&a.setTimeout(function(){t&&n()})},t=t("abort");try{o.send(e.hasContent&&e.data||null)}catch(u){if(t)throw u}},abort:function(){t&&t()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return n.globalEval(e),e}}}),n.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),n.ajaxTransport("script",function(e){if(e.crossDomain){var t,r;return{send:function(i,s){t=n("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",r=function(e){t.remove(),r=null,e&&s("error"===e.type?404:200,e.type)}),d.head.appendChild(t[0])},abort:function(){r&&r()}}}});var Jb=[],Kb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Jb.pop()||n.expando+"_"+kb++;return this[e]=!0,e}}),n.ajaxPrefilter("json jsonp",function(e,t,r){var i,s,o,u=e.jsonp!==!1&&(Kb.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Kb.test(e.data)&&"data");return u||"jsonp"===e.dataTypes[0]?(i=e.jsonpCallback=n.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,u?e[u]=e[u].replace(Kb,"$1"+i):e.jsonp!==!1&&(e.url+=(lb.test(e.url)?"&":"?")+e.jsonp+"="+i),e.converters["script json"]=function(){return o||n.error(i+" was not called"),o[0]},e.dataTypes[0]="json",s=a[i],a[i]=function(){o=arguments},r.always(function(){void 0===s?n(a).removeProp(i):a[i]=s,e[i]&&(e.jsonpCallback=t.jsonpCallback,Jb.push(i)),o&&n.isFunction(s)&&s(o[0]),o=s=void 0}),"script"):void 0}),n.parseHTML=function(e,t,r){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(r=t,t=!1),t=t||d;var i=x.exec(e),s=!r&&[];return i?[t.createElement(i[1])]:(i=ca([e],t,s),s&&s.length&&n(s).remove(),n.merge([],i.childNodes))};var Lb=n.fn.load;n.fn.load=function(e,t,r){if("string"!=typeof e&&Lb)return Lb.apply(this,arguments);var i,s,o,u=this,a=e.indexOf(" ");return a>-1&&(i=n.trim(e.slice(a)),e=e.slice(0,a)),n.isFunction(t)?(r=t,t=void 0):t&&"object"==typeof t&&(s="POST"),u.length>0&&n.ajax({url:e,type:s||"GET",dataType:"html",data:t}).done(function(e){o=arguments,u.html(i?n("<div>").append(n.parseHTML(e)).find(i):e)}).always(r&&function(e,t){u.each(function(){r.apply(this,o||[e.responseText,t,e])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){n.fn[t]=function(e){return this.on(t,e)}}),n.expr.filters.animated=function(e){return n.grep(n.timers,function(t){return e===t.elem}).length},n.offset={setOffset:function(e,t,r){var i,s,o,u,a,f,l,c=n.css(e,"position"),h=n(e),p={};"static"===c&&(e.style.position="relative"),a=h.offset(),o=n.css(e,"top"),f=n.css(e,"left"),l=("absolute"===c||"fixed"===c)&&(o+f).indexOf("auto")>-1,l?(i=h.position(),u=i.top,s=i.left):(u=parseFloat(o)||0,s=parseFloat(f)||0),n.isFunction(t)&&(t=t.call(e,r,n.extend({},a))),null!=t.top&&(p.top=t.top-a.top+u),null!=t.left&&(p.left=t.left-a.left+s),"using"in t?t.using.call(e,p):h.css(p)}},n.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){n.offset.setOffset(this,e,t)});var t,r,i=this[0],s={top:0,left:0},o=i&&i.ownerDocument;if(o)return t=o.documentElement,n.contains(t,i)?(s=i.getBoundingClientRect(),r=Mb(o),{top:s.top+r.pageYOffset-t.clientTop,left:s.left+r.pageXOffset-t.clientLeft}):s},position:function(){if(this[0]){var e,t,r=this[0],i={top:0,left:0};return"fixed"===n.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),n.nodeName(e[0],"html")||(i=e.offset()),i.top+=n.css(e[0],"borderTopWidth",!0),i.left+=n.css(e[0],"borderLeftWidth",!0)),{top:t.top-i.top-n.css(r,"marginTop",!0),left:t.left-i.left-n.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===n.css(e,"position"))e=e.offsetParent;return e||Ea})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var r="pageYOffset"===t;n.fn[e]=function(n){return K(this,function(e,n,i){var s=Mb(e);return void 0===i?s?s[t]:e[n]:void (s?s.scrollTo(r?s.pageXOffset:i,r?i:s.pageYOffset):e[n]=i)},e,n,arguments.length)}}),n.each(["top","left"],function(e,t){n.cssHooks[t]=Ga(l.pixelPosition,function(e,r){return r?(r=Fa(e,t),Ba.test(r)?n(e).position()[t]+"px":r):void 0})}),n.each({Height:"height",Width:"width"},function(e,t){n.each({padding:"inner"+e,content:t,"":"outer"+e},function(r,i){n.fn[i]=function(i,s){var o=arguments.length&&(r||"boolean"!=typeof i),u=r||(i===!0||s===!0?"margin":"border");return K(this,function(t,r,i){var s;return n.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(s=t.documentElement,Math.max(t.body["scroll"+e],s["scroll"+e],t.body["offset"+e],s["offset"+e],s["client"+e])):void 0===i?n.css(t,r,u):n.style(t,r,i,u)},t,o?i:void 0,o,null)}})}),n.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},size:function(){return this.length}}),n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Nb=a.jQuery,Ob=a.$;return n.noConflict=function(e){return a.$===n&&(a.$=Ob),e&&a.jQuery===n&&(a.jQuery=Nb),n},b||(a.jQuery=a.$=n),n}),define("config",["jquery"],function(e){function r(){if(typeof Storage!="undefined"&&window.swish.config_hash){var e;if(e=localStorage.getItem(t)){value=JSON.parse(e);if(value.hash==window.swish.config_hash)return value.config}}}function i(e){typeof Storage!="undefined"&&window.swish.config_hash&&localStorage.setItem(t,JSON.stringify({hash:window.swish.config_hash,config:e}))}var t="SWISHCONFIG",n;return n||(n=r())||e.ajax("swish_config.json",{dataType:"json",async:!1,success:function(e){n=e,i(n)},error:function(){alert("Failed to fetch configuration from server")}}),n}),define("preferences",["jquery"],function(e){function i(){var e=localStorage.getItem("notagain")||"[]",t;try{data=JSON.parse(e),typeof data!="object"&&(data=[])}catch(n){data=[]}return data}var t=typeof Storage!="undefined",n={},r={persistent:function(){return t},setNotAgain:function(e){if(t){var n=i();n.indexOf(e)<0&&(n.push(e),localStorage.setItem("notagain",JSON.stringify(n)))}},notagain:function(e){if(t){var n=i();return n.indexOf(e)>=0}return!1},broadcast:function(t,n){e(".swish-event-receiver").trigger("preference",{name:t,value:n})},setVal:function(e,n){t&&localStorage.setItem(e,JSON.stringify(n)),this.broadcast(e,n)},setDefault:function(e,t){n[e]=t},getVal:function(e){if(t){var r;if(r=localStorage.getItem(e))return value=JSON.parse(r),value}return n[e]}};return r}),define("history",["jquery","preferences"],function(e,t){var n={push:function(e){var t=window.location.pathname;if(t!=e.url){var n={location:e.url};e.meta&&(n.meta=e.meta),window.history.pushState(n,"",e.url),document.title="SWISH -- "+(e.file?e.file:"SWI-Prolog for SHaring")}},pop:function(t){t.state&&(t.state.meta&&t.state.meta.name?e(".swish").swish("playFile",t.state.meta.name):t.state.location&&(window.location=t.state.location))},recentMaxLength:10,addRecent:function(e){function i(e,t){return e.type==t.type&&e.id==t.id}var r=t.getVal("recentDocuments")||[];for(var s=0;s<r.length;s++)if(i(e,r[s])){r.splice(s,1);break}while(r.length+1>n.recentMaxLength)r.pop();r.splice(0,0,e),t.setVal("recentDocuments",r)},openRecent:function(e,t){return n.openRecent[t.st_type](e,t)},updateRecentUL:function(){var n=e(this),r=t.getVal("recentDocuments")||[];n.html("");for(var i=0;i<r.length;i++){var s=r[i],o=e.el.a(s.label||s.id);e(o).data("document",s),n.append(e.el.li(o))}}};return n.openRecent.gitty=function(t,n){e(t.target).parents(".swish").swish("playFile",n.id)},window.onpopstate=n.pop,n}),define("links",["jquery","config","modal"],function(e,t,n){var r={PlDoc:function(t,n){function r(e){var t={},n;(n=e.indexOf(":"))>0&&(t.module=e.substring(0,n),e=e.slice(n+1));if((n=e.indexOf("/"))>0){t.name=e.substring(0,n),e.charAt(n+1)=="/"?t.arity=parseInt(e.slice(n+2))+2:t.arity=parseInt(e.slice(n+1));if(!isNaN(t.arity))return t}}if(t){var i=r(decodeURIComponent(t));if(i)return e(n.target).closest("#ajaxModal").modal("hide"),e(".swish-event-receiver").trigger("pldoc",i),n.preventDefault(),!0}return!1},runQueryLink:function(t,r){var i=t.closest(".notebook"),s=t.data("query"),o=i.find('.nb-cell[name="'+s+'"]');if(o){var u=e().prologEditor("variables",o.nbCell("text"),!0),a="",f={},l=[];function c(e){for(var t=0;t<u.length;t++)if(u[t].toLowerCase()==e.toLowerCase())return u[t];l.push(e)}e.each(t.data(),function(e,t){var n;e!=="query"&&(n=c(e))&&(a!=""&&(a+=", "),a+=n+" = ("+t+")")}),l.length>0&&n.feedback({owner:i,type:"warning",duration:3e3,html:"The variables <b>"+l.join(", ")+"</b> do not appear in "+"query <b>"+s+"</b>"}),a!=""&&(f.bindings=a),o.nbCell("run",f)}},followLink:function(n){function o(){s=!0,n.preventDefault(),e(n.target).closest("#ajaxModal").modal("hide")}var i=e(n.target).closest("a"),s=!1;if(i.attr("href")){var u=t.http.locations.swish+"p/",a=t.http.locations.swish+"example/",f=i.attr("href"),l;if(f.startsWith(u)&&!f.match(/#/))o(),file=f.slice(u.length),e(n.target).parents(".swish").swish("playFile",file);else if(i.hasClass("store"))o(),l.alert("File does not appear to come from gitty store?");else if(i.hasClass("file")||f.startsWith(a)&&!f.match(/#/))o(),e(n.target).parents(".swish").swish("playURL",{url:f});else if(i.hasClass("builtin")&&f.match(/predicate=/))s=r.PlDoc(f.split("predicate=").pop(),n);else if(f.match(/object=/))s=r.PlDoc(f.split("object=").pop(),n);else if((l=e(n.target).closest("#ajaxModal")).length==1&&f.match(/#/)){var c=f.split("#").pop(),h;(h=l.find("#"+c)).length==1&&(s=!0,n.preventDefault(),l.animate({scrollTop:h.position().top},2e3))}s||(n.preventDefault(),window.open(f,"_blank"))}else i.data("query")&&r.runQueryLink(i,n)}};return r}),function(e){function n(){var e=document.createElement(arguments[0]);for(var n=1;n<arguments.length;n++){var r=arguments[n];if(r===null||r===undefined)continue;if(r.nodeType===1)e.appendChild(r);else if(!(r===""||r&&r.charCodeAt&&r.substr)&&!(r===0||r&&r.toExponential&&r.toFixed)){if(n===1&&typeof r=="object"){for(var i in r)if(r.hasOwnProperty(i)){var s=r[i];if(s!==null&&s!==undefined){i=i.toLowerCase(),i=t[i]||i;var o=i.charAt(0)==="o"&&i.charAt(1)==="n";o?(r.href===undefined&&i==="onclick"&&e.setAttribute("href","#"),e[i]=s):i==="style"&&e.style.setAttribute?e.style.setAttribute("cssText",s):i==="className"||i==="htmlFor"?e[i]=s:e.setAttribute(i,s)}}}else if(Object.prototype.toString.call(r)==="[object Array]")for(var u=0;u<r.length;u++){var a=r[u];a.nodeType===1&&e.appendChild(a)}}else e.appendChild(document.createTextNode(r))}return e.appendTo=function(e){return e.nodeType===1&&this.nodeType===1&&e.appendChild(this),this},e}var t={acceptcharset:"acceptCharset",accesskey:"accessKey",allowtransparency:"allowTransparency",bgcolor:"bgColor",cellpadding:"cellPadding",cellspacing:"cellSpacing","class":"className",classname:"className",colspan:"colSpan",csstext:"style",defaultchecked:"defaultChecked",defaultselected:"defaultSelected",defaultvalue:"defaultValue","for":"htmlFor",frameborder:"frameBorder",hspace:"hSpace",htmlfor:"htmlFor",longdesc:"longDesc",maxlength:"maxLength",marginwidth:"marginWidth",marginheight:"marginHeight",noresize:"noResize",noshade:"noShade",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",valign:"vAlign",vspace:"vSpace"};n.registerElement=function(e,t){n[e]||(n[e]=function(){var r=n("div",{"class":e});return t.apply(r,Array.prototype.slice.call(arguments)),r})};var r=["acronym","applet","basefont","big","center","dir","font","frame","frameset","noframes","strike","tt","u","xmp"],i=["a","abbr","address","area","article","aside","audio","b","base","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","command","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","keygen","kbd","label","legend","li","link","map","mark","menu","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","picture","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","ul","var","video","wbr"].concat(r),s=function(e){return function(){return n.apply(this,[e].concat(Array.prototype.slice.call(arguments)))}};for(var o=0;o<i.length;o++)n[i[o]]=s(i[o]);if(typeof module!="undefined"&&module.exports)module.exports=n;else{var u=e.$||{};u.el=n,e.$=u}}(this),define("laconic",["jquery"],function(){});if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(e){"use strict";var t=e.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1==t[0]&&9==t[1]&&t[2]<1||t[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(e){"use strict";function t(){var e=document.createElement("bootstrap"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var n in t)if(void 0!==e.style[n])return{end:t[n]};return!1}e.fn.emulateTransitionEnd=function(t){var n=!1,r=this;e(this).one("bsTransitionEnd",function(){n=!0});var i=function(){n||e(r).trigger(e.support.transition.end)};return setTimeout(i,t),this},e(function(){e.support.transition=t(),e.support.transition&&(e.event.special.bsTransitionEnd={bindType:e.support.transition.end,delegateType:e.support.transition.end,handle:function(t){return e(t.target).is(this)?t.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(e){"use strict";function t(t){return this.each(function(){var n=e(this),i=n.data("bs.alert");i||n.data("bs.alert",i=new r(this)),"string"==typeof t&&i[t].call(n)})}var n='[data-dismiss="alert"]',r=function(t){e(t).on("click",n,this.close)};r.VERSION="3.3.6",r.TRANSITION_DURATION=150,r.prototype.close=function(t){function n(){o.detach().trigger("closed.bs.alert").remove()}var i=e(this),s=i.attr("data-target");s||(s=i.attr("href"),s=s&&s.replace(/.*(?=#[^\s]*$)/,""));var o=e(s);t&&t.preventDefault(),o.length||(o=i.closest(".alert")),o.trigger(t=e.Event("close.bs.alert")),t.isDefaultPrevented()||(o.removeClass("in"),e.support.transition&&o.hasClass("fade")?o.one("bsTransitionEnd",n).emulateTransitionEnd(r.TRANSITION_DURATION):n())};var i=e.fn.alert;e.fn.alert=t,e.fn.alert.Constructor=r,e.fn.alert.noConflict=function(){return e.fn.alert=i,this},e(document).on("click.bs.alert.data-api",n,r.prototype.close)}(jQuery),+function(e){"use strict";function t(t){return this.each(function(){var r=e(this),i=r.data("bs.button"),s="object"==typeof t&&t;i||r.data("bs.button",i=new n(this,s)),"toggle"==t?i.toggle():t&&i.setState(t)})}var n=function(t,r){this.$element=e(t),this.options=e.extend({},n.DEFAULTS,r),this.isLoading=!1};n.VERSION="3.3.6",n.DEFAULTS={loadingText:"loading..."},n.prototype.setState=function(t){var n="disabled",r=this.$element,i=r.is("input")?"val":"html",s=r.data();t+="Text",null==s.resetText&&r.data("resetText",r[i]()),setTimeout(e.proxy(function(){r[i](null==s[t]?this.options[t]:s[t]),"loadingText"==t?(this.isLoading=!0,r.addClass(n).attr(n,n)):this.isLoading&&(this.isLoading=!1,r.removeClass(n).removeAttr(n))},this),0)},n.prototype.toggle=function(){var e=!0,t=this.$element.closest('[data-toggle="buttons"]');if(t.length){var n=this.$element.find("input");"radio"==n.prop("type")?(n.prop("checked")&&(e=!1),t.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==n.prop("type")&&(n.prop("checked")!==this.$element.hasClass("active")&&(e=!1),this.$element.toggleClass("active")),n.prop("checked",this.$element.hasClass("active")),e&&n.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var r=e.fn.button;e.fn.button=t,e.fn.button.Constructor=n,e.fn.button.noConflict=function(){return e.fn.button=r,this},e(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(n){var r=e(n.target);r.hasClass("btn")||(r=r.closest(".btn")),t.call(r,"toggle"),e(n.target).is('input[type="radio"]')||e(n.target).is('input[type="checkbox"]')||n.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(t){e(t.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(t.type))})}(jQuery),+function(e){"use strict";function t(t){return this.each(function(){var r=e(this),i=r.data("bs.carousel"),s=e.extend({},n.DEFAULTS,r.data(),"object"==typeof t&&t),o="string"==typeof t?t:s.slide;i||r.data("bs.carousel",i=new n(this,s)),"number"==typeof t?i.to(t):o?i[o]():s.interval&&i.pause().cycle()})}var n=function(t,n){this.$element=e(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",e.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",e.proxy(this.pause,this)).on("mouseleave.bs.carousel",e.proxy(this.cycle,this))};n.VERSION="3.3.6",n.TRANSITION_DURATION=600,n.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},n.prototype.keydown=function(e){if(!/input|textarea/i.test(e.target.tagName)){switch(e.which){case 37:this.prev();break;case 39:this.next();break;default:return}e.preventDefault()}},n.prototype.cycle=function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},n.prototype.getItemIndex=function(e){return this.$items=e.parent().children(".item"),this.$items.index(e||this.$active)},n.prototype.getItemForDirection=function(e,t){var n=this.getItemIndex(t),r="prev"==e&&0===n||"next"==e&&n==this.$items.length-1;if(r&&!this.options.wrap)return t;var i="prev"==e?-1:1,s=(n+i)%this.$items.length;return this.$items.eq(s)},n.prototype.to=function(e){var t=this,n=this.getItemIndex(this.$active=this.$element.find(".item.active"));return e>this.$items.length-1||0>e?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){t.to(e)}):n==e?this.pause().cycle():this.slide(e>n?"next":"prev",this.$items.eq(e))},n.prototype.pause=function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition&&(this.$element.trigger(e.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},n.prototype.next=function(){return this.sliding?void 0:this.slide("next")},n.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},n.prototype.slide=function(t,r){var i=this.$element.find(".item.active"),s=r||this.getItemForDirection(t,i),o=this.interval,u="next"==t?"left":"right",f=this;if(s.hasClass("active"))return this.sliding=!1;var l=s[0],h=e.Event("slide.bs.carousel",{relatedTarget:l,direction:u});if(this.$element.trigger(h),!h.isDefaultPrevented()){if(this.sliding=!0,o&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var p=e(this.$indicators.children()[this.getItemIndex(s)]);p&&p.addClass("active")}var d=e.Event("slid.bs.carousel",{relatedTarget:l,direction:u});return e.support.transition&&this.$element.hasClass("slide")?(s.addClass(t),s[0].offsetWidth,i.addClass(u),s.addClass(u),i.one("bsTransitionEnd",function(){s.removeClass([t,u].join(" ")).addClass("active"),i.removeClass(["active",u].join(" ")),f.sliding=!1,setTimeout(function(){f.$element.trigger(d)},0)}).emulateTransitionEnd(n.TRANSITION_DURATION)):(i.removeClass("active"),s.addClass("active"),this.sliding=!1,this.$element.trigger(d)),o&&this.cycle(),this}};var r=e.fn.carousel;e.fn.carousel=t,e.fn.carousel.Constructor=n,e.fn.carousel.noConflict=function(){return e.fn.carousel=r,this};var i=function(n){var r,i=e(this),s=e(i.attr("data-target")||(r=i.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""));if(s.hasClass("carousel")){var o=e.extend({},s.data(),i.data()),u=i.attr("data-slide-to");u&&(o.interval=!1),t.call(s,o),u&&s.data("bs.carousel").to(u),n.preventDefault()}};e(document).on("click.bs.carousel.data-api","[data-slide]",i).on("click.bs.carousel.data-api","[data-slide-to]",i),e(window).on("load",function(){e('[data-ride="carousel"]').each(function(){var n=e(this);t.call(n,n.data())})})}(jQuery),+function(e){"use strict";function t(t){var n,r=t.attr("data-target")||(n=t.attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,"");return e(r)}function n(t){return this.each(function(){var n=e(this),i=n.data("bs.collapse"),s=e.extend({},r.DEFAULTS,n.data(),"object"==typeof t&&t);!i&&s.toggle&&/show|hide/.test(t)&&(s.toggle=!1),i||n.data("bs.collapse",i=new r(this,s)),"string"==typeof t&&i[t]()})}var r=function(t,n){this.$element=e(t),this.options=e.extend({},r.DEFAULTS,n),this.$trigger=e('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};r.VERSION="3.3.6",r.TRANSITION_DURATION=350,r.DEFAULTS={toggle:!0},r.prototype.dimension=function(){var e=this.$element.hasClass("width");return e?"width":"height"},r.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var t,i=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(i&&i.length&&(t=i.data("bs.collapse"),t&&t.transitioning))){var s=e.Event("show.bs.collapse");if(this.$element.trigger(s),!s.isDefaultPrevented()){i&&i.length&&(n.call(i,"hide"),t||i.data("bs.collapse",null));var o=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[o](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var u=function(){this.$element.removeClass("collapsing").addClass("collapse in")[o](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!e.support.transition)return u.call(this);var f=e.camelCase(["scroll",o].join("-"));this.$element.one("bsTransitionEnd",e.proxy(u,this)).emulateTransitionEnd(r.TRANSITION_DURATION)[o](this.$element[0][f])}}}},r.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var t=e.Event("hide.bs.collapse");if(this.$element.trigger(t),!t.isDefaultPrevented()){var n=this.dimension();this.$element[n](this.$element[n]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var i=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return e.support.transition?void this.$element[n](0).one("bsTransitionEnd",e.proxy(i,this)).emulateTransitionEnd(r.TRANSITION_DURATION):i.call(this)}}},r.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},r.prototype.getParent=function(){return e(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(e.proxy(function(n,r){var i=e(r);this.addAriaAndCollapsedClass(t(i),i)},this)).end()},r.prototype.addAriaAndCollapsedClass=function(e,t){var n=e.hasClass("in");e.attr("aria-expanded",n),t.toggleClass("collapsed",!n).attr("aria-expanded",n)};var i=e.fn.collapse;e.fn.collapse=n,e.fn.collapse.Constructor=r,e.fn.collapse.noConflict=function(){return e.fn.collapse=i,this},e(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(r){var i=e(this);i.attr("data-target")||r.preventDefault();var s=t(i),o=s.data("bs.collapse"),u=o?"toggle":i.data();n.call(s,u)})}(jQuery),+function(e){"use strict";function t(t){var n=t.attr("data-target");n||(n=t.attr("href"),n=n&&/#[A-Za-z]/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,""));var r=n&&e(n);return r&&r.length?r:t.parent()}function n(n){n&&3===n.which||(e(i).remove(),e(s).each(function(){var r=e(this),i=t(r),s={relatedTarget:this};i.hasClass("open")&&(n&&"click"==n.type&&/input|textarea/i.test(n.target.tagName)&&e.contains(i[0],n.target)||(i.trigger(n=e.Event("hide.bs.dropdown",s)),n.isDefaultPrevented()||(r.attr("aria-expanded","false"),i.removeClass("open").trigger(e.Event("hidden.bs.dropdown",s)))))}))}function r(t){return this.each(function(){var n=e(this),r=n.data("bs.dropdown");r||n.data("bs.dropdown",r=new o(this)),"string"==typeof t&&r[t].call(n)})}var i=".dropdown-backdrop",s='[data-toggle="dropdown"]',o=function(t){e(t).on("click.bs.dropdown",this.toggle)};o.VERSION="3.3.6",o.prototype.toggle=function(r){var i=e(this);if(!i.is(".disabled, :disabled")){var s=t(i),o=s.hasClass("open");if(n(),!o){"ontouchstart"in document.documentElement&&!s.closest(".navbar-nav").length&&e(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(e(this)).on("click",n);var u={relatedTarget:this};if(s.trigger(r=e.Event("show.bs.dropdown",u)),r.isDefaultPrevented())return;i.trigger("focus").attr("aria-expanded","true"),s.toggleClass("open").trigger(e.Event("shown.bs.dropdown",u))}return!1}},o.prototype.keydown=function(n){if(/(38|40|27|32)/.test(n.which)&&!/input|textarea/i.test(n.target.tagName)){var r=e(this);if(n.preventDefault(),n.stopPropagation(),!r.is(".disabled, :disabled")){var i=t(r),o=i.hasClass("open");if(!o&&27!=n.which||o&&27==n.which)return 27==n.which&&i.find(s).trigger("focus"),r.trigger("click");var u=" li:not(.disabled):visible a",l=i.find(".dropdown-menu"+u);if(l.length){var c=l.index(n.target);38==n.which&&c>0&&c--,40==n.which&&c<l.length-1&&c++,~c||(c=0),l.eq(c).trigger("focus")}}}};var u=e.fn.dropdown;e.fn.dropdown=r,e.fn.dropdown.Constructor=o,e.fn.dropdown.noConflict=function(){return e.fn.dropdown=u,this},e(document).on("click.bs.dropdown.data-api",n).on("click.bs.dropdown.data-api",".dropdown form",function(e){e.stopPropagation()}).on("click.bs.dropdown.data-api",s,o.prototype.toggle).on("keydown.bs.dropdown.data-api",s,o.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",o.prototype.keydown)}(jQuery),+function(e){"use strict";function t(t,r){return this.each(function(){var i=e(this),s=i.data("bs.modal"),o=e.extend({},n.DEFAULTS,i.data(),"object"==typeof t&&t);s||i.data("bs.modal",s=new n(this,o)),"string"==typeof t?s[t](r):o.show&&s.show(r)})}var n=function(t,n){this.options=n,this.$body=e(document.body),this.$element=e(t),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,e.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};n.VERSION="3.3.6",n.TRANSITION_DURATION=300,n.BACKDROP_TRANSITION_DURATION=150,n.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},n.prototype.toggle=function(e){return this.isShown?this.hide():this.show(e)},n.prototype.show=function(t){var r=this,i=e.Event("show.bs.modal",{relatedTarget:t});this.$element.trigger(i),this.isShown||i.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',e.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){r.$element.one("mouseup.dismiss.bs.modal",function(t){e(t.target).is(r.$element)&&(r.ignoreBackdropClick=!0)})}),this.backdrop(function(){var i=e.support.transition&&r.$element.hasClass("fade");r.$element.parent().length||r.$element.appendTo(r.$body),r.$element.show().scrollTop(0),r.adjustDialog(),i&&r.$element[0].offsetWidth,r.$element.addClass("in"),r.enforceFocus();var s=e.Event("shown.bs.modal",{relatedTarget:t});i?r.$dialog.one("bsTransitionEnd",function(){r.$element.trigger("focus").trigger(s)}).emulateTransitionEnd(n.TRANSITION_DURATION):r.$element.trigger("focus").trigger(s)}))},n.prototype.hide=function(t){t&&t.preventDefault(),t=e.Event("hide.bs.modal"),this.$element.trigger(t),this.isShown&&!t.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),e(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),e.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",e.proxy(this.hideModal,this)).emulateTransitionEnd(n.TRANSITION_DURATION):this.hideModal())},n.prototype.enforceFocus=function(){e(document).off("focusin.bs.modal").on("focusin.bs.modal",e.proxy(function(e){this.$element[0]===e.target||this.$element.has(e.target).length||this.$element.trigger("focus")},this))},n.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",e.proxy(function(e){27==e.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},n.prototype.resize=function(){this.isShown?e(window).on("resize.bs.modal",e.proxy(this.handleUpdate,this)):e(window).off("resize.bs.modal")},n.prototype.hideModal=function(){var e=this;this.$element.hide(),this.backdrop(function(){e.$body.removeClass("modal-open"),e.resetAdjustments(),e.resetScrollbar(),e.$element.trigger("hidden.bs.modal")})},n.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},n.prototype.backdrop=function(t){var r=this,i=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var s=e.support.transition&&i;if(this.$backdrop=e(document.createElement("div")).addClass("modal-backdrop "+i).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",e.proxy(function(e){return this.ignoreBackdropClick?void (this.ignoreBackdropClick=!1):void (e.target===e.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),s&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!t)return;s?this.$backdrop.one("bsTransitionEnd",t).emulateTransitionEnd(n.BACKDROP_TRANSITION_DURATION):t()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var o=function(){r.removeBackdrop(),t&&t()};e.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",o).emulateTransitionEnd(n.BACKDROP_TRANSITION_DURATION):o()}else t&&t()},n.prototype.handleUpdate=function(){this.adjustDialog()},n.prototype.adjustDialog=function(){var e=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&e?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!e?this.scrollbarWidth:""})},n.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},n.prototype.checkScrollbar=function(){var e=window.innerWidth;if(!e){var t=document.documentElement.getBoundingClientRect();e=t.right-Math.abs(t.left)}this.bodyIsOverflowing=document.body.clientWidth<e,this.scrollbarWidth=this.measureScrollbar()},n.prototype.setScrollbar=function(){var e=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",e+this.scrollbarWidth)},n.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},n.prototype.measureScrollbar=function(){var e=document.createElement("div");e.className="modal-scrollbar-measure",this.$body.append(e);var t=e.offsetWidth-e.clientWidth;return this.$body[0].removeChild(e),t};var r=e.fn.modal;e.fn.modal=t,e.fn.modal.Constructor=n,e.fn.modal.noConflict=function(){return e.fn.modal=r,this},e(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(n){var r=e(this),i=r.attr("href"),s=e(r.attr("data-target")||i&&i.replace(/.*(?=#[^\s]+$)/,"")),o=s.data("bs.modal")?"toggle":e.extend({remote:!/#/.test(i)&&i},s.data(),r.data());r.is("a")&&n.preventDefault(),s.one("show.bs.modal",function(e){e.isDefaultPrevented()||s.one("hidden.bs.modal",function(){r.is(":visible")&&r.trigger("focus")})}),t.call(s,o,this)})}(jQuery),+function(e){"use strict";function t(t){return this.each(function(){var r=e(this),i=r.data("bs.tooltip"),s="object"==typeof t&&t;(i||!/destroy|hide/.test(t))&&(i||r.data("bs.tooltip",i=new n(this,s)),"string"==typeof t&&i[t]())})}var n=function(e,t){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",e,t)};n.VERSION="3.3.6",n.TRANSITION_DURATION=150,n.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},n.prototype.init=function(t,n,r){if(this.enabled=!0,this.type=t,this.$element=e(n),this.options=this.getOptions(r),this.$viewport=this.options.viewport&&e(e.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var i=this.options.trigger.split(" "),s=i.length;s--;){var o=i[s];if("click"==o)this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this));else if("manual"!=o){var u="hover"==o?"mouseenter":"focusin",f="hover"==o?"mouseleave":"focusout";this.$element.on(u+"."+this.type,this.options.selector,e.proxy(this.enter,this)),this.$element.on(f+"."+this.type,this.options.selector,e.proxy(this.leave,this))}}this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},n.prototype.getDefaults=function(){return n.DEFAULTS},n.prototype.getOptions=function(t){return t=e.extend({},this.getDefaults(),this.$element.data(),t),t.delay&&"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),t},n.prototype.getDelegateOptions=function(){var t={},n=this.getDefaults();return this._options&&e.each(this._options,function(e,r){n[e]!=r&&(t[e]=r)}),t},n.prototype.enter=function(t){var n=t instanceof this.constructor?t:e(t.currentTarget).data("bs."+this.type);return n||(n=new this.constructor(t.currentTarget,this.getDelegateOptions()),e(t.currentTarget).data("bs."+this.type,n)),t instanceof e.Event&&(n.inState["focusin"==t.type?"focus":"hover"]=!0),n.tip().hasClass("in")||"in"==n.hoverState?void (n.hoverState="in"):(clearTimeout(n.timeout),n.hoverState="in",n.options.delay&&n.options.delay.show?void (n.timeout=setTimeout(function(){"in"==n.hoverState&&n.show()},n.options.delay.show)):n.show())},n.prototype.isInStateTrue=function(){for(var e in this.inState)if(this.inState[e])return!0;return!1},n.prototype.leave=function(t){var n=t instanceof this.constructor?t:e(t.currentTarget).data("bs."+this.type);return n||(n=new this.constructor(t.currentTarget,this.getDelegateOptions()),e(t.currentTarget).data("bs."+this.type,n)),t instanceof e.Event&&(n.inState["focusout"==t.type?"focus":"hover"]=!1),n.isInStateTrue()?void 0:(clearTimeout(n.timeout),n.hoverState="out",n.options.delay&&n.options.delay.hide?void (n.timeout=setTimeout(function(){"out"==n.hoverState&&n.hide()},n.options.delay.hide)):n.hide())},n.prototype.show=function(){var t=e.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(t);var r=e.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(t.isDefaultPrevented()||!r)return;var i=this,s=this.tip(),o=this.getUID(this.type);this.setContent(),s.attr("id",o),this.$element.attr("aria-describedby",o),this.options.animation&&s.addClass("fade");var u="function"==typeof this.options.placement?this.options.placement.call(this,s[0],this.$element[0]):this.options.placement,f=/\s?auto?\s?/i,l=f.test(u);l&&(u=u.replace(f,"")||"top"),s.detach().css({top:0,left:0,display:"block"}).addClass(u).data("bs."+this.type,this),this.options.container?s.appendTo(this.options.container):s.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var h=this.getPosition(),p=s[0].offsetWidth,d=s[0].offsetHeight;if(l){var v=u,m=this.getPosition(this.$viewport);u="bottom"==u&&h.bottom+d>m.bottom?"top":"top"==u&&h.top-d<m.top?"bottom":"right"==u&&h.right+p>m.width?"left":"left"==u&&h.left-p<m.left?"right":u,s.removeClass(v).addClass(u)}var g=this.getCalculatedOffset(u,h,p,d);this.applyPlacement(g,u);var y=function(){var e=i.hoverState;i.$element.trigger("shown.bs."+i.type),i.hoverState=null,"out"==e&&i.leave(i)};e.support.transition&&this.$tip.hasClass("fade")?s.one("bsTransitionEnd",y).emulateTransitionEnd(n.TRANSITION_DURATION):y()}},n.prototype.applyPlacement=function(t,n){var r=this.tip(),i=r[0].offsetWidth,s=r[0].offsetHeight,o=parseInt(r.css("margin-top"),10),u=parseInt(r.css("margin-left"),10);isNaN(o)&&(o=0),isNaN(u)&&(u=0),t.top+=o,t.left+=u,e.offset.setOffset(r[0],e.extend({using:function(e){r.css({top:Math.round(e.top),left:Math.round(e.left)})}},t),0),r.addClass("in");var f=r[0].offsetWidth,l=r[0].offsetHeight;"top"==n&&l!=s&&(t.top=t.top+s-l);var c=this.getViewportAdjustedDelta(n,t,f,l);c.left?t.left+=c.left:t.top+=c.top;var h=/top|bottom/.test(n),p=h?2*c.left-i+f:2*c.top-s+l,d=h?"offsetWidth":"offsetHeight";r.offset(t),this.replaceArrow(p,r[0][d],h)},n.prototype.replaceArrow=function(e,t,n){this.arrow().css(n?"left":"top",50*(1-e/t)+"%").css(n?"top":"left","")},n.prototype.setContent=function(){var e=this.tip(),t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t),e.removeClass("fade in top bottom left right")},n.prototype.hide=function(t){function r(){"in"!=i.hoverState&&s.detach(),i.$element.removeAttr("aria-describedby").trigger("hidden.bs."+i.type),t&&t()}var i=this,s=e(this.$tip),o=e.Event("hide.bs."+this.type);return this.$element.trigger(o),o.isDefaultPrevented()?void 0:(s.removeClass("in"),e.support.transition&&s.hasClass("fade")?s.one("bsTransitionEnd",r).emulateTransitionEnd(n.TRANSITION_DURATION):r(),this.hoverState=null,this)},n.prototype.fixTitle=function(){var e=this.$element;(e.attr("title")||"string"!=typeof e.attr("data-original-title"))&&e.attr("data-original-title",e.attr("title")||"").attr("title","")},n.prototype.hasContent=function(){return this.getTitle()},n.prototype.getPosition=function(t){t=t||this.$element;var n=t[0],r="BODY"==n.tagName,i=n.getBoundingClientRect();null==i.width&&(i=e.extend({},i,{width:i.right-i.left,height:i.bottom-i.top}));var s=r?{top:0,left:0}:t.offset(),o={scroll:r?document.documentElement.scrollTop||document.body.scrollTop:t.scrollTop()},u=r?{width:e(window).width(),height:e(window).height()}:null;return e.extend({},i,o,u,s)},n.prototype.getCalculatedOffset=function(e,t,n,r){return"bottom"==e?{top:t.top+t.height,left:t.left+t.width/2-n/2}:"top"==e?{top:t.top-r,left:t.left+t.width/2-n/2}:"left"==e?{top:t.top+t.height/2-r/2,left:t.left-n}:{top:t.top+t.height/2-r/2,left:t.left+t.width}},n.prototype.getViewportAdjustedDelta=function(e,t,n,r){var i={top:0,left:0};if(!this.$viewport)return i;var s=this.options.viewport&&this.options.viewport.padding||0,o=this.getPosition(this.$viewport);if(/right|left/.test(e)){var u=t.top-s-o.scroll,a=t.top+s-o.scroll+r;u<o.top?i.top=o.top-u:a>o.top+o.height&&(i.top=o.top+o.height-a)}else{var f=t.left-s,l=t.left+s+n;f<o.left?i.left=o.left-f:l>o.right&&(i.left=o.left+o.width-l)}return i},n.prototype.getTitle=function(){var e,t=this.$element,n=this.options;return e=t.attr("data-original-title")||("function"==typeof n.title?n.title.call(t[0]):n.title)},n.prototype.getUID=function(e){do e+=~~(1e6*Math.random());while(document.getElementById(e));return e},n.prototype.tip=function(){if(!this.$tip&&(this.$tip=e(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},n.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},n.prototype.enable=function(){this.enabled=!0},n.prototype.disable=function(){this.enabled=!1},n.prototype.toggleEnabled=function(){this.enabled=!this.enabled},n.prototype.toggle=function(t){var n=this;t&&(n=e(t.currentTarget).data("bs."+this.type),n||(n=new this.constructor(t.currentTarget,this.getDelegateOptions()),e(t.currentTarget).data("bs."+this.type,n))),t?(n.inState.click=!n.inState.click,n.isInStateTrue()?n.enter(n):n.leave(n)):n.tip().hasClass("in")?n.leave(n):n.enter(n)},n.prototype.destroy=function(){var e=this;clearTimeout(this.timeout),this.hide(function(){e.$element.off("."+e.type).removeData("bs."+e.type),e.$tip&&e.$tip.detach(),e.$tip=null,e.$arrow=null,e.$viewport=null})};var r=e.fn.tooltip;e.fn.tooltip=t,e.fn.tooltip.Constructor=n,e.fn.tooltip.noConflict=function(){return e.fn.tooltip=r,this}}(jQuery),+function(e){"use strict";function t(t){return this.each(function(){var r=e(this),i=r.data("bs.popover"),s="object"==typeof t&&t;(i||!/destroy|hide/.test(t))&&(i||r.data("bs.popover",i=new n(this,s)),"string"==typeof t&&i[t]())})}var n=function(e,t){this.init("popover",e,t)};if(!e.fn.tooltip)throw new Error("Popover requires tooltip.js");n.VERSION="3.3.6",n.DEFAULTS=e.extend({},e.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),n.prototype=e.extend({},e.fn.tooltip.Constructor.prototype),n.prototype.constructor=n,n.prototype.getDefaults=function(){return n.DEFAULTS},n.prototype.setContent=function(){var e=this.tip(),t=this.getTitle(),n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t),e.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof n?"html":"append":"text"](n),e.removeClass("fade top bottom left right in"),e.find(".popover-title").html()||e.find(".popover-title").hide()},n.prototype.hasContent=function(){return this.getTitle()||this.getContent()},n.prototype.getContent=function(){var e=this.$element,t=this.options;return e.attr("data-content")||("function"==typeof t.content?t.content.call(e[0]):t.content)},n.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var r=e.fn.popover;e.fn.popover=t,e.fn.popover.Constructor=n,e.fn.popover.noConflict=function(){return e.fn.popover=r,this}}(jQuery),+function(e){"use strict";function t(n,r){this.$body=e(document.body),this.$scrollElement=e(e(n).is(document.body)?window:n),this.options=e.extend({},t.DEFAULTS,r),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e.proxy(this.process,this)),this.refresh(),this.process()}function n(n){return this.each(function(){var r=e(this),i=r.data("bs.scrollspy"),s="object"==typeof n&&n;i||r.data("bs.scrollspy",i=new t(this,s)),"string"==typeof n&&i[n]()})}t.VERSION="3.3.6",t.DEFAULTS={offset:10},t.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},t.prototype.refresh=function(){var t=this,n="offset",r=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),e.isWindow(this.$scrollElement[0])||(n="position",r=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var t=e(this),i=t.data("target")||t.attr("href"),s=/^#./.test(i)&&e(i);return s&&s.length&&s.is(":visible")&&[[s[n]().top+r,i]]||null}).sort(function(e,t){return e[0]-t[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},t.prototype.process=function(){var e,t=this.$scrollElement.scrollTop()+this.options.offset,n=this.getScrollHeight(),r=this.options.offset+n-this.$scrollElement.height(),i=this.offsets,s=this.targets,o=this.activeTarget;if(this.scrollHeight!=n&&this.refresh(),t>=r)return o!=(e=s[s.length-1])&&this.activate(e);if(o&&t<i[0])return this.activeTarget=null,this.clear();for(e=i.length;e--;)o!=s[e]&&t>=i[e]&&(void 0===i[e+1]||t<i[e+1])&&this.activate(s[e])},t.prototype.activate=function(t){this.activeTarget=t,this.clear();var n=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',r=e(n).parents("li").addClass("active");r.parent(".dropdown-menu").length&&(r=r.closest("li.dropdown").addClass("active")),r.trigger("activate.bs.scrollspy")},t.prototype.clear=function(){e(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var r=e.fn.scrollspy;e.fn.scrollspy=n,e.fn.scrollspy.Constructor=t,e.fn.scrollspy.noConflict=function(){return e.fn.scrollspy=r,this},e(window).on("load.bs.scrollspy.data-api",function(){e('[data-spy="scroll"]').each(function(){var t=e(this);n.call(t,t.data())})})}(jQuery),+function(e){"use strict";function t(t){return this.each(function(){var r=e(this),i=r.data("bs.tab");i||r.data("bs.tab",i=new n(this)),"string"==typeof t&&i[t]()})}var n=function(t){this.element=e(t)};n.VERSION="3.3.6",n.TRANSITION_DURATION=150,n.prototype.show=function(){var t=this.element,n=t.closest("ul:not(.dropdown-menu)"),r=t.data("target");if(r||(r=t.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,"")),!t.parent("li").hasClass("active")){var i=n.find(".active:last a"),s=e.Event("hide.bs.tab",{relatedTarget:t[0]}),o=e.Event("show.bs.tab",{relatedTarget:i[0]});if(i.trigger(s),t.trigger(o),!o.isDefaultPrevented()&&!s.isDefaultPrevented()){var u=e(r);this.activate(t.closest("li"),n),this.activate(u,u.parent(),function(){i.trigger({type:"hidden.bs.tab",relatedTarget:t[0]}),t.trigger({type:"shown.bs.tab",relatedTarget:i[0]})})}}},n.prototype.activate=function(t,r,i){function s(){o.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),t.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),u?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu").length&&t.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),i&&i()}var o=r.find("> .active"),u=i&&e.support.transition&&(o.length&&o.hasClass("fade")||!!r.find("> .fade").length);o.length&&u?o.one("bsTransitionEnd",s).emulateTransitionEnd(n.TRANSITION_DURATION):s(),o.removeClass("in")};var r=e.fn.tab;e.fn.tab=t,e.fn.tab.Constructor=n,e.fn.tab.noConflict=function(){return e.fn.tab=r,this};var i=function(n){n.preventDefault(),t.call(e(this),"show")};e(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',i).on("click.bs.tab.data-api",'[data-toggle="pill"]',i)}(jQuery),+function(e){"use strict";function t(t){return this.each(function(){var r=e(this),i=r.data("bs.affix"),s="object"==typeof t&&t;i||r.data("bs.affix",i=new n(this,s)),"string"==typeof t&&i[t]()})}var n=function(t,r){this.options=e.extend({},n.DEFAULTS,r),this.$target=e(this.options.target).on("scroll.bs.affix.data-api",e.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",e.proxy(this.checkPositionWithEventLoop,this)),this.$element=e(t),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};n.VERSION="3.3.6",n.RESET="affix affix-top affix-bottom",n.DEFAULTS={offset:0,target:window},n.prototype.getState=function(e,t,n,r){var i=this.$target.scrollTop(),s=this.$element.offset(),o=this.$target.height();if(null!=n&&"top"==this.affixed)return n>i?"top":!1;if("bottom"==this.affixed)return null!=n?i+this.unpin<=s.top?!1:"bottom":e-r>=i+o?!1:"bottom";var u=null==this.affixed,a=u?i:s.top,f=u?o:t;return null!=n&&n>=i?"top":null!=r&&a+f>=e-r?"bottom":!1},n.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(n.RESET).addClass("affix");var e=this.$target.scrollTop(),t=this.$element.offset();return this.pinnedOffset=t.top-e},n.prototype.checkPositionWithEventLoop=function(){setTimeout(e.proxy(this.checkPosition,this),1)},n.prototype.checkPosition=function(){if(this.$element.is(":visible")){var t=this.$element.height(),r=this.options.offset,i=r.top,s=r.bottom,o=Math.max(e(document).height(),e(document.body).height());"object"!=typeof r&&(s=i=r),"function"==typeof i&&(i=r.top(this.$element)),"function"==typeof s&&(s=r.bottom(this.$element));var u=this.getState(o,t,i,s);if(this.affixed!=u){null!=this.unpin&&this.$element.css("top","");var f="affix"+(u?"-"+u:""),l=e.Event(f+".bs.affix");if(this.$element.trigger(l),l.isDefaultPrevented())return;this.affixed=u,this.unpin="bottom"==u?this.getPinnedOffset():null,this.$element.removeClass(n.RESET).addClass(f).trigger(f.replace("affix","affixed")+".bs.affix")}"bottom"==u&&this.$element.offset({top:o-t-s})}};var r=e.fn.affix;e.fn.affix=t,e.fn.affix.Constructor=n,e.fn.affix.noConflict=function(){return e.fn.affix=r,this},e(window).on("load",function(){e('[data-spy="affix"]').each(function(){var n=e(this),r=n.data();r.offset=r.offset||{},null!=r.offsetBottom&&(r.offset.bottom=r.offsetBottom),null!=r.offsetTop&&(r.offset.top=r.offsetTop),t.call(n,r)})})}(jQuery),define("bootstrap",["jquery"],function(){}),define("modal",["config","preferences","links","jquery","laconic","bootstrap"],function(e,t,n){return function(r){function o(){var e=r.el.button({type:"button","class":"close","data-dismiss":"modal"});return r(e).html("×").on("click",function(e){var n=r(this).parents(".modal"),i=n.find("[data-notagain]");e.preventDefault();if(i&&i.prop("checked")){var s=i.attr("data-notagain");t.setNotAgain(s)}}),e}function u(e){return e.notagain&&t.persistent()?r.el.label(r.el.input({type:"checkbox","data-notagain":e.notagain,name:"dismiss"})," Don't show again!"):""}function a(){var e=r(this).find(".tm-input");e.each(function(){var e=r(this),t=e.data("prefilled"),n={};t&&(n.prefilled=t),e.tagsManager(n)})}var i="swishModal",s={_init:function(e){return this.each(function(){var e=r(this);e.addClass("swish-event-receiver"),e.on("help",function(t,n){e.swishModal("showHelp",n)}),e.on("pldoc",function(t,n){e.swishModal("showPlDoc",n)}),e.on("form",function(t,n){e.swishModal("showForm",n)}),e.on("dialog",function(t,n){e.swishModal("show",n)}),e.on("error",function(t,n){e.swishModal("show",n)}),e.on("alert",function(t,n){var r="<span class='glyphicon glyphicon-warning-sign'></span>";e.swishModal("show",{title:r,body:n})}),e.on("ajaxError",function(t,n){e.swishModal("showAjaxError",n)}),e.on("feedback",function(t,n){e.swishModal("feedback",n)})})},showHelp:function(n){var i=this;if(n.notagain&&t.notagain(n.notagain))return;r.ajax({url:e.http.locations.help+"/"+n.file,dataType:"html",success:function(e){var t=r("<div>");t.html(e),i.swishModal("show",r.extend({title:t.find("title").text(),body:t},n))}})},showForm:function(t){var n=this;r.ajax({url:e.http.locations.form+"/"+t.file,dataType:"html",success:function(e){var i=r("<div>");i.html(e),n.swishModal("show",r.extend({title:i.find("legend").text(),body:i},t))}})},showPlDoc:function(t){function n(t){var n="("+t.name+")/"+t.arity;return t.module&&(n=t.module+":"+n),e.http.locations.pldoc_doc_for+"?header=false&object="+encodeURIComponent(n)}function r(e,t){return e.parents("div.modal-dialog").addClass("swish-embedded-manual"),"<iframe class='swish-embedded-manual' onload='javascript:resizeIframe(this);' src='"+t+"'>"+"</iframe>"}var i={title:"SWI-Prolog manual",body:function(){return r(this,n(t))}};return this.swishModal("show",i)},show:function(e){var i=r.el.div({"class":"modal-body"}),s=r.el.h2(),f=r.el.div({"class":"modal-content"},r.el.div({"class":"modal-header"},u(e),o(),s),i),l=r.el.div({"class":"modal fade",id:"ajaxModal",tabindex:-1,role:"dialog"},r.el.div({"class":"modal-dialog"},f));e.notagain&&t.persistent()&&r(f).append(r.el.div({"class":"modal-footer"},u(e))),i=r(i);if(typeof e.body=="function"){var c=e.body.call(i);c&&i.append(c)}else i.html(e.body);return r(s).html(e.title),r(l).modal({show:!0}).on("click","a",n.followLink).on("shown.bs.modal",a).on("hidden.bs.modal",function(){r(this).remove()}),this},showAjaxError:function(e){var t=r.el.div();r(t).html(e.responseText);var n=r(t).find("h1"),i=n.text()||"Server error";n.remove();var s={title:i,body:t};this.swishModal("show",s)},feedback:function(e){var t=r.el.div({"class":"feedback "+e.type||""});return r(t).html(e.html),r(e.owner||"body").append(t),setTimeout(function(){r(t).hide(400,function(){r(t).remove()})},e.duration||1500),this}};window.resizeIframe=function(e){e.style.height=0,e.style.height=e.contentWindow.document.body.scrollHeight+20+"px"},r.fn.swishModal=function(e){if(s[e])return s[e].apply(this,Array.prototype.slice.call(arguments,1));if(typeof e=="object"||!e)return s._init.apply(this,arguments);r.error("Method "+e+" does not exist on jQuery."+i)}}(jQuery),{ajaxError:function(e){$(".swish-event-receiver").trigger("ajaxError",e)},feedback:function(e){$(".swish-event-receiver").trigger("feedback",e)},alert:function(e){$(".swish-event-receiver").trigger("alert",e)}}}),function(e){"function"==typeof define&&define.amd?define("jquery-ui",["jquery"],e):e(jQuery)}(function(e){function t(e){for(var t=e.css("visibility");"inherit"===t;)e=e.parent(),t=e.css("visibility");return"hidden"!==t}function n(e){for(var t,n;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(n=parseInt(e.css("zIndex"),10),!isNaN(n)&&0!==n))return n;e=e.parent()}return 0}function r(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=i(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function i(t){var n="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.on("mouseout",n,function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",n,s)}function s(){e.datepicker._isDisabledDatepicker(m.inline?m.dpDiv.parent()[0]:m.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function o(t,n){e.extend(t,n);for(var r in n)null==n[r]&&(t[r]=n[r]);return t}function u(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.ui.version="1.12.0";var a=0,f=Array.prototype.slice;e.cleanData=function(t){return function(n){var r,i,s;for(s=0;null!=(i=n[s]);s++)try{r=e._data(i,"events"),r&&r.remove&&e(i).triggerHandler("remove")}catch(o){}t(n)}}(e.cleanData),e.widget=function(t,n,r){var i,s,o,u={},a=t.split(".")[0];t=t.split(".")[1];var f=a+"-"+t;return r||(r=n,n=e.Widget),e.isArray(r)&&(r=e.extend.apply(null,[{}].concat(r))),e.expr[":"][f.toLowerCase()]=function(t){return!!e.data(t,f)},e[a]=e[a]||{},i=e[a][t],s=e[a][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new s(e,t)},e.extend(s,i,{version:r.version,_proto:e.extend({},r),_childConstructors:[]}),o=new n,o.options=e.widget.extend({},o.options),e.each(r,function(t,r){return e.isFunction(r)?(u[t]=function(){function e(){return n.prototype[t].apply(this,arguments)}function i(e){return n.prototype[t].apply(this,e)}return function(){var t,n=this._super,s=this._superApply;return this._super=e,this._superApply=i,t=r.apply(this,arguments),this._super=n,this._superApply=s,t}}(),void 0):(u[t]=r,void 0)}),s.prototype=e.widget.extend(o,{widgetEventPrefix:i?o.widgetEventPrefix||t:t},u,{constructor:s,namespace:a,widgetName:t,widgetFullName:f}),i?(e.each(i._childConstructors,function(t,n){var r=n.prototype;e.widget(r.namespace+"."+r.widgetName,s,n._proto)}),delete i._childConstructors):n._childConstructors.push(s),e.widget.bridge(t,s),s},e.widget.extend=function(t){for(var n,r,i=f.call(arguments,1),s=0,o=i.length;o>s;s++)for(n in i[s])r=i[s][n],i[s].hasOwnProperty(n)&&void 0!==r&&(t[n]=e.isPlainObject(r)?e.isPlainObject(t[n])?e.widget.extend({},t[n],r):e.widget.extend({},r):r);return t},e.widget.bridge=function(t,n){var r=n.prototype.widgetFullName||t;e.fn[t]=function(i){var s="string"==typeof i,o=f.call(arguments,1),u=this;return s?this.each(function(){var n,s=e.data(this,r);return"instance"===i?(u=s,!1):s?e.isFunction(s[i])&&"_"!==i.charAt(0)?(n=s[i].apply(s,o),n!==s&&void 0!==n?(u=n&&n.jquery?u.pushStack(n.get()):n,!1):void 0):e.error("no such method '"+i+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+i+"'")}):(o.length&&(i=e.widget.extend.apply(null,[i].concat(o))),this.each(function(){var t=e.data(this,r);t?(t.option(i||{}),t._init&&t._init()):e.data(this,r,new n(i,this))})),u}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,n){n=e(n||this.defaultElement||this)[0],this.element=e(n),this.uuid=a++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),this.classesElementLookup={},n!==this&&(e.data(n,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===n&&this.destroy()}}),this.document=e(n.style?n.ownerDocument:n.document||n),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){var t=this;this._destroy(),e.each(this.classesElementLookup,function(e,n){t._removeClass(n,e)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:e.noop,widget:function(){return this.element},option:function(t,n){var r,i,s,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},r=t.split("."),t=r.shift(),r.length){for(i=o[t]=e.widget.extend({},this.options[t]),s=0;r.length-1>s;s++)i[r[s]]=i[r[s]]||{},i=i[r[s]];if(t=r.pop(),1===arguments.length)return void 0===i[t]?null:i[t];i[t]=n}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=n}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return"classes"===e&&this._setOptionClasses(t),this.options[e]=t,"disabled"===e&&this._setOptionDisabled(t),this},_setOptionClasses:function(t){var n,r,i;for(n in t)i=this.classesElementLookup[n],t[n]!==this.options.classes[n]&&i&&i.length&&(r=e(i.get()),this._removeClass(i,n),r.addClass(this._classes({element:r,keys:n,classes:t,add:!0})))},_setOptionDisabled:function(e){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!e),e&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(t){function n(n,s){var o,u;for(u=0;n.length>u;u++)o=i.classesElementLookup[n[u]]||e(),o=t.add?e(e.unique(o.get().concat(t.element.get()))):e(o.not(t.element).get()),i.classesElementLookup[n[u]]=o,r.push(n[u]),s&&t.classes[n[u]]&&r.push(t.classes[n[u]])}var r=[],i=this;return t=e.extend({element:this.element,classes:this.options.classes||{}},t),t.keys&&n(t.keys.match(/\S+/g)||[],!0),t.extra&&n(t.extra.match(/\S+/g)||[]),r.join(" ")},_removeClass:function(e,t,n){return this._toggleClass(e,t,n,!1)},_addClass:function(e,t,n){return this._toggleClass(e,t,n,!0)},_toggleClass:function(e,t,n,r){r="boolean"==typeof r?r:n;var i="string"==typeof e||null===e,s={extra:i?t:n,keys:i?e:t,element:i?this.element:e,add:r};return s.element.toggleClass(this._classes(s),r),this},_on:function(t,n,r){var i,s=this;"boolean"!=typeof t&&(r=n,n=t,t=!1),r?(n=i=e(n),this.bindings=this.bindings.add(n)):(r=n,n=this.element,i=this.widget()),e.each(r,function(r,o){function u(){return t||s.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?s[o]:o).apply(s,arguments):void 0}"string"!=typeof o&&(u.guid=o.guid=o.guid||u.guid||e.guid++);var a=r.match(/^([\w:-]*)\s*(.*)$/),f=a[1]+s.eventNamespace,l=a[2];l?i.on(f,l,u):n.on(f,u)})},_off:function(t,n){n=(n||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(n).off(n),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function n(){return("string"==typeof e?r[e]:e).apply(r,arguments)}var r=this;return setTimeout(n,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(e(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(e(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(e(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(e(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,n,r){var i,s,o=this.options[t];if(r=r||{},n=e.Event(n),n.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),n.target=this.element[0],s=n.originalEvent)for(i in s)i in n||(n[i]=s[i]);return this.element.trigger(n,r),!(e.isFunction(o)&&o.apply(this.element[0],[n].concat(r))===!1||n.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,n){e.Widget.prototype["_"+t]=function(r,i,s){"string"==typeof i&&(i={effect:i});var o,u=i?i===!0||"number"==typeof i?n:i.effect||n:t;i=i||{},"number"==typeof i&&(i={duration:i}),o=!e.isEmptyObject(i),i.complete=s,i.delay&&r.delay(i.delay),o&&e.effects&&e.effects.effect[u]?r[t](i):u!==t&&r[u]?r[u](i.duration,i.easing,s):r.queue(function(n){e(this)[t](),s&&s.call(r[0]),n()})}}),e.widget,function(){function t(e,t,n){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?n/100:1)]}function n(t,n){return parseInt(e.css(t,n),10)||0}function r(t){var n=t[0];return 9===n.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(n)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:n.preventDefault?{width:0,height:0,offset:{top:n.pageY,left:n.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}var i,s,o=Math.max,u=Math.abs,a=Math.round,f=/left|center|right/,l=/top|center|bottom/,c=/[\+\-]\d+(\.[\d]+)?%?/,h=/^\w+/,p=/%$/,d=e.fn.position;s=function(){var t=e("<div>").css("position","absolute").appendTo("body").offset({top:1.5,left:1.5}),n=1.5===t.offset().top;return t.remove(),s=function(){return n},n},e.position={scrollbarWidth:function(){if(void 0!==i)return i;var t,n,r=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),s=r.children()[0];return e("body").append(r),t=s.offsetWidth,r.css("overflow","scroll"),n=s.offsetWidth,t===n&&(n=r[0].clientWidth),r.remove(),i=t-n},getScrollInfo:function(t){var n=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),r=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),i="scroll"===n||"auto"===n&&t.width<t.element[0].scrollWidth,s="scroll"===r||"auto"===r&&t.height<t.element[0].scrollHeight;return{width:s?e.position.scrollbarWidth():0,height:i?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var n=e(t||window),r=e.isWindow(n[0]),i=!!n[0]&&9===n[0].nodeType,s=!r&&!i;return{element:n,isWindow:r,isDocument:i,offset:s?e(t).offset():{left:0,top:0},scrollLeft:n.scrollLeft(),scrollTop:n.scrollTop(),width:n.outerWidth(),height:n.outerHeight()}}},e.fn.position=function(i){if(!i||!i.of)return d.apply(this,arguments);i=e.extend({},i);var p,v,m,g,y,b,w=e(i.of),E=e.position.getWithinInfo(i.within),S=e.position.getScrollInfo(E),x=(i.collision||"flip").split(" "),T={};return b=r(w),w[0].preventDefault&&(i.at="left top"),v=b.width,m=b.height,g=b.offset,y=e.extend({},g),e.each(["my","at"],function(){var e,t,n=(i[this]||"").split(" ");1===n.length&&(n=f.test(n[0])?n.concat(["center"]):l.test(n[0])?["center"].concat(n):["center","center"]),n[0]=f.test(n[0])?n[0]:"center",n[1]=l.test(n[1])?n[1]:"center",e=c.exec(n[0]),t=c.exec(n[1]),T[this]=[e?e[0]:0,t?t[0]:0],i[this]=[h.exec(n[0])[0],h.exec(n[1])[0]]}),1===x.length&&(x[1]=x[0]),"right"===i.at[0]?y.left+=v:"center"===i.at[0]&&(y.left+=v/2),"bottom"===i.at[1]?y.top+=m:"center"===i.at[1]&&(y.top+=m/2),p=t(T.at,v,m),y.left+=p[0],y.top+=p[1],this.each(function(){var r,f,l=e(this),c=l.outerWidth(),h=l.outerHeight(),d=n(this,"marginLeft"),b=n(this,"marginTop"),N=c+d+n(this,"marginRight")+S.width,L=h+b+n(this,"marginBottom")+S.height,A=e.extend({},y),O=t(T.my,l.outerWidth(),l.outerHeight());"right"===i.my[0]?A.left-=c:"center"===i.my[0]&&(A.left-=c/2),"bottom"===i.my[1]?A.top-=h:"center"===i.my[1]&&(A.top-=h/2),A.left+=O[0],A.top+=O[1],s()||(A.left=a(A.left),A.top=a(A.top)),r={marginLeft:d,marginTop:b},e.each(["left","top"],function(t,n){e.ui.position[x[t]]&&e.ui.position[x[t]][n](A,{targetWidth:v,targetHeight:m,elemWidth:c,elemHeight:h,collisionPosition:r,collisionWidth:N,collisionHeight:L,offset:[p[0]+O[0],p[1]+O[1]],my:i.my,at:i.at,within:E,elem:l})}),i.using&&(f=function(e){var t=g.left-A.left,n=t+v-c,r=g.top-A.top,s=r+m-h,a={target:{element:w,left:g.left,top:g.top,width:v,height:m},element:{element:l,left:A.left,top:A.top,width:c,height:h},horizontal:0>n?"left":t>0?"right":"center",vertical:0>s?"top":r>0?"bottom":"middle"};c>v&&v>u(t+n)&&(a.horizontal="center"),h>m&&m>u(r+s)&&(a.vertical="middle"),a.important=o(u(t),u(n))>o(u(r),u(s))?"horizontal":"vertical",i.using.call(this,e,a)}),l.offset(e.extend(A,{using:f}))})},e.ui.position={fit:{left:function(e,t){var n,r=t.within,i=r.isWindow?r.scrollLeft:r.offset.left,s=r.width,u=e.left-t.collisionPosition.marginLeft,a=i-u,f=u+t.collisionWidth-s-i;t.collisionWidth>s?a>0&&0>=f?(n=e.left+a+t.collisionWidth-s-i,e.left+=a-n):e.left=f>0&&0>=a?i:a>f?i+s-t.collisionWidth:i:a>0?e.left+=a:f>0?e.left-=f:e.left=o(e.left-u,e.left)},top:function(e,t){var n,r=t.within,i=r.isWindow?r.scrollTop:r.offset.top,s=t.within.height,u=e.top-t.collisionPosition.marginTop,a=i-u,f=u+t.collisionHeight-s-i;t.collisionHeight>s?a>0&&0>=f?(n=e.top+a+t.collisionHeight-s-i,e.top+=a-n):e.top=f>0&&0>=a?i:a>f?i+s-t.collisionHeight:i:a>0?e.top+=a:f>0?e.top-=f:e.top=o(e.top-u,e.top)}},flip:{left:function(e,t){var n,r,i=t.within,s=i.offset.left+i.scrollLeft,o=i.width,a=i.isWindow?i.scrollLeft:i.offset.left,f=e.left-t.collisionPosition.marginLeft,l=f-a,c=f+t.collisionWidth-o-a,h="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,d=-2*t.offset[0];0>l?(n=e.left+h+p+d+t.collisionWidth-o-s,(0>n||u(l)>n)&&(e.left+=h+p+d)):c>0&&(r=e.left-t.collisionPosition.marginLeft+h+p+d-a,(r>0||c>u(r))&&(e.left+=h+p+d))},top:function(e,t){var n,r,i=t.within,s=i.offset.top+i.scrollTop,o=i.height,a=i.isWindow?i.scrollTop:i.offset.top,f=e.top-t.collisionPosition.marginTop,l=f-a,c=f+t.collisionHeight-o-a,h="top"===t.my[1],p=h?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,d="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,v=-2*t.offset[1];0>l?(r=e.top+p+d+v+t.collisionHeight-o-s,(0>r||u(l)>r)&&(e.top+=p+d+v)):c>0&&(n=e.top-t.collisionPosition.marginTop+p+d+v-a,(n>0||c>u(n))&&(e.top+=p+d+v))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}}}(),e.ui.position,e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])}}),e.fn.extend({disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}});var l="ui-effects-",c="ui-effects-style",h="ui-effects-animated",p=e;e.effects={effect:{}},function(e,t){function n(e,t,n){var r=c[t.type]||{};return null==e?n||!t.def?null:t.def:(e=r.floor?~~e:parseFloat(e),isNaN(e)?t.def:r.mod?(e+r.mod)%r.mod:0>e?0:e>r.max?r.max:e)}function r(n){var r=f(),i=r._rgba=[];return n=n.toLowerCase(),d(a,function(e,s){var o,u=s.re.exec(n),a=u&&s.parse(u),f=s.space||"rgba";return a?(o=r[f](a),r[l[f].cache]=o[l[f].cache],i=r._rgba=o._rgba,!1):t}),i.length?("0,0,0,0"===i.join()&&e.extend(i,s.transparent),r):s[n]}function i(e,t,n){return n=(n+1)%1,1>6*n?e+6*(t-e)*n:1>2*n?t:2>3*n?e+6*(t-e)*(2/3-n):e}var s,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",u=/^([\-+])=\s*(\d+\.?\d*)/,a=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],f=e.Color=function(t,n,r,i){return new e.Color.fn.parse(t,n,r,i)},l={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},c={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},h=f.support={},p=e("<p>")[0],d=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",h.rgba=p.style.backgroundColor.indexOf("rgba")>-1,d(l,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),f.fn=e.extend(f.prototype,{parse:function(i,o,u,a){if(i===t)return this._rgba=[null,null,null,null],this;(i.jquery||i.nodeType)&&(i=e(i).css(o),o=t);var c=this,h=e.type(i),p=this._rgba=[];return o!==t&&(i=[i,o,u,a],h="array"),"string"===h?this.parse(r(i)||s._default):"array"===h?(d(l.rgba.props,function(e,t){p[t.idx]=n(i[t.idx],t)}),this):"object"===h?(i instanceof f?d(l,function(e,t){i[t.cache]&&(c[t.cache]=i[t.cache].slice())}):d(l,function(t,r){var s=r.cache;d(r.props,function(e,t){if(!c[s]&&r.to){if("alpha"===e||null==i[e])return;c[s]=r.to(c._rgba)}c[s][t.idx]=n(i[e],t,!0)}),c[s]&&0>e.inArray(null,c[s].slice(0,3))&&(c[s][3]=1,r.from&&(c._rgba=r.from(c[s])))}),this):t},is:function(e){var n=f(e),r=!0,i=this;return d(l,function(e,s){var o,u=n[s.cache];return u&&(o=i[s.cache]||s.to&&s.to(i._rgba)||[],d(s.props,function(e,n){return null!=u[n.idx]?r=u[n.idx]===o[n.idx]:t})),r}),r},_space:function(){var e=[],t=this;return d(l,function(n,r){t[r.cache]&&e.push(n)}),e.pop()},transition:function(e,t){var r=f(e),i=r._space(),s=l[i],o=0===this.alpha()?f("transparent"):this,u=o[s.cache]||s.to(o._rgba),a=u.slice();return r=r[s.cache],d(s.props,function(e,i){var s=i.idx,o=u[s],f=r[s],l=c[i.type]||{};null!==f&&(null===o?a[s]=f:(l.mod&&(f-o>l.mod/2?o+=l.mod:o-f>l.mod/2&&(o-=l.mod)),a[s]=n((f-o)*t+o,i)))}),this[i](a)},blend:function(t){if(1===this._rgba[3])return this;var n=this._rgba.slice(),r=n.pop(),i=f(t)._rgba;return f(e.map(n,function(e,t){return(1-r)*i[t]+r*e}))},toRgbaString:function(){var t="rgba(",n=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===n[3]&&(n.pop(),t="rgb("),t+n.join()+")"},toHslaString:function(){var t="hsla(",n=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===n[3]&&(n.pop(),t="hsl("),t+n.join()+")"},toHexString:function(t){var n=this._rgba.slice(),r=n.pop();return t&&n.push(~~(255*r)),"#"+e.map(n,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),f.fn.parse.prototype=f.fn,l.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,n,r=e[0]/255,i=e[1]/255,s=e[2]/255,o=e[3],u=Math.max(r,i,s),a=Math.min(r,i,s),f=u-a,l=u+a,c=.5*l;return t=a===u?0:r===u?60*(i-s)/f+360:i===u?60*(s-r)/f+120:60*(r-i)/f+240,n=0===f?0:.5>=c?f/l:f/(2-l),[Math.round(t)%360,n,c,null==o?1:o]},l.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,n=e[1],r=e[2],s=e[3],o=.5>=r?r*(1+n):r+n-r*n,u=2*r-o;return[Math.round(255*i(u,o,t+1/3)),Math.round(255*i(u,o,t)),Math.round(255*i(u,o,t-1/3)),s]},d(l,function(r,i){var s=i.props,o=i.cache,a=i.to,l=i.from;f.fn[r]=function(r){if(a&&!this[o]&&(this[o]=a(this._rgba)),r===t)return this[o].slice();var i,u=e.type(r),c="array"===u||"object"===u?r:arguments,h=this[o].slice();return d(s,function(e,t){var r=c["object"===u?e:t.idx];null==r&&(r=h[t.idx]),h[t.idx]=n(r,t)}),l?(i=f(l(h)),i[o]=h,i):f(h)},d(s,function(t,n){f.fn[t]||(f.fn[t]=function(i){var s,o=e.type(i),a="alpha"===t?this._hsla?"hsla":"rgba":r,f=this[a](),l=f[n.idx];return"undefined"===o?l:("function"===o&&(i=i.call(this,l),o=e.type(i)),null==i&&n.empty?this:("string"===o&&(s=u.exec(i),s&&(i=l+parseFloat(s[2])*("+"===s[1]?1:-1))),f[n.idx]=i,this[a](f)))})})}),f.hook=function(t){var n=t.split(" ");d(n,function(t,n){e.cssHooks[n]={set:function(t,i){var s,o,u="";if("transparent"!==i&&("string"!==e.type(i)||(s=r(i)))){if(i=f(s||i),!h.rgba&&1!==i._rgba[3]){for(o="backgroundColor"===n?t.parentNode:t;(""===u||"transparent"===u)&&o&&o.style;)try{u=e.css(o,"backgroundColor"),o=o.parentNode}catch(a){}i=i.blend(u&&"transparent"!==u?u:"_default")}i=i.toRgbaString()}try{t.style[n]=i}catch(a){}}},e.fx.step[n]=function(t){t.colorInit||(t.start=f(t.elem,n),t.end=f(t.end),t.colorInit=!0),e.cssHooks[n].set(t.elem,t.start.transition(t.end,t.pos))}})},f.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return d(["Top","Right","Bottom","Left"],function(n,r){t["border"+r+"Color"]=e}),t}},s=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(p),function(){function t(t){var n,r,i=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,s={};if(i&&i.length&&i[0]&&i[i[0]])for(r=i.length;r--;)n=i[r],"string"==typeof i[n]&&(s[e.camelCase(n)]=i[n]);else for(n in i)"string"==typeof i[n]&&(s[n]=i[n]);return s}function n(t,n){var r,s,o={};for(r in n)s=n[r],t[r]!==s&&(i[r]||(e.fx.step[r]||!isNaN(parseFloat(s)))&&(o[r]=s));return o}var r=["add","remove","toggle"],i={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,n){e.fx.step[n]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(p.style(e.elem,n,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(i,s,o,u){var a=e.speed(s,o,u);return this.queue(function(){var s,o=e(this),u=o.attr("class")||"",f=a.children?o.find("*").addBack():o;f=f.map(function(){var n=e(this);return{el:n,start:t(this)}}),s=function(){e.each(r,function(e,t){i[t]&&o[t+"Class"](i[t])})},s(),f=f.map(function(){return this.end=t(this.el[0]),this.diff=n(this.start,this.end),this}),o.attr("class",u),f=f.map(function(){var t=this,n=e.Deferred(),r=e.extend({},a,{queue:!1,complete:function(){n.resolve(t)}});return this.el.animate(this.diff,r),n.promise()}),e.when.apply(e,f.get()).done(function(){s(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),a.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(n,r,i,s){return r?e.effects.animateClass.call(this,{add:n},r,i,s):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(n,r,i,s){return arguments.length>1?e.effects.animateClass.call(this,{remove:n},r,i,s):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(n,r,i,s,o){return"boolean"==typeof r||void 0===r?i?e.effects.animateClass.call(this,r?{add:n}:{remove:n},i,s,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:n},r,i,s)}}(e.fn.toggleClass),switchClass:function(t,n,r,i,s){return e.effects.animateClass.call(this,{add:n,remove:t},r,i,s)}})}(),function(){function t(t,n,r,i){return e.isPlainObject(t)&&(n=t,t=t.effect),t={effect:t},null==n&&(n={}),e.isFunction(n)&&(i=n,r=null,n={}),("number"==typeof n||e.fx.speeds[n])&&(i=r,r=n,n={}),e.isFunction(r)&&(i=r,r=null),n&&e.extend(t,n),r=r||n.duration,t.duration=e.fx.off?0:"number"==typeof r?r:r in e.fx.speeds?e.fx.speeds[r]:e.fx.speeds._default,t.complete=i||n.complete,t}function n(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}function r(e,t){var n=t.outerWidth(),r=t.outerHeight(),i=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,s=i.exec(e)||["",0,n,r,0];return{top:parseFloat(s[1])||0,right:"auto"===s[2]?n:parseFloat(s[2]),bottom:"auto"===s[3]?r:parseFloat(s[3]),left:parseFloat(s[4])||0}}e.expr&&e.expr.filters&&e.expr.filters.animated&&(e.expr.filters.animated=function(t){return function(n){return!!e(n).data(h)||t(n)}}(e.expr.filters.animated)),e.uiBackCompat!==!1&&e.extend(e.effects,{save:function(e,t){for(var n=0,r=t.length;r>n;n++)null!==t[n]&&e.data(l+t[n],e[0].style[t[n]])},restore:function(e,t){for(var n,r=0,i=t.length;i>r;r++)null!==t[r]&&(n=e.data(l+t[r]),e.css(t[r],n))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var n={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},r=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),i={width:t.width(),height:t.height()},s=document.activeElement;try{s.id}catch(o){s=document.body}return t.wrap(r),(t[0]===s||e.contains(t[0],s))&&e(s).trigger("focus"),r=t.parent(),"static"===t.css("position")?(r.css({position:"relative"}),t.css({position:"relative"})):(e.extend(n,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,r){n[r]=t.css(r),isNaN(parseInt(n[r],10))&&(n[r]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(i),r.css(n).show()},removeWrapper:function(t){var n=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===n||e.contains(t[0],n))&&e(n).trigger("focus")),t}}),e.extend(e.effects,{version:"1.12.0",define:function(t,n,r){return r||(r=n,n="effect"),e.effects.effect[t]=r,e.effects.effect[t].mode=n,r},scaledDimensions:function(e,t,n){if(0===t)return{height:0,width:0,outerHeight:0,outerWidth:0};var r="horizontal"!==n?(t||100)/100:1,i="vertical"!==n?(t||100)/100:1;return{height:e.height()*i,width:e.width()*r,outerHeight:e.outerHeight()*i,outerWidth:e.outerWidth()*r}},clipToBox:function(e){return{width:e.clip.right-e.clip.left,height:e.clip.bottom-e.clip.top,left:e.clip.left,top:e.clip.top}},unshift:function(e,t,n){var r=e.queue();t>1&&r.splice.apply(r,[1,0].concat(r.splice(t,n))),e.dequeue()},saveStyle:function(e){e.data(c,e[0].style.cssText)},restoreStyle:function(e){e[0].style.cssText=e.data(c)||"",e.removeData(c)},mode:function(e,t){var n=e.is(":hidden");return"toggle"===t&&(t=n?"show":"hide"),(n?"hide"===t:"show"===t)&&(t="none"),t},getBaseline:function(e,t){var n,r;switch(e[0]){case"top":n=0;break;case"middle":n=.5;break;case"bottom":n=1;break;default:n=e[0]/t.height}switch(e[1]){case"left":r=0;break;case"center":r=.5;break;case"right":r=1;break;default:r=e[1]/t.width}return{x:r,y:n}},createPlaceholder:function(t){var n,r=t.css("position"),i=t.position();return t.css({marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()),/^(static|relative)/.test(r)&&(r="absolute",n=e("<"+t[0].nodeName+">").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),"float":t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(l+"placeholder",n)),t.css({position:r,left:i.left,top:i.top}),n},removePlaceholder:function(e){var t=l+"placeholder",n=e.data(t);n&&(n.remove(),e.removeData(t))},cleanUp:function(t){e.effects.restoreStyle(t),e.effects.removePlaceholder(t)},setTransition:function(t,n,r,i){return i=i||{},e.each(n,function(e,n){var s=t.cssUnit(n);s[0]>0&&(i[n]=s[0]*r+s[1])}),i}}),e.fn.extend({effect:function(){function n(t){function n(){u.removeData(h),e.effects.cleanUp(u),"hide"===r.mode&&u.hide(),o()}function o(){e.isFunction(a)&&a.call(u[0]),e.isFunction(t)&&t()}var u=e(this);r.mode=l.shift(),e.uiBackCompat===!1||s?"none"===r.mode?(u[f](),o()):i.call(u[0],r,n):(u.is(":hidden")?"hide"===f:"show"===f)?(u[f](),o()):i.call(u[0],r,o)}var r=t.apply(this,arguments),i=e.effects.effect[r.effect],s=i.mode,o=r.queue,u=o||"fx",a=r.complete,f=r.mode,l=[],c=function(t){var n=e(this),r=e.effects.mode(n,f)||s;n.data(h,!0),l.push(r),s&&("show"===r||r===s&&"hide"===r)&&n.show(),s&&"none"===r||e.effects.saveStyle(n),e.isFunction(t)&&t()};return e.fx.off||!i?f?this[f](r.duration,a):this.each(function(){a&&a.call(this)}):o===!1?this.each(c).each(n):this.queue(u,c).queue(u,n)},show:function(e){return function(r){if(n(r))return e.apply(this,arguments);var i=t.apply(this,arguments);return i.mode="show",this.effect.call(this,i)}}(e.fn.show),hide:function(e){return function(r){if(n(r))return e.apply(this,arguments);var i=t.apply(this,arguments);return i.mode="hide",this.effect.call(this,i)}}(e.fn.hide),toggle:function(e){return function(r){if(n(r)||"boolean"==typeof r)return e.apply(this,arguments);var i=t.apply(this,arguments);return i.mode="toggle",this.effect.call(this,i)}}(e.fn.toggle),cssUnit:function(t){var n=this.css(t),r=[];return e.each(["em","px","%","pt"],function(e,t){n.indexOf(t)>0&&(r=[parseFloat(n),t])}),r},cssClip:function(e){return e?this.css("clip","rect("+e.top+"px "+e.right+"px "+e.bottom+"px "+e.left+"px)"):r(this.css("clip"),this)},transfer:function(t,n){var r=e(this),i=e(t.to),s="fixed"===i.css("position"),o=e("body"),u=s?o.scrollTop():0,a=s?o.scrollLeft():0,f=i.offset(),l={top:f.top-u,left:f.left-a,height:i.innerHeight(),width:i.innerWidth()},c=r.offset(),h=e("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(t.className).css({top:c.top-u,left:c.left-a,height:r.innerHeight(),width:r.innerWidth(),position:s?"fixed":"absolute"}).animate(l,t.duration,t.easing,function(){h.remove(),e.isFunction(n)&&n()})}}),e.fx.step.clip=function(t){t.clipInit||(t.start=e(t.elem).cssClip(),"string"==typeof t.end&&(t.end=r(t.end,t.elem)),t.clipInit=!0),e(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})}}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,n){t[n]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,n=4;((t=Math.pow(2,--n))-1)/11>e;);return 1/Math.pow(4,3-n)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,n){e.easing["easeIn"+t]=n,e.easing["easeOut"+t]=function(e){return 1-n(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?n(2*e)/2:1-n(-2*e+2)/2}})}();var d=e.effects;e.effects.define("blind","hide",function(t,n){var r={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},i=e(this),s=t.direction||"up",o=i.cssClip(),u={clip:e.extend({},o)},a=e.effects.createPlaceholder(i);u.clip[r[s][0]]=u.clip[r[s][1]],"show"===t.mode&&(i.cssClip(u.clip),a&&a.css(e.effects.clipToBox(u)),u.clip=o),a&&a.animate(e.effects.clipToBox(u),t.duration,t.easing),i.animate(u,{queue:!1,duration:t.duration,easing:t.easing,complete:n})}),e.effects.define("bounce",function(t,n){var r,i,s,o=e(this),u=t.mode,a="hide"===u,f="show"===u,l=t.direction||"up",c=t.distance,h=t.times||5,p=2*h+(f||a?1:0),d=t.duration/p,v=t.easing,m="up"===l||"down"===l?"top":"left",g="up"===l||"left"===l,y=0,b=o.queue().length;for(e.effects.createPlaceholder(o),s=o.css(m),c||(c=o["top"===m?"outerHeight":"outerWidth"]()/3),f&&(i={opacity:1},i[m]=s,o.css("opacity",0).css(m,g?2*-c:2*c).animate(i,d,v)),a&&(c/=Math.pow(2,h-1)),i={},i[m]=s;h>y;y++)r={},r[m]=(g?"-=":"+=")+c,o.animate(r,d,v).animate(i,d,v),c=a?2*c:c/2;a&&(r={opacity:0},r[m]=(g?"-=":"+=")+c,o.animate(r,d,v)),o.queue(n),e.effects.unshift(o,b,p+1)}),e.effects.define("clip","hide",function(t,n){var r,i={},s=e(this),o=t.direction||"vertical",u="both"===o,a=u||"horizontal"===o,f=u||"vertical"===o;r=s.cssClip(),i.clip={top:f?(r.bottom-r.top)/2:r.top,right:a?(r.right-r.left)/2:r.right,bottom:f?(r.bottom-r.top)/2:r.bottom,left:a?(r.right-r.left)/2:r.left},e.effects.createPlaceholder(s),"show"===t.mode&&(s.cssClip(i.clip),i.clip=r),s.animate(i,{queue:!1,duration:t.duration,easing:t.easing,complete:n})}),e.effects.define("drop","hide",function(t,n){var r,i=e(this),s=t.mode,o="show"===s,u=t.direction||"left",a="up"===u||"down"===u?"top":"left",f="up"===u||"left"===u?"-=":"+=",l="+="===f?"-=":"+=",c={opacity:0};e.effects.createPlaceholder(i),r=t.distance||i["top"===a?"outerHeight":"outerWidth"](!0)/2,c[a]=f+r,o&&(i.css(c),c[a]=l+r,c.opacity=1),i.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:n})}),e.effects.define("explode","hide",function(t,n){function r(){b.push(this),b.length===c*h&&i()}function i(){p.css({visibility:"visible"}),e(b).remove(),n()}var s,o,u,a,f,l,c=t.pieces?Math.round(Math.sqrt(t.pieces)):3,h=c,p=e(this),d=t.mode,v="show"===d,m=p.show().css("visibility","hidden").offset(),g=Math.ceil(p.outerWidth()/h),y=Math.ceil(p.outerHeight()/c),b=[];for(s=0;c>s;s++)for(a=m.top+s*y,l=s-(c-1)/2,o=0;h>o;o++)u=m.left+o*g,f=o-(h-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*g,top:-s*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:g,height:y,left:u+(v?f*g:0),top:a+(v?l*y:0),opacity:v?0:1}).animate({left:u+(v?0:f*g),top:a+(v?0:l*y),opacity:v?1:0},t.duration||500,t.easing,r)}),e.effects.define("fade","toggle",function(t,n){var r="show"===t.mode;e(this).css("opacity",r?0:1).animate({opacity:r?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:n})}),e.effects.define("fold","hide",function(t,n){var r=e(this),i=t.mode,s="show"===i,o="hide"===i,u=t.size||15,a=/([0-9]+)%/.exec(u),f=!!t.horizFirst,l=f?["right","bottom"]:["bottom","right"],c=t.duration/2,h=e.effects.createPlaceholder(r),p=r.cssClip(),d={clip:e.extend({},p)},v={clip:e.extend({},p)},m=[p[l[0]],p[l[1]]],g=r.queue().length;a&&(u=parseInt(a[1],10)/100*m[o?0:1]),d.clip[l[0]]=u,v.clip[l[0]]=u,v.clip[l[1]]=0,s&&(r.cssClip(v.clip),h&&h.css(e.effects.clipToBox(v)),v.clip=p),r.queue(function(n){h&&h.animate(e.effects.clipToBox(d),c,t.easing).animate(e.effects.clipToBox(v),c,t.easing),n()}).animate(d,c,t.easing).animate(v,c,t.easing).queue(n),e.effects.unshift(r,g,4)}),e.effects.define("highlight","show",function(t,n){var r=e(this),i={backgroundColor:r.css("backgroundColor")};"hide"===t.mode&&(i.opacity=0),e.effects.saveStyle(r),r.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(i,{queue:!1,duration:t.duration,easing:t.easing,complete:n})}),e.effects.define("size",function(t,n){var r,i,s,o=e(this),u=["fontSize"],a=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],f=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],l=t.mode,c="effect"!==l,h=t.scale||"both",p=t.origin||["middle","center"],d=o.css("position"),v=o.position(),m=e.effects.scaledDimensions(o),g=t.from||m,y=t.to||e.effects.scaledDimensions(o,0);e.effects.createPlaceholder(o),"show"===l&&(s=g,g=y,y=s),i={from:{y:g.height/m.height,x:g.width/m.width},to:{y:y.height/m.height,x:y.width/m.width}},("box"===h||"both"===h)&&(i.from.y!==i.to.y&&(g=e.effects.setTransition(o,a,i.from.y,g),y=e.effects.setTransition(o,a,i.to.y,y)),i.from.x!==i.to.x&&(g=e.effects.setTransition(o,f,i.from.x,g),y=e.effects.setTransition(o,f,i.to.x,y))),("content"===h||"both"===h)&&i.from.y!==i.to.y&&(g=e.effects.setTransition(o,u,i.from.y,g),y=e.effects.setTransition(o,u,i.to.y,y)),p&&(r=e.effects.getBaseline(p,m),g.top=(m.outerHeight-g.outerHeight)*r.y+v.top,g.left=(m.outerWidth-g.outerWidth)*r.x+v.left,y.top=(m.outerHeight-y.outerHeight)*r.y+v.top,y.left=(m.outerWidth-y.outerWidth)*r.x+v.left),o.css(g),("content"===h||"both"===h)&&(a=a.concat(["marginTop","marginBottom"]).concat(u),f=f.concat(["marginLeft","marginRight"]),o.find("*[width]").each(function(){var n=e(this),r=e.effects.scaledDimensions(n),s={height:r.height*i.from.y,width:r.width*i.from.x,outerHeight:r.outerHeight*i.from.y,outerWidth:r.outerWidth*i.from.x},o={height:r.height*i.to.y,width:r.width*i.to.x,outerHeight:r.height*i.to.y,outerWidth:r.width*i.to.x};i.from.y!==i.to.y&&(s=e.effects.setTransition(n,a,i.from.y,s),o=e.effects.setTransition(n,a,i.to.y,o)),i.from.x!==i.to.x&&(s=e.effects.setTransition(n,f,i.from.x,s),o=e.effects.setTransition(n,f,i.to.x,o)),c&&e.effects.saveStyle(n),n.css(s),n.animate(o,t.duration,t.easing,function(){c&&e.effects.restoreStyle(n)})})),o.animate(y,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){var t=o.offset();0===y.opacity&&o.css("opacity",g.opacity),c||(o.css("position","static"===d?"relative":d).offset(t),e.effects.saveStyle(o)),n()}})}),e.effects.define("scale",function(t,n){var r=e(this),i=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"effect"!==i?0:100),o=e.extend(!0,{from:e.effects.scaledDimensions(r),to:e.effects.scaledDimensions(r,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(o.from.opacity=1,o.to.opacity=0),e.effects.effect.size.call(this,o,n)}),e.effects.define("puff","hide",function(t,n){var r=e.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});e.effects.effect.scale.call(this,r,n)}),e.effects.define("pulsate","show",function(t,n){var r=e(this),i=t.mode,s="show"===i,o="hide"===i,u=s||o,a=2*(t.times||5)+(u?1:0),f=t.duration/a,l=0,c=1,h=r.queue().length;for((s||!r.is(":visible"))&&(r.css("opacity",0).show(),l=1);a>c;c++)r.animate({opacity:l},f,t.easing),l=1-l;r.animate({opacity:l},f,t.easing),r.queue(n),e.effects.unshift(r,h,a+1)}),e.effects.define("shake",function(t,n){var r=1,i=e(this),s=t.direction||"left",o=t.distance||20,u=t.times||3,a=2*u+1,f=Math.round(t.duration/a),l="up"===s||"down"===s?"top":"left",c="up"===s||"left"===s,h={},p={},d={},v=i.queue().length;for(e.effects.createPlaceholder(i),h[l]=(c?"-=":"+=")+o,p[l]=(c?"+=":"-=")+2*o,d[l]=(c?"-=":"+=")+2*o,i.animate(h,f,t.easing);u>r;r++)i.animate(p,f,t.easing).animate(d,f,t.easing);i.animate(p,f,t.easing).animate(h,f/2,t.easing).queue(n),e.effects.unshift(i,v,a+1)}),e.effects.define("slide","show",function(t,n){var r,i,s=e(this),o={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},u=t.mode,a=t.direction||"left",f="up"===a||"down"===a?"top":"left",l="up"===a||"left"===a,c=t.distance||s["top"===f?"outerHeight":"outerWidth"](!0),h={};e.effects.createPlaceholder(s),r=s.cssClip(),i=s.position()[f],h[f]=(l?-1:1)*c+i,h.clip=s.cssClip(),h.clip[o[a][1]]=h.clip[o[a][0]],"show"===u&&(s.cssClip(h.clip),s.css(f,h[f]),h.clip=r,h[f]=i),s.animate(h,{queue:!1,duration:t.duration,easing:t.easing,complete:n})});var d;e.uiBackCompat!==!1&&(d=e.effects.define("transfer",function(t,n){e(this).transfer(t,n)})),e.ui.focusable=function(n,r){var i,s,o,u,a,f=n.nodeName.toLowerCase();return"area"===f?(i=n.parentNode,s=i.name,n.href&&s&&"map"===i.nodeName.toLowerCase()?(o=e("img[usemap='#"+s+"']"),o.length>0&&o.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(f)?(u=!n.disabled,u&&(a=e(n).closest("fieldset")[0],a&&(u=!a.disabled))):u="a"===f?n.href||r:r,u&&e(n).is(":visible")&&t(e(n)))},e.extend(e.expr[":"],{focusable:function(t){return e.ui.focusable(t,null!=e.attr(t,"tabindex"))}}),e.ui.focusable,e.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):e(this[0].form)},e.ui.formResetMixin={_formResetHandler:function(){var t=e(this);setTimeout(function(){var n=t.data("ui-form-reset-instances");e.each(n,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var e=this.form.data("ui-form-reset-instances")||[];e.length||this.form.on("reset.ui-form-reset",this._formResetHandler),e.push(this),this.form.data("ui-form-reset-instances",e)}},_unbindFormResetHandler:function(){if(this.form.length){var t=this.form.data("ui-form-reset-instances");t.splice(e.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===e.fn.jquery.substring(0,3)&&(e.each(["Width","Height"],function(t,n){function r(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i="Width"===n?["Left","Right"]:["Top","Bottom"],s=n.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+n]=function(t){return void 0===t?o["inner"+n].call(this):this.each(function(){e(this).css(s,r(this,t)+"px")})},e.fn["outer"+n]=function(t,i){return"number"!=typeof t?o["outer"+n].call(this,t):this.each(function(){e(this).css(s,r(this,t,!0,i)+"px")})}}),e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},e.ui.escapeSelector=function(){var e=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(t){return t.replace(e,"\\$1")}}(),e.fn.labels=function(){var t,n,r,i,s;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(i=this.eq(0).parents("label"),r=this.attr("id"),r&&(t=this.eq(0).parents().last(),s=t.add(t.length?t.siblings():this.siblings()),n="label[for='"+e.ui.escapeSelector(r)+"']",i=i.add(s.find(n).addBack(n))),this.pushStack(i))},e.fn.scrollParent=function(t){var n=this.css("position"),r="absolute"===n,i=t?/(auto|scroll|hidden)/:/(auto|scroll)/,s=this.parents().filter(function(){var t=e(this);return r&&"static"===t.css("position")?!1:i.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==n&&s.length?s:e(this[0].ownerDocument||document)},e.extend(e.expr[":"],{tabbable:function(t){var n=e.attr(t,"tabindex"),r=null!=n;return(!r||n>=0)&&e.ui.focusable(t,r)}}),e.fn.extend({uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.widget("ui.accordion",{version:"1.12.0",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t,n,r=this.options.icons;r&&(t=e("<span>"),this._addClass(t,"ui-accordion-header-icon","ui-icon "+r.header),t.prependTo(this.headers),n=this.active.children(".ui-accordion-header-icon"),this._removeClass(n,r.header)._addClass(n,null,r.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),void 0)},_setOptionDisabled:function(e){this._super(e),this.element.attr("aria-disabled",e),this._toggleClass(null,"ui-state-disabled",!!e),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!e)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var n=e.ui.keyCode,r=this.headers.length,i=this.headers.index(t.target),s=!1;switch(t.keyCode){case n.RIGHT:case n.DOWN:s=this.headers[(i+1)%r];break;case n.LEFT:case n.UP:s=this.headers[(i-1+r)%r];break;case n.SPACE:case n.ENTER:this._eventHandler(t);break;case n.HOME:s=this.headers[0];break;case n.END:s=this.headers[r-1]}s&&(e(t.target).attr("tabIndex",-1),e(s).attr("tabIndex",0),e(s).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,n=this.options,r=n.heightStyle,i=this.element.parent();this.active=this._findActive(n.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=e(this),n=t.uniqueId().attr("id"),r=t.next(),i=r.uniqueId().attr("id");t.attr("aria-controls",i),r.attr("aria-labelledby",n)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(n.event),"fill"===r?(t=i.height(),this.element.siblings(":visible").each(function(){var n=e(this),r=n.css("position");"absolute"!==r&&"fixed"!==r&&(t-=n.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===r&&(t=0,this.headers.next().each(function(){var n=e(this).is(":visible");n||e(this).show(),t=Math.max(t,e(this).css("height","").height()),n||e(this).hide()}).height(t))},_activate:function(t){var n=this._findActive(t)[0];n!==this.active[0]&&(n=n||this.active[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var n={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,n),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var n,r,i=this.options,s=this.active,o=e(t.currentTarget),u=o[0]===s[0],a=u&&i.collapsible,f=a?e():o.next(),l=s.next(),c={oldHeader:s,oldPanel:l,newHeader:a?e():o,newPanel:f};t.preventDefault(),u&&!i.collapsible||this._trigger("beforeActivate",t,c)===!1||(i.active=a?!1:this.headers.index(o),this.active=u?e():o,this._toggle(c),this._removeClass(s,"ui-accordion-header-active","ui-state-active"),i.icons&&(n=s.children(".ui-accordion-header-icon"),this._removeClass(n,null,i.icons.activeHeader)._addClass(n,null,i.icons.header)),u||(this._removeClass(o,"ui-accordion-header-collapsed")._addClass(o,"ui-accordion-header-active","ui-state-active"),i.icons&&(r=o.children(".ui-accordion-header-icon"),this._removeClass(r,null,i.icons.header)._addClass(r,null,i.icons.activeHeader)),this._addClass(o.next(),"ui-accordion-content-active")))},_toggle:function(t){var n=t.newPanel,r=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=n,this.prevHide=r,this.options.animate?this._animate(n,r,t):(r.hide(),n.show(),this._toggleComplete(t)),r.attr({"aria-hidden":"true"}),r.prev().attr({"aria-selected":"false","aria-expanded":"false"}),n.length&&r.length?r.prev().attr({tabIndex:-1,"aria-expanded":"false"}):n.length&&this.headers.filter(function(){return 0===parseInt(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),n.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,n){var r,i,s,o=this,u=0,a=e.css("box-sizing"),f=e.length&&(!t.length||e.index()<t.index()),l=this.options.animate||{},c=f&&l.down||l,h=function(){o._toggleComplete(n)};return"number"==typeof c&&(s=c),"string"==typeof c&&(i=c),i=i||c.easing||l.easing,s=s||c.duration||l.duration,t.length?e.length?(r=e.show().outerHeight(),t.animate(this.hideProps,{duration:s,easing:i,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:s,easing:i,complete:h,step:function(e,n){n.now=Math.round(e),"height"!==n.prop?"content-box"===a&&(u+=n.now):"content"!==o.options.heightStyle&&(n.now=Math.round(r-t.outerHeight()-u),u=0)}}),void 0):t.animate(this.hideProps,s,i,h):e.animate(this.showProps,s,i,h)},_toggleComplete:function(e){var t=e.oldPanel,n=t.prev();this._removeClass(t,"ui-accordion-content-active"),this._removeClass(n,"ui-accordion-header-active")._addClass(n,"ui-accordion-header-collapsed"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.ui.safeActiveElement=function(e){var t;try{t=e.activeElement}catch(n){t=e.body}return t||(t=e.body),t.nodeName||(t=e.body),t},e.widget("ui.menu",{version:"1.12.0",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var n=e(t.target),r=e(e.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&n.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),n.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&r.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var n=e(t.target).closest(".ui-menu-item"),r=e(t.currentTarget);n[0]===r[0]&&(this._removeClass(r.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,r))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,n)},blur:function(t){this._delay(function(){var n=!e.contains(this.element[0],e.ui.safeActiveElement(this.document[0]));n&&this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),n=t.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),n.children().each(function(){var t=e(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var n,r,i,s,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,n=this._filterMenuItems(i),n=s&&-1!==n.index(this.active.next())?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),n=this._filterMenuItems(i)),n.length?(this.focus(t,n),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,n,r,i,s,o=this,u=this.options.icons.submenu,a=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),r=a.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),n=t.prev(),r=e("<span>").data("ui-menu-submenu-caret",!0);o._addClass(r,"ui-menu-icon","ui-icon "+u),n.attr("aria-haspopup","true").prepend(r),t.attr("aria-labelledby",n.attr("id"))}),this._addClass(r,"ui-menu","ui-widget ui-widget-content ui-front"),t=a.add(this.element),n=t.find(this.options.items),n.not(".ui-menu-item").each(function(){var t=e(this);o._isDivider(t)&&o._addClass(t,"ui-menu-divider","ui-widget-content")}),i=n.not(".ui-menu-item, .ui-menu-divider"),s=i.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(s,"ui-menu-item-wrapper"),n.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){if("icons"===e){var n=this.element.find(".ui-menu-icon");this._removeClass(n,null,this.options.icons.submenu)._addClass(n,null,t.submenu)}this._super(e,t)},_setOptionDisabled:function(e){this._super(e),this.element.attr("aria-disabled",e+""),this._toggleClass(null,"ui-state-disabled",!!e)},focus:function(e,t){var n,r,i;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),r=this.active.children(".ui-menu-item-wrapper"),this._addClass(r,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",r.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),n=t.children(".ui-menu"),n.length&&e&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,r,i,s,o,u;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,i=t.offset().top-this.activeMenu.offset().top-n-r,s=this.activeMenu.scrollTop(),o=this.activeMenu.height(),u=t.outerHeight(),0>i?this.activeMenu.scrollTop(s+i):i+u>o&&this.activeMenu.scrollTop(s+i-o+u))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",e,{item:this.active}),this.active=null)},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay(function(){var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));r.length||(r=this.element),this._close(r),this.blur(t),this._removeClass(r.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=r},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,n){var r;this.active&&(r="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),r&&r.length&&this.active||(r=this.activeMenu.find(this.options.items)[t]()),this.focus(n,r)},nextPage:function(t){var n,r,i;return this.active?(this.isLastItem()||(this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return n=e(this),0>n.offset().top-r-i}),this.focus(t,n)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var n,r,i;return this.active?(this.isFirstItem()||(this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r+i>0}),this.focus(t,n)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var n={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,n)},_filterMenuItems:function(t){var n=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),r=RegExp("^"+n,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return r.test(e.trim(e(this).children(".ui-menu-item-wrapper").text()))})}}),e.widget("ui.autocomplete",{version:"1.12.0",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,n,r,i=this.element[0].nodeName.toLowerCase(),s="textarea"===i,o="input"===i;this.isMultiLine=s||!o&&this._isContentEditable(this.element),this.valueMethod=this.element[s||o?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(i){if(this.element.prop("readOnly"))return t=!0,r=!0,n=!0,void 0;t=!1,r=!1,n=!1;var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:t=!0,this._move("previousPage",i);break;case s.PAGE_DOWN:t=!0,this._move("nextPage",i);break;case s.UP:t=!0,this._keyEvent("previous",i);break;case s.DOWN:t=!0,this._keyEvent("next",i);break;case s.ENTER:this.menu.active&&(t=!0,i.preventDefault(),this.menu.select(i));break;case s.TAB:this.menu.active&&this.menu.select(i);break;case s.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(i),i.preventDefault());break;default:n=!0,this._searchTimeout(i)}},keypress:function(r){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&r.preventDefault(),void 0;if(!n){var i=e.ui.keyCode;switch(r.keyCode){case i.PAGE_UP:this._move("previousPage",r);break;case i.PAGE_DOWN:this._move("nextPage",r);break;case i.UP:this._keyEvent("previous",r);break;case i.DOWN:this._keyEvent("next",r)}}},input:function(e){return r?(r=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==e.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(t,n){var r,i;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(i=n.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:i})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(i.value),r=n.item.attr("aria-label")||i.value,r&&e.trim(r).length&&(this.liveRegion.children().hide(),e("<div>").text(r).appendTo(this.liveRegion)),void 0)},menuselect:function(t,n){var r=n.item.data("ui-autocomplete-item"),i=this.previous;this.element[0]!==e.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=i,this._delay(function(){this.previous=i,this.selectedItem=r})),!1!==this._trigger("select",t,{item:r})&&this._value(r.value),this.term=this._value(),this.close(t),this.selectedItem=r}}),this.liveRegion=e("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var n=this.menu.element[0];return t.target===this.element[0]||t.target===n||e.contains(n,t.target)},_closeOnClickOutside:function(e){this._isEventTargetInWidget(e)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front, dialog")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,n,r=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(n,r){r(e.ui.autocomplete.filter(t,n.term))}):"string"==typeof this.options.source?(n=this.options.source,this.source=function(t,i){r.xhr&&r.xhr.abort(),r.xhr=e.ajax({url:n,data:t,dataType:"json",success:function(e){i(e)},error:function(){i([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),n=this.menu.element.is(":visible"),r=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!n&&!r)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var n=this.menu.element.empty();this._renderMenu(n,t),this.isNewMenu=!0,this.menu.refresh(),n.show(),this._resizeMenu(),n.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,n){var r=this;e.each(n,function(e,n){r._renderItemData(t,n)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,n){return e("<li>").append(e("<div>").text(n.label)).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())},_isContentEditable:function(e){if(!e.length)return!1;var t=e.prop("contentEditable");return"inherit"===t?this._isContentEditable(e.parent()):"true"===t}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,n){var r=RegExp(e.ui.autocomplete.escapeRegex(n),"i");return e.grep(t,function(e){return r.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var n;this._superApply(arguments),this.options.disabled||this.cancelSearch||(n=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(n).appendTo(this.liveRegion))}}),e.ui.autocomplete;var v=/ui-corner-([a-z]){2,6}/g;e.widget("ui.controlgroup",{version:"1.12.0",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var t=this,n=[];e.each(this.options.items,function(r,i){var s,o={};return i?"controlgroupLabel"===r?(s=t.element.find(i),s.each(function(){var t=e(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),t._addClass(s,null,"ui-widget ui-widget-content ui-state-default"),n=n.concat(s.get()),void 0):(e.fn[r]&&(t["_"+r+"Options"]&&(o=t["_"+r+"Options"]("middle")),t.element.find(i).each(function(){var i=e(this),s=i[r]("instance"),u=e.widget.extend({},o);if("button"!==r||!i.parent(".ui-spinner").length){s||(s=i[r]()[r]("instance")),s&&(u.classes=t._resolveClassesValues(u.classes,s)),i[r](u);var a=i[r]("widget");e.data(a[0],"ui-controlgroup-data",s?s:i[r]("instance")),n.push(a[0])}})),void 0):void 0}),this.childWidgets=e(e.unique(n)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(t){this.childWidgets.each(function(){var n=e(this),r=n.data("ui-controlgroup-data");r&&r[t]&&r[t]()})},_updateCornerClass:function(e,t){var n="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",r=this._buildSimpleOptions(t,"label").classes.label;this._removeClass(e,null,n),this._addClass(e,null,r)},_buildSimpleOptions:function(e,t){var n="vertical"===this.options.direction,r={classes:{}};return r.classes[t]={middle:"",first:"ui-corner-"+(n?"top":"left"),last:"ui-corner-"+(n?"bottom":"right"),only:"ui-corner-all"}[e],r},_spinnerOptions:function(e){var t=this._buildSimpleOptions(e,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(e){return this._buildSimpleOptions(e,"ui-button")},_checkboxradioOptions:function(e){return this._buildSimpleOptions(e,"ui-checkboxradio-label")},_selectmenuOptions:function(e){var t="vertical"===this.options.direction;return{width:t?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(t?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(t?"top":"left")},last:{"ui-selectmenu-button-open":t?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(t?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[e]}},_resolveClassesValues:function(t,n){var r={};return e.each(t,function(e){var i=n.options.classes[e]||"";i=i.replace(v,"").trim(),r[e]=(i+" "+t[e]).replace(/\s+/g," ")}),r},_setOption:function(e,t){return"direction"===e&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(e,t),"disabled"===e?(this._callChildMethod(t?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var t,n=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),t=this.childWidgets,this.options.onlyVisible&&(t=t.filter(":visible")),t.length&&(e.each(["first","last"],function(e,r){var i=t[r]().data("ui-controlgroup-data");if(i&&n["_"+i.widgetName+"Options"]){var s=n["_"+i.widgetName+"Options"](1===t.length?"only":r);s.classes=n._resolveClassesValues(s.classes,i),i.element[i.widgetName](s)}else n._updateCornerClass(t[r](),r)}),this._callChildMethod("refresh"))}}),e.widget("ui.checkboxradio",[e.ui.formResetMixin,{version:"1.12.0",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,n,r=this,i=this._super()||{};return this._readType(),n=this.element.labels(),this.label=e(n[n.length-1]),this.label.length||e.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element).each(function(){r.originalLabel+=3===this.nodeType?e(this).text():this.outerHTML}),this.originalLabel&&(i.label=this.originalLabel),t=this.element[0].disabled,null!=t&&(i.disabled=t),i},_create:function(){var e=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),e&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||e.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t,n=this.element[0].name,r="input[name='"+e.ui.escapeSelector(n)+"']";return n?(t=this.form.length?e(this.form[0].elements).filter(r):e(r).filter(function(){return 0===e(this).form().length}),t.not(this.element)):e([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=e(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(e,t){return"label"!==e||t?(this._super(e,t),"disabled"===e?(this._toggleClass(this.label,null,"ui-state-disabled",t),this.element[0].disabled=t,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(t){var n="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=e("<span>"),this.iconSpace=e("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(n+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):n+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",n),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){this.label.contents().not(this.element.add(this.icon).add(this.iconSpace)).remove(),this.label.append(this.options.label)},refresh:function(){var e=this.element[0].checked,t=this.element[0].disabled;this._updateIcon(e),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),null!==this.options.label&&this._updateLabel(),t!==this.options.disabled&&this._setOptions({disabled:t})}}]),e.ui.checkboxradio,e.widget("ui.button",{version:"1.12.0",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var e,t=this._super()||{};return this.isInput=this.element.is("input"),e=this.element[0].disabled,null!=e&&(t.disabled=e),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(t.label=this.originalLabel),t},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(t){t.keyCode===e.ui.keyCode.SPACE&&(t.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(t,n){var r="iconPosition"!==t,i=r?this.options.iconPosition:n,s="top"===i||"bottom"===i;this.icon?r&&this._removeClass(this.icon,null,this.options.icon):(this.icon=e("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),r&&this._addClass(this.icon,null,n),this._attachIcon(i),s?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=e("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(i))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(e){this.icon[/^(?:end|bottom)/.test(e)?"before":"after"](this.iconSpace)},_attachIcon:function(e){this.element[/^(?:end|bottom)/.test(e)?"append":"prepend"](this.icon)},_setOptions:function(e){var t=void 0===e.showLabel?this.options.showLabel:e.showLabel,n=void 0===e.icon?this.options.icon:e.icon;t||n||(e.showLabel=!0),this._super(e)},_setOption:function(e,t){"icon"===e&&(t?this._updateIcon(e,t):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===e&&this._updateIcon(e,t),"showLabel"===e&&(this._toggleClass("ui-button-icon-only",null,!t),this._updateTooltip()),"label"===e&&(this.isInput?this.element.val(t):(this.element.html(t),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(e,t),"disabled"===e&&(this._toggleClass(null,"ui-state-disabled",t),this.element[0].disabled=t,t&&this.element.blur())},refresh:function(){var e=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");e!==this.options.disabled&&this._setOptions({disabled:e}),this._updateTooltip()}}),e.uiBackCompat!==!1&&(e.widget("ui.button",e.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(e,t){return"text"===e?(this._super("showLabel",t),void 0):("showLabel"===e&&(this.options.text=t),"icon"===e&&(this.options.icons.primary=t),"icons"===e&&(t.primary?(this._super("icon",t.primary),this._super("iconPosition","beginning")):t.secondary&&(this._super("icon",t.secondary),this._super("iconPosition","end"))),this._superApply(arguments),void 0)}}),e.fn.button=function(t){return function(){return!this.length||this.length&&"INPUT"!==this[0].tagName||this.length&&"INPUT"===this[0].tagName&&"checkbox"!==this.attr("type")&&"radio"!==this.attr("type")?t.apply(this,arguments):(e.ui.checkboxradio||e.error("Checkboxradio widget missing"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}}(e.fn.button),e.fn.buttonset=function(){return e.ui.controlgroup||e.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.12.0"}});var m;e.extend(r.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return o(this._defaults,e||{}),this},_attachDatepicker:function(t,n){var r,i,s;r=t.nodeName.toLowerCase(),i="div"===r||"span"===r,t.id||(this.uuid+=1,t.id="dp"+this.uuid),s=this._newInst(e(t),i),s.settings=e.extend({},n||{}),"input"===r?this._connectDatepicker(t,s):i&&this._inlineDatepicker(t,s)},_newInst:function(t,n){var r=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:r,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:n,dpDiv:n?i(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,n){var r=e(t);n.append=e([]),n.trigger=e([]),r.hasClass(this.markerClassName)||(this._attachments(r,n),r.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(n),e.data(t,"datepicker",n),n.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,n){var r,i,s,o=this._get(n,"appendText"),u=this._get(n,"isRTL");n.append&&n.append.remove(),o&&(n.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[u?"before":"after"](n.append)),t.off("focus",this._showDatepicker),n.trigger&&n.trigger.remove(),r=this._get(n,"showOn"),("focus"===r||"both"===r)&&t.on("focus",this._showDatepicker),("button"===r||"both"===r)&&(i=this._get(n,"buttonText"),s=this._get(n,"buttonImage"),n.trigger=e(this._get(n,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:s,alt:i,title:i}):e("<button type='button'></button>").addClass(this._triggerClass).html(s?e("<img/>").attr({src:s,alt:i,title:i}):i)),t[u?"before":"after"](n.trigger),n.trigger.on("click",function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,n,r,i,s=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(n=0,r=0,i=0;e.length>i;i++)e[i].length>n&&(n=e[i].length,r=i);return r},s.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),s.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-s.getDay())),e.input.attr("size",this._formatDate(e,s).length)}},_inlineDatepicker:function(t,n){var r=e(t);r.hasClass(this.markerClassName)||(r.addClass(this.markerClassName).append(n.dpDiv),e.data(t,"datepicker",n),this._setDate(n,this._getDefaultDate(n),!0),this._updateDatepicker(n),this._updateAlternate(n),n.settings.disabled&&this._disableDatepicker(t),n.dpDiv.css("display","block"))},_dialogDatepicker:function(t,n,r,i,s){var u,a,f,l,c,h=this._dialogInst;return h||(this.uuid+=1,u="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+u+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),e("body").append(this._dialogInput),h=this._dialogInst=this._newInst(this._dialogInput,!1),h.settings={},e.data(this._dialogInput[0],"datepicker",h)),o(h.settings,i||{}),n=n&&n.constructor===Date?this._formatDate(h,n):n,this._dialogInput.val(n),this._pos=s?s.length?s:[s.pageX,s.pageY]:null,this._pos||(a=document.documentElement.clientWidth,f=document.documentElement.clientHeight,l=document.documentElement.scrollLeft||document.body.scrollLeft,c=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[a/2-100+l,f/2-150+c]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),h.settings.onSelect=r,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",h),this},_destroyDatepicker:function(t){var n,r=e(t),i=e.data(t,"datepicker");r.hasClass(this.markerClassName)&&(n=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===n?(i.append.remove(),i.trigger.remove(),r.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===n||"span"===n)&&r.removeClass(this.markerClassName).empty(),m===i&&(m=null))},_enableDatepicker:function(t){var n,r,i=e(t),s=e.data(t,"datepicker");i.hasClass(this.markerClassName)&&(n=t.nodeName.toLowerCase(),"input"===n?(t.disabled=!1,s.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===n||"span"===n)&&(r=i.children("."+this._inlineClass),r.children().removeClass("ui-state-disabled"),r.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var n,r,i=e(t),s=e.data(t,"datepicker");i.hasClass(this.markerClassName)&&(n=t.nodeName.toLowerCase(),"input"===n?(t.disabled=!0,s.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===n||"span"===n)&&(r=i.children("."+this._inlineClass),r.children().addClass("ui-state-disabled"),r.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(n){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,n,r){var i,s,u,a,f=this._getInst(t);return 2===arguments.length&&"string"==typeof n?"defaults"===n?e.extend({},e.datepicker._defaults):f?"all"===n?e.extend({},f.settings):this._get(f,n):null:(i=n||{},"string"==typeof n&&(i={},i[n]=r),f&&(this._curInst===f&&this._hideDatepicker(),s=this._getDateDatepicker(t,!0),u=this._getMinMaxDate(f,"min"),a=this._getMinMaxDate(f,"max"),o(f.settings,i),null!==u&&void 0!==i.dateFormat&&void 0===i.minDate&&(f.settings.minDate=this._formatDate(f,u)),null!==a&&void 0!==i.dateFormat&&void 0===i.maxDate&&(f.settings.maxDate=this._formatDate(f,a)),"disabled"in i&&(i.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),f),this._autoSize(f),this._setDate(f,s),this._updateAlternate(f),this._updateDatepicker(f)),void 0)},_changeDatepicker:function(e,t,n){this._optionDatepicker(e,t,n)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var n=this._getInst(e);n&&(this._setDate(n,t),this._updateDatepicker(n),this._updateAlternate(n))},_getDateDatepicker:function(e,t){var n=this._getInst(e);return n&&!n.inline&&this._setDateFromField(n,t),n?this._getDate(n):null},_doKeyDown:function(t){var n,r,i,s=e.datepicker._getInst(t.target),o=!0,u=s.dpDiv.is(".ui-datepicker-rtl");if(s._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return i=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",s.dpDiv),i[0]&&e.datepicker._selectDay(t.target,s.selectedMonth,s.selectedYear,i[0]),n=e.datepicker._get(s,"onSelect"),n?(r=e.datepicker._formatDate(s),n.apply(s.input?s.input[0]:null,[r,s])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(s,"stepBigMonths"):-e.datepicker._get(s,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(s,"stepBigMonths"):+e.datepicker._get(s,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,u?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(s,"stepBigMonths"):-e.datepicker._get(s,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,u?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(s,"stepBigMonths"):+e.datepicker._get(s,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var n,r,i=e.datepicker._getInst(t.target);return e.datepicker._get(i,"constrainInput")?(n=e.datepicker._possibleChars(e.datepicker._get(i,"dateFormat")),r=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">r||!n||n.indexOf(r)>-1):void 0},_doKeyUp:function(t){var n,r=e.datepicker._getInst(t.target);if(r.input.val()!==r.lastVal)try{n=e.datepicker.parseDate(e.datepicker._get(r,"dateFormat"),r.input?r.input.val():null,e.datepicker._getFormatConfig(r)),n&&(e.datepicker._setDateFromField(r),e.datepicker._updateAlternate(r),e.datepicker._updateDatepicker(r))}catch(i){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var r,i,s,u,a,f,l;r=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==r&&(e.datepicker._curInst.dpDiv.stop(!0,!0),r&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),i=e.datepicker._get(r,"beforeShow"),s=i?i.apply(t,[t,r]):{},s!==!1&&(o(r.settings,s),r.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(r),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),u=!1,e(t).parents().each(function(){return u|="fixed"===e(this).css("position"),!u}),a={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,r.dpDiv.empty(),r.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(r),a=e.datepicker._checkOffset(r,a,u),r.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":u?"fixed":"absolute",display:"none",left:a.left+"px",top:a.top+"px"}),r.inline||(f=e.datepicker._get(r,"showAnim"),l=e.datepicker._get(r,"duration"),r.dpDiv.css("z-index",n(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[f]?r.dpDiv.show(f,e.datepicker._get(r,"showOptions"),l):r.dpDiv[f||"show"](f?l:null),e.datepicker._shouldFocusInput(r)&&r.input.trigger("focus"),e.datepicker._curInst=r))}},_updateDatepicker:function(t){this.maxRows=4,m=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var n,r=this._getNumberOfMonths(t),i=r[1],o=17,u=t.dpDiv.find("."+this._dayOverClass+" a");u.length>0&&s.apply(u.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),i>1&&t.dpDiv.addClass("ui-datepicker-multi-"+i).css("width",o*i+"em"),t.dpDiv[(1!==r[0]||1!==r[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.trigger("focus"),t.yearshtml&&(n=t.yearshtml,setTimeout(function(){n===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),n=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,n,r){var i=t.dpDiv.outerWidth(),s=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,u=t.input?t.input.outerHeight():0,a=document.documentElement.clientWidth+(r?0:e(document).scrollLeft()),f=document.documentElement.clientHeight+(r?0:e(document).scrollTop());return n.left-=this._get(t,"isRTL")?i-o:0,n.left-=r&&n.left===t.input.offset().left?e(document).scrollLeft():0,n.top-=r&&n.top===t.input.offset().top+u?e(document).scrollTop():0,n.left-=Math.min(n.left,n.left+i>a&&a>i?Math.abs(n.left+i-a):0),n.top-=Math.min(n.top,n.top+s>f&&f>s?Math.abs(s+u):0),n},_findPos:function(t){for(var n,r=this._getInst(t),i=this._get(r,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[i?"previousSibling":"nextSibling"];return n=e(t).offset(),[n.left,n.top]},_hideDatepicker:function(t){var n,r,i,s,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(n=this._get(o,"showAnim"),r=this._get(o,"duration"),i=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[n]||e.effects[n])?o.dpDiv.hide(n,e.datepicker._get(o,"showOptions"),r,i):o.dpDiv["slideDown"===n?"slideUp":"fadeIn"===n?"fadeOut":"hide"](n?r:null,i),n||i(),this._datepickerShowing=!1,s=this._get(o,"onClose"),s&&s.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var n=e(t.target),r=e.datepicker._getInst(n[0]);(n[0].id!==e.datepicker._mainDivId&&0===n.parents("#"+e.datepicker._mainDivId).length&&!n.hasClass(e.datepicker.markerClassName)&&!n.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||n.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==r)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,n,r){var i=e(t),s=this._getInst(i[0]);this._isDisabledDatepicker(i[0])||(this._adjustInstDate(s,n+("M"===r?this._get(s,"showCurrentAtPos"):0),r),this._updateDatepicker(s))},_gotoToday:function(t){var n,r=e(t),i=this._getInst(r[0]);this._get(i,"gotoCurrent")&&i.currentDay?(i.selectedDay=i.currentDay,i.drawMonth=i.selectedMonth=i.currentMonth,i.drawYear=i.selectedYear=i.currentYear):(n=new Date,i.selectedDay=n.getDate(),i.drawMonth=i.selectedMonth=n.getMonth(),i.drawYear=i.selectedYear=n.getFullYear()),this._notifyChange(i),this._adjustDate(r)},_selectMonthYear:function(t,n,r){var i=e(t),s=this._getInst(i[0]);s["selected"+("M"===r?"Month":"Year")]=s["draw"+("M"===r?"Month":"Year")]=parseInt(n.options[n.selectedIndex].value,10),this._notifyChange(s),this._adjustDate(i)},_selectDay:function(t,n,r,i){var s,o=e(t);e(i).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(s=this._getInst(o[0]),s.selectedDay=s.currentDay=e("a",i).html(),s.selectedMonth=s.currentMonth=n,s.selectedYear=s.currentYear=r,this._selectDate(t,this._formatDate(s,s.currentDay,s.currentMonth,s.currentYear)))},_clearDate:function(t){var n=e(t);this._selectDate(n,"")},_selectDate:function(t,n){var r,i=e(t),s=this._getInst(i[0]);n=null!=n?n:this._formatDate(s),s.input&&s.input.val(n),this._updateAlternate(s),r=this._get(s,"onSelect"),r?r.apply(s.input?s.input[0]:null,[n,s]):s.input&&s.input.trigger("change"),s.inline?this._updateDatepicker(s):(this._hideDatepicker(),this._lastInput=s.input[0],"object"!=typeof s.input[0]&&s.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(t){var n,r,i,s=this._get(t,"altField");s&&(n=this._get(t,"altFormat")||this._get(t,"dateFormat"),r=this._getDate(t),i=this.formatDate(n,r,this._getFormatConfig(t)),e(s).val(i))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,n=new Date(e.getTime());return n.setDate(n.getDate()+4-(n.getDay()||7)),t=n.getTime(),n.setMonth(0),n.setDate(1),Math.floor(Math.round((t-n)/864e5)/7)+1},parseDate:function(t,n,r){if(null==t||null==n)throw"Invalid arguments";if(n="object"==typeof n?""+n:n+"",""===n)return null;var i,s,o,u,a=0,f=(r?r.shortYearCutoff:null)||this._defaults.shortYearCutoff,l="string"!=typeof f?f:(new Date).getFullYear()%100+parseInt(f,10),c=(r?r.dayNamesShort:null)||this._defaults.dayNamesShort,h=(r?r.dayNames:null)||this._defaults.dayNames,p=(r?r.monthNamesShort:null)||this._defaults.monthNamesShort,d=(r?r.monthNames:null)||this._defaults.monthNames,v=-1,m=-1,g=-1,y=-1,b=!1,w=function(e){var n=t.length>i+1&&t.charAt(i+1)===e;return n&&i++,n},E=function(e){var t=w(e),r="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,i="y"===e?r:1,s=RegExp("^\\d{"+i+","+r+"}"),o=n.substring(a).match(s);if(!o)throw"Missing number at position "+a;return a+=o[0].length,parseInt(o[0],10)},S=function(t,r,i){var s=-1,o=e.map(w(t)?i:r,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var r=t[1];return n.substr(a,r.length).toLowerCase()===r.toLowerCase()?(s=t[0],a+=r.length,!1):void 0}),-1!==s)return s+1;throw"Unknown name at position "+a},x=function(){if(n.charAt(a)!==t.charAt(i))throw"Unexpected literal at position "+a;a++};for(i=0;t.length>i;i++)if(b)"'"!==t.charAt(i)||w("'")?x():b=!1;else switch(t.charAt(i)){case"d":g=E("d");break;case"D":S("D",c,h);break;case"o":y=E("o");break;case"m":m=E("m");break;case"M":m=S("M",p,d);break;case"y":v=E("y");break;case"@":u=new Date(E("@")),v=u.getFullYear(),m=u.getMonth()+1,g=u.getDate();break;case"!":u=new Date((E("!")-this._ticksTo1970)/1e4),v=u.getFullYear(),m=u.getMonth()+1,g=u.getDate();break;case"'":w("'")?x():b=!0;break;default:x()}if(n.length>a&&(o=n.substr(a),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===v?v=(new Date).getFullYear():100>v&&(v+=(new Date).getFullYear()-(new Date).getFullYear()%100+(l>=v?0:-100)),y>-1)for(m=1,g=y;;){if(s=this._getDaysInMonth(v,m-1),s>=g)break;m++,g-=s}if(u=this._daylightSavingAdjust(new Date(v,m-1,g)),u.getFullYear()!==v||u.getMonth()+1!==m||u.getDate()!==g)throw"Invalid date";return u},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:864e9*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,n){if(!t)return"";var r,i=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,s=(n?n.dayNames:null)||this._defaults.dayNames,o=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,u=(n?n.monthNames:null)||this._defaults.monthNames,a=function(t){var n=e.length>r+1&&e.charAt(r+1)===t;return n&&r++,n},f=function(e,t,n){var r=""+t;if(a(e))for(;n>r.length;)r="0"+r;return r},l=function(e,t,n,r){return a(e)?r[t]:n[t]},c="",h=!1;if(t)for(r=0;e.length>r;r++)if(h)"'"!==e.charAt(r)||a("'")?c+=e.charAt(r):h=!1;else switch(e.charAt(r)){case"d":c+=f("d",t.getDate(),2);break;case"D":c+=l("D",t.getDay(),i,s);break;case"o":c+=f("o",Math.round(((new Date(t.getFullYear(),t.getMonth(),t.getDate())).getTime()-(new Date(t.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":c+=f("m",t.getMonth()+1,2);break;case"M":c+=l("M",t.getMonth(),o,u);break;case"y":c+=a("y")?t.getFullYear():(10>t.getFullYear()%100?"0":"")+t.getFullYear()%100;break;case"@":c+=t.getTime();break;case"!":c+=1e4*t.getTime()+this._ticksTo1970;break;case"'":a("'")?c+="'":h=!0;break;default:c+=e.charAt(r)}return c},_possibleChars:function(e){var t,n="",r=!1,i=function(n){var r=e.length>t+1&&e.charAt(t+1)===n;return r&&t++,r};for(t=0;e.length>t;t++)if(r)"'"!==e.charAt(t)||i("'")?n+=e.charAt(t):r=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":n+="0123456789";break;case"D":case"M":return null;case"'":i("'")?n+="'":r=!0;break;default:n+=e.charAt(t)}return n},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var n=this._get(e,"dateFormat"),r=e.lastVal=e.input?e.input.val():null,i=this._getDefaultDate(e),s=i,o=this._getFormatConfig(e);try{s=this.parseDate(n,r,o)||i}catch(u){r=t?"":r}e.selectedDay=s.getDate(),e.drawMonth=e.selectedMonth=s.getMonth(),e.drawYear=e.selectedYear=s.getFullYear(),e.currentDay=r?s.getDate():0,e.currentMonth=r?s.getMonth():0,e.currentYear=r?s.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,n,r){var i=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},s=function(n){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),n,e.datepicker._getFormatConfig(t))}catch(r){}for(var i=(n.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,s=i.getFullYear(),o=i.getMonth(),u=i.getDate(),a=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,f=a.exec(n);f;){switch(f[2]||"d"){case"d":case"D":u+=parseInt(f[1],10);break;case"w":case"W":u+=7*parseInt(f[1],10);break;case"m":case"M":o+=parseInt(f[1],10),u=Math.min(u,e.datepicker._getDaysInMonth(s,o));break;case"y":case"Y":s+=parseInt(f[1],10),u=Math.min(u,e.datepicker._getDaysInMonth(s,o))}f=a.exec(n)}return new Date(s,o,u)},o=null==n||""===n?r:"string"==typeof n?s(n):"number"==typeof n?isNaN(n)?r:i(n):new Date(n.getTime());return o=o&&"Invalid Date"==""+o?r:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,n){var r=!t,i=e.selectedMonth,s=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),i===e.selectedMonth&&s===e.selectedYear||n||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(r?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var n=this._get(t,"stepMonths"),r="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(r,-n,"M")},next:function(){e.datepicker._adjustDate(r,+n,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(r)},selectDay:function(){return e.datepicker._selectDay(r,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(r,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(r,this,"Y"),!1}};e(this).on(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,n,r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w,E,S,x,T,N,C,k,L,A,O,M,_,D,P,H,B,j,F,I,q=new Date,R=this._daylightSavingAdjust(new Date(q.getFullYear(),q.getMonth(),q.getDate())),U=this._get(e,"isRTL"),z=this._get(e,"showButtonPanel"),W=this._get(e,"hideIfNoPrevNext"),X=this._get(e,"navigationAsDateFormat"),V=this._getNumberOfMonths(e),$=this._get(e,"showCurrentAtPos"),J=this._get(e,"stepMonths"),K=1!==V[0]||1!==V[1],Q=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),G=this._getMinMaxDate(e,"min"),Y=this._getMinMaxDate(e,"max"),Z=e.drawMonth-$,et=e.drawYear;if(0>Z&&(Z+=12,et--),Y)for(t=this._daylightSavingAdjust(new Date(Y.getFullYear(),Y.getMonth()-V[0]*V[1]+1,Y.getDate())),t=G&&G>t?G:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,n=this._get(e,"prevText"),n=X?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z-J,1)),this._getFormatConfig(e)):n,r=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"e":"w")+"'>"+n+"</span></a>":W?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"e":"w")+"'>"+n+"</span></a>",i=this._get(e,"nextText"),i=X?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z+J,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"w":"e")+"'>"+i+"</span></a>":W?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"w":"e")+"'>"+i+"</span></a>",o=this._get(e,"currentText"),u=this._get(e,"gotoCurrent")&&e.currentDay?Q:R,o=X?this.formatDate(o,u,this._getFormatConfig(e)):o,a=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",f=z?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(U?a:"")+(this._isInRange(e,u)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(U?"":a)+"</div>":"",l=parseInt(this._get(e,"firstDay"),10),l=isNaN(l)?0:l,c=this._get(e,"showWeek"),h=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),d=this._get(e,"monthNames"),v=this._get(e,"monthNamesShort"),m=this._get(e,"beforeShowDay"),g=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),w="",S=0;V[0]>S;S++){for(x="",this.maxRows=4,T=0;V[1]>T;T++){if(N=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),C=" ui-corner-all",k="",K){if(k+="<div class='ui-datepicker-group",V[1]>1)switch(T){case 0:k+=" ui-datepicker-group-first",C=" ui-corner-"+(U?"right":"left");break;case V[1]-1:k+=" ui-datepicker-group-last",C=" ui-corner-"+(U?"left":"right");break;default:k+=" ui-datepicker-group-middle",C=""}k+="'>"}for(k+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+C+"'>"+(/all|left/.test(C)&&0===S?U?s:r:"")+(/all|right/.test(C)&&0===S?U?r:s:"")+this._generateMonthYearHeader(e,Z,et,G,Y,S>0||T>0,d,v)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",L=c?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",E=0;7>E;E++)A=(E+l)%7,L+="<th scope='col'"+((E+l+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+h[A]+"'>"+p[A]+"</span></th>";for(k+=L+"</tr></thead><tbody>",O=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,O)),M=(this._getFirstDayOfMonth(et,Z)-l+7)%7,_=Math.ceil((M+O)/7),D=K?this.maxRows>_?this.maxRows:_:_,this.maxRows=D,P=this._daylightSavingAdjust(new Date(et,Z,1-M)),H=0;D>H;H++){for(k+="<tr>",B=c?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(P)+"</td>":"",E=0;7>E;E++)j=m?m.apply(e.input?e.input[0]:null,[P]):[!0,""],F=P.getMonth()!==Z,I=F&&!y||!j[0]||G&&G>P||Y&&P>Y,B+="<td class='"+((E+l+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(P.getTime()===N.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===P.getTime()&&b.getTime()===N.getTime()?" "+this._dayOverClass:"")+(I?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!g?"":" "+j[1]+(P.getTime()===Q.getTime()?" "+this._currentClass:"")+(P.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(F&&!g||!j[2]?"":" title='"+j[2].replace(/'/g,"'")+"'")+(I?"":" data-handler='selectDay' data-event='click' data-month='"+P.getMonth()+"' data-year='"+P.getFullYear()+"'")+">"+(F&&!g?" ":I?"<span class='ui-state-default'>"+P.getDate()+"</span>":"<a class='ui-state-default"+(P.getTime()===R.getTime()?" ui-state-highlight":"")+(P.getTime()===Q.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+P.getDate()+"</a>")+"</td>",P.setDate(P.getDate()+1),P=this._daylightSavingAdjust(P);k+=B+"</tr>"}Z++,Z>11&&(Z=0,et++),k+="</tbody></table>"+(K?"</div>"+(V[0]>0&&T===V[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=k}w+=x}return w+=f,e._keyEvent=!1,w},_generateMonthYearHeader:function(e,t,n,r,i,s,o,u){var a,f,l,c,h,p,d,v,m=this._get(e,"changeMonth"),g=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",w="";if(s||!m)w+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{for(a=r&&r.getFullYear()===n,f=i&&i.getFullYear()===n,w+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",l=0;12>l;l++)(!a||l>=r.getMonth())&&(!f||i.getMonth()>=l)&&(w+="<option value='"+l+"'"+(l===t?" selected='selected'":"")+">"+u[l]+"</option>");w+="</select>"}if(y||(b+=w+(!s&&m&&g?"":" ")),!e.yearshtml)if(e.yearshtml="",s||!g)b+="<span class='ui-datepicker-year'>"+n+"</span>";else{for(c=this._get(e,"yearRange").split(":"),h=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?n+parseInt(e.substring(1),10):e.match(/[+\-].*/)?h+parseInt(e,10):parseInt(e,10);return isNaN(t)?h:t},d=p(c[0]),v=Math.max(d,p(c[1]||"")),d=r?Math.max(d,r.getFullYear()):d,v=i?Math.min(v,i.getFullYear()):v,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";v>=d;d++)e.yearshtml+="<option value='"+d+"'"+(d===n?" selected='selected'":"")+">"+d+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!s&&m&&g?"":" ")+w),b+="</div>"},_adjustInstDate:function(e,t,n){var r=e.selectedYear+("Y"===n?t:0),i=e.selectedMonth+("M"===n?t:0),s=Math.min(e.selectedDay,this._getDaysInMonth(r,i))+("D"===n?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(r,i,s)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===n||"Y"===n)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max"),i=n&&n>t?n:t;return r&&i>r?r:i},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return(new Date(e,t,1)).getDay()},_canAdjustMonth:function(e,t,n,r){var i=this._getNumberOfMonths(e),s=this._daylightSavingAdjust(new Date(n,r+(0>t?t:i[0]*i[1]),1));return 0>t&&s.setDate(this._getDaysInMonth(s.getFullYear(),s.getMonth())),this._isInRange(e,s)},_isInRange:function(e,t){var n,r,i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),o=null,u=null,a=this._get(e,"yearRange");return a&&(n=a.split(":"),r=(new Date).getFullYear(),o=parseInt(n[0],10),u=parseInt(n[1],10),n[0].match(/[+\-].*/)&&(o+=r),n[1].match(/[+\-].*/)&&(u+=r)),(!i||t.getTime()>=i.getTime())&&(!s||t.getTime()<=s.getTime())&&(!o||t.getFullYear()>=o)&&(!u||u>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,n,r){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var i=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(r,n,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).on("mousedown",e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var n=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(n)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(n)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(n))},e.datepicker=new r,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.12.0",e.datepicker,e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var g=!1;e(document).on("mouseup",function(){g=!1}),e.widget("ui.mouse",{version:"1.12.0",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.on("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).on("click."+this.widgetName,function(n){return!0===e.data(n.target,t.widgetName+".preventClickEvent")?(e.removeData(n.target,t.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!g){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var n=this,r=1===t.which,i="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return r&&!i&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){n.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return n._mouseMove(e)},this._mouseUpDelegate=function(e){return n._mouseUp(e)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),g=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,g=!1,t.preventDefault()},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),e.ui.plugin={add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n,r){var i,s=e.plugins[t];if(s&&(r||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(i=0;s.length>i;i++)e.options[s[i][0]]&&s[i][1].apply(e.element,n)}},e.ui.safeBlur=function(t){t&&"body"!==t.nodeName.toLowerCase()&&e(t).trigger("blur")},e.widget("ui.draggable",e.ui.mouse,{version:"1.12.0",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var n=this.options;return this._blurActiveElement(t),this.helper||n.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(n.iframeFix===!0?"iframe":n.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var n=e.ui.safeActiveElement(this.document[0]),r=e(t.target);this._getHandle(t)&&r.closest(n).length||e.ui.safeBlur(n)},_mouseStart:function(t){var n=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,n){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!n){var r=this._uiHash();if(this._trigger("drag",t,r)===!1)return this._mouseUp(new e.Event("mouseup",t)),!1;this.position=r.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var n=this,r=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(r=e.ui.ddmanager.drop(this,t)),this.dropped&&(r=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!r||"valid"===this.options.revert&&r||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,r)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){n._trigger("stop",t)!==!1&&n._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.trigger("focus"),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new e.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper),i=r?e(n.helper.apply(this.element[0],[t])):"clone"===n.helper?this.element.clone().removeAttr("id"):this.element;return i.parents("body").length||i.appendTo("parent"===n.appendTo?this.element[0].parentNode:n.appendTo),r&&i[0]===this.element[0]&&this._setPositionRelative(),i[0]===this.element[0]||/(fixed|absolute)/.test(i.css("position"))||i.css("position","absolute"),i},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),n=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==n&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,n,r,i=this.options,s=this.document[0];return this.relativeContainer=null,i.containment?"window"===i.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||s.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===i.containment?(this.containment=[0,0,e(s).width()-this.helperProportions.width-this.margins.left,(e(s).height()||s.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):i.containment.constructor===Array?(this.containment=i.containment,void 0):("parent"===i.containment&&(i.containment=this.helper[0].parentNode),n=e(i.containment),r=n[0],r&&(t=/(scroll|auto)/.test(n.css("overflow")),this.containment=[(parseInt(n.css("borderLeftWidth"),10)||0)+(parseInt(n.css("paddingLeft"),10)||0),(parseInt(n.css("borderTopWidth"),10)||0)+(parseInt(n.css("paddingTop"),10)||0),(t?Math.max(r.scrollWidth,r.offsetWidth):r.offsetWidth)-(parseInt(n.css("borderRightWidth"),10)||0)-(parseInt(n.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(r.scrollHeight,r.offsetHeight):r.offsetHeight)-(parseInt(n.css("borderBottomWidth"),10)||0)-(parseInt(n.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=n),void 0):(this.containment=null,void 0)},_convertPositionTo:function(e,t){t||(t=this.position);var n="absolute"===e?1:-1,r=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*n+this.offset.parent.top*n-("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top)*n,left:t.left+this.offset.relative.left*n+this.offset.parent.left*n-("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)*n}},_generatePosition:function(e,t){var n,r,i,s,o=this.options,u=this._isRootNode(this.scrollParent[0]),a=e.pageX,f=e.pageY;return u&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(r=this.relativeContainer.offset(),n=[this.containment[0]+r.left,this.containment[1]+r.top,this.containment[2]+r.left,this.containment[3]+r.top]):n=this.containment,e.pageX-this.offset.click.left<n[0]&&(a=n[0]+this.offset.click.left),e.pageY-this.offset.click.top<n[1]&&(f=n[1]+this.offset.click.top),e.pageX-this.offset.click.left>n[2]&&(a=n[2]+this.offset.click.left),e.pageY-this.offset.click.top>n[3]&&(f=n[3]+this.offset.click.top)),o.grid&&(i=o.grid[1]?this.originalPageY+Math.round((f-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,f=n?i-this.offset.click.top>=n[1]||i-this.offset.click.top>n[3]?i:i-this.offset.click.top>=n[1]?i-o.grid[1]:i+o.grid[1]:i,s=o.grid[0]?this.originalPageX+Math.round((a-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,a=n?s-this.offset.click.left>=n[0]||s-this.offset.click.left>n[2]?s:s-this.offset.click.left>=n[0]?s-o.grid[0]:s+o.grid[0]:s),"y"===o.axis&&(a=this.originalPageX),"x"===o.axis&&(f=this.originalPageY)),{top:f-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:u?0:this.offset.scroll.top),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:u?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,n,r){return r=r||this._uiHash(),e.ui.plugin.call(this,t,[n,r,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),r.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,n,r)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,n,r){var i=e.extend({},n,{item:r.element});r.sortables=[],e(r.options.connectToSortable).each(function(){var n=e(this).sortable("instance");n&&!n.options.disabled&&(r.sortables.push(n),n.refreshPositions(),n._trigger("activate",t,i))})},stop:function(t,n,r){var i=e.extend({},n,{item:r.element});r.cancelHelperRemoval=!1,e.each(r.sortables,function(){var e=this;e.isOver?(e.isOver=0,r.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,i))})},drag:function(t,n,r){e.each(r.sortables,function(){var i=!1,s=this;s.positionAbs=r.positionAbs,s.helperProportions=r.helperProportions,s.offset.click=r.offset.click,s._intersectsWith(s.containerCache)&&(i=!0,e.each(r.sortables,function(){return this.positionAbs=r.positionAbs,this.helperProportions=r.helperProportions,this.offset.click=r.offset.click,this!==s&&this._intersectsWith(this.containerCache)&&e.contains(s.element[0],this.element[0])&&(i=!1),i})),i?(s.isOver||(s.isOver=1,r._parent=n.helper.parent(),s.currentItem=n.helper.appendTo(s.element).data("ui-sortable-item",!0),s.options._helper=s.options.helper,s.options.helper=function(){return n.helper[0]},t.target=s.currentItem[0],s._mouseCapture(t,!0),s._mouseStart(t,!0,!0),s.offset.click.top=r.offset.click.top,s.offset.click.left=r.offset.click.left,s.offset.parent.left-=r.offset.parent.left-s.offset.parent.left,s.offset.parent.top-=r.offset.parent.top-s.offset.parent.top,r._trigger("toSortable",t),r.dropped=s.element,e.each(r.sortables,function(){this.refreshPositions()}),r.currentItem=r.element,s.fromOutside=r),s.currentItem&&(s._mouseDrag(t),n.position=s.position)):s.isOver&&(s.isOver=0,s.cancelHelperRemoval=!0,s.options._revert=s.options.revert,s.options.revert=!1,s._trigger("out",t,s._uiHash(s)),s._mouseStop(t,!0),s.options.revert=s.options._revert,s.options.helper=s.options._helper,s.placeholder&&s.placeholder.remove(),n.helper.appendTo(r._parent),r._refreshOffsets(t),n.position=r._generatePosition(t,!0),r._trigger("fromSortable",t),r.dropped=!1,e.each(r.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,n,r){var i=e("body"),s=r.options;i.css("cursor")&&(s._cursor=i.css("cursor")),i.css("cursor",s.cursor)},stop:function(t,n,r){var i=r.options;i._cursor&&e("body").css("cursor",i._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,n,r){var i=e(n.helper),s=r.options;i.css("opacity")&&(s._opacity=i.css("opacity")),i.css("opacity",s.opacity)},stop:function(t,n,r){var i=r.options;i._opacity&&e(n.helper).css("opacity",i._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,n){n.scrollParentNotHidden||(n.scrollParentNotHidden=n.helper.scrollParent(!1)),n.scrollParentNotHidden[0]!==n.document[0]&&"HTML"!==n.scrollParentNotHidden[0].tagName&&(n.overflowOffset=n.scrollParentNotHidden.offset())},drag:function(t,n,r){var i=r.options,s=!1,o=r.scrollParentNotHidden[0],u=r.document[0];o!==u&&"HTML"!==o.tagName?(i.axis&&"x"===i.axis||(r.overflowOffset.top+o.offsetHeight-t.pageY<i.scrollSensitivity?o.scrollTop=s=o.scrollTop+i.scrollSpeed:t.pageY-r.overflowOffset.top<i.scrollSensitivity&&(o.scrollTop=s=o.scrollTop-i.scrollSpeed)),i.axis&&"y"===i.axis||(r.overflowOffset.left+o.offsetWidth-t.pageX<i.scrollSensitivity?o.scrollLeft=s=o.scrollLeft+i.scrollSpeed:t.pageX-r.overflowOffset.left<i.scrollSensitivity&&(o.scrollLeft=s=o.scrollLeft-i.scrollSpeed))):(i.axis&&"x"===i.axis||(t.pageY-e(u).scrollTop()<i.scrollSensitivity?s=e(u).scrollTop(e(u).scrollTop()-i.scrollSpeed):e(window).height()-(t.pageY-e(u).scrollTop())<i.scrollSensitivity&&(s=e(u).scrollTop(e(u).scrollTop()+i.scrollSpeed))),i.axis&&"y"===i.axis||(t.pageX-e(u).scrollLeft()<i.scrollSensitivity?s=e(u).scrollLeft(e(u).scrollLeft()-i.scrollSpeed):e(window).width()-(t.pageX-e(u).scrollLeft())<i.scrollSensitivity&&(s=e(u).scrollLeft(e(u).scrollLeft()+i.scrollSpeed)))),s!==!1&&e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(r,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,n,r){var i=r.options;r.snapElements=[],e(i.snap.constructor!==String?i.snap.items||":data(ui-draggable)":i.snap).each(function(){var t=e(this),n=t.offset();this!==r.element[0]&&r.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:n.top,left:n.left})})},drag:function(t,n,r){var i,s,o,u,a,f,l,c,h,p,d=r.options,v=d.snapTolerance,m=n.offset.left,g=m+r.helperProportions.width,y=n.offset.top,b=y+r.helperProportions.height;for(h=r.snapElements.length-1;h>=0;h--)a=r.snapElements[h].left-r.margins.left,f=a+r.snapElements[h].width,l=r.snapElements[h].top-r.margins.top,c=l+r.snapElements[h].height,a-v>g||m>f+v||l-v>b||y>c+v||!e.contains(r.snapElements[h].item.ownerDocument,r.snapElements[h].item)?(r.snapElements[h].snapping&&r.options.snap.release&&r.options.snap.release.call(r.element,t,e.extend(r._uiHash(),{snapItem:r.snapElements[h].item})),r.snapElements[h].snapping=!1):("inner"!==d.snapMode&&(i=v>=Math.abs(l-b),s=v>=Math.abs(c-y),o=v>=Math.abs(a-g),u=v>=Math.abs(f-m),i&&(n.position.top=r._convertPositionTo("relative",{top:l-r.helperProportions.height,left:0}).top),s&&(n.position.top=r._convertPositionTo("relative",{top:c,left:0}).top),o&&(n.position.left=r._convertPositionTo("relative",{top:0,left:a-r.helperProportions.width}).left),u&&(n.position.left=r._convertPositionTo("relative",{top:0,left:f}).left)),p=i||s||o||u,"outer"!==d.snapMode&&(i=v>=Math.abs(l-y),s=v>=Math.abs(c-b),o=v>=Math.abs(a-m),u=v>=Math.abs(f-g),i&&(n.position.top=r._convertPositionTo("relative",{top:l,left:0}).top),s&&(n.position.top=r._convertPositionTo("relative",{top:c-r.helperProportions.height,left:0}).top),o&&(n.position.left=r._convertPositionTo("relative",{top:0,left:a}).left),u&&(n.position.left=r._convertPositionTo("relative",{top:0,left:f-r.helperProportions.width}).left)),!r.snapElements[h].snapping&&(i||s||o||u||p)&&r.options.snap.snap&&r.options.snap.snap.call(r.element,t,e.extend(r._uiHash(),{snapItem:r.snapElements[h].item})),r.snapElements[h].snapping=i||s||o||u||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,n,r){var i,s=r.options,o=e.makeArray(e(s.stack)).sort(function(t,n){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(n).css("zIndex"),10)||0)});o.length&&(i=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",i+t)}),this.css("zIndex",i+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,n,r){var i=e(n.helper),s=r.options;i.css("zIndex")&&(s._zIndex=i.css("zIndex")),i.css("zIndex",s.zIndex)},stop:function(t,n,r){var i=r.options;i._zIndex&&e(n.helper).css("zIndex",i._zIndex)}}),e.ui.draggable,e.widget("ui.resizable",e.ui.mouse,{version:"1.12.0",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseFloat(e)||0},_isNumber:function(e){return!isNaN(parseFloat(e))},_hasScroll:function(t,n){if("hidden"===e(t).css("overflow"))return!1;var r=n&&"left"===n?"scrollLeft":"scrollTop",i=!1;return t[r]>0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},_create:function(){var t,n=this.options,r=this;this._addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!n.aspectRatio,aspectRatio:n.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:n.helper||n.ghost||n.animate?n.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),n.autoHide&&e(this.element).on("mouseenter",function(){n.disabled||(r._removeClass("ui-resizable-autohide"),r._handles.show())}).on("mouseleave",function(){n.disabled||r.resizing||(r._addClass("ui-resizable-autohide"),r._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,n=function(t){e(t).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(n(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),n(this.originalElement),this},_setOption:function(e,t){switch(this._super(e,t),e){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var t,n,r,i,s,o=this.options,u=this;if(this.handles=o.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),r=this.handles.split(","),this.handles={},n=0;r.length>n;n++)t=e.trim(r[n]),i="ui-resizable-"+t,s=e("<div>"),this._addClass(s,"ui-resizable-handle "+i),s.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.append(s);this._renderAxis=function(t){var n,r,i,s;t=t||this.element;for(n in this.handles)this.handles[n].constructor===String?this.handles[n]=this.element.children(this.handles[n]).first().show():(this.handles[n].jquery||this.handles[n].nodeType)&&(this.handles[n]=e(this.handles[n]),this._on(this.handles[n],{mousedown:u._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(r=e(this.handles[n],this.element),s=/sw|ne|nw|se|n|s/.test(n)?r.outerHeight():r.outerWidth(),i=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[n])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){u.resizing||(this.className&&(s=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),u.axis=s&&s[1]?s[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(t){var n,r,i=!1;for(n in this.handles)r=e(this.handles[n])[0],(r===t.target||e.contains(r,t.target))&&(i=!0);return!this.options.disabled&&i},_mouseStart:function(t){var n,r,i,s=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),n=this._num(this.helper.css("left")),r=this._num(this.helper.css("top")),s.containment&&(n+=e(s.containment).scrollLeft()||0,r+=e(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:n,top:r},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:n,top:r},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,i=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===i?this.axis+"-resize":i),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var n,r,i=this.originalMousePosition,s=this.axis,o=t.pageX-i.left||0,u=t.pageY-i.top||0,a=this._change[s];return this._updatePrevProperties(),a?(n=a.apply(this,[t,o,u]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(n=this._updateRatio(n,t)),n=this._respectSize(n,t),this._updateCache(n),this._propagate("resize",t),r=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(r)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var n,r,i,s,o,u,a,f=this.options,l=this;return this._helper&&(n=this._proportionallyResizeElements,r=n.length&&/textarea/i.test(n[0].nodeName),i=r&&this._hasScroll(n[0],"left")?0:l.sizeDiff.height,s=r?0:l.sizeDiff.width,o={width:l.helper.width()-s,height:l.helper.height()-i},u=parseFloat(l.element.css("left"))+(l.position.left-l.originalPosition.left)||null,a=parseFloat(l.element.css("top"))+(l.position.top-l.originalPosition.top)||null,f.animate||this.element.css(e.extend(o,{top:a,left:u})),l.helper.height(l.size.height),l.helper.width(l.size.width),this._helper&&!f.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,n,r,i,s,o=this.options;s={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=s.minHeight*this.aspectRatio,r=s.minWidth/this.aspectRatio,n=s.maxHeight*this.aspectRatio,i=s.maxWidth/this.aspectRatio,t>s.minWidth&&(s.minWidth=t),r>s.minHeight&&(s.minHeight=r),s.maxWidth>n&&(s.maxWidth=n),s.maxHeight>i&&(s.maxHeight=i)),this._vBoundaries=s},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,n=this.size,r=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===r&&(e.left=t.left+(n.width-e.width),e.top=null),"nw"===r&&(e.top=t.top+(n.height-e.height),e.left=t.left+(n.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,n=this.axis,r=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,i=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,s=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,u=this.originalPosition.left+this.originalSize.width,a=this.originalPosition.top+this.originalSize.height,f=/sw|nw|w/.test(n),l=/nw|ne|n/.test(n);return s&&(e.width=t.minWidth),o&&(e.height=t.minHeight),r&&(e.width=t.maxWidth),i&&(e.height=t.maxHeight),s&&f&&(e.left=u-t.minWidth),r&&f&&(e.left=u-t.maxWidth),o&&l&&(e.top=a-t.minHeight),i&&l&&(e.top=a-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,n=[],r=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],i=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)n[t]=parseFloat(r[t])||0,n[t]+=parseFloat(i[t])||0;return{height:n[0]+n[2],width:n[1]+n[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,n=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:n.height()-this.outerDimensions.height||0,width:n.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,n=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++n.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var n=this.originalSize,r=this.originalPosition;return{left:r.left+t,width:n.width-t}},n:function(e,t,n){var r=this.originalSize,i=this.originalPosition;return{top:i.top+n,height:r.height-n}},s:function(e,t,n){return{height:this.originalSize.height+n}},se:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},sw:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,n,r]))},ne:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},nw:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,n,r]))}},_propagate:function(t,n){e.ui.plugin.call(this,t,[n,this.ui()]),"resize"!==t&&this._trigger(t,n,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var n=e(this).resizable("instance"),r=n.options,i=n._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),o=s&&n._hasScroll(i[0],"left")?0:n.sizeDiff.height,u=s?0:n.sizeDiff.width,a={width:n.size.width-u,height:n.size.height-o},f=parseFloat(n.element.css("left"))+(n.position.left-n.originalPosition.left)||null,l=parseFloat(n.element.css("top"))+(n.position.top-n.originalPosition.top)||null;n.element.animate(e.extend(a,l&&f?{top:l,left:f}:{}),{duration:r.animateDuration,easing:r.animateEasing,step:function(){var r={width:parseFloat(n.element.css("width")),height:parseFloat(n.element.css("height")),top:parseFloat(n.element.css("top")),left:parseFloat(n.element.css("left"))};i&&i.length&&e(i[0]).css({width:r.width,height:r.height}),n._updateCache(r),n._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,n,r,i,s,o,u,a=e(this).resizable("instance"),f=a.options,l=a.element,c=f.containment,h=c instanceof e?c.get(0):/parent/.test(c)?l.parent().get(0):c;h&&(a.containerElement=e(h),/document/.test(c)||c===document?(a.containerOffset={left:0,top:0},a.containerPosition={left:0,top:0},a.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(h),n=[],e(["Top","Right","Left","Bottom"]).each(function(e,r){n[e]=a._num(t.css("padding"+r))}),a.containerOffset=t.offset(),a.containerPosition=t.position(),a.containerSize={height:t.innerHeight()-n[3],width:t.innerWidth()-n[1]},r=a.containerOffset,i=a.containerSize.height,s=a.containerSize.width,o=a._hasScroll(h,"left")?h.scrollWidth:s,u=a._hasScroll(h)?h.scrollHeight:i,a.parentData={element:h,left:r.left,top:r.top,width:o,height:u}))},resize:function(t){var n,r,i,s,o=e(this).resizable("instance"),u=o.options,a=o.containerOffset,f=o.position,l=o._aspectRatio||t.shiftKey,c={top:0,left:0},h=o.containerElement,p=!0;h[0]!==document&&/static/.test(h.css("position"))&&(c=a),f.left<(o._helper?a.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-a.left:o.position.left-c.left),l&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=u.helper?a.left:0),f.top<(o._helper?a.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-a.top:o.position.top),l&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?a.top:0),i=o.containerElement.get(0)===o.element.parent().get(0),s=/relative|absolute/.test(o.containerElement.css("position")),i&&s?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),n=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-c.left:o.offset.left-a.left)),r=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-c.top:o.offset.top-a.top)),n+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-n,l&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),r+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-r,l&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),n=t.options,r=t.containerOffset,i=t.containerPosition,s=t.containerElement,o=e(t.helper),u=o.offset(),a=o.outerWidth()-t.sizeDiff.width,f=o.outerHeight()-t.sizeDiff.height;t._helper&&!n.animate&&/relative/.test(s.css("position"))&&e(this).css({left:u.left-i.left-r.left,width:a,height:f}),t._helper&&!n.animate&&/static/.test(s.css("position"))&&e(this).css({left:u.left-i.left-r.left,width:a,height:f})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),n=t.options;e(n.alsoResize).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,n){var r=e(this).resizable("instance"),i=r.options,s=r.originalSize,o=r.originalPosition,u={height:r.size.height-s.height||0,width:r.size.width-s.width||0,top:r.position.top-o.top||0,left:r.position.left-o.left||0};e(i.alsoResize).each(function(){var t=e(this),r=e(this).data("ui-resizable-alsoresize"),i={},s=t.parents(n.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(s,function(e,t){var n=(r[t]||0)+(u[t]||0);n&&n>=0&&(i[t]=n||null)}),t.css(i)})},stop:function(){e(this).removeData("ui-resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),n=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:n.height,width:n.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),e.uiBackCompat!==!1&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,n=e(this).resizable("instance"),r=n.options,i=n.size,s=n.originalSize,o=n.originalPosition,u=n.axis,a="number"==typeof r.grid?[r.grid,r.grid]:r.grid,f=a[0]||1,l=a[1]||1,c=Math.round((i.width-s.width)/f)*f,h=Math.round((i.height-s.height)/l)*l,p=s.width+c,d=s.height+h,v=r.maxWidth&&p>r.maxWidth,m=r.maxHeight&&d>r.maxHeight,g=r.minWidth&&r.minWidth>p,y=r.minHeight&&r.minHeight>d;r.grid=a,g&&(p+=f),y&&(d+=l),v&&(p-=f),m&&(d-=l),/^(se|s|e)$/.test(u)?(n.size.width=p,n.size.height=d):/^(ne)$/.test(u)?(n.size.width=p,n.size.height=d,n.position.top=o.top-h):/^(sw)$/.test(u)?(n.size.width=p,n.size.height=d,n.position.left=o.left-c):((0>=d-l||0>=p-f)&&(t=n._getPaddingPlusBorderDimensions(this)),d-l>0?(n.size.height=d,n.position.top=o.top-h):(d=l-t.height,n.size.height=d,n.position.top=o.top+s.height-d),p-f>0?(n.size.width=p,n.position.left=o.left-c):(p=f-t.width,n.size.width=p,n.position.left=o.left+s.width-p))}}),e.ui.resizable,e.widget("ui.dialog",{version:"1.12.0",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var n=e(this).css(t).offset().top;0>n&&e(this).css("top",t.top-n)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var n=this;this._isOpen&&this._trigger("beforeClose",t)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||e.ui.safeBlur(e.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){n._trigger("close",t)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,n){var r=!1,i=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),s=Math.max.apply(null,i);return s>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),r=!0),r&&!n&&this._trigger("focus",t),r},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(e.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).trigger("focus")},_keepFocus:function(t){function n(){var t=e.ui.safeActiveElement(this.document[0]),n=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);n||this._focusTabbable()}t.preventDefault(),n.call(this),this._delay(n)},_createWrapper:function(){this.uiDialog=e("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0;if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var n=this.uiDialog.find(":tabbable"),r=n.filter(":first"),i=n.filter(":last");t.target!==i[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==r[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){i.trigger("focus")}),t.preventDefault()):(this._delay(function(){r.trigger("focus")}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:e("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title?e.text(this.options.title):e.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var t=this,n=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(n)||e.isArray(n)&&!n.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(e.each(n,function(n,r){var i,s;r=e.isFunction(r)?{click:r,text:n}:r,r=e.extend({type:"button"},r),i=r.click,s={icon:r.icon,iconPosition:r.iconPosition,showLabel:r.showLabel},delete r.click,delete r.icon,delete r.iconPosition,delete r.showLabel,e("<button></button>",r).button(s).appendTo(t.uiButtonSet).on("click",function(){i.apply(t.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var n=this,r=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(r,i){n._addClass(e(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",r,t(i))},drag:function(e,r){n._trigger("drag",e,t(r))},stop:function(i,s){var o=s.offset.left-n.document.scrollLeft(),u=s.offset.top-n.document.scrollTop();r.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(u>=0?"+":"")+u,of:n.window},n._removeClass(e(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",i,t(s))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var n=this,r=this.options,i=r.resizable,s=this.uiDialog.css("position"),o="string"==typeof i?i:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:r.maxWidth,maxHeight:r.maxHeight,minWidth:r.minWidth,minHeight:this._minHeight(),handles:o,start:function(r,i){n._addClass(e(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",r,t(i))},resize:function(e,r){n._trigger("resize",e,t(r))},stop:function(i,s){var o=n.uiDialog.offset(),u=o.left-n.document.scrollLeft(),a=o.top-n.document.scrollTop();r.height=n.uiDialog.height(),r.width=n.uiDialog.width(),r.position={my:"left top",at:"left"+(u>=0?"+":"")+u+" "+"top"+(a>=0?"+":"")+a,of:n.window},n._removeClass(e(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",i,t(s))}}).css("position",s)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),n=e.inArray(this,t);-1!==n&&t.splice(n,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var n=this,r=!1,i={};e.each(t,function(e,t){n._setOption(e,t),e in n.sizeRelatedOptions&&(r=!0),e in n.resizableRelatedOptions&&(i[e]=t)}),r&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",i)},_setOption:function(t,n){var r,i,s=this.uiDialog;"disabled"!==t&&(this._super(t,n),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:e("<a>").text(""+this.options.closeText).html()}),"draggable"===t&&(r=s.is(":data(ui-draggable)"),r&&!n&&s.draggable("destroy"),!r&&n&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&(i=s.is(":data(ui-resizable)"),i&&!n&&s.resizable("destroy"),i&&"string"==typeof n&&s.resizable("option","handles",n),i||n===!1||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,n,r=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),r.minWidth>r.width&&(r.width=r.minWidth),e=this.uiDialog.css({height:"auto",width:r.width}).outerHeight(),t=Math.max(0,r.minHeight-e),n="number"==typeof r.maxHeight?Math.max(0,r.maxHeight-e):"none","auto"===r.height?this.element.css({minHeight:t,maxHeight:n,height:"auto"}):this.element.height(Math.max(0,r.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),e.uiBackCompat!==!1&&e.widget("ui.dialog",e.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(e,t){"dialogClass"===e&&this.uiDialog.removeClass(this.options.dialogClass).addClass(t),this._superApply(arguments)}}),e.ui.dialog,e.widget("ui.droppable",{version:"1.12.0",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,n=this.options,r=n.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(r)?r:function(e){return e.is(r)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(n.scope),n.addClasses&&this._addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t)},_setOption:function(t,n){if("accept"===t)this.accept=e.isFunction(n)?n:function(e){return e.is(n)};else if("scope"===t){var r=e.ui.ddmanager.droppables[this.options.scope];this._splice(r),this._addToManager(n)}this._super(t,n)},_activate:function(t){var n=e.ui.ddmanager.current;this._addActiveClass(),n&&this._trigger("activate",t,this.ui(n))},_deactivate:function(t){var n=e.ui.ddmanager.current;this._removeActiveClass(),n&&this._trigger("deactivate",t,this.ui(n))},_over:function(t){var n=e.ui.ddmanager.current;n&&(n.currentItem||n.element)[0]!==this.element[0]&&this.accept.call(this.element[0],n.currentItem||n.element)&&(this._addHoverClass(),this._trigger("over",t,this.ui(n)))},_out:function(t){var n=e.ui.ddmanager.current;n&&(n.currentItem||n.element)[0]!==this.element[0]&&this.accept.call(this.element[0],n.currentItem||n.element)&&(this._removeHoverClass(),this._trigger("out",t,this.ui(n)))},_drop:function(t,n){var r=n||e.ui.ddmanager.current,i=!1;return r&&(r.currentItem||r.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var n=e(this).droppable("instance");return n.options.greedy&&!n.options.disabled&&n.options.scope===r.options.scope&&n.accept.call(n.element[0],r.currentItem||r.element)&&y(r,e.extend(n,{offset:n.element.offset()}),n.options.tolerance,t)?(i=!0,!1):void 0}),i?!1:this.accept.call(this.element[0],r.currentItem||r.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",t,this.ui(r)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var y=e.ui.intersect=function(){function e(e,t,n){return e>=t&&t+n>e}return function(t,n,r,i){if(!n.offset)return!1;var s=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,u=s+t.helperProportions.width,a=o+t.helperProportions.height,f=n.offset.left,l=n.offset.top,c=f+n.proportions().width,h=l+n.proportions().height;switch(r){case"fit":return s>=f&&c>=u&&o>=l&&h>=a;case"intersect":return s+t.helperProportions.width/2>f&&c>u-t.helperProportions.width/2&&o+t.helperProportions.height/2>l&&h>a-t.helperProportions.height/2;case"pointer":return e(i.pageY,l,n.proportions().height)&&e(i.pageX,f,n.proportions().width);case"touch":return(o>=l&&h>=o||a>=l&&h>=a||l>o&&a>h)&&(s>=f&&c>=s||u>=f&&c>=u||f>s&&u>c);default:return!1}}}();e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,n){var r,i,s=e.ui.ddmanager.droppables[t.options.scope]||[],o=n?n.type:null,u=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(r=0;s.length>r;r++)if(!(s[r].options.disabled||t&&!s[r].accept.call(s[r].element[0],t.currentItem||t.element))){for(i=0;u.length>i;i++)if(u[i]===s[r].element[0]){s[r].proportions().height=0;continue e}s[r].visible="none"!==s[r].element.css("display"),s[r].visible&&("mousedown"===o&&s[r]._activate.call(s[r],n),s[r].offset=s[r].element.offset(),s[r].proportions({width:s[r].element[0].offsetWidth,height:s[r].element[0].offsetHeight}))}},drop:function(t,n){var r=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&y(t,this,this.options.tolerance,n)&&(r=this._drop.call(this,n)||r),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,n)))}),r},dragStart:function(t,n){t.element.parentsUntil("body").on("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)})},drag:function(t,n){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,n),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var r,i,s,o=y(t,this,this.options.tolerance,n),u=!o&&this.isover?"isout":o&&!this.isover?"isover":null;u&&(this.options.greedy&&(i=this.options.scope,s=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===i}),s.length&&(r=e(s[0]).droppable("instance"),r.greedyChild="isover"===u)),r&&"isover"===u&&(r.isover=!1,r.isout=!0,r._out.call(r,n)),this[u]=!0,this["isout"===u?"isover":"isout"]=!1,this["isover"===u?"_over":"_out"].call(this,n),r&&"isout"===u&&(r.isout=!1,r.isover=!0,r._over.call(r,n)))}})},dragStop:function(t,n){t.element.parentsUntil("body").off("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)}},e.uiBackCompat!==!1&&e.widget("ui.droppable",e.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),e.ui.droppable,e.widget("ui.progressbar",{version:"1.12.0",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=e("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),this._super(e,t)},_setOptionDisabled:function(e){this._super(e),this.element.attr("aria-disabled",e),this._toggleClass(null,"ui-state-disabled",!!e)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,n=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(n.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectable",e.ui.mouse,{version:"1.12.0",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t.elementPos=e(t.element[0]).offset(),t.selectees=e(t.options.filter,t.element[0]),t._addClass(t.selectees,"ui-selectee"),t.selectees.each(function(){var n=e(this),r=n.offset(),i={left:r.left-t.elementPos.left,top:r.top-t.elementPos.top};e.data(this,"selectable-item",{element:this,$element:n,left:i.left,top:i.top,right:i.left+n.outerWidth(),bottom:i.top+n.outerHeight(),startselected:!1,selected:n.hasClass("ui-selected"),selecting:n.hasClass("ui-selecting"),unselecting:n.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=e("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(t){var n=this,r=this.options;this.opos=[t.pageX,t.pageY],this.elementPos=e(this.element[0]).offset(),this.options.disabled||(this.selectees=e(r.filter,this.element[0]),this._trigger("start",t),e(r.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),r.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var r=e.data(this,"selectable-item");r.startselected=!0,t.metaKey||t.ctrlKey||(n._removeClass(r.$element,"ui-selected"),r.selected=!1,n._addClass(r.$element,"ui-unselecting"),r.unselecting=!0,n._trigger("unselecting",t,{unselecting:r.element}))}),e(t.target).parents().addBack().each(function(){var r,i=e.data(this,"selectable-item");return i?(r=!t.metaKey&&!t.ctrlKey||!i.$element.hasClass("ui-selected"),n._removeClass(i.$element,r?"ui-unselecting":"ui-selected")._addClass(i.$element,r?"ui-selecting":"ui-unselecting"),i.unselecting=!r,i.selecting=r,i.selected=r,r?n._trigger("selecting",t,{selecting:i.element}):n._trigger("unselecting",t,{unselecting:i.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var n,r=this,i=this.options,s=this.opos[0],o=this.opos[1],u=t.pageX,a=t.pageY;return s>u&&(n=u,u=s,s=n),o>a&&(n=a,a=o,o=n),this.helper.css({left:s,top:o,width:u-s,height:a-o}),this.selectees.each(function(){var n=e.data(this,"selectable-item"),f=!1,l={};n&&n.element!==r.element[0]&&(l.left=n.left+r.elementPos.left,l.right=n.right+r.elementPos.left,l.top=n.top+r.elementPos.top,l.bottom=n.bottom+r.elementPos.top,"touch"===i.tolerance?f=!(l.left>u||s>l.right||l.top>a||o>l.bottom):"fit"===i.tolerance&&(f=l.left>s&&u>l.right&&l.top>o&&a>l.bottom),f?(n.selected&&(r._removeClass(n.$element,"ui-selected"),n.selected=!1),n.unselecting&&(r._removeClass(n.$element,"ui-unselecting"),n.unselecting=!1),n.selecting||(r._addClass(n.$element,"ui-selecting"),n.selecting=!0,r._trigger("selecting",t,{selecting:n.element}))):(n.selecting&&((t.metaKey||t.ctrlKey)&&n.startselected?(r._removeClass(n.$element,"ui-selecting"),n.selecting=!1,r._addClass(n.$element,"ui-selected"),n.selected=!0):(r._removeClass(n.$element,"ui-selecting"),n.selecting=!1,n.startselected&&(r._addClass(n.$element,"ui-unselecting"),n.unselecting=!0),r._trigger("unselecting",t,{unselecting:n.element}))),n.selected&&(t.metaKey||t.ctrlKey||n.startselected||(r._removeClass(n.$element,"ui-selected"),n.selected=!1,r._addClass(n.$element,"ui-unselecting"),n.unselecting=!0,r._trigger("unselecting",t,{unselecting:n.element})))))}),!1}},_mouseStop:function(t){var n=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");n._removeClass(r.$element,"ui-unselecting"),r.unselecting=!1,r.startselected=!1,n._trigger("unselected",t,{unselected:r.element})}),e(".ui-selecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");n._removeClass(r.$element,"ui-selecting")._addClass(r.$element,"ui-selected"),r.selecting=!1,r.selected=!0,r.startselected=!0,n._trigger("selected",t,{selected:r.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.selectmenu",[e.ui.formResetMixin,{version:"1.12.0",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=e()},_drawButton:function(){var t,n=this,r=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=e("<span>").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(r).appendTo(this.button),this.options.width!==!1&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){n._rendered||n._refreshMenu()})},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(e,n){e.preventDefault(),t._setSelection(),t._select(n.item.data("ui-selectmenu-item"),e)},focus:function(e,n){var r=n.item.data("ui-selectmenu-item");null!=t.focusIndex&&r.index!==t.focusIndex&&(t._trigger("focus",e,{item:r}),t.isOpen||t._select(r,e)),t.focusIndex=r.index,t.button.attr("aria-activedescendant",t.menuItems.eq(r.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var e,t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e)))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var n=e("<span>");return this._setText(n,t.label),this._addClass(n,"ui-selectmenu-text"),n},_renderMenu:function(t,n){var r=this,i="";e.each(n,function(n,s){var o;s.optgroup!==i&&(o=e("<li>",{text:s.optgroup}),r._addClass(o,"ui-selectmenu-optgroup","ui-menu-divider"+(s.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),o.appendTo(t),i=s.optgroup),r._renderItemData(t,s)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,n){var r=e("<li>"),i=e("<div>",{title:n.element.attr("title")});return n.disabled&&this._addClass(r,null,"ui-state-disabled"),this._setText(i,n.label),r.append(i).appendTo(t)},_setText:function(e,t){t?e.text(t):e.html(" ")},_move:function(e,t){var n,r,i=".ui-menu-item";this.isOpen?n=this.menuItems.eq(this.focusIndex).parent("li"):(n=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),i+=":not(.ui-state-disabled)"),r="first"===e||"last"===e?n["first"===e?"prevAll":"nextAll"](i).eq(-1):n[e+"All"](i).eq(0),r.length&&this.menuInstance.focus(t,r)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?(e=window.getSelection(),e.removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+e.ui.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection(),e.rangeCount&&(this.range=e.getRangeAt(0))):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var n=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),n=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),n=!1}n&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex).parent("li");t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var n=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(e)),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==n&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){if("icons"===e){var n=this.button.find("span.ui-icon");this._removeClass(n,null,this.options.icons.button)._addClass(n,null,t.button)}this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"width"===e&&this._resizeButton()},_setOptionDisabled:function(e){this._super(e),this.menuInstance.option("disabled",e),this.button.attr("aria-disabled",e),this._toggleClass(this.button,null,"ui-state-disabled",e),this.element.prop("disabled",e),e?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front, dialog")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;return e===!1?(this.button.css("width",""),void 0):(null===e&&(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e),void 0)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var e=this._super();return e.disabled=this.element.prop("disabled"),e},_parseOptions:function(t){var n=this,r=[];t.each(function(t,i){r.push(n._parseOption(e(i),t))}),this.items=r},_parseOption:function(e,t){var n=e.parent("optgroup");return{element:e,index:t,value:e.val(),label:e.text(),optgroup:n.attr("label")||"",disabled:n.prop("disabled")||e.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),e.widget("ui.slider",e.ui.mouse,{version:"1.12.0",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,n,r=this.options,i=this.element.find(".ui-slider-handle"),s="<span tabindex='0'></span>",o=[];for(n=r.values&&r.values.length||1,i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;n>t;t++)o.push(s);this.handles=i.add(e(o.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options;t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=e("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),("min"===t.range||"max"===t.range)&&this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var n,r,i,s,o,u,a,f,l=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),n={x:t.pageX,y:t.pageY},r=this._normValueFromMouse(n),i=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var n=Math.abs(r-l.values(t));(i>n||i===n&&(t===l._lastChangedValue||l.values(t)===c.min))&&(i=n,s=e(this),o=t)}),u=this._start(t,o),u===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,this._addClass(s,null,"ui-state-active"),s.trigger("focus"),a=s.offset(),f=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=f?{left:0,top:0}:{left:t.pageX-a.left-s.width()/2,top:t.pageY-a.top-s.height()/2-(parseInt(s.css("borderTopWidth"),10)||0)-(parseInt(s.css("borderBottomWidth"),10)||0)+(parseInt(s.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,r),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},n=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,n),!1},_mouseStop:function(e){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,n,r,i,s;return"horizontal"===this.orientation?(t=this.elementSize.width,n=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,n=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),r=n/t,r>1&&(r=1),0>r&&(r=0),"vertical"===this.orientation&&(r=1-r),i=this._valueMax()-this._valueMin(),s=this._valueMin()+r*i,this._trimAlignValue(s)},_uiHash:function(e,t,n){var r={handle:this.handles[e],handleIndex:e,value:void 0!==t?t:this.value()};return this._hasMultipleValues()&&(r.value=void 0!==t?t:this.values(e),r.values=n||this.values()),r},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(e,t){return this._trigger("start",e,this._uiHash(t))},_slide:function(e,t,n){var r,i,s=this.value(),o=this.values();this._hasMultipleValues()&&(i=this.values(t?0:1),s=this.values(t),2===this.options.values.length&&this.options.range===!0&&(n=0===t?Math.min(i,n):Math.max(i,n)),o[t]=n),n!==s&&(r=this._trigger("slide",e,this._uiHash(t,n,o)),r!==!1&&(this._hasMultipleValues()?this.values(t,n):this.value(n)))},_stop:function(e,t){this._trigger("stop",e,this._uiHash(t))},_change:function(e,t){this._keySliding||this._mouseSliding||(this._lastChangedValue=t,this._trigger("change",e,this._uiHash(t)))},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,n){var r,i,s;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(n),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this._hasMultipleValues()?this._values(t):this.value();for(r=this.options.values,i=arguments[0],s=0;r.length>s;s+=1)r[s]=this._trimAlignValue(i[s]),this._change(null,s);this._refreshValue()},_setOption:function(t,n){var r,i=0;switch("range"===t&&this.options.range===!0&&("min"===n?(this.options.value=this._values(0),this.options.values=null):"max"===n&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(i=this.options.values.length),this._super(t,n),t){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(n),this.handles.css("horizontal"===n?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),r=i-1;r>=0;r--)this._change(null,r);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(e){this._super(e),this._toggleClass(null,"ui-state-disabled",!!e)},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,n,r;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this._hasMultipleValues()){for(n=this.options.values.slice(),r=0;n.length>r;r+=1)n[r]=this._trimAlignValue(n[r]);return n}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,n=(e-this._valueMin())%t,r=e-n;return 2*Math.abs(n)>=t&&(r+=n>0?t:-t),parseFloat(r.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),n=this.options.step,r=Math.round((e-t)/n)*n;e=r+t,e>this.options.max&&(e-=n),this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,n=t.indexOf(".");return-1===n?0:t.length-n-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(e){"vertical"===e&&this.range.css({width:"",left:""}),"horizontal"===e&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var t,n,r,i,s,o=this.options.range,u=this.options,a=this,f=this._animateOff?!1:u.animate,l={};this._hasMultipleValues()?this.handles.each(function(r){n=100*((a.values(r)-a._valueMin())/(a._valueMax()-a._valueMin())),l["horizontal"===a.orientation?"left":"bottom"]=n+"%",e(this).stop(1,1)[f?"animate":"css"](l,u.animate),a.options.range===!0&&("horizontal"===a.orientation?(0===r&&a.range.stop(1,1)[f?"animate":"css"]({left:n+"%"},u.animate),1===r&&a.range[f?"animate":"css"]({width:n-t+"%"},{queue:!1,duration:u.animate})):(0===r&&a.range.stop(1,1)[f?"animate":"css"]({bottom:n+"%"},u.animate),1===r&&a.range[f?"animate":"css"]({height:n-t+"%"},{queue:!1,duration:u.animate}))),t=n}):(r=this.value(),i=this._valueMin(),s=this._valueMax(),n=s!==i?100*((r-i)/(s-i)):0,l["horizontal"===this.orientation?"left":"bottom"]=n+"%",this.handle.stop(1,1)[f?"animate":"css"](l,u.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[f?"animate":"css"]({width:n+"%"},u.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[f?"animate":"css"]({width:100-n+"%"},u.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[f?"animate":"css"]({height:n+"%"},u.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[f?"animate":"css"]({height:100-n+"%"},u.animate))},_handleEvents:{keydown:function(t){var n,r,i,s,o=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(e(t.target),null,"ui-state-active"),n=this._start(t,o),n===!1))return}switch(s=this.options.step,r=i=this._hasMultipleValues()?this.values(o):this.value(),t.keyCode){case e.ui.keyCode.HOME:i=this._valueMin();break;case e.ui.keyCode.END:i=this._valueMax();break;case e.ui.keyCode.PAGE_UP:i=this._trimAlignValue(r+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(r-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(r===this._valueMax())return;i=this._trimAlignValue(r+s);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(r===this._valueMin())return;i=this._trimAlignValue(r-s)}this._slide(t,o,i)},keyup:function(t){var n=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,n),this._change(t,n),this._removeClass(e(t.target),null,"ui-state-active"))}}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.12.0",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,n){return e>=t&&t+n>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){var t=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),e.each(this.items,function(){t._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,n){var r=null,i=!1,s=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,s.widgetName+"-item")===s?(r=e(this),!1):void 0}),e.data(t.target,s.widgetName+"-item")===s&&(r=e(t.target)),r?!this.options.handle||n||(e(this.options.handle,r).find("*").addBack().each(function(){this===t.target&&(i=!0)}),i)?(this.currentItem=r,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,n,r){var i,s,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(s=this.document.find("body"),this.storedCursor=s.css("cursor"),s.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(s)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!r)for(i=this.containers.length-1;i>=0;i--)this.containers[i]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var n,r,i,s,o=this.options,u=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=u=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=u=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=u=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=u=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-this.document.scrollTop()<o.scrollSensitivity?u=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<o.scrollSensitivity&&(u=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),t.pageX-this.document.scrollLeft()<o.scrollSensitivity?u=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(u=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),u!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),n=this.items.length-1;n>=0;n--)if(r=this.items[n],i=r.item[0],s=this._intersectsWithPointer(r),s&&r.instance===this.currentContainer&&i!==this.currentItem[0]&&this.placeholder[1===s?"next":"prev"]()[0]!==i&&!e.contains(this.placeholder[0],i)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],i):!0)){if(this.direction=1===s?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(r))break;this._rearrange(t,r),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,n){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var r=this,i=this.placeholder.offset(),s=this.options.axis,o={};s&&"x"!==s||(o.left=i.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),s&&"y"!==s||(o.top=i.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){r._clear(t)})}else this._clear(t,n);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},e(n).each(function(){var n=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);n&&r.push((t.key||n[1]+"[]")+"="+(t.key&&t.expression?n[1]:n[2]))}),!r.length&&t.key&&r.push(t.key+"="),r.join("&")},toArray:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},n.each(function(){r.push(e(t.item||this).attr(t.attribute||"id")||"")}),r},_intersectsWith:function(e){var t=this.positionAbs.left,n=t+this.helperProportions.width,r=this.positionAbs.top,i=r+this.helperProportions.height,s=e.left,o=s+e.width,u=e.top,a=u+e.height,f=this.offset.click.top,l=this.offset.click.left,c="x"===this.options.axis||r+f>u&&a>r+f,h="y"===this.options.axis||t+l>s&&o>t+l,p=c&&h;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>s&&o>n-this.helperProportions.width/2&&r+this.helperProportions.height/2>u&&a>i-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t,n,r="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=r&&i;return s?(t=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection(),this.floating?"right"===n||"down"===t?2:1:t&&("down"===t?2:1)):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),n=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),r=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection();return this.floating&&i?"right"===i&&n||"left"===i&&!n:r&&("down"===r&&t||"up"===r&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function n(){u.push(this)}var r,i,s,o,u=[],a=[],f=this._connectWith();if(f&&t)for(r=f.length-1;r>=0;r--)for(s=e(f[r],this.document[0]),i=s.length-1;i>=0;i--)o=e.data(s[i],this.widgetFullName),o&&o!==this&&!o.options.disabled&&a.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(a.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),r=a.length-1;r>=0;r--)a[r][0].each(n);return e(u)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var n=0;t.length>n;n++)if(t[n]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var n,r,i,s,o,u,a,f,l=this.items,c=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],h=this._connectWith();if(h&&this.ready)for(n=h.length-1;n>=0;n--)for(i=e(h[n],this.document[0]),r=i.length-1;r>=0;r--)s=e.data(i[r],this.widgetFullName),s&&s!==this&&!s.options.disabled&&(c.push([e.isFunction(s.options.items)?s.options.items.call(s.element[0],t,{item:this.currentItem}):e(s.options.items,s.element),s]),this.containers.push(s));for(n=c.length-1;n>=0;n--)for(o=c[n][1],u=c[n][0],r=0,f=u.length;f>r;r++)a=e(u[r]),a.data(this.widgetName+"-item",o),l.push({item:a,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var n,r,i,s;for(n=this.items.length-1;n>=0;n--)r=this.items[n],r.instance!==this.currentContainer&&this.currentContainer&&r.item[0]!==this.currentItem[0]||(i=this.options.toleranceElement?e(this.options.toleranceElement,r.item):r.item,t||(r.width=i.outerWidth(),r.height=i.outerHeight()),s=i.offset(),r.left=s.left,r.top=s.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(n=this.containers.length-1;n>=0;n--)s=this.containers[n].element.offset(),this.containers[n].containerCache.left=s.left,this.containers[n].containerCache.top=s.top,this.containers[n].containerCache.width=this.containers[n].element.outerWidth(),this.containers[n].containerCache.height=this.containers[n].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var n,r=t.options;r.placeholder&&r.placeholder.constructor!==String||(n=r.placeholder,r.placeholder={element:function(){var r=t.currentItem[0].nodeName.toLowerCase(),i=e("<"+r+">",t.document[0]);return t._addClass(i,"ui-sortable-placeholder",n||t.currentItem[0].className)._removeClass(i,"ui-sortable-helper"),"tbody"===r?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("<tr>",t.document[0]).appendTo(i)):"tr"===r?t._createTrPlaceholder(t.currentItem,i):"img"===r&&i.attr("src",t.currentItem.attr("src")),n||i.css("visibility","hidden"),i},update:function(e,i){(!n||r.forcePlaceholderSize)&&(i.height()||i.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),i.width()||i.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(r.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),r.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,n){var r=this;t.children().each(function(){e("<td> </td>",r.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(n)})},_contactContainers:function(t){var n,r,i,s,o,u,a,f,l,c,h=null,p=null;for(n=this.containers.length-1;n>=0;n--)if(!e.contains(this.currentItem[0],this.containers[n].element[0]))if(this._intersectsWith(this.containers[n].containerCache)){if(h&&e.contains(this.containers[n].element[0],h.element[0]))continue;h=this.containers[n],p=n}else this.containers[n].containerCache.over&&(this.containers[n]._trigger("out",t,this._uiHash(this)),this.containers[n].containerCache.over=0);if(h)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(i=1e4,s=null,l=h.floating||this._isFloating(this.currentItem),o=l?"left":"top",u=l?"width":"height",c=l?"pageX":"pageY",r=this.items.length-1;r>=0;r--)e.contains(this.containers[p].element[0],this.items[r].item[0])&&this.items[r].item[0]!==this.currentItem[0]&&(a=this.items[r].item.offset()[o],f=!1,t[c]-a>this.items[r][u]/2&&(f=!0),i>Math.abs(t[c]-a)&&(i=Math.abs(t[c]-a),s=this.items[r],this.direction=f?"up":"down"));if(!s&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;s?this._rearrange(t,s,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t,this.currentItem])):"clone"===n.helper?this.currentItem.clone():this.currentItem;return r.parents("body").length||e("parent"!==n.appendTo?n.appendTo:this.currentItem[0].parentNode)[0].appendChild(r[0]),r[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!r[0].style.width||n.forceHelperSize)&&r.width(this.currentItem.width()),(!r[0].style.height||n.forceHelperSize)&&r.height(this.currentItem.height()),r},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,n,r,i=this.options;"parent"===i.containment&&(i.containment=this.helper[0].parentNode),("document"===i.containment||"window"===i.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===i.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===i.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(i.containment)||(t=e(i.containment)[0],n=e(i.containment).offset(),r="hidden"!==e(t).css("overflow"),this.containment=[n.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,n.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,n.left+(r?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,n.top+(r?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,n){n||(n=this.position);var r="absolute"===t?1:-1,i="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,s=/(html|body)/i.test(i[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():s?0:i.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():s?0:i.scrollLeft())*r}},_generatePosition:function(t){var n,r,i=this.options,s=t.pageX,o=t.pageY,u="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(u[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(s=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(s=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),i.grid&&(n=this.originalPageY+Math.round((o-this.originalPageY)/i.grid[1])*i.grid[1],o=this.containment?n-this.offset.click.top>=this.containment[1]&&n-this.offset.click.top<=this.containment[3]?n:n-this.offset.click.top>=this.containment[1]?n-i.grid[1]:n+i.grid[1]:n,r=this.originalPageX+Math.round((s-this.originalPageX)/i.grid[0])*i.grid[0],s=this.containment?r-this.offset.click.left>=this.containment[0]&&r-this.offset.click.left<=this.containment[2]?r:r-this.offset.click.left>=this.containment[0]?r-i.grid[0]:r+i.grid[0]:r)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:u.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:u.scrollLeft())}},_rearrange:function(e,t,n,r){n?n[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var i=this.counter;this._delay(function(){i===this.counter&&this.refreshPositions(!r)})},_clear:function(e,t){function n(e,t,n){return function(r){n._trigger(e,r,t._uiHash(t))}}this.reverting=!1;var r,i=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(r in this._storedCSS)("auto"===this._storedCSS[r]||"static"===this._storedCSS[r])&&(this._storedCSS[r]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&i.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||i.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(i.push(function(e){this._trigger("remove",e,this._uiHash())}),i.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),i.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),r=this.containers.length-1;r>=0;r--)t||i.push(n("deactivate",this,this.containers[r])),this.containers[r].containerCache.over&&(i.push(n("out",this,this.containers[r])),this.containers[r].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(r=0;i.length>r;r++)i[r].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var n=t||this;return{helper:n.helper,placeholder:n.placeholder||e([]),position:n.position,originalPosition:n.originalPosition,offset:n.positionAbs,item:n.currentItem,sender:t?t.element:null}}}),e.widget("ui.spinner",{version:"1.12.0",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t=this._super(),n=this.element;return e.each(["min","max","step"],function(e,r){var i=n.attr(r);null!=i&&i.length&&(t[r]=i)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function n(){var t=this.element[0]===e.ui.safeActiveElement(this.document[0]);t||(this.element.trigger("focus"),this.previous=r,this._delay(function(){this.previous=r}))}var r;r=this.element[0]===e.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),t.preventDefault(),n.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,n.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(t){var n=this.options,r=e.ui.keyCode;switch(t.keyCode){case r.UP:return this._repeat(null,1,t),!0;case r.DOWN:return this._repeat(null,-1,t),!0;case r.PAGE_UP:return this._repeat(null,n.page,t),!0;case r.PAGE_DOWN:return this._repeat(null,-n.page,t),!0}return!1},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,n){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,n)},e),this._spin(t*this.options.step,n)},_spin:function(e,t){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:n})===!1||(this._value(n),this.counter++)},_increment:function(t){var n=this.options.incremental;return n?e.isFunction(n)?n(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,n=t.indexOf(".");return-1===n?0:t.length-n-1},_adjustValue:function(e){var t,n,r=this.options;return t=null!==r.min?r.min:0,n=e-t,n=Math.round(n/r.step)*r.step,e=t+n,e=parseFloat(e.toFixed(this._precision())),null!==r.max&&e>r.max?r.max:null!==r.min&&r.min>e?r.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){var n,r,i;return"culture"===e||"numberFormat"===e?(n=this._parse(this.element.val()),this.options[e]=t,this.element.val(this._format(n)),void 0):(("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(r=this.buttons.first().find(".ui-icon"),this._removeClass(r,null,this.options.icons.up),this._addClass(r,null,t.up),i=this.buttons.last().find(".ui-icon"),this._removeClass(i,null,this.options.icons.down),this._addClass(i,null,t.down)),this._super(e,t),void 0)},_setOptionDisabled:function(e){this._super(e),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!e),this.element.prop("disabled",!!e),this.buttons.button(e?"disable":"enable")},_setOptions:u(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var n;""!==e&&(n=this._parse(e),null!==n&&(t||(n=this._adjustValue(n)),e=this._format(n))),this.element.val(e),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:u(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:u(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:u(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:u(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(u(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.uiBackCompat!==!1&&e.widget("ui.spinner",e.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}}),e.ui.spinner,e.widget("ui.tabs",{version:"1.12.0",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var n,r;n=t.href.replace(e,""),r=location.href.replace(e,"");try{n=decodeURIComponent(n)}catch(i){}try{r=decodeURIComponent(r)}catch(i){}return t.hash.length>1&&n===r}}(),_create:function(){var t=this,n=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,n.collapsible),this._processTabs(),n.active=this._initialActive(),e.isArray(n.disabled)&&(n.disabled=e.unique(n.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(n.active):e(),this._refresh(),this.active.length&&this.load(n.active)},_initialActive:function(){var t=this.options.active,n=this.options.collapsible,r=location.hash.substring(1);return null===t&&(r&&this.tabs.each(function(n,i){return e(i).attr("aria-controls")===r?(t=n,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=n?!1:0)),!n&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var n=e(e.ui.safeActiveElement(this.document[0])).closest("li"),r=this.tabs.index(n),i=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:r++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:i=!1,r--;break;case e.ui.keyCode.END:r=this.anchors.length-1;break;case e.ui.keyCode.HOME:r=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(r),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(r===this.options.active?!1:r),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),r=this._focusNextTab(r,i),t.ctrlKey||t.metaKey||(n.attr("aria-selected","false"),this.tabs.eq(r).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",r)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,n){function r(){return t>i&&(t=0),0>t&&(t=i),t}for(var i=this.tabs.length-1;-1!==e.inArray(r(),this.options.disabled);)t=n?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).trigger("focus"),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):(this._super(e,t),"collapsible"===e&&(this._toggleClass("ui-tabs-collapsible",null,t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,n=this.tablist.children(":has(a[href])");t.disabled=e.map(n.filter(".ui-state-disabled"),function(e){return n.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,n=this.tabs,r=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=e(),this.anchors.each(function(n,r){var i,s,o,u=e(r).uniqueId().attr("id"),a=e(r).closest("li"),f=a.attr("aria-controls");t._isLocal(r)?(i=r.hash,o=i.substring(1),s=t.element.find(t._sanitizeSelector(i))):(o=a.attr("aria-controls")||e({}).uniqueId()[0].id,i="#"+o,s=t.element.find(i),s.length||(s=t._createPanel(o),s.insertAfter(t.panels[n-1]||t.tablist)),s.attr("aria-live","polite")),s.length&&(t.panels=t.panels.add(s)),f&&a.data("ui-tabs-aria-controls",f),a.attr({"aria-controls":o,"aria-labelledby":u}),s.attr("aria-labelledby",u)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),n&&(this._off(n.not(this.tabs)),this._off(r.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var n,r,i;for(e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;r=this.tabs[i];i++)n=e(r),t===!0||-1!==e.inArray(i,t)?(n.attr("aria-disabled","true"),this._addClass(n,null,"ui-state-disabled")):(n.removeAttr("aria-disabled"),this._removeClass(n,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,t===!0)},_setupEvents:function(t){var n={};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var n,r=this.element.parent();"fill"===t?(n=r.height(),n-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),r=t.css("position");"absolute"!==r&&"fixed"!==r&&(n-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){n-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,n-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(n=0,this.panels.each(function(){n=Math.max(n,e(this).height("").height())}).height(n))},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i.closest("li"),o=s[0]===r[0],u=o&&n.collapsible,a=u?e():this._getPanelForTab(s),f=r.length?this._getPanelForTab(r):e(),l={oldTab:r,oldPanel:f,newTab:u?e():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||o&&!n.collapsible||this._trigger("beforeActivate",t,l)===!1||(n.active=u?!1:this.tabs.index(s),this.active=o?e():s,this.xhr&&this.xhr.abort(),f.length||a.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,l))},_toggle:function(t,n){function r(){s.running=!1,s._trigger("activate",t,n)}function i(){s._addClass(n.newTab.closest("li"),"ui-tabs-active","ui-state-active"),o.length&&s.options.show?s._show(o,s.options.show,r):(o.show(),r())}var s=this,o=n.newPanel,u=n.oldPanel;this.running=!0,u.length&&this.options.hide?this._hide(u,this.options.hide,function(){s._removeClass(n.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),i()}):(this._removeClass(n.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),u.hide(),i()),u.attr("aria-hidden","true"),n.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&u.length?n.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),n.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var n,r=this._findActive(t);r[0]!==this.active[0]&&(r.length||(r=this.active),n=r.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(t){return"string"==typeof t&&(t=this.anchors.index(this.anchors.filter("[href$='"+e.ui.escapeSelector(t)+"']"))),t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=e(this),n=t.data("ui-tabs-aria-controls");n?t.attr("aria-controls",n).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var n=this.options.disabled;n!==!1&&(void 0===t?n=!1:(t=this._getIndex(t),n=e.isArray(n)?e.map(n,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,n){return n!==t?n:null})),this._setOptionDisabled(n))},disable:function(t){var n=this.options.disabled;if(n!==!0){if(void 0===t)n=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,n))return;n=e.isArray(n)?e.merge([t],n).sort():[t]}this._setOptionDisabled(n)}},load:function(t,n){t=this._getIndex(t);var r=this,i=this.tabs.eq(t),s=i.find(".ui-tabs-anchor"),o=this._getPanelForTab(i),u={tab:i,panel:o},a=function(e,t){"abort"===t&&r.panels.stop(!1,!0),r._removeClass(i,"ui-tabs-loading"),o.removeAttr("aria-busy"),e===r.xhr&&delete r.xhr};this._isLocal(s[0])||(this.xhr=e.ajax(this._ajaxSettings(s,n,u)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.done(function(e,t,i){setTimeout(function(){o.html(e),r._trigger("load",n,u),a(i,t)},1)}).fail(function(e,t){setTimeout(function(){a(e,t)},1)})))},_ajaxSettings:function(t,n,r){var i=this;return{url:t.attr("href"),beforeSend:function(t,s){return i._trigger("beforeLoad",n,e.extend({jqXHR:t,ajaxSettings:s},r))}}},_getPanelForTab:function(t){var n=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}}),e.uiBackCompat!==!1&&e.widget("ui.tabs",e.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),e.ui.tabs,e.widget("ui.tooltip",{version:"1.12.0",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,n){var r=(t.attr("aria-describedby")||"").split(/\s+/);r.push(n),t.data("ui-tooltip-id",n).attr("aria-describedby",e.trim(r.join(" ")))},_removeDescribedBy:function(t){var n=t.data("ui-tooltip-id"),r=(t.attr("aria-describedby")||"").split(/\s+/),i=e.inArray(n,r);-1!==i&&r.splice(i,1),t.removeData("ui-tooltip-id"),r=e.trim(r.join(" ")),r?t.attr("aria-describedby",r):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=e([])},_setOption:function(t,n){var r=this;this._super(t,n),"content"===t&&e.each(this.tooltips,function(e,t){r._updateContent(t.element)})},_setOptionDisabled:function(e){this[e?"_disable":"_enable"]()},_disable:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r.element[0],t.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=e(this);return t.is("[title]")?t.data("ui-tooltip-title",t.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=e([])},open:function(t){var n=this,r=e(t?t.target:this.element).closest(this.options.items);r.length&&!r.data("ui-tooltip-id")&&(r.attr("title")&&r.data("ui-tooltip-title",r.attr("title")),r.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&r.parents().each(function(){var t,r=e(this);r.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,n.close(t,!0)),r.attr("title")&&(r.uniqueId(),n.parents[this.id]={element:this,title:r.attr("title")},r.attr("title",""))}),this._registerCloseHandlers(t,r),this._updateContent(r,t))},_updateContent:function(e,t){var n,r=this.options.content,i=this,s=t?t.type:null;return"string"==typeof r||r.nodeType||r.jquery?this._open(t,e,r):(n=r.call(e[0],function(n){i._delay(function(){e.data("ui-tooltip-open")&&(t&&(t.type=s),this._open(t,e,n))})}),n&&this._open(t,e,n),void 0)},_open:function(t,n,r){function i(e){f.of=e,o.is(":hidden")||o.position(f)}var s,o,u,a,f=e.extend({},this.options.position);if(r){if(s=this._find(n))return s.tooltip.find(".ui-tooltip-content").html(r),void 0;n.is("[title]")&&(t&&"mouseover"===t.type?n.attr("title",""):n.removeAttr("title")),s=this._tooltip(n),o=s.tooltip,this._addDescribedBy(n,o.attr("id")),o.find(".ui-tooltip-content").html(r),this.liveRegion.children().hide(),a=e("<div>").html(o.find(".ui-tooltip-content").html()),a.removeAttr("name").find("[name]").removeAttr("name"),a.removeAttr("id").find("[id]").removeAttr("id"),a.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:i}),i(t)):o.position(e.extend({of:n},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(u=this.delayedShow=setInterval(function(){o.is(":visible")&&(i(f.of),clearInterval(u))},e.fx.interval)),this._trigger("open",t,{tooltip:o})}},_registerCloseHandlers:function(t,n){var r={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var r=e.Event(t);r.currentTarget=n[0],this.close(r,!0)}}};n[0]!==this.element[0]&&(r.remove=function(){this._removeTooltip(this._find(n).tooltip)}),t&&"mouseover"!==t.type||(r.mouseleave="close"),t&&"focusin"!==t.type||(r.focusout="close"),this._on(!0,n,r)},close:function(t){var n,r=this,i=e(t?t.currentTarget:this.element),s=this._find(i);return s?(n=s.tooltip,s.closing||(clearInterval(this.delayedShow),i.data("ui-tooltip-title")&&!i.attr("title")&&i.attr("title",i.data("ui-tooltip-title")),this._removeDescribedBy(i),s.hiding=!0,n.stop(!0),this._hide(n,this.options.hide,function(){r._removeTooltip(e(this))}),i.removeData("ui-tooltip-open"),this._off(i,"mouseleave focusout keyup"),i[0]!==this.element[0]&&this._off(i,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,n){e(n.element).attr("title",n.title),delete r.parents[t]}),s.closing=!0,this._trigger("close",t,{tooltip:n}),s.hiding||(s.closing=!1)),void 0):(i.removeData("ui-tooltip-open"),void 0)},_tooltip:function(t){var n=e("<div>").attr("role","tooltip"),r=e("<div>").appendTo(n),i=n.uniqueId().attr("id");return this._addClass(r,"ui-tooltip-content"),this._addClass(n,"ui-tooltip","ui-widget ui-widget-content"),n.appendTo(this._appendTo(t)),this.tooltips[i]={element:t,tooltip:n}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_appendTo:function(e){var t=e.closest(".ui-front, dialog");return t.length||(t=this.document[0].body),t},_destroy:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur"),s=r.element;i.target=i.currentTarget=s[0],t.close(i,!0),e("#"+n).remove(),s.data("ui-tooltip-title")&&(s.attr("title")||s.attr("title",s.data("ui-tooltip-title")),s.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),e.uiBackCompat!==!1&&e.widget("ui.tooltip",e.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var e=this._superApply(arguments);return this.options.tooltipClass&&e.tooltip.addClass(this.options.tooltipClass),e}}),e.ui.tooltip}),function(e,t){var n=0,r=null,i=[],s=null;e.fn.split=function(o){function y(e){if(typeof e=="number")return e;if(typeof e=="string"){var t=e.match(/^([0-9\.]+)(px|%)$/);if(t){if(t[2]=="px")return+t[1];if(l.orientation=="vertical")return p*+t[1]/100;if(l.orientation=="horizontal")return d*+t[1]/100}}}var u=this.data("splitter");if(u)return u;var a,f,l=e.extend({limit:100,orientation:"horizontal",position:"50%",invisible:!1,onDragStart:e.noop,onDragEnd:e.noop,onDrag:e.noop},o||{});this.settings=l;var c,h=this.children();l.orientation=="vertical"?(a=h.first().addClass("left_panel"),f=a.next().addClass("right_panel"),c="vsplitter"):l.orientation=="horizontal"&&(a=h.first().addClass("top_panel"),f=a.next().addClass("bottom_panel"),c="hsplitter"),l.invisible&&(c+=" splitter-invisible");var p=this.width(),d=this.height(),v=n++;this.addClass("splitter_panel");var m=e("<div/>").addClass(c).bind("mouseenter touchstart",function(){r=v}).bind("mouseleave touchend",function(){r=null}).insertAfter(a),g,b=e.extend(this,{refresh:function(){var e=this.width(),t=this.height();if(p!=e||d!=t)p=this.width(),d=this.height(),b.position(g)},position:function(){return l.orientation=="vertical"?function(e,n){if(e===t)return g;g=y(e);var r=m.width(),i=r/2;if(l.invisible){var s=a.width(g).outerWidth();f.width(b.width()-s),m.css("left",s-i)}else{var s=a.width(g-i).outerWidth();f.width(b.width()-s-r),m.css("left",s)}return n||b.find(".splitter_panel").trigger("splitter.resize"),b}:l.orientation=="horizontal"?function(e,n){if(e===t)return g;g=y(e);var r=m.height(),i=r/2;if(l.invisible){var s=a.height(g).outerHeight();f.height(b.height()-s),m.css("top",s-i)}else{var s=a.height(g-i).outerHeight();f.height(b.height()-s-r),m.css("top",s)}return n||b.find(".splitter_panel").trigger("splitter.resize"),b}:e.noop}(),orientation:l.orientation,limit:l.limit,isActive:function(){return r===v},destroy:function(){b.removeClass("splitter_panel"),m.unbind("mouseenter"),m.unbind("mouseleave"),m.unbind("touchstart"),m.unbind("touchmove"),m.unbind("touchend"),m.unbind("touchleave"),m.unbind("touchcancel"),l.orientation=="vertical"?(a.removeClass("left_panel"),f.removeClass("right_panel")):l.orientation=="horizontal"&&(a.removeClass("top_panel"),f.removeClass("bottom_panel")),b.unbind("splitter.resize"),b.find(".splitter_panel").trigger("splitter.resize"),i[v]=null,m.remove();var t=!1;for(var r=i.length;r--;)if(i[r]!==null){t=!0;break}t||(e(document.documentElement).unbind(".splitter"),e(window).unbind("resize.splitter"),b.data("splitter",null),i=[],n=0)}});b.bind("splitter.resize",function(e){var t=b.position();b.orientation=="vertical"&&t>b.width()?t=b.width()-b.limit-1:b.orientation=="horizontal"&&t>b.height()&&(t=b.height()-b.limit-1),t<b.limit&&(t=b.limit+1),b.position(t,!0)});var w;return l.orientation=="vertical"?w>p-l.limit?w=p-l.limit:w=y(l.position):l.orientation=="horizontal"&&(w>d-l.limit?w=d-l.limit:w=y(l.position)),w<l.limit&&(w=l.limit),b.position(w,!0),i.length==0&&(e(window).bind("resize.splitter",function(){e.each(i,function(e,t){t.refresh()})}),e(document.documentElement).bind("mousedown.splitter touchstart.splitter",function(t){if(r!==null)return s=i[r],e('<div class="splitterMask"></div>').css("cursor",s.children().eq(1).css("cursor")).insertAfter(s),s.settings.onDragStart(t),!1}).bind("mouseup.splitter touchend.splitter touchleave.splitter touchcancel.splitter",function(t){s&&(e(".splitterMask").remove(),s.settings.onDragEnd(t),s=null)}).bind("mousemove.splitter touchmove.splitter",function(e){if(s!==null){var t=s.limit,n=s.offset();if(s.orientation=="vertical"){var r=e.pageX;e.originalEvent&&e.originalEvent.changedTouches&&(r=e.originalEvent.changedTouches[0].pageX);var i=r-n.left;i<=s.limit?i=s.limit+1:i>=s.width()-t&&(i=s.width()-t-1),i>s.limit&&i<s.width()-t&&(s.position(i,!0),s.find(".splitter_panel").trigger("splitter.resize"),e.preventDefault())}else if(s.orientation=="horizontal"){var o=e.pageY;e.originalEvent&&e.originalEvent.changedTouches&&(o=e.originalEvent.changedTouches[0].pageY);var u=o-n.top;u<=s.limit?u=s.limit+1:u>=s.height()-t&&(u=s.height()-t-1),u>s.limit&&u<s.height()-t&&(s.position(u,!0),s.find(".splitter_panel").trigger("splitter.resize"),e.preventDefault())}s.settings.onDrag(e)}})),i.push(b),b.data("splitter",b),b}}(jQuery),define("splitter",["jquery"],function(){}),define("pane",["jquery","splitter"],function(){function e(e,t,n){var r=e.wrap('<div class="pane-container"></div>').parent();n=="above"||n=="left"?r.prepend(t):r.append(t),e.wrap('<div class="pane-wrapper"></div>'),t.wrap('<div class="pane-wrapper"></div>'),n=="above"||n=="below"?dir="horizontal":dir="vertical",r.split({orientation:dir,limit:10})}function t(e){var t=e.parents(".pane-container").first();t.split().destroy(),e.parent().remove(),t.children().first().children().first().unwrap().unwrap()}(function(e){function r(t){var n=t.children();return{splitter:t.split(),first:e(n[0]).children()[0],second:e(n[2]).children()[0]}}var t="tile",n={_init:function(t){return this.each(function(){var t=e(this),n=t.hasClass("horizontal")?"vertical":"horizontal",r=t.attr("data-split"),i=t.children();r||(r="50%"),i.each(function(){e(this).wrap('<div class="pane-wrapper"></div>')}),t.addClass("pane-container"),t.split({orientation:n,position:r,limit:10,onDrag:function(e){i.trigger("pane.resize")},onDragEnd:function(){t.tile("resize_save")}}),t.tile("resize_save")})},resize_save:function(){return this.each(function(){var t=e(this),n=r(t),i,s;n.splitter.orientation=="horizontal"?(i=t.height(),s=e(n.first).height()):(i=t.width(),s=e(n.first).width());var o=Math.round(100*s/i)+"%";n.splitter.resizestart=o}),this.find(".reactive-size").trigger("reactive-resize"),this},resize:function(){return this.each(function(){var t=e(this),n=t.split();n.resizestart&&(n.position(n.resizestart),n.settings.onDrag(t))})}};e.fn.tile=function(r){if(n[r])return n[r].apply(this,Array.prototype.slice.call(arguments,1));if(typeof r=="object"||!r)return n._init.apply(this,arguments);e.error("Method "+r+" does not exist on jQuery."+t)}})(jQuery)}),function(e){"use strict";var t={prefilled:null,CapitalizeFirstLetter:!1,preventSubmitOnEnter:!0,isClearInputOnEsc:!0,externalTagId:!1,prefillIdFieldName:"Id",prefillValueFieldName:"Value",AjaxPush:null,AjaxPushAllTags:null,AjaxPushParameters:null,delimiters:[9,13,44],backspace:[8],maxTags:0,hiddenTagListName:null,hiddenTagListId:null,replace:!0,output:null,deleteTagsOnBackspace:!0,tagsContainer:null,tagCloseIcon:"x",tagClass:"",validator:null,onlyTagList:!1,tagList:null,fillInputOnTagRemove:!1},n={pushTag:function(t,n,i){var s=e(this),o=s.data("opts"),u,a,f,l,c=s.data("tlis"),h=s.data("tlid"),p,d,v,m,g,y,b,w;t=r.trimTag(t,o.delimiterChars);if(!t||t.length<=0)return;if(o.onlyTagList&&undefined!==o.tagList&&o.tagList){var E=o.tagList;e.each(E,function(e,t){E[e]=t.toLowerCase()});var S=e.inArray(t.toLowerCase(),E);if(-1===S)return}o.CapitalizeFirstLetter&&t.length>1&&(t=t.charAt(0).toUpperCase()+t.slice(1).toLowerCase());if(o.validator&&!o.validator(t)){s.trigger("tm:invalid",t);return}if(o.maxTags>0&&c.length>=o.maxTags)return;u=!1,a=jQuery.map(c,function(e){return e.toLowerCase()}),p=e.inArray(t.toLowerCase(),a),-1!==p&&(u=!0);if(u){s.trigger("tm:duplicated",t);if(o.blinkClass)for(var x=0;x<6;++x)e("#"+s.data("tm_rndid")+"_"+h[p]).queue(function(t){e(this).toggleClass(o.blinkClass),t()}).delay(100);else e("#"+s.data("tm_rndid")+"_"+h[p]).stop().animate({backgroundColor:o.blinkBGColor_1},100).animate({backgroundColor:o.blinkBGColor_2},100).animate({backgroundColor:o.blinkBGColor_1},100).animate({backgroundColor:o.blinkBGColor_2},100).animate({backgroundColor:o.blinkBGColor_1},100).animate({backgroundColor:o.blinkBGColor_2},100)}else o.externalTagId===!0?(i===undefined&&e.error("externalTagId is not passed for tag -"+t),l=i):(f=Math.max.apply(null,h),f=f===-Infinity?0:f,l=++f),n||s.trigger("tm:pushing",[t,l]),c.push(t),h.push(l),n||o.AjaxPush!==null&&o.AjaxPushAllTags==null&&e.inArray(t,o.prefilled)===-1&&e.post(o.AjaxPush,e.extend({tag:t},o.AjaxPushParameters)),d=s.data("tm_rndid")+"_"+l,v=s.data("tm_rndid")+"_Remover_"+l,m=e("<span/>").text(t).html(),g='<span class="'+r.tagClasses.call(s)+'" id="'+d+'">',g+="<span>"+m+"</span>",g+='<a href="#" class="tm-tag-remove" id="'+v+'" TagIdToRemove="'+l+'">',g+=o.tagCloseIcon+"</a></span> ",y=e(g),o.tagsContainer!==null?e(o.tagsContainer).append(y):h.length>1?(w=s.siblings("#"+s.data("tm_rndid")+"_"+h[h.length-2]),w.after(y)):s.before(y),y.find("#"+v).on("click",s,function(t){t.preventDefault();var n=parseInt(e(this).attr("TagIdToRemove"));r.spliceTag.call(s,n,t.data)}),r.refreshHiddenTagList.call(s),n||s.trigger("tm:pushed",[t,l]),r.showOrHide.call(s);s.val("")},popTag:function(){var t=e(this),n,i,s=t.data("tlis"),o=t.data("tlid");o.length>0&&(n=o.pop(),i=s[s.length-1],t.trigger("tm:popping",[i,n]),s.pop(),e("#"+t.data("tm_rndid")+"_"+n).remove(),r.refreshHiddenTagList.call(t),t.trigger("tm:popped",[i,n]))},empty:function(){var t=e(this),n=t.data("tlis"),i=t.data("tlid"),s;while(i.length>0)s=i.pop(),n.pop(),e("#"+t.data("tm_rndid")+"_"+s).remove(),r.refreshHiddenTagList.call(t);t.trigger("tm:emptied",null),r.showOrHide.call(t)},tags:function(){var e=this,t=e.data("tlis");return t}},r={showOrHide:function(){var e=this,t=e.data("opts"),n=e.data("tlis");t.maxTags>0&&n.length<t.maxTags&&(e.show(),e.trigger("tm:show")),t.maxTags>0&&n.length>=t.maxTags&&(e.hide(),e.trigger("tm:hide"))},tagClasses:function(){var t=e(this),n=t.data("opts"),r=n.tagBaseClass,i=n.inputBaseClass,s;return s=r,t.attr("class")&&e.each(t.attr("class").split(" "),function(e,t){t.indexOf(i+"-")!==-1&&(s+=" "+r+t.substring(i.length))}),s+=n.tagClass?" "+n.tagClass:"",s},trimTag:function(t,n){var r;t=e.trim(t),r=0;for(r;r<t.length;r++)if(e.inArray(t.charCodeAt(r),n)!==-1)break;return t.substring(0,r)},refreshHiddenTagList:function(){var t=e(this),n=t.data("tlis"),r=t.data("lhiddenTagList");r&&e(r).val(n.join(t.data("opts").baseDelimiter)).change(),t.trigger("tm:refresh",n.join(t.data("opts").baseDelimiter))},killEvent:function(e){e.cancelBubble=!0,e.returnValue=!1,e.stopPropagation(),e.preventDefault()},keyInArray:function(t,n){return e.inArray(t.which,n)!==-1},applyDelimiter:function(t){var r=e(this);n.pushTag.call(r,e(this).val()),t.preventDefault()},prefill:function(t){var r=e(this),i=r.data("opts");e.each(t,function(e,t){i.externalTagId===!0?n.pushTag.call(r,t[i.prefillValueFieldName],!0,t[i.prefillIdFieldName]):n.pushTag.call(r,t,!0)})},pushAllTags:function(t,n){var r=e(this),i=r.data("opts"),s=r.data("tlis");i.AjaxPushAllTags&&(t.type!=="tm:pushed"||e.inArray(n,i.prefilled)===-1)&&e.post(i.AjaxPush,e.extend({tags:s.join(i.baseDelimiter)},i.AjaxPushParameters))},spliceTag:function(t){var n=this,i=n.data("tlis"),s=n.data("tlid"),o=e.inArray(t,s),u;-1!==o&&(u=i[o],n.trigger("tm:splicing",[u,t]),e("#"+n.data("tm_rndid")+"_"+t).remove(),i.splice(o,1),s.splice(o,1),r.refreshHiddenTagList.call(n),n.trigger("tm:spliced",[u,t])),r.showOrHide.call(n)},init:function(i){var s=e.extend({},t,i),o,u;return s.hiddenTagListName=s.hiddenTagListName===null?"hidden-"+this.attr("name"):s.hiddenTagListName,o=s.delimeters||s.delimiters,u=[9,13,17,18,19,37,38,39,40],s.delimiterChars=[],s.delimiterKeys=[],e.each(o,function(t,n){e.inArray(n,u)!==-1?s.delimiterKeys.push(n):s.delimiterChars.push(n)}),s.baseDelimiter=String.fromCharCode(s.delimiterChars[0]||44),s.tagBaseClass="tm-tag",s.inputBaseClass="tm-input",e.isFunction(s.validator)||(s.validator=null),this.each(function(){var t=e(this),i="",o="",u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";if(t.data("tagManager"))return!1;t.data("tagManager",!0);for(var a=0;a<5;a++)o+=u.charAt(Math.floor(Math.random()*u.length));t.data("tm_rndid",o),t.data("opts",s).data("tlis",[]).data("tlid",[]),s.output===null?(i=e("<input/>",{type:"hidden",name:s.hiddenTagListName}),t.after(i),t.data("lhiddenTagList",i)):t.data("lhiddenTagList",e(s.output)),s.AjaxPushAllTags&&(t.on("tm:spliced",r.pushAllTags),t.on("tm:popped",r.pushAllTags),t.on("tm:pushed",r.pushAllTags)),t.on("focus keypress",function(t){e(this).popover&&e(this).popover("hide")}),s.isClearInputOnEsc&&t.on("keyup",function(t){t.which===27&&(e(this).val(""),r.killEvent(t))}),t.on("keypress",function(e){r.keyInArray(e,s.delimiterChars)&&r.applyDelimiter.call(t,e)}),t.on("keydown",function(e){e.which===13&&s.preventSubmitOnEnter&&r.killEvent(e),r.keyInArray(e,s.delimiterKeys)&&r.applyDelimiter.call(t,e)}),s.deleteTagsOnBackspace&&t.on("keydown",function(i){r.keyInArray(i,s.backspace)&&e(this).val().length<=0&&(n.popTag.call(t),r.killEvent(i))}),s.fillInputOnTagRemove&&t.on("tm:popped",function(t,n){e(this).val(n)}),t.change(function(e){/webkit/.test(navigator.userAgent.toLowerCase())||t.focus(),r.killEvent(e)});if(s.prefilled!==null)typeof s.prefilled=="object"?r.prefill.call(t,s.prefilled):typeof s.prefilled=="string"?r.prefill.call(t,s.prefilled.split(s.baseDelimiter)):typeof s.prefilled=="function"&&r.prefill.call(t,s.prefilled());else if(s.output!==null){if(e(s.output)&&e(s.output).val())var f=e(s.output);r.prefill.call(t,e(s.output).val().split(s.baseDelimiter))}}),this}};e.fn.tagsManager=function(t){var i=e(this);return 0 in this?n[t]?n[t].apply(i,Array.prototype.slice.call(arguments,1)):typeof t=="object"||!t?r.init.apply(this,arguments):(e.error("Method "+t+" does not exist."),!1):this}}(jQuery),define("tagmanager",["jquery"],function(){}),define("form",["jquery","config","modal","laconic","tagmanager"],function(e,t,n){function i(t,n,r){return r=r||2,e.el.label({"class":"control-label col-xs-"+r+"","for":t},n)}function s(t,n){var r={name:t,type:"checkbox"};return n=n||{},n.checked&&(r.checked="checked"),n.title&&(r.title=n.title),e.el.input(r)}function o(t,n){var r={name:t,type:"text","class":"form-control"};return n=n||{},n.placeholder&&(r.placeholder=n.placeholder),n.title&&(r.title=n.title),n.value&&(r.value=n.value),n.disabled&&(r.disabled=n.disabled),n.type&&(r.type=n.type),e.el.input(r)}function u(t,n,r){var i={name:t,type:"text","class":"tm-input tag-list"};n&&(i.placeholder=n);var s=e.el.input(i);return r&&e(s).data("prefilled",r),s}function a(t){return e.el.p({"class":"help-block"},"Make saved file public and give it a meaningful name")}function f(t,n){var r={name:t,"class":"form-control"};return n=n||{},n.placeholder&&(r.placeholder=n.placeholder),e.el.textarea(r,n.value||"")}function l(t,n,r){function s(t){if(typeof t=="string")t==r.value?i.append(e.el.option({selected:"selected"},t)):i.append(e.el.option(t));else{var n={value:t.value};t.value==r.value&&(n.selected="selected"),i.append(e.el.option(n,t.label))}}var i=e(e.el.select({"class":"form-control",name:t}));r=r||{};for(var o=0;o<n.length;o++)s(n[o]);return i[0]}var r={serializeAsObject:function(t){var n=t.serializeArray(0),r={};for(var i=0;i<n.length;i++){var s=n[i].name,o=n[i].value,u=t.find('[name="'+s+'"]'),a=u.prop("type");o!=""&&(a=="hidden"&&s.indexOf("hidden-")==0?(s=s.slice("hidden-".length),r[s]==undefined?r[s]=o.split(","):r[s]=o.split(",").concat(r[s])):a=="text"&&u.hasClass("tag-list")?o!=""&&(r[s]!==undefined?r[s].push(o):r[s]=[o]):a=="number"?r[s]=parseInt(o):a=="checkbox"?r[s]=o=="on"?!0:!1:r[s]=o)}return t.find("[type=checkbox]").each(function(){var t=e(this),n=t.prop("name");r[n]===undefined&&(r[n]=!1)}),r},formError:function(e,t){e.find(".has-error").removeClass("has-error"),e.find(".help-block.with-errors").remove();if(t)if(t.code=="form_error"||t.code=="input_error"){errors=t.data.split("\n");for(var i=0;i<errors.length;i++){var s=errors[i].split(/:\s*(.*)?/);r.fieldError(e,s[0],s[1])}}else n.alert(t.data)},fieldError:function(t,n,r){var i=t.find("input[name="+n+"]");if(i.length>0){var s=i.closest(".form-group");i.parent().hasClass("input-group")&&(i=i.parent()),s.addClass("has-error"),i.after(e.el.p({"class":"help-block with-errors"},r))}else alert("Missing value for "+n)},showDialog:function(t){e(".swish-event-receiver").trigger("dialog",t)},formBroadcast:function(t,n){e(".swish-event-receiver").trigger(t,n)},fields:{fileName:function(n,r,u,f){var l=t.swish.community_examples?"Public | Example | name":"Public | name",c=e.el.div({"class":"form-group"},i("name",l),e.el.div({"class":"col-xs-10"},e.el.div({"class":"input-group"},e.el.span({"class":"input-group-addon",title:"If checked, other users can find this program"},s("public",{checked:r})),t.swish.community_examples?e.el.span({"class":"input-group-addon",title:"If checked, add to examples menu"},s("example",{checked:u})):undefined,o("name",{placeholder:"Name (leave empty for generated random name)",title:"Public name of your program",value:n,disabled:f})),a("Make saved file public or give it a meaningful name")));return c},title:function(t){var n=e.el.div({"class":"form-group"},i("title","Title"),e.el.div({"class":"col-xs-10"},o("title",{placeholder:"Descriptive title",value:t})));return n},author:function(t){var n=e.el.div({"class":"form-group"},i("author","Author"),e.el.div({"class":"col-xs-10"},o("author",{placeholder:"Your name",value:t})));return n},date:function(t,n,r){r=r||i;var s=e.el.div({"class":"form-group"},i(r,n),e.el.div({"class":"col-xs-10"},o(r,{disabled:!0,value:(new Date(t*1e3)).toLocaleString()})));return s},description:function(t){var n=e.el.div({"class":"form-group"},i("description","Description"),e.el.div({"class":"col-xs-10"},f("description",{value:t})));return n},commit_message:function(t){var n=e.el.div({"class":"form-group"},i("commit_message","Changes"),e.el.div({"class":"col-xs-10"},f("commit_message",{value:t,placeholder:"Describe your changes here"})));return n},tags:function(t){var n=e.el.div({"class":"form-group"},i("tags","Tags"),e.el.div({"class":"col-xs-10"},u("tags","Tags help finding this code",t)));return n},projection:function(t){var n=e.el.div({"class":"form-group"},i("projection","Projection"),e.el.div({"class":"col-xs-10"},o("projection",{placeholder:"Columns",value:t})));return n},csvFormat:function(t,n){var r;return t=t||["prolog"],n=n||t[0],t.length==1?r=e.el.input({type:"hidden",name:"format",value:t[0]}):r=e.el.div({"class":"form-group"},i("format","Format"),e.el.div({"class":"col-xs-10"},l("format",t,{value:n}))),r},limit:function(t,n){var r=e.el.div({"class":"form-group"},i("name","Limit"),e.el.div({"class":"col-xs-10"},o("limit",{placeholder:"Maximum result count (blank for unlimited)",title:"Limit results",value:t})));return r},checkboxes:function(t){var n,r=e.el.div({"class":"form-group"},i("options","Options",3),n=e.el.div({"class":"col-xs-9"}));for(var s=0;s<t.length;s++){var o=t[s],u={type:"checkbox",name:o.name,autocomplete:"false"};o.value&&(u.checked="checked"),e(n).append(e.el.label({"class":"checkbox-inline"},e.el.input(u),o.label))}return r},chunk:function(t){var n=e.el.div({"class":"form-group"},i("count","Initial solutions",3),e.el.div({"class":"col-xs-9"},e.el.div({"class":"input-group"},o("chunk",{title:"Initial number of solutions",type:"number",value:t}))));return n},name:function(t,n){n=n||3;var r=e.el.div({"class":"form-group"},i("name","Name",n),e.el.div({"class":"col-xs-"+(12-n)},o("name",{placeholder:"Name",value:t})));return r},filename:function(t,n){n=n||3;var r=e.el.div({"class":"form-group"},i("filename","File name",n),e.el.div({"class":"col-xs-"+(12-n)},o("filename",{placeholder:"File name",value:t})));return r},buttons:function(t){t=t||{};var n=t.label||"Save program",i=t.offset||2,s=e.el.button({name:"save","class":"btn btn-primary"},n);e(s).on("click",function(n){var i=e(n.target).parents("form")[0],s=r.serializeAsObject(e(i));return t.action(n,s),e(n.target).parents(".modal").modal("hide"),n.preventDefault(),!1});var o=e.el.div({"class":"form-group"},e.el.div({"class":"col-xs-offset-"+i+" col-xs-"+(12-i)},s,e.el.button({name:"cancel","class":"btn btn-danger","data-dismiss":"modal"},"Cancel")));return o},radio:function(t,n){var r=e.el.div({"class":"btn-group","data-toggle":"buttons"});for(var i=0;i<n.length;i++){var s="btn btn-default btn-xs";n[i].active&&(s+=" active");var o={type:"radio",name:t,autocomplete:"off",value:n[i].value},u={"class":s};n[i].title&&(u.title=n[i].title),e(r).append(e.el.label(u,e.el.input(o),n[i].label))}return r}},widgets:{glyphIconButton:function(t,n){var r={"class":"btn btn-info",type:"button"};return n.action&&(r["data-action"]=n.action),n.title&&(r.title=n.title),elem=e.el.button(r,e.el.span({"class":"glyphicon "+t})),elem},dropdownButton:function(t,n){n||(n={});var i=n.divClass,s=n.ulClass,o=e.el.div({"class":"btn-group dropdown"+(i?" "+i:"")},e.el.button({"class":"dropdown-toggle","data-toggle":"dropdown"},t),e.el.ul({"class":"dropdown-menu"+(s?" "+s:"")}));return n.actions&&r.widgets.populateMenu(e(o),n.client,n.actions),o},populateMenu:function(t,n,r){function s(t){var r=e(t).data("action");return r&&r.call(n,t),!1}function o(t,n){if(t.indexOf("--")==0)i.append(e.el.li({"class":"divider"}));else{var r=e.el.a(t);e(r).data("action",n),i.append(e.el.li(r))}}var i=t.find(".dropdown-menu");for(var u in r)r.hasOwnProperty(u)&&o(u,r[u]);return i.on("click","a",function(){s(this)}),t}}};return r}),!function(e){var t=function(){"use strict";return{isMsie:function(){return/(msie|trident)/i.test(navigator.userAgent)?navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]:!1},isBlankString:function(e){return!e||/^\s*$/.test(e)},escapeRegExChars:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isArray:e.isArray,isFunction:e.isFunction,isObject:e.isPlainObject,isUndefined:function(e){return"undefined"==typeof e},toStr:function(e){return t.isUndefined(e)||null===e?"":e+""},bind:e.proxy,each:function(t,n){function r(e,t){return n(t,e)}e.each(t,r)},map:e.map,filter:e.grep,every:function(t,n){var r=!0;return t?(e.each(t,function(e,i){return(r=n.call(null,i,e,t))?void 0:!1}),!!r):r},some:function(t,n){var r=!1;return t?(e.each(t,function(e,i){return(r=n.call(null,i,e,t))?!1:void 0}),!!r):r},mixin:e.extend,getUniqueId:function(){var e=0;return function(){return e++}}(),templatify:function(t){function n(){return String(t)}return e.isFunction(t)?t:n},defer:function(e){setTimeout(e,0)},debounce:function(e,t,n){var r,i;return function(){var s,o,u=this,a=arguments;return s=function(){r=null,n||(i=e.apply(u,a))},o=n&&!r,clearTimeout(r),r=setTimeout(s,t),o&&(i=e.apply(u,a)),i}},throttle:function(e,t){var n,r,i,s,o,u;return o=0,u=function(){o=new Date,i=null,s=e.apply(n,r)},function(){var a=new Date,f=t-(a-o);return n=this,r=arguments,0>=f?(clearTimeout(i),i=null,o=a,s=e.apply(n,r)):i||(i=setTimeout(u,f)),s}},noop:function(){}}}(),n="0.10.5",r=function(){"use strict";function e(e){return e=t.toStr(e),e?e.split(/\s+/):[]}function n(e){return e=t.toStr(e),e?e.split(/\W+/):[]}function r(e){return function(){var n=[].slice.call(arguments,0);return function(r){var i=[];return t.each(n,function(n){i=i.concat(e(t.toStr(r[n])))}),i}}}return{nonword:n,whitespace:e,obj:{nonword:r(n),whitespace:r(e)}}}(),i=function(){"use strict";function n(n){this.maxSize=t.isNumber(n)?n:100,this.reset(),this.maxSize<=0&&(this.set=this.get=e.noop)}function r(){this.head=this.tail=null}function i(e,t){this.key=e,this.val=t,this.prev=this.next=null}return t.mixin(n.prototype,{set:function(e,t){var n,r=this.list.tail;this.size>=this.maxSize&&(this.list.remove(r),delete this.hash[r.key]),(n=this.hash[e])?(n.val=t,this.list.moveToFront(n)):(n=new i(e,t),this.list.add(n),this.hash[e]=n,this.size++)},get:function(e){var t=this.hash[e];return t?(this.list.moveToFront(t),t.val):void 0},reset:function(){this.size=0,this.hash={},this.list=new r}}),t.mixin(r.prototype,{add:function(e){this.head&&(e.next=this.head,this.head.prev=e),this.head=e,this.tail=this.tail||e},remove:function(e){e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev},moveToFront:function(e){this.remove(e),this.add(e)}}),n}(),s=function(){"use strict";function e(e){this.prefix=["__",e,"__"].join(""),this.ttlKey="__ttl__",this.keyMatcher=new RegExp("^"+t.escapeRegExChars(this.prefix))}function n(){return(new Date).getTime()}function r(e){return JSON.stringify(t.isUndefined(e)?null:e)}function i(e){return JSON.parse(e)}var s,o;try{s=window.localStorage,s.setItem("~~~","!"),s.removeItem("~~~")}catch(u){s=null}return o=s&&window.JSON?{_prefix:function(e){return this.prefix+e},_ttlKey:function(e){return this._prefix(e)+this.ttlKey},get:function(e){return this.isExpired(e)&&this.remove(e),i(s.getItem(this._prefix(e)))},set:function(e,i,o){return t.isNumber(o)?s.setItem(this._ttlKey(e),r(n()+o)):s.removeItem(this._ttlKey(e)),s.setItem(this._prefix(e),r(i))},remove:function(e){return s.removeItem(this._ttlKey(e)),s.removeItem(this._prefix(e)),this},clear:function(){var e,t,n=[],r=s.length;for(e=0;r>e;e++)(t=s.key(e)).match(this.keyMatcher)&&n.push(t.replace(this.keyMatcher,""));for(e=n.length;e--;)this.remove(n[e]);return this},isExpired:function(e){var r=i(s.getItem(this._ttlKey(e)));return t.isNumber(r)&&n()>r?!0:!1}}:{get:t.noop,set:t.noop,remove:t.noop,clear:t.noop,isExpired:t.noop},t.mixin(e.prototype,o),e}(),o=function(){"use strict";function n(t){t=t||{},this.cancelled=!1,this.lastUrl=null,this._send=t.transport?r(t.transport):e.ajax,this._get=t.rateLimiter?t.rateLimiter(this._get):this._get,this._cache=t.cache===!1?new i(0):a}function r(n){return function(r,i){function s(e){t.defer(function(){u.resolve(e)})}function o(e){t.defer(function(){u.reject(e)})}var u=e.Deferred();return n(r,i,s,o),u}}var s=0,o={},u=6,a=new i(10);return n.setMaxPendingRequests=function(e){u=e},n.resetCache=function(){a.reset()},t.mixin(n.prototype,{_get:function(e,t,n){function r(t){n&&n(null,t),l._cache.set(e,t)}function i(){n&&n(!0)}function a(){s--,delete o[e],l.onDeckRequestArgs&&(l._get.apply(l,l.onDeckRequestArgs),l.onDeckRequestArgs=null)}var f,l=this;this.cancelled||e!==this.lastUrl||((f=o[e])?f.done(r).fail(i):u>s?(s++,o[e]=this._send(e,t).done(r).fail(i).always(a)):this.onDeckRequestArgs=[].slice.call(arguments,0))},get:function(e,n,r){var i;return t.isFunction(n)&&(r=n,n={}),this.cancelled=!1,this.lastUrl=e,(i=this._cache.get(e))?t.defer(function(){r&&r(null,i)}):this._get(e,n,r),!!i},cancel:function(){this.cancelled=!0}}),n}(),u=function(){"use strict";function n(t){t=t||{},t.datumTokenizer&&t.queryTokenizer||e.error("datumTokenizer and queryTokenizer are both required"),this.datumTokenizer=t.datumTokenizer,this.queryTokenizer=t.queryTokenizer,this.reset()}function r(e){return e=t.filter(e,function(e){return!!e}),e=t.map(e,function(e){return e.toLowerCase()})}function i(){return{ids:[],children:{}}}function s(e){for(var t={},n=[],r=0,i=e.length;i>r;r++)t[e[r]]||(t[e[r]]=!0,n.push(e[r]));return n}function o(e,t){function n(e,t){return e-t}var r=0,i=0,s=[];e=e.sort(n),t=t.sort(n);for(var o=e.length,u=t.length;o>r&&u>i;)e[r]<t[i]?r++:e[r]>t[i]?i++:(s.push(e[r]),r++,i++);return s}return t.mixin(n.prototype,{bootstrap:function(e){this.datums=e.datums,this.trie=e.trie},add:function(e){var n=this;e=t.isArray(e)?e:[e],t.each(e,function(e){var s,o;s=n.datums.push(e)-1,o=r(n.datumTokenizer(e)),t.each(o,function(e){var t,r,o;for(t=n.trie,r=e.split("");o=r.shift();)t=t.children[o]||(t.children[o]=i()),t.ids.push(s)})})},get:function(e){var n,i,u=this;return n=r(this.queryTokenizer(e)),t.each(n,function(e){var t,n,r,s;if(i&&0===i.length)return!1;for(t=u.trie,n=e.split("");t&&(r=n.shift());)t=t.children[r];return t&&0===n.length?(s=t.ids.slice(0),void (i=i?o(i,s):s)):(i=[],!1)}),i?t.map(s(i),function(e){return u.datums[e]}):[]},reset:function(){this.datums=[],this.trie=i()},serialize:function(){return{datums:this.datums,trie:this.trie}}}),n}(),a=function(){"use strict";function r(e){return e.local||null}function i(r){var i,s;return s={url:null,thumbprint:"",ttl:864e5,filter:null,ajax:{}},(i=r.prefetch||null)&&(i=t.isString(i)?{url:i}:i,i=t.mixin(s,i),i.thumbprint=n+i.thumbprint,i.ajax.type=i.ajax.type||"GET",i.ajax.dataType=i.ajax.dataType||"json",!i.url&&e.error("prefetch requires url to be set")),i}function s(n){function r(e){return function(n){return t.debounce(n,e)}}function i(e){return function(n){return t.throttle(n,e)}}var s,o;return o={url:null,cache:!0,wildcard:"%QUERY",replace:null,rateLimitBy:"debounce",rateLimitWait:300,send:null,filter:null,ajax:{}},(s=n.remote||null)&&(s=t.isString(s)?{url:s}:s,s=t.mixin(o,s),s.rateLimiter=/^throttle$/i.test(s.rateLimitBy)?i(s.rateLimitWait):r(s.rateLimitWait),s.ajax.type=s.ajax.type||"GET",s.ajax.dataType=s.ajax.dataType||"json",delete s.rateLimitBy,delete s.rateLimitWait,!s.url&&e.error("remote requires url to be set")),s}return{local:r,prefetch:i,remote:s}}();!function(n){"use strict";function i(t){t&&(t.local||t.prefetch||t.remote)||e.error("one of local, prefetch, or remote is required"),this.limit=t.limit||5,this.sorter=f(t.sorter),this.dupDetector=t.dupDetector||l,this.local=a.local(t),this.prefetch=a.prefetch(t),this.remote=a.remote(t),this.cacheKey=this.prefetch?this.prefetch.cacheKey||this.prefetch.url:null,this.index=new u({datumTokenizer:t.datumTokenizer,queryTokenizer:t.queryTokenizer}),this.storage=this.cacheKey?new s(this.cacheKey):null}function f(e){function n(t){return t.sort(e)}function r(e){return e}return t.isFunction(e)?n:r}function l(){return!1}var c,h;return c=n.Bloodhound,h={data:"data",protocol:"protocol",thumbprint:"thumbprint"},n.Bloodhound=i,i.noConflict=function(){return n.Bloodhound=c,i},i.tokenizers=r,t.mixin(i.prototype,{_loadPrefetch:function(t){function n(e){s.clear(),s.add(t.filter?t.filter(e):e),s._saveToStorage(s.index.serialize(),t.thumbprint,t.ttl)}var r,i,s=this;return(r=this._readFromStorage(t.thumbprint))?(this.index.bootstrap(r),i=e.Deferred().resolve()):i=e.ajax(t.url,t.ajax).done(n),i},_getFromRemote:function(e,t){function n(e,n){t(e?[]:s.remote.filter?s.remote.filter(n):n)}var r,i,s=this;if(this.transport)return e=e||"",i=encodeURIComponent(e),r=this.remote.replace?this.remote.replace(this.remote.url,e):this.remote.url.replace(this.remote.wildcard,i),this.transport.get(r,this.remote.ajax,n)},_cancelLastRemoteRequest:function(){this.transport&&this.transport.cancel()},_saveToStorage:function(e,t,n){this.storage&&(this.storage.set(h.data,e,n),this.storage.set(h.protocol,location.protocol,n),this.storage.set(h.thumbprint,t,n))},_readFromStorage:function(e){var t,n={};return this.storage&&(n.data=this.storage.get(h.data),n.protocol=this.storage.get(h.protocol),n.thumbprint=this.storage.get(h.thumbprint)),t=n.thumbprint!==e||n.protocol!==location.protocol,n.data&&!t?n.data:null},_initialize:function(){function n(){i.add(t.isFunction(s)?s():s)}var r,i=this,s=this.local;return r=this.prefetch?this._loadPrefetch(this.prefetch):e.Deferred().resolve(),s&&r.done(n),this.transport=this.remote?new o(this.remote):null,this.initPromise=r.promise()},initialize:function(e){return!this.initPromise||e?this._initialize():this.initPromise},add:function(e){this.index.add(e)},get:function(e,n){function r(e){var r=s.slice(0);t.each(e,function(e){var n;return n=t.some(r,function(t){return i.dupDetector(e,t)}),!n&&r.push(e),r.length<i.limit}),n&&n(i.sorter(r))}var i=this,s=[],o=!1;s=this.index.get(e),s=this.sorter(s).slice(0,this.limit),s.length<this.limit?o=this._getFromRemote(e,r):this._cancelLastRemoteRequest(),o||(s.length>0||!this.transport)&&n&&n(s)},clear:function(){this.index.reset()},clearPrefetchCache:function(){this.storage&&this.storage.clear()},clearRemoteCache:function(){this.transport&&o.resetCache()},ttAdapter:function(){return t.bind(this.get,this)}}),i}(this);var f=function(){return{wrapper:'<span class="twitter-typeahead"></span>',dropdown:'<span class="tt-dropdown-menu"></span>',dataset:'<div class="tt-dataset-%CLASS%"></div>',suggestions:'<span class="tt-suggestions"></span>',suggestion:'<div class="tt-suggestion"></div>'}}(),l=function(){"use strict";var e={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:" 0"}};return t.isMsie()&&t.mixin(e.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),t.isMsie()&&t.isMsie()<=7&&t.mixin(e.input,{marginTop:"-1px"}),e}(),c=function(){"use strict";function n(t){t&&t.el||e.error("EventBus initialized without el"),this.$el=e(t.el)}var r="typeahead:";return t.mixin(n.prototype,{trigger:function(e){var t=[].slice.call(arguments,1);this.$el.trigger(r+e,t)}}),n}(),h=function(){"use strict";function e(e,t,n,r){var i;if(!n)return this;for(t=t.split(a),n=r?u(n,r):n,this._callbacks=this._callbacks||{};i=t.shift();)this._callbacks[i]=this._callbacks[i]||{sync:[],async:[]},this._callbacks[i][e].push(n);return this}function t(t,n,r){return e.call(this,"async",t,n,r)}function n(t,n,r){return e.call(this,"sync",t,n,r)}function r(e){var t;if(!this._callbacks)return this;for(e=e.split(a);t=e.shift();)delete this._callbacks[t];return this}function i(e){var t,n,r,i,o;if(!this._callbacks)return this;for(e=e.split(a),r=[].slice.call(arguments,1);(t=e.shift())&&(n=this._callbacks[t]);)i=s(n.sync,this,[t].concat(r)),o=s(n.async,this,[t].concat(r)),i()&&f(o);return this}function s(e,t,n){function r(){for(var r,i=0,s=e.length;!r&&s>i;i+=1)r=e[i].apply(t,n)===!1;return!r}return r}function o(){var e;return e=window.setImmediate?function(e){setImmediate(function(){e()})}:function(e){setTimeout(function(){e()},0)}}function u(e,t){return e.bind?e.bind(t):function(){e.apply(t,[].slice.call(arguments,0))}}var a=/\s+/,f=o();return{onSync:n,onAsync:t,off:r,trigger:i}}(),p=function(e){"use strict";function n(e,n,r){for(var i,s=[],o=0,u=e.length;u>o;o++)s.push(t.escapeRegExChars(e[o]));return i=r?"\\b("+s.join("|")+")\\b":"("+s.join("|")+")",n?new RegExp(i):new RegExp(i,"i")}var r={node:null,pattern:null,tagName:"strong",className:null,wordsOnly:!1,caseSensitive:!1};return function(i){function s(t){var n,r,s;return(n=u.exec(t.data))&&(s=e.createElement(i.tagName),i.className&&(s.className=i.className),r=t.splitText(n.index),r.splitText(n[0].length),s.appendChild(r.cloneNode(!0)),t.parentNode.replaceChild(s,r)),!!n}function o(e,t){for(var n,r=3,i=0;i<e.childNodes.length;i++)n=e.childNodes[i],n.nodeType===r?i+=t(n)?1:0:o(n,t)}var u;i=t.mixin({},r,i),i.node&&i.pattern&&(i.pattern=t.isArray(i.pattern)?i.pattern:[i.pattern],u=n(i.pattern,i.caseSensitive,i.wordsOnly),o(i.node,s))}}(window.document),d=function(){"use strict";function n(n){var i,s,u,a,f=this;n=n||{},n.input||e.error("input is missing"),i=t.bind(this._onBlur,this),s=t.bind(this._onFocus,this),u=t.bind(this._onKeydown,this),a=t.bind(this._onInput,this),this.$hint=e(n.hint),this.$input=e(n.input).on("blur.tt",i).on("focus.tt",s).on("keydown.tt",u),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=t.noop),t.isMsie()?this.$input.on("keydown.tt keypress.tt cut.tt paste.tt",function(e){o[e.which||e.keyCode]||t.defer(t.bind(f._onInput,f,e))}):this.$input.on("input.tt",a),this.query=this.$input.val(),this.$overflowHelper=r(this.$input)}function r(t){return e('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:t.css("font-family"),fontSize:t.css("font-size"),fontStyle:t.css("font-style"),fontVariant:t.css("font-variant"),fontWeight:t.css("font-weight"),wordSpacing:t.css("word-spacing"),letterSpacing:t.css("letter-spacing"),textIndent:t.css("text-indent"),textRendering:t.css("text-rendering"),textTransform:t.css("text-transform")}).insertAfter(t)}function i(e,t){return n.normalizeQuery(e)===n.normalizeQuery(t)}function s(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}var o;return o={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"},n.normalizeQuery=function(e){return(e||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},t.mixin(n.prototype,h,{_onBlur:function(){this.resetInputValue(),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(e){var t=o[e.which||e.keyCode];this._managePreventDefault(t,e),t&&this._shouldTrigger(t,e)&&this.trigger(t+"Keyed",e)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(e,t){var n,r,i;switch(e){case"tab":r=this.getHint(),i=this.getInputValue(),n=r&&r!==i&&!s(t);break;case"up":case"down":n=!s(t);break;default:n=!1}n&&t.preventDefault()},_shouldTrigger:function(e,t){var n;switch(e){case"tab":n=!s(t);break;default:n=!0}return n},_checkInputValue:function(){var e,t,n;e=this.getInputValue(),t=i(e,this.query),n=t?this.query.length!==e.length:!1,this.query=e,t?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(e){this.query=e},getInputValue:function(){return this.$input.val()},setInputValue:function(e,t){this.$input.val(e),t?this.clearHint():this._checkInputValue()},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(e){this.$hint.val(e)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var e,t,n,r;e=this.getInputValue(),t=this.getHint(),n=e!==t&&0===t.indexOf(e),r=""!==e&&n&&!this.hasOverflow(),!r&&this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var e=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=e},isCursorAtEnd:function(){var e,n,r;return e=this.$input.val().length,n=this.$input[0].selectionStart,t.isNumber(n)?n===e:document.selection?(r=document.selection.createRange(),r.moveStart("character",-e),e===r.text.length):!0},destroy:function(){this.$hint.off(".tt"),this.$input.off(".tt"),this.$hint=this.$input=this.$overflowHelper=null}}),n}(),v=function(){"use strict";function n(n){n=n||{},n.templates=n.templates||{},n.source||e.error("missing source"),n.name&&!s(n.name)&&e.error("invalid dataset name: "+n.name),this.query=null,this.highlight=!!n.highlight,this.name=n.name||t.getUniqueId(),this.source=n.source,this.displayFn=r(n.display||n.displayKey),this.templates=i(n.templates,this.displayFn),this.$el=e(f.dataset.replace("%CLASS%",this.name))}function r(e){function n(t){return t[e]}return e=e||"value",t.isFunction(e)?e:n}function i(e,n){function r(e){return"<p>"+n(e)+"</p>"}return{empty:e.empty&&t.templatify(e.empty),header:e.header&&t.templatify(e.header),footer:e.footer&&t.templatify(e.footer),suggestion:e.suggestion||r}}function s(e){return/^[_a-zA-Z0-9-]+$/.test(e)}var o="ttDataset",u="ttValue",a="ttDatum";return n.extractDatasetName=function(t){return e(t).data(o)},n.extractValue=function(t){return e(t).data(u)},n.extractDatum=function(t){return e(t).data(a)},t.mixin(n.prototype,h,{_render:function(n,r){function i(){return v.templates.empty({query:n,isEmpty:!0})}function s(){function i(t){var n;return n=e(f.suggestion).append(v.templates.suggestion(t)).data(o,v.name).data(u,v.displayFn(t)).data(a,t),n.children().each(function(){e(this).css(l.suggestionChild)}),n}var s,c;return s=e(f.suggestions).css(l.suggestions),c=t.map(r,i),s.append.apply(s,c),v.highlight&&p({className:"tt-highlight",node:s[0],pattern:n}),s}function c(){return v.templates.header({query:n,isEmpty:!d})}function h(){return v.templates.footer({query:n,isEmpty:!d})}if(this.$el){var d,v=this;this.$el.empty(),d=r&&r.length,!d&&this.templates.empty?this.$el.html(i()).prepend(v.templates.header?c():null).append(v.templates.footer?h():null):d&&this.$el.html(s()).prepend(v.templates.header?c():null).append(v.templates.footer?h():null),this.trigger("rendered")}},getRoot:function(){return this.$el},update:function(e){function t(t){n.canceled||e!==n.query||n._render(e,t)}var n=this;this.query=e,this.canceled=!1,this.source(e,t)},cancel:function(){this.canceled=!0},clear:function(){this.cancel(),this.$el.empty(),this.trigger("rendered")},isEmpty:function(){return this.$el.is(":empty")},destroy:function(){this.$el=null}}),n}(),m=function(){"use strict";function n(n){var i,s,o,u=this;n=n||{},n.menu||e.error("menu is required"),this.isOpen=!1,this.isEmpty=!0,this.datasets=t.map(n.datasets,r),i=t.bind(this._onSuggestionClick,this),s=t.bind(this._onSuggestionMouseEnter,this),o=t.bind(this._onSuggestionMouseLeave,this),this.$menu=e(n.menu).on("click.tt",".tt-suggestion",i).on("mouseenter.tt",".tt-suggestion",s).on("mouseleave.tt",".tt-suggestion",o),t.each(this.datasets,function(e){u.$menu.append(e.getRoot()),e.onSync("rendered",u._onRendered,u)})}function r(e){return new v(e)}return t.mixin(n.prototype,h,{_onSuggestionClick:function(t){this.trigger("suggestionClicked",e(t.currentTarget))},_onSuggestionMouseEnter:function(t){this._removeCursor(),this._setCursor(e(t.currentTarget),!0)},_onSuggestionMouseLeave:function(){this._removeCursor()},_onRendered:function(){function e(e){return e.isEmpty()}this.isEmpty=t.every(this.datasets,e),this.isEmpty?this._hide():this.isOpen&&this._show(),this.trigger("datasetRendered")},_hide:function(){this.$menu.hide()},_show:function(){this.$menu.css("display","block")},_getSuggestions:function(){return this.$menu.find(".tt-suggestion")},_getCursor:function(){return this.$menu.find(".tt-cursor").first()},_setCursor:function(e,t){e.first().addClass("tt-cursor"),!t&&this.trigger("cursorMoved")},_removeCursor:function(){this._getCursor().removeClass("tt-cursor")},_moveCursor:function(e){var t,n,r,i;if(this.isOpen){if(n=this._getCursor(),t=this._getSuggestions(),this._removeCursor(),r=t.index(n)+e,r=(r+1)%(t.length+1)-1,-1===r)return void this.trigger("cursorRemoved");-1>r&&(r=t.length-1),this._setCursor(i=t.eq(r)),this._ensureVisible(i)}},_ensureVisible:function(e){var t,n,r,i;t=e.position().top,n=t+e.outerHeight(!0),r=this.$menu.scrollTop(),i=this.$menu.height()+parseInt(this.$menu.css("paddingTop"),10)+parseInt(this.$menu.css("paddingBottom"),10),0>t?this.$menu.scrollTop(r+t):n>i&&this.$menu.scrollTop(r+(n-i))},close:function(){this.isOpen&&(this.isOpen=!1,this._removeCursor(),this._hide(),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,!this.isEmpty&&this._show(),this.trigger("opened"))},setLanguageDirection:function(e){this.$menu.css("ltr"===e?l.ltr:l.rtl)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getDatumForSuggestion:function(e){var t=null;return e.length&&(t={raw:v.extractDatum(e),value:v.extractValue(e),datasetName:v.extractDatasetName(e)}),t},getDatumForCursor:function(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function(){return this.getDatumForSuggestion(this._getSuggestions().first())},update:function(e){function n(t){t.update(e)}t.each(this.datasets,n)},empty:function(){function e(e){e.clear()}t.each(this.datasets,e),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){function e(e){e.destroy()}this.$menu.off(".tt"),this.$menu=null,t.each(this.datasets,e)}}),n}(),g=function(){"use strict";function n(n){var i,s,o;n=n||{},n.input||e.error("missing input"),this.isActivated=!1,this.autoselect=!!n.autoselect,this.minLength=t.isNumber(n.minLength)?n.minLength:1,this.$node=r(n.input,n.withHint),i=this.$node.find(".tt-dropdown-menu"),s=this.$node.find(".tt-input"),o=this.$node.find(".tt-hint"),s.on("blur.tt",function(e){var n,r,o;n=document.activeElement,r=i.is(n),o=i.has(n).length>0,t.isMsie()&&(r||o)&&(e.preventDefault(),e.stopImmediatePropagation(),t.defer(function(){s.focus()}))}),i.on("mousedown.tt",function(e){e.preventDefault()}),this.eventBus=n.eventBus||new c({el:s}),this.dropdown=(new m({menu:i,datasets:n.datasets})).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=(new d({input:s,hint:o})).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._setLanguageDirection()}function r(t,n){var r,s,u,a;r=e(t),s=e(f.wrapper).css(l.wrapper),u=e(f.dropdown).css(l.dropdown),a=r.clone().css(l.hint).css(i(r)),a.val("").removeData().addClass("tt-hint").removeAttr("id name placeholder required").prop("readonly",!0).attr({autocomplete:"off",spellcheck:"false",tabindex:-1}),r.data(o,{dir:r.attr("dir"),autocomplete:r.attr("autocomplete"),spellcheck:r.attr("spellcheck"),style:r.attr("style")}),r.addClass("tt-input").attr({autocomplete:"off",spellcheck:!1}).css(n?l.input:l.inputWithNoHint);try{!r.attr("dir")&&r.attr("dir","auto")}catch(c){}return r.wrap(s).parent().prepend(n?a:null).append(u)}function i(e){return{backgroundAttachment:e.css("background-attachment"),backgroundClip:e.css("background-clip"),backgroundColor:e.css("background-color"),backgroundImage:e.css("background-image"),backgroundOrigin:e.css("background-origin"),backgroundPosition:e.css("background-position"),backgroundRepeat:e.css("background-repeat"),backgroundSize:e.css("background-size")}}function s(e){var n=e.find(".tt-input");t.each(n.data(o),function(e,r){t.isUndefined(e)?n.removeAttr(r):n.attr(r,e)}),n.detach().removeData(o).removeClass("tt-input").insertAfter(e),e.remove()}var o="ttAttrs";return t.mixin(n.prototype,{_onSuggestionClicked:function(e,t){var n;(n=this.dropdown.getDatumForSuggestion(t))&&this._select(n)},_onCursorMoved:function(){var e=this.dropdown.getDatumForCursor();this.input.setInputValue(e.value,!0),this.eventBus.trigger("cursorchanged",e.raw,e.datasetName)},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint()},_onDatasetRendered:function(){this._updateHint()},_onOpened:function(){this._updateHint(),this.eventBus.trigger("opened")},_onClosed:function(){this.input.clearHint(),this.eventBus.trigger("closed")},_onFocused:function(){this.isActivated=!0,this.dropdown.open()},_onBlurred:function(){this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()},_onEnterKeyed:function(e,t){var n,r;n=this.dropdown.getDatumForCursor(),r=this.dropdown.getDatumForTopSuggestion(),n?(this._select(n),t.preventDefault()):this.autoselect&&r&&(this._select(r),t.preventDefault())},_onTabKeyed:function(e,t){var n;(n=this.dropdown.getDatumForCursor())?(this._select(n),t.preventDefault()):this._autocomplete(!0)},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(e,t){this.input.clearHintIfInvalid(),t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var e;this.dir!==(e=this.input.getLanguageDirection())&&(this.dir=e,this.$node.css("direction",e),this.dropdown.setLanguageDirection(e))},_updateHint:function(){var e,n,r,i,s,o;e=this.dropdown.getDatumForTopSuggestion(),e&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(n=this.input.getInputValue(),r=d.normalizeQuery(n),i=t.escapeRegExChars(r),s=new RegExp("^(?:"+i+")(.+$)","i"),o=s.exec(e.value),o?this.input.setHint(n+o[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(e){var t,n,r,i;t=this.input.getHint(),n=this.input.getQuery(),r=e||this.input.isCursorAtEnd(),t&&n!==t&&r&&(i=this.dropdown.getDatumForTopSuggestion(),i&&this.input.setInputValue(i.value),this.eventBus.trigger("autocompleted",i.raw,i.datasetName))},_select:function(e){this.input.setQuery(e.value),this.input.setInputValue(e.value,!0),this._setLanguageDirection(),this.eventBus.trigger("selected",e.raw,e.datasetName),this.dropdown.close(),t.defer(t.bind(this.dropdown.empty,this.dropdown))},open:function(){this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(e){e=t.toStr(e),this.isActivated?this.input.setInputValue(e):(this.input.setQuery(e),this.input.setInputValue(e,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),s(this.$node),this.$node=null}}),n}();!function(){"use strict";var n,r,i;n=e.fn.typeahead,r="ttTypeahead",i={initialize:function(n,i){function s(){var s,o,u=e(this);t.each(i,function(e){e.highlight=!!n.highlight}),o=new g({input:u,eventBus:s=new c({el:u}),withHint:t.isUndefined(n.hint)?!0:!!n.hint,minLength:n.minLength,autoselect:n.autoselect,datasets:i}),u.data(r,o)}return i=t.isArray(i)?i:[].slice.call(arguments,1),n=n||{},this.each(s)},open:function(){function t(){var t,n=e(this);(t=n.data(r))&&t.open()}return this.each(t)},close:function(){function t(){var t,n=e(this);(t=n.data(r))&&t.close()}return this.each(t)},val:function(t){function n(){var n,i=e(this);(n=i.data(r))&&n.setVal(t)}function i(e){var t,n;return(t=e.data(r))&&(n=t.getVal()),n}return arguments.length?this.each(n):i(this.first())},destroy:function(){function t(){var t,n=e(this);(t=n.data(r))&&(t.destroy(),n.removeData(r))}return this.each(t)}},e.fn.typeahead=function(t){var n;return i[t]&&"initialize"!==t?(n=this.filter(function(){return!!e(this).data(r)}),i[t].apply(n,[].slice.call(arguments,1))):i.initialize.apply(this,arguments)},e.fn.typeahead.noConflict=function(){return e.fn.typeahead=n,this}}()}(window.jQuery),define("typeahead",["jquery"],function(){}),define("search",["jquery","config","typeahead"],function(e,t){(function(e){function i(e){return e?document.createElement("a").appendChild(document.createTextNode(e)).parentNode.innerHTML:""}function s(t,n){var t=t.replace("%QUERY",encodeURIComponent(n)),r=e("label.active > input[name=smatch]").val();return r&&(t+="&match="+r),t}var n="search",r={_init:function(n){return this.each(function(){function u(e){return(e.tags||[]).push(e.name)}function a(e){function t(e){return e.split(".").pop()}function n(e){return e.split(".").slice(0,-1).join(".")}var r='<div class="tt-match file type-icon '+t(e.name)+'">'+'<span class="tt-label">'+i(n(e.name));0/0;if(e.tags){r+='<span class="tt-tags">';for(var s=0;s<e.tags.length;s++){var o=e.tags[s];r+='<span class="tt-tag">'+i(o)+"</span>"}r+="</span>"}return e.title&&(r+='<div class="tt-title file">'+i(e.title)+"</div>"),r+="</div>",r}function h(e){var t="";if(e.file!=l||e.alias!=c){var n=e.file.split(".").pop();l=e.file,c=e.alias,t='<div class="tt-file-header type-icon '+n+'">'+'<span class="tt-path-file">'+i(e.file)+"</span>"+"</div>"}return t+w(e)}function d(e){return Bloodhound.tokenizers.whitespace(e.text)}function v(e){var t="";if(e.file!=l||e.alias!=c)l=e.file,c=e.alias,t='<div class="tt-file-header type-icon '+e.ext+'">'+'<span class="tt-path-alias">'+i(e.alias)+'</span>(<span class="tt-path-file">'+i(e.file)+")</span>"+"</div>";return e.text&&(t+=w(e)),t}function m(e,n){var r=t.swish.templates,i=[],s=e.split(" "),o=[];for(var u=0;u<s.length;u++)o.push({prefix:s[u],regex:new RegExp("_"+s[u])});for(var u=0;u<r.length;u++){var a=r[u];if(a.arity!==undefined){for(var f=0,l=!0;f<o.length&&l;f++)!a.name.startsWith(o[f].prefix)&&!a.name.match(o[f].regex)&&(l=!1);l&&i.push(a)}}n(i)}function g(e){var t='<div class="tt-match predicate';return e.type&&(t+=" "+e.type),e.mode&&(t+='" title="'+e.mode),t+='"><span class="tt-label">'+i(e.name)+"/"+e.arity+"</span>",e.iso&&(t+='<span class="tt-tags">',e.iso&&(t+='<span class="tt-tag">ISO</span>'),t+="</span>"),e.summary&&(t+='<div class="tt-title file">'+i(e.summary)+"</div>"),t+="</div>",t+="</div>",t}function b(t,n){r=t;if(t.length<2)return[];var i=[],s=new RegExp("\\b"+t,"g");y=s,e(".prolog-editor").each(function(){var t=this,n=e(t).prologEditor("search",s,{max:7});for(var r=0;r<n.length;r++)n[r].editor=t,n[r].regex=y,i.push(n[r])}),n(i)}function w(e){var t=e.text,n;(n=t.search(y))>20&&(t="..."+t.slice(n-17)),t.length>80&&(t=t.substring(0,80));var r='<div class="tt-match source"><span class="tt-line"><span class="tt-lineno">'+e.line+"</span>"+'<span class="tt-text">'+i(t)+"</span>"+"</span>"+"</div>";return r}function x(e){var t=[],n=e.replace(/\s+/g," ").split(" ");for(var r=0;r<n.length;r++)t.push(E[n[r]]);return t}var n=e(this),r,o=new Bloodhound({name:"files",remote:t.http.locations.swish_typeahead+"?set=file&q=%QUERY",datumTokenizer:u,queryTokenizer:Bloodhound.tokenizers.whitespace});o.initialize();var f=new Bloodhound({name:"store_content",limit:20,cache:!1,remote:{url:t.http.locations.swish_typeahead+"?set=store_content&q=%QUERY",replace:s},datumTokenizer:d,queryTokenizer:Bloodhound.tokenizers.whitespace});f.initialize();var l=null,c=null,p=new Bloodhound({name:"source",limit:15,cache:!1,query_cache_length:1,remote:{url:t.http.locations.swish_typeahead+"?set=sources&q=%QUERY",replace:s},datumTokenizer:d,queryTokenizer:Bloodhound.tokenizers.whitespace});p.initialize();var y,E={source:{name:"source",source:b,templates:{suggestion:w}},sources:{name:"sources",source:p.ttAdapter(),templates:{suggestion:v},limit:15},files:{name:"files",source:o.ttAdapter(),templates:{suggestion:a}},store_content:{name:"store_content",source:f.ttAdapter(),templates:{suggestion:h}},predicates:{name:"predicates",source:m,templates:{suggestion:g}}},S=E.sources.source;E.sources.source=function(e,t){return l=null,c=null,y=new RegExp(RegExp.escape(e)),S(e,t)},n.typeahead({minLength:2,highlight:!0},x(n.data("search-in"))).on("typeahead:selected typeahead:autocompleted",function(r,i,s){if(i.type=="store")i.query&&(i.regex=new RegExp(RegExp.escape(i.query),"g"),i.showAllMatches=!0),e(r.target).parents(".swish").swish("playFile",i);else if(i.arity!==undefined)e(".swish-event-receiver").trigger("pldoc",i);else if(i.editor!==undefined&&i.line!==undefined)e(i.editor).prologEditor("gotoLine",i.line,{regex:i.regex,showAllMatches:!0});else if(i.alias!==undefined){var o=encodeURI(t.http.locations.swish+i.alias+"/"+i.file+"."+i.ext),u={url:o,line:i.line};i.query&&(u.regex=new RegExp(RegExp.escape(i.query),"g"),u.showAllMatches=!0),e(r.target).parents(".swish").swish("playURL",u)}else n.data("target",{datum:i,set:s}),console.log(n.data("target"))}),n.parents("form").submit(function(e){var t=n.data("target"),r=n.val();if(!t||!t.datum||t.datum.label!=r)t=r;return n.val(""),n.data("target",null),n.search("search",t),!1})})},search:function(e){alert("Full search not yet implemented\nPlease select from auto completion list")}};typeof String.prototype.startsWith!="function"&&(String.prototype.startsWith=function(e){return this.lastIndexOf(e,0)===0}),e.fn.search=function(t){if(r[t])return r[t].apply(this,Array.prototype.slice.call(arguments,1));if(typeof t=="object"||!t)return r._init.apply(this,arguments);e.error("Method "+t+" does not exist on jQuery."+n)}})(jQuery),RegExp.escape=function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}}),define("tabbed",["jquery","form","config","preferences","modal","laconic","search"],function(e,t,n,r,i){var s={tabTypes:{},type:function(e){var t=e.split(".").pop();for(var n in s.tabTypes)if(s.tabTypes.hasOwnProperty(n)&&s.tabTypes[n].dataType==t)return s.tabTypes[n]}};return function(e){function f(t,n,r){e(t).wrap('<div role="tabpanel" class="tab-pane" id="'+n+'"></div>');var i=e(t).parent();return r&&i.addClass("active"),i}function l(t,n){var r=e.el.span({"class":"glyphicon glyphicon-"+t});return n&&e(r).addClass(n),r}function c(){return"tabbed-tab-"+u++}function h(e){if(n.swish.profiles)for(var t=0;t<n.swish.profiles.length;t++)if(n.swish.profiles[t].value==e)return n.swish.profiles[t]}var o="tabbed",u=0,a={_init:function(t){return t=t||{},this.each(function(){var n=e(this),r={};r.newTab=t.newTab,r.tabTypes=t.tabTypes||s.tabTypes,n.data(o,r),n.addClass("tabbed"),n.tabbed("makeTabbed"),n.on("source",function(e,t){n.tabbed("tabFromSource",t)}),n.on("trace-location",function(e,t){n.tabbed("showTracePort",t)}),n.on("data-is-clean",function(t,r){var i=e(t.target).closest(".tab-pane"),s=n.tabbed("navTab",i.attr("id"));s&&(r?s.removeClass("data-dirty"):s.addClass("data-dirty"))})})},makeTabbed:function(){var t=this.children(),n=e.el.ul({"class":"nav nav-tabs",role:"tablist"}),r=e.el.div({"class":"tab-content"});this.prepend(r),this.prepend(n),e(n).on("click","span.xclose",function(t){var n=e(t.target).parent().attr("data-id");e(t.target).parents(".tabbed").first().tabbed("removeTab",n),t.preventDefault()}),e(n).on("click","a",function(t){e(t.target).closest("a").tab("show"),t.preventDefault()});for(var i=0;i<t.length;i++){var s=e(t[i]),o=c(),u=s.attr("data-label")||"Unknown",a=s.attr("data-close")!="disabled",h=i==t.length-1,p=this.tabbed("tabLabel",o,u,a);h&&e(p).addClass("active"),e(n).append(p),e(r).append(f(e(t[i]),o,h))}var d=e.el.a({"class":"tab-new compact",title:"Open a new tab"},l("plus"));e(n).append(e.el.li({role:"presentation"},d)),e(d).on("click",function(t){var n=e(t.target).parents(".tabbed").first();return n.tabbed("newTab"),t.preventDefault(),!1}),e(n).on("shown.bs.tab","a",function(t){var n=e(t.target).data("id");e("#"+n+" .swish-event-receiver").trigger("activate-tab")}),this.tabbed("navContent").children().length==0&&this.tabbed("newTab")},newTab:function(t){var n=this.data(o);return t==undefined&&(n.newTab?t=n.newTab():(t=this.tabbed("tabSelect"),e(t).append(this.tabbed("profileForm"),e.el.hr(),this.tabbed("searchForm")))),this.tabbed("addTab",t,{active:!0,close:!0})},tabFromSource:function(t){var n=this.find("div.tabbed-select");if(n.length>0){var r=e(n[0]).closest(".tab-pane");this.tabbed("show",r.attr("id")),typeof t=="object"&&delete t.newTab,this.tabbed("setSource",r,t)}else{var r=this.tabbed("newTab",e("<span></span>"));typeof t=="object"&&delete t.newTab,this.tabbed("setSource",r,t)||this.tabbed("removeTab",r.attr("id"))}return this},setSource:function(t,n){if(typeof n=="object"&&(n.meta&&n.meta.name||n.url)){var r=n.meta&&n.meta.name?n.meta.name:n.url,i=s.type(r),o=e.el.div();return t.html(""),t.tabbed("title",i.label,i.dataType),t.append(o),i.create(o),e(o).trigger("source",n),!0}return!1},showTracePort:function(t){if(t&&t.source&&t.source.file){var n=t.source.file,r,i,s;function o(){var e;if(n.startsWith("pengine://"))return n.split("/")[2]}function u(){var e="swish://";if(n.startsWith(e))return n.slice(e.length)}if(r=o())s=this.find(".prolog-editor").filter(function(t,n){return e(n).prologEditor("pengine",{has:r})});else if(i=u()){s=this.find(".storage").storage("match",{file:i});if(!s)return this.closest(".swish").swish("playFile",{file:i,newTab:!0,noHistory:!0,prompt:t}),this}s&&s.prologEditor("showTracePort",t)}return this},addTab:function(t,n){var r=this.tabbed("navTabs"),i=c(),s=f(t,i,n.close);this.tabbed("navContent").append(s);var o=this.tabbed("tabLabel",i,"New tab",close,"select"),u=r.find("a.tab-new");return u.length==1?e(o).insertBefore(u.first().parent()):r.append(o),n.active&&e(o).find("a").first().tab("show"),s},removeTab:function(t){var n=this.tabbed("navTabs").find("a[data-id='"+t+"']").parent(),r=e("#"+t),i;if(r.find(".storage").storage("unload","closetab")==0)return;r.is(":visible")&&(i=n.prev()||n.next()),n.remove(),r.find(".prolog-runner").prologRunner("close"),r.remove(),i&&i.length>0?i.find("a").first().tab("show"):this.tabbed("navContent").children().length==0&&this.tabbed("newTab")},show:function(e){var t=this.tabbed("navTab",e);if(t)return t.tab("show"),this},tabLabel:function(t,n,r,i){var s;r&&(s=l("remove","xclose"),e(s).attr("title","Close tab")),i=i||"pl";var o=e.el.a({"class":"compact",href:"#"+t,"data-id":t},e.el.span({"class":"tab-icon type-icon "+i}),e.el.span({"class":"tab-dirty",title:"Tab is modified. See File/Save and Edit/View changes"}),e.el.span({"class":"tab-title"},n),s),u=e.el.li({role:"presentation"},o);return u},title:function(t,n){var r=this.closest(".tab-pane");r.length==0&&(fsorg=this.data("fullscreen_origin"),fsorg&&(r=e(fsorg).closest(".tab-pane")));var i=r.closest(".tabbed"),s=r.attr("id"),o=i.tabbed("navTabs"),u=o.find("a[data-id="+s+"]");u.find(".tab-title").text(t);if(n){var a=u.find(".tab-icon");a.removeClass(),a.addClass("tab-icon type-icon "+n)}return i},tabSelect:function(){var t=this.data(o),n=e.el.div({"class":"tabbed-select"},e.el.div({"class":"tabbed-create"},e.el.label({"class":"tabbed-left"},"Create a "),g=e.el.div({"class":"btn-group",role:"group"}),e.el.label({"class":"tabbed-right"},"here"))),u=[];for(var a in t.tabTypes)t.tabTypes.hasOwnProperty(a)&&t.tabTypes[a].order&&u.push(a);u.sort(function(e,n){return t.tabTypes[e].order-t.tabTypes[n].order});for(var f=0;f<u.length;f++){var l=t.tabTypes[u[f]];e(g).append(e.el.button({type:"button","class":"btn btn-primary","data-type":l.typeName,"data-ext":l.dataType},l.label))}return e(g).on("click",".btn",function(t){var n=e(t.target).data("type"),i=e(t.target).closest(".tab-pane"),o=e.el.div(),u=e.extend({},s.tabTypes[n]),a=i.find("label.active > input[name=profile]").val();a&&(u.profile=a,u.value=i.tabbed("profileValue",a,s.tabTypes[n].dataType),u.value!=undefined&&r.setVal("default-profile",a)),i.html(""),i.tabbed("title",u.label,u.dataType),i.append(o),s.tabTypes[n].create(o,u)}),e(g).addClass("swish-event-receiver"),e(g).on("download save fileInfo print",function(t){var n=e(t.target).closest(".tab-pane");if(n.is(":visible")){var r={download:"you wish to download",save:"you wish to save",print:"you wish to print",fileInfo:"for which you want details"};i.alert("Please activate the tab "+r[t.type]),t.stopPropagation()}}),e(g).on("profile-selected",function(t,n){e(t.target).find("button").each(function(){e(this).prop("disabled",n.type.indexOf(e(this).data("ext"))<0)})}),n},searchForm:function(){var n=e.el.form({"class":"search-sources"},e.el.label({"class":"control-label"},"Open source file containing"),e.el.div({"class":"input-group"},e.el.input({type:"text","class":"form-control search",placeholder:"Search sources","data-search-in":"sources store_content"}),e.el.div({"class":"input-group-btn"},e.el.button({"class":"btn btn-default",type:"submit"},e.el.i({"class":"glyphicon glyphicon-search"})))),e.el.div({"class":"input-group"},t.fields.radio("smatch",[{label:"Start of line",value:"sol"},{label:"Start of word",value:"sow",active:!0},{label:"Anywhere",value:"anywhere"}])));return e(n).find("input.search").search(),n},profileForm:function(){if(n.swish.profiles&&n.swish.profiles.length>0){var i;for(var s=0;s<n.swish.profiles.length;s++)delete n.swish.profiles[s].active;if(i=r.getVal("default-profile"))for(var s=0;s<n.swish.profiles.length;s++)n.swish.profiles[s].value==i&&(n.swish.profiles[s].active=!0);else n.swish.profiles[0].active=!0;var o=e.el.div({"class":"tabbed-profile"},e.el.label({"class":"tabbed-left"},"based on"),e.el.div({"class":"input-group select-profile"},t.fields.radio("profile",n.swish.profiles)),e.el.label({"class":"tabbed-right"},"profile"));return e(o).on("click",function(t){var n=e(t.target).find("input").val(),r=h(n);e(t.target).closest(".tab-pane").find(".tabbed-create .btn-group").trigger("profile-selected",r)}),o}},profileValue:function(t,r){var s=n.http.locations.swish+"profile/"+t+"."+r;return e.ajax({url:s,type:"GET",data:{format:"raw"},async:!1,error:function(e){i.ajaxError(e)}}).responseText},navTabs:function(){return this.find("ul.nav-tabs").first()},navTab:function(e){var t=this.find("ul.nav-tabs").first().find("a[data-id='"+e+"']");if(t.length>0)return t},navContent:function(){return this.find("div.tab-content").first()}};e.fn.tabbed=function(t){if(a[t])return a[t].apply(this,Array.prototype.slice.call(arguments,1));if(typeof t=="object"||!t)return a._init.apply(this,arguments);e.error("Method "+t+" does not exist on jQuery."+o)}}(jQuery),s}),define("prolog",["jquery","config","form","preferences"],function(e,t,n,r){var i={downloadCSV:function(s,o,u){u=u||{},u.disposition=u.disposition||u.filename||"swish-results.csv";if(u.projection){var a,f=u.format||"prolog";function l(t,n){return e.el.input({type:"hidden",name:t,value:n})}u.distinct&&(s="distinct(["+u.projection+"],("+s+"))");if(u.limit){var c=parseInt(u.limit.replace(/[ _]/g,""));if(typeof c!="number")return alert("Not an integer: ",u.limit),!1;s="limit("+c+",("+s+"))"}a=e.el.form({method:"POST",action:t.http.locations.pengines+"/create",target:"_blank"},l("format","csv"),l("chunk","10"),l("solutions","all"),l("disposition",u.disposition),l("application","swish"),l("ask",s),l("src_text",o),l("template",f+"("+u.projection+")")),console.log(a),e("body").append(a),a.submit(),e(a).remove()}else{var h=e().prologEditor("variables",s),p=u.disposition;p.indexOf(".")<0&&(p+=".csv");function d(){var u=e.el.form({"class":"form-horizontal"},n.fields.projection(h.join(",")),n.fields.csvFormat(t.swish.csv_formats,r.getVal("csvFormat")),n.fields.limit("10 000",!1),n.fields.filename(p,2),n.fields.buttons({label:"Download CSV",action:function(e,n){return e.preventDefault(),t.swish.csv_formats.length>1&&r.setVal("csvFormat",n.format),i.downloadCSV(s,o,n),!1}}));this.append(u)}n.showDialog({title:"Download query results as CSV",body:d})}return this},trimFullStop:function(e){return e.replace(/\.\s*$/m,"")},options:{application:"swish",chunk:5}};return e.swish=function(e){for(var t in i.options)i.options.hasOwnProperty(t)&&!e.hasOwnProperty(t)&&(e[t]=i.options[t]);return new Pengine(e)},i}),function(e){if(typeof exports=="object"&&typeof module=="object")module.exports=e();else{if(typeof define=="function"&&define.amd)return define("cm/lib/codemirror",[],e);(this||window).CodeMirror=e()}}(function(){"use strict";function T(e,t){if(!(this instanceof T))return new T(e,t);this.options=t=t?du(t):{},du(Mi,t,!1),j(t);var n=t.value;typeof n=="string"&&(n=new so(n,t.mode,null,t.lineSeparator)),this.doc=n;var r=new T.inputStyles[t.inputStyle](this),i=this.display=new N(e,n,r);i.wrapper.CodeMirror=this,D(this),M(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),t.autofocus&&!v&&i.input.focus(),R(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,selectingText:!1,draggingText:!1,highlight:new ru,keySeq:null,specialChars:null};var a=this;s&&o<11&&setTimeout(function(){a.display.input.reset(!0)},20),wr(this),Pu(),Yn(this),this.curOp.forceUpdate=!0,fo(this,n),t.autofocus&&!v||a.hasFocus()?setTimeout(vu(ni,this),20):ri(this);for(var f in _i)_i.hasOwnProperty(f)&&_i[f](this,t[f],Pi);V(this),t.finishInit&&t.finishInit(this);for(var l=0;l<Fi.length;++l)Fi[l](this);er(this),u&&t.lineWrapping&&getComputedStyle(i.lineDiv).textRendering=="optimizelegibility"&&(i.lineDiv.style.textRendering="auto")}function N(e,t,r){var i=this;this.input=r,i.scrollbarFiller=Su("div",null,"CodeMirror-scrollbar-filler"),i.scrollbarFiller.setAttribute("cm-not-content","true"),i.gutterFiller=Su("div",null,"CodeMirror-gutter-filler"),i.gutterFiller.setAttribute("cm-not-content","true"),i.lineDiv=Su("div",null,"CodeMirror-code"),i.selectionDiv=Su("div",null,null,"position: relative; z-index: 1"),i.cursorDiv=Su("div",null,"CodeMirror-cursors"),i.measure=Su("div",null,"CodeMirror-measure"),i.lineMeasure=Su("div",null,"CodeMirror-measure"),i.lineSpace=Su("div",[i.measure,i.lineMeasure,i.selectionDiv,i.cursorDiv,i.lineDiv],null,"position: relative; outline: none"),i.mover=Su("div",[Su("div",[i.lineSpace],"CodeMirror-lines")],null,"position: relative"),i.sizer=Su("div",[i.mover],"CodeMirror-sizer"),i.sizerWidth=null,i.heightForcer=Su("div",null,null,"position: absolute; height: "+Yo+"px; width: 1px;"),i.gutters=Su("div",null,"CodeMirror-gutters"),i.lineGutter=null,i.scroller=Su("div",[i.sizer,i.heightForcer,i.gutters],"CodeMirror-scroll"),i.scroller.setAttribute("tabIndex","-1"),i.wrapper=Su("div",[i.scrollbarFiller,i.gutterFiller,i.scroller],"CodeMirror"),s&&o<8&&(i.gutters.style.zIndex=-1,i.scroller.style.paddingRight=0),!u&&(!n||!v)&&(i.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(i.wrapper):e(i.wrapper)),i.viewFrom=i.viewTo=t.first,i.reportedViewFrom=i.reportedViewTo=t.first,i.view=[],i.renderedView=null,i.externalMeasured=null,i.viewOffset=0,i.lastWrapHeight=i.lastWrapWidth=0,i.updateLineNumbers=null,i.nativeBarWidth=i.barHeight=i.barWidth=0,i.scrollbarsClipped=!1,i.lineNumWidth=i.lineNumInnerWidth=i.lineNumChars=null,i.alignWidgets=!1,i.cachedCharWidth=i.cachedTextHeight=i.cachedPaddingH=null,i.maxLine=null,i.maxLineLength=0,i.maxLineChanged=!1,i.wheelDX=i.wheelDY=i.wheelStartX=i.wheelStartY=null,i.shift=!1,i.selForContextMenu=null,i.activeTouch=null,r.init(i)}function C(e){e.doc.mode=T.getMode(e.options,e.doc.modeOption),k(e)}function k(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.frontier=e.doc.first,pn(e,100),e.state.modeGen++,e.curOp&&pr(e)}function L(e){e.options.lineWrapping?(Ou(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(Au(e.display.wrapper,"CodeMirror-wrap"),B(e)),O(e),pr(e),Bn(e),setTimeout(function(){U(e)},100)}function A(e){var t=Jn(e.display),n=e.options.lineWrapping,r=n&&Math.max(5,e.display.scroller.clientWidth/Kn(e.display)-3);return function(i){if(ks(e.doc,i))return 0;var s=0;if(i.widgets)for(var o=0;o<i.widgets.length;o++)i.widgets[o].height&&(s+=i.widgets[o].height);return n?s+(Math.ceil(i.text.length/r)||1)*t:s+t}}function O(e){var t=e.doc,n=A(e);t.iter(function(e){var t=n(e);t!=e.height&&po(e,t)})}function M(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),Bn(e)}function _(e){D(e),pr(e),setTimeout(function(){X(e)},20)}function D(e){var t=e.display.gutters,n=e.options.gutters;Tu(t);for(var r=0;r<n.length;++r){var i=n[r],s=t.appendChild(Su("div",null,"CodeMirror-gutter "+i));i=="CodeMirror-linenumbers"&&(e.display.lineGutter=s,s.style.width=(e.display.lineNumWidth||1)+"px")}t.style.display=r?"":"none",P(e)}function P(e){var t=e.display.gutters.offsetWidth;e.display.sizer.style.marginLeft=t+"px"}function H(e){if(e.height==0)return 0;var t=e.text.length,n,r=e;while(n=ws(r)){var i=n.find(0,!0);r=i.from.line,t+=i.from.ch-i.to.ch}r=e;while(n=Es(r)){var i=n.find(0,!0);t-=r.text.length-i.from.ch,r=i.to.line,t+=r.text.length-i.to.ch}return t}function B(e){var t=e.display,n=e.doc;t.maxLine=lo(n,n.first),t.maxLineLength=H(t.maxLine),t.maxLineChanged=!0,n.iter(function(e){var n=H(e);n>t.maxLineLength&&(t.maxLineLength=n,t.maxLine=e)})}function j(e){var t=lu(e.gutters,"CodeMirror-linenumbers");t==-1&&e.lineNumbers?e.gutters=e.gutters.concat(["CodeMirror-linenumbers"]):t>-1&&!e.lineNumbers&&(e.gutters=e.gutters.slice(0),e.gutters.splice(t,1))}function F(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+yn(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+wn(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}function I(e,t,n){this.cm=n;var r=this.vert=Su("div",[Su("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=Su("div",[Su("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");e(r),e(i),qo(r,"scroll",function(){r.clientHeight&&t(r.scrollTop,"vertical")}),qo(i,"scroll",function(){i.clientWidth&&t(i.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,s&&o<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")}function q(){}function R(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&Au(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new T.scrollbarModel[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),qo(t,"mousedown",function(){e.state.focused&&setTimeout(function(){e.display.input.focus()},0)}),t.setAttribute("cm-not-content","true")},function(t,n){n=="horizontal"?Ir(e,t):Fr(e,t)},e),e.display.scrollbars.addClass&&Ou(e.display.wrapper,e.display.scrollbars.addClass)}function U(e,t){t||(t=F(e));var n=e.display.barWidth,r=e.display.barHeight;z(e,t);for(var i=0;i<4&&n!=e.display.barWidth||r!=e.display.barHeight;i++)n!=e.display.barWidth&&e.options.lineWrapping&&tt(e),z(e,F(e)),n=e.display.barWidth,r=e.display.barHeight}function z(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=r.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+"px",n.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=r.bottom+"px",n.scrollbarFiller.style.width=r.right+"px"):n.scrollbarFiller.style.display="",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=r.bottom+"px",n.gutterFiller.style.width=t.gutterWidth+"px"):n.gutterFiller.style.display=""}function W(e,t,n){var r=n&&n.top!=null?Math.max(0,n.top):e.scroller.scrollTop;r=Math.floor(r-gn(e));var i=n&&n.bottom!=null?n.bottom:r+e.wrapper.clientHeight,s=mo(t,r),o=mo(t,i);if(n&&n.ensure){var u=n.ensure.from.line,a=n.ensure.to.line;u<s?(s=u,o=mo(t,go(lo(t,u))+e.wrapper.clientHeight)):Math.min(a,t.lastLine())>=o&&(s=mo(t,go(lo(t,a))-e.wrapper.clientHeight),o=a)}return{from:s,to:Math.max(o,s+1)}}function X(e){var t=e.display,n=t.view;if(!t.alignWidgets&&(!t.gutters.firstChild||!e.options.fixedGutter))return;var r=J(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,s=r+"px";for(var o=0;o<n.length;o++)if(!n[o].hidden){e.options.fixedGutter&&n[o].gutter&&(n[o].gutter.style.left=s);var u=n[o].alignable;if(u)for(var a=0;a<u.length;a++)u[a].style.left=s}e.options.fixedGutter&&(t.gutters.style.left=r+i+"px")}function V(e){if(!e.options.lineNumbers)return!1;var t=e.doc,n=$(e.options,t.first+t.size-1),r=e.display;if(n.length!=r.lineNumChars){var i=r.measure.appendChild(Su("div",[Su("div",n)],"CodeMirror-linenumber CodeMirror-gutter-elt")),s=i.firstChild.offsetWidth,o=i.offsetWidth-s;return r.lineGutter.style.width="",r.lineNumInnerWidth=Math.max(s,r.lineGutter.offsetWidth-o)+1,r.lineNumWidth=r.lineNumInnerWidth+o,r.lineNumChars=r.lineNumInnerWidth?n.length:-1,r.lineGutter.style.width=r.lineNumWidth+"px",P(e),!0}return!1}function $(e,t){return String(e.lineNumberFormatter(t+e.firstLineNumber))}function J(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function K(e,t,n){var r=e.display;this.viewport=t,this.visible=W(r,e.doc,t),this.editorIsHidden=!r.wrapper.offsetWidth,this.wrapperHeight=r.wrapper.clientHeight,this.wrapperWidth=r.wrapper.clientWidth,this.oldDisplayWidth=En(e),this.force=n,this.dims=rt(e),this.events=[]}function Q(e){var t=e.display;!t.scrollbarsClipped&&t.scroller.offsetWidth&&(t.nativeBarWidth=t.scroller.offsetWidth-t.scroller.clientWidth,t.heightForcer.style.height=wn(e)+"px",t.sizer.style.marginBottom=-t.nativeBarWidth+"px",t.sizer.style.borderRightWidth=wn(e)+"px",t.scrollbarsClipped=!0)}function G(e,t){var n=e.display,r=e.doc;if(t.editorIsHidden)return vr(e),!1;if(!t.force&&t.visible.from>=n.viewFrom&&t.visible.to<=n.viewTo&&(n.updateLineNumbers==null||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&br(e)==0)return!1;V(e)&&(vr(e),t.dims=rt(e));var i=r.first+r.size,s=Math.max(t.visible.from-e.options.viewportMargin,r.first),o=Math.min(i,t.visible.to+e.options.viewportMargin);n.viewFrom<s&&s-n.viewFrom<20&&(s=Math.max(r.first,n.viewFrom)),n.viewTo>o&&n.viewTo-o<20&&(o=Math.min(i,n.viewTo)),x&&(s=Ns(e.doc,s),o=Cs(e.doc,o));var u=s!=n.viewFrom||o!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;yr(e,s,o),n.viewOffset=go(lo(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+"px";var a=br(e);if(!u&&a==0&&!t.force&&n.renderedView==n.view&&(n.updateLineNumbers==null||n.updateLineNumbers>=n.viewTo))return!1;var f=ku();return a>4&&(n.lineDiv.style.display="none"),it(e,n.updateLineNumbers,t.dims),a>4&&(n.lineDiv.style.display=""),n.renderedView=n.view,f&&ku()!=f&&f.offsetHeight&&f.focus(),Tu(n.cursorDiv),Tu(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,u&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,pn(e,400)),n.updateLineNumbers=null,!0}function Y(e,t){var n=t.viewport;for(var r=!0;;r=!1){if(!r||!e.options.lineWrapping||t.oldDisplayWidth==En(e)){n&&n.top!=null&&(n={top:Math.min(e.doc.height+yn(e.display)-Sn(e),n.top)}),t.visible=W(e.display,e.doc,n);if(t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break}if(!G(e,t))break;tt(e);var i=F(e);an(e),U(e,i),et(e,i)}t.signal(e,"update",e);if(e.display.viewFrom!=e.display.reportedViewFrom||e.display.viewTo!=e.display.reportedViewTo)t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo}function Z(e,t){var n=new K(e,t);if(G(e,n)){tt(e),Y(e,n);var r=F(e);an(e),U(e,r),et(e,r),n.finish()}}function et(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+wn(e)+"px"}function tt(e){var t=e.display,n=t.lineDiv.offsetTop;for(var r=0;r<t.view.length;r++){var i=t.view[r],u;if(i.hidden)continue;if(s&&o<8){var a=i.node.offsetTop+i.node.offsetHeight;u=a-n,n=a}else{var f=i.node.getBoundingClientRect();u=f.bottom-f.top}var l=i.line.height-u;u<2&&(u=Jn(t));if(l>.001||l<-0.001){po(i.line,u),nt(i.line);if(i.rest)for(var c=0;c<i.rest.length;c++)nt(i.rest[c])}}}function nt(e){if(e.widgets)for(var t=0;t<e.widgets.length;++t)e.widgets[t].height=e.widgets[t].node.parentNode.offsetHeight}function rt(e){var t=e.display,n={},r={},i=t.gutters.clientLeft;for(var s=t.gutters.firstChild,o=0;s;s=s.nextSibling,++o)n[e.options.gutters[o]]=s.offsetLeft+s.clientLeft+i,r[e.options.gutters[o]]=s.clientWidth;return{fixedPos:J(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function it(e,t,n){function a(t){var n=t.nextSibling;return u&&m&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),n}var r=e.display,i=e.options.lineNumbers,s=r.lineDiv,o=s.firstChild,f=r.view,l=r.viewFrom;for(var c=0;c<f.length;c++){var h=f[c];if(!h.hidden)if(!h.node||h.node.parentNode!=s){var p=pt(e,h,l,n);s.insertBefore(p,o)}else{while(o!=h.node)o=a(o);var d=i&&t!=null&&t<=l&&h.lineNumber;h.changes&&(lu(h.changes,"gutter")>-1&&(d=!1),st(e,h,l,n)),d&&(Tu(h.lineNumber),h.lineNumber.appendChild(document.createTextNode($(e.options,l)))),o=h.node.nextSibling}l+=h.size}while(o)o=a(o)}function st(e,t,n,r){for(var i=0;i<t.changes.length;i++){var s=t.changes[i];s=="text"?ft(e,t):s=="gutter"?ct(e,t,n,r):s=="class"?lt(t):s=="widget"&&ht(e,t,r)}t.changes=null}function ot(e){return e.node==e.text&&(e.node=Su("div",null,null,"position: relative"),e.text.parentNode&&e.text.parentNode.replaceChild(e.node,e.text),e.node.appendChild(e.text),s&&o<8&&(e.node.style.zIndex=2)),e.node}function ut(e){var t=e.bgClass?e.bgClass+" "+(e.line.bgClass||""):e.line.bgClass;t&&(t+=" CodeMirror-linebackground");if(e.background)t?e.background.className=t:(e.background.parentNode.removeChild(e.background),e.background=null);else if(t){var n=ot(e);e.background=n.insertBefore(Su("div",null,t),n.firstChild)}}function at(e,t){var n=e.display.externalMeasured;return n&&n.line==t.line?(e.display.externalMeasured=null,t.measure=n.measure,n.built):$s(e,t)}function ft(e,t){var n=t.text.className,r=at(e,t);t.text==t.node&&(t.node=r.pre),t.text.parentNode.replaceChild(r.pre,t.text),t.text=r.pre,r.bgClass!=t.bgClass||r.textClass!=t.textClass?(t.bgClass=r.bgClass,t.textClass=r.textClass,lt(t)):n&&(t.text.className=n)}function lt(e){ut(e),e.line.wrapClass?ot(e).className=e.line.wrapClass:e.node!=e.text&&(e.node.className="");var t=e.textClass?e.textClass+" "+(e.line.textClass||""):e.line.textClass;e.text.className=t||""}function ct(e,t,n,r){t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null),t.gutterBackground&&(t.node.removeChild(t.gutterBackground),t.gutterBackground=null);if(t.line.gutterClass){var i=ot(t);t.gutterBackground=Su("div",null,"CodeMirror-gutter-background "+t.line.gutterClass,"left: "+(e.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px; width: "+r.gutterTotalWidth+"px"),i.insertBefore(t.gutterBackground,t.text)}var s=t.line.gutterMarkers;if(e.options.lineNumbers||s){var i=ot(t),o=t.gutter=Su("div",null,"CodeMirror-gutter-wrapper","left: "+(e.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px");e.display.input.setUneditable(o),i.insertBefore(o,t.text),t.line.gutterClass&&(o.className+=" "+t.line.gutterClass),e.options.lineNumbers&&(!s||!s["CodeMirror-linenumbers"])&&(t.lineNumber=o.appendChild(Su("div",$(e.options,n),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+r.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+e.display.lineNumInnerWidth+"px")));if(s)for(var u=0;u<e.options.gutters.length;++u){var a=e.options.gutters[u],f=s.hasOwnProperty(a)&&s[a];f&&o.appendChild(Su("div",[f],"CodeMirror-gutter-elt","left: "+r.gutterLeft[a]+"px; width: "+r.gutterWidth[a]+"px"))}}}function ht(e,t,n){t.alignable&&(t.alignable=null);for(var r=t.node.firstChild,i;r;r=i){var i=r.nextSibling;r.className=="CodeMirror-linewidget"&&t.node.removeChild(r)}dt(e,t,n)}function pt(e,t,n,r){var i=at(e,t);return t.text=t.node=i.pre,i.bgClass&&(t.bgClass=i.bgClass),i.textClass&&(t.textClass=i.textClass),lt(t),ct(e,t,n,r),dt(e,t,r),t.node}function dt(e,t,n){vt(e,t.line,t,n,!0);if(t.rest)for(var r=0;r<t.rest.length;r++)vt(e,t.rest[r],t,n,!1)}function vt(e,t,n,r,i){if(!t.widgets)return;var s=ot(n);for(var o=0,u=t.widgets;o<u.length;++o){var a=u[o],f=Su("div",[a.node],"CodeMirror-linewidget");a.handleMouseEvents||f.setAttribute("cm-ignore-events","true"),mt(a,f,n,r),e.display.input.setUneditable(f),i&&a.above?s.insertBefore(f,n.gutter||n.text):s.appendChild(f),Vo(a,"redraw")}}function mt(e,t,n,r){if(e.noHScroll){(n.alignable||(n.alignable=[])).push(t);var i=r.wrapperWidth;t.style.left=r.fixedPos+"px",e.coverGutter||(i-=r.gutterTotalWidth,t.style.paddingLeft=r.gutterTotalWidth+"px"),t.style.width=i+"px"}e.coverGutter&&(t.style.zIndex=5,t.style.position="relative",e.noHScroll||(t.style.marginLeft=-r.gutterTotalWidth+"px"))}function bt(e){return gt(e.line,e.ch)}function wt(e,t){return yt(e,t)<0?t:e}function Et(e,t){return yt(e,t)<0?e:t}function St(e){e.state.focused||(e.display.input.focus(),ni(e))}function Tt(e,t,n,r,i){var s=e.doc;e.display.shift=!1,r||(r=s.sel);var o=e.state.pasteIncoming||i=="paste",u=s.splitLines(t),a=null;if(o&&r.ranges.length>1)if(xt&&xt.text.join("\n")==t){if(r.ranges.length%xt.text.length==0){a=[];for(var f=0;f<xt.text.length;f++)a.push(s.splitLines(xt.text[f]))}}else u.length==r.ranges.length&&(a=cu(u,function(e){return[e]}));for(var f=r.ranges.length-1;f>=0;f--){var l=r.ranges[f],c=l.from(),h=l.to();l.empty()&&(n&&n>0?c=gt(c.line,c.ch-n):e.state.overwrite&&!o?h=gt(h.line,Math.min(lo(s,h.line).text.length,h.ch+au(u).length)):xt&&xt.lineWise&&xt.text.join("\n")==t&&(c=h=gt(c.line,0)));var p=e.curOp.updateInput,d={from:c,to:h,text:a?a[f%a.length]:u,origin:i||(o?"paste":e.state.cutIncoming?"cut":"+input")};hi(e.doc,d),Vo(e,"inputRead",e,d)}t&&!o&&Ct(e,t),Ti(e),e.curOp.updateInput=p,e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=!1}function Nt(e,t){var n=e.clipboardData&&e.clipboardData.getData("text/plain");if(n)return e.preventDefault(),!t.isReadOnly()&&!t.options.disableInput&&ur(t,function(){Tt(t,n,0,null,"paste")}),!0}function Ct(e,t){if(!e.options.electricChars||!e.options.smartIndent)return;var n=e.doc.sel;for(var r=n.ranges.length-1;r>=0;r--){var i=n.ranges[r];if(i.head.ch>100||r&&n.ranges[r-1].head.line==i.head.line)continue;var s=e.getModeAt(i.head),o=!1;if(s.electricChars){for(var u=0;u<s.electricChars.length;u++)if(t.indexOf(s.electricChars.charAt(u))>-1){o=Ci(e,i.head.line,"smart");break}}else s.electricInput&&s.electricInput.test(lo(e.doc,i.head.line).text.slice(0,i.head.ch))&&(o=Ci(e,i.head.line,"smart"));o&&Vo(e,"electricInput",e,i.head.line)}}function kt(e){var t=[],n=[];for(var r=0;r<e.doc.sel.ranges.length;r++){var i=e.doc.sel.ranges[r].head.line,s={anchor:gt(i,0),head:gt(i+1,0)};n.push(s),t.push(e.getRange(s.anchor,s.head))}return{text:t,ranges:n}}function Lt(e){e.setAttribute("autocorrect","off"),e.setAttribute("autocapitalize","off"),e.setAttribute("spellcheck","false")}function At(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new ru,this.inaccurateSelection=!1,this.hasSelection=!1,this.composing=null}function Ot(){var e=Su("textarea",null,null,"position: absolute; padding: 0; width: 1px; height: 1em; outline: none"),t=Su("div",[e],null,"overflow: hidden; position: relative; width: 3px; height: 0px;");return u?e.style.width="1000px":e.setAttribute("wrap","off"),d&&(e.style.border="1px solid black"),Lt(e),t}function Mt(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new ru,this.gracePeriod=!1}function _t(e,t){var n=kn(e,t.line);if(!n||n.hidden)return null;var r=lo(e.doc,t.line),i=Tn(n,r,t.line),s=yo(r),o="left";if(s){var u=ra(s,t.ch);o=u%2?"right":"left"}var a=Mn(i.map,t.ch,o);return a.offset=a.collapse=="right"?a.end:a.start,a}function Dt(e,t){return t&&(e.bad=!0),e}function Pt(e,t,n){var r;if(t==e.display.lineDiv){r=e.display.lineDiv.childNodes[n];if(!r)return Dt(e.clipPos(gt(e.display.viewTo-1)),!0);t=null,n=0}else for(r=t;;r=r.parentNode){if(!r||r==e.display.lineDiv)return null;if(r.parentNode&&r.parentNode==e.display.lineDiv)break}for(var i=0;i<e.display.view.length;i++){var s=e.display.view[i];if(s.node==r)return Ht(s,t,n)}}function Ht(e,t,n){function l(t,n,r){for(var i=-1;i<(f?f.length:0);i++){var s=i<0?a.map:f[i];for(var o=0;o<s.length;o+=3){var u=s[o+2];if(u==t||u==n){var l=vo(i<0?e.line:e.rest[i]),c=s[o]+r;if(r<0||u!=t)c=s[o+(r?1:0)];return gt(l,c)}}}}var r=e.text.firstChild,i=!1;if(!t||!Cu(r,t))return Dt(gt(vo(e.line),0),!0);if(t==r){i=!0,t=r.childNodes[n],n=0;if(!t){var s=e.rest?au(e.rest):e.line;return Dt(gt(vo(s),s.text.length),i)}}var o=t.nodeType==3?t:null,u=t;!o&&t.childNodes.length==1&&t.firstChild.nodeType==3&&(o=t.firstChild,n&&(n=o.nodeValue.length));while(u.parentNode!=r)u=u.parentNode;var a=e.measure,f=a.maps,c=l(o,u,n);if(c)return Dt(c,i);for(var h=u.nextSibling,p=o?o.nodeValue.length-n:0;h;h=h.nextSibling){c=l(h,h.firstChild,0);if(c)return Dt(gt(c.line,c.ch-p),i);p+=h.textContent.length}for(var d=u.previousSibling,p=n;d;d=d.previousSibling){c=l(d,d.firstChild,-1);if(c)return Dt(gt(c.line,c.ch+p),i);p+=h.textContent.length}}function Bt(e,t,n,r,i){function a(e){return function(t){return t.id==e}}function f(t){if(t.nodeType==1){var n=t.getAttribute("cm-text");if(n!=null){n==""&&(n=t.textContent.replace(/\u200b/g,"")),s+=n;return}var l=t.getAttribute("cm-marker"),c;if(l){var h=e.findMarks(gt(r,0),gt(i+1,0),a(+l));h.length&&(c=h[0].find())&&(s+=co(e.doc,c.from,c.to).join(u));return}if(t.getAttribute("contenteditable")=="false")return;for(var p=0;p<t.childNodes.length;p++)f(t.childNodes[p]);/^(pre|div|p)$/i.test(t.nodeName)&&(o=!0)}else if(t.nodeType==3){var d=t.nodeValue;if(!d)return;o&&(s+=u,o=!1),s+=d}}var s="",o=!1,u=e.doc.lineSeparator();for(;;){f(t);if(t==n)break;t=t.nextSibling}return s}function jt(e,t){this.ranges=e,this.primIndex=t}function Ft(e,t){this.anchor=e,this.head=t}function It(e,t){var n=e[t];e.sort(function(e,t){return yt(e.from(),t.from())}),t=lu(e,n);for(var r=1;r<e.length;r++){var i=e[r],s=e[r-1];if(yt(s.to(),i.from())>=0){var o=Et(s.from(),i.from()),u=wt(s.to(),i.to()),a=s.empty()?i.from()==i.head:s.from()==s.head;r<=t&&--t,e.splice(--r,2,new Ft(a?u:o,a?o:u))}}return new jt(e,t)}function qt(e,t){return new jt([new Ft(e,t||e)],0)}function Rt(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function Ut(e,t){if(t.line<e.first)return gt(e.first,0);var n=e.first+e.size-1;return t.line>n?gt(n,lo(e,n).text.length):zt(t,lo(e,t.line).text.length)}function zt(e,t){var n=e.ch;return n==null||n>t?gt(e.line,t):n<0?gt(e.line,0):e}function Wt(e,t){return t>=e.first&&t<e.first+e.size}function Xt(e,t){for(var n=[],r=0;r<t.length;r++)n[r]=Ut(e,t[r]);return n}function Vt(e,t,n,r){if(e.cm&&e.cm.display.shift||e.extend){var i=t.anchor;if(r){var s=yt(n,i)<0;s!=yt(r,i)<0?(i=n,n=r):s!=yt(n,r)<0&&(n=r)}return new Ft(i,n)}return new Ft(r||n,n)}function $t(e,t,n,r){Zt(e,new jt([Vt(e,e.sel.primary(),t,n)],0),r)}function Jt(e,t,n){for(var r=[],i=0;i<e.sel.ranges.length;i++)r[i]=Vt(e,e.sel.ranges[i],t[i],null);var s=It(r,e.sel.primIndex);Zt(e,s,n)}function Kt(e,t,n,r){var i=e.sel.ranges.slice(0);i[t]=n,Zt(e,It(i,e.sel.primIndex),r)}function Qt(e,t,n,r){Zt(e,qt(t,n),r)}function Gt(e,t,n){var r={ranges:t.ranges,update:function(t){this.ranges=[];for(var n=0;n<t.length;n++)this.ranges[n]=new Ft(Ut(e,t[n].anchor),Ut(e,t[n].head))},origin:n&&n.origin};return Wo(e,"beforeSelectionChange",e,r),e.cm&&Wo(e.cm,"beforeSelectionChange",e.cm,r),r.ranges!=t.ranges?It(r.ranges,r.ranges.length-1):t}function Yt(e,t,n){var r=e.history.done,i=au(r);i&&i.ranges?(r[r.length-1]=t,en(e,t,n)):Zt(e,t,n)}function Zt(e,t,n){en(e,t,n),No(e,e.sel,e.cm?e.cm.curOp.id:NaN,n)}function en(e,t,n){if(Qo(e,"beforeSelectionChange")||e.cm&&Qo(e.cm,"beforeSelectionChange"))t=Gt(e,t,n);var r=n&&n.bias||(yt(t.primary().head,e.sel.primary().head)<0?-1:1);tn(e,rn(e,t,r,!0)),(!n||n.scroll!==!1)&&e.cm&&Ti(e.cm)}function tn(e,t){if(t.equals(e.sel))return;e.sel=t,e.cm&&(e.cm.curOp.updateInput=e.cm.curOp.selectionChanged=!0,Ko(e.cm)),Vo(e,"cursorActivity",e)}function nn(e){tn(e,rn(e,e.sel,null,!1),eu)}function rn(e,t,n,r){var i;for(var s=0;s<t.ranges.length;s++){var o=t.ranges[s],u=t.ranges.length==e.sel.ranges.length&&e.sel.ranges[s],a=on(e,o.anchor,u&&u.anchor,n,r),f=on(e,o.head,u&&u.head,n,r);if(i||a!=o.anchor||f!=o.head)i||(i=t.ranges.slice(0,s)),i[s]=new Ft(a,f)}return i?It(i,t.primIndex):t}function sn(e,t,n,r,i){var s=lo(e,t.line);if(s.markedSpans)for(var o=0;o<s.markedSpans.length;++o){var u=s.markedSpans[o],a=u.marker;if((u.from==null||(a.inclusiveLeft?u.from<=t.ch:u.from<t.ch))&&(u.to==null||(a.inclusiveRight?u.to>=t.ch:u.to>t.ch))){if(i){Wo(a,"beforeCursorEnter");if(a.explicitlyCleared){if(!s.markedSpans)break;--o;continue}}if(!a.atomic)continue;if(n){var f=a.find(r<0?1:-1),l;if(r<0?a.inclusiveRight:a.inclusiveLeft)f=un(e,f,-r,f&&f.line==t.line?s:null);if(f&&f.line==t.line&&(l=yt(f,n))&&(r<0?l<0:l>0))return sn(e,f,t,r,i)}var c=a.find(r<0?-1:1);if(r<0?a.inclusiveLeft:a.inclusiveRight)c=un(e,c,r,c.line==t.line?s:null);return c?sn(e,c,t,r,i):null}}return t}function on(e,t,n,r,i){var s=r||1,o=sn(e,t,n,s,i)||!i&&sn(e,t,n,s,!0)||sn(e,t,n,-s,i)||!i&&sn(e,t,n,-s,!0);return o?o:(e.cantEdit=!0,gt(e.first,0))}function un(e,t,n,r){return n<0&&t.ch==0?t.line>e.first?Ut(e,gt(t.line-1)):null:n>0&&t.ch==(r||lo(e,t.line)).text.length?t.line<e.first+e.size-1?gt(t.line+1,0):null:new gt(t.line,t.ch+n)}function an(e){e.display.input.showSelection(e.display.input.prepareSelection())}function fn(e,t){var n=e.doc,r={},i=r.cursors=document.createDocumentFragment(),s=r.selection=document.createDocumentFragment();for(var o=0;o<n.sel.ranges.length;o++){if(t===!1&&o==n.sel.primIndex)continue;var u=n.sel.ranges[o];if(u.from().line>=e.display.viewTo||u.to().line<e.display.viewFrom)continue;var a=u.empty();(a||e.options.showCursorWhenSelecting)&&ln(e,u.head,i),a||cn(e,u,s)}return r}function ln(e,t,n){var r=Un(e,t,"div",null,null,!e.options.singleCursorHeightPerLine),i=n.appendChild(Su("div"," ","CodeMirror-cursor"));i.style.left=r.left+"px",i.style.top=r.top+"px",i.style.height=Math.max(0,r.bottom-r.top)*e.options.cursorHeight+"px";if(r.other){var s=n.appendChild(Su("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));s.style.display="",s.style.left=r.other.left+"px",s.style.top=r.other.top+"px",s.style.height=(r.other.bottom-r.other.top)*.85+"px"}}function cn(e,t,n){function f(e,t,n,r){t<0&&(t=0),t=Math.round(t),r=Math.round(r),s.appendChild(Su("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px; top: "+t+"px; width: "+(n==null?a-e:n)+"px; height: "+(r-t)+"px"))}function l(t,n,r){function h(n,r){return Rn(e,gt(t,n),"div",s,r)}var s=lo(i,t),o=s.text.length,l,c;return $u(yo(s),n||0,r==null?o:r,function(e,t,i){var s=h(e,"left"),p,d,v;if(e==t)p=s,d=v=s.left;else{p=h(t-1,"right");if(i=="rtl"){var m=s;s=p,p=m}d=s.left,v=p.right}n==null&&e==0&&(d=u),p.top-s.top>3&&(f(d,s.top,null,s.bottom),d=u,s.bottom<p.top&&f(d,s.bottom,null,p.top)),r==null&&t==o&&(v=a);if(!l||s.top<l.top||s.top==l.top&&s.left<l.left)l=s;if(!c||p.bottom>c.bottom||p.bottom==c.bottom&&p.right>c.right)c=p;d<u+1&&(d=u),f(d,p.top,v-d,p.bottom)}),{start:l,end:c}}var r=e.display,i=e.doc,s=document.createDocumentFragment(),o=bn(e.display),u=o.left,a=Math.max(r.sizerWidth,En(e)-r.sizer.offsetLeft)-o.right,c=t.from(),h=t.to();if(c.line==h.line)l(c.line,c.ch,h.ch);else{var p=lo(i,c.line),d=lo(i,h.line),v=xs(p)==xs(d),m=l(c.line,c.ch,v?p.text.length+1:null).end,g=l(h.line,v?0:null,h.ch).start;v&&(m.top<g.top-2?(f(m.right,m.top,null,m.bottom),f(u,g.top,g.left,g.bottom)):f(m.right,m.top,g.left-m.right,m.bottom)),m.bottom<g.top&&f(u,m.bottom,null,g.top)}n.appendChild(s)}function hn(e){if(!e.state.focused)return;var t=e.display;clearInterval(t.blinker);var n=!0;t.cursorDiv.style.visibility="",e.options.cursorBlinkRate>0?t.blinker=setInterval(function(){t.cursorDiv.style.visibility=(n=!n)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}function pn(e,t){e.doc.mode.startState&&e.doc.frontier<e.display.viewTo&&e.state.highlight.set(t,vu(dn,e))}function dn(e){var t=e.doc;t.frontier<t.first&&(t.frontier=t.first);if(t.frontier>=e.display.viewTo)return;var n=+(new Date)+e.options.workTime,r=qi(t.mode,mn(e,t.frontier)),i=[];t.iter(t.frontier,Math.min(t.first+t.size,e.display.viewTo+500),function(s){if(t.frontier>=e.display.viewFrom){var o=s.styles,u=s.text.length>e.options.maxHighlightLength,a=Rs(e,s,u?qi(t.mode,r):r,!0);s.styles=a.styles;var f=s.styleClasses,l=a.classes;l?s.styleClasses=l:f&&(s.styleClasses=null);var c=!o||o.length!=s.styles.length||f!=l&&(!f||!l||f.bgClass!=l.bgClass||f.textClass!=l.textClass);for(var h=0;!c&&h<o.length;++h)c=o[h]!=s.styles[h];c&&i.push(t.frontier),s.stateAfter=u?r:qi(t.mode,r)}else s.text.length<=e.options.maxHighlightLength&&zs(e,s.text,r),s.stateAfter=t.frontier%5==0?qi(t.mode,r):null;++t.frontier;if(+(new Date)>n)return pn(e,e.options.workDelay),!0}),i.length&&ur(e,function(){for(var t=0;t<i.length;t++)dr(e,i[t],"text")})}function vn(e,t,n){var r,i,s=e.doc,o=n?-1:t-(e.doc.mode.innerMode?1e3:100);for(var u=t;u>o;--u){if(u<=s.first)return s.first;var a=lo(s,u-1);if(a.stateAfter&&(!n||u<=s.frontier))return u;var f=iu(a.text,null,e.options.tabSize);if(i==null||r>f)i=u-1,r=f}return i}function mn(e,t,n){var r=e.doc,i=e.display;if(!r.mode.startState)return!0;var s=vn(e,t,n),o=s>r.first&&lo(r,s-1).stateAfter;return o?o=qi(r.mode,o):o=Ri(r.mode),r.iter(s,t,function(n){zs(e,n.text,o);var u=s==t-1||s%5==0||s>=i.viewFrom&&s<i.viewTo;n.stateAfter=u?qi(r.mode,o):null,++s}),n&&(r.frontier=s),o}function gn(e){return e.lineSpace.offsetTop}function yn(e){return e.mover.offsetHeight-e.lineSpace.offsetHeight}function bn(e){if(e.cachedPaddingH)return e.cachedPaddingH;var t=Nu(e.measure,Su("pre","x")),n=window.getComputedStyle?window.getComputedStyle(t):t.currentStyle,r={left:parseInt(n.paddingLeft),right:parseInt(n.paddingRight)};return!isNaN(r.left)&&!isNaN(r.right)&&(e.cachedPaddingH=r),r}function wn(e){return Yo-e.display.nativeBarWidth}function En(e){return e.display.scroller.clientWidth-wn(e)-e.display.barWidth}function Sn(e){return e.display.scroller.clientHeight-wn(e)-e.display.barHeight}function xn(e,t,n){var r=e.options.lineWrapping,i=r&&En(e);if(!t.measure.heights||r&&t.measure.width!=i){var s=t.measure.heights=[];if(r){t.measure.width=i;var o=t.text.firstChild.getClientRects();for(var u=0;u<o.length-1;u++){var a=o[u],f=o[u+1];Math.abs(a.bottom-f.bottom)>2&&s.push((a.bottom+f.top)/2-n.top)}}s.push(n.bottom-n.top)}}function Tn(e,t,n){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var r=0;r<e.rest.length;r++)if(e.rest[r]==t)return{map:e.measure.maps[r],cache:e.measure.caches[r]};for(var r=0;r<e.rest.length;r++)if(vo(e.rest[r])>n)return{map:e.measure.maps[r],cache:e.measure.caches[r],before:!0}}function Nn(e,t){t=xs(t);var n=vo(t),r=e.display.externalMeasured=new cr(e.doc,t,n);r.lineN=n;var i=r.built=$s(e,r);return r.text=i.pre,Nu(e.display.lineMeasure,i.pre),r}function Cn(e,t,n,r){return An(e,Ln(e,t),n,r)}function kn(e,t){if(t>=e.display.viewFrom&&t<e.display.viewTo)return e.display.view[mr(e,t)];var n=e.display.externalMeasured;if(n&&t>=n.lineN&&t<n.lineN+n.size)return n}function Ln(e,t){var n=vo(t),r=kn(e,n);r&&!r.text?r=null:r&&r.changes&&(st(e,r,n,rt(e)),e.curOp.forceUpdate=!0),r||(r=Nn(e,t));var i=Tn(r,t,n);return{line:t,view:r,rect:null,map:i.map,cache:i.cache,before:i.before,hasHeights:!1}}function An(e,t,n,r,i){t.before&&(n=-1);var s=n+(r||""),o;return t.cache.hasOwnProperty(s)?o=t.cache[s]:(t.rect||(t.rect=t.view.text.getBoundingClientRect()),t.hasHeights||(xn(e,t.view,t.rect),t.hasHeights=!0),o=_n(e,t,n,r),o.bogus||(t.cache[s]=o)),{left:o.left,right:o.right,top:i?o.rtop:o.top,bottom:i?o.rbottom:o.bottom}}function Mn(e,t,n){var r,i,s,o;for(var u=0;u<e.length;u+=3){var a=e[u],f=e[u+1];if(t<a)i=0,s=1,o="left";else if(t<f)i=t-a,s=i+1;else if(u==e.length-3||t==f&&e[u+3]>t)s=f-a,i=s-1,t>=f&&(o="right");if(i!=null){r=e[u+2],a==f&&n==(r.insertLeft?"left":"right")&&(o=n);if(n=="left"&&i==0)while(u&&e[u-2]==e[u-3]&&e[u-1].insertLeft)r=e[(u-=3)+2],o="left";if(n=="right"&&i==f-a)while(u<e.length-3&&e[u+3]==e[u+4]&&!e[u+5].insertLeft)r=e[(u+=3)+2],o="right";break}}return{node:r,start:i,end:s,collapse:o,coverStart:a,coverEnd:f}}function _n(e,t,n,r){var i=Mn(t.map,n,r),u=i.node,a=i.start,f=i.end,l=i.collapse,c;if(u.nodeType==3){for(var h=0;h<4;h++){while(a&&Eu(t.line.text.charAt(i.coverStart+a)))--a;while(i.coverStart+f<i.coverEnd&&Eu(t.line.text.charAt(i.coverStart+f)))++f;if(s&&o<9&&a==0&&f==i.coverEnd-i.coverStart)c=u.parentNode.getBoundingClientRect();else if(s&&e.options.lineWrapping){var p=xu(u,a,f).getClientRects();p.length?c=p[r=="right"?p.length-1:0]:c=On}else c=xu(u,a,f).getBoundingClientRect()||On;if(c.left||c.right||a==0)break;f=a,a-=1,l="right"}s&&o<11&&(c=Dn(e.display.measure,c))}else{a>0&&(l=r="right");var p;e.options.lineWrapping&&(p=u.getClientRects()).length>1?c=p[r=="right"?p.length-1:0]:c=u.getBoundingClientRect()}if(s&&o<9&&!a&&(!c||!c.left&&!c.right)){var d=u.parentNode.getClientRects()[0];d?c={left:d.left,right:d.left+Kn(e.display),top:d.top,bottom:d.bottom}:c=On}var v=c.top-t.rect.top,m=c.bottom-t.rect.top,g=(v+m)/2,y=t.view.measure.heights;for(var h=0;h<y.length-1;h++)if(g<y[h])break;var b=h?y[h-1]:0,w=y[h],E={left:(l=="right"?c.right:c.left)-t.rect.left,right:(l=="left"?c.left:c.right)-t.rect.left,top:b,bottom:w};return!c.left&&!c.right&&(E.bogus=!0),e.options.singleCursorHeightPerLine||(E.rtop=v,E.rbottom=m),E}function Dn(e,t){if(!window.screen||screen.logicalXDPI==null||screen.logicalXDPI==screen.deviceXDPI||!Xu(e))return t;var n=screen.logicalXDPI/screen.deviceXDPI,r=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*n,right:t.right*n,top:t.top*r,bottom:t.bottom*r}}function Pn(e){if(e.measure){e.measure.cache={},e.measure.heights=null;if(e.rest)for(var t=0;t<e.rest.length;t++)e.measure.caches[t]={}}}function Hn(e){e.display.externalMeasure=null,Tu(e.display.lineMeasure);for(var t=0;t<e.display.view.length;t++)Pn(e.display.view[t])}function Bn(e){Hn(e),e.display.cachedCharWidth=e.display.cachedTextHeight=e.display.cachedPaddingH=null,e.options.lineWrapping||(e.display.maxLineChanged=!0),e.display.lineNumChars=null}function jn(){return window.pageXOffset||(document.documentElement||document.body).scrollLeft}function Fn(){return window.pageYOffset||(document.documentElement||document.body).scrollTop}function In(e,t,n,r){if(t.widgets)for(var i=0;i<t.widgets.length;++i)if(t.widgets[i].above){var s=Ms(t.widgets[i]);n.top+=s,n.bottom+=s}if(r=="line")return n;r||(r="local");var o=go(t);r=="local"?o+=gn(e.display):o-=e.display.viewOffset;if(r=="page"||r=="window"){var u=e.display.lineSpace.getBoundingClientRect();o+=u.top+(r=="window"?0:Fn());var a=u.left+(r=="window"?0:jn());n.left+=a,n.right+=a}return n.top+=o,n.bottom+=o,n}function qn(e,t,n){if(n=="div")return t;var r=t.left,i=t.top;if(n=="page")r-=jn(),i-=Fn();else if(n=="local"||!n){var s=e.display.sizer.getBoundingClientRect();r+=s.left,i+=s.top}var o=e.display.lineSpace.getBoundingClientRect();return{left:r-o.left,top:i-o.top}}function Rn(e,t,n,r,i){return r||(r=lo(e.doc,t.line)),In(e,r,Cn(e,r,t.ch,i),n)}function Un(e,t,n,r,i,s){function o(t,o){var u=An(e,i,t,o?"right":"left",s);return o?u.left=u.right:u.right=u.left,In(e,r,u,n)}function u(e,t){var n=a[t],r=n.level%2;return e==Ju(n)&&t&&n.level<a[t-1].level?(n=a[--t],e=Ku(n)-(n.level%2?0:1),r=!0):e==Ku(n)&&t<a.length-1&&n.level<a[t+1].level&&(n=a[++t],e=Ju(n)-n.level%2,r=!1),r&&e==n.to&&e>n.from?o(e-1):o(e,r)}r=r||lo(e.doc,t.line),i||(i=Ln(e,r));var a=yo(r),f=t.ch;if(!a)return o(f);var l=ra(a,f),c=u(f,l);return na!=null&&(c.other=u(f,na)),c}function zn(e,t){var n=0,t=Ut(e.doc,t);e.options.lineWrapping||(n=Kn(e.display)*t.ch);var r=lo(e.doc,t.line),i=go(r)+gn(e.display);return{left:n,right:n,top:i,bottom:i+r.height}}function Wn(e,t,n,r){var i=gt(e,t);return i.xRel=r,n&&(i.outside=!0),i}function Xn(e,t,n){var r=e.doc;n+=e.display.viewOffset;if(n<0)return Wn(r.first,0,!0,-1);var i=mo(r,n),s=r.first+r.size-1;if(i>s)return Wn(r.first+r.size-1,lo(r,s).text.length,!0,1);t<0&&(t=0);var o=lo(r,i);for(;;){var u=Vn(e,o,i,t,n),a=Es(o),f=a&&a.find(0,!0);if(!a||!(u.ch>f.from.ch||u.ch==f.from.ch&&u.xRel>0))return u;i=vo(o=f.to.line)}}function Vn(e,t,n,r,i){function f(r){var i=Un(e,gt(n,r),"line",t,a);return o=!0,s>i.bottom?i.left-u:s<i.top?i.left+u:(o=!1,i.left)}var s=i-go(t),o=!1,u=2*e.display.wrapper.clientWidth,a=Ln(e,t),l=yo(t),c=t.text.length,h=Qu(t),p=Gu(t),d=f(h),v=o,m=f(p),g=o;if(r>m)return Wn(n,p,g,1);for(;;){if(l?p==h||p==sa(t,h,1):p-h<=1){var y=r<d||r-d<=m-r?h:p,b=y==h?v:g,w=r-(y==h?d:m);if(g&&!l&&!/\s/.test(t.text.charAt(y))&&w>0&&y<t.text.length&&a.view.measure.heights.length>1){var E=An(e,a,y,"right");s<=E.bottom&&s>=E.top&&Math.abs(r-E.right)<w&&(b=!1,y++,w=r-E.right)}while(Eu(t.text.charAt(y)))++y;var S=Wn(n,y,b,w<-1?-1:w>1?1:0);return S}var x=Math.ceil(c/2),T=h+x;if(l){T=h;for(var N=0;N<x;++N)T=sa(t,T,1)}var C=f(T);if(C>r){p=T,m=C;if(g=o)m+=1e3;c=x}else h=T,d=C,v=o,c-=x}}function Jn(e){if(e.cachedTextHeight!=null)return e.cachedTextHeight;if($n==null){$n=Su("pre");for(var t=0;t<49;++t)$n.appendChild(document.createTextNode("x")),$n.appendChild(Su("br"));$n.appendChild(document.createTextNode("x"))}Nu(e.measure,$n);var n=$n.offsetHeight/50;return n>3&&(e.cachedTextHeight=n),Tu(e.measure),n||1}function Kn(e){if(e.cachedCharWidth!=null)return e.cachedCharWidth;var t=Su("span","xxxxxxxxxx"),n=Su("pre",[t]);Nu(e.measure,n);var r=t.getBoundingClientRect(),i=(r.right-r.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function Yn(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Gn},Qn?Qn.ops.push(e.curOp):e.curOp.ownsGroup=Qn={ops:[e.curOp],delayedCallbacks:[]}}function Zn(e){var t=e.delayedCallbacks,n=0;do{for(;n<t.length;n++)t[n].call(null);for(var r=0;r<e.ops.length;r++){var i=e.ops[r];if(i.cursorActivityHandlers)while(i.cursorActivityCalled<i.cursorActivityHandlers.length)i.cursorActivityHandlers[i.cursorActivityCalled++].call(null,i.cm)}}while(n<t.length)}function er(e){var t=e.curOp,n=t.ownsGroup;if(!n)return;try{Zn(n)}finally{Qn=null;for(var r=0;r<n.ops.length;r++)n.ops[r].cm.curOp=null;tr(n)}}function tr(e){var t=e.ops;for(var n=0;n<t.length;n++)nr(t[n]);for(var n=0;n<t.length;n++)rr(t[n]);for(var n=0;n<t.length;n++)ir(t[n]);for(var n=0;n<t.length;n++)sr(t[n]);for(var n=0;n<t.length;n++)or(t[n])}function nr(e){var t=e.cm,n=t.display;Q(t),e.updateMaxLine&&B(t),e.mustUpdate=e.viewChanged||e.forceUpdate||e.scrollTop!=null||e.scrollToPos&&(e.scrollToPos.from.line<n.viewFrom||e.scrollToPos.to.line>=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new K(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function rr(e){e.updatedDisplay=e.mustUpdate&&G(e.cm,e.update)}function ir(e){var t=e.cm,n=t.display;e.updatedDisplay&&tt(t),e.barMeasure=F(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Cn(t,n.maxLine,n.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+e.adjustWidthTo+wn(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo-En(t)));if(e.updatedDisplay||e.selectionChanged)e.preparedSelection=n.input.prepareSelection(e.focus)}function sr(e){var t=e.cm;e.adjustWidthTo!=null&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft<t.doc.scrollLeft&&Ir(t,Math.min(t.display.scroller.scrollLeft,e.maxScrollLeft),!0),t.display.maxLineChanged=!1);var n=e.focus&&e.focus==ku()&&(!document.hasFocus||document.hasFocus());e.preparedSelection&&t.display.input.showSelection(e.preparedSelection,n),(e.updatedDisplay||e.startHeight!=t.doc.height)&&U(t,e.barMeasure),e.updatedDisplay&&et(t,e.barMeasure),e.selectionChanged&&hn(t),t.state.focused&&e.updateInput&&t.display.input.reset(e.typing),n&&St(e.cm)}function or(e){var t=e.cm,n=t.display,r=t.doc;e.updatedDisplay&&Y(t,e.update),n.wheelStartX!=null&&(e.scrollTop!=null||e.scrollLeft!=null||e.scrollToPos)&&(n.wheelStartX=n.wheelStartY=null),e.scrollTop!=null&&(n.scroller.scrollTop!=e.scrollTop||e.forceScroll)&&(r.scrollTop=Math.max(0,Math.min(n.scroller.scrollHeight-n.scroller.clientHeight,e.scrollTop)),n.scrollbars.setScrollTop(r.scrollTop),n.scroller.scrollTop=r.scrollTop),e.scrollLeft!=null&&(n.scroller.scrollLeft!=e.scrollLeft||e.forceScroll)&&(r.scrollLeft=Math.max(0,Math.min(n.scroller.scrollWidth-n.scroller.clientWidth,e.scrollLeft)),n.scrollbars.setScrollLeft(r.scrollLeft),n.scroller.scrollLeft=r.scrollLeft,X(t));if(e.scrollToPos){var i=wi(t,Ut(r,e.scrollToPos.from),Ut(r,e.scrollToPos.to),e.scrollToPos.margin);e.scrollToPos.isCursor&&t.state.focused&&bi(t,i)}var s=e.maybeHiddenMarkers,o=e.maybeUnhiddenMarkers;if(s)for(var u=0;u<s.length;++u)s[u].lines.length||Wo(s[u],"hide");if(o)for(var u=0;u<o.length;++u)o[u].lines.length&&Wo(o[u],"unhide");n.wrapper.offsetHeight&&(r.scrollTop=t.display.scroller.scrollTop),e.changeObjs&&Wo(t,"changes",t,e.changeObjs),e.update&&e.update.finish()}function ur(e,t){if(e.curOp)return t();Yn(e);try{return t()}finally{er(e)}}function ar(e,t){return function(){if(e.curOp)return t.apply(e,arguments);Yn(e);try{return t.apply(e,arguments)}finally{er(e)}}}function fr(e){return function(){if(this.curOp)return e.apply(this,arguments);Yn(this);try{return e.apply(this,arguments)}finally{er(this)}}}function lr(e){return function(){var t=this.cm;if(!t||t.curOp)return e.apply(this,arguments);Yn(t);try{return e.apply(this,arguments)}finally{er(t)}}}function cr(e,t,n){this.line=t,this.rest=Ts(t),this.size=this.rest?vo(au(this.rest))-n+1:1,this.node=this.text=null,this.hidden=ks(e,t)}function hr(e,t,n){var r=[],i;for(var s=t;s<n;s=i){var o=new cr(e.doc,lo(e.doc,s),s);i=s+o.size,r.push(o)}return r}function pr(e,t,n,r){t==null&&(t=e.doc.first),n==null&&(n=e.doc.first+e.doc.size),r||(r=0);var i=e.display;r&&n<i.viewTo&&(i.updateLineNumbers==null||i.updateLineNumbers>t)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0;if(t>=i.viewTo)x&&Ns(e.doc,t)<i.viewTo&&vr(e);else if(n<=i.viewFrom)x&&Cs(e.doc,n+r)>i.viewFrom?vr(e):(i.viewFrom+=r,i.viewTo+=r);else if(t<=i.viewFrom&&n>=i.viewTo)vr(e);else if(t<=i.viewFrom){var s=gr(e,n,n+r,1);s?(i.view=i.view.slice(s.index),i.viewFrom=s.lineN,i.viewTo+=r):vr(e)}else if(n>=i.viewTo){var s=gr(e,t,t,-1);s?(i.view=i.view.slice(0,s.index),i.viewTo=s.lineN):vr(e)}else{var o=gr(e,t,t,-1),u=gr(e,n,n+r,1);o&&u?(i.view=i.view.slice(0,o.index).concat(hr(e,o.lineN,u.lineN)).concat(i.view.slice(u.index)),i.viewTo+=r):vr(e)}var a=i.externalMeasured;a&&(n<a.lineN?a.lineN+=r:t<a.lineN+a.size&&(i.externalMeasured=null))}function dr(e,t,n){e.curOp.viewChanged=!0;var r=e.display,i=e.display.externalMeasured;i&&t>=i.lineN&&t<i.lineN+i.size&&(r.externalMeasured=null);if(t<r.viewFrom||t>=r.viewTo)return;var s=r.view[mr(e,t)];if(s.node==null)return;var o=s.changes||(s.changes=[]);lu(o,n)==-1&&o.push(n)}function vr(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function mr(e,t){if(t>=e.display.viewTo)return null;t-=e.display.viewFrom;if(t<0)return null;var n=e.display.view;for(var r=0;r<n.length;r++){t-=n[r].size;if(t<0)return r}}function gr(e,t,n,r){var i=mr(e,t),s,o=e.display.view;if(!x||n==e.doc.first+e.doc.size)return{index:i,lineN:n};for(var u=0,a=e.display.viewFrom;u<i;u++)a+=o[u].size;if(a!=t){if(r>0){if(i==o.length-1)return null;s=a+o[i].size-t,i++}else s=a-t;t+=s,n+=s}while(Ns(e.doc,n)!=n){if(i==(r<0?0:o.length-1))return null;n+=r*o[i-(r<0?1:0)].size,i+=r}return{index:i,lineN:n}}function yr(e,t,n){var r=e.display,i=r.view;i.length==0||t>=r.viewTo||n<=r.viewFrom?(r.view=hr(e,t,n),r.viewFrom=t):(r.viewFrom>t?r.view=hr(e,t,r.viewFrom).concat(r.view):r.viewFrom<t&&(r.view=r.view.slice(mr(e,t))),r.viewFrom=t,r.viewTo<n?r.view=r.view.concat(hr(e,r.viewTo,n)):r.viewTo>n&&(r.view=r.view.slice(0,mr(e,n)))),r.viewTo=n}function br(e){var t=e.display.view,n=0;for(var r=0;r<t.length;r++){var i=t[r];!i.hidden&&(!i.node||i.changes)&&++n}return n}function wr(e){function i(){t.activeTouch&&(n=setTimeout(function(){t.activeTouch=null},1e3),r=t.activeTouch,r.end=+(new Date))}function u(e){if(e.touches.length!=1)return!1;var t=e.touches[0];return t.radiusX<=1&&t.radiusY<=1}function a(e,t){if(t.left==null)return!0;var n=t.left-e.left,r=t.top-e.top;return n*n+r*r>400}var t=e.display;qo(t.scroller,"mousedown",ar(e,Nr)),s&&o<11?qo(t.scroller,"dblclick",ar(e,function(t){if(Jo(e,t))return;var n=Tr(e,t);if(!n||_r(e,t)||xr(e.display,t))return;Po(t);var r=e.findWordAt(n);$t(e.doc,r.anchor,r.head)})):qo(t.scroller,"dblclick",function(t){Jo(e,t)||Po(t)}),E||qo(t.scroller,"contextmenu",function(t){ii(e,t)});var n,r={end:0};qo(t.scroller,"touchstart",function(i){if(!Jo(e,i)&&!u(i)){clearTimeout(n);var s=+(new Date);t.activeTouch={start:s,moved:!1,prev:s-r.end<=300?r:null},i.touches.length==1&&(t.activeTouch.left=i.touches[0].pageX,t.activeTouch.top=i.touches[0].pageY)}}),qo(t.scroller,"touchmove",function(){t.activeTouch&&(t.activeTouch.moved=!0)}),qo(t.scroller,"touchend",function(n){var r=t.activeTouch;if(r&&!xr(t,n)&&r.left!=null&&!r.moved&&new Date-r.start<300){var s=e.coordsChar(t.activeTouch,"page"),o;!r.prev||a(r,r.prev)?o=new Ft(s,s):!r.prev.prev||a(r,r.prev.prev)?o=e.findWordAt(s):o=new Ft(gt(s.line,0),Ut(e.doc,gt(s.line+1,0))),e.setSelection(o.anchor,o.head),e.focus(),Po(n)}i()}),qo(t.scroller,"touchcancel",i),qo(t.scroller,"scroll",function(){t.scroller.clientHeight&&(Fr(e,t.scroller.scrollTop),Ir(e,t.scroller.scrollLeft,!0),Wo(e,"scroll",e))}),qo(t.scroller,"mousewheel",function(t){zr(e,t)}),qo(t.scroller,"DOMMouseScroll",function(t){zr(e,t)}),qo(t.wrapper,"scroll",function(){t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),t.dragFunctions={enter:function(t){Jo(e,t)||jo(t)},over:function(t){Jo(e,t)||(Br(e,t),jo(t))},start:function(t){Hr(e,t)},drop:ar(e,Pr),leave:function(t){Jo(e,t)||jr(e)}};var f=t.input.getField();qo(f,"keyup",function(t){Zr.call(e,t)}),qo(f,"keydown",ar(e,Gr)),qo(f,"keypress",ar(e,ei)),qo(f,"focus",vu(ni,e)),qo(f,"blur",vu(ri,e))}function Er(e,t,n){var r=n&&n!=T.Init;if(!t!=!r){var i=e.display.dragFunctions,s=t?qo:zo;s(e.display.scroller,"dragstart",i.start),s(e.display.scroller,"dragenter",i.enter),s(e.display.scroller,"dragover",i.over),s(e.display.scroller,"dragleave",i.leave),s(e.display.scroller,"drop",i.drop)}}function Sr(e){var t=e.display;if(t.lastWrapHeight==t.wrapper.clientHeight&&t.lastWrapWidth==t.wrapper.clientWidth)return;t.cachedCharWidth=t.cachedTextHeight=t.cachedPaddingH=null,t.scrollbarsClipped=!1,e.setSize()}function xr(e,t){for(var n=Fo(t);n!=e.wrapper;n=n.parentNode)if(!n||n.nodeType==1&&n.getAttribute("cm-ignore-events")=="true"||n.parentNode==e.sizer&&n!=e.mover)return!0}function Tr(e,t,n,r){var i=e.display;if(!n&&Fo(t).getAttribute("cm-not-content")=="true")return null;var s,o,u=i.lineSpace.getBoundingClientRect();try{s=t.clientX-u.left,o=t.clientY-u.top}catch(t){return null}var a=Xn(e,s,o),f;if(r&&a.xRel==1&&(f=lo(e.doc,a.line).text).length==a.ch){var l=iu(f,f.length,e.options.tabSize)-f.length;a=gt(a.line,Math.max(0,Math.round((s-bn(e.display).left)/Kn(e.display))-l))}return a}function Nr(e){var t=this,n=t.display;if(Jo(t,e)||n.activeTouch&&n.input.supportsTouch())return;n.shift=e.shiftKey;if(xr(n,e)){u||(n.scroller.draggable=!1,setTimeout(function(){n.scroller.draggable=!0},100));return}if(_r(t,e))return;var r=Tr(t,e);window.focus();switch(Io(e)){case 1:t.state.selectingText?t.state.selectingText(e):r?Lr(t,e,r):Fo(e)==n.scroller&&Po(e);break;case 2:u&&(t.state.lastMiddleDown=+(new Date)),r&&$t(t.doc,r),setTimeout(function(){n.input.focus()},20),Po(e);break;case 3:E?ii(t,e):ti(t)}}function Lr(e,t,n){s?setTimeout(vu(St,e),0):e.curOp.focus=ku();var r=+(new Date),i;kr&&kr.time>r-400&&yt(kr.pos,n)==0?i="triple":Cr&&Cr.time>r-400&&yt(Cr.pos,n)==0?(i="double",kr={time:r,pos:n}):(i="single",Cr={time:r,pos:n});var o=e.doc.sel,u=m?t.metaKey:t.ctrlKey,a;e.options.dragDrop&&Bu&&!e.isReadOnly()&&i=="single"&&(a=o.contains(n))>-1&&(yt((a=o.ranges[a]).from(),n)<0||n.xRel>0)&&(yt(a.to(),n)>0||n.xRel<0)?Ar(e,t,n,u):Or(e,t,n,i,u)}function Ar(e,t,n,r){var i=e.display,a=+(new Date),f=ar(e,function(l){u&&(i.scroller.draggable=!1),e.state.draggingText=!1,zo(document,"mouseup",f),zo(i.scroller,"drop",f),Math.abs(t.clientX-l.clientX)+Math.abs(t.clientY-l.clientY)<10&&(Po(l),!r&&+(new Date)-200<a&&$t(e.doc,n),u||s&&o==9?setTimeout(function(){document.body.focus(),i.input.focus()},20):i.input.focus())});u&&(i.scroller.draggable=!0),e.state.draggingText=f,f.copy=m?t.altKey:t.ctrlKey,i.scroller.dragDrop&&i.scroller.dragDrop(),qo(document,"mouseup",f),qo(i.scroller,"drop",f)}function Or(e,t,n,r,i){function d(t){if(yt(p,t)==0)return;p=t;if(r=="rect"){var i=[],s=e.options.tabSize,l=iu(lo(o,n.line).text,n.ch,s),c=iu(lo(o,t.line).text,t.ch,s),h=Math.min(l,c),d=Math.max(l,c);for(var v=Math.min(n.line,t.line),m=Math.min(e.lastLine(),Math.max(n.line,t.line));v<=m;v++){var g=lo(o,v).text,y=su(g,h,s);h==d?i.push(new Ft(gt(v,y),gt(v,y))):g.length>y&&i.push(new Ft(gt(v,y),gt(v,su(g,d,s))))}i.length||i.push(new Ft(n,n)),Zt(o,It(f.ranges.slice(0,a).concat(i),a),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var b=u,w=b.anchor,E=t;if(r!="single"){if(r=="double")var S=e.findWordAt(t);else var S=new Ft(gt(t.line,0),Ut(o,gt(t.line+1,0)));yt(S.anchor,w)>0?(E=S.head,w=Et(b.from(),S.anchor)):(E=S.anchor,w=wt(b.to(),S.head))}var i=f.ranges.slice(0);i[a]=new Ft(Ut(o,w),E),Zt(o,It(i,a),tu)}}function y(t){var n=++m,i=Tr(e,t,!0,r=="rect");if(!i)return;if(yt(i,p)!=0){e.curOp.focus=ku(),d(i);var u=W(s,o);(i.line>=u.to||i.line<u.from)&&setTimeout(ar(e,function(){m==n&&y(t)}),150)}else{var a=t.clientY<v.top?-20:t.clientY>v.bottom?20:0;a&&setTimeout(ar(e,function(){if(m!=n)return;s.scroller.scrollTop+=a,y(t)}),50)}}function b(t){e.state.selectingText=!1,m=Infinity,Po(t),s.input.focus(),zo(document,"mousemove",w),zo(document,"mouseup",E),o.history.lastSelOrigin=null}var s=e.display,o=e.doc;Po(t);var u,a,f=o.sel,l=f.ranges;i&&!t.shiftKey?(a=o.sel.contains(n),a>-1?u=l[a]:u=new Ft(n,n)):(u=o.sel.primary(),a=o.sel.primIndex);if(g?t.shiftKey&&t.metaKey:t.altKey)r="rect",i||(u=new Ft(n,n)),n=Tr(e,t,!0,!0),a=-1;else if(r=="double"){var c=e.findWordAt(n);e.display.shift||o.extend?u=Vt(o,u,c.anchor,c.head):u=c}else if(r=="triple"){var h=new Ft(gt(n.line,0),Ut(o,gt(n.line+1,0)));e.display.shift||o.extend?u=Vt(o,u,h.anchor,h.head):u=h}else u=Vt(o,u,n);i?a==-1?(a=l.length,Zt(o,It(l.concat([u]),a),{scroll:!1,origin:"*mouse"})):l.length>1&&l[a].empty()&&r=="single"&&!t.shiftKey?(Zt(o,It(l.slice(0,a).concat(l.slice(a+1)),0),{scroll:!1,origin:"*mouse"}),f=o.sel):Kt(o,a,u,tu):(a=0,Zt(o,new jt([u],0),tu),f=o.sel);var p=n,v=s.wrapper.getBoundingClientRect(),m=0,w=ar(e,function(e){Io(e)?y(e):b(e)}),E=ar(e,b);e.state.selectingText=E,qo(document,"mousemove",w),qo(document,"mouseup",E)}function Mr(e,t,n,r){try{var i=t.clientX,s=t.clientY}catch(t){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&Po(t);var o=e.display,u=o.lineDiv.getBoundingClientRect();if(s>u.bottom||!Qo(e,n))return Bo(t);s-=u.top-o.viewOffset;for(var a=0;a<e.options.gutters.length;++a){var f=o.gutters.childNodes[a];if(f&&f.getBoundingClientRect().right>=i){var l=mo(e.doc,s),c=e.options.gutters[a];return Wo(e,n,e,l,c,t),Bo(t)}}}function _r(e,t){return Mr(e,t,"gutterClick",!0)}function Pr(e){var t=this;jr(t);if(Jo(t,e)||xr(t.display,e))return;Po(e),s&&(Dr=+(new Date));var n=Tr(t,e,!0),r=e.dataTransfer.files;if(!n||t.isReadOnly())return;if(r&&r.length&&window.FileReader&&window.File){var i=r.length,o=Array(i),u=0,a=function(e,r){if(t.options.allowDropFileTypes&&lu(t.options.allowDropFileTypes,e.type)==-1)return;var s=new FileReader;s.onload=ar(t,function(){var e=s.result;/[\x00-\x08\x0e-\x1f]{2}/.test(e)&&(e=""),o[r]=e;if(++u==i){n=Ut(t.doc,n);var a={from:n,to:n,text:t.doc.splitLines(o.join(t.doc.lineSeparator())),origin:"paste"};hi(t.doc,a),Yt(t.doc,qt(n,oi(a)))}}),s.readAsText(e)};for(var f=0;f<i;++f)a(r[f],f)}else{if(t.state.draggingText&&t.doc.sel.contains(n)>-1){t.state.draggingText(e),setTimeout(function(){t.display.input.focus()},20);return}try{var o=e.dataTransfer.getData("Text");if(o){if(t.state.draggingText&&!t.state.draggingText.copy)var l=t.listSelections();en(t.doc,qt(n,n));if(l)for(var f=0;f<l.length;++f)yi(t.doc,"",l[f].anchor,l[f].head,"drag");t.replaceSelection(o,"around","paste"),t.display.input.focus()}}catch(e){}}}function Hr(e,t){if(s&&(!e.state.draggingText||+(new Date)-Dr<100)){jo(t);return}if(Jo(e,t)||xr(e.display,t))return;t.dataTransfer.setData("Text",e.getSelection()),t.dataTransfer.effectAllowed="copyMove";if(t.dataTransfer.setDragImage&&!c){var n=Su("img",null,null,"position: fixed; left: 0; top: 0;");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",l&&(n.width=n.height=1,e.display.wrapper.appendChild(n),n._top=n.offsetTop),t.dataTransfer.setDragImage(n,0,0),l&&n.parentNode.removeChild(n)}}function Br(e,t){var n=Tr(e,t);if(!n)return;var r=document.createDocumentFragment();ln(e,n,r),e.display.dragCursor||(e.display.dragCursor=Su("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),e.display.lineSpace.insertBefore(e.display.dragCursor,e.display.cursorDiv)),Nu(e.display.dragCursor,r)}function jr(e){e.display.dragCursor&&(e.display.lineSpace.removeChild(e.display.dragCursor),e.display.dragCursor=null)}function Fr(e,t){if(Math.abs(e.doc.scrollTop-t)<2)return;e.doc.scrollTop=t,n||Z(e,{top:t}),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t),e.display.scrollbars.setScrollTop(t),n&&Z(e),pn(e,100)}function Ir(e,t,n){if(n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)return;t=Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth),e.doc.scrollLeft=t,X(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t)}function zr(e,t){var r=Ur(t),i=r.x,s=r.y,o=e.display,a=o.scroller,f=a.scrollWidth>a.clientWidth,c=a.scrollHeight>a.clientHeight;if(!(i&&f||s&&c))return;if(s&&m&&u)e:for(var h=t.target,p=o.view;h!=a;h=h.parentNode)for(var d=0;d<p.length;d++)if(p[d].node==h){e.display.currentWheelTarget=h;break e}if(i&&!n&&!l&&Rr!=null){s&&c&&Fr(e,Math.max(0,Math.min(a.scrollTop+s*Rr,a.scrollHeight-a.clientHeight))),Ir(e,Math.max(0,Math.min(a.scrollLeft+i*Rr,a.scrollWidth-a.clientWidth))),(!s||s&&c)&&Po(t),o.wheelStartX=null;return}if(s&&Rr!=null){var v=s*Rr,g=e.doc.scrollTop,y=g+o.wrapper.clientHeight;v<0?g=Math.max(0,g+v-50):y=Math.min(e.doc.height,y+v+50),Z(e,{top:g,bottom:y})}qr<20&&(o.wheelStartX==null?(o.wheelStartX=a.scrollLeft,o.wheelStartY=a.scrollTop,o.wheelDX=i,o.wheelDY=s,setTimeout(function(){if(o.wheelStartX==null)return;var e=a.scrollLeft-o.wheelStartX,t=a.scrollTop-o.wheelStartY,n=t&&o.wheelDY&&t/o.wheelDY||e&&o.wheelDX&&e/o.wheelDX;o.wheelStartX=o.wheelStartY=null;if(!n)return;Rr=(Rr*qr+n)/(qr+1),++qr},200)):(o.wheelDX+=i,o.wheelDY+=s))}function Wr(e,t,n){if(typeof t=="string"){t=Ui[t];if(!t)return!1}e.display.input.ensurePolled();var r=e.display.shift,i=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),n&&(e.display.shift=!1),i=t(e)!=Zo}finally{e.display.shift=r,e.state.suppressEdits=!1}return i}function Xr(e,t,n){for(var r=0;r<e.state.keyMaps.length;r++){var i=Xi(t,e.state.keyMaps[r],n,e);if(i)return i}return e.options.extraKeys&&Xi(t,e.options.extraKeys,n,e)||Xi(t,e.options.keyMap,n,e)}function $r(e,t,n,r){var i=e.state.keySeq;if(i){if(Vi(t))return"handled";Vr.set(50,function(){e.state.keySeq==i&&(e.state.keySeq=null,e.display.input.reset())}),t=i+" "+t}var s=Xr(e,t,r);s=="multi"&&(e.state.keySeq=t),s=="handled"&&Vo(e,"keyHandled",e,t,n);if(s=="handled"||s=="multi")Po(n),hn(e);return i&&!s&&/\'$/.test(t)?(Po(n),!0):!!s}function Jr(e,t){var n=$i(t,!0);return n?t.shiftKey&&!e.state.keySeq?$r(e,"Shift-"+n,t,function(t){return Wr(e,t,!0)})||$r(e,n,t,function(t){if(typeof t=="string"?/^go[A-Z]/.test(t):t.motion)return Wr(e,t)}):$r(e,n,t,function(t){return Wr(e,t)}):!1}function Kr(e,t,n){return $r(e,"'"+n+"'",t,function(t){return Wr(e,t,!0)})}function Gr(e){var t=this;t.curOp.focus=ku();if(Jo(t,e))return;s&&o<11&&e.keyCode==27&&(e.returnValue=!1);var n=e.keyCode;t.display.shift=n==16||e.shiftKey;var r=Jr(t,e);l&&(Qr=r?n:null,!r&&n==88&&!zu&&(m?e.metaKey:e.ctrlKey)&&t.replaceSelection("",null,"cut")),n==18&&!/\bCodeMirror-crosshair\b/.test(t.display.lineDiv.className)&&Yr(t)}function Yr(e){function n(e){if(e.keyCode==18||!e.altKey)Au(t,"CodeMirror-crosshair"),zo(document,"keyup",n),zo(document,"mouseover",n)}var t=e.display.lineDiv;Ou(t,"CodeMirror-crosshair"),qo(document,"keyup",n),qo(document,"mouseover",n)}function Zr(e){e.keyCode==16&&(this.doc.sel.shift=!1),Jo(this,e)}function ei(e){var t=this;if(xr(t.display,e)||Jo(t,e)||e.ctrlKey&&!e.altKey||m&&e.metaKey)return;var n=e.keyCode,r=e.charCode;if(l&&n==Qr){Qr=null,Po(e);return}if(l&&(!e.which||e.which<10)&&Jr(t,e))return;var i=String.fromCharCode(r==null?n:r);if(Kr(t,e,i))return;t.display.input.onKeyPress(e)}function ti(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,ri(e))},100)}function ni(e){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1);if(e.options.readOnly=="nocursor")return;e.state.focused||(Wo(e,"focus",e),e.state.focused=!0,Ou(e.display.wrapper,"CodeMirror-focused"),!e.curOp&&e.display.selForContextMenu!=e.doc.sel&&(e.display.input.reset(),u&&setTimeout(function(){e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),hn(e)}function ri(e){if(e.state.delayingBlurEvent)return;e.state.focused&&(Wo(e,"blur",e),e.state.focused=!1,Au(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150)}function ii(e,t){if(xr(e.display,t)||si(e,t))return;if(Jo(e,t,"contextmenu"))return;e.display.input.onContextMenu(t)}function si(e,t){return Qo(e,"gutterContextMenu")?Mr(e,t,"gutterContextMenu",!1):!1}function ui(e,t){if(yt(e,t.from)<0)return e;if(yt(e,t.to)<=0)return oi(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=oi(t).ch-t.to.ch),gt(n,r)}function ai(e,t){var n=[];for(var r=0;r<e.sel.ranges.length;r++){var i=e.sel.ranges[r];n.push(new Ft(ui(i.anchor,t),ui(i.head,t)))}return It(n,e.sel.primIndex)}function fi(e,t,n){return e.line==t.line?gt(n.line,e.ch-t.ch+n.ch):gt(n.line+(e.line-t.line),e.ch)}function li(e,t,n){var r=[],i=gt(e.first,0),s=i;for(var o=0;o<t.length;o++){var u=t[o],a=fi(u.from,i,s),f=fi(oi(u),i,s);i=u.to,s=f;if(n=="around"){var l=e.sel.ranges[o],c=yt(l.head,l.anchor)<0;r[o]=new Ft(c?f:a,c?a:f)}else r[o]=new Ft(a,a)}return new jt(r,e.sel.primIndex)}function ci(e,t,n){var r={canceled:!1,from:t.from,to:t.to,text:t.text,origin:t.origin,cancel:function(){this.canceled=!0}};return n&&(r.update=function(t,n,r,i){t&&(this.from=Ut(e,t)),n&&(this.to=Ut(e,n)),r&&(this.text=r),i!==undefined&&(this.origin=i)}),Wo(e,"beforeChange",e,r),e.cm&&Wo(e.cm,"beforeChange",e.cm,r),r.canceled?null:{from:r.from,to:r.to,text:r.text,origin:r.origin}}function hi(e,t,n){if(e.cm){if(!e.cm.curOp)return ar(e.cm,hi)(e,t,n);if(e.cm.state.suppressEdits)return}if(Qo(e,"beforeChange")||e.cm&&Qo(e.cm,"beforeChange")){t=ci(e,t,!0);if(!t)return}var r=S&&!n&&ps(e,t.from,t.to);if(r)for(var i=r.length-1;i>=0;--i)pi(e,{from:r[i].from,to:r[i].to,text:i?[""]:t.text});else pi(e,t)}function pi(e,t){if(t.text.length==1&&t.text[0]==""&&yt(t.from,t.to)==0)return;var n=ai(e,t);xo(e,t,n,e.cm?e.cm.curOp.id:NaN),mi(e,t,n,ls(e,t));var r=[];ao(e,function(e,n){!n&&lu(r,e.history)==-1&&(Do(e.history,t),r.push(e.history)),mi(e,t,null,ls(e,t))})}function di(e,t,n){if(e.cm&&e.cm.state.suppressEdits)return;var r=e.history,i,s=e.sel,o=t=="undo"?r.done:r.undone,u=t=="undo"?r.undone:r.done;for(var a=0;a<o.length;a++){i=o[a];if(n?i.ranges&&!i.equals(e.sel):!i.ranges)break}if(a==o.length)return;r.lastOrigin=r.lastSelOrigin=null;for(;;){i=o.pop();if(!i.ranges)break;Co(i,u);if(n&&!i.equals(e.sel)){Zt(e,i,{clearRedo:!1});return}s=i}var f=[];Co(s,u),u.push({changes:f,generation:r.generation}),r.generation=i.generation||++r.maxGeneration;var l=Qo(e,"beforeChange")||e.cm&&Qo(e.cm,"beforeChange");for(var a=i.changes.length-1;a>=0;--a){var c=i.changes[a];c.origin=t;if(l&&!ci(e,c,!1)){o.length=0;return}f.push(wo(e,c));var h=a?ai(e,c):au(o);mi(e,c,h,hs(e,c)),!a&&e.cm&&e.cm.scrollIntoView({from:c.from,to:oi(c)});var p=[];ao(e,function(e,t){!t&&lu(p,e.history)==-1&&(Do(e.history,c),p.push(e.history)),mi(e,c,null,hs(e,c))})}}function vi(e,t){if(t==0)return;e.first+=t,e.sel=new jt(cu(e.sel.ranges,function(e){return new Ft(gt(e.anchor.line+t,e.anchor.ch),gt(e.head.line+t,e.head.ch))}),e.sel.primIndex);if(e.cm){pr(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;r<n.viewTo;r++)dr(e.cm,r,"gutter")}}function mi(e,t,n,r){if(e.cm&&!e.cm.curOp)return ar(e.cm,mi)(e,t,n,r);if(t.to.line<e.first){vi(e,t.text.length-1-(t.to.line-t.from.line));return}if(t.from.line>e.lastLine())return;if(t.from.line<e.first){var i=t.text.length-1-(e.first-t.from.line);vi(e,i),t={from:gt(e.first,0),to:gt(t.to.line+i,t.to.ch),text:[au(t.text)],origin:t.origin}}var s=e.lastLine();t.to.line>s&&(t={from:t.from,to:gt(s,lo(e,s).text.length),text:[t.text[0]],origin:t.origin}),t.removed=co(e,t.from,t.to),n||(n=ai(e,t)),e.cm?gi(e.cm,t,r):to(e,t,r),en(e,n,eu)}function gi(e,t,n){var r=e.doc,i=e.display,s=t.from,o=t.to,u=!1,a=s.line;e.options.lineWrapping||(a=vo(xs(lo(r,s.line))),r.iter(a,o.line+1,function(e){if(e==i.maxLine)return u=!0,!0})),r.sel.contains(t.from,t.to)>-1&&Ko(e),to(r,t,n,A(e)),e.options.lineWrapping||(r.iter(a,s.line+t.text.length,function(e){var t=H(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,u=!1)}),u&&(e.curOp.updateMaxLine=!0)),r.frontier=Math.min(r.frontier,s.line),pn(e,400);var f=t.text.length-(o.line-s.line)-1;t.full?pr(e):s.line==o.line&&t.text.length==1&&!eo(e.doc,t)?dr(e,s.line,"text"):pr(e,s.line,o.line+1,f);var l=Qo(e,"changes"),c=Qo(e,"change");if(c||l){var h={from:s,to:o,text:t.text,removed:t.removed,origin:t.origin};c&&Vo(e,"change",e,h),l&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(h)}e.display.selForContextMenu=null}function yi(e,t,n,r,i){r||(r=n);if(yt(r,n)<0){var s=r;r=n,n=s}typeof t=="string"&&(t=e.splitLines(t)),hi(e,{from:n,to:r,text:t,origin:i})}function bi(e,t){if(Jo(e,"scrollCursorIntoView"))return;var n=e.display,r=n.sizer.getBoundingClientRect(),i=null;t.top+r.top<0?i=!0:t.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1);if(i!=null&&!p){var s=Su("div","",null,"position: absolute; top: "+(t.top-n.viewOffset-gn(e.display))+"px; height: "+(t.bottom-t.top+wn(e)+n.barHeight)+"px; left: "+t.left+"px; width: 2px;");e.display.lineSpace.appendChild(s),s.scrollIntoView(i),e.display.lineSpace.removeChild(s)}}function wi(e,t,n,r){r==null&&(r=0);for(var i=0;i<5;i++){var s=!1,o=Un(e,t),u=!n||n==t?o:Un(e,n),a=Si(e,Math.min(o.left,u.left),Math.min(o.top,u.top)-r,Math.max(o.left,u.left),Math.max(o.bottom,u.bottom)+r),f=e.doc.scrollTop,l=e.doc.scrollLeft;a.scrollTop!=null&&(Fr(e,a.scrollTop),Math.abs(e.doc.scrollTop-f)>1&&(s=!0)),a.scrollLeft!=null&&(Ir(e,a.scrollLeft),Math.abs(e.doc.scrollLeft-l)>1&&(s=!0));if(!s)break}return o}function Ei(e,t,n,r,i){var s=Si(e,t,n,r,i);s.scrollTop!=null&&Fr(e,s.scrollTop),s.scrollLeft!=null&&Ir(e,s.scrollLeft)}function Si(e,t,n,r,i){var s=e.display,o=Jn(e.display);n<0&&(n=0);var u=e.curOp&&e.curOp.scrollTop!=null?e.curOp.scrollTop:s.scroller.scrollTop,a=Sn(e),f={};i-n>a&&(i=n+a);var l=e.doc.height+yn(s),c=n<o,h=i>l-o;if(n<u)f.scrollTop=c?0:n;else if(i>u+a){var p=Math.min(n,(h?l:i)-a);p!=u&&(f.scrollTop=p)}var d=e.curOp&&e.curOp.scrollLeft!=null?e.curOp.scrollLeft:s.scroller.scrollLeft,v=En(e)-(e.options.fixedGutter?s.gutters.offsetWidth:0),m=r-t>v;return m&&(r=t+v),t<10?f.scrollLeft=0:t<d?f.scrollLeft=Math.max(0,t-(m?0:10)):r>v+d-3&&(f.scrollLeft=r+(m?0:10)-v),f}function xi(e,t,n){(t!=null||n!=null)&&Ni(e),t!=null&&(e.curOp.scrollLeft=(e.curOp.scrollLeft==null?e.doc.scrollLeft:e.curOp.scrollLeft)+t),n!=null&&(e.curOp.scrollTop=(e.curOp.scrollTop==null?e.doc.scrollTop:e.curOp.scrollTop)+n)}function Ti(e){Ni(e);var t=e.getCursor(),n=t,r=t;e.options.lineWrapping||(n=t.ch?gt(t.line,t.ch-1):t,r=gt(t.line,t.ch+1)),e.curOp.scrollToPos={from:n,to:r,margin:e.options.cursorScrollMargin,isCursor:!0}}function Ni(e){var t=e.curOp.scrollToPos;if(t){e.curOp.scrollToPos=null;var n=zn(e,t.from),r=zn(e,t.to),i=Si(e,Math.min(n.left,r.left),Math.min(n.top,r.top)-t.margin,Math.max(n.right,r.right),Math.max(n.bottom,r.bottom)+t.margin);e.scrollTo(i.scrollLeft,i.scrollTop)}}function Ci(e,t,n,r){var i=e.doc,s;n==null&&(n="add"),n=="smart"&&(i.mode.indent?s=mn(e,t):n="prev");var o=e.options.tabSize,u=lo(i,t),a=iu(u.text,null,o);u.stateAfter&&(u.stateAfter=null);var f=u.text.match(/^\s*/)[0],l;if(!r&&!/\S/.test(u.text))l=0,n="not";else if(n=="smart"){l=i.mode.indent(s,u.text.slice(f.length),u.text);if(l==Zo||l>150){if(!r)return;n="prev"}}n=="prev"?t>i.first?l=iu(lo(i,t-1).text,null,o):l=0:n=="add"?l=a+e.options.indentUnit:n=="subtract"?l=a-e.options.indentUnit:typeof n=="number"&&(l=a+n),l=Math.max(0,l);var c="",h=0;if(e.options.indentWithTabs)for(var p=Math.floor(l/o);p;--p)h+=o,c+=" ";h<l&&(c+=uu(l-h));if(c!=f)return yi(i,c,gt(t,0),gt(t,f.length),"+input"),u.stateAfter=null,!0;for(var p=0;p<i.sel.ranges.length;p++){var d=i.sel.ranges[p];if(d.head.line==t&&d.head.ch<f.length){var h=gt(t,f.length);Kt(i,p,new Ft(h,h));break}}}function ki(e,t,n,r){var i=t,s=t;return typeof t=="number"?s=lo(e,Rt(e,t)):i=vo(t),i==null?null:(r(s,i)&&e.cm&&dr(e.cm,i,n),s)}function Li(e,t){var n=e.doc.sel.ranges,r=[];for(var i=0;i<n.length;i++){var s=t(n[i]);while(r.length&&yt(s.from,au(r).to)<=0){var o=r.pop();if(yt(o.from,s.from)<0){s.from=o.from;break}}r.push(s)}ur(e,function(){for(var t=r.length-1;t>=0;t--)yi(e.doc,"",r[t].from,r[t].to,"+delete");Ti(e)})}function Ai(e,t,n,r,i){function f(){var t=s+n;return t<e.first||t>=e.first+e.size?!1:(s=t,a=lo(e,t))}function l(e){var t=(i?sa:oa)(a,o,n,!0);if(t==null){if(!!e||!f())return!1;i?o=(n<0?Gu:Qu)(a):o=n<0?a.text.length:0}else o=t;return!0}var s=t.line,o=t.ch,u=n,a=lo(e,s);if(r=="char")l();else if(r=="column")l(!0);else if(r=="word"||r=="group"){var c=null,h=r=="group",p=e.cm&&e.cm.getHelper(t,"wordChars");for(var d=!0;;d=!1){if(n<0&&!l(!d))break;var v=a.text.charAt(o)||"\n",m=yu(v,p)?"w":h&&v=="\n"?"n":!h||/\s/.test(v)?null:"p";h&&!d&&!m&&(m="s");if(c&&c!=m){n<0&&(n=1,l());break}m&&(c=m);if(n>0&&!l(!d))break}}var g=on(e,gt(s,o),t,u,!0);return yt(t,g)||(g.hitSide=!0),g}function Oi(e,t,n,r){var i=e.doc,s=t.left,o;if(r=="page"){var u=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);o=t.top+n*(u-(n<0?1.5:.5)*Jn(e.display))}else r=="line"&&(o=n>0?t.bottom+3:t.top-3);for(;;){var a=Xn(e,s,o);if(!a.outside)break;if(n<0?o<=0:o>=i.height){a.hitSide=!0;break}o+=n*5}return a}function Di(e,t,n,r){T.defaults[e]=t,n&&(_i[e]=r?function(e,t,r){r!=Pi&&n(e,t,r)}:n)}function Wi(e){var t=e.split(/-(?!$)/),e=t[t.length-1],n,r,i,s;for(var o=0;o<t.length-1;o++){var u=t[o];if(/^(cmd|meta|m)$/i.test(u))s=!0;else if(/^a(lt)?$/i.test(u))n=!0;else if(/^(c|ctrl|control)$/i.test(u))r=!0;else{if(!/^s(hift)$/i.test(u))throw new Error("Unrecognized modifier name: "+u);i=!0}}return n&&(e="Alt-"+e),r&&(e="Ctrl-"+e),s&&(e="Cmd-"+e),i&&(e="Shift-"+e),e}function Ji(e){return typeof e=="string"?zi[e]:e}function Yi(e,t,n,r,i){if(r&&r.shared)return es(e,t,n,r,i);if(e.cm&&!e.cm.curOp)return ar(e.cm,Yi)(e,t,n,r,i);var s=new Gi(e,i),o=yt(t,n);r&&du(r,s,!1);if(o>0||o==0&&s.clearWhenEmpty!==!1)return s;s.replacedWith&&(s.collapsed=!0,s.widgetNode=Su("span",[s.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||s.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(s.widgetNode.insertLeft=!0));if(s.collapsed){if(Ss(e,t.line,t,n,s)||t.line!=n.line&&Ss(e,n.line,t,n,s))throw new Error("Inserting collapsed marker partially overlapping an existing one");x=!0}s.addToHistory&&xo(e,{from:t,to:n,origin:"markText"},e.sel,NaN);var u=t.line,a=e.cm,f;e.iter(u,n.line+1,function(e){a&&s.collapsed&&!a.options.lineWrapping&&xs(e)==a.display.maxLine&&(f=!0),s.collapsed&&u!=t.line&&po(e,0),us(e,new is(s,u==t.line?t.ch:null,u==n.line?n.ch:null)),++u}),s.collapsed&&e.iter(t.line,n.line+1,function(t){ks(e,t)&&po(t,0)}),s.clearOnEnter&&qo(s,"beforeCursorEnter",function(){s.clear()}),s.readOnly&&(S=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),s.collapsed&&(s.id=++Qi,s.atomic=!0);if(a){f&&(a.curOp.updateMaxLine=!0);if(s.collapsed)pr(a,t.line,n.line+1);else if(s.className||s.title||s.startStyle||s.endStyle||s.css)for(var l=t.line;l<=n.line;l++)dr(a,l,"text");s.atomic&&nn(a.doc),Vo(a,"markerAdded",a,s)}return s}function es(e,t,n,r,i){r=du(r),r.shared=!1;var s=[Yi(e,t,n,r,i)],o=s[0],u=r.widgetNode;return ao(e,function(e){u&&(r.widgetNode=u.cloneNode(!0)),s.push(Yi(e,Ut(e,t),Ut(e,n),r,i));for(var a=0;a<e.linked.length;++a)if(e.linked[a].isParent)return;o=au(s)}),new Zi(s,o)}function ts(e){return e.findMarks(gt(e.first,0),e.clipPos(gt(e.lastLine())),function(e){return e.parent})}function ns(e,t){for(var n=0;n<t.length;n++){var r=t[n],i=r.find(),s=e.clipPos(i.from),o=e.clipPos(i.to);if(yt(s,o)){var u=Yi(e,s,o,r.primary,r.primary.type);r.markers.push(u),u.parent=r}}}function rs(e){for(var t=0;t<e.length;t++){var n=e[t],r=[n.primary.doc];ao(n.primary.doc,function(e){r.push(e)});for(var i=0;i<n.markers.length;i++){var s=n.markers[i];lu(r,s.doc)==-1&&(s.parent=null,n.markers.splice(i--,1))}}}function is(e,t,n){this.marker=e,this.from=t,this.to=n}function ss(e,t){if(e)for(var n=0;n<e.length;++n){var r=e[n];if(r.marker==t)return r}}function os(e,t){for(var n,r=0;r<e.length;++r)e[r]!=t&&(n||(n=[])).push(e[r]);return n}function us(e,t){e.markedSpans=e.markedSpans?e.markedSpans.concat([t]):[t],t.marker.attachLine(e)}function as(e,t,n){if(e)for(var r=0,i;r<e.length;++r){var s=e[r],o=s.marker,u=s.from==null||(o.inclusiveLeft?s.from<=t:s.from<t);if(u||s.from==t&&o.type=="bookmark"&&(!n||!s.marker.insertLeft)){var a=s.to==null||(o.inclusiveRight?s.to>=t:s.to>t);(i||(i=[])).push(new is(o,s.from,a?null:s.to))}}return i}function fs(e,t,n){if(e)for(var r=0,i;r<e.length;++r){var s=e[r],o=s.marker,u=s.to==null||(o.inclusiveRight?s.to>=t:s.to>t);if(u||s.from==t&&o.type=="bookmark"&&(!n||s.marker.insertLeft)){var a=s.from==null||(o.inclusiveLeft?s.from<=t:s.from<t);(i||(i=[])).push(new is(o,a?null:s.from-t,s.to==null?null:s.to-t))}}return i}function ls(e,t){if(t.full)return null;var n=Wt(e,t.from.line)&&lo(e,t.from.line).markedSpans,r=Wt(e,t.to.line)&&lo(e,t.to.line).markedSpans;if(!n&&!r)return null;var i=t.from.ch,s=t.to.ch,o=yt(t.from,t.to)==0,u=as(n,i,o),a=fs(r,s,o),f=t.text.length==1,l=au(t.text).length+(f?i:0);if(u)for(var c=0;c<u.length;++c){var h=u[c];if(h.to==null){var p=ss(a,h.marker);p?f&&(h.to=p.to==null?null:p.to+l):h.to=i}}if(a)for(var c=0;c<a.length;++c){var h=a[c];h.to!=null&&(h.to+=l);if(h.from==null){var p=ss(u,h.marker);p||(h.from=l,f&&(u||(u=[])).push(h))}else h.from+=l,f&&(u||(u=[])).push(h)}u&&(u=cs(u)),a&&a!=u&&(a=cs(a));var d=[u];if(!f){var v=t.text.length-2,m;if(v>0&&u)for(var c=0;c<u.length;++c)u[c].to==null&&(m||(m=[])).push(new is(u[c].marker,null,null));for(var c=0;c<v;++c)d.push(m);d.push(a)}return d}function cs(e){for(var t=0;t<e.length;++t){var n=e[t];n.from!=null&&n.from==n.to&&n.marker.clearWhenEmpty!==!1&&e.splice(t--,1)}return e.length?e:null}function hs(e,t){var n=Ao(e,t),r=ls(e,t);if(!n)return r;if(!r)return n;for(var i=0;i<n.length;++i){var s=n[i],o=r[i];if(s&&o)e:for(var u=0;u<o.length;++u){var a=o[u];for(var f=0;f<s.length;++f)if(s[f].marker==a.marker)continue e;s.push(a)}else o&&(n[i]=o)}return n}function ps(e,t,n){var r=null;e.iter(t.line,n.line+1,function(e){if(e.markedSpans)for(var t=0;t<e.markedSpans.length;++t){var n=e.markedSpans[t].marker;n.readOnly&&(!r||lu(r,n)==-1)&&(r||(r=[])).push(n)}});if(!r)return null;var i=[{from:t,to:n}];for(var s=0;s<r.length;++s){var o=r[s],u=o.find(0);for(var a=0;a<i.length;++a){var f=i[a];if(yt(f.to,u.from)<0||yt(f.from,u.to)>0)continue;var l=[a,1],c=yt(f.from,u.from),h=yt(f.to,u.to);(c<0||!o.inclusiveLeft&&!c)&&l.push({from:f.from,to:u.from}),(h>0||!o.inclusiveRight&&!h)&&l.push({from:u.to,to:f.to}),i.splice.apply(i,l),a+=l.length-1}}return i}function ds(e){var t=e.markedSpans;if(!t)return;for(var n=0;n<t.length;++n)t[n].marker.detachLine(e);e.markedSpans=null}function vs(e,t){if(!t)return;for(var n=0;n<t.length;++n)t[n].marker.attachLine(e);e.markedSpans=t}function ms(e){return e.inclusiveLeft?-1:0}function gs(e){return e.inclusiveRight?1:0}function ys(e,t){var n=e.lines.length-t.lines.length;if(n!=0)return n;var r=e.find(),i=t.find(),s=yt(r.from,i.from)||ms(e)-ms(t);if(s)return-s;var o=yt(r.to,i.to)||gs(e)-gs(t);return o?o:t.id-e.id}function bs(e,t){var n=x&&e.markedSpans,r;if(n)for(var i,s=0;s<n.length;++s)i=n[s],i.marker.collapsed&&(t?i.from:i.to)==null&&(!r||ys(r,i.marker)<0)&&(r=i.marker);return r}function ws(e){return bs(e,!0)}function Es(e){return bs(e,!1)}function Ss(e,t,n,r,i){var s=lo(e,t),o=x&&s.markedSpans;if(o)for(var u=0;u<o.length;++u){var a=o[u];if(!a.marker.collapsed)continue;var f=a.marker.find(0),l=yt(f.from,n)||ms(a.marker)-ms(i),c=yt(f.to,r)||gs(a.marker)-gs(i);if(l>=0&&c<=0||l<=0&&c>=0)continue;if(l<=0&&(a.marker.inclusiveRight&&i.inclusiveLeft?yt(f.to,n)>=0:yt(f.to,n)>0)||l>=0&&(a.marker.inclusiveRight&&i.inclusiveLeft?yt(f.from,r)<=0:yt(f.from,r)<0))return!0}}function xs(e){var t;while(t=ws(e))e=t.find(-1,!0).line;return e}function Ts(e){var t,n;while(t=Es(e))e=t.find(1,!0).line,(n||(n=[])).push(e);return n}function Ns(e,t){var n=lo(e,t),r=xs(n);return n==r?t:vo(r)}function Cs(e,t){if(t>e.lastLine())return t;var n=lo(e,t),r;if(!ks(e,n))return t;while(r=Es(n))n=r.find(1,!0).line;return vo(n)+1}function ks(e,t){var n=x&&t.markedSpans;if(n)for(var r,i=0;i<n.length;++i){r=n[i];if(!r.marker.collapsed)continue;if(r.from==null)return!0;if(r.marker.widgetNode)continue;if(r.from==0&&r.marker.inclusiveLeft&&Ls(e,t,r))return!0}}function Ls(e,t,n){if(n.to==null){var r=n.marker.find(1,!0);return Ls(e,r.line,ss(r.line.markedSpans,n.marker))}if(n.marker.inclusiveRight&&n.to==t.text.length)return!0;for(var i,s=0;s<t.markedSpans.length;++s){i=t.markedSpans[s];if(i.marker.collapsed&&!i.marker.widgetNode&&i.from==n.to&&(i.to==null||i.to!=n.from)&&(i.marker.inclusiveLeft||n.marker.inclusiveRight)&&Ls(e,t,i))return!0}}function Os(e,t,n){go(t)<(e.curOp&&e.curOp.scrollTop||e.doc.scrollTop)&&xi(e,null,n)}function Ms(e){if(e.height!=null)return e.height;var t=e.doc.cm;if(!t)return 0;if(!Cu(document.body,e.node)){var n="position: relative;";e.coverGutter&&(n+="margin-left: -"+t.display.gutters.offsetWidth+"px;"),e.noHScroll&&(n+="width: "+t.display.wrapper.clientWidth+"px;"),Nu(t.display.measure,Su("div",[e.node],null,n))}return e.height=e.node.parentNode.offsetHeight}function _s(e,t,n,r){var i=new As(e,n,r),s=e.cm;return s&&i.noHScroll&&(s.display.alignWidgets=!0),ki(e,t,"widget",function(t){var n=t.widgets||(t.widgets=[]);i.insertAt==null?n.push(i):n.splice(Math.min(n.length-1,Math.max(0,i.insertAt)),0,i),i.line=t;if(s&&!ks(e,t)){var r=go(t)<e.scrollTop;po(t,t.height+Ms(i)),r&&xi(s,null,i.height),s.curOp.forceUpdate=!0}return!0}),i}function Ps(e,t,n,r){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),e.order!=null&&(e.order=null),ds(e),vs(e,n);var i=r?r(e):1;i!=e.height&&po(e,i)}function Hs(e){e.parent=null,ds(e)}function Bs(e,t){if(e)for(;;){var n=e.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!n)break;e=e.slice(0,n.index)+e.slice(n.index+n[0].length);var r=n[1]?"bgClass":"textClass";t[r]==null?t[r]=n[2]:(new RegExp("(?:^|s)"+n[2]+"(?:$|s)")).test(t[r])||(t[r]+=" "+n[2])}return e}function js(e,t){if(e.blankLine)return e.blankLine(t);if(!e.innerMode)return;var n=T.innerMode(e,t);if(n.mode.blankLine)return n.mode.blankLine(n.state)}function Fs(e,t,n,r){for(var i=0;i<10;i++){r&&(r[0]=T.innerMode(e,n).mode);var s=e.token(t,n);if(t.pos>t.start)return s}throw new Error("Mode "+e.name+" failed to advance stream.")}function Is(e,t,n,r){function i(e){return{start:l.start,end:l.pos,string:l.current(),type:u||null,state:e?qi(s.mode,f):f}}var s=e.doc,o=s.mode,u;t=Ut(s,t);var a=lo(s,t.line),f=mn(e,t.line,n),l=new Ki(a.text,e.options.tabSize),c;r&&(c=[]);while((r||l.pos<t.ch)&&!l.eol())l.start=l.pos,u=Fs(o,l,f),r&&c.push(i(!0));return r?c:i()}function qs(e,t,n,r,i,s,o){var u=n.flattenSpans;u==null&&(u=e.options.flattenSpans);var a=0,f=null,l=new Ki(t,e.options.tabSize),c,h=e.options.addModeClass&&[null];t==""&&Bs(js(n,r),s);while(!l.eol()){l.pos>e.options.maxHighlightLength?(u=!1,o&&zs(e,t,r,l.pos),l.pos=t.length,c=null):c=Bs(Fs(n,l,r,h),s);if(h){var p=h[0].name;p&&(c="m-"+(c?p+" "+c:p))}if(!u||f!=c){while(a<l.start)a=Math.min(l.start,a+5e4),i(a,f);f=c}l.start=l.pos}while(a<l.pos){var d=Math.min(l.pos,a+5e4);i(d,f),a=d}}function Rs(e,t,n,r){var i=[e.state.modeGen],s={};qs(e,t.text,e.doc.mode,n,function(e,t){i.push(e,t)},s,r);for(var o=0;o<e.state.overlays.length;++o){var u=e.state.overlays[o],a=1,f=0;qs(e,t.text,u.mode,!0,function(e,t){var n=a;while(f<e){var r=i[a];r>e&&i.splice(a,1,e,i[a+1],r),a+=2,f=Math.min(e,r)}if(!t)return;if(u.opaque)i.splice(n,a-n,e,"cm-overlay "+t),a=n+2;else for(;n<a;n+=2){var s=i[n+1];i[n+1]=(s?s+" ":"")+"cm-overlay "+t}},s)}return{styles:i,classes:s.bgClass||s.textClass?s:null}}function Us(e,t,n){if(!t.styles||t.styles[0]!=e.state.modeGen){var r=mn(e,vo(t)),i=Rs(e,t,t.text.length>e.options.maxHighlightLength?qi(e.doc.mode,r):r);t.stateAfter=r,t.styles=i.styles,i.classes?t.styleClasses=i.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.frontier&&e.doc.frontier++}return t.styles}function zs(e,t,n,r){var i=e.doc.mode,s=new Ki(t,e.options.tabSize);s.start=s.pos=r||0,t==""&&js(i,n);while(!s.eol())Fs(i,s,n),s.start=s.pos}function Vs(e,t){if(!e||/^\s*$/.test(e))return null;var n=t.addModeClass?Xs:Ws;return n[e]||(n[e]=e.replace(/\S+/g,"cm-$&"))}function $s(e,t){var n=Su("span",null,null,u?"padding-right: .1px":null),r={pre:Su("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:e,splitSpaces:(s||u)&&e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,a;r.pos=0,r.addToken=Ks,qu(e.display.measure)&&(a=yo(o))&&(r.addToken=Gs(r.addToken,a)),r.map=[];var f=t!=e.display.externalMeasured&&vo(o);Zs(o,r,Us(e,o,f)),o.styleClasses&&(o.styleClasses.bgClass&&(r.bgClass=Mu(o.styleClasses.bgClass,r.bgClass||"")),o.styleClasses.textClass&&(r.textClass=Mu(o.styleClasses.textClass,r.textClass||""))),r.map.length==0&&r.map.push(0,0,r.content.appendChild(Fu(e.display.measure))),i==0?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(u){var l=r.content.lastChild;if(/\bcm-tab\b/.test(l.className)||l.querySelector&&l.querySelector(".cm-tab"))r.content.className="cm-tab-wrap-hack"}return Wo(e,"renderLine",e,t.line,r.pre),r.pre.className&&(r.textClass=Mu(r.pre.className,r.textClass||"")),r}function Js(e){var t=Su("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function Ks(e,t,n,r,i,u,a){if(!t)return;var f=e.splitSpaces?t.replace(/ {3,}/g,Qs):t,l=e.cm.state.specialChars,c=!1;if(!l.test(t)){e.col+=t.length;var h=document.createTextNode(f);e.map.push(e.pos,e.pos+t.length,h),s&&o<9&&(c=!0),e.pos+=t.length}else{var h=document.createDocumentFragment(),p=0;for(;;){l.lastIndex=p;var d=l.exec(t),v=d?d.index-p:t.length-p;if(v){var m=document.createTextNode(f.slice(p,p+v));s&&o<9?h.appendChild(Su("span",[m])):h.appendChild(m),e.map.push(e.pos,e.pos+v,m),e.col+=v,e.pos+=v}if(!d)break;p+=v+1;if(d[0]==" "){var g=e.cm.options.tabSize,y=g-e.col%g,m=h.appendChild(Su("span",uu(y),"cm-tab"));m.setAttribute("role","presentation"),m.setAttribute("cm-text"," "),e.col+=y}else if(d[0]=="\r"||d[0]=="\n"){var m=h.appendChild(Su("span",d[0]=="\r"?"␍":"","cm-invalidchar"));m.setAttribute("cm-text",d[0]),e.col+=1}else{var m=e.cm.options.specialCharPlaceholder(d[0]);m.setAttribute("cm-text",d[0]),s&&o<9?h.appendChild(Su("span",[m])):h.appendChild(m),e.col+=1}e.map.push(e.pos,e.pos+1,m),e.pos++}}if(n||r||i||c||a){var b=n||"";r&&(b+=r),i&&(b+=i);var w=Su("span",[h],b,a);return u&&(w.title=u),e.content.appendChild(w)}e.content.appendChild(h)}function Qs(e){var t=" ";for(var n=0;n<e.length-2;++n)t+=n%2?" ":" ";return t+=" ",t}function Gs(e,t){return function(n,r,i,s,o,u,a){i=i?i+" cm-force-border":"cm-force-border";var f=n.pos,l=f+r.length;for(;;){for(var c=0;c<t.length;c++){var h=t[c];if(h.to>f&&h.from<=f)break}if(h.to>=l)return e(n,r,i,s,o,u,a);e(n,r.slice(0,h.to-f),i,s,null,u,a),s=null,r=r.slice(h.to-f),f=h.to}}}function Ys(e,t,n,r){var i=!r&&n.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!r&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",n.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t}function Zs(e,t,n){var r=e.markedSpans,i=e.text,s=0;if(!r){for(var o=1;o<n.length;o+=2)t.addToken(t,i.slice(s,s=n[o]),Vs(n[o+1],t.cm.options));return}var u=i.length,a=0,o=1,f="",l,c,h=0,p,d,v,m,g;for(;;){if(h==a){p=d=v=m=c="",g=null,h=Infinity;var y=[],b;for(var w=0;w<r.length;++w){var E=r[w],S=E.marker;S.type=="bookmark"&&E.from==a&&S.widgetNode?y.push(S):E.from<=a&&(E.to==null||E.to>a||S.collapsed&&E.to==a&&E.from==a)?(E.to!=null&&E.to!=a&&h>E.to&&(h=E.to,d=""),S.className&&(p+=" "+S.className),S.css&&(c=(c?c+";":"")+S.css),S.startStyle&&E.from==a&&(v+=" "+S.startStyle),S.endStyle&&E.to==h&&(b||(b=[])).push(S.endStyle,E.to),S.title&&!m&&(m=S.title),S.collapsed&&(!g||ys(g.marker,S)<0)&&(g=E)):E.from>a&&h>E.from&&(h=E.from)}if(b)for(var w=0;w<b.length;w+=2)b[w+1]==h&&(d+=" "+b[w]);if(!g||g.from==a)for(var w=0;w<y.length;++w)Ys(t,0,y[w]);if(g&&(g.from||0)==a){Ys(t,(g.to==null?u+1:g.to)-a,g.marker,g.from==null);if(g.to==null)return;g.to==a&&(g=!1)}}if(a>=u)break;var x=Math.min(u,h);for(;;){if(f){var T=a+f.length;if(!g){var N=T>x?f.slice(0,x-a):f;t.addToken(t,N,l?l+p:p,v,a+N.length==h?d:"",m,c)}if(T>=x){f=f.slice(x-a),a=x;break}a=T,v=""}f=i.slice(s,s=n[o++]),l=Vs(n[o++],t.cm.options)}}}function eo(e,t){return t.from.ch==0&&t.to.ch==0&&au(t.text)==""&&(!e.cm||e.cm.options.wholeLineUpdateBefore)}function to(e,t,n,r){function i(e){return n?n[e]:null}function s(e,n,i){Ps(e,n,i,r),Vo(e,"change",e,t)}function o(e,t){for(var n=e,s=[];n<t;++n)s.push(new Ds(f[n],i(n),r));return s}var u=t.from,a=t.to,f=t.text,l=lo(e,u.line),c=lo(e,a.line),h=au(f),p=i(f.length-1),d=a.line-u.line;if(t.full)e.insert(0,o(0,f.length)),e.remove(f.length,e.size-f.length);else if(eo(e,t)){var v=o(0,f.length-1);s(c,c.text,p),d&&e.remove(u.line,d),v.length&&e.insert(u.line,v)}else if(l==c)if(f.length==1)s(l,l.text.slice(0,u.ch)+h+l.text.slice(a.ch),p);else{var v=o(1,f.length-1);v.push(new Ds(h+l.text.slice(a.ch),p,r)),s(l,l.text.slice(0,u.ch)+f[0],i(0)),e.insert(u.line+1,v)}else if(f.length==1)s(l,l.text.slice(0,u.ch)+f[0]+c.text.slice(a.ch),i(0)),e.remove(u.line+1,d);else{s(l,l.text.slice(0,u.ch)+f[0],i(0)),s(c,h+c.text.slice(a.ch),p);var v=o(1,f.length-1);d>1&&e.remove(u.line+1,d-1),e.insert(u.line+1,v)}Vo(e,"change",e,t)}function no(e){this.lines=e,this.parent=null;for(var t=0,n=0;t<e.length;++t)e[t].parent=this,n+=e[t].height;this.height=n}function ro(e){this.children=e;var t=0,n=0;for(var r=0;r<e.length;++r){var i=e[r];t+=i.chunkSize(),n+=i.height,i.parent=this}this.size=t,this.height=n,this.parent=null}function ao(e,t,n){function r(e,i,s){if(e.linked)for(var o=0;o<e.linked.length;++o){var u=e.linked[o];if(u.doc==i)continue;var a=s&&u.sharedHist;if(n&&!a)continue;t(u.doc,a),r(u.doc,e,a)}}r(e,null,!0)}function fo(e,t){if(t.cm)throw new Error("This document is already in use.");e.doc=t,t.cm=e,O(e),C(e),e.options.lineWrapping||B(e),e.options.mode=t.modeOption,pr(e)}function lo(e,t){t-=e.first;if(t<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var n=e;!n.lines;)for(var r=0;;++r){var i=n.children[r],s=i.chunkSize();if(t<s){n=i;break}t-=s}return n.lines[t]}function co(e,t,n){var r=[],i=t.line;return e.iter(t.line,n.line+1,function(e){var s=e.text;i==n.line&&(s=s.slice(0,n.ch)),i==t.line&&(s=s.slice(t.ch)),r.push(s),++i}),r}function ho(e,t,n){var r=[];return e.iter(t,n,function(e){r.push(e.text)}),r}function po(e,t){var n=t-e.height;if(n)for(var r=e;r;r=r.parent)r.height+=n}function vo(e){if(e.parent==null)return null;var t=e.parent,n=lu(t.lines,e);for(var r=t.parent;r;t=r,r=r.parent)for(var i=0;;++i){if(r.children[i]==t)break;n+=r.children[i].chunkSize()}return n+t.first}function mo(e,t){var n=e.first;e:do{for(var r=0;r<e.children.length;++r){var i=e.children[r],s=i.height;if(t<s){e=i;continue e}t-=s,n+=i.chunkSize()}return n}while(!e.lines);for(var r=0;r<e.lines.length;++r){var o=e.lines[r],u=o.height;if(t<u)break;t-=u}return n+r}function go(e){e=xs(e);var t=0,n=e.parent;for(var r=0;r<n.lines.length;++r){var i=n.lines[r];if(i==e)break;t+=i.height}for(var s=n.parent;s;n=s,s=n.parent)for(var r=0;r<s.children.length;++r){var o=s.children[r];if(o==n)break;t+=o.height}return t}function yo(e){var t=e.order;return t==null&&(t=e.order=ua(e.text)),t}function bo(e){this.done=[],this.undone=[],this.undoDepth=Infinity,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=e||1}function wo(e,t){var n={from:bt(t.from),to:oi(t),text:co(e,t.from,t.to)};return ko(e,n,t.from.line,t.to.line+1),ao(e,function(e){ko(e,n,t.from.line,t.to.line+1)},!0),n}function Eo(e){while(e.length){var t=au(e);if(!t.ranges)break;e.pop()}}function So(e,t){if(t)return Eo(e.done),au(e.done);if(e.done.length&&!au(e.done).ranges)return au(e.done);if(e.done.length>1&&!e.done[e.done.length-2].ranges)return e.done.pop(),au(e.done)}function xo(e,t,n,r){var i=e.history;i.undone.length=0;var s=+(new Date),o;if((i.lastOp==r||i.lastOrigin==t.origin&&t.origin&&(t.origin.charAt(0)=="+"&&e.cm&&i.lastModTime>s-e.cm.options.historyEventDelay||t.origin.charAt(0)=="*"))&&(o=So(i,i.lastOp==r))){var u=au(o.changes);yt(t.from,t.to)==0&&yt(t.from,u.to)==0?u.to=oi(t):o.changes.push(wo(e,t))}else{var a=au(i.done);(!a||!a.ranges)&&Co(e.sel,i.done),o={changes:[wo(e,t)],generation:i.generation},i.done.push(o);while(i.done.length>i.undoDepth)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=s,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=t.origin,u||Wo(e,"historyAdded")}function To(e,t,n,r){var i=t.charAt(0);return i=="*"||i=="+"&&n.ranges.length==r.ranges.length&&n.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function No(e,t,n,r){var i=e.history,s=r&&r.origin;n==i.lastSelOp||s&&i.lastSelOrigin==s&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==s||To(e,s,au(i.done),t))?i.done[i.done.length-1]=t:Co(t,i.done),i.lastSelTime=+(new Date),i.lastSelOrigin=s,i.lastSelOp=n,r&&r.clearRedo!==!1&&Eo(i.undone)}function Co(e,t){var n=au(t);n&&n.ranges&&n.equals(e)||t.push(e)}function ko(e,t,n,r){var i=t["spans_"+e.id],s=0;e.iter(Math.max(e.first,n),Math.min(e.first+e.size,r),function(n){n.markedSpans&&((i||(i=t["spans_"+e.id]={}))[s]=n.markedSpans),++s})}function Lo(e){if(!e)return null;for(var t=0,n;t<e.length;++t)e[t].marker.explicitlyCleared?n||(n=e.slice(0,t)):n&&n.push(e[t]);return n?n.length?n:null:e}function Ao(e,t){var n=t["spans_"+e.id];if(!n)return null;for(var r=0,i=[];r<t.text.length;++r)i.push(Lo(n[r]));return i}function Oo(e,t,n){for(var r=0,i=[];r<e.length;++r){var s=e[r];if(s.ranges){i.push(n?jt.prototype.deepCopy.call(s):s);continue}var o=s.changes,u=[];i.push({changes:u});for(var a=0;a<o.length;++a){var f=o[a],l;u.push({from:f.from,to:f.to,text:f.text});if(t)for(var c in f)(l=c.match(/^spans_(\d+)$/))&&lu(t,Number(l[1]))>-1&&(au(u)[c]=f[c],delete f[c])}}return i}function Mo(e,t,n,r){n<e.line?e.line+=r:t<e.line&&(e.line=t,e.ch=0)}function _o(e,t,n,r){for(var i=0;i<e.length;++i){var s=e[i],o=!0;if(s.ranges){s.copied||(s=e[i]=s.deepCopy(),s.copied=!0);for(var u=0;u<s.ranges.length;u++)Mo(s.ranges[u].anchor,t,n,r),Mo(s.ranges[u].head,t,n,r);continue}for(var u=0;u<s.changes.length;++u){var a=s.changes[u];if(n<a.from.line)a.from=gt(a.from.line+r,a.from.ch),a.to=gt(a.to.line+r,a.to.ch);else if(t<=a.to.line){o=!1;break}}o||(e.splice(0,i+1),i=0)}}function Do(e,t){var n=t.from.line,r=t.to.line,i=t.text.length-(r-n)-1;_o(e.done,n,r,i),_o(e.undone,n,r,i)}function Bo(e){return e.defaultPrevented!=null?e.defaultPrevented:e.returnValue==0}function Fo(e){return e.target||e.srcElement}function Io(e){var t=e.which;return t==null&&(e.button&1?t=1:e.button&2?t=3:e.button&4&&(t=2)),m&&e.ctrlKey&&t==1&&(t=3),t}function Uo(e,t,n){var r=e._handlers&&e._handlers[t];return n?r&&r.length>0?r.slice():Ro:r||Ro}function Vo(e,t){function s(e){return function(){e.apply(null,r)}}var n=Uo(e,t,!1);if(!n.length)return;var r=Array.prototype.slice.call(arguments,2),i;Qn?i=Qn.delayedCallbacks:Xo?i=Xo:(i=Xo=[],setTimeout($o,0));for(var o=0;o<n.length;++o)i.push(s(n[o]))}function $o(){var e=Xo;Xo=null;for(var t=0;t<e.length;++t)e[t]()}function Jo(e,t,n){return typeof t=="string"&&(t={type:t,preventDefault:function(){this.defaultPrevented=!0}}),Wo(e,n||t.type,e,t),Bo(t)||t.codemirrorIgnore}function Ko(e){var t=e._handlers&&e._handlers.cursorActivity;if(!t)return;var n=e.curOp.cursorActivityHandlers||(e.curOp.cursorActivityHandlers=[]);for(var r=0;r<t.length;++r)lu(n,t[r])==-1&&n.push(t[r])}function Qo(e,t){return Uo(e,t).length>0}function Go(e){e.prototype.on=function(e,t){qo(this,e,t)},e.prototype.off=function(e,t){zo(this,e,t)}}function ru(){this.id=null}function uu(e){while(ou.length<=e)ou.push(au(ou)+" ");return ou[e]}function au(e){return e[e.length-1]}function lu(e,t){for(var n=0;n<e.length;++n)if(e[n]==t)return n;return-1}function cu(e,t){var n=[];for(var r=0;r<e.length;r++)n[r]=t(e[r],r);return n}function hu(){}function pu(e,t){var n;return Object.create?n=Object.create(e):(hu.prototype=e,n=new hu),t&&du(t,n),n}function du(e,t,n){t||(t={});for(var r in e)e.hasOwnProperty(r)&&(n!==!1||!t.hasOwnProperty(r))&&(t[r]=e[r]);return t}function vu(e){var t=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,t)}}function yu(e,t){return t?t.source.indexOf("\\w")>-1&&gu(e)?!0:t.test(e):gu(e)}function bu(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}function Eu(e){return e.charCodeAt(0)>=768&&wu.test(e)}function Su(e,t,n,r){var i=document.createElement(e);n&&(i.className=n),r&&(i.style.cssText=r);if(typeof t=="string")i.appendChild(document.createTextNode(t));else if(t)for(var s=0;s<t.length;++s)i.appendChild(t[s]);return i}function Tu(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function Nu(e,t){return Tu(e).appendChild(t)}function ku(){var e=document.activeElement;while(e&&e.root&&e.root.activeElement)e=e.root.activeElement;return e}function Lu(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}function Mu(e,t){var n=e.split(" ");for(var r=0;r<n.length;r++)n[r]&&!Lu(n[r]).test(t)&&(t+=" "+n[r]);return t}function _u(e){if(!document.body.getElementsByClassName)return;var t=document.body.getElementsByClassName("CodeMirror");for(var n=0;n<t.length;n++){var r=t[n].CodeMirror;r&&e(r)}}function Pu(){if(Du)return;Hu(),Du=!0}function Hu(){var e;qo(window,"resize",function(){e==null&&(e=setTimeout(function(){e=null,_u(Sr)},100))}),qo(window,"blur",function(){_u(ri)})}function Fu(e){if(ju==null){var t=Su("span","");Nu(e,Su("span",[t,document.createTextNode("x")])),e.firstChild.offsetHeight!=0&&(ju=t.offsetWidth<=1&&t.offsetHeight>2&&!(s&&o<8))}var n=ju?Su("span",""):Su("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return n.setAttribute("cm-text",""),n}function qu(e){if(Iu!=null)return Iu;var t=Nu(e,document.createTextNode("AخA")),n=xu(t,0,1).getBoundingClientRect();if(!n||n.left==n.right)return!1;var r=xu(t,1,2).getBoundingClientRect();return Iu=r.right-n.right<3}function Xu(e){if(Wu!=null)return Wu;var t=Nu(e,Su("span","x")),n=t.getBoundingClientRect(),r=xu(t,0,1).getBoundingClientRect();return Wu=Math.abs(n.left-r.left)>1}function $u(e,t,n,r){if(!e)return r(t,n,"ltr");var i=!1;for(var s=0;s<e.length;++s){var o=e[s];if(o.from<n&&o.to>t||t==n&&o.to==t)r(Math.max(o.from,t),Math.min(o.to,n),o.level==1?"rtl":"ltr"),i=!0}i||r(t,n,"ltr")}function Ju(e){return e.level%2?e.to:e.from}function Ku(e){return e.level%2?e.from:e.to}function Qu(e){var t=yo(e);return t?Ju(t[0]):0}function Gu(e){var t=yo(e);return t?Ku(au(t)):e.text.length}function Yu(e,t){var n=lo(e.doc,t),r=xs(n);r!=n&&(t=vo(r));var i=yo(r),s=i?i[0].level%2?Gu(r):Qu(r):0;return gt(t,s)}function Zu(e,t){var n,r=lo(e.doc,t);while(n=Es(r))r=n.find(1,!0).line,t=null;var i=yo(r),s=i?i[0].level%2?Qu(r):Gu(r):r.text.length;return gt(t==null?vo(r):t,s)}function ea(e,t){var n=Yu(e,t.line),r=lo(e.doc,n.line),i=yo(r);if(!i||i[0].level==0){var s=Math.max(0,r.text.search(/\S/)),o=t.line==n.line&&t.ch<=s&&t.ch;return gt(n.line,o?0:s)}return n}function ta(e,t,n){var r=e[0].level;return t==r?!0:n==r?!1:t<n}function ra(e,t){na=null;for(var n=0,r;n<e.length;++n){var i=e[n];if(i.from<t&&i.to>t)return n;if(i.from==t||i.to==t){if(r!=null)return ta(e,i.level,e[r].level)?(i.from!=i.to&&(na=r),n):(i.from!=i.to&&(na=n),r);r=n}}return r}function ia(e,t,n,r){if(!r)return t+n;do t+=n;while(t>0&&Eu(e.text.charAt(t)));return t}function sa(e,t,n,r){var i=yo(e);if(!i)return oa(e,t,n,r);var s=ra(i,t),o=i[s],u=ia(e,t,o.level%2?-n:n,r);for(;;){if(u>o.from&&u<o.to)return u;if(u==o.from||u==o.to)return ra(i,u)==s?u:(o=i[s+=n],n>0==o.level%2?o.to:o.from);o=i[s+=n];if(!o)return null;n>0==o.level%2?u=ia(e,o.to,-1,r):u=ia(e,o.from,1,r)}}function oa(e,t,n,r){var i=t+n;if(r)while(i>0&&Eu(e.text.charAt(i)))i+=n;return i<0||i>e.text.length?null:i}var e=navigator.userAgent,t=navigator.platform,n=/gecko\/\d/i.test(e),r=/MSIE \d/.test(e),i=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),s=r||i,o=s&&(r?document.documentMode||6:i[1]),u=/WebKit\//.test(e),a=u&&/Qt\/\d+\.\d+/.test(e),f=/Chrome\//.test(e),l=/Opera\//.test(e),c=/Apple Computer/.test(navigator.vendor),h=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),p=/PhantomJS/.test(e),d=/AppleWebKit/.test(e)&&/Mobile\/\w+/.test(e),v=d||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),m=d||/Mac/.test(t),g=/\bCrOS\b/.test(e),y=/win/i.test(t),b=l&&e.match(/Version\/(\d*\.\d*)/);b&&(b=Number(b[1])),b&&b>=15&&(l=!1,u=!0);var w=m&&(a||l&&(b==null||b<12.11)),E=n||s&&o>=9,S=!1,x=!1;I.prototype=du({update:function(e){var t=e.scrollWidth>e.clientWidth+1,n=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=t?r+"px":"0";var i=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=n?r+"px":"0",this.horiz.style.left=e.barLeft+"px";var s=e.viewWidth-e.barLeft-(n?r:0);this.horiz.firstChild.style.width=e.scrollWidth-e.clientWidth+s+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(r==0&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?r:0,bottom:t?r:0}},setScrollLeft:function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz)},setScrollTop:function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert)},zeroWidthHack:function(){var e=m&&!h?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new ru,this.disableVert=new ru},enableZeroWidthBar:function(e,t){function n(){var r=e.getBoundingClientRect(),i=document.elementFromPoint(r.left+1,r.bottom-1);i!=e?e.style.pointerEvents="none":t.set(1e3,n)}e.style.pointerEvents="auto",t.set(1e3,n)},clear:function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)}},I.prototype),q.prototype=du({update:function(){return{bottom:0,right:0}},setScrollLeft:function(){},setScrollTop:function(){},clear:function(){}},q.prototype),T.scrollbarModel={"native":I,"null":q},K.prototype.signal=function(e,t){Qo(e,t)&&this.events.push(arguments)},K.prototype.finish=function(){for(var e=0;e<this.events.length;e++)Wo.apply(null,this.events[e])};var gt=T.Pos=function(e,t){if(!(this instanceof gt))return new gt(e,t);this.line=e,this.ch=t},yt=T.cmpPos=function(e,t){return e.line-t.line||e.ch-t.ch},xt=null;At.prototype=du({init:function(e){function u(e){if(Jo(n,e))return;if(n.somethingSelected())xt={lineWise:!1,text:n.getSelections()},t.inaccurateSelection&&(t.prevInput="",t.inaccurateSelection=!1,i.value=xt.text.join("\n"),fu(i));else{if(!n.options.lineWiseCopyCut)return;var r=kt(n);xt={lineWise:!0,text:r.text},e.type=="cut"?n.setSelections(r.ranges,null,eu):(t.prevInput="",i.value=r.text.join("\n"),fu(i))}e.type=="cut"&&(n.state.cutIncoming=!0)}var t=this,n=this.cm,r=this.wrapper=Ot(),i=this.textarea=r.firstChild;e.wrapper.insertBefore(r,e.wrapper.firstChild),d&&(i.style.width="0px"),qo(i,"input",function(){s&&o>=9&&t.hasSelection&&(t.hasSelection=null),t.poll()}),qo(i,"paste",function(e){if(Jo(n,e)||Nt(e,n))return;n.state.pasteIncoming=!0,t.fastPoll()}),qo(i,"cut",u),qo(i,"copy",u),qo(e.scroller,"paste",function(r){if(xr(e,r)||Jo(n,r))return;n.state.pasteIncoming=!0,t.focus()}),qo(e.lineSpace,"selectstart",function(t){xr(e,t)||Po(t)}),qo(i,"compositionstart",function(){var e=n.getCursor("from");t.composing&&t.composing.range.clear(),t.composing={start:e,range:n.markText(e,n.getCursor("to"),{className:"CodeMirror-composing"})}}),qo(i,"compositionend",function(){t.composing&&(t.poll(),t.composing.range.clear(),t.composing=null)})},prepareSelection:function(){var e=this.cm,t=e.display,n=e.doc,r=fn(e);if(e.options.moveInputWithCursor){var i=Un(e,n.sel.primary().head,"div"),s=t.wrapper.getBoundingClientRect(),o=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+o.top-s.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+o.left-s.left))}return r},showSelection:function(e){var t=this.cm,n=t.display;Nu(n.cursorDiv,e.cursors),Nu(n.selectionDiv,e.selection),e.teTop!=null&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},reset:function(e){if(this.contextMenuPending)return;var t,n,r=this.cm,i=r.doc;if(r.somethingSelected()){this.prevInput="";var u=i.sel.primary();t=zu&&(u.to().line-u.from().line>100||(n=r.getSelection()).length>1e3);var a=t?"-":n||r.getSelection();this.textarea.value=a,r.state.focused&&fu(this.textarea),s&&o>=9&&(this.hasSelection=a)}else e||(this.prevInput=this.textarea.value="",s&&o>=9&&(this.hasSelection=null));this.inaccurateSelection=t},getField:function(){return this.textarea},supportsTouch:function(){return!1},focus:function(){if(this.cm.options.readOnly!="nocursor"&&(!v||ku()!=this.textarea))try{this.textarea.focus()}catch(e){}},blur:function(){this.textarea.blur()},resetPosition:function(){this.wrapper.style.top=this.wrapper.style.left=0},receivedFocus:function(){this.slowPoll()},slowPoll:function(){var e=this;if(e.pollingFast)return;e.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},fastPoll:function(){function n(){var r=t.poll();!r&&!e?(e=!0,t.polling.set(60,n)):(t.pollingFast=!1,t.slowPoll())}var e=!1,t=this;t.pollingFast=!0,t.polling.set(20,n)},poll:function(){var e=this.cm,t=this.textarea,n=this.prevInput;if(this.contextMenuPending||!e.state.focused||Uu(t)&&!n&&!this.composing||e.isReadOnly()||e.options.disableInput||e.state.keySeq)return!1;var r=t.value;if(r==n&&!e.somethingSelected())return!1;if(s&&o>=9&&this.hasSelection===r||m&&/[\uf700-\uf7ff]/.test(r))return e.display.input.reset(),!1;if(e.doc.sel==e.display.selForContextMenu){var i=r.charCodeAt(0);i==8203&&!n&&(n="");if(i==8666)return this.reset(),this.cm.execCommand("undo")}var u=0,a=Math.min(n.length,r.length);while(u<a&&n.charCodeAt(u)==r.charCodeAt(u))++u;var f=this;return ur(e,function(){Tt(e,r.slice(u),n.length-u,null,f.composing?"*compose":null),r.length>1e3||r.indexOf("\n")>-1?t.value=f.prevInput="":f.prevInput=r,f.composing&&(f.composing.range.clear(),f.composing.range=e.markText(f.composing.start,e.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},ensurePolled:function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},onKeyPress:function(){s&&o>=9&&(this.hasSelection=null),this.fastPoll()},onContextMenu:function(e){function m(){if(i.selectionStart!=null){var e=n.somethingSelected(),s=""+(e?i.value:"");i.value="⇚",i.value=s,t.prevInput=e?"":"",i.selectionStart=1,i.selectionEnd=s.length,r.selForContextMenu=n.doc.sel}}function g(){t.contextMenuPending=!1,t.wrapper.style.cssText=p,i.style.cssText=h,s&&o<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=f);if(i.selectionStart!=null){(!s||s&&o<9)&&m();var e=0,u=function(){r.selForContextMenu==n.doc.sel&&i.selectionStart==0&&i.selectionEnd>0&&t.prevInput==""?ar(n,Ui.selectAll)(n):e++<10?r.detectingSelectAll=setTimeout(u,500):r.input.reset()};r.detectingSelectAll=setTimeout(u,200)}}var t=this,n=t.cm,r=n.display,i=t.textarea,a=Tr(n,e),f=r.scroller.scrollTop;if(!a||l)return;var c=n.options.resetSelectionOnContextMenu;c&&n.doc.sel.contains(a)==-1&&ar(n,Zt)(n.doc,qt(a),eu);var h=i.style.cssText,p=t.wrapper.style.cssText;t.wrapper.style.cssText="position: absolute";var d=t.wrapper.getBoundingClientRect();i.style.cssText="position: absolute; width: 30px; height: 30px; top: "+(e.clientY-d.top-5)+"px; left: "+(e.clientX-d.left-5)+"px; z-index: 1000; background: "+(s?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";if(u)var v=window.scrollY;r.input.focus(),u&&window.scrollTo(null,v),r.input.reset(),n.somethingSelected()||(i.value=t.prevInput=" "),t.contextMenuPending=!0,r.selForContextMenu=n.doc.sel,clearTimeout(r.detectingSelectAll),s&&o>=9&&m();if(E){jo(e);var y=function(){zo(window,"mouseup",y),setTimeout(g,20)};qo(window,"mouseup",y)}else setTimeout(g,50)},readOnlyChanged:function(e){e||this.reset()},setUneditable:hu,needsContentAttribute:!1},At.prototype),Mt.prototype=du({init:function(e){function i(e){if(Jo(n,e))return;if(n.somethingSelected())xt={lineWise:!1,text:n.getSelections()},e.type=="cut"&&n.replaceSelection("",null,"cut");else{if(!n.options.lineWiseCopyCut)return;var t=kt(n);xt={lineWise:!0,text:t.text},e.type=="cut"&&n.operation(function(){n.setSelections(t.ranges,0,eu),n.replaceSelection("",null,"cut")})}if(e.clipboardData&&!d)e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/plain",xt.text.join("\n"));else{var r=Ot(),i=r.firstChild;n.display.lineSpace.insertBefore(r,n.display.lineSpace.firstChild),i.value=xt.text.join("\n");var s=document.activeElement;fu(i),setTimeout(function(){n.display.lineSpace.removeChild(r),s.focus()},50)}}var t=this,n=t.cm,r=t.div=e.lineDiv;Lt(r),qo(r,"paste",function(e){Jo(n,e)||Nt(e,n)}),qo(r,"compositionstart",function(e){var r=e.data;t.composing={sel:n.doc.sel,data:r,startData:r};if(!r)return;var i=n.doc.sel.primary(),s=n.getLine(i.head.line),o=s.indexOf(r,Math.max(0,i.head.ch-r.length));o>-1&&o<=i.head.ch&&(t.composing.sel=qt(gt(i.head.line,o),gt(i.head.line,o+r.length)))}),qo(r,"compositionupdate",function(e){t.composing.data=e.data}),qo(r,"compositionend",function(e){var n=t.composing;if(!n)return;e.data!=n.startData&&!/\u200b/.test(e.data)&&(n.data=e.data),setTimeout(function(){n.handled||t.applyComposition(n),t.composing==n&&(t.composing=null)},50)}),qo(r,"touchstart",function(){t.forceCompositionEnd()}),qo(r,"input",function(){if(t.composing)return;(n.isReadOnly()||!t.pollContent())&&ur(t.cm,function(){pr(n)})}),qo(r,"copy",i),qo(r,"cut",i)},prepareSelection:function(){var e=fn(this.cm,!1);return e.focus=this.cm.state.focused,e},showSelection:function(e,t){if(!e||!this.cm.display.view.length)return;(e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e)},showPrimarySelection:function(){var e=window.getSelection(),t=this.cm.doc.sel.primary(),r=Pt(this.cm,e.anchorNode,e.anchorOffset),i=Pt(this.cm,e.focusNode,e.focusOffset);if(r&&!r.bad&&i&&!i.bad&&yt(Et(r,i),t.from())==0&&yt(wt(r,i),t.to())==0)return;var s=_t(this.cm,t.from()),o=_t(this.cm,t.to());if(!s&&!o)return;var u=this.cm.display.view,a=e.rangeCount&&e.getRangeAt(0);if(!s)s={node:u[0].measure.map[2],offset:0};else if(!o){var f=u[u.length-1].measure,l=f.maps?f.maps[f.maps.length-1]:f.map;o={node:l[l.length-1],offset:l[l.length-2]-l[l.length-3]}}try{var c=xu(s.node,s.offset,o.offset,o.node)}catch(h){}c&&(!n&&this.cm.state.focused?(e.collapse(s.node,s.offset),c.collapsed||e.addRange(c)):(e.removeAllRanges(),e.addRange(c)),a&&e.anchorNode==null?e.addRange(a):n&&this.startGracePeriod()),this.rememberSelection()},startGracePeriod:function(){var e=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){e.gracePeriod=!1,e.selectionChanged()&&e.cm.operation(function(){e.cm.curOp.selectionChanged=!0})},20)},showMultipleSelections:function(e){Nu(this.cm.display.cursorDiv,e.cursors),Nu(this.cm.display.selectionDiv,e.selection)},rememberSelection:function(){var e=window.getSelection();this.lastAnchorNode=e.anchorNode,this.lastAnchorOffset=e.anchorOffset,this.lastFocusNode=e.focusNode,this.lastFocusOffset=e.focusOffset},selectionInEditor:function(){var e=window.getSelection();if(!e.rangeCount)return!1;var t=e.getRangeAt(0).commonAncestorContainer;return Cu(this.div,t)},focus:function(){this.cm.options.readOnly!="nocursor"&&this.div.focus()},blur:function(){this.div.blur()},getField:function(){return this.div},supportsTouch:function(){return!0},receivedFocus:function(){function t(){e.cm.state.focused&&(e.pollSelection(),e.polling.set(e.cm.options.pollInterval,t))}var e=this;this.selectionInEditor()?this.pollSelection():ur(this.cm,function(){e.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,t)},selectionChanged:function(){var e=window.getSelection();return e.anchorNode!=this.lastAnchorNode||e.anchorOffset!=this.lastAnchorOffset||e.focusNode!=this.lastFocusNode||e.focusOffset!=this.lastFocusOffset},pollSelection:function(){if(!this.composing&&!this.gracePeriod&&this.selectionChanged()){var e=window.getSelection(),t=this.cm;this.rememberSelection();var n=Pt(t,e.anchorNode,e.anchorOffset),r=Pt(t,e.focusNode,e.focusOffset);n&&r&&ur(t,function(){Zt(t.doc,qt(n,r),eu);if(n.bad||r.bad)t.curOp.selectionChanged=!0})}},pollContent:function(){var e=this.cm,t=e.display,n=e.doc.sel.primary(),r=n.from(),i=n.to();if(r.line<t.viewFrom||i.line>t.viewTo-1)return!1;var s;if(r.line==t.viewFrom||(s=mr(e,r.line))==0)var o=vo(t.view[0].line),u=t.view[0].node;else var o=vo(t.view[s].line),u=t.view[s-1].node.nextSibling;var a=mr(e,i.line);if(a==t.view.length-1)var f=t.viewTo-1,l=t.lineDiv.lastChild;else var f=vo(t.view[a+1].line)-1,l=t.view[a+1].node.previousSibling;var c=e.doc.splitLines(Bt(e,u,l,o,f)),h=co(e.doc,gt(o,0),gt(f,lo(e.doc,f).text.length));while(c.length>1&&h.length>1)if(au(c)==au(h))c.pop(),h.pop(),f--;else{if(c[0]!=h[0])break;c.shift(),h.shift(),o++}var p=0,d=0,v=c[0],m=h[0],g=Math.min(v.length,m.length);while(p<g&&v.charCodeAt(p)==m.charCodeAt(p))++p;var y=au(c),b=au(h),w=Math.min(y.length-(c.length==1?p:0),b.length-(h.length==1?p:0));while(d<w&&y.charCodeAt(y.length-d-1)==b.charCodeAt(b.length-d-1))++d;c[c.length-1]=y.slice(0,y.length-d),c[0]=c[0].slice(p);var E=gt(o,p),S=gt(f,h.length?au(h).length-d:0);if(c.length>1||c[0]||yt(E,S))return yi(e.doc,c,E,S,"+input"),!0},ensurePolled:function(){this.forceCompositionEnd()},reset:function(){this.forceCompositionEnd()},forceCompositionEnd:function(){if(!this.composing||this.composing.handled)return;this.applyComposition(this.composing),this.composing.handled=!0,this.div.blur(),this.div.focus()},applyComposition:function(e){this.cm.isReadOnly()?ar(this.cm,pr)(this.cm):e.data&&e.data!=e.startData&&ar(this.cm,Tt)(this.cm,e.data,0,e.sel)},setUneditable:function(e){e.contentEditable="false"},onKeyPress:function(e){e.preventDefault(),this.cm.isReadOnly()||ar(this.cm,Tt)(this.cm,String.fromCharCode(e.charCode==null?e.keyCode:e.charCode),0)},readOnlyChanged:function(e){this.div.contentEditable=String(e!="nocursor")},onContextMenu:hu,resetPosition:hu,needsContentAttribute:!0},Mt.prototype),T.inputStyles={textarea:At,contenteditable:Mt},jt.prototype={primary:function(){return this.ranges[this.primIndex]},equals:function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t<this.ranges.length;t++){var n=this.ranges[t],r=e.ranges[t];if(yt(n.anchor,r.anchor)!=0||yt(n.head,r.head)!=0)return!1}return!0},deepCopy:function(){for(var e=[],t=0;t<this.ranges.length;t++)e[t]=new Ft(bt(this.ranges[t].anchor),bt(this.ranges[t].head));return new jt(e,this.primIndex)},somethingSelected:function(){for(var e=0;e<this.ranges.length;e++)if(!this.ranges[e].empty())return!0;return!1},contains:function(e,t){t||(t=e);for(var n=0;n<this.ranges.length;n++){var r=this.ranges[n];if(yt(t,r.from())>=0&&yt(e,r.to())<=0)return n}return-1}},Ft.prototype={from:function(){return Et(this.anchor,this.head)},to:function(){return wt(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};var On={left:0,right:0,top:0,bottom:0},$n,Qn=null,Gn=0,Cr,kr,Dr=0,qr=0,Rr=null;s?Rr=-0.53:n?Rr=15:f?Rr=-0.7:c&&(Rr=-1/3);var Ur=function(e){var t=e.wheelDeltaX,n=e.wheelDeltaY;return t==null&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),n==null&&e.detail&&e.axis==e.VERTICAL_AXIS?n=e.detail:n==null&&(n=e.wheelDelta),{x:t,y:n}};T.wheelEventPixels=function(e){var t=Ur(e);return t.x*=Rr,t.y*=Rr,t};var Vr=new ru,Qr=null,oi=T.changeEnd=function(e){return e.text?gt(e.from.line+e.text.length-1,au(e.text).length+(e.text.length==1?e.from.ch:0)):e.to};T.prototype={constructor:T,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,t){var n=this.options,r=n[e];if(n[e]==t&&e!="mode")return;n[e]=t,_i.hasOwnProperty(e)&&ar(this,_i[e])(this,t,r)},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](Ji(e))},removeKeyMap:function(e){var t=this.state.keyMaps;for(var n=0;n<t.length;++n)if(t[n]==e||t[n].name==e)return t.splice(n,1),!0},addOverlay:fr(function(e,t){var n=e.token?e:T.getMode(this.options,e);if(n.startState)throw new Error("Overlays may not be stateful.");this.state.overlays.push({mode:n,modeSpec:e,opaque:t&&t.opaque}),this.state.modeGen++,pr(this)}),removeOverlay:fr(function(e){var t=this.state.overlays;for(var n=0;n<t.length;++n){var r=t[n].modeSpec;if(r==e||typeof e=="string"&&r.name==e){t.splice(n,1),this.state.modeGen++,pr(this);return}}}),indentLine:fr(function(e,t,n){typeof t!="string"&&typeof t!="number"&&(t==null?t=this.options.smartIndent?"smart":"prev":t=t?"add":"subtract"),Wt(this.doc,e)&&Ci(this,e,t,n)}),indentSelection:fr(function(e){var t=this.doc.sel.ranges,n=-1;for(var r=0;r<t.length;r++){var i=t[r];if(!i.empty()){var s=i.from(),o=i.to(),u=Math.max(n,s.line);n=Math.min(this.lastLine(),o.line-(o.ch?0:1))+1;for(var a=u;a<n;++a)Ci(this,a,e);var f=this.doc.sel.ranges;s.ch==0&&t.length==f.length&&f[r].from().ch>0&&Kt(this.doc,r,new Ft(s,f[r].to()),eu)}else i.head.line>n&&(Ci(this,i.head.line,e,!0),n=i.head.line,r==this.doc.sel.primIndex&&Ti(this))}}),getTokenAt:function(e,t){return Is(this,e,t)},getLineTokens:function(e,t){return Is(this,gt(e),t,!0)},getTokenTypeAt:function(e){e=Ut(this.doc,e);var t=Us(this,lo(this.doc,e.line)),n=0,r=(t.length-1)/2,i=e.ch,s;if(i==0)s=t[2];else for(;;){var o=n+r>>1;if((o?t[o*2-1]:0)>=i)r=o;else{if(!(t[o*2+1]<i)){s=t[o*2+2];break}n=o+1}}var u=s?s.indexOf("cm-overlay "):-1;return u<0?s:u==0?null:s.slice(0,u-1)},getModeAt:function(e){var t=this.doc.mode;return t.innerMode?T.innerMode(t,this.getTokenAt(e).state).mode:t},getHelper:function(e,t){return this.getHelpers(e,t)[0]},getHelpers:function(e,t){var n=[];if(!Ii.hasOwnProperty(t))return n;var r=Ii[t],i=this.getModeAt(e);if(typeof i[t]=="string")r[i[t]]&&n.push(r[i[t]]);else if(i[t])for(var s=0;s<i[t].length;s++){var o=r[i[t][s]];o&&n.push(o)}else i.helperType&&r[i.helperType]?n.push(r[i.helperType]):r[i.name]&&n.push(r[i.name]);for(var s=0;s<r._global.length;s++){var u=r._global[s];u.pred(i,this)&&lu(n,u.val)==-1&&n.push(u.val)}return n},getStateAfter:function(e,t){var n=this.doc;return e=Rt(n,e==null?n.first+n.size-1:e),mn(this,e+1,t)},cursorCoords:function(e,t){var n,r=this.doc.sel.primary();return e==null?n=r.head:typeof e=="object"?n=Ut(this.doc,e):n=e?r.from():r.to(),Un(this,n,t||"page")},charCoords:function(e,t){return Rn(this,Ut(this.doc,e),t||"page")},coordsChar:function(e,t){return e=qn(this,e,t||"page"),Xn(this,e.left,e.top)},lineAtHeight:function(e,t){return e=qn(this,{top:e,left:0},t||"page").top,mo(this.doc,e+this.display.viewOffset)},heightAtLine:function(e,t){var n=!1,r;if(typeof e=="number"){var i=this.doc.first+this.doc.size-1;e<this.doc.first?e=this.doc.first:e>i&&(e=i,n=!0),r=lo(this.doc,e)}else r=e;return In(this,r,{top:0,left:0},t||"page").top+(n?this.doc.height-go(r):0)},defaultTextHeight:function(){return Jn(this.display)},defaultCharWidth:function(){return Kn(this.display)},setGutterMarker:fr(function(e,t,n){return ki(this.doc,e,"gutter",function(e){var r=e.gutterMarkers||(e.gutterMarkers={});return r[t]=n,!n&&bu(r)&&(e.gutterMarkers=null),!0})}),clearGutter:fr(function(e){var t=this,n=t.doc,r=n.first;n.iter(function(n){n.gutterMarkers&&n.gutterMarkers[e]&&(n.gutterMarkers[e]=null,dr(t,r,"gutter"),bu(n.gutterMarkers)&&(n.gutterMarkers=null)),++r})}),lineInfo:function(e){if(typeof e=="number"){if(!Wt(this.doc,e))return null;var t=e;e=lo(this.doc,e);if(!e)return null}else{var t=vo(e);if(t==null)return null}return{line:t,handle:e,text:e.text,gutterMarkers:e.gutterMarkers,textClass:e.textClass,bgClass:e.bgClass,wrapClass:e.wrapClass,widgets:e.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,r,i){var s=this.display;e=Un(this,Ut(this.doc,e));var o=e.bottom,u=e.left;t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),s.sizer.appendChild(t);if(r=="over")o=e.top;else if(r=="above"||r=="near"){var a=Math.max(s.wrapper.clientHeight,this.doc.height),f=Math.max(s.sizer.clientWidth,s.lineSpace.clientWidth);(r=="above"||e.bottom+t.offsetHeight>a)&&e.top>t.offsetHeight?o=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=a&&(o=e.bottom),u+t.offsetWidth>f&&(u=f-t.offsetWidth)}t.style.top=o+"px",t.style.left=t.style.right="",i=="right"?(u=s.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):(i=="left"?u=0:i=="middle"&&(u=(s.sizer.clientWidth-t.offsetWidth)/2),t.style.left=u+"px"),n&&Ei(this,u,o,u+t.offsetWidth,o+t.offsetHeight)},triggerOnKeyDown:fr(Gr),triggerOnKeyPress:fr(ei),triggerOnKeyUp:Zr,execCommand:function(e){if(Ui.hasOwnProperty(e))return Ui[e].call(null,this)},triggerElectric:fr(function(e){Ct(this,e)}),findPosH:function(e,t,n,r){var i=1;t<0&&(i=-1,t=-t);for(var s=0,o=Ut(this.doc,e);s<t;++s){o=Ai(this.doc,o,i,n,r);if(o.hitSide)break}return o},moveH:fr(function(e,t){var n=this;n.extendSelectionsBy(function(r){return n.display.shift||n.doc.extend||r.empty()?Ai(n.doc,r.head,e,t,n.options.rtlMoveVisually):e<0?r.from():r.to()},nu)}),deleteH:fr(function(e,t){var n=this.doc.sel,r=this.doc;n.somethingSelected()?r.replaceSelection("",null,"+delete"):Li(this,function(n){var i=Ai(r,n.head,e,t,!1);return e<0?{from:i,to:n.head}:{from:n.head,to:i}})}),findPosV:function(e,t,n,r){var i=1,s=r;t<0&&(i=-1,t=-t);for(var o=0,u=Ut(this.doc,e);o<t;++o){var a=Un(this,u,"div");s==null?s=a.left:a.left=s,u=Oi(this,a,i,n);if(u.hitSide)break}return u},moveV:fr(function(e,t){var n=this,r=this.doc,i=[],s=!n.display.shift&&!r.extend&&r.sel.somethingSelected();r.extendSelectionsBy(function(o){if(s)return e<0?o.from():o.to();var u=Un(n,o.head,"div");o.goalColumn!=null&&(u.left=o.goalColumn),i.push(u.left);var a=Oi(n,u,e,t);return t=="page"&&o==r.sel.primary()&&xi(n,null,Rn(n,a,"div").top-u.top),a},nu);if(i.length)for(var o=0;o<r.sel.ranges.length;o++)r.sel.ranges[o].goalColumn=i[o]}),findWordAt:function(e){var t=this.doc,n=lo(t,e.line).text,r=e.ch,i=e.ch;if(n){var s=this.getHelper(e,"wordChars");(e.xRel<0||i==n.length)&&r?--r:++i;var o=n.charAt(r),u=yu(o,s)?function(e){return yu(e,s)}:/\s/.test(o)?function(e){return/\s/.test(e)}:function(e){return!/\s/.test(e)&&!yu(e)};while(r>0&&u(n.charAt(r-1)))--r;while(i<n.length&&u(n.charAt(i)))++i}return new Ft(gt(e.line,r),gt(e.line,i))},toggleOverwrite:function(e){if(e!=null&&e==this.state.overwrite)return;(this.state.overwrite=!this.state.overwrite)?Ou(this.display.cursorDiv,"CodeMirror-overwrite"):Au(this.display.cursorDiv,"CodeMirror-overwrite"),Wo(this,"overwriteToggle",this,this.state.overwrite)},hasFocus:function(){return this.display.input.getField()==ku()},isReadOnly:function(){return!!this.options.readOnly||!!this.doc.cantEdit},scrollTo:fr(function(e,t){(e!=null||t!=null)&&Ni(this),e!=null&&(this.curOp.scrollLeft=e),t!=null&&(this.curOp.scrollTop=t)}),getScrollInfo:function(){var e=this.display.scroller;return{left:e.scrollLeft,top:e.scrollTop,height:e.scrollHeight-wn(this)-this.display.barHeight,width:e.scrollWidth-wn(this)-this.display.barWidth,clientHeight:Sn(this),clientWidth:En(this)}},scrollIntoView:fr(function(e,t){e==null?(e={from:this.doc.sel.primary().head,to:null},t==null&&(t=this.options.cursorScrollMargin)):typeof e=="number"?e={from:gt(e,0),to:null}:e.from==null&&(e={from:e,to:null}),e.to||(e.to=e.from),e.margin=t||0;if(e.from.line!=null)Ni(this),this.curOp.scrollToPos=e;else{var n=Si(this,Math.min(e.from.left,e.to.left),Math.min(e.from.top,e.to.top)-e.margin,Math.max(e.from.right,e.to.right),Math.max(e.from.bottom,e.to.bottom)+e.margin);this.scrollTo(n.scrollLeft,n.scrollTop)}}),setSize:fr(function(e,t){function r(e){return typeof e=="number"||/^\d+$/.test(String(e))?e+"px":e}var n=this;e!=null&&(n.display.wrapper.style.width=r(e)),t!=null&&(n.display.wrapper.style.height=r(t)),n.options.lineWrapping&&Hn(this);var i=n.display.viewFrom;n.doc.iter(i,n.display.viewTo,function(e){if(e.widgets)for(var t=0;t<e.widgets.length;t++)if(e.widgets[t].noHScroll){dr(n,i,"widget");break}++i}),n.curOp.forceUpdate=!0,Wo(n,"refresh",this)}),operation:function(e){return ur(this,e)},refresh:fr(function(){var e=this.display.cachedTextHeight;pr(this),this.curOp.forceUpdate=!0,Bn(this),this.scrollTo(this.doc.scrollLeft,this.doc.scrollTop),P(this),(e==null||Math.abs(e-Jn(this.display))>.5)&&O(this),Wo(this,"refresh",this)}),swapDoc:fr(function(e){var t=this.doc;return t.cm=null,fo(this,e),Bn(this),this.display.input.reset(),this.scrollTo(e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,Vo(this,"swapDoc",this,t),t}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Go(T);var Mi=T.defaults={},_i=T.optionHandlers={},Pi=T.Init={toString:function(){return"CodeMirror.Init"}};Di("value","",function(e,t){e.setValue(t)},!0),Di("mode",null,function(e,t){e.doc.modeOption=t,C(e)},!0),Di("indentUnit",2,C,!0),Di("indentWithTabs",!1),Di("smartIndent",!0),Di("tabSize",4,function(e){k(e),Bn(e),pr(e)},!0),Di("lineSeparator",null,function(e,t){e.doc.lineSep=t;if(!t)return;var n=[],r=e.doc.first;e.doc.iter(function(e){for(var i=0;;){var s=e.text.indexOf(t,i);if(s==-1)break;i=s+t.length,n.push(gt(r,s))}r++});for(var i=n.length-1;i>=0;i--)yi(e.doc,t,n[i],gt(n[i].line,n[i].ch+t.length))}),Di("specialChars",/[\u0000-\u001f\u007f\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g,function(e,t,n){e.state.specialChars=new RegExp(t.source+(t.test(" ")?"":"| "),"g"),n!=T.Init&&e.refresh()}),Di("specialCharPlaceholder",Js,function(e){e.refresh()},!0),Di("electricChars",!0),Di("inputStyle",v?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),Di("rtlMoveVisually",!y),Di("wholeLineUpdateBefore",!0),Di("theme","default",function(e){M(e),_(e)},!0),Di("keyMap","default",function(e,t,n){var r=Ji(t),i=n!=T.Init&&Ji(n);i&&i.detach&&i.detach(e,r),r.attach&&r.attach(e,i||null)}),Di("extraKeys",null),Di("lineWrapping",!1,L,!0),Di("gutters",[],function(e){j(e.options),_(e)},!0),Di("fixedGutter",!0,function(e,t){e.display.gutters.style.left=t?J(e.display)+"px":"0",e.refresh()},!0),Di("coverGutterNextToScrollbar",!1,function(e){U(e)},!0),Di("scrollbarStyle","native",function(e){R(e),U(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),Di("lineNumbers",!1,function(e){j(e.options),_(e)},!0),Di("firstLineNumber",1,_,!0),Di("lineNumberFormatter",function(e){return e},_,!0),Di("showCursorWhenSelecting",!1,an,!0),Di("resetSelectionOnContextMenu",!0),Di("lineWiseCopyCut",!0),Di("readOnly",!1,function(e,t){t=="nocursor"?(ri(e),e.display.input.blur(),e.display.disabled=!0):e.display.disabled=!1,e.display.input.readOnlyChanged(t)}),Di("disableInput",!1,function(e,t){t||e.display.input.reset()},!0),Di("dragDrop",!0,Er),Di("allowDropFileTypes",null),Di("cursorBlinkRate",530),Di("cursorScrollMargin",0),Di("cursorHeight",1,an,!0),Di("singleCursorHeightPerLine",!0,an,!0),Di("workTime",100),Di("workDelay",100),Di("flattenSpans",!0,k,!0),Di("addModeClass",!1,k,!0),Di("pollInterval",100),Di("undoDepth",200,function(e,t){e.doc.history.undoDepth=t}),Di("historyEventDelay",1250),Di("viewportMargin",10,function(e){e.refresh()},!0),Di("maxHighlightLength",1e4,k,!0),Di("moveInputWithCursor",!0,function(e,t){t||e.display.input.resetPosition()}),Di("tabindex",null,function(e,t){e.display.input.getField().tabIndex=t||""}),Di("autofocus",null);var Hi=T.modes={},Bi=T.mimeModes={};T.defineMode=function(e,t){!T.defaults.mode&&e!="null"&&(T.defaults.mode=e),arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),Hi[e]=t},T.defineMIME=function(e,t){Bi[e]=t},T.resolveMode=function(e){if(typeof e=="string"&&Bi.hasOwnProperty(e))e=Bi[e];else if(e&&typeof e.name=="string"&&Bi.hasOwnProperty(e.name)){var t=Bi[e.name];typeof t=="string"&&(t={name:t}),e=pu(t,e),e.name=t.name}else if(typeof e=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return T.resolveMode("application/xml");return typeof e=="string"?{name:e}:e||{name:"null"}},T.getMode=function(e,t){var t=T.resolveMode(t),n=Hi[t.name];if(!n)return T.getMode(e,"text/plain");var r=n(e,t);if(ji.hasOwnProperty(t.name)){var i=ji[t.name];for(var s in i){if(!i.hasOwnProperty(s))continue;r.hasOwnProperty(s)&&(r["_"+s]=r[s]),r[s]=i[s]}}r.name=t.name,t.helperType&&(r.helperType=t.helperType);if(t.modeProps)for(var s in t.modeProps)r[s]=t.modeProps[s];return r},T.defineMode("null",function(){return{token:function(e){e.skipToEnd()}}}),T.defineMIME("text/plain","null");var ji=T.modeExtensions={};T.extendMode=function(e,t){var n=ji.hasOwnProperty(e)?ji[e]:ji[e]={};du(t,n)},T.defineExtension=function(e,t){T.prototype[e]=t},T.defineDocExtension=function(e,t){so.prototype[e]=t},T.defineOption=Di;var Fi=[];T.defineInitHook=function(e){Fi.push(e)};var Ii=T.helpers={};T.registerHelper=function(e,t,n){Ii.hasOwnProperty(e)||(Ii[e]=T[e]={_global:[]}),Ii[e][t]=n},T.registerGlobalHelper=function(e,t,n,r){T.registerHelper(e,t,r),Ii[e]._global.push({pred:n,val:r})};var qi=T.copyState=function(e,t){if(t===!0)return t;if(e.copyState)return e.copyState(t);var n={};for(var r in t){var i=t[r];i instanceof Array&&(i=i.concat([])),n[r]=i}return n},Ri=T.startState=function(e,t,n){return e.startState?e.startState(t,n):!0};T.innerMode=function(e,t){while(e.innerMode){var n=e.innerMode(t);if(!n||n.mode==e)break;t=n.state,e=n.mode}return n||{mode:e,state:t}};var Ui=T.commands={selectAll:function(e){e.setSelection(gt(e.firstLine(),0),gt(e.lastLine()),eu)},singleSelection:function(e){e.setSelection(e.getCursor("anchor"),e.getCursor("head"),eu)},killLine:function(e){Li(e,function(t){if(t.empty()){var n=lo(e.doc,t.head.line).text.length;return t.head.ch==n&&t.head.line<e.lastLine()?{from:t.head,to:gt(t.head.line+1,0)}:{from:t.head,to:gt(t.head.line,n)}}return{from:t.from(),to:t.to()}})},deleteLine:function(e){Li(e,function(t){return{from:gt(t.from().line,0),to:Ut(e.doc,gt(t.to().line+1,0))}})},delLineLeft:function(e){Li(e,function(e){return{from:gt(e.from().line,0),to:e.from()}})},delWrappedLineLeft:function(e){Li(e,function(t){var n=e.charCoords(t.head,"div").top+5,r=e.coordsChar({left:0,top:n},"div");return{from:r,to:t.from()}})},delWrappedLineRight:function(e){Li(e,function(t){var n=e.charCoords(t.head,"div").top+5,r=e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:n},"div");return{from:t.from(),to:r}})},undo:function(e){e.undo()},redo:function(e){e.redo()},undoSelection:function(e){e.undoSelection()},redoSelection:function(e){e.redoSelection()},goDocStart:function(e){e.extendSelection(gt(e.firstLine(),0))},goDocEnd:function(e){e.extendSelection(gt(e.lastLine()))},goLineStart:function(e){e.extendSelectionsBy(function(t){return Yu(e,t.head.line)},{origin:"+move",bias:1})},goLineStartSmart:function(e){e.extendSelectionsBy(function(t){return ea(e,t.head)},{origin:"+move",bias:1})},goLineEnd:function(e){e.extendSelectionsBy(function(t){return Zu(e,t.head.line)},{origin:"+move",bias:-1})},goLineRight:function(e){e.extendSelectionsBy(function(t){var n=e.charCoords(t.head,"div").top+5;return e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:n},"div")},nu)},goLineLeft:function(e){e.extendSelectionsBy(function(t){var n=e.charCoords(t.head,"div").top+5;return e.coordsChar({left:0,top:n},"div")},nu)},goLineLeftSmart:function(e){e.extendSelectionsBy(function(t){var n=e.charCoords(t.head,"div").top+5,r=e.coordsChar({left:0,top:n},"div");return r.ch<e.getLine(r.line).search(/\S/)?ea(e,t.head):r},nu)},goLineUp:function(e){e.moveV(-1,"line")},goLineDown:function(e){e.moveV(1,"line")},goPageUp:function(e){e.moveV(-1,"page")},goPageDown:function(e){e.moveV(1,"page")},goCharLeft:function(e){e.moveH(-1,"char")},goCharRight:function(e){e.moveH(1,"char")},goColumnLeft:function(e){e.moveH(-1,"column")},goColumnRight:function(e){e.moveH(1,"column")},goWordLeft:function(e){e.moveH(-1,"word")},goGroupRight:function(e){e.moveH(1,"group")},goGroupLeft:function(e){e.moveH(-1,"group")},goWordRight:function(e){e.moveH(1,"word")},delCharBefore:function(e){e.deleteH(-1,"char")},delCharAfter:function(e){e.deleteH(1,"char")},delWordBefore:function(e){e.deleteH(-1,"word")},delWordAfter:function(e){e.deleteH(1,"word")},delGroupBefore:function(e){e.deleteH(-1,"group")},delGroupAfter:function(e){e.deleteH(1,"group")},indentAuto:function(e){e.indentSelection("smart")},indentMore:function(e){e.indentSelection("add")},indentLess:function(e){e.indentSelection("subtract")},insertTab:function(e){e.replaceSelection(" ")},insertSoftTab:function(e){var t=[],n=e.listSelections(),r=e.options.tabSize;for(var i=0;i<n.length;i++){var s=n[i].from(),o=iu(e.getLine(s.line),s.ch,r);t.push(uu(r-o%r))}e.replaceSelections(t)},defaultTab:function(e){e.somethingSelected()?e.indentSelection("add"):e.execCommand("insertTab")},transposeChars:function(e){ur(e,function(){var t=e.listSelections(),n=[];for(var r=0;r<t.length;r++){var i=t[r].head,s=lo(e.doc,i.line).text;if(s){i.ch==s.length&&(i=new gt(i.line,i.ch-1));if(i.ch>0)i=new gt(i.line,i.ch+1),e.replaceRange(s.charAt(i.ch-1)+s.charAt(i.ch-2),gt(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var o=lo(e.doc,i.line-1).text;o&&e.replaceRange(s.charAt(0)+e.doc.lineSeparator()+o.charAt(o.length-1),gt(i.line-1,o.length-1),gt(i.line,1),"+transpose")}}n.push(new Ft(i,i))}e.setSelections(n)})},newlineAndIndent:function(e){ur(e,function(){var t=e.listSelections().length;for(var n=0;n<t;n++){var r=e.listSelections()[n];e.replaceRange(e.doc.lineSeparator(),r.anchor,r.head,"+input"),e.indentLine(r.from().line+1,null,!0)}Ti(e)})},openLine:function(e){e.replaceSelection("\n","start")},toggleOverwrite:function(e){e.toggleOverwrite()}},zi=T.keyMap={};zi.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},zi.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},zi.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},zi.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},zi["default"]=m?zi.macDefault:zi.pcDefault,T.normalizeKeyMap=function(e){var t={};for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];if(/^(name|fallthrough|(de|at)tach)$/.test(n))continue;if(r=="..."){delete e[n];continue}var i=cu(n.split(" "),Wi);for(var s=0;s<i.length;s++){var o,u;s==i.length-1?(u=i.join(" "),o=r):(u=i.slice(0,s+1).join(" "),o="...");var a=t[u];if(!a)t[u]=o;else if(a!=o)throw new Error("Inconsistent bindings for "+u)}delete e[n]}for(var f in t)e[f]=t[f];return e};var Xi=T.lookupKey=function(e,t,n,r){t=Ji(t);var i=t.call?t.call(e,r):t[e];if(i===!1)return"nothing";if(i==="...")return"multi";if(i!=null&&n(i))return"handled";if(t.fallthrough){if(Object.prototype.toString.call(t.fallthrough)!="[object Array]")return Xi(e,t.fallthrough,n,r);for(var s=0;s<t.fallthrough.length;s++){var o=Xi(e,t.fallthrough[s],n,r);if(o)return o}}},Vi=T.isModifierKey=function(e){var t=typeof e=="string"?e:Vu[e.keyCode];return t=="Ctrl"||t=="Alt"||t=="Shift"||t=="Mod"},$i=T.keyName=function(e,t){if(l&&e.keyCode==34&&e["char"])return!1;var n=Vu[e.keyCode],r=n;return r==null||e.altGraphKey?!1:(e.altKey&&n!="Alt"&&(r="Alt-"+r),(w?e.metaKey:e.ctrlKey)&&n!="Ctrl"&&(r="Ctrl-"+r),(w?e.ctrlKey:e.metaKey)&&n!="Cmd"&&(r="Cmd-"+r),!t&&e.shiftKey&&n!="Shift"&&(r="Shift-"+r),r)};T.fromTextArea=function(e,t){function r(){e.value=a.getValue()}t=t?du(t):{},t.value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder);if(t.autofocus==null){var n=ku();t.autofocus=n==e||e.getAttribute("autofocus")!=null&&n==document.body}if(e.form){qo(e.form,"submit",r);if(!t.leaveSubmitMethodAlone){var i=e.form,s=i.submit;try{var o=i.submit=function(){r(),i.submit=s,i.submit(),i.submit=o}}catch(u){}}}t.finishInit=function(t){t.save=r,t.getTextArea=function(){return e},t.toTextArea=function(){t.toTextArea=isNaN,r(),e.parentNode.removeChild(t.getWrapperElement()),e.style.display="",e.form&&(zo(e.form,"submit",r),typeof e.form.submit=="function"&&(e.form.submit=s))}},e.style.display="none";var a=T(function(t){e.parentNode.insertBefore(t,e.nextSibling)},t);return a};var Ki=T.StringStream=function(e,t){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};Ki.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||undefined},next:function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},eat:function(e){var t=this.string.charAt(this.pos);if(typeof e=="string")var n=t==e;else var n=t&&(e.test?e.test(t):e(t));if(n)return++this.pos,t},eatWhile:function(e){var t=this.pos;while(this.eat(e));return this.pos>t},eatSpace:function(){var e=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>e},skipToEnd:function(){this.pos=this.string.length},skipTo:function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},backUp:function(e){this.pos-=e},column:function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=iu(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?iu(this.string,this.lineStart,this.tabSize):0)},indentation:function(){return iu(this.string,null,this.tabSize)-(this.lineStart?iu(this.string,this.lineStart,this.tabSize):0)},match:function(e,t,n){if(typeof e!="string"){var s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&t!==!1&&(this.pos+=s[0].length),s)}var r=function(e){return n?e.toLowerCase():e},i=this.string.substr(this.pos,e.length);if(r(i)==r(e))return t!==!1&&(this.pos+=e.length),!0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}}};var Qi=0,Gi=T.TextMarker=function(e,t){this.lines=[],this.type=t,this.doc=e,this.id=++Qi};Go(Gi),Gi.prototype.clear=function(){if(this.explicitlyCleared)return;var e=this.doc.cm,t=e&&!e.curOp;t&&Yn(e);if(Qo(this,"clear")){var n=this.find();n&&Vo(this,"clear",n.from,n.to)}var r=null,i=null;for(var s=0;s<this.lines.length;++s){var o=this.lines[s],u=ss(o.markedSpans,this);e&&!this.collapsed?dr(e,vo(o),"text"):e&&(u.to!=null&&(i=vo(o)),u.from!=null&&(r=vo(o))),o.markedSpans=os(o.markedSpans,u),u.from==null&&this.collapsed&&!ks(this.doc,o)&&e&&po(o,Jn(e.display))}if(e&&this.collapsed&&!e.options.lineWrapping)for(var s=0;s<this.lines.length;++s){var a=xs(this.lines[s]),f=H(a);f>e.display.maxLineLength&&(e.display.maxLine=a,e.display.maxLineLength=f,e.display.maxLineChanged=!0)}r!=null&&e&&this.collapsed&&pr(e,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&nn(e.doc)),e&&Vo(e,"markerCleared",e,this),t&&er(e),this.parent&&this.parent.clear()},Gi.prototype.find=function(e,t){e==null&&this.type=="bookmark"&&(e=1);var n,r;for(var i=0;i<this.lines.length;++i){var s=this.lines[i],o=ss(s.markedSpans,this);if(o.from!=null){n=gt(t?s:vo(s),o.from);if(e==-1)return n}if(o.to!=null){r=gt(t?s:vo(s),o.to);if(e==1)return r}}return n&&{from:n,to:r}},Gi.prototype.changed=function(){var e=this.find(-1,!0),t=this,n=this.doc.cm;if(!e||!n)return;ur(n,function(){var r=e.line,i=vo(e.line),s=kn(n,i);s&&(Pn(s),n.curOp.selectionChanged=n.curOp.forceUpdate=!0),n.curOp.updateMaxLine=!0;if(!ks(t.doc,r)&&t.height!=null){var o=t.height;t.height=null;var u=Ms(t)-o;u&&po(r,r.height+u)}})},Gi.prototype.attachLine=function(e){if(!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;(!t.maybeHiddenMarkers||lu(t.maybeHiddenMarkers,this)==-1)&&(t.maybeUnhiddenMarkers||(t.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(e)},Gi.prototype.detachLine=function(e){this.lines.splice(lu(this.lines,e),1);if(!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;(t.maybeHiddenMarkers||(t.maybeHiddenMarkers=[])).push(this)}};var Qi=0,Zi=T.SharedTextMarker=function(e,t){this.markers=e,this.primary=t;for(var n=0;n<e.length;++n)e[n].parent=this};Go(Zi),Zi.prototype.clear=function(){if(this.explicitlyCleared)return;this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)this.markers[e].clear();Vo(this,"clear")},Zi.prototype.find=function(e,t){return this.primary.find(e,t)};var As=T.LineWidget=function(e,t,n){if(n)for(var r in n)n.hasOwnProperty(r)&&(this[r]=n[r]);this.doc=e,this.node=t};Go(As),As.prototype.clear=function(){var e=this.doc.cm,t=this.line.widgets,n=this.line,r=vo(n);if(r==null||!t)return;for(var i=0;i<t.length;++i)t[i]==this&&t.splice(i--,1);t.length||(n.widgets=null);var s=Ms(this);po(n,Math.max(0,n.height-s)),e&&ur(e,function(){Os(e,n,-s),dr(e,r,"widget")})},As.prototype.changed=function(){var e=this.height,t=this.doc.cm,n=this.line;this.height=null;var r=Ms(this)-e;if(!r)return;po(n,n.height+r),t&&ur(t,function(){t.curOp.forceUpdate=!0,Os(t,n,r)})};var Ds=T.Line=function(e,t,n){this.text=e,vs(this,t),this.height=n?n(this):1};Go(Ds),Ds.prototype.lineNo=function(){return vo(this)};var Ws={},Xs={};no.prototype={chunkSize:function(){return this.lines.length},removeInner:function(e,t){for(var n=e,r=e+t;n<r;++n){var i=this.lines[n];this.height-=i.height,Hs(i),Vo(i,"delete")}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,n){this.height+=n,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var r=0;r<t.length;++r)t[r].parent=this},iterN:function(e,t,n){for(var r=e+t;e<r;++e)if(n(this.lines[e]))return!0}},ro.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var n=0;n<this.children.length;++n){var r=this.children[n],i=r.chunkSize();if(e<i){var s=Math.min(t,i-e),o=r.height;r.removeInner(e,s),this.height-=o-r.height,i==s&&(this.children.splice(n--,1),r.parent=null);if((t-=s)==0)break;e=0}else e-=i}if(this.size-t<25&&(this.children.length>1||!(this.children[0]instanceof no))){var u=[];this.collapse(u),this.children=[new no(u)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t<this.children.length;++t)this.children[t].collapse(e)},insertInner:function(e,t,n){this.size+=t.length,this.height+=n;for(var r=0;r<this.children.length;++r){var i=this.children[r],s=i.chunkSize();if(e<=s){i.insertInner(e,t,n);if(i.lines&&i.lines.length>50){var o=i.lines.length%25+25;for(var u=o;u<i.lines.length;){var a=new no(i.lines.slice(u,u+=25));i.height-=a.height,this.children.splice(++r,0,a),a.parent=this}i.lines=i.lines.slice(0,o),this.maybeSpill()}break}e-=s}},maybeSpill:function(){if(this.children.length<=10)return;var e=this;do{var t=e.children.splice(e.children.length-5,5),n=new ro(t);if(!e.parent){var r=new ro(e.children);r.parent=e,e.children=[r,n],e=r}else{e.size-=n.size,e.height-=n.height;var i=lu(e.parent.children,e);e.parent.children.splice(i+1,0,n)}n.parent=e.parent}while(e.children.length>10);e.parent.maybeSpill()},iterN:function(e,t,n){for(var r=0;r<this.children.length;++r){var i=this.children[r],s=i.chunkSize();if(e<s){var o=Math.min(t,s-e);if(i.iterN(e,o,n))return!0;if((t-=o)==0)break;e=0}else e-=s}}};var io=0,so=T.Doc=function(e,t,n,r){if(!(this instanceof so))return new so(e,t,n,r);n==null&&(n=0),ro.call(this,[new no([new Ds("",null)])]),this.first=n,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=n;var i=gt(n,0);this.sel=qt(i),this.history=new bo(null),this.id=++io,this.modeOption=t,this.lineSep=r,this.extend=!1,typeof e=="string"&&(e=this.splitLines(e)),to(this,{from:i,to:i,text:e}),Zt(this,qt(i),eu)};so.prototype=pu(ro.prototype,{constructor:so,iter:function(e,t,n){n?this.iterN(e-this.first,t-e,n):this.iterN(this.first,this.first+this.size,e)},insert:function(e,t){var n=0;for(var r=0;r<t.length;++r)n+=t[r].height;this.insertInner(e-this.first,t,n)},remove:function(e,t){this.removeInner(e-this.first,t)},getValue:function(e){var t=ho(this,this.first,this.first+this.size);return e===!1?t:t.join(e||this.lineSeparator())},setValue:lr(function(e){var t=gt(this.first,0),n=this.first+this.size-1;hi(this,{from:t,to:gt(n,lo(this,n).text.length),text:this.splitLines(e),origin:"setValue",full:!0},!0),Zt(this,qt(t))}),replaceRange:function(e,t,n,r){t=Ut(this,t),n=n?Ut(this,n):t,yi(this,e,t,n,r)},getRange:function(e,t,n){var r=co(this,Ut(this,e),Ut(this,t));return n===!1?r:r.join(n||this.lineSeparator())},getLine:function(e){var t=this.getLineHandle(e);return t&&t.text},getLineHandle:function(e){if(Wt(this,e))return lo(this,e)},getLineNumber:function(e){return vo(e)},getLineHandleVisualStart:function(e){return typeof e=="number"&&(e=lo(this,e)),xs(e)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(e){return Ut(this,e)},getCursor:function(e){var t=this.sel.primary(),n;return e==null||e=="head"?n=t.head:e=="anchor"?n=t.anchor:e=="end"||e=="to"||e===!1?n=t.to():n=t.from(),n},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:lr(function(e,t,n){Qt(this,Ut(this,typeof e=="number"?gt(e,t||0):e),null,n)}),setSelection:lr(function(e,t,n){Qt(this,Ut(this,e),Ut(this,t||e),n)}),extendSelection:lr(function(e,t,n){$t(this,Ut(this,e),t&&Ut(this,t),n)}),extendSelections:lr(function(e,t){Jt(this,Xt(this,e),t)}),extendSelectionsBy:lr(function(e,t){var n=cu(this.sel.ranges,e);Jt(this,Xt(this,n),t)}),setSelections:lr(function(e,t,n){if(!e.length)return;for(var r=0,i=[];r<e.length;r++)i[r]=new Ft(Ut(this,e[r].anchor),Ut(this,e[r].head));t==null&&(t=Math.min(e.length-1,this.sel.primIndex)),Zt(this,It(i,t),n)}),addSelection:lr(function(e,t,n){var r=this.sel.ranges.slice(0);r.push(new Ft(Ut(this,e),Ut(this,t||e))),Zt(this,It(r,r.length-1),n)}),getSelection:function(e){var t=this.sel.ranges,n;for(var r=0;r<t.length;r++){var i=co(this,t[r].from(),t[r].to());n=n?n.concat(i):i}return e===!1?n:n.join(e||this.lineSeparator())},getSelections:function(e){var t=[],n=this.sel.ranges;for(var r=0;r<n.length;r++){var i=co(this,n[r].from(),n[r].to());e!==!1&&(i=i.join(e||this.lineSeparator())),t[r]=i}return t},replaceSelection:function(e,t,n){var r=[];for(var i=0;i<this.sel.ranges.length;i++)r[i]=e;this.replaceSelections(r,t,n||"+input")},replaceSelections:lr(function(e,t,n){var r=[],i=this.sel;for(var s=0;s<i.ranges.length;s++){var o=i.ranges[s];r[s]={from:o.from(),to:o.to(),text:this.splitLines(e[s]),origin:n}}var u=t&&t!="end"&&li(this,r,t);for(var s=r.length-1;s>=0;s--)hi(this,r[s]);u?Yt(this,u):this.cm&&Ti(this.cm)}),undo:lr(function(){di(this,"undo")}),redo:lr(function(){di(this,"redo")}),undoSelection:lr(function(){di(this,"undo",!0)}),redoSelection:lr(function(){di(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){var e=this.history,t=0,n=0;for(var r=0;r<e.done.length;r++)e.done[r].ranges||++t;for(var r=0;r<e.undone.length;r++)e.undone[r].ranges||++n;return{undo:t,redo:n}},clearHistory:function(){this.history=new bo(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(e){return e&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(e){return this.history.generation==(e||this.cleanGeneration)},getHistory:function(){return{done:Oo(this.history.done),undone:Oo(this.history.undone)}},setHistory:function(e){var t=this.history=new bo(this.history.maxGeneration);t.done=Oo(e.done.slice(0),null,!0),t.undone=Oo(e.undone.slice(0),null,!0)},addLineClass:lr(function(e,t,n){return ki(this,e,t=="gutter"?"gutter":"class",function(e){var r=t=="text"?"textClass":t=="background"?"bgClass":t=="gutter"?"gutterClass":"wrapClass";if(!e[r])e[r]=n;else{if(Lu(n).test(e[r]))return!1;e[r]+=" "+n}return!0})}),removeLineClass:lr(function(e,t,n){return ki(this,e,t=="gutter"?"gutter":"class",function(e){var r=t=="text"?"textClass":t=="background"?"bgClass":t=="gutter"?"gutterClass":"wrapClass",i=e[r];if(!i)return!1;if(n==null)e[r]=null;else{var s=i.match(Lu(n));if(!s)return!1;var o=s.index+s[0].length;e[r]=i.slice(0,s.index)+(!s.index||o==i.length?"":" ")+i.slice(o)||null}return!0})}),addLineWidget:lr(function(e,t,n){return _s(this,e,t,n)}),removeLineWidget:function(e){e.clear()},markText:function(e,t,n){return Yi(this,Ut(this,e),Ut(this,t),n,n&&n.type||"range")},setBookmark:function(e,t){var n={replacedWith:t&&(t.nodeType==null?t.widget:t),insertLeft:t&&t.insertLeft,clearWhenEmpty:!1,shared:t&&t.shared,handleMouseEvents:t&&t.handleMouseEvents};return e=Ut(this,e),Yi(this,e,e,n,"bookmark")},findMarksAt:function(e){e=Ut(this,e);var t=[],n=lo(this,e.line).markedSpans;if(n)for(var r=0;r<n.length;++r){var i=n[r];(i.from==null||i.from<=e.ch)&&(i.to==null||i.to>=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,n){e=Ut(this,e),t=Ut(this,t);var r=[],i=e.line;return this.iter(e.line,t.line+1,function(s){var o=s.markedSpans;if(o)for(var u=0;u<o.length;u++){var a=o[u];!(a.to!=null&&i==e.line&&e.ch>=a.to||a.from==null&&i!=e.line||a.from!=null&&i==t.line&&a.from>=t.ch)&&(!n||n(a.marker))&&r.push(a.marker.parent||a.marker)}++i}),r},getAllMarks:function(){var e=[];return this.iter(function(t){var n=t.markedSpans;if(n)for(var r=0;r<n.length;++r)n[r].from!=null&&e.push(n[r].marker)}),e},posFromIndex:function(e){var t,n=this.first,r=this.lineSeparator().length;return this.iter(function(i){var s=i.text.length+r;if(s>e)return t=e,!0;e-=s,++n}),Ut(this,gt(n,t))},indexFromPos:function(e){e=Ut(this,e);var t=e.ch;if(e.line<this.first||e.ch<0)return 0;var n=this.lineSeparator().length;return this.iter(this.first,e.line,function(e){t+=e.text.length+n}),t},copy:function(e){var t=new so(ho(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep);return t.scrollTop=this.scrollTop,t.scrollLeft=this.scrollLeft,t.sel=this.sel,t.extend=!1,e&&(t.history.undoDepth=this.history.undoDepth,t.setHistory(this.getHistory())),t},linkedDoc:function(e){e||(e={});var t=this.first,n=this.first+this.size;e.from!=null&&e.from>t&&(t=e.from),e.to!=null&&e.to<n&&(n=e.to);var r=new so(ho(this,t,n),e.mode||this.modeOption,t,this.lineSep);return e.sharedHist&&(r.history=this.history),(this.linked||(this.linked=[])).push({doc:r,sharedHist:e.sharedHist}),r.linked=[{doc:this,isParent:!0,sharedHist:e.sharedHist}],ns(r,ts(this)),r},unlinkDoc:function(e){e instanceof T&&(e=e.doc);if(this.linked)for(var t=0;t<this.linked.length;++t){var n=this.linked[t];if(n.doc!=e)continue;this.linked.splice(t,1),e.unlinkDoc(this),rs(ts(this));break}if(e.history==this.history){var r=[e.id];ao(e,function(e){r.push(e.id)},!0),e.history=new bo(null),e.history.done=Oo(this.history.done,r),e.history.undone=Oo(this.history.undone,r)}},iterLinkedDocs:function(e){ao(this,e)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(e){return this.lineSep?e.split(this.lineSep):Ru(e)},lineSeparator:function(){return this.lineSep||"\n"}}),so.prototype.eachLine=so.prototype.iter;var oo="iter insert remove copy getEditor constructor".split(" ");for(var uo in so.prototype)so.prototype.hasOwnProperty(uo)&&lu(oo,uo)<0&&(T.prototype[uo]=function(e){return function(){return e.apply(this.doc,arguments)}}(so.prototype[uo]));Go(so);var Po=T.e_preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},Ho=T.e_stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},jo=T.e_stop=function(e){Po(e),Ho(e)},qo=T.on=function(e,t,n){if(e.addEventListener)e.addEventListener(t,n,!1);else if(e.attachEvent)e.attachEvent("on"+t,n);else{var r=e._handlers||(e._handlers={}),i=r[t]||(r[t]=[]);i.push(n)}},Ro=[],zo=T.off=function(e,t,n){if(e.removeEventListener)e.removeEventListener(t,n,!1);else if(e.detachEvent)e.detachEvent("on"+t,n);else{var r=Uo(e,t,!1);for(var i=0;i<r.length;++i)if(r[i]==n){r.splice(i,1);break}}},Wo=T.signal=function(e,t){var n=Uo(e,t,!0);if(!n.length)return;var r=Array.prototype.slice.call(arguments,2);for(var i=0;i<n.length;++i)n[i].apply(null,r)},Xo=null,Yo=30,Zo=T.Pass={toString:function(){return"CodeMirror.Pass"}},eu={scroll:!1},tu={origin:"*mouse"},nu={origin:"+move"};ru.prototype.set=function(e,t){clearTimeout(this.id),this.id=setTimeout(t,e)};var iu=T.countColumn=function(e,t,n,r,i){t==null&&(t=e.search(/[^\s\u00a0]/),t==-1&&(t=e.length));for(var s=r||0,o=i||0;;){var u=e.indexOf(" ",s);if(u<0||u>=t)return o+(t-s);o+=u-s,o+=n-o%n,s=u+1}},su=T.findColumn=function(e,t,n){for(var r=0,i=0;;){var s=e.indexOf(" ",r);s==-1&&(s=e.length);var o=s-r;if(s==e.length||i+o>=t)return r+Math.min(o,t-i);i+=s-r,i+=n-i%n,r=s+1;if(i>=t)return r}},ou=[""],fu=function(e){e.select()};d?fu=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:s&&(fu=function(e){try{e.select()}catch(t){}});var mu=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,gu=T.isWordChar=function(e){return/\w/.test(e)||e>""&&(e.toUpperCase()!=e.toLowerCase()||mu.test(e))},wu=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/,xu;document.createRange?xu=function(e,t,n,r){var i=document.createRange();return i.setEnd(r||e,n),i.setStart(e,t),i}:xu=function(e,t,n){var r=document.body.createTextRange();try{r.moveToElementText(e.parentNode)}catch(i){return r}return r.collapse(!0),r.moveEnd("character",n),r.moveStart("character",t),r};var Cu=T.contains=function(e,t){t.nodeType==3&&(t=t.parentNode);if(e.contains)return e.contains(t);do{t.nodeType==11&&(t=t.host);if(t==e)return!0}while(t=t.parentNode)};s&&o<11&&(ku=function(){try{return document.activeElement}catch(e){return document.body}});var Au=T.rmClass=function(e,t){var n=e.className,r=Lu(t).exec(n);if(r){var i=n.slice(r.index+r[0].length);e.className=n.slice(0,r.index)+(i?r[1]+i:"")}},Ou=T.addClass=function(e,t){var n=e.className;Lu(t).test(n)||(e.className+=(n?" ":"")+t)},Du=!1,Bu=function(){if(s&&o<9)return!1;var e=Su("div");return"draggable"in e||"dragDrop"in e}(),ju,Iu,Ru=T.splitLines="\n\nb".split(/\n/).length!=3?function(e){var t=0,n=[],r=e.length;while(t<=r){var i=e.indexOf("\n",t);i==-1&&(i=e.length);var s=e.slice(t,e.charAt(i-1)=="\r"?i-1:i),o=s.indexOf("\r");o!=-1?(n.push(s.slice(0,o)),t+=o+1):(n.push(s),t=i+1)}return n}:function(e){return e.split(/\r\n?|\n/)},Uu=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(t){return!1}}:function(e){try{var t=e.ownerDocument.selection.createRange()}catch(n){}return!t||t.parentElement()!=e?!1:t.compareEndPoints("StartToEnd",t)!=0},zu=function(){var e=Su("div");return"oncopy"in e?!0:(e.setAttribute("oncopy","return;"),typeof e.oncopy=="function")}(),Wu=null,Vu=T.keyNames={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",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",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",106:"*",107:"=",109:"-",110:".",111:"/",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"};(function(){for(var e=0;e<10;e++)Vu[e+48]=Vu[e+96]=String(e);for(var e=65;e<=90;e++)Vu[e]=String.fromCharCode(e);for(var e=1;e<=12;e++)Vu[e+111]=Vu[e+63235]="F"+e})();var na,ua=function(){function n(n){return n<=247?e.charAt(n):1424<=n&&n<=1524?"R":1536<=n&&n<=1773?t.charAt(n-1536):1774<=n&&n<=2220?"r":8192<=n&&n<=8203?"w":n==8204?"b":"L"}function f(e,t,n){this.level=e,this.from=t,this.to=n}var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm",r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,i=/[stwN]/,s=/[LRr]/,o=/[Lb1n]/,u=/[1n]/,a="L";return function(e){if(!r.test(e))return!1;var t=e.length,l=[];for(var c=0,h;c<t;++c)l.push(h=n(e.charCodeAt(c)));for(var c=0,p=a;c<t;++c){var h=l[c];h=="m"?l[c]=p:p=h}for(var c=0,d=a;c<t;++c){var h=l[c];h=="1"&&d=="r"?l[c]="n":s.test(h)&&(d=h,h=="r"&&(l[c]="R"))}for(var c=1,p=l[0];c<t-1;++c){var h=l[c];h=="+"&&p=="1"&&l[c+1]=="1"?l[c]="1":h==","&&p==l[c+1]&&(p=="1"||p=="n")&&(l[c]=p),p=h}for(var c=0;c<t;++c){var h=l[c];if(h==",")l[c]="N";else if(h=="%"){for(var v=c+1;v<t&&l[v]=="%";++v);var m=c&&l[c-1]=="!"||v<t&&l[v]=="1"?"1":"N";for(var g=c;g<v;++g)l[g]=m;c=v-1}}for(var c=0,d=a;c<t;++c){var h=l[c];d=="L"&&h=="1"?l[c]="L":s.test(h)&&(d=h)}for(var c=0;c<t;++c)if(i.test(l[c])){for(var v=c+1;v<t&&i.test(l[v]);++v);var y=(c?l[c-1]:a)=="L",b=(v<t?l[v]:a)=="L",m=y||b?"L":"R";for(var g=c;g<v;++g)l[g]=m;c=v-1}var w=[],E;for(var c=0;c<t;)if(o.test(l[c])){var S=c;for(++c;c<t&&o.test(l[c]);++c);w.push(new f(0,S,c))}else{var x=c,T=w.length;for(++c;c<t&&l[c]!="L";++c);for(var g=x;g<c;)if(u.test(l[g])){x<g&&w.splice(T,0,new f(1,x,g));var N=g;for(++g;g<c&&u.test(l[g]);++g);w.splice(T,0,new f(2,N,g)),x=g}else++g;x<c&&w.splice(T,0,new f(1,x,c))}return w[0].level==1&&(E=e.match(/^\s+/))&&(w[0].from=E[0].length,w.unshift(new f(0,0,E[0].length))),au(w).level==1&&(E=e.match(/\s+$/))&&(au(w).to-=E[0].length,w.push(new f(0,t-E[0].length,t))),w[0].level==2&&w.unshift(new f(1,w[0].to,w[0].to)),w[0].level!=au(w).level&&w.push(new f(w[0].level,t,t)),w}}();return T.version="5.16.0",T}),define("answer",["jquery","laconic"],function(){(function($){function answerHasOutput(e){return e.variables.length>0||e.residuals}function renderSubstitutions(e,t){t.push(', <span class="pl-comment">% where</span><br/>');for(var n=0;n<e.length;n++)t.push('<span class="where-binding">',"<span class='pl-var'>",e[n].var+"</span> = ",e[n].value,"</span>"),n<e.length-1&&t.push(",<br/>")}function renderAnswer(e){var t=[],n=e.variables;for(var r=0;r<n.length;r++){var i=n[r].variables;for(var s=0;s<i.length-1;s++)t.push("<span class='pl-ovar'>",i[s],"</span> = ","<span class='pl-var'>",i[s+1],"</span>, ");t.push("<span class='pl-ovar'>",i[i.length-1],"</span> = ",n[r].value),n[r].substitutions&&renderSubstitutions(n[r].substitutions,t),(r<n.length-1||e.residuals)&&t.push(",<br/>")}var o;if(o=e.residuals)for(var r=0;r<o.length;r++)t.push(o[r]),r<o.length-1&&t.push(",<br/>");return t.join("")}function renderTabledAnswer(e,t){function r(t){var n=e.variables;for(var r=0;r<n.length;r++){var i=n[r].variables;for(var s=0;s<i.length;s++)if(i[s]==t)return n[r]}return null}function u(){t.find("tr.projection th.residuals").length==0&&($("<th class='residuals'>Residual goals</th>").insertBefore(t.find("tr.projection th.answer-nth")),$("<td></td>").insertBefore(t.find("tr td.answer-nth")))}var n=[];for(var i=0;i<e.projection.length;i++){var s=e.projection[i],o=r(s);n.push("<td>"),o?(n.push(o.value),o.substitutions&&renderSubstitutions(o.substitutions,n)):n.push("<span class='pl-var'>",s,"</span>"),n.push("</td>")}var a;if(a=e.residuals){u(),n.push("<td>");for(var i=0;i<a.length;i++)n.push(a[i]),i<a.length-1&&n.push(",<br/>");n.push("</td>")}return e.nth&&n.push("<td class='answer-nth'>",e.nth,"</td>"),n.join("")}function evalScripts(elem){elem.find("script").each(function(){var type=this.getAttribute("type")||"text/javascript";type=="text/javascript"&&($.ajaxScript=$(this),eval(this.textContent))}),$.ajaxScript&&delete $.ajaxScript}var pluginName="prologAnswer",methods={_init:function(e){return this.each(function(){var t=$(this);if(answerHasOutput(e))if(t.is("table")){var n=$.el.tr();t.append(n),n.innerHTML=renderTabledAnswer(e,t),evalScripts($(n)),$(n).find(".render-multi").renderMulti()}else t[0].innerHTML=renderAnswer(e),evalScripts(t),t.find(".render-multi").renderMulti();else t.append($.el.span({"class":"prolog-true"},"true"))})}};$.fn.prologAnswer=function(e){if(methods[e])return methods[e].apply(this,Array.prototype.slice.call(arguments,1));if(typeof e=="object"||!e)return methods._init.apply(this,arguments);$.error("Method "+e+" does not exist on jQuery."+pluginName)}})(jQuery),function(e){function s(){var t=e("#render-select");return t[0]||(t=e(e.el.form({id:"render-select",style:"display:none"})),t.on("click","a",function(n){var r=e(n.target).closest("a"),i=r.data("nr");return t.data("target").renderMulti(r.data("action"),i),!1}),t.on("click",function(){var n=e("input[name=render]:checked",e(this)).val();t.data("target").renderMulti("select",parseInt(n))}),t.hover(function(){r=!0,u()},function(){a()}),e("body").append(t)),t}function o(){if(!r){var e=s(),t=e.data("target");t&&(t.removeClass("render-selecting"),e.data("target",null)),e.hide(400)}}function u(){n=setTimeout(function(){o()},400)}function a(){r=!1,u()}function f(t){var n=t.originalEvent.dataTransfer;return n.setData("Text",e(t.target).renderMulti("prologText")),!0}var t="renderMulti",n=0,r=!1,i={_init:function(n){return this.each(function(){var n=e(this),r={current:0},i=[],s=e.el.div({"class":"render-multi-active"}),o=0;n.children().each(function(){var t=e(this).css("display");i.push(t),o++==0?(n.css("display",t),e(this).attr("draggable",!1)):e(this).hide()}),r.display=i,n.append(s),e(s).hover(function(e){n.renderMulti("showSelect",e)},function(e){n.renderMulti("hideSelect",e)}),n.attr("draggable",!0).bind("dragstart",f),n.data(t,r)})},selectMenu:function(){function s(e,t){var n,r;return t=="Prolog term"?(n="Copy",r="copy"):(n="Download",r="download"),btn='<a href="#" class="btn btn-style btn-sm" data-nr="'+e+'" data-action="'+r+'" title="'+n+'">'+'<span class="glyphicon glyphicon-'+r+'"></span></a>',btn}var n=this.data(t),r=["<label>View as</label><br>"],i=this.children(),o=0;for(var o=0;o<n.display.length;o++){var u=e(i[o]),a=u.attr("data-render");a||(o==0?a="Default rendered":a="Alt rendered ["+(o+1)+"]"),r.push("<div class='render-item'>",s(o,a),"<input type='radio' name='render' value='",o,"'"),o==n.current&&r.push(" checked"),r.push("> ",a,"</div>")}return r.push("</form"),r.join("")},showSelect:function(e){var t=this,i=s(),o=this.offset(),u;r=!0,n&&(clearTimeout(n),n=0),(u=i.data("target"))&&u.removeClass("render-selecting"),i.data("target",t),i.html(this.renderMulti("selectMenu")),i.css({top:o.top+5+"px",left:o.left+5+"px"}).show(400),this.addClass("render-selecting")},hideSelect:function(e){a()},select:function(n){var r=this.data(t);if(r.current!=n){var i=this.children(),s=r.display[n];e(i[r.current]).hide(400),e(i[n]).show(400,function(){e(this).css("display",s)}),this.css("display",s),e(i[n]).is("span.render-as-prolog")?this.attr("draggable",!1):this.attr("draggable",!0),r.current=n}o()},copy:function(e){function s(e){var t=document.createRange();t.selectNodeContents(e);var n=window.getSelection();n.removeAllRanges(),n.addRange(t)}var n=this.children(),r=this.data(t),i=r.current;this.renderMulti("select",e),s(n[e]);try{document.execCommand("copy")}catch(o){alert("Sorry, cannot copy text with this browser")}return this.renderMulti("select",i),this},download:function(t){function o(){return e("<a>")[0].download!=undefined}var n=this.children(),r=e(n[t]),i="html",s;if(r.hasClass("export-dom")){var u={};r=r.trigger("export-dom",u),u.element?(s=u.element.outerHTML,i=u.extension||"html",type=u.contentType||"text/html"):alert("Failed to export rendered result")}else if(r.find("svg").length==1){var a=r.find("svg");a.attr("xmlns")||a.attr("xmlns","http://www.w3.org/2000/svg"),s=a[0].outerHTML,i="svg",type="image/svg+xml"}else s=r.html(),type="text/html";o()||(type="application/octet-stream");var f="data:"+type+";charset=UTF-8,"+encodeURIComponent(s),l=e.el.a({href:f,download:"swish-rendered."+i});return this.append(l),l.click(),e(l).remove(),this},prologText:function(){return this.find("span.render-as-prolog").text()}};e.fn.renderMulti=function(n){if(i[n])return i[n].apply(this,Array.prototype.slice.call(arguments,1));if(typeof n=="object"||!n)return i._init.apply(this,arguments);e.error("Method "+n+" does not exist on jQuery."+t)}}(jQuery)}),function(e,t,n){(function(e){typeof define=="function"&&define.amd?define("sparkline",["jquery"],e):jQuery&&!jQuery.fn.sparkline&&e(jQuery)})(function(r){"use strict";var i={},s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w,E,S,x,T,N,C,k,L,A,O,M,_,D,P,H,B,j=0;s=function(){return{common:{type:"line",lineColor:"#00f",fillColor:"#cdf",defaultPixelsPerValue:3,width:"auto",height:"auto",composite:!1,tagValuesAttribute:"values",tagOptionsPrefix:"spark",enableTagOptions:!1,enableHighlight:!0,highlightLighten:1.4,tooltipSkipNull:!0,tooltipPrefix:"",tooltipSuffix:"",disableHiddenCheck:!1,numberFormatter:!1,numberDigitGroupCount:3,numberDigitGroupSep:",",numberDecimalMark:".",disableTooltips:!1,disableInteraction:!1},line:{spotColor:"#f80",highlightSpotColor:"#5f5",highlightLineColor:"#f22",spotRadius:1.5,minSpotColor:"#f80",maxSpotColor:"#f80",lineWidth:1,normalRangeMin:n,normalRangeMax:n,normalRangeColor:"#ccc",drawNormalOnTop:!1,chartRangeMin:n,chartRangeMax:n,chartRangeMinX:n,chartRangeMaxX:n,tooltipFormat:new u('<span style="color: {{color}}">●</span> {{prefix}}{{y}}{{suffix}}')},bar:{barColor:"#3366cc",negBarColor:"#f44",stackedBarColor:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],zeroColor:n,nullColor:n,zeroAxis:!0,barWidth:4,barSpacing:1,chartRangeMax:n,chartRangeMin:n,chartRangeClip:!1,colorMap:n,tooltipFormat:new u('<span style="color: {{color}}">●</span> {{prefix}}{{value}}{{suffix}}')},tristate:{barWidth:4,barSpacing:1,posBarColor:"#6f6",negBarColor:"#f44",zeroBarColor:"#999",colorMap:{},tooltipFormat:new u('<span style="color: {{color}}">●</span> {{value:map}}'),tooltipValueLookups:{map:{"-1":"Loss",0:"Draw",1:"Win"}}},discrete:{lineHeight:"auto",thresholdColor:n,thresholdValue:0,chartRangeMax:n,chartRangeMin:n,chartRangeClip:!1,tooltipFormat:new u("{{prefix}}{{value}}{{suffix}}")},bullet:{targetColor:"#f33",targetWidth:3,performanceColor:"#33f",rangeColors:["#d3dafe","#a8b6ff","#7f94ff"],base:n,tooltipFormat:new u("{{fieldkey:fields}} - {{value}}"),tooltipValueLookups:{fields:{r:"Range",p:"Performance",t:"Target"}}},pie:{offset:0,sliceColors:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],borderWidth:0,borderColor:"#000",tooltipFormat:new u('<span style="color: {{color}}">●</span> {{value}} ({{percent.1}}%)')},box:{raw:!1,boxLineColor:"#000",boxFillColor:"#cdf",whiskerColor:"#000",outlierLineColor:"#333",outlierFillColor:"#fff",medianColor:"#f00",showOutliers:!0,outlierIQR:1.5,spotRadius:1.5,target:n,targetColor:"#4a2",chartRangeMax:n,chartRangeMin:n,tooltipFormat:new u("{{field:fields}}: {{value}}"),tooltipFormatFieldlistKey:"field",tooltipValueLookups:{fields:{lq:"Lower Quartile",med:"Median",uq:"Upper Quartile",lo:"Left Outlier",ro:"Right Outlier",lw:"Left Whisker",rw:"Right Whisker"}}}}},O='.jqstooltip { position: absolute;left: 0px;top: 0px;visibility: hidden;background: rgb(0, 0, 0) transparent;background-color: rgba(0,0,0,0.6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";color: white;font: 10px arial, san serif;text-align: left;white-space: nowrap;padding: 5px;border: 1px solid white;z-index: 10000;}.jqsfield { color: white;font: 10px arial, san serif;text-align: left;}',o=function(){var e,t;return e=function(){this.init.apply(this,arguments)},arguments.length>1?(arguments[0]?(e.prototype=r.extend(new arguments[0],arguments[arguments.length-1]),e._super=arguments[0].prototype):e.prototype=arguments[arguments.length-1],arguments.length>2&&(t=Array.prototype.slice.call(arguments,1,-1),t.unshift(e.prototype),r.extend.apply(r,t))):e.prototype=arguments[0],e.prototype.cls=e,e},r.SPFormatClass=u=o({fre:/\{\{([\w.]+?)(:(.+?))?\}\}/g,precre:/(\w+)\.(\d+)/,init:function(e,t){this.format=e,this.fclass=t},render:function(e,t,r){var i=this,s=e,o,u,a,f,l;return this.format.replace(this.fre,function(){var e;return u=arguments[1],a=arguments[3],o=i.precre.exec(u),o?(l=o[2],u=o[1]):l=!1,f=s[u],f===n?"":a&&t&&t[a]?(e=t[a],e.get?t[a].get(f)||f:t[a][f]||f):(p(f)&&(r.get("numberFormatter")?f=r.get("numberFormatter")(f):f=y(f,l,r.get("numberDigitGroupCount"),r.get("numberDigitGroupSep"),r.get("numberDecimalMark"))),f)})}}),r.spformat=function(e,t){return new u(e,t)},a=function(e,t,n){return e<t?t:e>n?n:e},f=function(e,n){var r;return n===2?(r=t.floor(e.length/2),e.length%2?e[r]:(e[r-1]+e[r])/2):e.length%2?(r=(e.length*n+n)/4,r%1?(e[t.floor(r)]+e[t.floor(r)-1])/2:e[r-1]):(r=(e.length*n+2)/4,r%1?(e[t.floor(r)]+e[t.floor(r)-1])/2:e[r-1])},l=function(e){var t;switch(e){case"undefined":e=n;break;case"null":e=null;break;case"true":e=!0;break;case"false":e=!1;break;default:t=parseFloat(e),e==t&&(e=t)}return e},c=function(e){var t,n=[];for(t=e.length;t--;)n[t]=l(e[t]);return n},h=function(e,t){var n,r,i=[];for(n=0,r=e.length;n<r;n++)e[n]!==t&&i.push(e[n]);return i},p=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},y=function(e,t,n,i,s){var o,u;e=(t===!1?parseFloat(e).toString():e.toFixed(t)).split(""),o=(o=r.inArray(".",e))<0?e.length:o,o<e.length&&(e[o]=s);for(u=o-n;u>0;u-=n)e.splice(u,0,i);return e.join("")},d=function(e,t,n){var r;for(r=t.length;r--;){if(n&&t[r]===null)continue;if(t[r]!==e)return!1}return!0},v=function(e){var t=0,n;for(n=e.length;n--;)t+=typeof e[n]=="number"?e[n]:0;return t},g=function(e){return r.isArray(e)?e:[e]},m=function(t){var n;e.createStyleSheet?e.createStyleSheet().cssText=t:(n=e.createElement("style"),n.type="text/css",e.getElementsByTagName("head")[0].appendChild(n),n[typeof e.body.style.WebkitAppearance=="string"?"innerText":"innerHTML"]=t)},r.fn.simpledraw=function(t,i,s,o){var u,a;if(s&&(u=this.data("_jqs_vcanvas")))return u;if(r.fn.sparkline.canvas===!1)return!1;if(r.fn.sparkline.canvas===n){var f=e.createElement("canvas");if(!f.getContext||!f.getContext("2d")){if(!e.namespaces||!!e.namespaces.v)return r.fn.sparkline.canvas=!1,!1;e.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML"),r.fn.sparkline.canvas=function(e,t,n,r){return new H(e,t,n)}}else r.fn.sparkline.canvas=function(e,t,n,r){return new P(e,t,n,r)}}return t===n&&(t=r(this).innerWidth()),i===n&&(i=r(this).innerHeight()),u=r.fn.sparkline.canvas(t,i,this,o),a=r(this).data("_jqs_mhandler"),a&&a.registerCanvas(u),u},r.fn.cleardraw=function(){var e=this.data("_jqs_vcanvas");e&&e.reset()},r.RangeMapClass=b=o({init:function(e){var t,n,r=[];for(t in e)e.hasOwnProperty(t)&&typeof t=="string"&&t.indexOf(":")>-1&&(n=t.split(":"),n[0]=n[0].length===0?-Infinity:parseFloat(n[0]),n[1]=n[1].length===0?Infinity:parseFloat(n[1]),n[2]=e[t],r.push(n));this.map=e,this.rangelist=r||!1},get:function(e){var t=this.rangelist,r,i,s;if((s=this.map[e])!==n)return s;if(t)for(r=t.length;r--;){i=t[r];if(i[0]<=e&&i[1]>=e)return i[2]}return n}}),r.range_map=function(e){return new b(e)},w=o({init:function(e,t){var n=r(e);this.$el=n,this.options=t,this.currentPageX=0,this.currentPageY=0,this.el=e,this.splist=[],this.tooltip=null,this.over=!1,this.displayTooltips=!t.get("disableTooltips"),this.highlightEnabled=!t.get("disableHighlight")},registerSparkline:function(e){this.splist.push(e),this.over&&this.updateDisplay()},registerCanvas:function(e){var t=r(e.canvas);this.canvas=e,this.$canvas=t,t.mouseenter(r.proxy(this.mouseenter,this)),t.mouseleave(r.proxy(this.mouseleave,this)),t.click(r.proxy(this.mouseclick,this))},reset:function(e){this.splist=[],this.tooltip&&e&&(this.tooltip.remove(),this.tooltip=n)},mouseclick:function(e){var t=r.Event("sparklineClick");t.originalEvent=e,t.sparklines=this.splist,this.$el.trigger(t)},mouseenter:function(t){r(e.body).unbind("mousemove.jqs"),r(e.body).bind("mousemove.jqs",r.proxy(this.mousemove,this)),this.over=!0,this.currentPageX=t.pageX,this.currentPageY=t.pageY,this.currentEl=t.target,!this.tooltip&&this.displayTooltips&&(this.tooltip=new E(this.options),this.tooltip.updatePosition(t.pageX,t.pageY)),this.updateDisplay()},mouseleave:function(){r(e.body).unbind("mousemove.jqs");var t=this.splist,n=t.length,i=!1,s,o;this.over=!1,this.currentEl=null,this.tooltip&&(this.tooltip.remove(),this.tooltip=null);for(o=0;o<n;o++)s=t[o],s.clearRegionHighlight()&&(i=!0);i&&this.canvas.render()},mousemove:function(e){this.currentPageX=e.pageX,this.currentPageY=e.pageY,this.currentEl=e.target,this.tooltip&&this.tooltip.updatePosition(e.pageX,e.pageY),this.updateDisplay()},updateDisplay:function(){var e=this.splist,t=e.length,n=!1,i=this.$canvas.offset(),s=this.currentPageX-i.left,o=this.currentPageY-i.top,u,a,f,l,c;if(!this.over)return;for(f=0;f<t;f++)a=e[f],l=a.setRegionHighlight(this.currentEl,s,o),l&&(n=!0);if(n){c=r.Event("sparklineRegionChange"),c.sparklines=this.splist,this.$el.trigger(c);if(this.tooltip){u="";for(f=0;f<t;f++)a=e[f],u+=a.getCurrentRegionTooltip();this.tooltip.setContent(u)}this.disableHighlight||this.canvas.render()}l===null&&this.mouseleave()}}),E=o({sizeStyle:"position: static !important;display: block !important;visibility: hidden !important;float: left !important;",init:function(t){var n=t.get("tooltipClassname","jqstooltip"),i=this.sizeStyle,s;this.container=t.get("tooltipContainer")||e.body,this.tooltipOffsetX=t.get("tooltipOffsetX",10),this.tooltipOffsetY=t.get("tooltipOffsetY",12),r("#jqssizetip").remove(),r("#jqstooltip").remove(),this.sizetip=r("<div/>",{id:"jqssizetip",style:i,"class":n}),this.tooltip=r("<div/>",{id:"jqstooltip","class":n}).appendTo(this.container),s=this.tooltip.offset(),this.offsetLeft=s.left,this.offsetTop=s.top,this.hidden=!0,r(window).unbind("resize.jqs scroll.jqs"),r(window).bind("resize.jqs scroll.jqs",r.proxy(this.updateWindowDims,this)),this.updateWindowDims()},updateWindowDims:function(){this.scrollTop=r(window).scrollTop(),this.scrollLeft=r(window).scrollLeft(),this.scrollRight=this.scrollLeft+r(window).width(),this.updatePosition()},getSize:function(e){this.sizetip.html(e).appendTo(this.container),this.width=this.sizetip.width()+1,this.height=this.sizetip.height(),this.sizetip.remove()},setContent:function(e){if(!e){this.tooltip.css("visibility","hidden"),this.hidden=!0;return}this.getSize(e),this.tooltip.html(e).css({width:this.width,height:this.height,visibility:"visible"}),this.hidden&&(this.hidden=!1,this.updatePosition())},updatePosition:function(e,t){if(e===n){if(this.mousex===n)return;e=this.mousex-this.offsetLeft,t=this.mousey-this.offsetTop}else this.mousex=e-=this.offsetLeft,this.mousey=t-=this.offsetTop;if(!this.height||!this.width||this.hidden)return;t-=this.height+this.tooltipOffsetY,e+=this.tooltipOffsetX,t<this.scrollTop&&(t=this.scrollTop),e<this.scrollLeft?e=this.scrollLeft:e+this.width>this.scrollRight&&(e=this.scrollRight-this.width),this.tooltip.css({left:e,top:t})},remove:function(){this.tooltip.remove(),this.sizetip.remove(),this.sizetip=this.tooltip=n,r(window).unbind("resize.jqs scroll.jqs")}}),M=function(){m(O)},r(M),B=[],r.fn.sparkline=function(t,i){return this.each(function(){var s=new r.fn.sparkline.options(this,i),o=r(this),u,a;u=function(){var i,u,a,f,l,c,h;if(t==="html"||t===n){h=this.getAttribute(s.get("tagValuesAttribute"));if(h===n||h===null)h=o.html();i=h.replace(/(^\s*<!--)|(-->\s*$)|\s+/g,"").split(",")}else i=t;u=s.get("width")==="auto"?i.length*s.get("defaultPixelsPerValue"):s.get("width");if(s.get("height")==="auto"){if(!s.get("composite")||!r.data(this,"_jqs_vcanvas"))f=e.createElement("span"),f.innerHTML="a",o.html(f),a=r(f).innerHeight()||r(f).height(),r(f).remove(),f=null}else a=s.get("height");s.get("disableInteraction")?l=!1:(l=r.data(this,"_jqs_mhandler"),l?s.get("composite")||l.reset():(l=new w(this,s),r.data(this,"_jqs_mhandler",l)));if(s.get("composite")&&!r.data(this,"_jqs_vcanvas")){r.data(this,"_jqs_errnotify")||(alert("Attempted to attach a composite sparkline to an element with no existing sparkline"),r.data(this,"_jqs_errnotify",!0));return}c=new(r.fn.sparkline[s.get("type")])(this,i,s,u,a),c.render(),l&&l.registerSparkline(c)};if(r(this).html()&&!s.get("disableHiddenCheck")&&r(this).is(":hidden")||!r(this).parents("body").length){if(!s.get("composite")&&r.data(this,"_jqs_pending"))for(a=B.length;a;a--)B[a-1][0]==this&&B.splice(a-1,1);B.push([this,u]),r.data(this,"_jqs_pending",!0)}else u.call(this)})},r.fn.sparkline.defaults=s(),r.sparkline_display_visible=function(){var e,t,n,i=[];for(t=0,n=B.length;t<n;t++)e=B[t][0],r(e).is(":visible")&&!r(e).parents().is(":hidden")?(B[t][1].call(e),r.data(B[t][0],"_jqs_pending",!1),i.push(t)):!r(e).closest("html").length&&!r.data(e,"_jqs_pending")&&(r.data(B[t][0],"_jqs_pending",!1),i.push(t));for(t=i.length;t;t--)B.splice(i[t-1],1)},r.fn.sparkline.options=o({init:function(e,t){var n,s,o,u;this.userOptions=t=t||{},this.tag=e,this.tagValCache={},s=r.fn.sparkline.defaults,o=s.common,this.tagOptionsPrefix=t.enableTagOptions&&(t.tagOptionsPrefix||o.tagOptionsPrefix),u=this.getTagSetting("type"),u===i?n=s[t.type||o.type]:n=s[u],this.mergedOptions=r.extend({},o,n,t)},getTagSetting:function(e){var t=this.tagOptionsPrefix,r,s,o,u;if(t===!1||t===n)return i;if(this.tagValCache.hasOwnProperty(e))r=this.tagValCache.key;else{r=this.tag.getAttribute(t+e);if(r===n||r===null)r=i;else if(r.substr(0,1)==="["){r=r.substr(1,r.length-2).split(",");for(s=r.length;s--;)r[s]=l(r[s].replace(/(^\s*)|(\s*$)/g,""))}else if(r.substr(0,1)==="{"){o=r.substr(1,r.length-2).split(","),r={};for(s=o.length;s--;)u=o[s].split(":",2),r[u[0].replace(/(^\s*)|(\s*$)/g,"")]=l(u[1].replace(/(^\s*)|(\s*$)/g,""))}else r=l(r);this.tagValCache.key=r}return r},get:function(e,t){var r=this.getTagSetting(e),s;return r!==i?r:(s=this.mergedOptions[e])===n?t:s}}),r.fn.sparkline._base=o({disabled:!1,init:function(e,t,i,s,o){this.el=e,this.$el=r(e),this.values=t,this.options=i,this.width=s,this.height=o,this.currentRegion=n},initTarget:function(){var e=!this.options.get("disableInteraction");(this.target=this.$el.simpledraw(this.width,this.height,this.options.get("composite"),e))?(this.canvasWidth=this.target.pixelWidth,this.canvasHeight=this.target.pixelHeight):this.disabled=!0},render:function(){return this.disabled?(this.el.innerHTML="",!1):!0},getRegion:function(e,t){},setRegionHighlight:function(e,t,r){var i=this.currentRegion,s=!this.options.get("disableHighlight"),o;return t>this.canvasWidth||r>this.canvasHeight||t<0||r<0?null:(o=this.getRegion(e,t,r),i!==o?(i!==n&&s&&this.removeHighlight(),this.currentRegion=o,o!==n&&s&&this.renderHighlight(),!0):!1)},clearRegionHighlight:function(){return this.currentRegion!==n?(this.removeHighlight(),this.currentRegion=n,!0):!1},renderHighlight:function(){this.changeHighlight(!0)},removeHighlight:function(){this.changeHighlight(!1)},changeHighlight:function(e){},getCurrentRegionTooltip:function(){var e=this.options,t="",i=[],s,o,a,f,l,c,h,p,d,v,m,g,y,b;if(this.currentRegion===n)return"";s=this.getCurrentRegionFields(),m=e.get("tooltipFormatter");if(m)return m(this,e,s);e.get("tooltipChartTitle")&&(t+='<div class="jqs jqstitle">'+e.get("tooltipChartTitle")+"</div>\n"),o=this.options.get("tooltipFormat");if(!o)return"";r.isArray(o)||(o=[o]),r.isArray(s)||(s=[s]),h=this.options.get("tooltipFormatFieldlist"),p=this.options.get("tooltipFormatFieldlistKey");if(h&&p){d=[];for(c=s.length;c--;)v=s[c][p],(b=r.inArray(v,h))!=-1&&(d[b]=s[c]);s=d}a=o.length,y=s.length;for(c=0;c<a;c++){g=o[c],typeof g=="string"&&(g=new u(g)),f=g.fclass||"jqsfield";for(b=0;b<y;b++)if(!s[b].isNull||!e.get("tooltipSkipNull"))r.extend(s[b],{prefix:e.get("tooltipPrefix"),suffix:e.get("tooltipSuffix")}),l=g.render(s[b],e.get("tooltipValueLookups"),e),i.push('<div class="'+f+'">'+l+"</div>")}return i.length?t+i.join("\n"):""},getCurrentRegionFields:function(){},calcHighlightColor:function(e,n){var r=n.get("highlightColor"),i=n.get("highlightLighten"),s,o,u,f;if(r)return r;if(i){s=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(e)||/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);if(s){u=[],o=e.length===4?16:1;for(f=0;f<3;f++)u[f]=a(t.round(parseInt(s[f+1],16)*o*i),0,255);return"rgb("+u.join(",")+")"}}return e}}),S={changeHighlight:function(e){var t=this.currentRegion,n=this.target,i=this.regionShapes[t],s;i&&(s=this.renderRegion(t,e),r.isArray(s)||r.isArray(i)?(n.replaceWithShapes(i,s),this.regionShapes[t]=r.map(s,function(e){return e.id})):(n.replaceWithShape(i,s),this.regionShapes[t]=s.id))},render:function(){var e=this.values,t=this.target,n=this.regionShapes,i,s,o,u;if(!this.cls._super.render.call(this))return;for(o=e.length;o--;){i=this.renderRegion(o);if(i)if(r.isArray(i)){s=[];for(u=i.length;u--;)i[u].append(),s.push(i[u].id);n[o]=s}else i.append(),n[o]=i.id;else n[o]=null}t.render()}},r.fn.sparkline.line=x=o(r.fn.sparkline._base,{type:"line",init:function(e,t,n,r,i){x._super.init.call(this,e,t,n,r,i),this.vertices=[],this.regionMap=[],this.xvalues=[],this.yvalues=[],this.yminmax=[],this.hightlightSpotId=null,this.lastShapeId=null,this.initTarget()},getRegion:function(e,t,r){var i,s=this.regionMap;for(i=s.length;i--;)if(s[i]!==null&&t>=s[i][0]&&t<=s[i][1])return s[i][2];return n},getCurrentRegionFields:function(){var e=this.currentRegion;return{isNull:this.yvalues[e]===null,x:this.xvalues[e],y:this.yvalues[e],color:this.options.get("lineColor"),fillColor:this.options.get("fillColor"),offset:e}},renderHighlight:function(){var e=this.currentRegion,t=this.target,r=this.vertices[e],i=this.options,s=i.get("spotRadius"),o=i.get("highlightSpotColor"),u=i.get("highlightLineColor"),a,f;if(!r)return;s&&o&&(a=t.drawCircle(r[0],r[1],s,n,o),this.highlightSpotId=a.id,t.insertAfterShape(this.lastShapeId,a)),u&&(f=t.drawLine(r[0],this.canvasTop,r[0],this.canvasTop+this.canvasHeight,u),this.highlightLineId=f.id,t.insertAfterShape(this.lastShapeId,f))},removeHighlight:function(){var e=this.target;this.highlightSpotId&&(e.removeShapeId(this.highlightSpotId),this.highlightSpotId=null),this.highlightLineId&&(e.removeShapeId(this.highlightLineId),this.highlightLineId=null)},scanValues:function(){var e=this.values,n=e.length,r=this.xvalues,i=this.yvalues,s=this.yminmax,o,u,a,f,l;for(o=0;o<n;o++)u=e[o],a=typeof e[o]=="string",f=typeof e[o]=="object"&&e[o]instanceof Array,l=a&&e[o].split(":"),a&&l.length===2?(r.push(Number(l[0])),i.push(Number(l[1])),s.push(Number(l[1]))):f?(r.push(u[0]),i.push(u[1]),s.push(u[1])):(r.push(o),e[o]===null||e[o]==="null"?i.push(null):(i.push(Number(u)),s.push(Number(u))));this.options.get("xvalues")&&(r=this.options.get("xvalues")),this.maxy=this.maxyorg=t.max.apply(t,s),this.miny=this.minyorg=t.min.apply(t,s),this.maxx=t.max.apply(t,r),this.minx=t.min.apply(t,r),this.xvalues=r,this.yvalues=i,this.yminmax=s},processRangeOptions:function(){var e=this.options,t=e.get("normalRangeMin"),r=e.get("normalRangeMax");t!==n&&(t<this.miny&&(this.miny=t),r>this.maxy&&(this.maxy=r)),e.get("chartRangeMin")!==n&&(e.get("chartRangeClip")||e.get("chartRangeMin")<this.miny)&&(this.miny=e.get("chartRangeMin")),e.get("chartRangeMax")!==n&&(e.get("chartRangeClip")||e.get("chartRangeMax")>this.maxy)&&(this.maxy=e.get("chartRangeMax")),e.get("chartRangeMinX")!==n&&(e.get("chartRangeClipX")||e.get("chartRangeMinX")<this.minx)&&(this.minx=e.get("chartRangeMinX")),e.get("chartRangeMaxX")!==n&&(e.get("chartRangeClipX")||e.get("chartRangeMaxX")>this.maxx)&&(this.maxx=e.get("chartRangeMaxX"))},drawNormalRange:function(e,r,i,s,o){var u=this.options.get("normalRangeMin"),a=this.options.get("normalRangeMax"),f=r+t.round(i-i*((a-this.miny)/o)),l=t.round(i*(a-u)/o);this.target.drawRect(e,f,s,l,n,this.options.get("normalRangeColor")).append()},render:function(){var e=this.options,i=this.target,s=this.canvasWidth,o=this.canvasHeight,u=this.vertices,a=e.get("spotRadius"),f=this.regionMap,l,c,h,p,d,v,m,g,y,w,E,S,T,N,C,k,L,A,O,M,_,D,P,H,B;if(!x._super.render.call(this))return;this.scanValues(),this.processRangeOptions(),P=this.xvalues,H=this.yvalues;if(!this.yminmax.length||this.yvalues.length<2)return;p=d=0,l=this.maxx-this.minx===0?1:this.maxx-this.minx,c=this.maxy-this.miny===0?1:this.maxy-this.miny,h=this.yvalues.length-1,a&&(s<a*4||o<a*4)&&(a=0);if(a){_=e.get("highlightSpotColor")&&!e.get("disableInteraction");if(_||e.get("minSpotColor")||e.get("spotColor")&&H[h]===this.miny)o-=t.ceil(a);if(_||e.get("maxSpotColor")||e.get("spotColor")&&H[h]===this.maxy)o-=t.ceil(a),p+=t.ceil(a);if(_||(e.get("minSpotColor")||e.get("maxSpotColor"))&&(H[0]===this.miny||H[0]===this.maxy))d+=t.ceil(a),s-=t.ceil(a);if(_||e.get("spotColor")||e.get("minSpotColor")||e.get("maxSpotColor")&&(H[h]===this.miny||H[h]===this.maxy))s-=t.ceil(a)}o--,e.get("normalRangeMin")!==n&&!e.get("drawNormalOnTop")&&this.drawNormalRange(d,p,o,s,c),m=[],g=[m],N=C=null,k=H.length;for(B=0;B<k;B++)y=P[B],E=P[B+1],w=H[B],S=d+t.round((y-this.minx)*(s/l)),T=B<k-1?d+t.round((E-this.minx)*(s/l)):s,C=S+(T-S)/2,f[B]=[N||0,C,B],N=C,w===null?B&&(H[B-1]!==null&&(m=[],g.push(m)),u.push(null)):(w<this.miny&&(w=this.miny),w>this.maxy&&(w=this.maxy),m.length||m.push([S,p+o]),v=[S,p+t.round(o-o*((w-this.miny)/c))],m.push(v),u.push(v));L=[],A=[],O=g.length;for(B=0;B<O;B++)m=g[B],m.length&&(e.get("fillColor")&&(m.push([m[m.length-1][0],p+o]),A.push(m.slice(0)),m.pop()),m.length>2&&(m[0]=[m[0][0],m[1][1]]),L.push(m));O=A.length;for(B=0;B<O;B++)i.drawShape(A[B],e.get("fillColor"),e.get("fillColor")).append();e.get("normalRangeMin")!==n&&e.get("drawNormalOnTop")&&this.drawNormalRange(d,p,o,s,c),O=L.length;for(B=0;B<O;B++)i.drawShape(L[B],e.get("lineColor"),n,e.get("lineWidth")).append();if(a&&e.get("valueSpots")){M=e.get("valueSpots"),M.get===n&&(M=new b(M));for(B=0;B<k;B++)D=M.get(H[B]),D&&i.drawCircle(d+t.round((P[B]-this.minx)*(s/l)),p+t.round(o-o*((H[B]-this.miny)/c)),a,n,D).append()}a&&e.get("spotColor")&&H[h]!==null&&i.drawCircle(d+t.round((P[P.length-1]-this.minx)*(s/l)),p+t.round(o-o*((H[h]-this.miny)/c)),a,n,e.get("spotColor")).append(),this.maxy!==this.minyorg&&(a&&e.get("minSpotColor")&&(y=P[r.inArray(this.minyorg,H)],i.drawCircle(d+t.round((y-this.minx)*(s/l)),p+t.round(o-o*((this.minyorg-this.miny)/c)),a,n,e.get("minSpotColor")).append()),a&&e.get("maxSpotColor")&&(y=P[r.inArray(this.maxyorg,H)],i.drawCircle(d+t.round((y-this.minx)*(s/l)),p+t.round(o-o*((this.maxyorg-this.miny)/c)),a,n,e.get("maxSpotColor")).append())),this.lastShapeId=i.getLastShapeId(),this.canvasTop=p,i.render()}}),r.fn.sparkline.bar=T=o(r.fn.sparkline._base,S,{type:"bar",init:function(e,i,s,o,u){var f=parseInt(s.get("barWidth"),10),p=parseInt(s.get("barSpacing"),10),d=s.get("chartRangeMin"),v=s.get("chartRangeMax"),m=s.get("chartRangeClip"),g=Infinity,y=-Infinity,w,E,S,x,N,C,k,L,A,O,M,_,D,P,H,B,j,F,I,q,R,U,z;T._super.init.call(this,e,i,s,o,u);for(C=0,k=i.length;C<k;C++){q=i[C],w=typeof q=="string"&&q.indexOf(":")>-1;if(w||r.isArray(q))H=!0,w&&(q=i[C]=c(q.split(":"))),q=h(q,null),E=t.min.apply(t,q),S=t.max.apply(t,q),E<g&&(g=E),S>y&&(y=S)}this.stacked=H,this.regionShapes={},this.barWidth=f,this.barSpacing=p,this.totalBarWidth=f+p,this.width=o=i.length*f+(i.length-1)*p,this.initTarget(),m&&(D=d===n?-Infinity:d,P=v===n?Infinity:v),N=[],x=H?[]:N;var W=[],X=[];for(C=0,k=i.length;C<k;C++)if(H){B=i[C],i[C]=I=[],W[C]=0,x[C]=X[C]=0;for(j=0,F=B.length;j<F;j++)q=I[j]=m?a(B[j],D,P):B[j],q!==null&&(q>0&&(W[C]+=q),g<0&&y>0?q<0?X[C]+=t.abs(q):x[C]+=q:x[C]+=t.abs(q-(q<0?y:g)),N.push(q))}else q=m?a(i[C],D,P):i[C],q=i[C]=l(q),q!==null&&N.push(q);this.max=_=t.max.apply(t,N),this.min=M=t.min.apply(t,N),this.stackMax=y=H?t.max.apply(t,W):_,this.stackMin=g=H?t.min.apply(t,N):M,s.get("chartRangeMin")!==n&&(s.get("chartRangeClip")||s.get("chartRangeMin")<M)&&(M=s.get("chartRangeMin")),s.get("chartRangeMax")!==n&&(s.get("chartRangeClip")||s.get("chartRangeMax")>_)&&(_=s.get("chartRangeMax")),this.zeroAxis=A=s.get("zeroAxis",!0),M<=0&&_>=0&&A?O=0:A==0?O=M:M>0?O=M:O=_,this.xaxisOffset=O,L=H?t.max.apply(t,x)+t.max.apply(t,X):_-M,this.canvasHeightEf=A&&M<0?this.canvasHeight-2:this.canvasHeight-1,M<O?(U=H&&_>=0?y:_,R=(U-O)/L*this.canvasHeight,R!==t.ceil(R)&&(this.canvasHeightEf-=2,R=t.ceil(R))):R=this.canvasHeight,this.yoffset=R,r.isArray(s.get("colorMap"))?(this.colorMapByIndex=s.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=s.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===n&&(this.colorMapByValue=new b(this.colorMapByValue))),this.range=L},getRegion:function(e,r,i){var s=t.floor(r/this.totalBarWidth);return s<0||s>=this.values.length?n:s},getCurrentRegionFields:function(){var e=this.currentRegion,t=g(this.values[e]),n=[],r,i;for(i=t.length;i--;)r=t[i],n.push({isNull:r===null,value:r,color:this.calcColor(i,r,e),offset:e});return n},calcColor:function(e,t,i){var s=this.colorMapByIndex,o=this.colorMapByValue,u=this.options,a,f;return this.stacked?a=u.get("stackedBarColor"):a=t<0?u.get("negBarColor"):u.get("barColor"),t===0&&u.get("zeroColor")!==n&&(a=u.get("zeroColor")),o&&(f=o.get(t))?a=f:s&&s.length>i&&(a=s[i]),r.isArray(a)?a[e%a.length]:a},renderRegion:function(e,i){var s=this.values[e],o=this.options,u=this.xaxisOffset,a=[],f=this.range,l=this.stacked,c=this.target,h=e*this.totalBarWidth,p=this.canvasHeightEf,v=this.yoffset,m,g,y,b,w,E,S,x,T,N;s=r.isArray(s)?s:[s],S=s.length,x=s[0],b=d(null,s),N=d(u,s,!0);if(b)return o.get("nullColor")?(y=i?o.get("nullColor"):this.calcHighlightColor(o.get("nullColor"),o),m=v>0?v-1:v,c.drawRect(h,m,this.barWidth-1,0,y,y)):n;w=v;for(E=0;E<S;E++){x=s[E];if(l&&x===u){if(!N||T)continue;T=!0}f>0?g=t.floor(p*(t.abs(x-u)/f))+1:g=1,x<u||x===u&&v===0?(m=w,w+=g):(m=v-g,v-=g),y=this.calcColor(E,x,e),i&&(y=this.calcHighlightColor(y,o)),a.push(c.drawRect(h,m,this.barWidth-1,g-1,y,y))}return a.length===1?a[0]:a}}),r.fn.sparkline.tristate=N=o(r.fn.sparkline._base,S,{type:"tristate",init:function(e,t,i,s,o){var u=parseInt(i.get("barWidth"),10),a=parseInt(i.get("barSpacing"),10);N._super.init.call(this,e,t,i,s,o),this.regionShapes={},this.barWidth=u,this.barSpacing=a,this.totalBarWidth=u+a,this.values=r.map(t,Number),this.width=s=t.length*u+(t.length-1)*a,r.isArray(i.get("colorMap"))?(this.colorMapByIndex=i.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=i.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===n&&(this.colorMapByValue=new b(this.colorMapByValue))),this.initTarget()},getRegion:function(e,n,r){return t.floor(n/this.totalBarWidth)},getCurrentRegionFields:function(){var e=this.currentRegion;return{isNull:this.values[e]===n,value:this.values[e],color:this.calcColor(this.values[e],e),offset:e}},calcColor:function(e,t){var n=this.values,r=this.options,i=this.colorMapByIndex,s=this.colorMapByValue,o,u;return s&&(u=s.get(e))?o=u:i&&i.length>t?o=i[t]:n[t]<0?o=r.get("negBarColor"):n[t]>0?o=r.get("posBarColor"):o=r.get("zeroBarColor"),o},renderRegion:function(e,n){var r=this.values,i=this.options,s=this.target,o,u,a,f,l,c;o=s.pixelHeight,a=t.round(o/2),f=e*this.totalBarWidth,r[e]<0?(l=a,u=a-1):r[e]>0?(l=0,u=a-1):(l=a-1,u=2),c=this.calcColor(r[e],e);if(c===null)return;return n&&(c=this.calcHighlightColor(c,i)),s.drawRect(f,l,this.barWidth-1,u-1,c,c)}}),r.fn.sparkline.discrete=C=o(r.fn.sparkline._base,S,{type:"discrete",init:function(e,i,s,o,u){C._super.init.call(this,e,i,s,o,u),this.regionShapes={},this.values=i=r.map(i,Number),this.min=t.min.apply(t,i),this.max=t.max.apply(t,i),this.range=this.max-this.min,this.width=o=s.get("width")==="auto"?i.length*2:this.width,this.interval=t.floor(o/i.length),this.itemWidth=o/i.length,s.get("chartRangeMin")!==n&&(s.get("chartRangeClip")||s.get("chartRangeMin")<this.min)&&(this.min=s.get("chartRangeMin")),s.get("chartRangeMax")!==n&&(s.get("chartRangeClip")||s.get("chartRangeMax")>this.max)&&(this.max=s.get("chartRangeMax")),this.initTarget(),this.target&&(this.lineHeight=s.get("lineHeight")==="auto"?t.round(this.canvasHeight*.3):s.get("lineHeight"))},getRegion:function(e,n,r){return t.floor(n/this.itemWidth)},getCurrentRegionFields:function(){var e=this.currentRegion;return{isNull:this.values[e]===n,value:this.values[e],offset:e}},renderRegion:function(e,n){var r=this.values,i=this.options,s=this.min,o=this.max,u=this.range,f=this.interval,l=this.target,c=this.canvasHeight,h=this.lineHeight,p=c-h,d,v,m,g;return v=a(r[e],s,o),g=e*f,d=t.round(p-p*((v-s)/u)),m=i.get("thresholdColor")&&v<i.get("thresholdValue")?i.get("thresholdColor"):i.get("lineColor"),n&&(m=this.calcHighlightColor(m,i)),l.drawLine(g,d,g,d+h,m)}}),r.fn.sparkline.bullet=k=o(r.fn.sparkline._base,{type:"bullet",init:function(e,r,i,s,o){var u,a,f;k._super.init.call(this,e,r,i,s,o),this.values=r=c(r),f=r.slice(),f[0]=f[0]===null?f[2]:f[0],f[1]=r[1]===null?f[2]:f[1],u=t.min.apply(t,r),a=t.max.apply(t,r),i.get("base")===n?u=u<0?u:0:u=i.get("base"),this.min=u,this.max=a,this.range=a-u,this.shapes={},this.valueShapes={},this.regiondata={},this.width=s=i.get("width")==="auto"?"4.0em":s,this.target=this.$el.simpledraw(s,o,i.get("composite")),r.length||(this.disabled=!0),this.initTarget()},getRegion:function(e,t,r){var i=this.target.getShapeAt(e,t,r);return i!==n&&this.shapes[i]!==n?this.shapes[i]:n},getCurrentRegionFields:function(){var e=this.currentRegion;return{fieldkey:e.substr(0,1),value:this.values[e.substr(1)],region:e}},changeHighlight:function(e){var t=this.currentRegion,n=this.valueShapes[t],r;delete this.shapes[n];switch(t.substr(0,1)){case"r":r=this.renderRange(t.substr(1),e);break;case"p":r=this.renderPerformance(e);break;case"t":r=this.renderTarget(e)}this.valueShapes[t]=r.id,this.shapes[r.id]=t,this.target.replaceWithShape(n,r)},renderRange:function(e,n){var r=this.values[e],i=t.round(this.canvasWidth*((r-this.min)/this.range)),s=this.options.get("rangeColors")[e-2];return n&&(s=this.calcHighlightColor(s,this.options)),this.target.drawRect(0,0,i-1,this.canvasHeight-1,s,s)},renderPerformance:function(e){var n=this.values[1],r=t.round(this.canvasWidth*((n-this.min)/this.range)),i=this.options.get("performanceColor");return e&&(i=this.calcHighlightColor(i,this.options)),this.target.drawRect(0,t.round(this.canvasHeight*.3),r-1,t.round(this.canvasHeight*.4)-1,i,i)},renderTarget:function(e){var n=this.values[0],r=t.round(this.canvasWidth*((n-this.min)/this.range)-this.options.get("targetWidth")/2),i=t.round(this.canvasHeight*.1),s=this.canvasHeight-i*2,o=this.options.get("targetColor");return e&&(o=this.calcHighlightColor(o,this.options)),this.target.drawRect(r,i,this.options.get("targetWidth")-1,s-1,o,o)},render:function(){var e=this.values.length,t=this.target,n,r;if(!k._super.render.call(this))return;for(n=2;n<e;n++)r=this.renderRange(n).append(),this.shapes[r.id]="r"+n,this.valueShapes["r"+n]=r.id;this.values[1]!==null&&(r=this.renderPerformance().append(),this.shapes[r.id]="p1",this.valueShapes.p1=r.id),this.values[0]!==null&&(r=this.renderTarget().append(),this.shapes[r.id]="t0",this.valueShapes.t0=r.id),t.render()}}),r.fn.sparkline.pie=L=o(r.fn.sparkline._base,{type:"pie",init:function(e,n,i,s,o){var u=0,a;L._super.init.call(this,e,n,i,s,o),this.shapes={},this.valueShapes={},this.values=n=r.map(n,Number),i.get("width")==="auto"&&(this.width=this.height);if(n.length>0)for(a=n.length;a--;)u+=n[a];this.total=u,this.initTarget(),this.radius=t.floor(t.min(this.canvasWidth,this.canvasHeight)/2)},getRegion:function(e,t,r){var i=this.target.getShapeAt(e,t,r);return i!==n&&this.shapes[i]!==n?this.shapes[i]:n},getCurrentRegionFields:function(){var e=this.currentRegion;return{isNull:this.values[e]===n,value:this.values[e],percent:this.values[e]/this.total*100,color:this.options.get("sliceColors")[e%this.options.get("sliceColors").length],offset:e}},changeHighlight:function(e){var t=this.currentRegion,n=this.renderSlice(t,e),r=this.valueShapes[t];delete this.shapes[r],this.target.replaceWithShape(r,n),this.valueShapes[t]=n.id,this.shapes[n.id]=t},renderSlice:function(e,r){var i=this.target,s=this.options,o=this.radius,u=s.get("borderWidth"),a=s.get("offset"),f=2*t.PI,l=this.values,c=this.total,h=a?2*t.PI*(a/360):0,p,d,v,m,g;m=l.length;for(v=0;v<m;v++){p=h,d=h,c>0&&(d=h+f*(l[v]/c));if(e===v)return g=s.get("sliceColors")[v%s.get("sliceColors").length],r&&(g=this.calcHighlightColor(g,s)),i.drawPieSlice(o,o,o-u,p,d,n,g);h=d}},render:function(){var e=this.target,r=this.values,i=this.options,s=this.radius,o=i.get("borderWidth"),u,a;if(!L._super.render.call(this))return;o&&e.drawCircle(s,s,t.floor(s-o/2),i.get("borderColor"),n,o).append();for(a=r.length;a--;)r[a]&&(u=this.renderSlice(a).append(),this.valueShapes[a]=u.id,this.shapes[u.id]=a);e.render()}}),r.fn.sparkline.box=A=o(r.fn.sparkline._base,{type:"box",init:function(e,t,n,i,s){A._super.init.call(this,e,t,n,i,s),this.values=r.map(t,Number),this.width=n.get("width")==="auto"?"4.0em":i,this.initTarget(),this.values.length||(this.disabled=1)},getRegion:function(){return 1},getCurrentRegionFields:function(){var e=[{field:"lq",value:this.quartiles[0]},{field:"med",value:this.quartiles[1]},{field:"uq",value:this.quartiles[2]}];return this.loutlier!==n&&e.push({field:"lo",value:this.loutlier}),this.routlier!==n&&e.push({field:"ro",value:this.routlier}),this.lwhisker!==n&&e.push({field:"lw",value:this.lwhisker}),this.rwhisker!==n&&e.push({field:"rw",value:this.rwhisker}),e},render:function(){var e=this.target,r=this.values,i=r.length,s=this.options,o=this.canvasWidth,u=this.canvasHeight,a=s.get("chartRangeMin")===n?t.min.apply(t,r):s.get("chartRangeMin"),l=s.get("chartRangeMax")===n?t.max.apply(t,r):s.get("chartRangeMax"),c=0,h,p,d,v,m,g,y,b,w,E,S;if(!A._super.render.call(this))return;if(s.get("raw"))s.get("showOutliers")&&r.length>5?(p=r[0],h=r[1],v=r[2],m=r[3],g=r[4],y=r[5],b=r[6]):(h=r[0],v=r[1],m=r[2],g=r[3],y=r[4]);else{r.sort(function(e,t){return e-t}),v=f(r,1),m=f(r,2),g=f(r,3),d=g-v;if(s.get("showOutliers")){h=y=n;for(w=0;w<i;w++)h===n&&r[w]>v-d*s.get("outlierIQR")&&(h=r[w]),r[w]<g+d*s.get("outlierIQR")&&(y=r[w]);p=r[0],b=r[i-1]}else h=r[0],y=r[i-1]}this.quartiles=[v,m,g],this.lwhisker=h,this.rwhisker=y,this.loutlier=p,this.routlier=b,S=o/(l-a+1),s.get("showOutliers")&&(c=t.ceil(s.get("spotRadius")),o-=2*t.ceil(s.get("spotRadius")),S=o/(l-a+1),p<h&&e.drawCircle((p-a)*S+c,u/2,s.get("spotRadius"),s.get("outlierLineColor"),s.get("outlierFillColor")).append(),b>y&&e.drawCircle((b-a)*S+c,u/2,s.get("spotRadius"),s.get("outlierLineColor"),s.get("outlierFillColor")).append()),e.drawRect(t.round((v-a)*S+c),t.round(u*.1),t.round((g-v)*S),t.round(u*.8),s.get("boxLineColor"),s.get("boxFillColor")).append(),e.drawLine(t.round((h-a)*S+c),t.round(u/2),t.round((v-a)*S+c),t.round(u/2),s.get("lineColor")).append(),e.drawLine(t.round((h-a)*S+c),t.round(u/4),t.round((h-a)*S+c),t.round(u-u/4),s.get("whiskerColor")).append(),e.drawLine(t.round((y-a)*S+c),t.round(u/2),t.round((g-a)*S+c),t.round(u/2),s.get("lineColor")).append(),e.drawLine(t.round((y-a)*S+c),t.round(u/4),t.round((y-a)*S+c),t.round(u-u/4),s.get("whiskerColor")).append(),e.drawLine(t.round((m-a)*S+c),t.round(u*.1),t.round((m-a)*S+c),t.round(u*.9),s.get("medianColor")).append(),s.get("target")&&(E=t.ceil(s.get("spotRadius")),e.drawLine(t.round((s.get("target")-a)*S+c),t.round(u/2-E),t.round((s.get("target")-a)*S+c),t.round(u/2+E),s.get("targetColor")).append(),e.drawLine(t.round((s.get("target")-a)*S+c-E),t.round(u/2),t.round((s.get("target")-a)*S+c+E),t.round(u/2),s.get("targetColor")).append()),e.render()}}),_=o({init:function(e,t,n,r){this.target=e,this.id=t,this.type=n,this.args=r},append:function(){return this.target.appendShape(this),this}}),D=o({_pxregex:/(\d+)(px)?\s*$/i,init:function(e,t,n){if(!e)return;this.width=e,this.height=t,this.target=n,this.lastShapeId=null,n[0]&&(n=n[0]),r.data(n,"_jqs_vcanvas",this)},drawLine:function(e,t,n,r,i,s){return this.drawShape([[e,t],[n,r]],i,s)},drawShape:function(e,t,n,r){return this._genShape("Shape",[e,t,n,r])},drawCircle:function(e,t,n,r,i,s){return this._genShape("Circle",[e,t,n,r,i,s])},drawPieSlice:function(e,t,n,r,i,s,o){return this._genShape("PieSlice",[e,t,n,r,i,s,o])},drawRect:function(e,t,n,r,i,s){return this._genShape("Rect",[e,t,n,r,i,s])},getElement:function(){return this.canvas},getLastShapeId:function(){return this.lastShapeId},reset:function(){alert("reset not implemented")},_insert:function(e,t){r(t).html(e)},_calculatePixelDims:function(e,t,n){var i;i=this._pxregex.exec(t),i?this.pixelHeight=i[1]:this.pixelHeight=r(n).height(),i=this._pxregex.exec(e),i?this.pixelWidth=i[1]:this.pixelWidth=r(n).width()},_genShape:function(e,t){var n=j++;return t.unshift(n),new _(this,n,e,t)},appendShape:function(e){alert("appendShape not implemented")},replaceWithShape:function(e,t){alert("replaceWithShape not implemented")},insertAfterShape:function(e,t){alert("insertAfterShape not implemented")},removeShapeId:function(e){alert("removeShapeId not implemented")},getShapeAt:function(e,t,n){alert("getShapeAt not implemented")},render:function(){alert("render not implemented")}}),P=o(D,{init:function(t,i,s,o){P._super.init.call(this,t,i,s),this.canvas=e.createElement("canvas"),s[0]&&(s=s[0]),r.data(s,"_jqs_vcanvas",this),r(this.canvas).css({display:"inline-block",width:t,height:i,verticalAlign:"top"}),this._insert(this.canvas,s),this._calculatePixelDims(t,i,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,this.interact=o,this.shapes={},this.shapeseq=[],this.currentTargetShapeId=n,r(this.canvas).css({width:this.pixelWidth,height:this.pixelHeight})},_getContext:function(e,t,r){var i=this.canvas.getContext("2d");return e!==n&&(i.strokeStyle=e),i.lineWidth=r===n?1:r,t!==n&&(i.fillStyle=t),i},reset:function(){var e=this._getContext();e.clearRect(0,0,this.pixelWidth,this.pixelHeight),this.shapes={},this.shapeseq=[],this.currentTargetShapeId=n},_drawShape:function(e,t,r,i,s){var o=this._getContext(r,i,s),u,a;o.beginPath(),o.moveTo(t[0][0]+.5,t[0][1]+.5);for(u=1,a=t.length;u<a;u++)o.lineTo(t[u][0]+.5,t[u][1]+.5);r!==n&&o.stroke(),i!==n&&o.fill(),this.targetX!==n&&this.targetY!==n&&o.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=e)},_drawCircle:function(e,r,i,s,o,u,a){var f=this._getContext(o,u,a);f.beginPath(),f.arc(r,i,s,0,2*t.PI,!1),this.targetX!==n&&this.targetY!==n&&f.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=e),o!==n&&f.stroke(),u!==n&&f.fill()},_drawPieSlice:function(e,t,r,i,s,o,u,a){var f=this._getContext(u,a);f.beginPath(),f.moveTo(t,r),f.arc(t,r,i,s,o,!1),f.lineTo(t,r),f.closePath(),u!==n&&f.stroke(),a&&f.fill(),this.targetX!==n&&this.targetY!==n&&f.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=e)},_drawRect:function(e,t,n,r,i,s,o){return this._drawShape(e,[[t,n],[t+r,n],[t+r,n+i],[t,n+i],[t,n]],s,o)},appendShape:function(e){return this.shapes[e.id]=e,this.shapeseq.push(e.id),this.lastShapeId=e.id,e.id},replaceWithShape:function(e,t){var n=this.shapeseq,r;this.shapes[t.id]=t;for(r=n.length;r--;)n[r]==e&&(n[r]=t.id);delete this.shapes[e]},replaceWithShapes:function(e,t){var n=this.shapeseq,r={},i,s,o;for(s=e.length;s--;)r[e[s]]=!0;for(s=n.length;s--;)i=n[s],r[i]&&(n.splice(s,1),delete this.shapes[i],o=s);for(s=t.length;s--;)n.splice(o,0,t[s].id),this.shapes[t[s].id]=t[s]},insertAfterShape:function(e,t){var n=this.shapeseq,r;for(r=n.length;r--;)if(n[r]===e){n.splice(r+1,0,t.id),this.shapes[t.id]=t;return}},removeShapeId:function(e){var t=this.shapeseq,n;for(n=t.length;n--;)if(t[n]===e){t.splice(n,1);break}delete this.shapes[e]},getShapeAt:function(e,t,n){return this.targetX=t,this.targetY=n,this.render(),this.currentTargetShapeId},render:function(){var e=this.shapeseq,t=this.shapes,n=e.length,r=this._getContext(),i,s,o;r.clearRect(0,0,this.pixelWidth,this.pixelHeight);for(o=0;o<n;o++)i=e[o],s=t[i],this["_draw"+s.type].apply(this,s.args);this.interact||(this.shapes={},this.shapeseq=[])}}),H=o(D,{init:function(t,n,i){var s;H._super.init.call(this,t,n,i),i[0]&&(i=i[0]),r.data(i,"_jqs_vcanvas",this),this.canvas=e.createElement("span"),r(this.canvas).css({display:"inline-block",position:"relative",overflow:"hidden",width:t,height:n,margin:"0px",padding:"0px",verticalAlign:"top"}),this._insert(this.canvas,i),this._calculatePixelDims(t,n,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,s='<v:group coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'"'+' style="position:absolute;top:0;left:0;width:'+this.pixelWidth+"px;height="+this.pixelHeight+'px;"></v:group>',this.canvas.insertAdjacentHTML("beforeEnd",s),this.group=r(this.canvas).children()[0],this.rendered=!1,this.prerender=""},_drawShape:function(e,t,r,i,s){var o=[],u,a,f,l,c,h,p;for(p=0,h=t.length;p<h;p++)o[p]=""+t[p][0]+","+t[p][1];return u=o.splice(0,1),s=s===n?1:s,a=r===n?' stroked="false" ':' strokeWeight="'+s+'px" strokeColor="'+r+'" ',f=i===n?' filled="false"':' fillColor="'+i+'" filled="true" ',l=o[0]===o[o.length-1]?"x ":"",c='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" '+' id="jqsshape'+e+'" '+a+f+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;" '+' path="m '+u+" l "+o.join(", ")+" "+l+'e">'+" </v:shape>",c},_drawCircle:function(e,t,r,i,s,o,u){var a,f,l;return t-=i,r-=i,a=s===n?' stroked="false" ':' strokeWeight="'+u+'px" strokeColor="'+s+'" ',f=o===n?' filled="false"':' fillColor="'+o+'" filled="true" ',l='<v:oval id="jqsshape'+e+'" '+a+f+' style="position:absolute;top:'+r+"px; left:"+t+"px; width:"+i*2+"px; height:"+i*2+'px"></v:oval>',l},_drawPieSlice:function(e,r,i,s,o,u,a,f){var l,c,h,p,d,v,m,g;if(o===u)return"";u-o===2*t.PI&&(o=0,u=2*t.PI),c=r+t.round(t.cos(o)*s),h=i+t.round(t.sin(o)*s),p=r+t.round(t.cos(u)*s),d=i+t.round(t.sin(u)*s);if(c===p&&h===d){if(u-o<t.PI)return"";c=p=r+s,h=d=i}return c===p&&h===d&&u-o<t.PI?"":(l=[r-s,i-s,r+s,i+s,c,h,p,d],v=a===n?' stroked="false" ':' strokeWeight="1px" strokeColor="'+a+'" ',m=f===n?' filled="false"':' fillColor="'+f+'" filled="true" ',g='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" '+' id="jqsshape'+e+'" '+v+m+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;" '+' path="m '+r+","+i+" wa "+l.join(", ")+' x e">'+" </v:shape>",g)},_drawRect:function(e,t,n,r,i,s,o){return this._drawShape(e,[[t,n],[t,n+i],[t+r,n+i],[t+r,n],[t,n]],s,o)},reset:function(){this.group.innerHTML=""},appendShape:function(e){var t=this["_draw"+e.type].apply(this,e.args);return this.rendered?this.group.insertAdjacentHTML("beforeEnd",t):this.prerender+=t,this.lastShapeId=e.id,e.id},replaceWithShape:function(e,t){var n=r("#jqsshape"+e),i=this["_draw"+t.type].apply(this,t.args);n[0].outerHTML=i},replaceWithShapes:function(e,t){var n=r("#jqsshape"+e[0]),i="",s=t.length,o;for(o=0;o<s;o++)i+=this["_draw"+t[o].type].apply(this,t[o].args);n[0].outerHTML=i;for(o=1;o<e.length;o++)r("#jqsshape"+e[o]).remove()},insertAfterShape:function(e,t){var n=r("#jqsshape"+e),i=this["_draw"+t.type].apply(this,t.args);n[0].insertAdjacentHTML("afterEnd",i)},removeShapeId:function(e){var t=r("#jqsshape"+e);this.group.removeChild(t[0])},getShapeAt:function(e,t,n){var r=e.id.substr(8);return r},render:function(){this.rendered||(this.group.innerHTML=this.prerender,this.rendered=!0)}})})}(document,Math),define("runner",["jquery","config","preferences","cm/lib/codemirror","form","prolog","links","answer","laconic","sparkline"],function(e,t,n,r,o,u,a){function f(t,n){var r=e.el.a({href:"#","class":"close btn btn-link btn-sm",title:n},e.el.span({"class":"glyphicon glyphicon-"+t}));return r}(function(e){var t="prologRunners",n={_init:function(n){return this.each(function(){function i(){var t=e.el.span({"class":"glyphicon glyphicon-menu-hamburger"}),r=o.widgets.dropdownButton(t,{divClass:"runners-menu btn-transparent",ulClass:"pull-right",client:n,actions:{"Collapse all":function(){this.find(".prolog-runner").prologRunner("toggleIconic",!0)},"Expand all":function(){this.find(".prolog-runner").prologRunner("toggleIconic",!1)},"Stop all":function(){this.find(".prolog-runner").prologRunner("stop")},Clear:function(){this.prologRunners("clear")}}});return r}var n=e(this),r={};r.stretch=e(e.el.div({"class":"stretch"})),r.inner=e(e.el.div({"class":"inner"})),n.append(i()),n.append(r.stretch),n.append(r.inner),n.on("pane.resize",function(){n.prologRunners("scrollToBottom",!0)}),n.data(t,r)})},run:function(t){var n=this.data("prologRunners");t.iconifyLast&&this.prologRunners("iconifyLast");var r=e.el.div({"class":"prolog-runner"});return n.inner.append(r),e(r).prologRunner(t),this.prologRunners("scrollToBottom"),this},clear:function(){this.find(".prolog-runner").prologRunner("close")},iconifyLast:function(){var t=e(this.inner).children().last();if(t.length==1){var n=t.prologRunner();n.alive()||n.toggleIconic(!0)}return this},scrollToBottom:function(t){return this.each(function(){var n=e(this),r=n.data("prologRunners"),i=r.inner.height(),s=n.height()-i-4-2;if(s>0||t!==!0)r.stretch.height(s>0?s:0),n.scrollTop(i)}),this}};e.fn.prologRunners=function(r){if(n[r])return n[r].apply(this,Array.prototype.slice.call(arguments,1));if(typeof r=="object"||!r)return n._init.apply(this,arguments);e.error("Method "+r+" does not exist on jQuery."+t)}})(jQuery),function(e){function h(t){return e(t).parents(".prolog-runners")}function p(e,t){var n=e.find(".runner-results");return n.append(t),this}function d(e){switch(e){case"running":case"wait-next":case"wait-input":case"wait-debug":return!0;default:return!1}}function v(t){var n=[{"class":"projection"}];for(i=0;i<t.length;i++)n.push(e.el.th({"class":"pl-pvar"},t[i]));n.push(e.el.th({"class":"answer-nth"},""));var r=e.el.table({"class":"prolog-answers"},e.el.tbody(e.el.tr.apply(this,n)));return r}function m(t){var r=t.data(n);return e(t).parents(".swish").swish("breakpoints",r.prolog.id)}function g(){var t=this.pengine.options.runner,r=t.data(n),i={},s;r.query.editor&&e(r.query.editor).prologEditor("pengine",{add:this.pengine.id});if(s=m(t))i.breakpoints=Pengine.stringify(s);r.chunk&&(i.chunk=r.chunk),this.pengine.ask("'$swish wrapper'(("+k(r.query.query)+"), Residuals)",i),t.prologRunner("setState","running")}function y(){var t=this.pengine.options.runner;for(var n=0;n<this.data.length;n++){var r=this.data[n];this.projection&&(r.projection=this.projection),t.prologRunner("renderAnswer",r)}this.time>.1&&p(t,e.el.div({"class":"cputime"},e.el.span(this.time.toFixed(3)," seconds cpu time"))),t.prologRunner("setState",this.more?"wait-next":"true")}function b(){var t=this.pengine.options.runner;p(t,e.el.span({"class":"prolog-false"},"false")),t.prologRunner("setState","false")}function w(){var e=this.pengine.options.runner;e.prologRunner("setState","stopped")}function E(){var e=this.pengine.options.runner,t=e.data("prologRunner"),n=this.data||"Please enter a Prolog term";t.wait_for="term";if(typeof n=="object"){if(n.type=="trace")return e.prologRunner("trace",this);if(n.type=="jQuery")return e.prologRunner("jQuery",this);n.type=="console"?(n=n.prompt||"console> ",t.wait_for="line"):n=JSON.stringify(n)}e.prologRunner("setPrompt",n),e.prologRunner("setState","wait-input")}function S(){var t=this.pengine.options.runner;this.data=this.data.replace(new RegExp("'[-0-9a-f]{36}':","g"),""),this.location&&(this.data=this.data.replace(/pengine:\/\/[-0-9a-f]*\//,""),e(".swish-event-receiver").trigger("source-error",this)),t.prologRunner("outputHTML",this.data),h(t).prologRunners("scrollToBottom")}function x(){var e=this.pengine.options.runner,t;this.code=="too_many_pengines"?this.message="Too many open queries. Please complete some\nqueries by using |Next|, |Stop| or by\nclosing some queries.":typeof this.data=="string"?this.message=this.data.replace(new RegExp("'"+this.pengine.id+"':","g"),""):this.message="Unknown error",e.prologRunner("error",this),e.prologRunner("setState","error")}function T(){var e=this.pengine.options.runner;e.prologRunner("error","** Execution aborted **"),e.prologRunner("setState","aborted")}function N(){var e=this.pengine.options.runner;e.prologRunner("ping",this.data)}function C(e){return e.variables.length>0||e.residuals}function k(t){return String(e.trim(t)).replace(/\.$/,"")}var n="prologRunner",l={59:"next",186:"next",32:"next",190:"stop",13:"stop",65:"stopOrAbort",27:"stopOrAbort",46:"close",112:"help"},c={_init:function(n){return this.each(function(){function u(t,n,r){var s=e.el.button({title:n,"class":"rtb-"+r},e.el.span({"class":"glyphicon glyphicon-"+t}));return e(s).on("click",function(){i.prologRunner(r)}),s}function c(){var t=e.el.span({"class":"runner-state show-state idle"});return o.widgets.dropdownButton(t)}function h(){function t(){i.prologRunner("next",1)}function n(){i.prologRunner("next",10)}function r(){i.prologRunner("next",100)}function o(){i.prologRunner("next",1e3)}function u(){s.prolog.stop()}function a(){s.prolog.abort()}function f(t,n){var r=e.el.button(n);return e(r).on("click",t),r}function l(){var t=e.el.input({"class":"prolog-input"}),n=e.el.button("Send");return e(t).keypress(function(n){if(n.which==13&&i.prologRunner("respond",e(t).val()))return e(t).val(""),n.preventDefault(),!1;n.key!="Esc"&&n.stopPropagation()}),e(n).on("click",function(){i.prologRunner("respond",e(t).val())}),{input:t,button:n}}function c(){var t=e.el.span({"class":"sparklines"},"");return t}var h=l(),p=e.el.div({"class":"controller show-state"},e.el.span({"class":"running"},f(a,"Abort")),e.el.span({"class":"wait-next"},f(t,"Next"),f(n,"10"),f(r,"100"),f(o,"1,000")," ",f(u,"Stop")),e.el.span({"class":"wait-input"},f(a,"Abort"),h.button,e.el.span(h.input)),c());return p}var i=e(this),s={};i.addClass("prolog-runner"),n.tabled&&i.addClass("tabled");if(n.title!=0){var p=e.el.span({"class":"query cm-s-prolog"});r.runMode(n.query,"prolog",p),i.append(e.el.div({"class":"runner-title ui-widget-header"},u("remove-circle","Close","close"),u("minus","Iconify","toggleIconic"),u("download","Download CSV","downloadCSV"),c(),p))}else{var d=f("remove-circle","Close");i.append(d),e(d).on("click",function(){i.prologRunner("close")})}return n.chunk&&(s.chunk=n.chunk),i.append(e.el.div({"class":"runner-results"})),i.append(h()),i.data("prologRunner",s),i.prologRunner("populateActionMenu"),i.keydown(function(e){i.prologRunner("getState")!="wait-input"&&!e.ctrlKey&&!e.altKey&&l[e.which]&&(e.preventDefault(),i.prologRunner(l[e.which]))}),i.on("click","a",a.followLink),s.savedFocus=document.activeElement,i.attr("tabindex",-1),i.focus(),s.query=n,s.answers=0,require([t.http.locations.pengines+"/pengines.js"],function(){s.prolog=new Pengine({server:t.http.locations.pengines,runner:i,application:"swish",src:n.source,destroy:!1,format:"json-html",oncreate:g,onsuccess:y,onfailure:b,onstop:w,onprompt:E,onoutput:S,onping:N,onerror:x,onabort:T}),s.prolog.state="idle",t.swish.ping&&s.prolog.ping!=undefined&&s.prolog.ping(t.swish.ping*1e3)}),this})},renderAnswer:function(t){var n=this.data("prologRunner"),r=++n.answers%2==0;if(n.query.tabled){if(n.answers!=1)return t.projection=n.projection,t.nth=n.answers,e(n.table).prologAnswer(t),this;if(t.projection&&t.projection.length>0){var i=v(t.projection);return p(this,i),n.table=i,n.projection=t.projection,t.nth=n.answers,e(n.table).prologAnswer(t),this}}var s=e.el.div({"class":"answer "+(r?"even":"odd")},e.el.span({"class":"answer-no"},n.answers));p(this,s),e(s).prologAnswer(t)},outputHTML:function(t){var n=e.el.span({"class":"output"});e(n).html(t),p(this,n)},error:function(t){var n;if(typeof t=="object"){if(t.code=="died")return p(this,e.el.div({"class":"RIP",title:"Remote pengine timed out"})),this;n=t.message}else n=t;return p(this,e.el.pre({"class":"prolog-message msg-error"},n)),this},trace:function(t){function s(e){return e.charAt(0).toUpperCase()+e.slice(1)}function o(n,r,i){var s=e.el.button({"class":r,title:n},e.el.span(n));return e(s).on("click",function(n){i!==undefined&&(r+="("+Pengine.stringify(i(n))+")"),t.pengine.respond(r),e(n.target).parent().remove()}),s}var n=this,r=e.el.span({"class":"goal"}),i=t.data;e(r).html(i.goal),p(this,e.el.div({"class":"prolog-trace"},e.el.span({"class":"depth",style:"width:"+(i.depth*5-1)+"px"}," "),e.el.span({"class":"port "+i.port},s(i.port),":"),r)),i.port=="exception"&&p(this,e.el.div({"class":"prolog-exception"},i.exception.message)),p(this,e.el.div({"class":"trace-buttons"},o("Continue","nodebug",function(t){return m(e(t.target).closest(".prolog-runner"))}),o("Step into","continue"),o("Step over","skip"),o("Step out","up"),o("Retry","retry"),o("Abort","abort"))),this.closest(".swish").find(".tabbed").trigger("trace-location",i),this.prologRunner("setState","wait-debug")},setPrompt:function(e){this.find(".controller input").attr("placeholder",e)},jQuery:function(t){var n=t.data,r;if(typeof n.selector=="string")r=e(n.selector);else if(typeof n.selector=="object"){switch(n.selector.root){case"this":root=this;break;case"swish":root=this.closest(".swish")}n.selector.sub==""?r=root:r=root.find(n.selector.sub)}console.log(r);var i=r[n.method].apply(r,n.arguments);console.log(i),t.pengine.respond(Pengine.stringify(i))},respond:function(t){var n=this.data("prologRunner");if(n.wait_for=="term"){s=k(t);if(s=="")return null}else s=Pengine.stringify(t+"\n");return p(this,e.el.div({"class":"response"},t)),n.prolog.respond(s),this},stop:function(){return this.each(function(){var t=e(this),n=t.data("prologRunner");n.prolog.stop()})},stopOrAbort:function(){return this.each(function(){var t=e(this),n=t.data("prologRunner"),r=t.prologRunner("getState");switch(r){case"running":case"wait-input":n.prolog.abort();break;case"wait-next":n.prolog.stop()}})},next:function(t){return this.each(function(){var n=e(this),r=n.data("prologRunner");r.prolog.next(t),n.prologRunner("setState","running")})},abort:function(){return this.each(function(){var t=e(this),n=t.data("prologRunner");n.prolog.abort()})},close:function(){if(this.length){var t=h(this);this.each(function(){var t=e(this),n=t.data("prologRunner");t.prologRunner("alive")&&(e(".prolog-editor").trigger("pengine-died",n.prolog.id),n.prolog.destroy())}),this.remove(),t.prologRunners("scrollToBottom",!0)}return this},help:function(){e(".swish-event-receiver").trigger("help",{file:"runner.html"})},toggleIconic:function(e){return e==undefined?this.toggleClass("iconic"):e?this.addClass("iconic"):this.removeClass("iconic"),h(this).prologRunners("scrollToBottom",!0),this},populateActionMenu:function(t){var n=this.find(".runner-title .btn-group.dropdown");return t=e.extend({"Re-run":function(){console.log("Re-Run ",this)}},t),o.widgets.populateMenu(n,this,t),this},downloadCSV:function(e){var t=this.data("prologRunner"),n=t.query.query.replace(/\.\s*$/,"");return u.downloadCSV(n,t.query.source,e),this},setState:function(t){var n=this.data("prologRunner");if(!n)return;if(n.prolog.state!=t){var r=this.find(".show-state");r.removeClass(n.prolog.state).addClass(t),n.prolog.state=t,!d(t)&&n.savedFocus?(e(n.savedFocus).focus(),n.savedFocus=null):t=="wait-input"&&this.find("input").focus(),d(t)||(e(".prolog-editor").trigger("pengine-died",n.prolog.id),n.prolog.destroy())}if(t=="wait-next"||t=="true"){var i=h(this);setTimeout(function(){i.prologRunners("scrollToBottom")},100)}else h(this).prologRunners("scrollToBottom");return this},getState:function(){var e=this.data("prologRunner");return e.prolog?e.prolog.state:"idle"},alive:function(){return d(this.prologRunner("getState"))},ping:function(e){var t=this.data("prologRunner");if(t&&t.prolog&&t.prolog.state=="running"){var n=this.find(".sparklines"),r=["global","local","trail"],s=["red","blue","green"],o=["Global ","Local ","Trail "],u=10;t.stacks||(t.stacks={global:{usage:[]},local:{usage:[]},trail:{usage:[]}});for(i=0;i<r.length;i++){var a=r[i],f=e.stacks[a].limit,l=e.stacks[a].usage,c=Math.log10(l/f*1e4);function h(e,t){function r(e){e=e.toString();var t=/(-?\d+)(\d{3})/;while(t.test(e))e=e.replace(t,"$1,$2");return e}var n=Math.round(Math.pow(10,t)/1e4*e);return r(n)}t.stacks[a].limit=f,t.stacks[a].usage.length>=u&&(t.stacks[a].usage=t.stacks[a].usage.slice(1)),t.stacks[a].usage.push(c),n.sparkline(t.stacks[a].usage,{composite:i>0,chartRangeMin:0,chartRangeMax:4,lineColor:s[i],tooltipPrefix:o[i],tooltipSuffix:" bytes",tooltipChartTitle:i==0?"Stack usage":undefined,numberFormatter:function(e){return h(f,e)}})}}}};e.fn.prologRunner=function(t){if(c[t])return c[t].apply(this,Array.prototype.slice.call(arguments,1));if(typeof t=="object"||!t)return c._init.apply(this,arguments);e.error("Method "+t+" does not exist on jQuery."+n)}}(jQuery)}),define("gitty",["jquery","config","form","modal","laconic"],function(e,t,n,r){function i(t,n){function i(e){(t[e]||n[e])&&t[e]!=n[e]&&(r[e]={from:t[e],to:n[e]})}var r={};i("author"),i("title"),i("data"),i("public"),i("example");if(d=o(t.tags,n.tags))r.tags=d;return e.isEmptyObject(r)?null:r}function s(t,n){var r={};for(var i in t)if(t.hasOwnProperty(i)){switch(typeof t[i]){case"object":if(e.isArray(t[i])&&!o(t[i],n[i]))continue;break;case"string":case"boolean":if(n[i]==t[i])continue}r[i]=t[i]}return r}function o(t,n){function s(e,t){var n=[];for(var r=0;r<t.length;r++)e.indexOf(t[r])<0&&n.push(t[r]);return n}var r,i={};return t=t||[],n=n||[],(r=s(t,n)).length>0&&(i.added=r),(r=s(n,t)).length>0&&(i.deleted=r),e.isEmptyObject(i)?null:i}return function(e){var s="gitty",o={_init:function(t){return this.each(function(){function u(t,n,r,i){var s={role:"presentation"},o=[];n&&o.push("active"),i&&o.push("disabled"),o!=[]&&(s.class=o.join(" "));var u=e.el.li(s,e.el.a({href:"#"+r,"data-toggle":"tab"},t));return u}var n=e(this),r=n.data(s)||{},i=t.meta,o;r.commits=[],r.commits[i.commit]=i,r.commit=i.commit,r.editor=t.editor,henabled=!Boolean(i.previous),o=e(e.el.div({"class":"tab-content"})),n.append(e.el.ul({"class":"nav nav-tabs"},u("Meta data",!0,"gitty-meta-data"),u("History",!1,"gitty-history",henabled),u("Changes",!1,"gitty-diff",henabled))),n.append(o),o.append(e.el.div({"class":"tab-pane fade in active gitty-meta-data",id:"gitty-meta-data"})),n.find('[href="#gitty-meta-data"]').on("show.bs.tab",function(e){n.gitty("showMetaData")}),o.append(e.el.div({"class":"tab-pane fade gitty-history",id:"gitty-history"})),n.find('[href="#gitty-history"]').on("show.bs.tab",function(e){n.gitty("showHistory")}),o.append(e.el.div({"class":"tab-pane fade gitty-diff",id:"gitty-diff"})),n.find('[href="#gitty-diff"]').on("show.bs.tab",function(e){n.gitty("showDiff")}),n.data(s,r),n.gitty("showMetaData")})},title:function(t){var n=e.el.span("File ",e.el.span({"class":"filename"},t.name));return t.symbolic!="HEAD"&&t.commit&&e(n).append("@",e.el.span({"class":"sha1 abbrev"},t.commit.substring(0,7))),n},showMetaData:function(){return this.each(function(){var t=e(this),r=t.data(s),i=t.find(".gitty-meta-data"),o,u=r.commits[r.commit];if(r.metaData==r.commit)return;r.metaData=r.commit,i.html(""),o=e.el.form({"class":"form-horizontal"},n.fields.fileName(u.name,u.public,u.example,!0),n.fields.title(u.title),n.fields.author(u.author),n.fields.date(u.time,"Date","date"),n.fields.tags(u.tags)),u.symbolic=="HEAD"&&e(o).append(n.fields.buttons({label:"Update meta data",action:function(e,t){return r.editor.storage("save",t,"only-meta-data"),!1}})),i.append(o)})},showHistory:function(){return this.each(function(){var i=e(this),o=i.data(s),u=i.find(".gitty-history"),a=o.commits[o.commit],f;if(o.history)return;u.html(""),u.append(e.el.table({"class":"table table-striped table-condensed gitty-history","data-click-to-select":!0,"data-single-select":!0},e.el.tr(e.el.th("Comment"),e.el.th("Date"),e.el.th("Author"),e.el.th("Changed")))),f=n.widgets.glyphIconButton("glyphicon-play",{title:"Open the highlighted version in SWISH"}),u.append(f),e(f).on("click",function(t){var n=i.find("tr.success");if(n.length==1){var r=n.data("commit");o.commits[r].symbolic=="HEAD"?file=o.commits[r].name:file=r,i.parents(".swish").swish("playFile",file),e("#ajaxModal").modal("hide")}return!1});var l=t.http.locations.web_storage+encodeURI(a.name);e.ajax({url:l,contentType:"application/json",type:"GET",data:{format:"history",depth:6,to:o.commit},success:function(e){i.gitty("fillHistoryTable",e),o.history=o.commit},error:function(e){r.ajaxError(e)}})})},fillHistoryTable:function(t){function f(t){var n,s,o=e.el.span();if(t.previous){if((n=r.commits[t.previous])&&(s=i(t,n)))for(var u in s)s.hasOwnProperty(u)&&e(o).append(e.el.span({"class":"change-type"},u))}else e(o).append("initial");return o}var n=this,r=this.data(s),o=this.find(".table.gitty-history");for(var u=0;u<t.length;u++){var a=t[u];r.commits[a.commit]||(r.commits[a.commit]=a)}for(var u=0;u<t.length;u++){var a=t[u],l;if(u==t.length-1&&a.previous&&!r.commit[a.previous])break;var c={"data-commit":a.commit};r.commit==a.commit&&(c.class="success"),l=e.el.tr(c,e.el.td({"class":"commit-message"},a.commit_message||"No comment"),e.el.td({"class":"date"},(new Date(a.time*1e3)).toLocaleString()),e.el.td({"class":"author"},a.author||"No author"),e.el.td({"class":"changes"},f(a))),o.append(l)}o.on("click","tr",function(t){var r=e(t.target).parents("tr"),i=r.data("commit");n.gitty("setCommit",i)})},setCommit:function(e){var t=this.data(s),n=this.parent(".modal-content").find("h2");return n.html(""),n.append(this.gitty("title",t.commits[e])),this.find("tr.success").removeClass("success"),this.find("tr[data-commit="+e+"]").addClass("success"),t.commit=e,this},showDiff:function(){return this.each(function(){var n=e(this),i=n.data(s);if(i.diff==i.commit)return;n.find(".gitty-diff").html("");var o=t.http.locations.web_storage+encodeURI(i.commit);e.ajax({url:o,contentType:"application/json",type:"GET",data:{format:"diff"},success:function(e){n.gitty("fillDiff",e),i.diff=i.commit},error:function(e){r.ajaxError(e)}})})},fillDiff:function(e){e.tags&&this.gitty("diffTags",e.tags),e.data&&this.gitty("udiffData",e.data)},diffTags:function(t){function s(t,n){i.append(e.el.span({"class":"diff-tag "+n},t))}var n=this.find(".gitty-diff"),r=e(e.el.div({"class":"diff-tags"},e.el.label("Tags"))),i=e(e.el.span({"class":"diff-tags"}));r.append(i);if(t.deleted.length){i.append("Removed: ");for(var o=0;o<t.deleted.length;o++)s(t.deleted[o],"deleted")}if(t.added.length){i.append(t.deleted.length?", ":"","Added: ");for(var o=0;o<t.added.length;o++)s(t.added[o],"added")}return n.append(r),this},udiffData:function(t){var n=this.find(".gitty-diff"),r=t.split("\n"),i=e(e.el.pre({"class":"udiff"}));for(var s=0;s<r.length;s++){var o=r[s],u={"@":"udiff-hdr"," ":"udiff-ctx","+":"udiff-add","-":"udiff-del"};i.append(e.el.span({"class":u[o.charAt(0)]},o),e.el.br())}n.append(i)}};e.fn.gitty=function(t){if(o[t])return o[t].apply(this,Array.prototype.slice.call(arguments,1));if(typeof t=="object"||!t)return o._init.apply(this,arguments);e.error("Method "+t+" does not exist on jQuery."+s)}}(jQuery),{diffMeta:i,reduceMeta:s,diffTags:o}});var __whitespace={" ":!0," ":!0,"\n":!0,"\f":!0,"\r":!0},difflib={defaultJunkFunction:function(e){return __whitespace.hasOwnProperty(e)},stripLinebreaks:function(e){return e.replace(/^[\n\r]*|[\n\r]*$/g,"")},stringAsLines:function(e){var t=e.indexOf("\n"),n=e.indexOf("\r"),r=t>-1&&n>-1||n<0?"\n":"\r",i=e.split(r);for(var s=0;s<i.length;s++)i[s]=difflib.stripLinebreaks(i[s]);return i},__reduce:function(e,t,n){if(n!=null)var r=n,i=0;else{if(!t)return null;var r=t[0],i=1}for(;i<t.length;i++)r=e(r,t[i]);return r},__ntuplecomp:function(e,t){var n=Math.max(e.length,t.length);for(var r=0;r<n;r++){if(e[r]<t[r])return-1;if(e[r]>t[r])return 1}return e.length==t.length?0:e.length<t.length?-1:1},__calculate_ratio:function(e,t){return t?2*e/t:1},__isindict:function(e){return function(t){return e.hasOwnProperty(t)}},__dictget:function(e,t,n){return e.hasOwnProperty(t)?e[t]:n},SequenceMatcher:function(e,t,n){this.set_seqs=function(e,t){this.set_seq1(e),this.set_seq2(t)},this.set_seq1=function(e){if(e==this.a)return;this.a=e,this.matching_blocks=this.opcodes=null},this.set_seq2=function(e){if(e==this.b)return;this.b=e,this.matching_blocks=this.opcodes=this.fullbcount=null,this.__chain_b()},this.__chain_b=function(){var e=this.b,t=e.length,n=this.b2j={},r={};for(var i=0;i<e.length;i++){var s=e[i];if(n.hasOwnProperty(s)){var o=n[s];t>=200&&o.length*100>t?(r[s]=1,delete n[s]):o.push(i)}else n[s]=[i]}for(var s in r)r.hasOwnProperty(s)&&delete n[s];var u=this.isjunk,a={};if(u){for(var s in r)r.hasOwnProperty(s)&&u(s)&&(a[s]=1,delete r[s]);for(var s in n)n.hasOwnProperty(s)&&u(s)&&(a[s]=1,delete n[s])}this.isbjunk=difflib.__isindict(a),this.isbpopular=difflib.__isindict(r)},this.find_longest_match=function(e,t,n,r){var i=this.a,s=this.b,o=this.b2j,u=this.isbjunk,a=e,f=n,l=0,c=null,h,p={},d=[];for(var v=e;v<t;v++){var m={},g=difflib.__dictget(o,i[v],d);for(var y in g)if(g.hasOwnProperty(y)){c=g[y];if(c<n)continue;if(c>=r)break;m[c]=h=difflib.__dictget(p,c-1,0)+1,h>l&&(a=v-h+1,f=c-h+1,l=h)}p=m}while(a>e&&f>n&&!u(s[f-1])&&i[a-1]==s[f-1])a--,f--,l++;while(a+l<t&&f+l<r&&!u(s[f+l])&&i[a+l]==s[f+l])l++;while(a>e&&f>n&&u(s[f-1])&&i[a-1]==s[f-1])a--,f--,l++;while(a+l<t&&f+l<r&&u(s[f+l])&&i[a+l]==s[f+l])l++;return[a,f,l]},this.get_matching_blocks=function(){if(this.matching_blocks!=null)return this.matching_blocks;var e=this.a.length,t=this.b.length,n=[[0,e,0,t]],r=[],i,s,o,u,a,f,l,c,h;while(n.length)a=n.pop(),i=a[0],s=a[1],o=a[2],u=a[3],h=this.find_longest_match(i,s,o,u),f=h[0],l=h[1],c=h[2],c&&(r.push(h),i<f&&o<l&&n.push([i,f,o,l]),f+c<s&&l+c<u&&n.push([f+c,s,l+c,u]));r.sort(difflib.__ntuplecomp);var p=0,d=0,v=0,m=0,g,y,b,w=[];for(var E in r)r.hasOwnProperty(E)&&(m=r[E],g=m[0],y=m[1],b=m[2],p+v==g&&d+v==y?v+=b:(v&&w.push([p,d,v]),p=g,d=y,v=b));return v&&w.push([p,d,v]),w.push([e,t,0]),this.matching_blocks=w,this.matching_blocks},this.get_opcodes=function(){if(this.opcodes!=null)return this.opcodes;var e=0,t=0,n=[];this.opcodes=n;var r,i,s,o,u,a=this.get_matching_blocks();for(var f in a)a.hasOwnProperty(f)&&(r=a[f],i=r[0],s=r[1],o=r[2],u="",e<i&&t<s?u="replace":e<i?u="delete":t<s&&(u="insert"),u&&n.push([u,e,i,t,s]),e=i+o,t=s+o,o&&n.push(["equal",i,e,s,t]));return n},this.get_grouped_opcodes=function(e){e||(e=3);var t=this.get_opcodes();t||(t=[["equal",0,1,0,1]]);var n,r,i,s,o,u;t[0][0]=="equal"&&(n=t[0],r=n[0],i=n[1],s=n[2],o=n[3],u=n[4],t[0]=[r,Math.max(i,s-e),s,Math.max(o,u-e),u]),t[t.length-1][0]=="equal"&&(n=t[t.length-1],r=n[0],i=n[1],s=n[2],o=n[3],u=n[4],t[t.length-1]=[r,i,Math.min(s,i+e),o,Math.min(u,o+e)]);var a=e+e,f=[],l=[];for(var c in t)t.hasOwnProperty(c)&&(n=t[c],r=n[0],i=n[1],s=n[2],o=n[3],u=n[4],r=="equal"&&s-i>a&&(f.push([r,i,Math.min(s,i+e),o,Math.min(u,o+e)]),l.push(f),f=[],i=Math.max(i,s-e),o=Math.max(o,u-e)),f.push([r,i,s,o,u]));return f&&(f.length!=1||f[0][0]!="equal")&&l.push(f),l},this.ratio=function(){return matches=difflib.__reduce(function(e,t){return e+t[t.length-1]},this.get_matching_blocks(),0),difflib.__calculate_ratio(matches,this.a.length+this.b.length)},this.quick_ratio=function(){var e,t;if(this.fullbcount==null){this.fullbcount=e={};for(var n=0;n<this.b.length;n++)t=this.b[n],e[t]=difflib.__dictget(e,t,0)+1}e=this.fullbcount;var r={},i=difflib.__isindict(r),s=numb=0;for(var n=0;n<this.a.length;n++)t=this.a[n],i(t)?numb=r[t]:numb=difflib.__dictget(e,t,0),r[t]=numb-1,numb>0&&s++;return difflib.__calculate_ratio(s,this.a.length+this.b.length)},this.real_quick_ratio=function(){var e=this.a.length,t=this.b.length;return _calculate_ratio(Math.min(e,t),e+t)},this.isjunk=n?n:difflib.defaultJunkFunction,this.a=this.b=null,this.set_seqs(e,t)}};define("difflib",function(){}),diffview={buildView:function(e){function a(e,t){var n=document.createElement(e);return n.className=t,n}function f(e,t){var n=document.createElement(e);return n.appendChild(document.createTextNode(t)),n}function l(e,t,n){var r=document.createElement(e);return r.className=t,r.appendChild(document.createTextNode(n)),r}function v(e,t,n,r,i){return t<n?(e.appendChild(f("th",(t+1).toString())),e.appendChild(l("td",i,r[t].replace(/\t/g," "))),t+1):(e.appendChild(document.createElement("th")),e.appendChild(a("td","empty")),t)}function m(e,t,n,r,i){e.appendChild(f("th",t==null?"":(t+1).toString())),e.appendChild(f("th",n==null?"":(n+1).toString())),e.appendChild(l("td",i,r[t!=null?t:n].replace(/\t/g," ")))}var t=e.baseTextLines,n=e.newTextLines,r=e.opcodes,i=e.baseTextName?e.baseTextName:"Base Text",s=e.newTextName?e.newTextName:"New Text",o=e.contextSize,u=e.viewType==0||e.viewType==1?e.viewType:0;if(t==null)throw"Cannot build diff view; baseTextLines is not defined.";if(n==null)throw"Cannot build diff view; newTextLines is not defined.";if(!r)throw"Canno build diff view; opcodes is not defined.";var c=document.createElement("thead"),h=document.createElement("tr");c.appendChild(h),u?(h.appendChild(document.createElement("th")),h.appendChild(document.createElement("th")),h.appendChild(l("th","texttitle",i+" vs. "+s))):(h.appendChild(document.createElement("th")),h.appendChild(l("th","texttitle",i)),h.appendChild(document.createElement("th")),h.appendChild(l("th","texttitle",s))),c=[c];var p=[],d;for(var g=0;g<r.length;g++){code=r[g],change=code[0];var y=code[1],b=code[2],w=code[3],E=code[4],S=Math.max(b-y,E-w),x=[],T=[];for(var N=0;N<S;N++){if(o&&r.length>1&&(g>0&&N==o||g==0&&N==0)&&change=="equal"){var C=S-(g==0?1:2)*o;if(C>1){x.push(h=document.createElement("tr")),y+=C,w+=C,N+=C-1,h.appendChild(f("th","...")),u||h.appendChild(l("td","skip","")),h.appendChild(f("th","...")),h.appendChild(l("td","skip",""));if(g+1==r.length)break;continue}}x.push(h=document.createElement("tr")),u?change=="insert"?m(h,null,w++,n,change):change=="replace"?(T.push(d=document.createElement("tr")),y<b&&m(h,y++,null,t,"delete"),w<E&&m(d,null,w++,n,"insert")):change=="delete"?m(h,y++,null,t,change):m(h,y++,w++,t,change):(y=v(h,y,b,t,change),w=v(h,w,E,n,change))}for(var N=0;N<x.length;N++)p.push(x[N]);for(var N=0;N<T.length;N++)p.push(T[N])}p.push(h=l("th","author","diff view generated by ")),h.setAttribute("colspan",u?3:4),h.appendChild(d=f("a","jsdifflib")),d.setAttribute("href","http://github.com/cemerick/jsdifflib"),c.push(h=document.createElement("tbody"));for(var g in p)p.hasOwnProperty(g)&&h.appendChild(p[g]);h=a("table","diff"+(u?" inlinediff":""));for(var g in c)c.hasOwnProperty(g)&&h.appendChild(c[g]);return h}},define("diffview",function(){}),define("diff",["jquery","difflib","diffview"],function(){(function(e){var t="diff",n={_init:function(t){return this.each(function(){var n=difflib.stringAsLines(t.base),r=difflib.stringAsLines(t.head),i=new difflib.SequenceMatcher(n,r),s=i.get_opcodes(),o=t.contextSize==undefined?3:t.contextSize;this.appendChild(diffview.buildView({baseTextLines:n,newTextLines:r,opcodes:s,baseTextName:t.baseName||"Base text",newTextName:t.headName||"Current text",contextSize:o,viewType:e("inline").checked?1:0}))})}};e.fn.diff=function(r){if(n[r])return n[r].apply(this,Array.prototype.slice.call(arguments,1));if(typeof r=="object"||!r)return n._init.apply(this,arguments);e.error("Method "+r+" does not exist on jQuery."+t)}})(jQuery)}),define("storage",["jquery","config","modal","form","gitty","history","tabbed","laconic","diff"],function(e,t,n,r,i,s,o){function u(e){return e?e.split(".").slice(0,-1).join("."):null}function a(e){return e?e.split("/").pop():null}(function(e){function h(e){return e.charAt(0).toUpperCase()+e.slice(1)}function p(t,n){var r=e.el.table({"class":"table table-striped"});e(r).append(e.el.tr(e.el.th("Path"),e.el.td(n.path))),e(r).append(e.el.tr(e.el.th("Modified"),e.el.td((new Date(n.last_modified*1e3)).toLocaleString()))),e(r).append(e.el.tr(e.el.th("Loaded"),e.el.td(n.modified_since_loaded?"yes (modified)":n.loaded?"yes":"no"))),t.append(r)}function d(e,t){return t.error=="file_exists"?e+": file exists: "+t.file:JSON.stringify(t)}var f="storage",l={typeName:"program",markClean:function(e){}},c={_init:function(t){return this.each(function(){function i(t,n){var r=e(t.target);if(r.hasClass("storage")&&r.is(":visible")){var i=r.storage.apply(r,Array.prototype.slice.call(arguments,1));if(i=="propagate")return}t.stopPropagation()}var n=e(this),r=e.extend({},l,t);n.addClass("storage");if(t.title||t.file||t.url){var s=t.file;!s&&t.url&&(s=t.url.split("/").pop()),n.tabbed("title",t.title||u(s),s?s.split(".").pop():"pl")}n.on("source",function(e,t){i(e,"setSource",t)}),n.on("save",function(e,t){i(e,"save",t)}),n.on("download",function(e){i(e,"download")}),n.on("fileInfo",function(e){i(e,"info")}),n.on("diff",function(e){i(e,"diff")}),n.on("revert",function(e){i(e,"revert")}),n.on("activate-tab",function(e){}),e(window).bind("beforeunload",function(e){return n.storage("unload","beforeunload",e)}),n.data(f,r)})},setSource:function(e){function l(e){return e?e.split("/").pop():null}var n=this.data(f),r=o.tabTypes[n.typeName];typeof e=="string"&&(e={data:e});if(e.newTab)return"propagate";if(e.meta&&e.meta.name||e.url){var i=e.meta&&e.meta.name?e.meta.name:e.url,a=i.split(".").pop();if(a!=r.dataType)return"propagate"}if(this.storage("unload","setSource")==0)return!1;e.meta?(n.file=e.meta.name,n.meta=e.meta,n.url=null):(n.file=null,n.meta=null),n.url=e.url||undefined,n.st_type=e.st_type||undefined,n.setValue(e),n.cleanGeneration=n.changeGen(),n.cleanData=e.data,n.cleanCheckpoint=e.cleanCheckpoint||"load";var c=u(n.file)||u(l(e.url))||r.label;return e.url||(e.url=t.http.locations.swish),this.tabbed("title",c,r.dataType),e.noHistory||s.push(e),this},load:function(r){if(r){var i=this,s=this.data(f);e.ajax({url:t.http.locations.web_storage+r,dataType:"text",success:function(e){i.storage("setSource",{data:e,meta:{name:r}})},error:function(e){n.ajaxError(e)}})}return this},revert:function(){var e=this.data(f);return e.setValue(e.cleanData),e.cleanGeneration=e.changeGen(),e.markClean(!0),this},save:function(r,u){var a=this.data(f),l=o.tabTypes[a.typeName],c=t.http.locations.web_storage,h="POST",p=this,v;if(a.st_type!="filesys"&&a.st_type!="external"||!a.url){if(r=="as")return this.storage("saveAs"),this;a.file&&(!r||!r.name||r.name==a.file)&&(c+=encodeURI(a.file),h="PUT");if(u=="only-meta-data"){r=i.reduceMeta(r,a.meta);if(e.isEmptyObject(r)){alert("No change");return}v={update:"meta-data"}}else if(h=="POST")v={data:a.getValue(),type:l.dataType},a.meta&&(v.previous=a.meta.commit);else if(!a.isClean(a.cleanGeneration))v={data:a.getValue(),type:l.dataType};else if(i.diffTags(a.meta.tags,r.tags)==null){alert("No change");return}return r&&(v.meta=r),e.ajax({url:c,dataType:"json",contentType:"application/json",type:h,data:JSON.stringify(v),success:function(e){e.error?n.alert(d("Could not save",e)):(a.meta&&a.meta.example!=e.meta.example&&p.closest(".swish").trigger("examples-changed"),a.file=e.file,a.meta=e.meta,a.st_type="gitty",a.cleanGeneration=a.changeGen(),a.cleanData=a.getValue(),a.cleanCheckpoint="save",a.markClean(!0),n.feedback({html:"Saved",owner:p}),p.tabbed("title",a.meta.name),s.push(e))},error:function(e){p.storage("saveAs")}}),this}return this.storage("saveURL")},saveAs:function(n){function p(){this.append(e.el.form({"class":"form-horizontal"},r.fields.fileName(l?null:i.file,s.public,s.example),r.fields.title(s.title),r.fields.author(h),a?r.fields.commit_message():undefined,r.fields.tags(s.tags),r.fields.buttons({label:l?"Fork "+c.label:a?"Update "+c.label:"Save "+c.label,action:function(e,t){return u.storage("save",t),!1}})))}var i=this.data(f),s=i.meta||{},u=this,a=Boolean(i.file),l=i.meta&&s.symbolic!="HEAD",c=o.tabTypes[i.typeName],h=t.swish.user?t.swish.user.realname&&t.swish.user.email?t.swish.user.realname+" <"+t.swish.user.email+">":t.swish.user.user:s.author;return s.public===undefined&&(s.public=!0),n=n||{},r.showDialog({title:n.title?n.title:l?"Fork from "+s.commit.substring(0,7):a?"Save new version":"Save "+c.label+" as",body:p}),this},saveURL:function(){var t=this.data(f),r=t.getValue(),i=o.type(t.url)||{},s=this;return t.isClean(t.cleanGeneration)?(alert("No change"),this):(e.ajax({url:t.url,dataType:"json",contentType:i.contentType||"text/plain",type:"PUT",data:r,success:function(e){e.error?n.alert(d("Could not save",e)):(t.cleanGeneration=t.changeGen(),t.cleanData=t.getValue(),t.cleanCheckpoint="save",t.markClean(!0),n.feedback({html:"Saved",owner:s}))},error:function(e){if(e.status==403){var r=t.url;delete t.meta,delete t.st_type,delete t.url,s.storage("saveAs",{title:"<div class='warning'>Could not save to "+r+"</div> Save a copy as"})}else n.ajaxError(e)}}),this)},download:function(){var t=this.data(f),n=o.tabTypes[t.typeName],r=t.getValue(),i="data:text/plain;charset=UTF-8,"+encodeURIComponent(r),s=e.el.a({href:i,download:t.file||"swish."+n.dataType});return this.append(s),s.click(),e(s).remove(),this},getData:function(t){var n=[];return t=t||{},this.each(function(){var r=e(this).data(f),i={};i.type=r.type,r.url&&(i.url=r.url);if(r.meta){function s(e){r.meta[e]&&(i[e]=r.meta[e])}s("name"),s("path"),s("modified"),s("loaded"),s("modified_since_loaded"),s("module")}e(this).closest(".tab-pane.active").length==1&&(i.active=!0);if(!t.type||t.name&&t.name.split(".").pop()==t.type){if(t.data){var o=r.getValue();i.modified=o!=r.cleanData;if(t.data==1||i.modified&&t.data=="if_modified")i.data=o}n.push(i)}}),n},match:function(t){for(var n=0;n<this.length;n++){me=e(this[n]);var r=me.data(f);if(t.file&&t.file==r.file)return me;if(t.url&&t.url==r.url)return me}},expose:function(e){var t=this.closest(".tab-pane");if(t.length==1){var r=t.closest(".tabbed");return r.tabbed("show",t.attr("id")),e&&n.feedback({html:e,owner:this}),this}},info:function(){function o(){t.st_type=="gitty"?(t.editor=i,this.gitty(t)):t.st_type=="filesys"?p(this,n):t.st_type||this.append(e.el.p("The source is not associated with a file. ","Use ",e.el.b("Save ...")," to save the source with meta information."))}var t=this.data(f),n=t.meta||{},i=this,s;return t.st_type=="gitty"?s=e().gitty("title",n):t.st_type=="filesys"?s="File system -- "+a(n.path):t.st_type=="external"?s="External -- "+t.url:s="Scratch source",r.showDialog({title:s,body:o}),this},diff:function(){function i(){var r=e.el.div(),i=t.getValue();this.append(r);if(i==t.cleanData)e(r).append(e.el.p("No changes"));else{var s,o=e.el.div({"class":"btn-group diff",role:"group"},e.el.button({name:"close","data-dismiss":"modal","class":"btn btn-primary"},"Close"),s=e.el.button({name:"revert","class":"btn btn-danger","data-dismiss":"modal"},"Revert changes"));e(r).diff({base:t.cleanData,head:i,baseName:n[t.cleanCheckpoint]}),this.append(e.el.div({"class":"wrapper text-center"},o)),e(s).on("click",function(t){e(".swish-event-receiver").trigger("revert")}),this.parents("div.modal-dialog").addClass("modal-wide")}}var t=this.data(f),n={load:"Loaded text","new":"New text",save:"Saved text"};return r.showDialog({title:"Changes since "+n[t.cleanCheckpoint],body:i}),this},unload:function(e,t){var n=this.data(f);if(!n)return undefined;n.meta&&s.addRecent({st_type:"gitty",id:n.meta.name});if(n.cleanData!=n.getValue()){if(e=="beforeunload"){var r="The source editor has unsaved changes.\nThese will be lost if you leave the page";return t=t||window.event,t&&(t.returnValue=r),r}var r="The source editor has unsaved changes.\nThese will be lost"+(e=="setSource"?" if you load a new program":e=="closetab"?" close this tab":"");return confirm(r)}return undefined}};e.fn.storage=function(t){if(c[t])return c[t].apply(this,Array.prototype.slice.call(arguments,1));if(typeof t=="object"||!t)return c._init.apply(this,arguments);e.error("Method "+t+" does not exist on jQuery."+f)}})(jQuery)}),function(e,t){"use strict";var n=typeof module!="undefined";n&&(e=global);var r="0123456789abcdef".split(""),i=[-2147483648,8388608,32768,128],s=[24,16,8,0],o=[],u=function(e){var t=typeof e!="string";t&&e.constructor==ArrayBuffer&&(e=new Uint8Array(e));var n,u,a,f,l,c=0,h,p=!1,d,v,m,g,y=0,b=0,w=0,E=e.length;n=1732584193,u=4023233417,a=2562383102,f=271733878,l=3285377520;do{o[0]=c,o[16]=o[1]=o[2]=o[3]=o[4]=o[5]=o[6]=o[7]=o[8]=o[9]=o[10]=o[11]=o[12]=o[13]=o[14]=o[15]=0;if(t)for(m=b;y<E&&m<64;++y)o[m>>2]|=e[y]<<s[m++&3];else for(m=b;y<E&&m<64;++y)h=e.charCodeAt(y),h<128?o[m>>2]|=h<<s[m++&3]:h<2048?(o[m>>2]|=(192|h>>6)<<s[m++&3],o[m>>2]|=(128|h&63)<<s[m++&3]):h<55296||h>=57344?(o[m>>2]|=(224|h>>12)<<s[m++&3],o[m>>2]|=(128|h>>6&63)<<s[m++&3],o[m>>2]|=(128|h&63)<<s[m++&3]):(h=65536+((h&1023)<<10|e.charCodeAt(++y)&1023),o[m>>2]|=(240|h>>18)<<s[m++&3],o[m>>2]|=(128|h>>12&63)<<s[m++&3],o[m>>2]|=(128|h>>6&63)<<s[m++&3],o[m>>2]|=(128|h&63)<<s[m++&3]);w+=m-b,b=m-64,y==E&&(o[m>>2]|=i[m&3],++y),c=o[16],y>E&&m<56&&(o[15]=w<<3,p=!0);for(g=16;g<80;++g)d=o[g-3]^o[g-8]^o[g-14]^o[g-16],o[g]=d<<1|d>>>31;var S=n,x=u,T=a,N=f,C=l;for(g=0;g<20;g+=5)v=x&T|~x&N,d=S<<5|S>>>27,C=d+v+C+1518500249+o[g]<<0,x=x<<30|x>>>2,v=S&x|~S&T,d=C<<5|C>>>27,N=d+v+N+1518500249+o[g+1]<<0,S=S<<30|S>>>2,v=C&S|~C&x,d=N<<5|N>>>27,T=d+v+T+1518500249+o[g+2]<<0,C=C<<30|C>>>2,v=N&C|~N&S,d=T<<5|T>>>27,x=d+v+x+1518500249+o[g+3]<<0,N=N<<30|N>>>2,v=T&N|~T&C,d=x<<5|x>>>27,S=d+v+S+1518500249+o[g+4]<<0,T=T<<30|T>>>2;for(;g<40;g+=5)v=x^T^N,d=S<<5|S>>>27,C=d+v+C+1859775393+o[g]<<0,x=x<<30|x>>>2,v=S^x^T,d=C<<5|C>>>27,N=d+v+N+1859775393+o[g+1]<<0,S=S<<30|S>>>2,v=C^S^x,d=N<<5|N>>>27,T=d+v+T+1859775393+o[g+2]<<0,C=C<<30|C>>>2,v=N^C^S,d=T<<5|T>>>27,x=d+v+x+1859775393+o[g+3]<<0,N=N<<30|N>>>2,v=T^N^C,d=x<<5|x>>>27,S=d+v+S+1859775393+o[g+4]<<0,T=T<<30|T>>>2;for(;g<60;g+=5)v=x&T|x&N|T&N,d=S<<5|S>>>27,C=d+v+C-1894007588+o[g]<<0,x=x<<30|x>>>2,v=S&x|S&T|x&T,d=C<<5|C>>>27,N=d+v+N-1894007588+o[g+1]<<0,S=S<<30|S>>>2,v=C&S|C&x|S&x,d=N<<5|N>>>27,T=d+v+T-1894007588+o[g+2]<<0,C=C<<30|C>>>2,v=N&C|N&S|C&S,d=T<<5|T>>>27,x=d+v+x-1894007588+o[g+3]<<0,N=N<<30|N>>>2,v=T&N|T&C|N&C,d=x<<5|x>>>27,S=d+v+S-1894007588+o[g+4]<<0,T=T<<30|T>>>2;for(;g<80;g+=5)v=x^T^N,d=S<<5|S>>>27,C=d+v+C-899497514+o[g]<<0,x=x<<30|x>>>2,v=S^x^T,d=C<<5|C>>>27,N=d+v+N-899497514+o[g+1]<<0,S=S<<30|S>>>2,v=C^S^x,d=N<<5|N>>>27,T=d+v+T-899497514+o[g+2]<<0,C=C<<30|C>>>2,v=N^C^S,d=T<<5|T>>>27,x=d+v+x-899497514+o[g+3]<<0,N=N<<30|N>>>2,v=T^N^C,d=x<<5|x>>>27,S=d+v+S-899497514+o[g+4]<<0,T=T<<30|T>>>2;n=n+S<<0,u=u+x<<0,a=a+T<<0,f=f+N<<0,l=l+C<<0}while(!p);return r[n>>28&15]+r[n>>24&15]+r[n>>20&15]+r[n>>16&15]+r[n>>12&15]+r[n>>8&15]+r[n>>4&15]+r[n&15]+r[u>>28&15]+r[u>>24&15]+r[u>>20&15]+r[u>>16&15]+r[u>>12&15]+r[u>>8&15]+r[u>>4&15]+r[u&15]+r[a>>28&15]+r[a>>24&15]+r[a>>20&15]+r[a>>16&15]+r[a>>12&15]+r[a>>8&15]+r[a>>4&15]+r[a&15]+r[f>>28&15]+r[f>>24&15]+r[f>>20&15]+r[f>>16&15]+r[f>>12&15]+r[f>>8&15]+r[f>>4&15]+r[f&15]+r[l>>28&15]+r[l>>24&15]+r[l>>20&15]+r[l>>16&15]+r[l>>12&15]+r[l>>8&15]+r[l>>4&15]+r[l&15]};if(!e.JS_SHA1_TEST&&typeof module!="undefined"){var a=require("crypto"),f=require("buffer").Buffer;module.exports=function(e){return typeof e=="string"?a.createHash("sha1").update(e,"utf8").digest("hex"):(e.constructor==ArrayBuffer&&(e=new Uint8Array(e)),a.createHash("sha1").update(new f(e)).digest("hex"))}}else e&&(e.sha1=u)}(this),define("sha1",function(){}),define("notebook",["jquery","config","tabbed","form","preferences","modal","prolog","links","laconic","runner","storage","sha1"],function($,config,tabbed,form,preferences,modal,prolog,links){function glyphButton(e,t,n,r,i){i=i||"sm";var s=$.el.a({href:"#","class":"btn btn-"+r+" btn-"+i+" action-"+t,title:n,"data-action":t},$.el.span({"class":"glyphicon glyphicon-"+e}));return s}function glyphButtonGlyph(e,t,n){var r=e.find("a[data-action="+t+"] > span.glyphicon");r.removeClass(function(e,t){return t.match(/glyphicon-[-a-z]*/g).join(" ")}).addClass("glyphicon-"+n)}function sep(){return $.el.span({"class":"thin-space"}," ")}function Notebook(e){this.my_cell=e.cell}var cellTypes={program:{label:"Program"},query:{label:"Query"},markdown:{label:"Markdown"},html:{label:"HTML"}};(function(e){function i(t){var n=e(t).find(".nb-cell.active");return n.length==1?n.first():null}function s(t){function n(e){attrs=e.match(/[-a-z]+="[^"]*"/g);if(attrs){var t=e.match(/^<[a-z]* /);for(var n=0;n<attrs.length;n++){var r=attrs[n].split(/=(.*)/);attrs[n]=r[0].toLowerCase()+"="+r[1]}return t[0]+attrs.sort().join(" ")+">"}return e}var r=e(e.el.div(t)).html(),i=[];return r.replace(/(<div [^>]*>|<\/div>)/g,function(e){var t;return e=="</div>"?(t=i.pop(),t?"\n"+e+"\n":e):(t=e.match(/(nb-cell|notebook)/)!=null,i.push(t),t?"\n"+n(e)+"\n":e)}).slice(1)}var t="notebook",n=null,r={_init:function(n){return n=n||{},this.each(function(){function a(){var t=e.el.span({"class":"glyphicon glyphicon-menu-hamburger"}),n=form.widgets.dropdownButton(t,{divClass:"notebook-menu btn-transparent",ulClass:"pull-right",client:r,actions:{"Delete cell":function(){this.notebook("delete")},"Copy cell":function(){this.notebook("copy")},"Paste cell":function(){this.notebook("paste")},"Move cell up":function(){this.notebook("up")},"Move cell down":function(){this.notebook("down")},"Insert cell":function(){this.notebook("insertBelow")},"--":"Notebook actions","Exit fullscreen":function(){this.notebook("fullscreen",!1)}}});return n}var r=e(this),i={},s={},o,u;r.addClass("notebook"),r.addClass("swish-event-receiver"),r.append(o=e.el.div({"class":"nb-toolbar"},glyphButton("trash","delete","Delete cell","warning"),glyphButton("copy","copy","Copy cell","default"),glyphButton("paste","paste","Paste cell below","default"),sep(),glyphButton("chevron-up","up","Move cell up","default"),glyphButton("chevron-down","down","Move cell down","default"),sep(),glyphButton("plus","insertBelow","Insert cell below","primary"),glyphButton("fullscreen","fullscreen","Full screen","default"))),r.append(a()),r.append(e.el.div({"class":"nb-view",tabIndex:"-1"},u=e.el.div({"class":"nb-content"}),e.el.div({"class":"nb-bottom"}))),e(o).on("click","a.btn",function(t){var n=e(t.target).closest("a").data("action");return r.notebook(n),t.preventDefault(),!1}),e(u).on("click",".nb-cell-buttons a.btn",function(t){var n=e(t.target).closest("a"),r=n.closest(".nb-cell"),i=n.data("action");return r.nbCell(i),t.preventDefault(),!1}),r.focusin(function(t){var n=e(t.target).closest(".nb-cell");n.length>0?r.notebook("active",n):e(t.target).closest(".nb-view").length>0&&r.find(".nb-content").children(".nb-cell.active").nbCell("active",!1)}),r.focusout(function(t){e(t.target).closest(".notebook")[0]!=r[0]&&r.find(".nb-content").children(".nb-cell.active").nbCell("active",!1)}),r.on("activate-tab",function(t){if(t.target==r[0]){var n=r.find(".nb-content").children(".nb-cell.program"),i=n.filter(".active"),s=i[0]||n[0];s&&e(s).find(".prolog-editor").prologEditor("makeCurrent"),t.stopPropagation()}}),r.data(t,s);var u=r.find(".notebook-data");if(n.value)r.notebook("value",n.value);else if(u.length>0){function f(e){var t=u.data(e);t&&(i[e]=t)}f("file"),f("url"),f("title"),f("meta"),f("st_type"),r.notebook("value",u.text(),{fullscreen:r.hasClass("fullscreen")}),u.remove()}else r.notebook("placeHolder");r.notebook("setupStorage",i),r.on("data-is-clean",function(t,n){if(e(t.target).hasClass("prolog-editor"))return r.notebook("checkModified"),t.stopPropagation(),!1})})},"delete":function(e){return e=e||i(this),e&&(this.notebook("active",e.next()||e.prev()),e.nbCell("close"),this.notebook("updatePlaceHolder")),this.notebook("checkModified"),this},copy:function(t){t=t||i(this);if(t){var r=e.el.div({"class":"notebook"});e(r).append(e(t).nbCell("saveDOM")),n=s(r)}},paste:function(t){var r=this;t=t||n;if(t){var i=e.el.div();e(i).html(t);var s=e(i).find(".nb-cell");if(s.length>0)return e(i).find(".nb-cell").each(function(){r.notebook("insert",{where:"below",restore:e(this)})}),this;modal.alert("Not a SWISH notebook")}else modal.alert("Clipboard is empty")},up:function(e){return e=e||i(this),e&&(e.insertBefore(e.prev()),this.notebook("checkModified")),this},down:function(e){return e=e||i(this),e&&(e.insertAfter(e.next()),this.notebook("checkModified")),this},insertAbove:function(){return this.notebook("insert",{where:"above"})},insertBelow:function(){return this.notebook("insert",{where:"below",if_visible:true})==0&&modal.alert("<p>New cell would appear outside the visible area of the notebook.<p>Please select the cell below which you want the new cell to appear or scroll to the bottom of the notebook."),this},run:function(e){e=e||i(this),e&&e.nbCell("run")},fullscreen:function(t){return t==undefined&&(t=!this.hasClass("fullscreen")),t?e("body.swish").swish("fullscreen",this):e("body.swish").swish("exitFullscreen"),this},cellType:function(e,t){e=e||i(this),e&&e.nbCell("type",t)},checkModified:function(){var e=this.data("storage"),t=e.cleanGeneration==this.notebook("changeGen");this.notebook("markClean",t)},markClean:function(e){var n=this.data(t);n.clean_signalled!=e&&(n.clean_signalled=e,this.trigger("data-is-clean",e)),e&&this.find(".prolog-editor").prologEditor("setIsClean")},active:function(e,t){if(e){var n=this.find(".nb-content .nb-cell.active");function r(e){e.find(".nb-content .nb-cell.not-for-query").removeClass("not-for-query")}if(e.length==1){if(n.length!=1||e[0]!=n[0])r(this),n.nbCell("active",!1),e.nbCell("active",!0),t&&e.focus()}else r(this),n.nbCell("active",!1)}},insert:function(t){t=t||{};var n=i(this),r=t.cell||e.el.div({"class":"nb-cell"}),s=this.find(".nb-view"),o;t.if_visible&&s.find(".nb-cell").length>0&&(o=s[0].getBoundingClientRect());if(n)if(t.where=="above"){if(o){var u=n[0].getBoundingClientRect().top;if(u<o.top)return!1}e(r).insertBefore(n)}else{if(o){var a=n[0].getBoundingClientRect().bottom;if(a>o.bottom-20)return!1}e(r).insertAfter(n)}else{var f=this.find(".nb-content");if(o){var l=f[0].getBoundingClientRect().bottom;if(l>o.bottom-20)return!1}f.append(r)}return t.cell||e(r).nbCell(t.restore),this.notebook("updatePlaceHolder"),this.notebook("active",e(r)),this.notebook("checkModified"),this},setupStorage:function(t){var n=this;return t=e.extend(t,{getValue:function(){return n.notebook("value")},setValue:function(e){return n.notebook("setSource",e)},changeGen:function(){return n.notebook("changeGen")},isClean:function(e){var t=n.notebook("changeGen");return e==t},markClean:function(e){n.notebook("markClean",e)},cleanGeneration:this.notebook("changeGen"),cleanData:this.notebook("value"),cleanCheckpoint:"load",typeName:"notebook"}),this.storage(t)},setSource:function(e){typeof e=="string"&&(e={data:e}),this.notebook("value",e.data)},value:function(t,n){n=n||{};if(t==undefined){var r=e.el.div({"class":"notebook"});return this.find(".nb-cell").each(function(){cell=e(this),(!n.skipEmpty||!cell.nbCell("isEmpty"))&&e(r).append(cell.nbCell("saveDOM"))}),s(r)}var i=this,o=this.find(".nb-content"),r=e.el.div();o.html(""),r.innerHTML=t,n.fullscreen==undefined&&(n.fullscreen=e(r).find("div.notebook").hasClass("fullscreen")),n.fullscreen&&(this.removeClass("fullscreen"),this.notebook("fullscreen",!0)),e(r).find(".nb-cell").each(function(){var t=e.el.div({"class":"nb-cell"});o.append(t),e(t).nbCell(e(this))}),this.find(".nb-cell").nbCell("onload"),this.notebook("updatePlaceHolder")},changeGen:function(){var t=[];return this.find(".nb-cell").each(function(){cell=e(this),t.push(cell.nbCell("changeGen"))}),sha1(t.join())},updatePlaceHolder:function(){this.find(".nb-content").children().length==0?this.notebook("placeHolder"):this.find(".nb-placeholder").remove()},placeHolder:function(){var t=e.el.div({"class":"nb-placeholder"});e.ajax({url:config.http.locations.help+"/notebook.html",dataType:"html",success:function(n){e(t).html(n)}}),this.find(".nb-content").append(t)}};tabbed.tabTypes.notebook={dataType:"swinb",typeName:"notebook",label:"Notebook",contentType:"text/x-prolog-notebook",order:200,create:function(t,n){e(t).notebook(n)}},e.fn.notebook=function(n){if(r[n])return r[n].apply(this,Array.prototype.slice.call(arguments,1));if(typeof n=="object"||!n)return r._init.apply(this,arguments);e.error("Method "+n+" does not exist on jQuery."+t)}})(jQuery),function($){function cellText(e){return e.find(".editor").prologEditor("getSource")}function fileInsertInput(){var e=$('<input type="file" name="file">');return e.on("change",function(e){var t=new FileReader;return t.onload=function(n){var r=$(e.target).closest(".nb-cell"),i=r.closest(".notebook");i.notebook("paste",t.result)&&r.remove()},t.readAsText(e.target.files[0]),e.preventDefault(),!1}),e}function typeMore(){var e=$('<div class="form-more"> <a href="#">more<a></div>');return e.find("a").on("click",function(e){var t=$(e.target).closest(".form-more");t.hide(400),t.next().show(400)}),e[0]}function typeLess(){var e=$('<div class="form-less" style="display:none"> <div><a href="#" class="less">less<a></div></div>');for(var t=0;t<arguments.length;t++)e.append(arguments[t]);return e.find("a.less").on("click",function(e){var t=$(e.target).closest(".form-less");t.hide(400),t.prev().show(400)}),e[0]}var pluginName="nbCell",id=0,methods={_init:function(e){return this.each(function(){var t=$(this),n={},r;t.data(pluginName,n),t.attr("tabIndex",-1),t.attr("id","nbc"+id++);if(e instanceof jQuery)t.nbCell("restoreDOM",e);else{var i=glyphButton("remove-circle","close","Close","default","xs");t.append(i),$(i).addClass("close-select"),$(i).on("click",function(){t.nbCell("close")}),t.append($.el.div({"class":"nb-type-select"},$.el.label("Create a "),r=$.el.div({"class":"btn-group",role:"group"}),$.el.label("cell here.")));for(var s in cellTypes)cellTypes.hasOwnProperty(s)&&$(r).append($.el.button({type:"button","class":"btn btn-default","data-type":s},cellTypes[s].label));$(r).on("click",".btn",function(e){t.nbCell("type",$(e.target).data("type"))}),t.append($.el.div({"class":"nb-type-more"},typeMore(),typeLess($.el.label("Insert notebook from local file "),fileInsertInput()[0])))}})},active:function(e){var t=this.data(pluginName);if(e){this.addClass("active");switch(t.type){case"program":this.find(".editor").prologEditor("makeCurrent");break;case"query":this.closest(".notebook").find(".nb-cell.program").not(this.nbCell("program_cells")).addClass("not-for-query")}}else if(this.length>0){this.removeClass("active");switch(t.type){case"markdown":case"html":this.hasClass("runnable")&&this.nbCell("run")}}},type:function(e){var t=this.data(pluginName);return t.type!=e&&(methods.type[e].apply(this),t.type=e,this.addClass(e)),this},run:function(){var e=arguments;return this.each(function(){var t=$(this);if(t.hasClass("runnable")){var n=t.data(pluginName);return methods.run[n.type].apply(t,e)}console.log("Cell is not runnable: ",t)})},runTabled:function(){return this.nbCell("run",{tabled:!0})},onload:function(){var e=arguments;return this.each(function(){var t=$(this),n=t.data(pluginName);methods.onload[n.type]&&methods.onload[n.type].apply(t,e)}),this.nbCell("refresh")},close:function(){return this.find(".prolog-runner").prologRunner("close"),this.remove()},refresh:function(){return this.hasClass("program")&&this.find("a[data-action='background']").attr("title",this.hasClass("background")?"Used for all queries in this notebook":"Used for queries below this cell"),this},getSettings:function(){return{tabled:this.data("tabled")=="true",run:this.data("run")=="onload",chunk:parseInt(this.data("chunk")||"1"),name:this.attr("name")}},settings:function(){function n(){this.append($.el.form({"class":"form-horizontal"},form.fields.checkboxes([{name:"tabled",label:"table results",value:t.tabled,title:"Table results"},{name:"run",label:"run on page load",value:t.run,title:"Run when document is loaded"}]),form.fields.chunk(t.chunk),form.fields.name(t.name||""),form.fields.buttons({label:"Apply",offset:3,action:function(n,r){r.tabled!=t.tabled&&(r.tabled?e.data("tabled","true"):e.removeData("tabled")),r.run!=t.run&&(r.run?e.data("run","onload"):e.removeData("run")),r.chunk!=t.chunk&&(r.chunk!=1?e.data("chunk",""+r.chunk):e.removeData("chunk"));var i=r.name?r.name.trim():"";i!=t.name&&(i?e.attr("name",i):e.attr("name",null)),e.closest(".notebook").notebook("checkModified")}})))}var e=this,t=this.nbCell("getSettings");form.showDialog({title:"Set options for query",body:n})},singleline:function(){return this.toggleClass("singleline"),this.find(".editor").prologEditor("refresh"),glyphButtonGlyph(this,"singleline",this.hasClass("singleline")?"triangle-left":"triangle-bottom"),this.find("a[data-action=singleline]").blur(),this},background:function(){return this.toggleClass("background"),this.find("a[data-action=background]").blur(),this.closest(".notebook").notebook("checkModified"),this.nbCell("refresh"),this},program_cells:function(){var e=this.data(pluginName),t=this.closest(".notebook").find(".nb-cell.program.background").add(this.prevAll(".program").first());return t},programs:function(){var e=this.nbCell("program_cells");return e.find(".editor")},isEmpty:function(){return methods.isEmpty[this.data(pluginName).type].call(this)},saveDOM:function(){return methods.saveDOM[this.data(pluginName).type].call(this)},restoreDOM:function(e){function n(e){for(var t in cellTypes)if(cellTypes.hasOwnProperty(t)&&e.hasClass(t))return t}var t=this.data(pluginName);t.type=n(e),methods.restoreDOM[t.type].apply(this,arguments),this.addClass(t.type)},changeGen:function(){var e=this.data(pluginName).type;return e?methods.changeGen[e].call(this):0},text:function(){return cellText(this)}};methods.type.markdown=function(e){var t;e=e||{},e.mode="markdown",this.html(""),this.append(t=$.el.div({"class":"editor"})),$(t).prologEditor(e),this.addClass("runnable")},methods.type.html=function(e){var t;e=e||{},e.mode="htmlmixed",this.html(""),this.append(t=$.el.div({"class":"editor"})),$(t).prologEditor(e),this.addClass("runnable")},methods.type.program=function(e){var t,n;e=e||{},e.autoCurrent=!1,this.html("");var r=$.el.div({"class":"btn-group nb-cell-buttons",role:"group"},glyphButton("triangle-bottom","singleline","Show only first line","default","xs"),n=glyphButton("cloud","background","Use as background program","success","xs"));this.append(r,t=$.el.div({"class":"editor with-buttons"})),e.background&&this.addClass("background"),e.singleline&&this.nbCell("singleline"),$(t).prologEditor(e)},methods.type.query=function(e){function r(t){e[t]!=undefined&&(n.data(t,""+e[t]),delete e[t])}function i(t){e[t]!=undefined&&(n.attr(t,""+e[t]),delete e[t])}function o(e){this.find(".editor.query").prologEditor("wrapSolution",$(e).text())}var t,n=this;this.html(""),e=e||{},e.tabled==undefined&&(e.tabled=preferences.getVal("tabled_results")),r("tabled"),r("chunk"),r("run"),i("name"),e=$.extend({},e,{role:"query",sourceID:function(){return n.nbCell("programs").prologEditor("getSourceID")},prologQuery:function(e){n.nbCell("run")}});var s=$.el.div({"class":"btn-group nb-cell-buttons",role:"group"},glyphButton("wrench","settings","Settings","default","xs"),glyphButton("play","run","Run query","primary","xs")),u=form.widgets.dropdownButton($.el.span({"class":"glyphicon glyphicon-menu-hamburger"}),{client:n,divClass:"nb-query-menu",actions:{"Aggregate (count all)":o,Limit:o,"---":null,"Download answers as CSV":function(){var e=cellText(this).replace(/\.\s*$/,""),t=this.nbCell("programs").prologEditor("getSource"),n={},r=this.attr("name");r&&(n.disposition=r),prolog.downloadCSV(e,t,n)}}});this.append(s,$.el.div({"class":"query with-buttons"},u,$.el.span({"class":"prolog-prompt"},"?-"),t=$.el.div({"class":"editor query"}))),$(t).prologEditor(e),this.addClass("runnable")},methods.run.markdown=function(e){function n(e){var t=$(e.target).closest(".nb-cell"),r=t.data("markdownText");t.removeData("markdownText"),methods.type.markdown.call(t,{value:r}),t.off("dblclick",n),t.off("click",links.followLink)}function r(r){t.html(r),t.removeClass("runnable"),t.data("markdownText",e),t.on("dblclick",n),t.on("click","a",links.followLink)}var t=this;e=e||cellText(this),e.trim()!=""?$.ajax({type:"POST",url:config.http.locations.markdown,data:e,contentType:"text/plain; charset=UTF-8",success:r}):r("<div class='nb-placeholder'>Empty markdown cell. Double click to edit</div>")},methods.run.html=function(htmlText,options){function makeEditable(e){var t=$(e.target).closest(".nb-cell"),n=t.data("htmlText");t.removeData("htmlText"),methods.type.html.call(t,{value:n}),t.off("dblclick",makeEditable),t.off("click",links.followLink)}function runScripts(){if(config.swish.notebook.eval_script==1&&options.eval_script!=0){var scripts=[];cell.find("script").each(function(){var e=this.getAttribute("type")||"text/javascript";e=="text/javascript"&&scripts.push(this.textContent)});if(scripts.length>0){var script="(function(notebook){"+scripts.join("\n")+"})",nb=new Notebook({cell:cell[0]});try{eval(script)(nb)}catch(e){alert(e)}}}}function runHTML(e){cell[0].innerHTML=e,runScripts()}function setHTML(e){runHTML(e),cell.removeClass("runnable"),cell.data("htmlText",htmlText),cell.on("dblclick",makeEditable),cell.on("click","a",links.followLink)}var cell=this;options=options||{};if(options.html==0){runScripts();return}htmlText=(htmlText||cellText(this)).trim(),htmlText!=""?setHTML(htmlText):setHTML("<div class='nb-placeholder'>Empty HTML cell. Double click to edit</div>")},methods.run.program=function(){modal.alert("Please define a query to run this program")},methods.run.query=function(e){var t=this.nbCell("programs"),n=this.nbCell("getSettings"),r=cellText(this);e=e||{};if(e.bindings){var i="";if(typeof e.bindings=="string")i=e.bindings;else for(var s in e.bindings)e.bindings.hasOwnProperty(s)&&(i&&(i+=", "),i+=s+" = "+Pengine.stringify(e.bindings[s]));i&&(r=i+", ("+prolog.trimFullStop(r)+")")}var o={source:t.prologEditor("getSource"),query:r,tabled:n.tabled||!1,chunk:n.chunk,title:!1};t[0]&&(o.editor=t[0]);var u=$.el.div({"class":"prolog-runner"});this.find(".prolog-runner").prologRunner("close"),this.append(u),$(u).prologRunner(o)},methods.onload.query=function(){this.data("run")=="onload"&&this.nbCell("run")},methods.onload.html=function(){return methods.run.html.call(this,undefined,{html:!1,eval_script:!0})},methods.saveDOM.markdown=function(){var e=this.data("markdownText")||cellText(this);return $.el.div({"class":"nb-cell markdown"},e)},methods.saveDOM.html=function(){var e=this.data("htmlText")||cellText(this),t=$.el.div({"class":"nb-cell html"});return $(t).html(e),t},methods.saveDOM.program=function(){function n(n){e.hasClass(n)&&$(t).attr("data-"+n,!0)}var e=this,t=$.el.div({"class":"nb-cell program"},cellText(this));return n("background"),n("singleline"),t},methods.saveDOM.query=function(){function n(e,t){return e!="tabled"||!!t&&t!="false"?!1:!0}function r(r){var i;(i=e.data(r))&&!n(r,i)&&$(t).attr("data-"+r,i)}function i(n){var r;(r=e.attr(n))&&r&&$(t).attr(n,r)}var e=this,t=$.el.div({"class":"nb-cell query"},cellText(this));return r("tabled"),r("chunk"),r("run"),i("name"),t},methods.restoreDOM.markdown=function(e){var t=e.text().trim();this.data("markdownText",t),methods.run.markdown.call(this,t)},methods.restoreDOM.html=function(e){methods.run.html.call(this,e.html(),{eval_script:!1})},methods.restoreDOM.program=function(e){function n(n){var r;if(r=e.data(n))t[n]=r}var t={value:e.text().trim()};n("background"),n("singleline"),methods.type.program.call(this,t)},methods.restoreDOM.query=function(e){function n(n){var r;if(r=e.data(n))n=="chunk"?t.chunk=parseInt(r):t[n]=r}function r(n){var r;if(r=e.attr(n))t[n]=r}var t={value:e.text().trim()};n("tabled"),n("chunk"),n("run"),r("name"),t.tabled==undefined&&(t.tabled=!1),methods.type.query.call(this,t)},methods.changeGen.markdown=function(){var e=this.data("markdownText")||cellText(this);return sha1(e)},methods.changeGen.html=function(){var e=this.data("htmlText")||cellText(this);return sha1(e)},methods.changeGen.program=function(){function n(n,r){t.hasClass(n)&&(e+=r)}var e="",t=this;return n("background","B"),n("singleline","S"),e+="V"+cellText(this),sha1(e)},methods.changeGen.query=function(){function n(n,r){var i;if(i=t.data(n))e+=r+i}function r(n,r){var i;if(i=t.attr(n))e+=r+i}var e="",t=this;return n("tabled","T"),n("chunk","C"),n("run","R"),r("name","N"),e+="V"+cellText(this),sha1(e)},methods.isEmpty.markdown=function(){var e=this.data("markdownText")||cellText(this);return e.trim()==""},methods.isEmpty.html=function(){var e=this.data("htmlText")||cellText(this);return e.trim()==""},methods.isEmpty.program=function(){return cellText(this).trim()==""},methods.isEmpty.query=function(){return cellText(this).trim()==""},$.fn.nbCell=function(e){if(methods[e])return methods[e].apply(this,Array.prototype.slice.call(arguments,1));if(typeof e=="object"||!e)return methods._init.apply(this,arguments);$.error("Method "+e+" does not exist on jQuery."+pluginName)}}(jQuery),Notebook.prototype.swish=function(e){var t=this.cell().nbCell("programs"),n=t.prologEditor("getSource");return n&&(e.src=n),$.swish(e)},Notebook.prototype.cell=function(e){return e?this.notebook().find('.nb-cell[name="'+e+'"]'):$(this.my_cell)},Notebook.prototype.notebook=function(){return $(this.my_cell).closest(".notebook")},Notebook.prototype.run=function(e,t){var n={};t&&(n.bindings=t),this.cell(e).nbCell("run",n)},Notebook.prototype.submit=function(e,t){var n=this.$(e),r=form.serializeAsObject(n);form.formError(n,null),this.swish({ask:t.predicate+"(("+Pengine.stringify(r)+"))",onerror:function(e){form.formError(n,e)},onsuccess:t.onsuccess})},Notebook.prototype.$=function(e){return this.cell().find(e)}}),define("navbar",["jquery","preferences","laconic"],function(e,t){(function(e){function i(n,r,i){if(i=="--")n.append(e.el.li({"class":"divider"}));else if(typeof i=="function"){var s;i.typeIcon?s=e.el.a(e.el.span({"class":"dropdown-icon type-icon "+i.typeIcon}),r):s=e.el.a(r),e(s).data("action",i),i.name&&e(s).attr("id",i.name),n.append(e.el.li(s))}else if(i.type=="checkbox"){var o=e(e.el.input({type:"checkbox"}));i.preference!==undefined?(o.addClass("swish-event-receiver"),t.getVal(i.preference)&&o.prop("checked",!0),o.on("click",function(){t.setVal(i.preference,e(this).prop("checked"))}),o.on("preference",function(e){e.name==i.preference&&o.prop("checked",e.value)})):(i.checked&&o.prop("checked",i.checked),o.on("click",function(){i.action(e(this).prop("checked"))})),n.append(e.el.li({"class":"checkbox"},o[0],e.el.span(r)))}else if(i.type=="submenu"){var u=e.el.ul({"class":"dropdown-menu sub-menu"});n.append(e.el.li(e.el.a({"class":"trigger right-caret"},r),u)),i.action&&e(u).data("action",i.action);if(i.items)for(var a=0;a<i.items.length;a++)e(u).append(e.el.li(e.el.a(i.items[a])));i.update&&e(u).on("update",function(e){i.update.call(e.target)})}else alert("Unknown navbar item")}function s(t,n){return t.find(".dropdown-menu").filter(function(){return e(this).attr("name")==n})}function o(t,n){if(!e(t).hasClass("trigger")){var r=e(t).data("action")||e(t).parents("ul").data("action");return a.call(t,n),r?(n.preventDefault(),r.call(t,n)):e(t).hasClass("trigger")&&u.call(t,n),!1}u.call(t,n)}function u(t){var n=e(this).next(),r=e(this).parent().parent();(e(this).hasClass("left-caret")||e(this).hasClass("right-caret"))&&e(this).toggleClass("right-caret left-caret"),r.find(".left-caret").not(this).toggleClass("right-caret left-caret"),r.find(".sub-menu:visible").not(n).hide(),n.trigger("update"),n.toggle(),t.stopPropagation()}function a(t){var n=e(this).closest(".dropdown");n.find(".left-caret").toggleClass("right-caret left-caret"),n.find(".sub-menu:visible").hide()}var n="navbar",r={_init:function(t){return this.each(function(){var n=e(this),r={};for(var i in t)t.hasOwnProperty(i)&&(n.navbar("appendDropdown",i),n.navbar("populateDropdown",i,t[i]));n.on("click","a",function(e){o(this,e)}),e("a#dismisslink").click(function(){var t;return t=document.getElementById("navbarhelp"),t.style.position="absolute",t.style.left="-9999px",document.getElementById("content").style.height="calc(100% - 55px)",e(window).trigger("resize"),!1})})},appendDropdown:function(t){var n=this.children(".nav.navbar-nav"),r=e.el.ul({name:t,"class":"dropdown-menu"}),i=e.el.li({"class":"dropdown"},e.el.a({"class":"dropdown-toggle","data-toggle":"dropdown"},t,e.el.b({"class":"caret"})),r);return n.append(i),this},populateDropdown:function(e,t){if(typeof t=="function")t(this,e);else{var n=s(this,e);for(var r in t)t.hasOwnProperty(r)&&i(n,r,t[r])}},clearDropdown:function(e){var t=s(this,e);return t.html(""),this},extendDropdown:function(e,t,n){var r=s(this,e);i(r,t,n)}};e.fn.navbar=function(t){if(r[t])return r[t].apply(this,Array.prototype.slice.call(arguments,1));if(typeof t=="object"||!t)return r._init.apply(this,arguments);e.error("Method "+t+" does not exist on jQuery."+n)}})(jQuery)}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/addon/hint/templates-hint",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){function r(e,t){return e.slice(0,t.length).toUpperCase()==t.toUpperCase()}function i(e){}function s(e){var t=e.template;return document.createTextNode(t.name)}function u(){this.marked=[],this.selectableMarkers=[],this.varIndex=-1}function a(e){return e._templateStack?e._templateStack.length:0}function f(e){this.name=e.name,this.description=e.description,this.text=e.text,e.varTemplates&&(this.varTemplates=e.varTemplates),e.template!=null?this.source=e.template:e.tokens!=null&&(this._tokens=e.tokens)}function l(e){var t=[],n=!1,r=null,i="";for(var s=0;s<e.length;s++){var o=e.charAt(s);if(o=="\n")i!=""&&t.push(i),i="",t.push(o),r=null;else{var u=!0;if(n)o=="}"&&(n=!1,u=!1,i=="cursor"?t.push({cursor:!0}):i=="line_selection"?t.push({line_selection:!0}):t.push({variable:i}),i="");else if(o=="$"&&s+1<=e.length){s++;var a=e.charAt(s);a=="{"&&(n=!0,u=!1,i!=""&&t.push(i),i="")}u&&r!="$"?(i+=o,r=o):r=null}}return i!=""&&t.push(i),t}function c(e,t){var n=e.findMarksAt(t.from);if(n)for(var r=0;r<n.length;r++){var i=n[r];if(i._templateVar)return i}return null}function h(e,t){var n=e._templateState;if(!t.origin||!n||n.updating)return;try{n.updating=!0;var r=c(e,t);if(r==null)g(e);else{var i=r.find(),s=e.getRange(i.from,i.to);for(var o=0;o<n.marked.length;o++){var u=n.marked[o];if(u!=r&&u._templateVar==r._templateVar){var a=u.find();e.replaceRange(s,a.from,a.to)}}}}finally{n.updating=!1}}function p(e){i("template","endCompletion()",a(e)),a(e)&&g(e,!0)}function d(e,t){var n=e._templateState;if(n.selectableMarkers.length>0){n.varIndex++;if(n.varIndex>=n.selectableMarkers.length){if(t){m(e);return}n.varIndex=0}var r=n.selectableMarkers[n.varIndex],i=r.find();e.setSelection(i.from,i.to);var s=r._templateVar;for(var o=0;o<n.marked.length;o++){var u=n.marked[o];u==r?(u.className="",u.startStyle="",u.endStyle=""):u._templateVar==r._templateVar?(u.className="CodeMirror-templates-variable-selected",u.startStyle="",u.endStyle=""):(u.className="CodeMirror-templates-variable",u.startStyle="CodeMirror-templates-variable-start",u.endStyle="CodeMirror-templates-variable-end")}e.refresh()}else m(e)}function v(t){function s(e,t){return e.ch==t.ch&&e.line==t.line}var n=t._templateState,r=n.selectableMarkers[n.varIndex],i={state:n};t._hintTemplateMarker&&(i.marker=t._hintTemplateMarker),t._templateStack||(t._templateStack=[]),t._templateStack.push(i),delete t._templateState,t._hintTemplateMarker=r;var o=r.find(),u=t.listSelections();u.length==1&&s(u[0].anchor,o.from)&&s(u[0].head,o.to)&&t.replaceRange("☰",o.from,o.to),e.commands.autocomplete(t)}function m(e){var t=e._templateState.cursor;if(t!=null){var n=t.find();n!=null&&e.setSelection(n,n)}g(e)}function g(e,t){function r(){i("template","Canceled?");for(var t=0;t<n.marked.length;t++){var r=n.marked[t];if(r==e._hintTemplateMarker){var s=r.find();s&&e.getRange(s.from,s.to)=="☰"&&e.replaceRange(r._templateVar,s.from,s.to)}}}var n=e._templateState;if(n){i("template","Uninstall, clearing: ",n.marked.length);for(var s=0;s<n.marked.length;s++)n.marked[s].clear();n.cursor!=null&&n.cursor.clear(),n.marked.length=0,n.selectableMarkers.length=0}else i("template","Uninstall, no state");if(e._templateStack&&e._templateStack.length>0){i("template","Popping from level",e._templateStack.length);var u=e._templateStack.pop();n=e._templateState=u.state,t&&e._hintTemplateMarker&&r(),u.marker?e._hintTemplateMarker=u.marker:delete e._hintTemplateMarker}else i("template","Leaving template mode"),e.off("change",h),e.off("endCompletion",p),e.removeKeyMap(o),delete e._templateState,delete e._hintTemplateMarker}var t=[],n=e.Pos;e.templatesHint={};var o={Tab:d,Enter:function(e){d(e,!0)},Esc:g,"Ctrl-Space":v};f.prototype.tokens=function(){return this._tokens==null&&(this._tokens=l(this.source)),this._tokens},f.prototype.content=function(){if(this._content==null){var e=this.tokens(),t="";for(var n=0;n<e.length;n++){var r=e[n];typeof r=="string"?t+=r:r.variable&&(t+=r.variable)}this._content=t}return this._content},f.prototype.insert=function(e,t){var r=this,s=a(e);i("template","Insert, nested",s,"template",r);if(e._templateState||s)i("template","Uninstall from insert()",s),g(e);if(r.text){e.replaceRange(r.text,t.from,t.to);return}var f=new u;e._templateState=f;var l=this.tokens(),c="",v=t.from.line,m=t.from.ch,y=[],b=[],w=null;for(var E=0;E<l.length;E++){var S=l[E];if(typeof S=="string")c+=S,S=="\n"?(v++,m=0):m+=S.length;else if(S.variable){c+=S.variable;var x=n(v,m),T=n(v,m+S.variable.length),N=b[S.variable]!=0;m+=S.variable.length,y.push({from:x,to:T,variable:S.variable,selectable:N}),b[S.variable]=!1}else S.cursor&&(w=n(v,m))}var x=t.from,T=t.to,C=x.line;e.replaceRange(c,x,T);for(var E=0;E<y.length;E++){function k(e){return r.varTemplates&&r.varTemplates[e]?r.varTemplates[e]:undefined}var L=y[E],x=L.from,T=L.to,A=e.markText(x,T,{className:"CodeMirror-templates-variable",startStyle:"CodeMirror-templates-variable-start",endStyle:"CodeMirror-templates-variable-end",inclusiveLeft:!0,inclusiveRight:!0,clearWhenEmpty:!1,_templateVar:L.variable,_templates:k(L.variable)});f.marked.push(A),L.selectable==1&&f.selectableMarkers.push(A)}w!=null&&(f.cursor=e.setBookmark(w));var O=c.split("\n");for(var M=1;M<O.length;M++){var _=C+M;e.indentLine(_)}s||(e.on("change",h),i("template","Installing endCompletion"),e.on("endCompletion",p),e.addKeyMap(o)),d(e,!0)},e.templatesHint.getCompletions=function(n,i,s){var o=n.doc.mode.name,u=t[o];if(u)for(var a=0;a<u.length;a++){var f=u[a];if(r(f.name,s)){var l=f.name;f.description&&(l+="- "+f.description);var c="CodeMirror-hint-template";f.className&&(c=f.className);var h={className:c,text:l,template:f};h.data=h,h.hint=function(e,t,n){n.template.insert(e,t)},h.info=function(t){var r=t.template.content();if(e.runMode){var i=document.createElement("div");return i.className="cm-s-default",n.options&&n.options.theme&&(i.className="cm-s-"+n.options.theme),e.runMode(r,n.getMode().name,i),i}return r},i.push(h)}}},e.templatesHint.Template=f,e.templatesHint.addTemplates=function(e){var n=e.context;if(n){var r=t[n];r||(r=[],t[n]=r),e.templates.forEach(function(e){r.push(new f(e))})}}}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/mode/prolog/prolog-template-hint",["../../lib/codemirror","../../addon/hint/templates-hint","jquery","config","laconic"],e):e(CodeMirror)}(function(e,t,n,r){"use strict";function s(e){function r(e){var n=/[-+?:^@!]*([A-Z][A-Za-z_0-9]*)/g,r=/\bis\s+(det|nondet|semidet|fail|multi)$/;t.template||(t.template=e.replace(n,"$${$1}").replace(r,""),t.template.match(/\${cursor}/)||(t.template+="${cursor}")),t.displayText||(t.displayText=e);if(!t.varTemplates){var s=e.match(/:[A-Z][A-Za-z_0-9]*/g);if(s&&s.length>0){var o={};for(var u=0;u<s.length;u++)o[s[u].substring(1)]=i;t.varTemplates=o}}}var t=this,s=["template","displayText","text",{from:"summary",to:"description"},"className","varTemplates"];if(typeof e=="string")this.displayText=e,this.text=e;else{for(var o=0;o<s.length;o++){var u=s[o];typeof u=="string"?e[u]&&(this[u]=e[u]):e[u.from]&&(this[u.to]=e[u.from])}e.mode&&r(e.mode),e.classes&&(e.className=e.classes.join(" "))}this.render=function(e,t,r){n(e).append(r.displayText)},this.info=function(e){return e.description}}function o(t,n,r){function f(e,t){return e.slice(0,t.length)==t}var o=n.token.string,u=[],a=i;t._hintTemplateMarker&&(o=="☰"&&(o=""),a=t._hintTemplateMarker._templates);var l=o.length>0&&!o.match(/\w/);if(a)for(var c=0;c<a.length;c++){var h=a[c];if(typeof h=="string")f(h,o)&&u.push(new s(h));else{var p=["name","mode","template","text"];if(l)h.name&&h.name.indexOf(o)>=0&&u.push(new s(h));else for(var d=0;d<p.length;d++)if(h[p[d]]){f(h[p[d]],o)&&u.push(new s(h));break}}}if(u.length==0){var v=e.hint.anyword,m=o==""&&t._hintTemplateMarker?{word:/[A-Z][A-Za-z0-9_]*/}:r,g=v(t,m);for(var c=0;c<g.list.length;c++)u.push(new s(g.list[c]))}return{list:u,from:n.position.from,to:n.position.to}}function u(t,n,r){var i=a(t),s=o(t,i,r);e.attachContextInfo(s),n(s)}function a(t){var n=t.getCursor(),r=t.getTokenAt(n),i=e.innerMode(t.getMode(),r.state);if(i.mode.name!="prolog")return null;var s={from:new e.Pos(n.line,r.start),to:new e.Pos(n.line,r.end)};return{token:r,position:s}}var i=r.swish.templates||[];return s.prototype.hint=function(t,n,r){var i=new e.templatesHint.Template(this);i.insert(t,n)},u.async=!0,e.registerHelper("hint","prologTemplate",u),{getHints:u,getState:a}}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/mode/prolog/prolog",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("prolog",function(t,n){function r(e,t,n){return t.tokenize=n,n(e,t)}function p(e,t,n){if(n>0){while(n-->0)if(!t.test(e.next()))return!1}else while(t.test(e.peek()))e.next();return!0}function d(e){var t=e.next();if(o.test(t))return!0;switch(t){case"u":if(i.unicodeEscape)return p(e,a,4);return!1;case"U":if(i.unicodeEscape)return p(e,a,8);return!1;case null:return!0;case"c":return e.eatSpace(),!0;case"x":return p(e,a,2)}return u.test(t)?p(e,u,-1)?(e.peek()=="\\"&&e.next(),!0):!1:!1}function v(e,t,n){var r;while((r=e.next())!=null){if(r==n&&n!=e.peek())return t.nesting.pop(),!1;if(r=="\\"&&!d(e))return!1}return i.multiLineQuoted}function m(e){return e.nesting.slice(-1)[0]}function g(e){var t=m(e);t?t.arg==0?t.arg=1:t.type=="control"&&(e.goalStart=!1):e.goalStart=!1}function y(e){var t=m(e);t&&!t.alignment&&t.arg!=undefined&&(t.arg==0?t.alignment=t.leftCol?t.leftCol+4:t.column+4:t.alignment=t.column+1)}function b(e){var t=m(e);t?t.arg?t.arg++:t.type=="control"&&(e.goalStart=!0):e.goalStart=!0}function w(e){var t=m(e);return t?t.type=="control"?!0:!1:e.inBody}function x(e,t,n){return E=e,S=n,t}function T(e){return e.eol()||/[\s%]/.test(e.peek())?!0:!1}function N(e,t){var n=e.next();if(n=="(")return t.lastType=="functor"?(t.nesting.push({functor:t.functorName,column:e.column(),leftCol:t.functorColumn,arg:0}),delete t.functorName,delete t.functorColumn):t.nesting.push({type:"control",closeColumn:e.column(),alignment:e.column()+4}),x("solo",null,"(");if(n=="{"&&t.lastType=="tag")return t.nesting.push({tag:t.tagName,column:e.column(),leftCol:t.tagColumn,arg:0}),delete t.tagName,delete t.tagColumn,x("dict_open",null);if(n=="/"&&e.eat("*"))return r(e,t,L);if(n=="%")return e.skipToEnd(),x("comment","comment");g(t);if(l.test(n)){switch(n){case")":t.nesting.pop();break;case"]":return t.nesting.pop(),x("list_close",null);case"}":var s=m(t),o=s&&s.tag?"dict_close":"brace_term_close";return t.nesting.pop(),x(o,null);case",":e.eol()&&(t.commaAtEOL=!0),b(t);case";":w(t)&&(t.goalStart=!0);break;case"[":return t.nesting.push({type:"list",closeColumn:e.column(),alignment:e.column()+2}),x("list_open",null);case"{":return i.quasiQuotations&&e.eat("|")?(t.nesting.push({type:"quasi-quotation",alignment:e.column()+1}),x("qq_open","qq_open")):(t.nesting.push({type:"curly",closeColumn:e.column(),alignment:e.column()+2}),x("brace_term_open",null));case"|":if(i.quasiQuotations){if(e.eat("|"))return t.tokenize=k,x("qq_sep","qq_sep");if(e.eat("}"))return t.nesting.pop(),x("qq_close","qq_close")}w(t)&&(t.goalStart=!0)}return x("solo",null,n)}if(n=='"'||n=="'"||n=="`")return t.nesting.push({type:"quoted",alignment:e.column()+1}),r(e,t,C(n));if(n=="0"){if(e.eat(/x/i))return e.eatWhile(/[\da-f]/i),x("number","number");if(e.eat(/o/i))return e.eatWhile(/[0-7]/i),x("number","number");if(e.eat(/'/)){var u=e.next();return u=="\\"&&!d(e)?x("error","error"):x("code","code")}}if(/\d/.test(n)||/[+-]/.test(n)&&e.eat(/\d/))return i.groupedIntegers?e.match(/^\d*((_|\s+)\d+)*(?:\.\d+)?(?:[eE][+\-]?\d+)?/):e.match(/^\d*(?:\.\d+)?(?:[eE][+\-]?\d+)?/),x(n=="-"?"neg-number":n=="+"?"pos-number":"number");if(f.test(n)){e.eatWhile(f);var a=e.current();if(a=="."&&T(e))return m(t)?x("fullstop","error",a):x("fullstop","fullstop",a);return c.test(a)?x("neck","neck",a):w(t)&&h.test(a)?(t.goalStart=!0,x("symbol","operator",a)):x("symbol","operator",a)}e.eatWhile(/[\w_]/);var p=e.current();if(e.peek()=="{"&&i.dicts)return t.tagName=p,t.tagColumn=e.column(),x("tag","tag",p);if(n=="_"){if(p.length==1)return x("var","anon",p);var v=p.charAt(1);return v==v.toUpperCase()?x("var","var-2",p):x("var","var",p)}return n==n.toUpperCase()?x("var","var",p):e.peek()=="("?(t.functorName=p,t.functorColumn=e.column(),x("functor","functor",p)):x("atom","atom",p)}function C(e){return function(t,n){if(!v(t,n,e)){n.tokenize=N;if(t.peek()=="("){var r=t.current();return n.functorName=r,x("functor","functor",r)}if(t.peek()=="{"&&i.dicts){var r=t.current();return n.tagName=r,x("tag","tag",r)}}return x(s[e],s[e])}}function k(e,t){var n=!1,r;while(r=e.next()){if(r=="}"&&n){t.tokenize=N,e.backUp(2);break}n=r=="|"}return x("qq_content","qq_content")}function L(e,t){var n=!1,r;while(r=e.next()){if(r=="/"&&n){t.tokenize=N;break}n=r=="*"}return x("comment","comment")}var i={quasiQuotations:!0,dicts:!0,unicodeEscape:!0,multiLineQuoted:!0,groupedIntegers:!0},s={'"':"string","'":"qatom","`":"bqstring"},o=/[abref\\'"nrtsv]/,u=/[0-7]/,a=/[0-9a-fA-F]/,f=/[-#$&*+./:<=>?@\\^~]/,l=/[[\]{}(),;|!]/,c=/^(:-|-->)$/,h=/^(,|;|->|\*->|\\+|\|)$/,E,S;return{startState:function(){return{tokenize:N,inBody:!1,goalStart:!1,lastType:null,nesting:new Array,curTerm:null,curToken:null}},token:function(e,t){var r;t.curTerm==null&&n.metainfo&&(t.curTerm=0,t.curToken=0),e.sol()&&delete t.commaAtEOL;if(t.tokenize==N&&e.eatSpace())return e.eol()&&y(t),null;var i=t.tokenize(e,t);return e.eol()&&y(t),E=="neck"?(t.inBody=!0,t.goalStart=!0):E=="fullstop"&&(t.inBody=!1,t.goalStart=!1),t.lastType=E,typeof n.enrich=="function"&&(i=n.enrich(e,t,E,S,i)),i},indent:function(t,n){if(t.tokenize==L)return e.Pass;var r;return(r=m(t))?r.closeColumn&&!t.commaAtEOL?r.closeColumn:r.alignment:t.inBody?4:0},theme:"prolog",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:"%"}}),e.defineMIME("text/x-prolog","prolog")}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/mode/prolog/prolog_keys",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.commands.prologStartIfThenElse=function(t){var n=t.getCursor("start"),r=t.getTokenAt(n,!0);if(r.state.goalStart==1){t.replaceSelection("( ","end");return}return e.Pass},e.commands.prologStartThen=function(t){function i(e){var t=e.nesting.length;return t>0?e.nesting[t-1]:null}function s(e){var t=i(e);return t?t.type=="control"?!0:!1:e.inBody}var n=t.getCursor("start"),r=t.getTokenAt(n,!0);if(n.ch==r.end&&r.type=="operator"&&r.string=="-"&&s(r.state)){t.replaceSelection("> ","end");return}return e.Pass},e.commands.prologStartElse=function(t){var n=t.getCursor("start"),r=t.getTokenAt(n,!0);if(r.start==0&&n.ch==r.end&&!/\S/.test(r.string)){t.replaceSelection("; ","end");return}return e.Pass},e.defineOption("prologKeys",null,function(t,n,r){r&&r!=e.Init&&t.removeKeyMap("prolog");if(n){var i={name:"prolog","'('":"prologStartIfThenElse","'>'":"prologStartThen","';'":"prologStartElse","Ctrl-L":"refreshHighlight"};t.addKeyMap(i)}})}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/mode/prolog/prolog_query",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.commands.prologFireQuery=function(t){var n=t.lineCount(),r=t.getLine(n-1),i=t.getTokenAt({line:n,ch:r},!0);return i.type=="fullstop"?t.prologFireQuery(t.getValue()):e.Pass},e.defineOption("prologQuery",null,function(t,n,r){r&&r!=e.Init&&t.removeKeyMap("prologQuery");if(typeof n=="function"){var i={name:"prologQuery",Enter:"prologFireQuery","Ctrl-Enter":"newlineAndIndent"};t.addKeyMap(i),t.prologFireQuery=n}})}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/mode/prolog/prolog_server",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";function r(e){typeof e=="object"&&(this.enabled=e.enabled||!1,this.role=e.role||"source",e.sourceID&&(this.sourceID=e.sourceID),this.url={change:e.url+"change",tokens:e.url+"tokens",leave:e.url+"leave",info:e.url+"info"},this.delay=e.delay?e.delay:t,this.generationFromServer=-1,this.tmo=null)}function i(e,t){var n=e.state.prologHighlightServer;if(n==null||n.url==null||!n.enabled)return;n.tmo&&e.askRefresh(),n.changes!==undefined&&n.changes.push(t);if(t.origin=="setValue"||n.generationFromServer==-1)n.changes=undefined,e.serverAssistedHighlight()}function s(e){var t=e.state.prologHighlightServer;if(t==null||t.url==null||t.uuid==null)return;var n=t.uuid;delete t.uuid,$.ajax({url:t.url.leave,async:!1,contentType:"application/json",type:"POST",dataType:"json",data:JSON.stringify({uuid:n})})}function o(){var e=(new Date).getTime(),t="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var n=(e+Math.random()*16)%16|0;return e=Math.floor(e/16),(t=="x"?n:n&7|8).toString(16)});return t}function f(e,t,n,r,i){function o(e){var t=s.metainfo[e.curTerm];if(!t)return null;var n=t[e.curToken];return n?n:null}function f(){t.outOfSync||(console.log("Mismatch: ("+r+") "+n+"/"+d.type),t.outOfSync={okToken:t.curToken,okTerm:t.curTerm,skippedTerms:0,skippedTokens:[]}),s.editor.askRefresh()}function l(){var e=t.outOfSync,n={curToken:e.okToken,curTerm:e.okTerm};return e.skippedTerms,null}function c(t){var n;if(r==t)return!0;if((n=t.lastIndexOf(r,1))>=0){var i=t.substring(r.length+n);for(var s=0;s<i.length;s++)if(!e.eat(i.charAt(s)))return e.backUp(s),!1;return!0}return!1}function h(e){var t=e.slice(-1)[0];return t&&t.type=="quoted"}function p(e,t){if(e){if(!u[n])return r&&e.text==r?(t.curToken++,e.type):i;if(e.text&&r)return c(e.text)?(t.curToken++,e.type):undefined;if(u[n]==a[e.type])return n=="fullstop"?(t.curTerm++,t.curToken=0):h(t.nesting)||t.curToken++,e.type;if(u[n]==e.base)return t.curToken++,e.type;if(n=="qatom"&&a[e.type]=="atom")return t.curToken++,e.type;if(n=="number"&&e.type=="meta")return t.curToken++,e.type;if(n=="neg-number"&&e.text&&e.text=="-")return t.curToken+=2,"number";if(n=="pos-number"&&e.text&&e.text=="+")return t.curToken+=2,"number"}return undefined}var s=this;if(t.curTerm!=null){var d,v;if(t.syntax_error)return n=="fullstop"&&(s.editor.askRefresh(),delete t.syntax_error),i;if(t.outOfSync){var m=t.outOfSync;if(m.skippedTerms<=3){m.skippedTokens.push({type:n,style:i,content:r});if(v=l())return v;n=="fullstop"&&(m.skippedTokens=[],m.skippedTerms++)}return i}return(d=o(t))?(v=p(d,t))!==undefined?v:d.type=="syntax_error"?(t.syntax_error=!0,t.curToken=0,t.curTerm++,i):(f(),i+" outofsync"):(s.editor.askRefresh(),i)}return i}var t=1e3,n=1e3;e.defineOption("prologHighlightServer",!1,function(e,t,n){function o(){s(e)}e.state.prologHighlightServer?t==null?(s(e),e.off("change",i),window.removeEventListener("unload",o),delete e.state.prologHighlightServer,e.setOption("mode",{name:"prolog"})):t.enabled!=n.enabled&&(e.state.prologHighlightServer.enabled=t.enabled,t.enabled?(e.on("change",i),window.addEventListener("unload",o),e.lineCount()>0&&e.serverAssistedHighlight(!0)):(s(e),e.off("change",i),window.removeEventListener("unload",o),e.setOption("mode",{name:"prolog"}))):t&&(e.state.prologHighlightServer=new r(t),e.state.prologHighlightServer.enabled&&(e.on("change",i),window.addEventListener("unload",o),e.lineCount()>0&&e.serverAssistedHighlight(!0)))}),e.prototype.askRefresh=function(e){var t=this,n=t.state.prologHighlightServer;if(n==null)return;e===undefined&&(e=n.delay),n.tmo&&clearTimeout(n.tmo),n.tmo=setTimeout(function(){t.serverAssistedHighlight()},e)},e.prototype.serverAssistedHighlight=function(e){function s(){var e=t.getOption("mode");return typeof e!="object"?e={name:"prolog",enrich:f,editor:t}:e.enrich||(e.enrich=f,e.editor=t),e}var t=this,r=t.state.prologHighlightServer,i={};r.tmo=null;if(r==null||r.url==null||!r.enabled||t.isClean(r.generationFromServer)&&!e)return;if(r.uuid)i.uuid=r.uuid,r.changes==undefined?(i.text=t.getValue(),i.text.length>n&&(r.changes=[])):(i.changes=r.changes,r.changes=[]);else{i.text=t.getValue();if(i.text.trim()=="")return;r.uuid=o(),i.uuid=r.uuid}i.role=r.role,typeof r.sourceID=="function"&&(i.sourceID=r.sourceID()),r.generationFromServer=t.changeGeneration(),$.ajax({url:r.url.tokens,dataType:"json",contentType:"application/json",type:"POST",data:JSON.stringify(i),success:function(e,n){var r=s();r.metainfo=e.tokens,t.setOption("mode",r)},error:function(e){e.status==409&&delete r.uuid}})},e.commands.refreshHighlight=function(e){e.serverAssistedHighlight(!0)};var u={"var":"var",atom:"atom",qatom:"qatom",bqstring:"string",symbol:"atom",functor:"functor",tag:"tag",number:"number",string:"string",code:"number","neg-number":"number","pos-number":"number",list_open:"list_open",list_close:"list_close",qq_open:"qq_open",qq_sep:"qq_sep",qq_close:"qq_close",dict_open:"dict_open",dict_close:"dict_close",brace_term_open:"brace_term_open",brace_term_close:"brace_term_close",neck:"neck",fullstop:"fullstop"},a={"var":"var",singleton:"var",atom:"atom",qatom:"qatom",string:"string",codes:"string",chars:"string",functor:"functor",tag:"tag",control:"atom",meta:"atom",op_type:"atom","int":"number","float":"number",key:"atom",sep:"atom",ext_quant:"atom",expanded:"expanded",comment_string:"string",identifier:"atom",delimiter:"atom",module:"atom",head_exported:"atom",head_public:"atom",head_extern:"atom",head_dynamic:"atom",head_multifile:"atom",head_unreferenced:"atom",head_hook:"atom",head_meta:"atom",head_constraint:"atom",head_imported:"atom",head_built_in:"atom",head_iso:"atom",head_def_iso:"atom",head_def_swi:"atom",head:"atom",goal_built_in:"atom",goal_imported:"atom",goal_autoload:"atom",goal_global:"atom",goal_undefined:"atom",goal_thread_local:"atom",goal_dynamic:"atom",goal_multifile:"atom",goal_expanded:"atom",goal_extern:"atom",goal_recursion:"atom",goal_meta:"atom",goal_foreign:"atom",goal_local:"atom",goal_constraint:"atom",goal_not_callable:"atom",xpce_method:"functor",xpce_class_builtin:"atom",xpce_class_lib:"atom",xpce_class_user:"atom",xpce_class_undef:"atom",option_name:"atom",no_option_name:"atom",flag_name:"atom",no_flag_name:"atom",file_no_depends:"atom",file:"atom",nofile:"atom",list_open:"list_open",list_close:"list_close",qq_open:"qq_open",qq_sep:"qq_sep",qq_close:"qq_close",qq_type:"atom",dict_open:"dict_open",dict_close:"dict_close",brace_term_open:"brace_term_open",brace_term_close:"brace_term_close",neck:"neck",fullstop:"fullstop",string_terminal:"string",html:"functor",entity:"atom",html_attribute:"functor",sgml_attr_function:"atom",http_location_for_id:"atom",http_no_location_for_id:"atom"};e.prototype.getEnrichedToken=function(e){if(e.state.curTerm!=null&&e.state.curToken!=null){var t=this.getOption("mode"),n;if(t.metainfo&&(n=t.metainfo[e.state.curTerm]))return n[e.state.curToken-1]}return undefined},e.prototype.tokenInfo=function(e,t){var n=this.state.prologHighlightServer;return t||(t=$($.el.span({"class":"token-info"},"..."))),$.ajax({url:n.url.info,data:e,success:function(e){t.html(e)}}),t[0]},e.prototype.getTokenReferences=function(e){function n(e,t){if(t&&t.indexOf("swish://")==0)return e.file=t.substring(8),!0}var t=[];switch(e.type){case"goal_local":var r={title:"Source for "+e.text+"/"+e.arity,line:e.line,regex:new RegExp("\\b"+RegExp.escape(e.text),"g"),showAllMatches:!0};n(r,e.file),t.push(r);break;case"file":var r={};n(r,e.path)&&(r.title="Included file "+r.file,t.push(r))}return t}}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/mode/xml/xml",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";var t={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},n={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,caseFold:!1};e.defineMode("xml",function(r,i){function c(e,t){function n(n){return t.tokenize=n,n(e,t)}var r=e.next();if(r=="<")return e.eat("!")?e.eat("[")?e.match("CDATA[")?n(d("atom","]]>")):null:e.match("--")?n(d("comment","-->")):e.match("DOCTYPE",!0,!0)?(e.eatWhile(/[\w\._\-]/),n(v(1))):null:e.eat("?")?(e.eatWhile(/[\w\._\-]/),t.tokenize=d("meta","?>"),"meta"):(f=e.eat("/")?"closeTag":"openTag",t.tokenize=h,"tag bracket");if(r=="&"){var i;return e.eat("#")?e.eat("x")?i=e.eatWhile(/[a-fA-F\d]/)&&e.eat(";"):i=e.eatWhile(/[\d]/)&&e.eat(";"):i=e.eatWhile(/[\w\.\-:]/)&&e.eat(";"),i?"atom":"error"}return e.eatWhile(/[^&<]/),null}function h(e,t){var n=e.next();if(n==">"||n=="/"&&e.eat(">"))return t.tokenize=c,f=n==">"?"endTag":"selfcloseTag","tag bracket";if(n=="=")return f="equals",null;if(n=="<"){t.tokenize=c,t.state=b,t.tagName=t.tagStart=null;var r=t.tokenize(e,t);return r?r+" tag error":"tag error"}return/[\'\"]/.test(n)?(t.tokenize=p(n),t.stringStartCol=e.column(),t.tokenize(e,t)):(e.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function p(e){var t=function(t,n){while(!t.eol())if(t.next()==e){n.tokenize=h;break}return"string"};return t.isInAttribute=!0,t}function d(e,t){return function(n,r){while(!n.eol()){if(n.match(t)){r.tokenize=c;break}n.next()}return e}}function v(e){return function(t,n){var r;while((r=t.next())!=null){if(r=="<")return n.tokenize=v(e+1),n.tokenize(t,n);if(r==">"){if(e==1){n.tokenize=c;break}return n.tokenize=v(e-1),n.tokenize(t,n)}}return"meta"}}function m(e,t,n){this.prev=e.context,this.tagName=t,this.indent=e.indented,this.startOfLine=n;if(o.doNotIndent.hasOwnProperty(t)||e.context&&e.context.noIndent)this.noIndent=!0}function g(e){e.context&&(e.context=e.context.prev)}function y(e,t){var n;for(;;){if(!e.context)return;n=e.context.tagName;if(!o.contextGrabbers.hasOwnProperty(n)||!o.contextGrabbers[n].hasOwnProperty(t))return;g(e)}}function b(e,t,n){return e=="openTag"?(n.tagStart=t.column(),w):e=="closeTag"?E:b}function w(e,t,n){return e=="word"?(n.tagName=t.current(),l="tag",T):(l="error",w)}function E(e,t,n){if(e=="word"){var r=t.current();return n.context&&n.context.tagName!=r&&o.implicitlyClosed.hasOwnProperty(n.context.tagName)&&g(n),n.context&&n.context.tagName==r||o.matchClosing===!1?(l="tag",S):(l="tag error",x)}return l="error",x}function S(e,t,n){return e!="endTag"?(l="error",S):(g(n),b)}function x(e,t,n){return l="error",S(e,t,n)}function T(e,t,n){if(e=="word")return l="attribute",N;if(e=="endTag"||e=="selfcloseTag"){var r=n.tagName,i=n.tagStart;return n.tagName=n.tagStart=null,e=="selfcloseTag"||o.autoSelfClosers.hasOwnProperty(r)?y(n,r):(y(n,r),n.context=new m(n,r,i==n.indented)),b}return l="error",T}function N(e,t,n){return e=="equals"?C:(o.allowMissing||(l="error"),T(e,t,n))}function C(e,t,n){return e=="string"?k:e=="word"&&o.allowUnquoted?(l="string",T):(l="error",T(e,t,n))}function k(e,t,n){return e=="string"?k:T(e,t,n)}var s=r.indentUnit,o={},u=i.htmlMode?t:n;for(var a in u)o[a]=u[a];for(var a in i)o[a]=i[a];var f,l;return c.isInText=!0,{startState:function(e){var t={tokenize:c,state:b,indented:e||0,tagName:null,tagStart:null,context:null};return e!=null&&(t.baseIndent=e),t},token:function(e,t){!t.tagName&&e.sol()&&(t.indented=e.indentation());if(e.eatSpace())return null;f=null;var n=t.tokenize(e,t);return(n||f)&&n!="comment"&&(l=null,t.state=t.state(f||n,e,t),l&&(n=l=="error"?n+" error":l)),n},indent:function(t,n,r){var i=t.context;if(t.tokenize.isInAttribute)return t.tagStart==t.indented?t.stringStartCol+1:t.indented+s;if(i&&i.noIndent)return e.Pass;if(t.tokenize!=h&&t.tokenize!=c)return r?r.match(/^(\s*)/)[0].length:0;if(t.tagName)return o.multilineTagIndentPastTag!==!1?t.tagStart+t.tagName.length+2:t.tagStart+s*(o.multilineTagIndentFactor||1);if(o.alignCDATA&&/<!\[CDATA\[/.test(n))return 0;var u=n&&/^<(\/)?([\w_:\.-]*)/.exec(n);if(u&&u[1])while(i){if(i.tagName==u[2]){i=i.prev;break}if(!o.implicitlyClosed.hasOwnProperty(i.tagName))break;i=i.prev}else if(u)while(i){var a=o.contextGrabbers[i.tagName];if(!a||!a.hasOwnProperty(u[2]))break;i=i.prev}while(i&&i.prev&&!i.startOfLine)i=i.prev;return i?i.indent+s:t.baseIndent||0},electricInput:/<\/[\s\w:]+>$/,blockCommentStart:"<!--",blockCommentEnd:"-->",configuration:o.htmlMode?"html":"xml",helperType:o.htmlMode?"html":"xml",skipAttribute:function(e){e.state==C&&(e.state=T)}}}),e.defineMIME("text/xml","xml"),e.defineMIME("application/xml","xml"),e.mimeModes.hasOwnProperty("text/html")||e.defineMIME("text/html",{name:"xml",htmlMode:!0})}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/mode/meta",["../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.modeInfo=[{name:"APL",mime:"text/apl",mode:"apl",ext:["dyalog","apl"]},{name:"PGP",mimes:["application/pgp","application/pgp-keys","application/pgp-signature"],mode:"asciiarmor",ext:["pgp"]},{name:"ASN.1",mime:"text/x-ttcn-asn",mode:"asn.1",ext:["asn","asn1"]},{name:"Asterisk",mime:"text/x-asterisk",mode:"asterisk",file:/^extensions\.conf$/i},{name:"Brainfuck",mime:"text/x-brainfuck",mode:"brainfuck",ext:["b","bf"]},{name:"C",mime:"text/x-csrc",mode:"clike",ext:["c","h"]},{name:"C++",mime:"text/x-c++src",mode:"clike",ext:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],alias:["cpp"]},{name:"Cobol",mime:"text/x-cobol",mode:"cobol",ext:["cob","cpy"]},{name:"C#",mime:"text/x-csharp",mode:"clike",ext:["cs"],alias:["csharp"]},{name:"Clojure",mime:"text/x-clojure",mode:"clojure",ext:["clj","cljc","cljx"]},{name:"ClojureScript",mime:"text/x-clojurescript",mode:"clojure",ext:["cljs"]},{name:"Closure Stylesheets (GSS)",mime:"text/x-gss",mode:"css",ext:["gss"]},{name:"CMake",mime:"text/x-cmake",mode:"cmake",ext:["cmake","cmake.in"],file:/^CMakeLists.txt$/},{name:"CoffeeScript",mime:"text/x-coffeescript",mode:"coffeescript",ext:["coffee"],alias:["coffee","coffee-script"]},{name:"Common Lisp",mime:"text/x-common-lisp",mode:"commonlisp",ext:["cl","lisp","el"],alias:["lisp"]},{name:"Cypher",mime:"application/x-cypher-query",mode:"cypher",ext:["cyp","cypher"]},{name:"Cython",mime:"text/x-cython",mode:"python",ext:["pyx","pxd","pxi"]},{name:"Crystal",mime:"text/x-crystal",mode:"crystal",ext:["cr"]},{name:"CSS",mime:"text/css",mode:"css",ext:["css"]},{name:"CQL",mime:"text/x-cassandra",mode:"sql",ext:["cql"]},{name:"D",mime:"text/x-d",mode:"d",ext:["d"]},{name:"Dart",mimes:["application/dart","text/x-dart"],mode:"dart",ext:["dart"]},{name:"diff",mime:"text/x-diff",mode:"diff",ext:["diff","patch"]},{name:"Django",mime:"text/x-django",mode:"django"},{name:"Dockerfile",mime:"text/x-dockerfile",mode:"dockerfile",file:/^Dockerfile$/},{name:"DTD",mime:"application/xml-dtd",mode:"dtd",ext:["dtd"]},{name:"Dylan",mime:"text/x-dylan",mode:"dylan",ext:["dylan","dyl","intr"]},{name:"EBNF",mime:"text/x-ebnf",mode:"ebnf"},{name:"ECL",mime:"text/x-ecl",mode:"ecl",ext:["ecl"]},{name:"edn",mime:"application/edn",mode:"clojure",ext:["edn"]},{name:"Eiffel",mime:"text/x-eiffel",mode:"eiffel",ext:["e"]},{name:"Elm",mime:"text/x-elm",mode:"elm",ext:["elm"]},{name:"Embedded Javascript",mime:"application/x-ejs",mode:"htmlembedded",ext:["ejs"]},{name:"Embedded Ruby",mime:"application/x-erb",mode:"htmlembedded",ext:["erb"]},{name:"Erlang",mime:"text/x-erlang",mode:"erlang",ext:["erl"]},{name:"Factor",mime:"text/x-factor",mode:"factor",ext:["factor"]},{name:"FCL",mime:"text/x-fcl",mode:"fcl"},{name:"Forth",mime:"text/x-forth",mode:"forth",ext:["forth","fth","4th"]},{name:"Fortran",mime:"text/x-fortran",mode:"fortran",ext:["f","for","f77","f90"]},{name:"F#",mime:"text/x-fsharp",mode:"mllike",ext:["fs"],alias:["fsharp"]},{name:"Gas",mime:"text/x-gas",mode:"gas",ext:["s"]},{name:"Gherkin",mime:"text/x-feature",mode:"gherkin",ext:["feature"]},{name:"GitHub Flavored Markdown",mime:"text/x-gfm",mode:"gfm",file:/^(readme|contributing|history).md$/i},{name:"Go",mime:"text/x-go",mode:"go",ext:["go"]},{name:"Groovy",mime:"text/x-groovy",mode:"groovy",ext:["groovy","gradle"]},{name:"HAML",mime:"text/x-haml",mode:"haml",ext:["haml"]},{name:"Haskell",mime:"text/x-haskell",mode:"haskell",ext:["hs"]},{name:"Haskell (Literate)",mime:"text/x-literate-haskell",mode:"haskell-literate",ext:["lhs"]},{name:"Haxe",mime:"text/x-haxe",mode:"haxe",ext:["hx"]},{name:"HXML",mime:"text/x-hxml",mode:"haxe",ext:["hxml"]},{name:"ASP.NET",mime:"application/x-aspx",mode:"htmlembedded",ext:["aspx"],alias:["asp","aspx"]},{name:"HTML",mime:"text/html",mode:"htmlmixed",ext:["html","htm"],alias:["xhtml"]},{name:"HTTP",mime:"message/http",mode:"http"},{name:"IDL",mime:"text/x-idl",mode:"idl",ext:["pro"]},{name:"Jade",mime:"text/x-jade",mode:"jade",ext:["jade"]},{name:"Java",mime:"text/x-java",mode:"clike",ext:["java"]},{name:"Java Server Pages",mime:"application/x-jsp",mode:"htmlembedded",ext:["jsp"],alias:["jsp"]},{name:"JavaScript",mimes:["text/javascript","text/ecmascript","application/javascript","application/x-javascript","application/ecmascript"],mode:"javascript",ext:["js"],alias:["ecmascript","js","node"]},{name:"JSON",mimes:["application/json","application/x-json"],mode:"javascript",ext:["json","map"],alias:["json5"]},{name:"JSON-LD",mime:"application/ld+json",mode:"javascript",ext:["jsonld"],alias:["jsonld"]},{name:"JSX",mime:"text/jsx",mode:"jsx",ext:["jsx"]},{name:"Jinja2",mime:"null",mode:"jinja2"},{name:"Julia",mime:"text/x-julia",mode:"julia",ext:["jl"]},{name:"Kotlin",mime:"text/x-kotlin",mode:"clike",ext:["kt"]},{name:"LESS",mime:"text/x-less",mode:"css",ext:["less"]},{name:"LiveScript",mime:"text/x-livescript",mode:"livescript",ext:["ls"],alias:["ls"]},{name:"Lua",mime:"text/x-lua",mode:"lua",ext:["lua"]},{name:"Markdown",mime:"text/x-markdown",mode:"markdown",ext:["markdown","md","mkd"]},{name:"mIRC",mime:"text/mirc",mode:"mirc"},{name:"MariaDB SQL",mime:"text/x-mariadb",mode:"sql"},{name:"Mathematica",mime:"text/x-mathematica",mode:"mathematica",ext:["m","nb"]},{name:"Modelica",mime:"text/x-modelica",mode:"modelica",ext:["mo"]},{name:"MUMPS",mime:"text/x-mumps",mode:"mumps",ext:["mps"]},{name:"MS SQL",mime:"text/x-mssql",mode:"sql"},{name:"mbox",mime:"application/mbox",mode:"mbox",ext:["mbox"]},{name:"MySQL",mime:"text/x-mysql",mode:"sql"},{name:"Nginx",mime:"text/x-nginx-conf",mode:"nginx",file:/nginx.*\.conf$/i},{name:"NSIS",mime:"text/x-nsis",mode:"nsis",ext:["nsh","nsi"]},{name:"NTriples",mime:"text/n-triples",mode:"ntriples",ext:["nt"]},{name:"Objective C",mime:"text/x-objectivec",mode:"clike",ext:["m","mm"],alias:["objective-c","objc"]},{name:"OCaml",mime:"text/x-ocaml",mode:"mllike",ext:["ml","mli","mll","mly"]},{name:"Octave",mime:"text/x-octave",mode:"octave",ext:["m"]},{name:"Oz",mime:"text/x-oz",mode:"oz",ext:["oz"]},{name:"Pascal",mime:"text/x-pascal",mode:"pascal",ext:["p","pas"]},{name:"PEG.js",mime:"null",mode:"pegjs",ext:["jsonld"]},{name:"Perl",mime:"text/x-perl",mode:"perl",ext:["pl","pm"]},{name:"PHP",mime:"application/x-httpd-php",mode:"php",ext:["php","php3","php4","php5","phtml"]},{name:"Pig",mime:"text/x-pig",mode:"pig",ext:["pig"]},{name:"Plain Text",mime:"text/plain",mode:"null",ext:["txt","text","conf","def","list","log"]},{name:"PLSQL",mime:"text/x-plsql",mode:"sql",ext:["pls"]},{name:"PowerShell",mime:"application/x-powershell",mode:"powershell",ext:["ps1","psd1","psm1"]},{name:"Properties files",mime:"text/x-properties",mode:"properties",ext:["properties","ini","in"],alias:["ini","properties"]},{name:"ProtoBuf",mime:"text/x-protobuf",mode:"protobuf",ext:["proto"]},{name:"Python",mime:"text/x-python",mode:"python",ext:["BUILD","bzl","py","pyw"],file:/^(BUCK|BUILD)$/},{name:"Puppet",mime:"text/x-puppet",mode:"puppet",ext:["pp"]},{name:"Q",mime:"text/x-q",mode:"q",ext:["q"]},{name:"R",mime:"text/x-rsrc",mode:"r",ext:["r"],alias:["rscript"]},{name:"reStructuredText",mime:"text/x-rst",mode:"rst",ext:["rst"],alias:["rst"]},{name:"RPM Changes",mime:"text/x-rpm-changes",mode:"rpm"},{name:"RPM Spec",mime:"text/x-rpm-spec",mode:"rpm",ext:["spec"]},{name:"Ruby",mime:"text/x-ruby",mode:"ruby",ext:["rb"],alias:["jruby","macruby","rake","rb","rbx"]},{name:"Rust",mime:"text/x-rustsrc",mode:"rust",ext:["rs"]},{name:"SAS",mime:"text/x-sas",mode:"sas",ext:["sas"]},{name:"Sass",mime:"text/x-sass",mode:"sass",ext:["sass"]},{name:"Scala",mime:"text/x-scala",mode:"clike",ext:["scala"]},{name:"Scheme",mime:"text/x-scheme",mode:"scheme",ext:["scm","ss"]},{name:"SCSS",mime:"text/x-scss",mode:"css",ext:["scss"]},{name:"Shell",mime:"text/x-sh",mode:"shell",ext:["sh","ksh","bash"],alias:["bash","sh","zsh"],file:/^PKGBUILD$/},{name:"Sieve",mime:"application/sieve",mode:"sieve",ext:["siv","sieve"]},{name:"Slim",mimes:["text/x-slim","application/x-slim"],mode:"slim",ext:["slim"]},{name:"Smalltalk",mime:"text/x-stsrc",mode:"smalltalk",ext:["st"]},{name:"Smarty",mime:"text/x-smarty",mode:"smarty",ext:["tpl"]},{name:"Solr",mime:"text/x-solr",mode:"solr"},{name:"Soy",mime:"text/x-soy",mode:"soy",ext:["soy"],alias:["closure template"]},{name:"SPARQL",mime:"application/sparql-query",mode:"sparql",ext:["rq","sparql"],alias:["sparul"]},{name:"Spreadsheet",mime:"text/x-spreadsheet",mode:"spreadsheet",alias:["excel","formula"]},{name:"SQL",mime:"text/x-sql",mode:"sql",ext:["sql"]},{name:"Squirrel",mime:"text/x-squirrel",mode:"clike",ext:["nut"]},{name:"Swift",mime:"text/x-swift",mode:"swift",ext:["swift"]},{name:"sTeX",mime:"text/x-stex",mode:"stex"},{name:"LaTeX",mime:"text/x-latex",mode:"stex",ext:["text","ltx"],alias:["tex"]},{name:"SystemVerilog",mime:"text/x-systemverilog",mode:"verilog",ext:["v"]},{name:"Tcl",mime:"text/x-tcl",mode:"tcl",ext:["tcl"]},{name:"Textile",mime:"text/x-textile",mode:"textile",ext:["textile"]},{name:"TiddlyWiki ",mime:"text/x-tiddlywiki",mode:"tiddlywiki"},{name:"Tiki wiki",mime:"text/tiki",mode:"tiki"},{name:"TOML",mime:"text/x-toml",mode:"toml",ext:["toml"]},{name:"Tornado",mime:"text/x-tornado",mode:"tornado"},{name:"troff",mime:"text/troff",mode:"troff",ext:["1","2","3","4","5","6","7","8","9"]},{name:"TTCN",mime:"text/x-ttcn",mode:"ttcn",ext:["ttcn","ttcn3","ttcnpp"]},{name:"TTCN_CFG",mime:"text/x-ttcn-cfg",mode:"ttcn-cfg",ext:["cfg"]},{name:"Turtle",mime:"text/turtle",mode:"turtle",ext:["ttl"]},{name:"TypeScript",mime:"application/typescript",mode:"javascript",ext:["ts"],alias:["ts"]},{name:"Twig",mime:"text/x-twig",mode:"twig"},{name:"Web IDL",mime:"text/x-webidl",mode:"webidl",ext:["webidl"]},{name:"VB.NET",mime:"text/x-vb",mode:"vb",ext:["vb"]},{name:"VBScript",mime:"text/vbscript",mode:"vbscript",ext:["vbs"]},{name:"Velocity",mime:"text/velocity",mode:"velocity",ext:["vtl"]},{name:"Verilog",mime:"text/x-verilog",mode:"verilog",ext:["v"]},{name:"VHDL",mime:"text/x-vhdl",mode:"vhdl",ext:["vhd","vhdl"]},{name:"XML",mimes:["application/xml","text/xml"],mode:"xml",ext:["xml","xsl","xsd"],alias:["rss","wsdl","xsd"]},{name:"XQuery",mime:"application/xquery",mode:"xquery",ext:["xy","xquery"]},{name:"Yacas",mime:"text/x-yacas",mode:"yacas",ext:["ys"]},{name:"YAML",mime:"text/x-yaml",mode:"yaml",ext:["yaml","yml"],alias:["yml"]},{name:"Z80",mime:"text/x-z80",mode:"z80",ext:["z80"]},{name:"mscgen",mime:"text/x-mscgen",mode:"mscgen",ext:["mscgen","mscin","msc"]},{name:"xu",mime:"text/x-xu",mode:"mscgen",ext:["xu"]},{name:"msgenny",mime:"text/x-msgenny",mode:"mscgen",ext:["msgenny"]}];for(var t=0;t<e.modeInfo.length;t++){var n=e.modeInfo[t];n.mimes&&(n.mime=n.mimes[0])}e.findModeByMIME=function(t){t=t.toLowerCase();for(var n=0;n<e.modeInfo.length;n++){var r=e.modeInfo[n];if(r.mime==t)return r;if(r.mimes)for(var i=0;i<r.mimes.length;i++)if(r.mimes[i]==t)return r}},e.findModeByExtension=function(t){for(var n=0;n<e.modeInfo.length;n++){var r=e.modeInfo[n];if(r.ext)for(var i=0;i<r.ext.length;i++)if(r.ext[i]==t)return r}},e.findModeByFileName=function(t){for(var n=0;n<e.modeInfo.length;n++){var r=e.modeInfo[n];if(r.file&&r.file.test(t))return r}var i=t.lastIndexOf("."),s=i>-1&&t.substring(i+1,t.length);if(s)return e.findModeByExtension(s)},e.findModeByName=function(t){t=t.toLowerCase();for(var n=0;n<e.modeInfo.length;n++){var r=e.modeInfo[n];if(r.name.toLowerCase()==t)return r;if(r.alias)for(var i=0;i<r.alias.length;i++)if(r.alias[i].toLowerCase()==t)return r}}}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror"),require("../xml/xml"),require("../meta")):typeof define=="function"&&define.amd?define("cm/mode/markdown/markdown",["../../lib/codemirror","../xml/xml","../meta"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("markdown",function(t,n){function s(n){if(e.findModeByName){var r=e.findModeByName(n);r&&(n=r.mime||r.mimes[0])}var i=e.getMode(t,n);return i.name=="null"?null:i}function m(e,t,n){return t.f=t.inline=n,n(e,t)}function g(e,t,n){return t.f=t.block=n,n(e,t)}function y(e){return!e||!/\S/.test(e.string)}function b(e){return e.linkTitle=!1,e.em=!1,e.strong=!1,e.strikethrough=!1,e.quote=0,e.indentedCode=!1,i&&e.f==E&&(e.f=C,e.block=w),e.trailingSpace=0,e.trailingSpaceNewLine=!1,e.prevLine=e.thisLine,e.thisLine=null,null}function w(t,r){var i=t.sol(),u=r.list!==!1,d=r.indentedCode;r.indentedCode=!1,u&&(r.indentationDiff>=0?(r.indentationDiff<4&&(r.indentation-=r.indentationDiff),r.list=null):r.indentation>0?r.list=null:r.list=!1);var g=null;if(r.indentationDiff>=4)return t.skipToEnd(),d||y(r.prevLine)?(r.indentation-=4,r.indentedCode=!0,o.code):null;if(t.eatSpace())return null;if((g=t.match(h))&&g[1].length<=6)return r.header=g[1].length,n.highlightFormatting&&(r.formatting="header"),r.f=r.inline,T(r);if(!y(r.prevLine)&&!r.quote&&!u&&!d&&(g=t.match(p)))return r.header=g[0].charAt(0)=="="?1:2,n.highlightFormatting&&(r.formatting="header"),r.f=r.inline,T(r);if(t.eat(">"))return r.quote=i?1:r.quote+1,n.highlightFormatting&&(r.formatting="quote"),t.eatSpace(),T(r);if(t.peek()==="[")return m(t,r,M);if(t.match(a,!0))return r.hr=!0,o.hr;if((y(r.prevLine)||u)&&(t.match(f,!1)||t.match(l,!1))){var b=null;t.match(f,!0)?b="ul":(t.match(l,!0),b="ol"),r.indentation=t.column()+t.current().length,r.list=!0;while(r.listStack&&t.column()<r.listStack[r.listStack.length-1])r.listStack.pop();return r.listStack.push(r.indentation),n.taskLists&&t.match(c,!1)&&(r.taskList=!0),r.f=r.inline,n.highlightFormatting&&(r.formatting=["list","list-"+b]),T(r)}return n.fencedCodeBlocks&&(g=t.match(v,!0))?(r.fencedChars=g[1],r.localMode=s(g[2]),r.localMode&&(r.localState=e.startState(r.localMode)),r.f=r.block=S,n.highlightFormatting&&(r.formatting="code-block"),r.code=-1,T(r)):m(t,r,r.inline)}function E(t,n){var s=r.token(t,n.htmlState);if(!i){var o=e.innerMode(r,n.htmlState);if(o.mode.name=="xml"&&o.state.tagStart===null&&!o.state.context&&o.state.tokenize.isInText||n.md_inside&&t.current().indexOf(">")>-1)n.f=C,n.block=w,n.htmlState=null}return s}function S(e,t){return t.fencedChars&&e.match(t.fencedChars,!1)?(t.localMode=t.localState=null,t.f=t.block=x,null):t.localMode?t.localMode.token(e,t.localState):(e.skipToEnd(),o.code)}function x(e,t){e.match(t.fencedChars),t.block=w,t.f=C,t.fencedChars=null,n.highlightFormatting&&(t.formatting="code-block"),t.code=1;var r=T(t);return t.code=0,r}function T(e){var t=[];if(e.formatting){t.push(o.formatting),typeof e.formatting=="string"&&(e.formatting=[e.formatting]);for(var r=0;r<e.formatting.length;r++)t.push(o.formatting+"-"+e.formatting[r]),e.formatting[r]==="header"&&t.push(o.formatting+"-"+e.formatting[r]+"-"+e.header),e.formatting[r]==="quote"&&(!n.maxBlockquoteDepth||n.maxBlockquoteDepth>=e.quote?t.push(o.formatting+"-"+e.formatting[r]+"-"+e.quote):t.push("error"))}if(e.taskOpen)return t.push("meta"),t.length?t.join(" "):null;if(e.taskClosed)return t.push("property"),t.length?t.join(" "):null;e.linkHref?t.push(o.linkHref,"url"):(e.strong&&t.push(o.strong),e.em&&t.push(o.em),e.strikethrough&&t.push(o.strikethrough),e.linkText&&t.push(o.linkText),e.code&&t.push(o.code)),e.header&&t.push(o.header,o.header+"-"+e.header),e.quote&&(t.push(o.quote),!n.maxBlockquoteDepth||n.maxBlockquoteDepth>=e.quote?t.push(o.quote+"-"+e.quote):t.push(o.quote+"-"+n.maxBlockquoteDepth));if(e.list!==!1){var i=(e.listStack.length-1)%3;i?i===1?t.push(o.list2):t.push(o.list3):t.push(o.list1)}return e.trailingSpaceNewLine?t.push("trailing-space-new-line"):e.trailingSpace&&t.push("trailing-space-"+(e.trailingSpace%2?"a":"b")),t.length?t.join(" "):null}function N(e,t){return e.match(d,!0)?T(t):undefined}function C(t,i){var s=i.text(t,i);if(typeof s!="undefined")return s;if(i.list)return i.list=null,T(i);if(i.taskList){var u=t.match(c,!0)[1]!=="x";return u?i.taskOpen=!0:i.taskClosed=!0,n.highlightFormatting&&(i.formatting="task"),i.taskList=!1,T(i)}i.taskOpen=!1,i.taskClosed=!1;if(i.header&&t.match(/^#+$/,!0))return n.highlightFormatting&&(i.formatting="header"),T(i);var a=t.sol(),f=t.next();if(i.linkTitle){i.linkTitle=!1;var l=f;f==="("&&(l=")"),l=(l+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1");var h="^\\s*(?:[^"+l+"\\\\]+|\\\\\\\\|\\\\.)"+l;if(t.match(new RegExp(h),!0))return o.linkHref}if(f==="`"){var p=i.formatting;n.highlightFormatting&&(i.formatting="code"),t.eatWhile("`");var d=t.current().length;if(i.code==0)return i.code=d,T(i);if(d==i.code){var v=T(i);return i.code=0,v}return i.formatting=p,T(i)}if(i.code)return T(i);if(f==="\\"){t.next();if(n.highlightFormatting){var m=T(i),y=o.formatting+"-escape";return m?m+" "+y:y}}if(f==="!"&&t.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return t.match(/\[[^\]]*\]/),i.inline=i.f=L,o.image;if(f==="["&&t.match(/[^\]]*\](\(.*\)| ?\[.*?\])/,!1))return i.linkText=!0,n.highlightFormatting&&(i.formatting="link"),T(i);if(f==="]"&&i.linkText&&t.match(/\(.*?\)| ?\[.*?\]/,!1)){n.highlightFormatting&&(i.formatting="link");var m=T(i);return i.linkText=!1,i.inline=i.f=L,m}if(f==="<"&&t.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1)){i.f=i.inline=k,n.highlightFormatting&&(i.formatting="link");var m=T(i);return m?m+=" ":m="",m+o.linkInline}if(f==="<"&&t.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1)){i.f=i.inline=k,n.highlightFormatting&&(i.formatting="link");var m=T(i);return m?m+=" ":m="",m+o.linkEmail}if(f==="<"&&t.match(/^(!--|\w)/,!1)){var b=t.string.indexOf(">",t.pos);if(b!=-1){var w=t.string.substring(t.start,b);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(w)&&(i.md_inside=!0)}return t.backUp(1),i.htmlState=e.startState(r),g(t,i,E)}if(f==="<"&&t.match(/^\/\w*?>/))return i.md_inside=!1,"tag";var S=!1;if(!n.underscoresBreakWords&&f==="_"&&t.peek()!=="_"&&t.match(/(\w)/,!1)){var x=t.pos-2;if(x>=0){var N=t.string.charAt(x);N!=="_"&&N.match(/(\w)/,!1)&&(S=!0)}}if(f==="*"||f==="_"&&!S){if(!a||t.peek()!==" "){if(i.strong===f&&t.eat(f)){n.highlightFormatting&&(i.formatting="strong");var v=T(i);return i.strong=!1,v}if(!i.strong&&t.eat(f))return i.strong=f,n.highlightFormatting&&(i.formatting="strong"),T(i);if(i.em===f){n.highlightFormatting&&(i.formatting="em");var v=T(i);return i.em=!1,v}if(!i.em)return i.em=f,n.highlightFormatting&&(i.formatting="em"),T(i)}}else if(f===" ")if(t.eat("*")||t.eat("_")){if(t.peek()===" ")return T(i);t.backUp(1)}if(n.strikethrough)if(f==="~"&&t.eatWhile(f)){if(i.strikethrough){n.highlightFormatting&&(i.formatting="strikethrough");var v=T(i);return i.strikethrough=!1,v}if(t.match(/^[^\s]/,!1))return i.strikethrough=!0,n.highlightFormatting&&(i.formatting="strikethrough"),T(i)}else if(f===" "&&t.match(/^~~/,!0)){if(t.peek()===" ")return T(i);t.backUp(2)}return f===" "&&(t.match(/ +$/,!1)?i.trailingSpace++:i.trailingSpace&&(i.trailingSpaceNewLine=!0)),T(i)}function k(e,t){var r=e.next();if(r===">"){t.f=t.inline=C,n.highlightFormatting&&(t.formatting="link");var i=T(t);return i?i+=" ":i="",i+o.linkInline}return e.match(/^[^>]+/,!0),o.linkInline}function L(e,t){if(e.eatSpace())return null;var r=e.next();return r==="("||r==="["?(t.f=t.inline=O(r==="("?")":"]",0),n.highlightFormatting&&(t.formatting="link-string"),t.linkHref=!0,T(t)):"error"}function O(e){return function(t,r){var i=t.next();if(i===e){r.f=r.inline=C,n.highlightFormatting&&(r.formatting="link-string");var s=T(r);return r.linkHref=!1,s}return t.match(A[e]),r.linkHref=!0,T(r)}}function M(e,t){return e.match(/^([^\]\\]|\\.)*\]:/,!1)?(t.f=_,e.next(),n.highlightFormatting&&(t.formatting="link"),t.linkText=!0,T(t)):m(e,t,C)}function _(e,t){if(e.match(/^\]:/,!0)){t.f=t.inline=D,n.highlightFormatting&&(t.formatting="link");var r=T(t);return t.linkText=!1,r}return e.match(/^([^\]\\]|\\.)+/,!0),o.linkText}function D(e,t){return e.eatSpace()?null:(e.match(/^[^\s]+/,!0),e.peek()===undefined?t.linkTitle=!0:e.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),t.f=t.inline=C,o.linkHref+" url")}var r=e.getMode(t,"text/html"),i=r.name=="null";n.highlightFormatting===undefined&&(n.highlightFormatting=!1),n.maxBlockquoteDepth===undefined&&(n.maxBlockquoteDepth=0),n.underscoresBreakWords===undefined&&(n.underscoresBreakWords=!0),n.taskLists===undefined&&(n.taskLists=!1),n.strikethrough===undefined&&(n.strikethrough=!1),n.tokenTypeOverrides===undefined&&(n.tokenTypeOverrides={});var o={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"tag",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough"};for(var u in o)o.hasOwnProperty(u)&&n.tokenTypeOverrides[u]&&(o[u]=n.tokenTypeOverrides[u]);var a=/^([*\-_])(?:\s*\1){2,}\s*$/,f=/^[*\-+]\s+/,l=/^[0-9]+([.)])\s+/,c=/^\[(x| )\](?=\s)/,h=n.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,p=/^ *(?:\={1,}|-{1,})\s*$/,d=/^[^#!\[\]*_\\<>` "'(~]+/,v=new RegExp("^("+(n.fencedCodeBlocks===!0?"~~~+|```+":n.fencedCodeBlocks)+")[ \\t]*([\\w+#-]*)"),A={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\\]]|\\.)*\])*?(?=\])/},P={startState:function(){return{f:w,prevLine:null,thisLine:null,block:w,htmlState:null,indentation:0,inline:C,text:N,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,fencedChars:null}},copyState:function(t){return{f:t.f,prevLine:t.prevLine,thisLine:t.thisLine,block:t.block,htmlState:t.htmlState&&e.copyState(r,t.htmlState),indentation:t.indentation,localMode:t.localMode,localState:t.localMode?e.copyState(t.localMode,t.localState):null,inline:t.inline,text:t.text,formatting:!1,linkTitle:t.linkTitle,code:t.code,em:t.em,strong:t.strong,strikethrough:t.strikethrough,header:t.header,hr:t.hr,taskList:t.taskList,list:t.list,listStack:t.listStack.slice(0),quote:t.quote,indentedCode:t.indentedCode,trailingSpace:t.trailingSpace,trailingSpaceNewLine:t.trailingSpaceNewLine,md_inside:t.md_inside,fencedChars:t.fencedChars}},token:function(e,t){t.formatting=!1;if(e!=t.thisLine){var n=t.header||t.hr;t.header=0,t.hr=!1;if(e.match(/^\s*$/,!0)||n){b(t);if(!n)return null;t.prevLine=null}t.prevLine=t.thisLine,t.thisLine=e,t.taskList=!1,t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.f=t.block;var r=e.match(/^\s*/,!0)[0].replace(/\t/g," ").length;t.indentationDiff=Math.min(r-t.indentation,4),t.indentation=t.indentation+t.indentationDiff;if(r>0)return null}return t.f(e,t)},innerMode:function(e){return e.block==E?{state:e.htmlState,mode:r}:e.localState?{state:e.localState,mode:e.localMode}:{state:e,mode:P}},blankLine:b,getType:T,fold:"markdown"};return P},"xml"),e.defineMIME("text/x-markdown","markdown")}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/addon/edit/matchbrackets",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){function i(e,t,i,o){var u=e.getLineHandle(t.line),a=t.ch-1,f=a>=0&&r[u.text.charAt(a)]||r[u.text.charAt(++a)];if(!f)return null;var l=f.charAt(1)==">"?1:-1;if(i&&l>0!=(a==t.ch))return null;var c=e.getTokenTypeAt(n(t.line,a+1)),h=s(e,n(t.line,a+(l>0?1:0)),l,c||null,o);return h==null?null:{from:n(t.line,a),to:h&&h.pos,match:h&&h.ch==f.charAt(0),forward:l>0}}function s(e,t,i,s,o){var u=o&&o.maxScanLineLength||1e4,a=o&&o.maxScanLines||1e3,f=[],l=o&&o.bracketRegex?o.bracketRegex:/[(){}[\]]/,c=i>0?Math.min(t.line+a,e.lastLine()+1):Math.max(e.firstLine()-1,t.line-a);for(var h=t.line;h!=c;h+=i){var p=e.getLine(h);if(!p)continue;var d=i>0?0:p.length-1,v=i>0?p.length:-1;if(p.length>u)continue;h==t.line&&(d=t.ch-(i<0?1:0));for(;d!=v;d+=i){var m=p.charAt(d);if(l.test(m)&&(s===undefined||e.getTokenTypeAt(n(h,d+1))==s)){var g=r[m];if(g.charAt(1)==">"==i>0)f.push(m);else{if(!f.length)return{pos:n(h,d),ch:m};f.pop()}}}}return h-i==(i>0?e.lastLine():e.firstLine())?!1:null}function o(e,r,s){var o=e.state.matchBrackets.maxHighlightLineLength||1e3,u=[],a=e.listSelections();for(var f=0;f<a.length;f++){var l=a[f].empty()&&i(e,a[f].head,!1,s);if(l&&e.getLine(l.from.line).length<=o){var c=l.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";u.push(e.markText(l.from,n(l.from.line,l.from.ch+1),{className:c})),l.to&&e.getLine(l.to.line).length<=o&&u.push(e.markText(l.to,n(l.to.line,l.to.ch+1),{className:c}))}}if(u.length){t&&e.state.focused&&e.focus();var h=function(){e.operation(function(){for(var e=0;e<u.length;e++)u[e].clear()})};if(!r)return h;setTimeout(h,800)}}function a(e){e.operation(function(){u&&(u(),u=null),u=o(e,!1,e.state.matchBrackets)})}var t=/MSIE \d/.test(navigator.userAgent)&&(document.documentMode==null||document.documentMode<8),n=e.Pos,r={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},u=null;e.defineOption("matchBrackets",!1,function(t,n,r){r&&r!=e.Init&&t.off("cursorActivity",a),n&&(t.state.matchBrackets=typeof n=="object"?n:{},t.on("cursorActivity",a))}),e.defineExtension("matchBrackets",function(){o(this,!0)}),e.defineExtension("findMatchingBracket",function(e,t,n){return i(this,e,t,n)}),e.defineExtension("scanForBracket",function(e,t,n,r){return s(this,e,t,n,r)})}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/addon/comment/continuecomment",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){function r(t){if(t.getOption("disableInput"))return e.Pass;var n=t.listSelections(),r,s=[];for(var o=0;o<n.length;o++){var u=n[o].head,a=t.getTokenAt(u);if(a.type!="comment")return e.Pass;var f=e.innerMode(t.getMode(),a.state).mode;if(!r)r=f;else if(r!=f)return e.Pass;var l=null;if(r.blockCommentStart&&r.blockCommentContinue){var c=a.string.indexOf(r.blockCommentEnd),h=t.getRange(e.Pos(u.line,0),e.Pos(u.line,a.end)),p;if(!(c!=-1&&c==a.string.length-r.blockCommentEnd.length&&u.ch>=c))if(a.string.indexOf(r.blockCommentStart)==0){l=h.slice(0,a.start);if(!/^\s*$/.test(l)){l="";for(var d=0;d<a.start;++d)l+=" "}}else(p=h.indexOf(r.blockCommentContinue))!=-1&&p+r.blockCommentContinue.length>a.start&&/^\s*$/.test(h.slice(0,p))&&(l=h.slice(0,p));l!=null&&(l+=r.blockCommentContinue)}if(l==null&&r.lineComment&&i(t)){var v=t.getLine(u.line),p=v.indexOf(r.lineComment);p>-1&&(l=v.slice(0,p),/\S/.test(l)?l=null:l+=r.lineComment+v.slice(p+r.lineComment.length).match(/^\s*/)[0])}if(l==null)return e.Pass;s[o]="\n"+l}t.operation(function(){for(var e=n.length-1;e>=0;e--)t.replaceRange(s[e],n[e].from(),n[e].to(),"+insert")})}function i(e){var t=e.getOption("continueComments");return t&&typeof t=="object"?t.continueLineComment!==!1:!0}var t=["clike","css","javascript"];for(var n=0;n<t.length;++n)e.extendMode(t[n],{blockCommentContinue:" * "});e.defineOption("continueComments",null,function(t,n,i){i&&i!=e.Init&&t.removeKeyMap("continueComment");if(n){var s="Enter";typeof n=="string"?s=n:typeof n=="object"&&n.key&&(s=n.key);var o={name:"continueComment"};o[s]=r,t.addKeyMap(o)}})}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/addon/comment/comment",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";function i(e){var t=e.search(n);return t==-1?0:t}function s(e,t,n){return/\bstring\b/.test(e.getTokenTypeAt(r(t.line,0)))&&!/^[\'\"`]/.test(n)}var t={},n=/[^\s\u00a0]/,r=e.Pos;e.commands.toggleComment=function(e){e.toggleComment()},e.defineExtension("toggleComment",function(e){e||(e=t);var n=this,i=Infinity,s=this.listSelections(),o=null;for(var u=s.length-1;u>=0;u--){var a=s[u].from(),f=s[u].to();if(a.line>=i)continue;f.line>=i&&(f=r(i,0)),i=a.line,o==null?n.uncomment(a,f,e)?o="un":(n.lineComment(a,f,e),o="line"):o=="un"?n.uncomment(a,f,e):n.lineComment(a,f,e)}}),e.defineExtension("lineComment",function(e,o,u){u||(u=t);var a=this,f=a.getModeAt(e),l=a.getLine(e.line);if(l==null||s(a,e,l))return;var c=u.lineComment||f.lineComment;if(!c){if(u.blockCommentStart||f.blockCommentStart)u.fullLines=!0,a.blockComment(e,o,u);return}var h=Math.min(o.ch!=0||o.line==e.line?o.line+1:o.line,a.lastLine()+1),p=u.padding==null?" ":u.padding,d=u.commentBlankLines||e.line==o.line;a.operation(function(){if(u.indent){var t=null;for(var s=e.line;s<h;++s){var o=a.getLine(s),f=o.slice(0,i(o));if(t==null||t.length>f.length)t=f}for(var s=e.line;s<h;++s){var o=a.getLine(s),l=t.length;if(!d&&!n.test(o))continue;o.slice(0,l)!=t&&(l=i(o)),a.replaceRange(t+c+p,r(s,0),r(s,l))}}else for(var s=e.line;s<h;++s)(d||n.test(a.getLine(s)))&&a.replaceRange(c+p,r(s,0))})}),e.defineExtension("blockComment",function(e,i,s){s||(s=t);var o=this,u=o.getModeAt(e),a=s.blockCommentStart||u.blockCommentStart,f=s.blockCommentEnd||u.blockCommentEnd;if(!a||!f){(s.lineComment||u.lineComment)&&s.fullLines!=0&&o.lineComment(e,i,s);return}var l=Math.min(i.line,o.lastLine());l!=e.line&&i.ch==0&&n.test(o.getLine(l))&&--l;var c=s.padding==null?" ":s.padding;if(e.line>l)return;o.operation(function(){if(s.fullLines!=0){var t=n.test(o.getLine(l));o.replaceRange(c+f,r(l)),o.replaceRange(a+c,r(e.line,0));var h=s.blockCommentLead||u.blockCommentLead;if(h!=null)for(var p=e.line+1;p<=l;++p)(p!=l||t)&&o.replaceRange(h+c,r(p,0))}else o.replaceRange(f,i),o.replaceRange(a,e)})}),e.defineExtension("uncomment",function(e,i,s){s||(s=t);var o=this,u=o.getModeAt(e),a=Math.min(i.ch!=0||i.line==e.line?i.line:i.line-1,o.lastLine()),f=Math.min(e.line,a),l=s.lineComment||u.lineComment,c=[],h=s.padding==null?" ":s.padding,p;e:{if(!l)break e;for(var d=f;d<=a;++d){var v=o.getLine(d),m=v.indexOf(l);m>-1&&!/comment/.test(o.getTokenTypeAt(r(d,m+1)))&&(m=-1);if(!(m!=-1||d==a&&d!=f||!n.test(v)))break e;if(m>-1&&n.test(v.slice(0,m)))break e;c.push(v)}o.operation(function(){for(var e=f;e<=a;++e){var t=c[e-f],n=t.indexOf(l),i=n+l.length;if(n<0)continue;t.slice(i,i+h.length)==h&&(i+=h.length),p=!0,o.replaceRange("",r(e,n),r(e,i))}});if(p)return!0}var g=s.blockCommentStart||u.blockCommentStart,y=s.blockCommentEnd||u.blockCommentEnd;if(!g||!y)return!1;var b=s.blockCommentLead||u.blockCommentLead,w=o.getLine(f),E=a==f?w:o.getLine(a),S=w.indexOf(g),x=E.lastIndexOf(y);x==-1&&f!=a&&(E=o.getLine(--a),x=E.lastIndexOf(y));if(S==-1||x==-1||!/comment/.test(o.getTokenTypeAt(r(f,S+1)))||!/comment/.test(o.getTokenTypeAt(r(a,x+1))))return!1;var T=w.lastIndexOf(g,e.ch),N=T==-1?-1:w.slice(0,e.ch).indexOf(y,T+g.length);if(T!=-1&&N!=-1&&N+y.length!=e.ch)return!1;N=E.indexOf(y,i.ch);var C=E.slice(i.ch).lastIndexOf(g,N-i.ch);return T=N==-1||C==-1?-1:i.ch+C,N!=-1&&T!=-1&&T!=i.ch?!1:(o.operation(function(){o.replaceRange("",r(a,x-(h&&E.slice(x-h.length,x)==h?h.length:0)),r(a,x+y.length));var e=S+g.length;h&&w.slice(e,e+h.length)==h&&(e+=h.length),o.replaceRange("",r(f,S),r(f,e));if(b)for(var t=f+1;t<=a;++t){var i=o.getLine(t),s=i.indexOf(b);if(s==-1||n.test(i.slice(0,s)))continue;var u=s+b.length;h&&i.slice(u,u+h.length)==h&&(u+=h.length),o.replaceRange("",r(t,s),r(t,u))}}),!0)})}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/addon/hint/show-hint",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";function r(e,t){this.cm=e,this.options=t,this.widget=null,this.debounce=0,this.tick=0,this.startPos=this.cm.getCursor("start"),this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var n=this;e.on("cursorActivity",this.activityFunc=function(){n.cursorActivity()})}function o(t,n){var r=e.cmpPos(n.from,t.from);return r>0&&t.to.ch-t.from.ch!=n.to.ch-n.from.ch}function u(e,t,n){var r=e.options.hintOptions,i={};for(var s in v)i[s]=v[s];if(r)for(var s in r)r[s]!==undefined&&(i[s]=r[s]);if(n)for(var s in n)n[s]!==undefined&&(i[s]=n[s]);return i.hint.resolve&&(i.hint=i.hint.resolve(e,t)),i}function a(e){return typeof e=="string"?e:e.text}function f(e,t){function s(e,r){var s;typeof r!="string"?s=function(e){return r(e,t)}:n.hasOwnProperty(r)?s=n[r]:s=r,i[e]=s}var n={Up:function(){t.moveFocus(-1)},Down:function(){t.moveFocus(1)},PageUp:function(){t.moveFocus(-t.menuSize()+1,!0)},PageDown:function(){t.moveFocus(t.menuSize()-1,!0)},Home:function(){t.setFocus(0)},End:function(){t.setFocus(t.length-1)},Enter:t.pick,Tab:t.pick,Esc:t.close},r=e.options.customKeys,i=r?{}:n;if(r)for(var o in r)r.hasOwnProperty(o)&&s(o,r[o]);var u=e.options.extraKeys;if(u)for(var o in u)u.hasOwnProperty(o)&&s(o,u[o]);return i}function l(e,t){while(t&&t!=e){if(t.nodeName.toUpperCase()==="LI"&&t.parentNode==e)return t;t=t.parentNode}}function c(r,i){this.completion=r,this.data=i,this.picked=!1;var s=this,o=r.cm,u=this.hints=document.createElement("ul");u.className="CodeMirror-hints",this.selectedHint=i.selectedHint||0;var c=i.list;for(var h=0;h<c.length;++h){var p=u.appendChild(document.createElement("li")),d=c[h],v=t+(h!=this.selectedHint?"":" "+n);d.className!=null&&(v=d.className+" "+v),p.className=v,d.render?d.render(p,i,d):p.appendChild(document.createTextNode(d.displayText||a(d))),p.hintId=h}var m=o.cursorCoords(r.options.alignWithWord?i.from:null),g=m.left,y=m.bottom,b=!0;u.style.left=g+"px",u.style.top=y+"px";var w=window.innerWidth||Math.max(document.body.offsetWidth,document.documentElement.offsetWidth),E=window.innerHeight||Math.max(document.body.offsetHeight,document.documentElement.offsetHeight);(r.options.container||document.body).appendChild(u);var S=u.getBoundingClientRect(),x=S.bottom-E,T=u.scrollHeight>u.clientHeight+1;if(x>0){var N=S.bottom-S.top,C=m.top-(m.bottom-S.top);if(C-N>0)u.style.top=(y=m.top-N)+"px",b=!1;else if(N>E){u.style.height=E-5+"px",u.style.top=(y=m.bottom-S.top)+"px";var k=o.getCursor();i.from.ch!=k.ch&&(m=o.cursorCoords(k),u.style.left=(g=m.left)+"px",S=u.getBoundingClientRect())}}var L=S.right-w;L>0&&(S.right-S.left>w&&(u.style.width=w-5+"px",L-=S.right-S.left-w),u.style.left=(g=m.left-L)+"px");if(T)for(var A=u.firstChild;A;A=A.nextSibling)A.style.paddingRight=o.display.nativeBarWidth+"px";o.addKeyMap(this.keyMap=f(r,{moveFocus:function(e,t){s.changeActive(s.selectedHint+e,t)},setFocus:function(e){s.changeActive(e)},menuSize:function(){return s.screenAmount()},length:c.length,close:function(){r.close()},pick:function(){s.pick()},data:i}));if(r.options.closeOnUnfocus){var O;o.on("blur",this.onBlur=function(){O=setTimeout(function(){r.close()},100)}),o.on("focus",this.onFocus=function(){clearTimeout(O)})}var M=o.getScrollInfo();return o.on("scroll",this.onScroll=function(){var e=o.getScrollInfo(),t=o.getWrapperElement().getBoundingClientRect(),n=y+M.top-e.top,i=n-(window.pageYOffset||(document.documentElement||document.body).scrollTop);b||(i+=u.offsetHeight);if(i<=t.top||i>=t.bottom)return r.close();u.style.top=n+"px",u.style.left=g+M.left-e.left+"px"}),e.on(u,"dblclick",function(e){var t=l(u,e.target||e.srcElement);t&&t.hintId!=null&&(s.changeActive(t.hintId),s.pick())}),e.on(u,"click",function(e){var t=l(u,e.target||e.srcElement);t&&t.hintId!=null&&(s.changeActive(t.hintId),r.options.completeOnSingleClick&&s.pick())}),e.on(u,"mousedown",function(){setTimeout(function(){o.focus()},20)}),e.signal(i,"select",c[0],u.firstChild),!0}function h(e,t){if(!e.somethingSelected())return t;var n=[];for(var r=0;r<t.length;r++)t[r].supportsSelection&&n.push(t[r]);return n}function p(e,t,n,r){if(e.async)e(t,r,n);else{var i=e(t,n);i&&i.then?i.then(r):r(i)}}function d(t,n){var r=t.getHelpers(n,"hint"),i;if(r.length){var s=function(e,t,n){function s(r){if(r==i.length)return t(null);p(i[r],e,n,function(e){e&&e.list.length>0?t(e):s(r+1)})}var i=h(e,r);s(0)};return s.async=!0,s.supportsSelection=!0,s}return(i=t.getHelper(t.getCursor(),"hintWords"))?function(t){return e.hint.fromList(t,{words:i})}:e.hint.anyword?function(t,n){return e.hint.anyword(t,n)}:function(){}}var t="CodeMirror-hint",n="CodeMirror-hint-active";e.showHint=function(e,t,n){if(!t)return e.showHint(n);n&&n.async&&(t.async=!0);var r={hint:t};if(n)for(var i in n)r[i]=n[i];return e.showHint(r)},e.defineExtension("showHint",function(t){t=u(this,this.getCursor("start"),t);var n=this.listSelections();if(n.length>1)return;if(this.somethingSelected()){if(!t.hint.supportsSelection)return;for(var i=0;i<n.length;i++)if(n[i].head.line!=n[i].anchor.line)return}this.state.completionActive&&this.state.completionActive.close();var s=this.state.completionActive=new r(this,t);if(!s.options.hint)return;e.signal(this,"startCompletion",this),s.update(!0)});var i=window.requestAnimationFrame||function(e){return setTimeout(e,1e3/60)},s=window.cancelAnimationFrame||clearTimeout;r.prototype={close:function(){if(!this.active())return;this.cm.state.completionActive=null,this.tick=null,this.cm.off("cursorActivity",this.activityFunc),this.widget&&this.data&&e.signal(this.data,"close"),this.widget&&this.widget.close(),e.signal(this.cm,"endCompletion",this.cm)},active:function(){return this.cm.state.completionActive==this},pick:function(t,n){var r=t.list[n];r.hint?r.hint(this.cm,t,r):this.cm.replaceRange(a(r),r.from||t.from,r.to||t.to,"complete"),e.signal(t,"pick",r),this.close()},cursorActivity:function(){this.debounce&&(s(this.debounce),this.debounce=0);var e=this.cm.getCursor(),t=this.cm.getLine(e.line);if(e.line!=this.startPos.line||t.length-e.ch!=this.startLen-this.startPos.ch||e.ch<this.startPos.ch||this.cm.somethingSelected()||e.ch&&this.options.closeCharacters.test(t.charAt(e.ch-1)))this.close();else{var n=this;this.debounce=i(function(){n.update()}),this.widget&&this.widget.disable()}},update:function(e){if(this.tick==null)return;var t=this,n=++this.tick;p(this.options.hint,this.cm,this.options,function(r){t.tick==n&&t.finishUpdate(r,e)})},finishUpdate:function(t,n){this.data&&e.signal(this.data,"update");var r=this.widget&&this.widget.picked||n&&this.options.completeSingle;this.widget&&this.widget.close();if(t&&this.data&&o(this.data,t))return;this.data=t,t&&t.list.length&&(r&&t.list.length==1?this.pick(t,0):(this.widget=new c(this,t),e.signal(t,"shown")))}},c.prototype={close:function(){if(this.completion.widget!=this)return;this.completion.widget=null,this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var e=this.completion.cm;this.completion.options.closeOnUnfocus&&(e.off("blur",this.onBlur),e.off("focus",this.onFocus)),e.off("scroll",this.onScroll)},disable:function(){this.completion.cm.removeKeyMap(this.keyMap);var e=this;this.keyMap={Enter:function(){e.picked=!0}},this.completion.cm.addKeyMap(this.keyMap)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(t,r){t>=this.data.list.length?t=r?this.data.list.length-1:0:t<0&&(t=r?0:this.data.list.length-1);if(this.selectedHint==t)return;var i=this.hints.childNodes[this.selectedHint];i.className=i.className.replace(" "+n,""),i=this.hints.childNodes[this.selectedHint=t],i.className+=" "+n,i.offsetTop<this.hints.scrollTop?this.hints.scrollTop=i.offsetTop-3:i.offsetTop+i.offsetHeight>this.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=i.offsetTop+i.offsetHeight-this.hints.clientHeight+3),e.signal(this.data,"select",this.data.list[this.selectedHint],i)},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},e.registerHelper("hint","auto",{resolve:d}),e.registerHelper("hint","fromList",function(t,n){var r=t.getCursor(),i=t.getTokenAt(r),s=e.Pos(r.line,i.end);if(i.string&&/\w/.test(i.string[i.string.length-1]))var o=i.string,u=e.Pos(r.line,i.start);else var o="",u=s;var a=[];for(var f=0;f<n.words.length;f++){var l=n.words[f];l.slice(0,o.length)==o&&a.push(l)}if(a.length)return{list:a,from:u,to:s}}),e.commands.autocomplete=e.showHint;var v={hint:e.hint.auto,completeSingle:!0,alignWithWord:!0,closeCharacters:/[\s()\[\]{};:>,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};e.defineOption("hintOptions",null)}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/addon/hint/anyword-hint",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";var t=/[\w$]+/,n=500;e.registerHelper("hint","anyword",function(r,i){var s=i&&i.word||t,o=i&&i.range||n,u=r.getCursor(),a=r.getLine(u.line),f=u.ch,l=f;while(l&&s.test(a.charAt(l-1)))--l;var c=l!=f&&a.slice(l,f),h=i&&i.list||[],p={},d=new RegExp(s.source,"g");for(var v=-1;v<=1;v+=2){var m=u.line,g=Math.min(Math.max(m+v*o,r.firstLine()),r.lastLine())+v;for(;m!=g;m+=v){var y=r.getLine(m),b;while(b=d.exec(y)){if(m==u.line&&b[0]===c)continue;(!c||b[0].lastIndexOf(c,0)==0)&&!Object.prototype.hasOwnProperty.call(p,b[0])&&(p[b[0]]=!0,h.push(b[0]))}}}return{list:h,from:e.Pos(u.line,l),to:e.Pos(u.line,f)}})}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/addon/display/placeholder",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){function t(e){e.state.placeholder&&(e.state.placeholder.parentNode.removeChild(e.state.placeholder),e.state.placeholder=null)}function n(e){t(e);var n=e.state.placeholder=document.createElement("pre");n.style.cssText="height: 0; overflow: visible",n.className="CodeMirror-placeholder";var r=e.getOption("placeholder");typeof r=="string"&&(r=document.createTextNode(r)),n.appendChild(r),e.display.lineSpace.insertBefore(n,e.display.lineSpace.firstChild)}function r(e){s(e)&&n(e)}function i(e){var r=e.getWrapperElement(),i=s(e);r.className=r.className.replace(" CodeMirror-empty","")+(i?" CodeMirror-empty":""),i?n(e):t(e)}function s(e){return e.lineCount()===1&&e.getLine(0)===""}e.defineOption("placeholder","",function(n,s,o){var u=o&&o!=e.Init;if(s&&!u)n.on("blur",r),n.on("change",i),n.on("swapDoc",i),i(n);else if(!s&&u){n.off("blur",r),n.off("change",i),n.off("swapDoc",i),t(n);var a=n.getWrapperElement();a.className=a.className.replace(" CodeMirror-empty","")}s&&!n.hasFocus()&&r(n)})}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/addon/runmode/runmode",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.runMode=function(t,n,r,i){var s=e.getMode(e.defaults,n),o=/MSIE \d/.test(navigator.userAgent),u=o&&(document.documentMode==null||document.documentMode<9);if(r.appendChild){var a=i&&i.tabSize||e.defaults.tabSize,f=r,l=0;f.innerHTML="",r=function(e,t){if(e=="\n"){f.appendChild(document.createTextNode(u?"\r":e)),l=0;return}var n="";for(var r=0;;){var i=e.indexOf(" ",r);if(i==-1){n+=e.slice(r),l+=e.length-r;break}l+=i-r,n+=e.slice(r,i);var s=a-l%a;l+=s;for(var o=0;o<s;++o)n+=" ";r=i+1}if(t){var c=f.appendChild(document.createElement("span"));c.className="cm-"+t.replace(/ +/g," cm-"),c.appendChild(document.createTextNode(n))}else f.appendChild(document.createTextNode(n))}}var c=e.splitLines(t),h=i&&i.state||e.startState(s);for(var p=0,d=c.length;p<d;++p){p&&r("\n");var v=new e.StringStream(c[p]);!v.string&&s.blankLine&&s.blankLine(h);while(!v.eol()){var m=s.token(v,h);r(v.current(),m,p,v.start,h),v.start=v.pos}}}}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/addon/hover/text-hover",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";(function(){function n(t,n){function i(t){if(!r.parentNode)return e.off(document,"mousemove",i);r.style.top=Math.max(0,t.clientY-r.offsetHeight-5)+"px",r.style.left=t.clientX+5+"px"}var r=document.createElement("div");return r.className="CodeMirror-hover-tooltip",typeof n=="string"&&(n=document.createTextNode(n)),r.appendChild(n),document.body.appendChild(r),e.on(document,"mousemove",i),i(t),r.style.opacity!=null&&(r.style.opacity=1),r}function r(e){e.parentNode&&e.parentNode.removeChild(e)}function i(e){if(!e.parentNode)return;e.style.opacity==null&&r(e),e.style.opacity=0,setTimeout(function(){r(e)},600)}function s(r,s,o,u,a){function l(){e.off(o,"mouseout",l),e.off(o,"click",l),o.className=o.className.replace(t,""),f&&(i(f),f=null),a.removeKeyMap(u.keyMap)}var f=n(r,s),c=setInterval(function(){if(f)for(var e=o;;e=e.parentNode){if(e==document.body)return;if(!e){l();break}}if(!f)return clearInterval(c)},400);e.on(o,"mouseout",l),e.on(o,"click",l),u.keyMap={Esc:l},a.addKeyMap(u.keyMap)}function o(e,t){this.options=t,this.timeout=null,t.delay?this.onMouseOver=function(t){a(e,t)}:this.onMouseOver=function(t){f(e,t)},this.keyMap=null}function u(t,n){if(n instanceof Function)return{getTextHover:n};if(!n||n===!0)n={};n.getTextHover||(n.getTextHover=t.getHelper(e.Pos(0,0),"textHover"));if(!n.getTextHover)throw new Error("Required option 'getTextHover' missing (text-hover addon)");return n}function a(e,t){var n=e.state.textHover,r=n.options.delay;clearTimeout(n.timeout);if(t.srcElement){var i={srcElement:t.srcElement,clientX:t.clientX,clientY:t.clientY};t=i}n.timeout=setTimeout(function(){f(e,t)},r)}function f(e,n){var r=n.target||n.srcElement;if(r){var i=e.state.textHover,o=h(e,n),u=i.options.getTextHover(e,o,n);u&&(r.className+=t,typeof u=="function"?u(s,o,n,r,i,e):s(n,u,r,i,e))}}function l(t,n,r){r&&r!=e.Init&&(e.off(t.getWrapperElement(),"mouseover",t.state.textHover.onMouseOver),delete t.state.textHover);if(n){var i=t.state.textHover=new o(t,u(t,n));e.on(t.getWrapperElement(),"mouseover",i.onMouseOver)}}function h(e,t){var n=t.target||t.srcElement,r=n.innerText||n.textContent;for(var i=0;i<c.length;i+=2){var s=e.coordsChar({left:t.clientX+c[i],top:t.clientY+c[i+1]}),o=e.getTokenAt(s);if(o&&o.string===r)return{token:o,pos:s}}}var t=" CodeMirror-hover",c=[0,0,0,5,0,-5,5,0,-5,0];e.defineOption("textHover",!1,l)})()}),define("cm/addon/hover/prolog-hover",["../../lib/codemirror","jquery","laconic"],function(e,t){"use strict";function i(e){return t.el.span({"class":"pred-name"},e.text+"/"+e.arity)}function s(e,t,r){n[r]=t}function o(e,t){var r;return n[e.file]?n[e.file]:(r=e.file.lastIndexOf("/"))?e.file.substring(r+1):e.file}function u(e,n,r){return n&&n.file?t.el.div(a(e)+" included from ",t.el.span({"class":"file-path"},n.file)):n&&n.line?a(e)+" defined in line "+n.line:"Locally defined "+e}function a(e){return e[0].toUpperCase()+e.slice(1)}var n={},r={goal_built_in:function(e,n){return e?t.el.div(i(e),n.tokenInfo(e)):"Built-in predicate"},goal_global:function(e,n){return e?t.el.div(i(e),n.tokenInfo(e)):"Global predicate"},goal_autoload:function(e,n){return e?t.el.div(i(e)," (autoload from ",o(e,n),"): ",n.tokenInfo(e)):"Autoloaded predicate"},goal_imported:function(e,n){return e?t.el.div(i(e)," (imported from ",o(e,n),"): ",n.tokenInfo(e)):"Imported predicate"},goal_recursion:"Recursive call",goal_dynamic:"Dynamic predicate",goal_undefined:"Undefined predicate",goal_local:function(e,t){return u("predicate",e,t)},goal_constraint:function(e,t){return u("CHR constraint",e,t)},head_unreferenced:"Predicate is not called",head_constraint:"CHR constraint",file:function(e,n){return e?(s(n,e.text,e.path),t.el.div("File: ",t.el.span({"class":"file-path"},e.path))):"File name"},file_no_depends:function(e,n){return e?(s(n,e.text,e.path),t.el.div("File: ",t.el.span({"class":"file-path"},e.path),t.el.div({"class":"hover-remark"},"does not resolve any dependencies"))):"File name (does not resolve any dependencies)"},error:function(e,n){return e&&e.expected?t.el.div("error: ",t.el.strong(e.expected)," expected"):"error"},singleton:"Variable appearing only once",codes:"List of Unicode code points (integers)",chars:"List of one-character atoms",string:"Packed string (SWI7, use `text` for a list of codes)",qatom:"Quoted atom",tag:"Tag of a SWI7 dict",ext_quant:"Existential quantification operator",string_terminal:"Terminal (DCG)",head:null,control:null,fullstop:null,"var":null,"int":null,"float":null,number:null,atom:null,functor:null,comment:null,neck:null,operator:null,sep:null,list_open:null,list_close:null,dict_open:null,dict_close:null};e.registerHelper("textHover","prolog",function(e,n,i){if(n){var s=n.token,o=r[s.type],u;if(o===undefined)return(u=e.getEnrichedToken(s))?u.summary&&u.info==="ask"?t.el.div(u.summary,e.tokenInfo(u)):u.summary?t.el.div(u.summary):t.el.div(s.type):t.el.div(s.type);if(typeof o=="function"){var a=o(e.getEnrichedToken(s),e);return typeof a=="string"?t.el.div(a):a}if(typeof o=="string")return t.el.div(o)}return null})}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/addon/hint/show-context-info",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){var t=null;e.attachContextInfo=function(n){e.on(n,"select",function(e,n){n=n.parentNode;var r=null;e.info&&(r=e.info(e));if(r){var i=n.getBoundingClientRect();t==null&&(t=document.createElement("div"),t.className="CodeMirror-hints-contextInfo",document.body.appendChild(t)),t.innerHTML="",t.style.top=n.style.top,t.style.left=i.right+"px",typeof r=="string"?t.innerHTML=r:t.appendChild(r),t.style.display="block"}else t!=null&&(t.innerHTML="",t.style.display="none")}),e.on(n,"close",function(){t!=null&&t.parentNode.removeChild(t),t=null})},e.showContextInfo=function(t){return function(n,r,i){i||(i=r);var s=t(n,i);return e.attachContextInfo(s),s}}}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../lib/codemirror")):typeof define=="function"&&define.amd?define("cm/keymap/emacs",["../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";function n(e,t){return e.line==t.line&&e.ch==t.ch}function i(e){r.push(e),r.length>50&&r.shift()}function s(e){if(!r.length)return i(e);r[r.length-1]+=e}function o(e){return r[r.length-(e?Math.min(e,1):1)]||""}function u(){return r.length>1&&r.pop(),o()}function f(e,t,r,o,u){u==null&&(u=e.getRange(t,r)),o&&a&&a.cm==e&&n(t,a.pos)&&e.isClean(a.gen)?s(u):i(u),e.replaceRange("",t,r,"+delete"),o?a={cm:e,pos:t,gen:e.changeGeneration()}:a=null}function l(e,t,n){return e.findPosH(t,n,"char",!0)}function c(e,t,n){return e.findPosH(t,n,"word",!0)}function h(e,t,n){return e.findPosV(t,n,"line",e.doc.sel.goalColumn)}function p(e,t,n){return e.findPosV(t,n,"page",e.doc.sel.goalColumn)}function d(e,n,r){var i=n.line,s=e.getLine(i),o=/\S/.test(r<0?s.slice(0,n.ch):s.slice(n.ch)),u=e.firstLine(),a=e.lastLine();for(;;){i+=r;if(i<u||i>a)return e.clipPos(t(i-r,r<0?0:null));s=e.getLine(i);var f=/\S/.test(s);if(f)o=!0;else if(o)return t(i,0)}}function v(e,n,r){var i=n.line,s=n.ch,o=e.getLine(n.line),u=!1;for(;;){var a=o.charAt(s+(r<0?-1:0));if(!a){if(i==(r<0?e.firstLine():e.lastLine()))return t(i,s);o=e.getLine(i+r);if(!/\S/.test(o))return t(i,s);i+=r,s=r<0?o.length:0;continue}if(u&&/[!?.]/.test(a))return t(i,s+(r>0?1:0));u||(u=/\w/.test(a)),s+=r}}function m(e,r,i){var s;if(e.findMatchingBracket&&(s=e.findMatchingBracket(r,!0))&&s.match&&(s.forward?1:-1)==i)return i>0?t(s.to.line,s.to.ch+1):s.to;for(var o=!0;;o=!1){var u=e.getTokenAt(r),a=t(r.line,i<0?u.start:u.end);if(!(o&&i>0&&u.end==r.ch||!/\w/.test(u.string)))return a;var f=e.findPosH(a,i,"char");if(n(a,f))return r;r=f}}function g(e,t){var n=e.state.emacsPrefix;return n?(C(e),n=="-"?-1:Number(n)):t?null:1}function y(e){var t=typeof e=="string"?function(t){t.execCommand(e)}:e;return function(e){var n=g(e);t(e);for(var r=1;r<n;++r)t(e)}}function b(e,t,r,i){var s=g(e);s<0&&(i=-i,s=-s);for(var o=0;o<s;++o){var u=r(e,t,i);if(n(u,t))break;t=u}return t}function w(e,t){var n=function(n){n.extendSelection(b(n,n.getCursor(),e,t))};return n.motion=!0,n}function E(e,t,n){var r=e.listSelections(),i,s=r.length;while(s--)i=r[s].head,f(e,i,b(e,i,t,n),!0)}function S(e){if(e.somethingSelected()){var t=e.listSelections(),n,r=t.length;while(r--)n=t[r],f(e,n.anchor,n.head);return!0}}function x(e,t){if(e.state.emacsPrefix){t!="-"&&(e.state.emacsPrefix+=t);return}e.state.emacsPrefix=t,e.on("keyHandled",N),e.on("inputRead",k)}function N(e,t){!e.state.emacsPrefixMap&&!T.hasOwnProperty(t)&&C(e)}function C(e){e.state.emacsPrefix=null,e.off("keyHandled",N),e.off("inputRead",k)}function k(e,t){var n=g(e);if(n>1&&t.origin=="+input"){var r=t.text.join("\n"),i="";for(var s=1;s<n;++s)i+=r;e.replaceSelection(i)}}function L(e){e.state.emacsPrefixMap=!0,e.addKeyMap(j),e.on("keyHandled",A),e.on("inputRead",A)}function A(e,t){if(!(typeof t!="string"||!/^\d$/.test(t)&&t!="Ctrl-U"))return;e.removeKeyMap(j),e.state.emacsPrefixMap=!1,e.off("keyHandled",A),e.off("inputRead",A)}function O(e){e.setCursor(e.getCursor()),e.setExtending(!e.getExtending()),e.on("change",function(){e.setExtending(!1)})}function M(e){e.setExtending(!1),e.setCursor(e.getCursor())}function _(e,t,n){e.openDialog?e.openDialog(t+': <input type="text" style="width: 10em"/>',n,{bottom:!0}):n(prompt(t,""))}function D(e,t){var n=e.getCursor(),r=e.findPosH(n,1,"word");e.replaceRange(t(e.getRange(n,r)),n,r),e.setCursor(r)}function P(e){var n=e.getCursor(),r=n.line,i=n.ch,s=[];while(r>=e.firstLine()){var o=e.getLine(r);for(var u=i==null?o.length:i;u>0;){var i=o.charAt(--u);if(i==")")s.push("(");else if(i=="]")s.push("[");else if(i=="}")s.push("{");else if(/[\(\{\[]/.test(i)&&(!s.length||s.pop()!=i))return e.extendSelection(t(r,u))}--r,i=null}}function H(e){e.execCommand("clearSearch"),M(e)}function F(e){j[e]=function(t){x(t,e)},B["Ctrl-"+e]=function(t){x(t,e)},T["Ctrl-"+e]=!0}var t=e.Pos,r=[],a=null,T={"Alt-G":!0,"Ctrl-X":!0,"Ctrl-Q":!0,"Ctrl-U":!0},B=e.keyMap.emacs=e.normalizeKeyMap({"Ctrl-W":function(e){f(e,e.getCursor("start"),e.getCursor("end"))},"Ctrl-K":y(function(e){var n=e.getCursor(),r=e.clipPos(t(n.line)),i=e.getRange(n,r);/\S/.test(i)||(i+="\n",r=t(n.line+1,0)),f(e,n,r,!0,i)}),"Alt-W":function(e){i(e.getSelection()),M(e)},"Ctrl-Y":function(e){var t=e.getCursor();e.replaceRange(o(g(e)),t,t,"paste"),e.setSelection(t,e.getCursor())},"Alt-Y":function(e){e.replaceSelection(u(),"around","paste")},"Ctrl-Space":O,"Ctrl-Shift-2":O,"Ctrl-F":w(l,1),"Ctrl-B":w(l,-1),Right:w(l,1),Left:w(l,-1),"Ctrl-D":function(e){E(e,l,1)},Delete:function(e){S(e)||E(e,l,1)},"Ctrl-H":function(e){E(e,l,-1)},Backspace:function(e){S(e)||E(e,l,-1)},"Alt-F":w(c,1),"Alt-B":w(c,-1),"Alt-D":function(e){E(e,c,1)},"Alt-Backspace":function(e){E(e,c,-1)},"Ctrl-N":w(h,1),"Ctrl-P":w(h,-1),Down:w(h,1),Up:w(h,-1),"Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd",End:"goLineEnd",Home:"goLineStart","Alt-V":w(p,-1),"Ctrl-V":w(p,1),PageUp:w(p,-1),PageDown:w(p,1),"Ctrl-Up":w(d,-1),"Ctrl-Down":w(d,1),"Alt-A":w(v,-1),"Alt-E":w(v,1),"Alt-K":function(e){E(e,v,1)},"Ctrl-Alt-K":function(e){E(e,m,1)},"Ctrl-Alt-Backspace":function(e){E(e,m,-1)},"Ctrl-Alt-F":w(m,1),"Ctrl-Alt-B":w(m,-1),"Shift-Ctrl-Alt-2":function(e){var t=e.getCursor();e.setSelection(b(e,t,m,1),t)},"Ctrl-Alt-T":function(e){var t=m(e,e.getCursor(),-1),n=m(e,t,1),r=m(e,n,1),i=m(e,r,-1);e.replaceRange(e.getRange(i,r)+e.getRange(n,i)+e.getRange(t,n),t,r)},"Ctrl-Alt-U":y(P),"Alt-Space":function(e){var n=e.getCursor(),r=n.ch,i=n.ch,s=e.getLine(n.line);while(r&&/\s/.test(s.charAt(r-1)))--r;while(i<s.length&&/\s/.test(s.charAt(i)))++i;e.replaceRange(" ",t(n.line,r),t(n.line,i))},"Ctrl-O":y(function(e){e.replaceSelection("\n","start")}),"Ctrl-T":y(function(e){e.execCommand("transposeChars")}),"Alt-C":y(function(e){D(e,function(e){var t=e.search(/\w/);return t==-1?e:e.slice(0,t)+e.charAt(t).toUpperCase()+e.slice(t+1).toLowerCase()})}),"Alt-U":y(function(e){D(e,function(e){return e.toUpperCase()})}),"Alt-L":y(function(e){D(e,function(e){return e.toLowerCase()})}),"Alt-;":"toggleComment","Ctrl-/":y("undo"),"Shift-Ctrl--":y("undo"),"Ctrl-Z":y("undo"),"Cmd-Z":y("undo"),"Shift-Alt-,":"goDocStart","Shift-Alt-.":"goDocEnd","Ctrl-S":"findNext","Ctrl-R":"findPrev","Ctrl-G":H,"Shift-Alt-5":"replace","Alt-/":"autocomplete","Ctrl-J":"newlineAndIndent",Enter:!1,Tab:"indentAuto","Alt-G G":function(e){var t=g(e,!0);if(t!=null&&t>0)return e.setCursor(t-1);_(e,"Goto line",function(t){var n;t&&!isNaN(n=Number(t))&&n==(n|0)&&n>0&&e.setCursor(n-1)})},"Ctrl-X Tab":function(e){e.indentSelection(g(e,!0)||e.getOption("indentUnit"))},"Ctrl-X Ctrl-X":function(e){e.setSelection(e.getCursor("head"),e.getCursor("anchor"))},"Ctrl-X Ctrl-S":"save","Ctrl-X Ctrl-W":"save","Ctrl-X S":"saveAll","Ctrl-X F":"open","Ctrl-X U":y("undo"),"Ctrl-X K":"close","Ctrl-X Delete":function(e){f(e,e.getCursor(),v(e,e.getCursor(),1),!0)},"Ctrl-X H":"selectAll","Ctrl-Q Tab":y("insertTab"),"Ctrl-U":L}),j={"Ctrl-G":C};for(var I=0;I<10;++I)F(String(I));F("-")}),define("editor",["cm/lib/codemirror","config","preferences","form","cm/mode/prolog/prolog-template-hint","modal","tabbed","prolog","storage","cm/mode/prolog/prolog","cm/mode/prolog/prolog_keys","cm/mode/prolog/prolog_query","cm/mode/prolog/prolog_server","cm/mode/markdown/markdown","cm/addon/edit/matchbrackets","cm/addon/comment/continuecomment","cm/addon/comment/comment","cm/addon/hint/show-hint","cm/addon/hint/anyword-hint","cm/addon/display/placeholder","cm/addon/runmode/runmode","cm/addon/hover/text-hover","cm/addon/hover/prolog-hover","cm/addon/hint/templates-hint","cm/addon/hint/show-context-info","jquery","laconic","cm/keymap/emacs"],function(e,t,n,r,i,s,o,u){function a(e,t){var n=[];t=t||"",n.push("<style>\n");for(var r in e)if(e.hasOwnProperty(r)){var i=e[r];n.push(t,r,"{");for(var s in i)i.hasOwnProperty(s)&&n.push(s,":",i[s],";");n.push("}\n")}n.push("</style>\n"),$("body").append(n.join(""))}(function(r){var a="prologEditor",f={prolog:{mode:"prolog",role:"source",placeholder:"Your Prolog rules and facts go here ...",lineNumbers:!0,autoCurrent:!0,save:!1,theme:"prolog",matchBrackets:!0,textHover:!1,prologKeys:!0,extraKeys:{"Ctrl-Space":"autocomplete","Alt-/":"autocomplete"},hintOptions:{hint:i.getHints,completeSingle:!1}},markdown:{mode:"markdown",placeholder:"Your markdown block goes here ...",lineWrapping:!0,save:!1}},l={query:{mode:"prolog",role:"query",placeholder:"Your query goes here ...",lineNumbers:!1,lineWrapping:!0,save:!1}},c={_init:function(i){return this.each(function(){var s=r(this),o={},u={},c;i=i||{},i.mode=i.mode||"prolog";var h=r.extend({},f[i.mode]);i.role&&l[i.role]&&(h=r.extend(h,l[i.role])),h=r.extend(h,i),n.getVal("emacs-keybinding")&&(h.keyMap="emacs");if(h.mode=="prolog"){u.role=h.role,t.http.locations.cm_highlight&&(h.prologHighlightServer={url:t.http.locations.cm_highlight,role:h.role,enabled:n.getVal("semantic-highlighting")},h.sourceID&&(h.prologHighlightServer.sourceID=h.sourceID),h.extraKeys["Ctrl-R"]="refreshHighlight"),h.role=="source"&&(h.continueComments="Enter"),u.long_click={};function p(e){var t=u.long_click,n=e.clientX-t.clientX,r=e.clientY-t.clientY;Math.sqrt(n*n+r*r)>5&&d()}function d(){s.off("mousemove",p);var e=u.long_click;e.timeout&&(clearTimeout(e.timeout),e.target=undefined,e.timeout=undefined)}s.on("mousedown",".CodeMirror-code",function(e){var t=u.long_click;t.clientX=e.clientX,t.clientY=e.clientY,s.on("mousemove",p),u.long_click.timeout=setTimeout(function(){d(),s.prologEditor("contextAction")},500)}),s.on("mouseup",function(e){d()})}if(c=s.children("textarea")[0]){function v(e){var t=r(c).data(e);t&&(o[e]=t)}v("file"),v("url"),v("title"),v("meta"),v("st_type"),u.cm=e.fromTextArea(c,h)}else h.value||(h.value=s.text()),u.cm=e(s[0],h);s.data(a,u),s.prologEditor("loadMode",h.mode),s.addClass("swish-event-receiver"),s.addClass("prolog-editor"),s.on("preference",function(e,t){s.prologEditor("preference",t)}),s.on("print",function(){u.role!="query"&&s.prologEditor("print")}),h.save&&(o.typeName=h.typeName||"program",s.prologEditor("setupStorage",o)),h.mode=="prolog"&&u.role=="source"&&(s.on("activate-tab",function(e){h.autoCurrent&&s.prologEditor("makeCurrent"),u.cm.refresh()}),s.on("source-error",function(e,t){s.prologEditor("highlightError",t)}),s.on("clearMessages",function(e){s.prologEditor("clearMessages")}),s.on("pengine-died",function(e,t){if(u.pengines){var n=u.pengines.indexOf(t);n>=0&&u.pengines.splice(n,1)}u.traceMark&&u.traceMark.pengine==t&&(u.traceMark.clear(),u.traceMark=null)})),u.cm.on("change",function(e,t){var n;if(t.origin=="setValue")n=!0;else{var r=s.data("storage"),i=r?r.cleanGeneration:u.cleanGeneration;n=u.cm.isClean(i)}s.prologEditor("markClean",n)})})},getOption:function(e){return this.data(a)[e]},setKeybinding:function(e){e=e||"default",this.data(a).cm.options.keyMap=e},loadMode:function(t){var n=this.data(a);return e.modes[t]?t!=n.mode&&n.cm.setOption("mode",t):require(["cm/mode/"+t+"/"+t],function(){n.cm.setOption("mode",t)}),this},isPengineSource:function(){var e=r(this).data(a);if(e&&e.role=="source"){var t=r(this).data("storage");if(t&&t.meta)if(t.meta.loaded||t.meta.module)return!1}return this},getBreakpoints:function(e){var t=[];return this.each(function(){var n=r(this).data(a),i=[],s=0,o=n.cm,u=o.firstLine(),f=o.lastLine();for(;u<f;u++){var l=o.lineInfo(u);l.gutterMarkers&&i.push(s+u+1)}if(i.length>0){var c;if(n.pengines&&n.pengines.indexOf(e)>=0)c="pengine://"+e+"/src";else{var h=r(this).data("storage");h&&(c="swish://"+h.file)}c&&t.push({file:c,breakpoints:i})}}),t},getSource:function(e){var t=[];return this.each(function(){if(r(this).prologEditor("isPengineSource")){var n=r(this).data(a);n&&(!e||e==n.role)&&t.push(n.cm.getValue())}}),t.join("\n\n")},getSourceEx:function(){var e={value:this.data(a).cm.getValue()},t=this.prologEditor("getBreakpoints");return t.length>0&&(e.breakpoints=t),e},getSourceID:function(){var e=[];return this.each(function(){var t=r(this).data(a);t&&t.cm&&t.cm.state.prologHighlightServer?e.push(t.cm.state.prologHighlightServer.uuid):e.push(null)}),e},setSource:function(e,t){typeof e=="string"&&(e={data:e});if(this.data("storage")&&t!=1)this.storage("setSource",e);else{var n=this.data(a);n.cm.setValue(e.data);if(e.line||e.prompt)n.cm.refresh(),e.line?this.prologEditor("gotoLine",e.line,e):this.prologEditor("showTracePort",e.prompt);n.role=="source"&&r(".swish-event-receiver").trigger("program-loaded",this)}return this},makeCurrent:function(){return r(".swish-event-receiver").trigger("current-program",this),this},markClean:function(e){var t=this.data(a);t.clean_signalled!=e&&(t.clean_signalled=e,this.trigger("data-is-clean",e))},setIsClean:function(){return this.each(function(){var e=r(this),t=e.data(a);t.cleanGeneration=t.cm.changeGeneration()})},pengine:function(e){var t=this.data(a);if(t){if(e.add)return t.pengines=t.pengines||[],t.pengines.indexOf(e.add)<0&&t.pengines.push(e.add),this;if(e.has)return t.pengines&&t.pengines.indexOf(e.has)>=0}},print:function(n){function o(e){var t=r.el.iframe({src:"about:blank"});r("body").append(t),r("body",t.contentWindow.document).append(e),t.contentWindow.print()}var i=r.el.pre({"class":"cm-s-prolog"});return n||(n=this.prologEditor("getSource")),e.runMode(n,"prolog",i),r.ajax({url:t.http.locations.swish+"css/print.css",dataType:"text",success:function(e){o(r.el.div(r.el.style(e),i))},error:function(e){s.ajaxError(e)}}),this},preference:function(e){var t=this.data(a);return e.name=="semantic-highlighting"&&t.cm.setOption("prologHighlightServer",{enabled:e.value}),e.name=="emacs-keybinding"&&(e.value==1?t.cm.setOption("keyMap","emacs"):t.cm.setOption("keyMap","default")),this},highlightError:function(e){if(e.location.file&&this.prologEditor("isMyFile",e.location.file)){var t=this.data(a),n=r(e.data).text(),i;e.location.ch?i=t.cm.charCoords({line:e.location.line-1,ch:e.location.ch},"local").left:i=0,n=n.replace(/^.*?:[0-9][0-9]*: /,"");var s=r.el.span({"class":"source-msg error"},n,r("<span>×</span>")[0]);r(s).css("margin-left",i+"px");var o=t.cm.addLineWidget(e.location.line-1,s);r(s).on("click",function(){o.clear()}),r(s).data("cm-widget",o)}return this},refreshHighlight:function(){var e=this.data(a);return this},refresh:function(){var e=this.data(a);return e&&e.cm.refresh(),this},clearMessages:function(){return this.find(".source-msg").each(function(){r(this).data("cm-widget").clear()}),this.prologEditor("showTracePort",null),this},isMyFile:function(e){var t="swish://";if(e.startsWith("pengine://")){var n=this.data(a);if(n.pengines&&(id=e.split("/")[2])&&n.pengines.indexOf(id)>=0)return!0}if(e.startsWith(t)){var r=this.data("storage");if(r&&e.slice(t.length)==r.file)return!0}return!1},showTracePort:function(e){if(this.length==0)return this;var t=this.data(a);t.traceMark&&(t.traceMark.clear(),t.traceMark=null);if(!(e&&e.source&&e.source.file))return this;var n=e.source.file;if(this.prologEditor("isMyFile",n)){if(e.source.from&&e.source.to){var r=t.cm.charOffsetToPos(e.source.from),i=t.cm.charOffsetToPos(e.source.to);this.is(":visible")||this.storage("expose","trace"),r&&i&&(t.traceMark=t.cm.markText(r,i,{className:"trace "+e.port}),t.traceMark.pengine=e.pengine,t.cm.scrollIntoView(r,50))}return this}},getExamples:function(e,t){var n=e?e:this.prologEditor("getSource"),i,s=[];if(r.trim(n)=="")return null;t==0?i=[e]:i=n.match(/\/\*\* *<?examples>?[\s\S]*?\*\//igm);if(i)for(var o=0;o<i.length;o++){var u=i[o].match(/^ *\?-[\s\S]*?[^-#$&*+./:<=>?@\\^~]\.\s/gm);if(u)for(var a=0;a<u.length;a++){var f=u[a].replace(/^ *\?-\s*/,"").replace(/\s*$/,"").replace(/\\'/g,"'").replace(/\\"/g,"'");s.push(f)}}return s},search:function(e,t){var n=this.data(a).cm,r=n.firstLine(),i=n.lastLine(),s=[];for(var o=r;o<=i;o++){var u=n.getLine(o);if(u.search(e)>=0){s.push({line:o+1,text:u});if(t.max&&t.max===s.length)return s}}return s},gotoLine:function(e,t){function o(e){if(e._searchMarkers!==undefined){for(var t=0;t<e._searchMarkers.length;t++)e._searchMarkers[t].clear();e.off("cursorActivity",o)}e._searchMarkers=[]}var n=this.data(a),r=n.cm,i=0,s;o(r),t=t||{},s=t.regex,e-=1,s&&(i=r.getLine(e).search(s),i<0&&(i=0)),r.setCursor({line:e,ch:i});var u=r.getScrollInfo().clientHeight,f=r.charCoords({line:e,ch:0},"local");r.scrollTo(null,(f.top+f.bottom-u)/2);if(s){function l(e,t){var n;while(n=s.exec(r.getLine(e)))r._searchMarkers.push(r.markText({line:e,ch:n.index},{line:e,ch:n.index+n[0].length},{className:t,clearOnEnter:!0,clearWhenEmpty:!0,title:"Search match"}))}l(e,"CodeMirror-search-match");if(t.showAllMatches){var c=r.getViewport();for(var h=c.from;h<c.to;h++)h!=e&&l(h,"CodeMirror-search-alt-match")}r._searchMarkers.length>0&&r.on("cursorActivity",o)}return this},changeGen:function(){return this.data(a).cm.changeGeneration()},isClean:function(e){return this.data(a).cm.isClean(e)},setupStorage:function(e){var t=this.data(a),n=this;return e.setValue=function(e){n.prologEditor("setSource",e,!0)},e.getValue=function(){return t.cm.getValue()},e.changeGen=function(){return t.cm.changeGeneration()},e.isClean=function(e){return t.cm.isClean(e)},e.markClean=function(e){n.prologEditor("markClean",e)},e.cleanGeneration=t.cm.changeGeneration(),e.cleanData=t.cm.getValue(),e.cleanCheckpoint="load",this.storage(e),this},contextAction:function(){var e=this,t=this.data(a),n=t.cm.getCursor(),i=t.cm.getTokenAt(n,!0),o=t.cm.getEnrichedToken(i),u=t.cm.getTokenReferences(o);if(u&&u.length>0){var f=r.el.ul(),l=r.el.div({"class":"goto-source"},r.el.div("Go to"),f),c=r.el.div({"class":"edit-modal"},r.el.div({"class":"mask"}),l);for(var h=0;h<u.length;h++){var p=u[h];r(f).append(r.el.li(r.el.a({"data-locindex":h},p.title)))}var d=t.cm.cursorCoords(!0);r(l).css({top:d.bottom,left:d.left}),r("body").append(c),r(c).on("click",function(n){var i=r(n.target).data("locindex");r(c).remove();if(i!==undefined){var o=u[i];if(o.file)e.closest(".swish").swish("playFile",o);else{var a;t.role=="query"?(a=e.closest(".prolog-query-editor").queryEditor("getProgramEditor"),a[0]||s.alert("No related program editor")):a=e,a&&a[0]&&a.prologEditor("gotoLine",o.line,o).focus()}}}),r(c).show()}return this},variables:function(t,n){function o(e){r(i).find(e).each(function(){var e=r(this).text();s.indexOf(e)<0&&s.push(e)})}var i=r.el.span({"class":"query cm-s-prolog"}),s=[];return e.runMode(t,"prolog",i),o("span.cm-var"),n&&o("span.cm-var-2"),s},wrapSolution:function(e){function i(e,r){return n.prologEditor("setSource",e+"("+t+")"+r+".").focus(),n}function s(e){var t=[];for(var n=0;n<r.length;n++)t.push("asc("+r[n]+")");return t.join(",")}var t=u.trimFullStop(this.prologEditor("getSource","query")),n=this,r=this.prologEditor("variables",t);switch(e){case"Aggregate (count all)":return i("aggregate_all(count, ",", Count)");case"Order by":return i("order_by(["+s(r)+"], ",")");case"Distinct":return i("distinct(["+r.join(",")+"], ",")");case"Limit":return i("limit(10, ",")");case"Time":return i("time(",")");case"Debug (trace)":return i("trace, ","");default:alert('Unknown wrapper: "'+e+'"')}}};o.tabTypes.program={dataType:"pl",typeName:"program",label:"Program",contentType:"text/x-prolog",order:100,create:function(e,t){r(e).addClass("prolog-editor").prologEditor(r.extend({save:!0},t)).prologEditor("makeCurrent")}};if(t.swish.tab_types){var h={save:!0,lineNumbers:!0};for(var p=0;p<t.swish.tab_types.length;p++){var d=t.swish.tab_types[p];if(d.editor){var v=r.extend({typeName:d.typeName},h,d.editor);d.create=function(e){r(e).addClass("prolog-editor").prologEditor(v)},o.tabTypes[d.typeName]=d}}}r.fn.prologEditor=function(e){if(c[e])return c[e].apply(this,Array.prototype.slice.call(arguments,1));if(typeof e=="object"||!e)return c._init.apply(this,arguments);r.error("Method "+e+" does not exist on jQuery."+a)}})(jQuery),e.prototype.charOffsetToPos=function(e){var t=this.firstLine(),n=this.lastLine(),r=0;for(;t<n;t++){var i=this.getLine(t);if(r<=e&&r+i.length>=e)return{line:t,ch:e-r};r+=i.length+1}},e.keyMap.emacs.Enter="newlineAndIndent",t.swish.cm_style&&a(t.swish.cm_style,".cm-s-prolog span.cm-"),t.swish.cm_hover_style&&a(t.swish.cm_hover_style,".CodeMirror-hover-tooltip ")}),define("query",["jquery","config","preferences","cm/lib/codemirror","laconic","editor"],function(e,t,n,r){(function(e){function o(t){return e(t).parents(".prolog-query-editor")}function u(t,n,r){var i=e.el.div({"class":"btn-group dropup"},e.el.button({"class":"btn btn-default btn-xs dropdown-toggle "+t,"data-toggle":"dropdown"},n,e.el.span({"class":"caret"})),e.el.ul({"class":"dropdown-menu "+t}));return e(i).on("click","a",function(){o(this).queryEditor("setQuery",e(this).text())}),i}function a(t){function i(t){var r=t.examples();e.isArray(r)&&o(n).queryEditor("setExamples",r,!0)}var n=u("examples","Examples",t),r=e(n).find("ul");if(typeof t.examples=="function")e(n).mousedown(function(e){e.which==1&&i(t)});else if(t.examples){var s=t.examples;for(var a=0;a<s.length;a++)r.append(e.el.li(e.el.a(s[a])))}return n}function f(e){return u("history","History",e)}function l(t){var n="aggregate",r=t.aggregates||["Aggregate (count all)","Limit","--","Time"],i,s=e.el.div({"class":"btn-group dropup"},e.el.button({"class":"btn btn-default btn-xs dropdown-toggle "+n,"data-toggle":"dropdown"},"Solutions",e.el.span({"class":"caret"})),i=e.el.ul({"class":"dropdown-menu "+n}));for(var u=0;u<r.length;u++){var a=r[u];a=="--"?e(i).append(e.el.li({"class":"divider"})):e(i).append(e.el.li(e.el.a(a)))}return e(s).on("click","a",function(){o(this).find(".query").prologEditor("wrapSolution",e(this).text())}),s}function c(t){var n=e.el.button({"class":"run-btn-query","class":"btn btn-default btn-primary btn-xs"},"Run!");return e(n).on("click",function(){o(this).queryEditor("run",undefined,h(this))}),n}function h(t){return e(t).parent().find("input").prop("checked")}function p(r){var i=n.getVal("tabled_results"),s={type:"checkbox",name:"table"};i===undefined&&(i=t.swish.tabled_results),i&&(s.checked="checked");var o=e.el.input(s),u=e.el.span({"class":"run-chk-table"},o," table results");return e(o).on("change",function(t){n.setVal("tabled_results",e(t.target).prop("checked"))}),u}var r="queryEditor",i={maxHistoryLength:50},s={_init:function(t){return this.each(function(){function d(){return e(u).find("input").prop("checked")}var n=e(this),s=e.extend({},i,t),o=e.el.div({"class":"query",style:"height:100%"}),u=p(s),h=e.el.table({"class":"prolog-query"},e.el.tr(e.el.td({"class":"prolog-prompt"},"?-"),e.el.td({colspan:2,style:"height:100%"},o),e.el.td()),e.el.tr(e.el.td(),e.el.td({"class":"buttons-left"},a(s),f(s),l(s)),e.el.td({"class":"buttons-right"},u,c(s))));n.addClass("prolog-query-editor swish-event-receiver"),n.append(h),e(o).append(n.children("textarea")).prologEditor({role:"query",sourceID:function(){return s.sourceID()},prologQuery:function(e){n.queryEditor("run",e,d())}}),n.data(r,s),e(o).prologEditor("getSource","query")||(typeof s.examples=="object"?s.examples[0]&&e(o).prologEditor("setSource",s.examples[0]):n[r]("setProgramEditor",e(s.editor),!0)),n.on("current-program",function(t,i){n[r]("setProgramEditor",e(i))}),n.on("program-loaded",function(t,r){if(e(s.editor).data("prologEditor")==e(r).data("prologEditor")){var i=s.examples();n.queryEditor("setQuery",i&&i[0]?i[0]:"")}})})},setProgramEditor:function(t,n){var i=this.data(r);if(i.editor==t[0]&&!n)return this;i.editor=t[0];if(i.editor){i.examples=function(){var n=t.prologEditor("getExamples")||[],r=t.parents(".swish").swish("examples",!0)||[];return e.isArray(r)&&n.concat(r),n},t.prologEditor("isPengineSource")?i.source=function(){var n=t.prologEditor("getSource","source"),r=e(".background.prolog.source").text();return r&&(n+="\n\n"+r),n}:i.source="",i.sourceID=function(){return t.prologEditor("getSourceID")};var s=i.examples();s&&s[0]&&this.queryEditor("isClean")?this.queryEditor("setQuery",s[0]):t.prologEditor("refreshHighlight")}else i.examples=""},getProgramEditor:function(){var t=this.data(r);return t.editor?e(t.editor):e()},setExamples:function(t,n){function i(e){var t;if((t=r.data("examples"))&&t.length==e.length){for(var n=0;n<t.length;n++)if(t[n]!=e[n])return!1;return!0}return!1}var r=this.find("ul.examples");t||(t=[]),n===undefined&&(n=!0);if(n&&i(t))return this;n===!0&&r.html("");for(var s=0;s<t.length;s++)r.append(e.el.li(e.el.a(t[s])));return r.data("examples",t.slice(0)),this},addHistory:function(t){function i(){return n.children().filter(function(){return e(this).text()==t})}var n=this.find("ul.history"),r=this.data("queryEditor");if(t){var s;(s=i())&&s.remove(),n.children().length>=r.maxHistoryLength&&n.children().first().remove(),n.append(e.el.li(e.el.a(t)))}return this},setQuery:function(e){var t=this.data(r);return t.cleanGen=this.find(".query").prologEditor("setSource",e).focus().prologEditor("changeGen"),this},isClean:function(){var e=this.data(r);return!this.queryEditor("getQuery")||e.cleanGen&&this.find(".query").prologEditor("isClean",e.cleanGen)},getQuery:function(){return this.find(".query").prologEditor("getSource","query")},run:function(t,n){var r=this.data("queryEditor");t===undefined&&(t=this.queryEditor("getQuery")),t=e.trim(t);if(!t)return e(".swish-event-receiver").trigger("help",{file:"query.html"}),this;e(".swish-event-receiver").trigger("clearMessages");var i={query:t,editor:r.editor};return typeof r.source=="function"?i.source=r.source(t):typeof r.source=="string"&&(i.source=r.source),n&&(i.tabled=!0),this.queryEditor("addHistory",t),r.runner.prologRunners("run",i),this}};e.fn.queryEditor=function(t){if(s[t])return s[t].apply(this,Array.prototype.slice.call(arguments,1));if(typeof t=="object"||!t)return s._init.apply(this,arguments);e.error("Method "+t+" does not exist on jQuery."+r)}})(jQuery)}),define("term",["jquery"],function(){function e(){$(this).next().toggleClass("fold"),$(this).remove()}$(document).on("click",".pl-functor, .pl-infix",function(){var t=$(this).parent();$(t).toggleClass("fold"),$(t).before('<span class="pl-ellipsis">...</span>').prev().click(e)})}),!function(){function i(e){return e&&(e.ownerDocument||e.document||e).documentElement}function s(e){return e&&(e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView)}function p(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function d(e){return e===null?NaN:+e}function v(e){return!isNaN(e)}function m(e){return{left:function(t,n,r,i){arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);while(r<i){var s=r+i>>>1;e(t[s],n)<0?r=s+1:i=s}return r},right:function(t,n,r,i){arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);while(r<i){var s=r+i>>>1;e(t[s],n)>0?i=s:r=s+1}return r}}}function y(e){return e.length}function w(e){var t=1;while(e*t%1)t*=10;return t}function E(e,t){for(var n in t)Object.defineProperty(e.prototype,n,{value:t[n],enumerable:!1})}function S(){this._=Object.create(null)}function N(e){return(e+="")===x||e[0]===T?T+e:e}function C(e){return(e+="")[0]===T?e.slice(1):e}function k(e){return N(e)in this._}function L(e){return(e=N(e))in this._&&delete this._[e]}function A(){var e=[];for(var t in this._)e.push(C(t));return e}function O(){var e=0;for(var t in this._)++e;return e}function M(){for(var e in this._)return!1;return!0}function _(){this._=Object.create(null)}function D(e){return e}function P(e,t,n){return function(){var r=n.apply(t,arguments);return r===t?e:r}}function H(e,t){if(t in e)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var n=0,r=B.length;n<r;++n){var i=B[n]+t;if(i in e)return i}}function j(){}function F(){}function I(e){function r(){var n=t,r=-1,i=n.length,s;while(++r<i)(s=n[r].on)&&s.apply(this,arguments);return e}var t=[],n=new S;return r.on=function(r,i){var s=n.get(r),o;return arguments.length<2?s&&s.on:(s&&(s.on=null,t=t.slice(0,o=t.indexOf(s)).concat(t.slice(o+1)),n.remove(r)),i&&t.push(n.set(r,{on:i})),e)},r}function q(){e.event.preventDefault()}function R(){var t=e.event,n;while(n=t.sourceEvent)t=n;return t}function U(t){var n=new F,r=0,i=arguments.length;while(++r<i)n[arguments[r]]=I(n);return n.of=function(r,i){return function(s){try{var o=s.sourceEvent=e.event;s.target=t,e.event=s,n[s.type].apply(r,i)}finally{e.event=o}}},n}function X(e){return W(e,K),e}function Q(e){return typeof e=="function"?e:function(){return V(e,this)}}function G(e){return typeof e=="function"?e:function(){return $(e,this)}}function et(t,n){function r(){this.removeAttribute(t)}function i(){this.removeAttributeNS(t.space,t.local)}function s(){this.setAttribute(t,n)}function o(){this.setAttributeNS(t.space,t.local,n)}function u(){var e=n.apply(this,arguments);e==null?this.removeAttribute(t):this.setAttribute(t,e)}function a(){var e=n.apply(this,arguments);e==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}return t=e.ns.qualify(t),n==null?t.local?i:r:typeof n=="function"?t.local?a:u:t.local?o:s}function tt(e){return e.trim().replace(/\s+/g," ")}function nt(t){return new RegExp("(?:^|\\s+)"+e.requote(t)+"(?:\\s+|$)","g")}function rt(e){return(e+"").trim().split(/^|\s+/)}function it(e,t){function r(){var r=-1;while(++r<n)e[r](this,t)}function i(){var r=-1,i=t.apply(this,arguments);while(++r<n)e[r](this,i)}e=rt(e).map(st);var n=e.length;return typeof t=="function"?i:r}function st(e){var t=nt(e);return function(n,r){if(i=n.classList)return r?i.add(e):i.remove(e);var i=n.getAttribute("class")||"";r?(t.lastIndex=0,t.test(i)||n.setAttribute("class",tt(i+" "+e))):n.setAttribute("class",tt(i.replace(t," ")))}}function ot(e,t,n){function r(){this.style.removeProperty(e)}function i(){this.style.setProperty(e,t,n)}function s(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}return t==null?r:typeof t=="function"?s:i}function ut(e,t){function n(){delete this[e]}function r(){this[e]=t}function i(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}return t==null?n:typeof t=="function"?i:r}function at(t){function n(){var e=this.ownerDocument,n=this.namespaceURI;return n===Y&&e.documentElement.namespaceURI===Y?e.createElement(t):e.createElementNS(n,t)}function r(){return this.ownerDocument.createElementNS(t.space,t.local)}return typeof t=="function"?t:(t=e.ns.qualify(t)).local?r:n}function ft(){var e=this.parentNode;e&&e.removeChild(this)}function lt(e){return{__data__:e}}function ct(e){return function(){return J(this,e)}}function ht(e){return arguments.length||(e=p),function(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}}function pt(e,t){for(var n=0,r=e.length;n<r;n++)for(var i=e[n],s=0,o=i.length,u;s<o;s++)(u=i[s])&&t(u,s,n);return e}function dt(e){return W(e,vt),e}function mt(e){var t,n;return function(r,i,s){var o=e[s].update,u=o.length,a;s!=n&&(n=s,t=0),i>=t&&(t=i+1);while(!(a=o[t])&&++t<u);return a}}function gt(t,r,i){function f(){var e=this[s];e&&(this.removeEventListener(t,e,e.$),delete this[s])}function l(){var e=u(r,n(arguments));f.call(this),this.addEventListener(t,this[s]=e,e.$=i),e._=r}function c(){var n=new RegExp("^__on([^.]+)"+e.requote(t)+"$"),r;for(var i in this)if(r=i.match(n)){var s=this[i];this.removeEventListener(r[1],s,s.$),delete this[i]}}var s="__on"+t,o=t.indexOf("."),u=bt;o>0&&(t=t.slice(0,o));var a=yt.get(t);return a&&(t=a,u=wt),o?r?l:f:r?j:c}function bt(t,n){return function(r){var i=e.event;e.event=r,n[0]=this.__data__;try{t.apply(this,n)}finally{e.event=i}}}function wt(e,t){var n=bt(e,t);return function(e){var t=this,r=e.relatedTarget;(!r||r!==t&&!(r.compareDocumentPosition(t)&8))&&n.call(t,e)}}function xt(t){var n=".dragsuppress-"+ ++St,r="click"+n,o=e.select(s(t)).on("touchmove"+n,q).on("dragstart"+n,q).on("selectstart"+n,q);Et==null&&(Et="onselectstart"in t?!1:H(t.style,"userSelect"));if(Et){var u=i(t).style,a=u[Et];u[Et]="none"}return function(e){o.on(n,null),Et&&(u[Et]=a);if(e){var t=function(){o.on(r,null)};o.on(r,function(){q(),t()},!0),setTimeout(t,0)}}}function Nt(t,n){n.changedTouches&&(n=n.changedTouches[0]);var r=t.ownerSVGElement||t;if(r.createSVGPoint){var i=r.createSVGPoint();if(Tt<0){var o=s(t);if(o.scrollX||o.scrollY){r=e.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var u=r[0][0].getScreenCTM();Tt=!u.f&&!u.e,r.remove()}}return Tt?(i.x=n.pageX,i.y=n.pageY):(i.x=n.clientX,i.y=n.clientY),i=i.matrixTransform(t.getScreenCTM().inverse()),[i.x,i.y]}var a=t.getBoundingClientRect();return[n.clientX-a.left-t.clientLeft,n.clientY-a.top-t.clientTop]}function Ct(){return e.event.changedTouches[0].identifier}function Ht(e){return e>0?1:e<0?-1:0}function Bt(e,t,n){return(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0])}function jt(e){return e>1?0:e<-1?At:Math.acos(e)}function Ft(e){return e>1?_t:e<-1?-_t:Math.asin(e)}function It(e){return((e=Math.exp(e))-1/e)/2}function qt(e){return((e=Math.exp(e))+1/e)/2}function Rt(e){return((e=Math.exp(2*e))-1)/(e+1)}function Ut(e){return(e=Math.sin(e/2))*e}function Kt(){}function Qt(e,t,n){return this instanceof Qt?void (this.h=+e,this.s=+t,this.l=+n):arguments.length<2?e instanceof Qt?new Qt(e.h,e.s,e.l):bn(""+e,wn,Qt):new Qt(e,t,n)}function Yt(e,t,n){function s(e){return e>360?e-=360:e<0&&(e+=360),e<60?r+(i-r)*e/60:e<180?i:e<240?r+(i-r)*(240-e)/60:r}function o(e){return Math.round(s(e)*255)}var r,i;return e=isNaN(e)?0:(e%=360)<0?e+360:e,t=isNaN(t)?0:t<0?0:t>1?1:t,n=n<0?0:n>1?1:n,i=n<=.5?n*(1+t):n+t-n*t,r=2*n-i,new dn(o(e+120),o(e),o(e-120))}function Zt(t,n,r){return this instanceof Zt?void (this.h=+t,this.c=+n,this.l=+r):arguments.length<2?t instanceof Zt?new Zt(t.h,t.c,t.l):t instanceof nn?ln(t.l,t.a,t.b):ln((t=En((t=e.rgb(t)).r,t.g,t.b)).l,t.a,t.b):new Zt(t,n,r)}function tn(e,t,n){return isNaN(e)&&(e=0),isNaN(t)&&(t=0),new nn(n,Math.cos(e*=Dt)*t,Math.sin(e)*t)}function nn(e,t,n){return this instanceof nn?void (this.l=+e,this.a=+t,this.b=+n):arguments.length<2?e instanceof nn?new nn(e.l,e.a,e.b):e instanceof Zt?tn(e.h,e.c,e.l):En((e=dn(e)).r,e.g,e.b):new nn(e,t,n)}function fn(e,t,n){var r=(e+16)/116,i=r+t/500,s=r-n/200;return i=cn(i)*sn,r=cn(r)*on,s=cn(s)*un,new dn(pn(3.2404542*i-1.5371385*r-.4985314*s),pn(-0.969266*i+1.8760108*r+.041556*s),pn(.0556434*i-.2040259*r+1.0572252*s))}function ln(e,t,n){return e>0?new Zt(Math.atan2(n,t)*Pt,Math.sqrt(t*t+n*n),e):new Zt(NaN,NaN,e)}function cn(e){return e>.206893034?e*e*e:(e-4/29)/7.787037}function hn(e){return e>.008856?Math.pow(e,1/3):7.787037*e+4/29}function pn(e){return Math.round(255*(e<=.00304?12.92*e:1.055*Math.pow(e,1/2.4)-.055))}function dn(e,t,n){return this instanceof dn?void (this.r=~~e,this.g=~~t,this.b=~~n):arguments.length<2?e instanceof dn?new dn(e.r,e.g,e.b):bn(""+e,dn,Yt):new dn(e,t,n)}function vn(e){return new dn(e>>16,e>>8&255,e&255)}function mn(e){return vn(e)+""}function yn(e){return e<16?"0"+Math.max(0,e).toString(16):Math.min(255,e).toString(16)}function bn(e,t,n){var r=0,i=0,s=0,o,u,a;o=/([a-z]+)\((.*)\)/.exec(e=e.toLowerCase());if(o){u=o[2].split(",");switch(o[1]){case"hsl":return n(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(xn(u[0]),xn(u[1]),xn(u[2]))}}return(a=Tn.get(e))?t(a.r,a.g,a.b):(e!=null&&e.charAt(0)==="#"&&!isNaN(a=parseInt(e.slice(1),16))&&(e.length===4?(r=(a&3840)>>4,r=r>>4|r,i=a&240,i=i>>4|i,s=a&15,s=s<<4|s):e.length===7&&(r=(a&16711680)>>16,i=(a&65280)>>8,s=a&255)),t(r,i,s))}function wn(e,t,n){var r=Math.min(e/=255,t/=255,n/=255),i=Math.max(e,t,n),s=i-r,o,u,a=(i+r)/2;return s?(u=a<.5?s/(i+r):s/(2-i-r),e==i?o=(t-n)/s+(t<n?6:0):t==i?o=(n-e)/s+2:o=(e-t)/s+4,o*=60):(o=NaN,u=a>0&&a<1?0:o),new Qt(o,u,a)}function En(e,t,n){e=Sn(e),t=Sn(t),n=Sn(n);var r=hn((.4124564*e+.3575761*t+.1804375*n)/sn),i=hn((.2126729*e+.7151522*t+.072175*n)/on),s=hn((.0193339*e+.119192*t+.9503041*n)/un);return nn(116*i-16,500*(r-i),200*(i-s))}function Sn(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function xn(e){var t=parseFloat(e);return e.charAt(e.length-1)==="%"?Math.round(t*2.55):t}function Nn(e){return typeof e=="function"?e:function(){return e}}function Cn(e){return function(t,n,r){return arguments.length===2&&typeof n=="function"&&(r=n,n=null),kn(t,n,e,r)}}function kn(t,r,i,s){function c(){var e=f.status,t;if(!e&&An(f)||e>=200&&e<300||e===304){try{t=i.call(o,f)}catch(n){u.error.call(o,n);return}u.load.call(o,t)}else u.error.call(o,f)}var o={},u=e.dispatch("beforesend","progress","load","error"),a={},f=new XMLHttpRequest,l=null;return this.XDomainRequest&&!("withCredentials"in f)&&/^(http(s)?:)?\/\//.test(t)&&(f=new XDomainRequest),"onload"in f?f.onload=f.onerror=c:f.onreadystatechange=function(){f.readyState>3&&c()},f.onprogress=function(t){var n=e.event;e.event=t;try{u.progress.call(o,f)}finally{e.event=n}},o.header=function(e,t){return e=(e+"").toLowerCase(),arguments.length<2?a[e]:(t==null?delete a[e]:a[e]=t+"",o)},o.mimeType=function(e){return arguments.length?(r=e==null?null:e+"",o):r},o.responseType=function(e){return arguments.length?(l=e,o):l},o.response=function(e){return i=e,o},["get","post"].forEach(function(e){o[e]=function(){return o.send.apply(o,[e].concat(n(arguments)))}}),o.send=function(e,n,i){arguments.length===2&&typeof n=="function"&&(i=n,n=null),f.open(e,t,!0),r!=null&&!("accept"in a)&&(a.accept=r+",*/*");if(f.setRequestHeader)for(var s in a)f.setRequestHeader(s,a[s]);return r!=null&&f.overrideMimeType&&f.overrideMimeType(r),l!=null&&(f.responseType=l),i!=null&&o.on("error",i).on("load",function(e){i(null,e)}),u.beforesend.call(o,f),f.send(n==null?null:n),o},o.abort=function(){return f.abort(),o},e.rebind(o,u,"on"),s==null?o:o.get(Ln(s))}function Ln(e){return e.length===1?function(t,n){e(t==null?n:null)}:e}function An(e){var t=e.responseType;return t&&t!=="text"?e.response:e.responseText}function Hn(e,t,n){var r=arguments.length;r<2&&(t=0),r<3&&(n=Date.now());var i=n+t,s={c:e,t:i,n:null};return Mn?Mn.n=s:On=s,Mn=s,_n||(Dn=clearTimeout(Dn),_n=1,Pn(Bn)),s}function Bn(){var e=jn(),t=Fn()-e;t>24?(isFinite(t)&&(clearTimeout(Dn),Dn=setTimeout(Bn,t)),_n=0):(_n=1,Pn(Bn))}function jn(){var e=Date.now(),t=On;while(t)e>=t.t&&t.c(e-t.t)&&(t.c=null),t=t.n;return e}function Fn(){var e,t=On,n=Infinity;while(t)t.c?(t.t<n&&(n=t.t),t=(e=t).n):t=e?e.n=t.n:On=t.n;return Mn=e,n}function In(e,t){return t-(e?Math.ceil(Math.log(e)/Math.LN10):1)}function Rn(e,t){var n=Math.pow(10,b(8-t)*3);return{scale:t>8?function(e){return e/n}:function(e){return e*n},symbol:e}}function Un(t){var n=t.decimal,r=t.thousands,i=t.grouping,s=t.currency,o=i&&r?function(e,t){var n=e.length,s=[],o=0,u=i[0],a=0;while(n>0&&u>0){a+u+1>t&&(u=Math.max(1,t-a)),s.push(e.substring(n-=u,n+u));if((a+=u+1)>t)break;u=i[o=(o+1)%i.length]}return s.reverse().join(r)}:D;return function(t){var r=zn.exec(t),i=r[1]||" ",u=r[2]||">",a=r[3]||"-",f=r[4]||"",l=r[5],c=+r[6],h=r[7],p=r[8],d=r[9],v=1,m="",g="",y=!1,b=!0;p&&(p=+p.substring(1));if(l||i==="0"&&u==="=")l=i="0",u="=";switch(d){case"n":h=!0,d="g";break;case"%":v=100,g="%",d="f";break;case"p":v=100,g="%",d="r";break;case"b":case"o":case"x":case"X":f==="#"&&(m="0"+d.toLowerCase());case"c":b=!1;case"d":y=!0,p=0;break;case"s":v=-1,d="r"}f==="$"&&(m=s[0],g=s[1]),d=="r"&&!p&&(d="g");if(p!=null)if(d=="g")p=Math.max(1,Math.min(21,p));else if(d=="e"||d=="f")p=Math.max(0,Math.min(20,p));d=Wn.get(d)||Xn;var w=l&&h;return function(t){var r=g;if(y&&t%1)return"";var s=t<0||t===0&&1/t<0?(t=-t,"-"):a==="-"?"":a;if(v<0){var f=e.formatPrefix(t,p);t=f.scale(t),r=f.symbol+g}else t*=v;t=d(t,p);var E=t.lastIndexOf("."),S,x;if(E<0){var T=b?t.lastIndexOf("e"):-1;T<0?(S=t,x=""):(S=t.substring(0,T),x=t.substring(T))}else S=t.substring(0,E),x=n+t.substring(E+1);!l&&h&&(S=o(S,Infinity));var N=m.length+S.length+x.length+(w?0:s.length),C=N<c?(new Array(N=c-N+1)).join(i):"";return w&&(S=o(C+S,C.length?c-x.length:Infinity)),s+=m,t=S+x,(u==="<"?s+t+C:u===">"?C+s+t:u==="^"?C.substring(0,N>>=1)+s+t+C.substring(N):s+(w?t:C+t))+r}}}function Xn(e){return e+""}function Jn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Qn(e,t,n){function r(t){var n=e(t),r=s(n,1);return t-n<r-t?n:r}function i(n){return t(n=e(new $n(n-1)),1),n}function s(e,n){return t(e=new $n(+e),n),e}function o(e,r,s){var o=i(e),u=[];if(s>1)while(o<r)n(o)%s||u.push(new Date(+o)),t(o,1);else while(o<r)u.push(new Date(+o)),t(o,1);return u}function u(e,t,n){try{$n=Jn;var r=new Jn;return r._=e,o(r,t,n)}finally{$n=Date}}e.floor=e,e.round=r,e.ceil=i,e.offset=s,e.range=o;var a=e.utc=Gn(e);return a.floor=a,a.round=Gn(r),a.ceil=Gn(i),a.offset=Gn(s),a.range=u,e}function Gn(e){return function(t,n){try{$n=Jn;var r=new Jn;return r._=t,e(r,n)._}finally{$n=Date}}}function Yn(t){function l(e){function n(n){var r=[],i=-1,s=0,o,u,a;while(++i<t)if(e.charCodeAt(i)===37){r.push(e.slice(s,i)),(u=Zn[o=e.charAt(++i)])!=null&&(o=e.charAt(++i));if(a=E[o])o=a(n,u==null?o==="e"?" ":"0":u);r.push(o),s=i+1}return r.push(e.slice(s,i)),r.join("")}var t=e.length;return n.parse=function(t){var n={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},r=c(n,e,t,0);if(r!=t.length)return null;"p"in n&&(n.H=n.H%12+n.p*12);var i=n.Z!=null&&$n!==Jn,s=new(i?Jn:$n);return"j"in n?s.setFullYear(n.y,0,n.j):"W"in n||"U"in n?("w"in n||(n.w="W"in n?1:0),s.setFullYear(n.y,0,1),s.setFullYear(n.y,0,"W"in n?(n.w+6)%7+n.W*7-(s.getDay()+5)%7:n.w+n.U*7-(s.getDay()+6)%7)):s.setFullYear(n.y,n.m,n.d),s.setHours(n.H+(n.Z/100|0),n.M+n.Z%100,n.S,n.L),i?s._:s},n.toString=function(){return e},n}function c(e,t,n,r){var i,s,o,u=0,a=t.length,f=n.length;while(u<a){if(r>=f)return-1;i=t.charCodeAt(u++);if(i===37){o=t.charAt(u++),s=S[o in Zn?t.charAt(u++):o];if(!s||(r=s(e,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}function x(e,t,n){v.lastIndex=0;var r=v.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function T(e,t,n){p.lastIndex=0;var r=p.exec(t.slice(n));return r?(e.w=d.get(r[0].toLowerCase()),n+r[0].length):-1}function N(e,t,n){b.lastIndex=0;var r=b.exec(t.slice(n));return r?(e.m=w.get(r[0].toLowerCase()),n+r[0].length):-1}function C(e,t,n){g.lastIndex=0;var r=g.exec(t.slice(n));return r?(e.m=y.get(r[0].toLowerCase()),n+r[0].length):-1}function k(e,t,n){return c(e,E.c.toString(),t,n)}function L(e,t,n){return c(e,E.x.toString(),t,n)}function A(e,t,n){return c(e,E.X.toString(),t,n)}function O(e,t,n){var r=h.get(t.slice(n,n+=2).toLowerCase());return r==null?-1:(e.p=r,n)}var n=t.dateTime,r=t.date,i=t.time,s=t.periods,o=t.days,u=t.shortDays,a=t.months,f=t.shortMonths;l.utc=function(e){function n(e){try{$n=Jn;var n=new $n;return n._=e,t(n)}finally{$n=Date}}var t=l(e);return n.parse=function(e){try{$n=Jn;var n=t.parse(e);return n&&n._}finally{$n=Date}},n.toString=t.toString,n},l.multi=l.utc.multi=Er;var h=e.map(),p=rr(o),d=ir(o),v=rr(u),m=ir(u),g=rr(a),y=ir(a),b=rr(f),w=ir(f);s.forEach(function(e,t){h.set(e.toLowerCase(),t)});var E={a:function(e){return u[e.getDay()]},A:function(e){return o[e.getDay()]},b:function(e){return f[e.getMonth()]},B:function(e){return a[e.getMonth()]},c:l(n),d:function(e,t){return nr(e.getDate(),t,2)},e:function(e,t){return nr(e.getDate(),t,2)},H:function(e,t){return nr(e.getHours(),t,2)},I:function(e,t){return nr(e.getHours()%12||12,t,2)},j:function(e,t){return nr(1+Vn.dayOfYear(e),t,3)},L:function(e,t){return nr(e.getMilliseconds(),t,3)},m:function(e,t){return nr(e.getMonth()+1,t,2)},M:function(e,t){return nr(e.getMinutes(),t,2)},p:function(e){return s[+(e.getHours()>=12)]},S:function(e,t){return nr(e.getSeconds(),t,2)},U:function(e,t){return nr(Vn.sundayOfYear(e),t,2)},w:function(e){return e.getDay()},W:function(e,t){return nr(Vn.mondayOfYear(e),t,2)},x:l(r),X:l(i),y:function(e,t){return nr(e.getFullYear()%100,t,2)},Y:function(e,t){return nr(e.getFullYear()%1e4,t,4)},Z:br,"%":function(){return"%"}},S={a:x,A:T,b:N,B:C,c:k,d:pr,e:pr,H:vr,I:vr,j:dr,L:yr,m:hr,M:mr,p:O,S:gr,U:or,w:sr,W:ur,x:L,X:A,y:fr,Y:ar,Z:lr,"%":wr};return l}function nr(e,t,n){var r=e<0?"-":"",i=(r?-e:e)+"",s=i.length;return r+(s<n?(new Array(n-s+1)).join(t)+i:i)}function rr(t){return new RegExp("^(?:"+t.map(e.requote).join("|")+")","i")}function ir(e){var t=new S,n=-1,r=e.length;while(++n<r)t.set(e[n].toLowerCase(),n);return t}function sr(e,t,n){er.lastIndex=0;var r=er.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function or(e,t,n){er.lastIndex=0;var r=er.exec(t.slice(n));return r?(e.U=+r[0],n+r[0].length):-1}function ur(e,t,n){er.lastIndex=0;var r=er.exec(t.slice(n));return r?(e.W=+r[0],n+r[0].length):-1}function ar(e,t,n){er.lastIndex=0;var r=er.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function fr(e,t,n){er.lastIndex=0;var r=er.exec(t.slice(n,n+2));return r?(e.y=cr(+r[0]),n+r[0].length):-1}function lr(e,t,n){return/^[+-]\d{4}$/.test(t=t.slice(n,n+5))?(e.Z=-t,n+5):-1}function cr(e){return e+(e>68?1900:2e3)}function hr(e,t,n){er.lastIndex=0;var r=er.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function pr(e,t,n){er.lastIndex=0;var r=er.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function dr(e,t,n){er.lastIndex=0;var r=er.exec(t.slice(n,n+3));return r?(e.j=+r[0],n+r[0].length):-1}function vr(e,t,n){er.lastIndex=0;var r=er.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function mr(e,t,n){er.lastIndex=0;var r=er.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function gr(e,t,n){er.lastIndex=0;var r=er.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function yr(e,t,n){er.lastIndex=0;var r=er.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function br(e){var t=e.getTimezoneOffset(),n=t>0?"-":"+",r=b(t)/60|0,i=b(t)%60;return n+nr(r,"0",2)+nr(i,"0",2)}function wr(e,t,n){tr.lastIndex=0;var r=tr.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function Er(e){var t=e.length,n=-1;while(++n<t)e[n][0]=this(e[n][0]);return function(t){var n=0,r=e[n];while(!r[1](t))r=e[++n];return r[0](t)}}function xr(){}function Nr(e,t,n){var r=n.s=e+t,i=r-e,s=r-i;n.t=e-s+(t-i)}function Cr(e,t){e&&Lr.hasOwnProperty(e.type)&&Lr[e.type](e,t)}function Ar(e,t,n){var r=-1,i=e.length-n,s;t.lineStart();while(++r<i)s=e[r],t.point(s[0],s[1],s[2]);t.lineEnd()}function Or(e,t){var n=-1,r=e.length;t.polygonStart();while(++n<r)Ar(e[n],t,1);t.polygonEnd()}function Pr(){function s(e,t){e*=Dt,t=t*Dt/2+At/4;var s=e-n,o=s>=0?1:-1,u=o*s,a=Math.cos(t),f=Math.sin(t),l=i*f,c=r*a+l*Math.cos(u),h=l*o*Math.sin(u);_r.add(Math.atan2(h,c)),n=e,r=a,i=f}var e,t,n,r,i;Dr.point=function(o,u){Dr.point=s,n=(e=o)*Dt,r=Math.cos(u=(t=u)*Dt/2+At/4),i=Math.sin(u)},Dr.lineEnd=function(){s(e,t)}}function Hr(e){var t=e[0],n=e[1],r=Math.cos(n);return[r*Math.cos(t),r*Math.sin(t),Math.sin(n)]}function Br(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function jr(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function Fr(e,t){e[0]+=t[0],e[1]+=t[1],e[2]+=t[2]}function Ir(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function qr(e){var t=Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);e[0]/=t,e[1]/=t,e[2]/=t}function Rr(e){return[Math.atan2(e[1],e[0]),Ft(e[2])]}function Ur(e,t){return b(e[0]-t[0])<kt&&b(e[1]-t[1])<kt}function ti(e,t){e*=Dt;var n=Math.cos(t*=Dt);ni(n*Math.cos(e),n*Math.sin(e),Math.sin(t))}function ni(e,t,n){++zr,Xr+=(e-Xr)/zr,Vr+=(t-Vr)/zr,$r+=(n-$r)/zr}function ri(){function r(r,i){r*=Dt;var s=Math.cos(i*=Dt),o=s*Math.cos(r),u=s*Math.sin(r),a=Math.sin(i),f=Math.atan2(Math.sqrt((f=t*a-n*u)*f+(f=n*o-e*a)*f+(f=e*u-t*o)*f),e*o+t*u+n*a);Wr+=f,Jr+=f*(e+(e=o)),Kr+=f*(t+(t=u)),Qr+=f*(n+(n=a)),ni(e,t,n)}var e,t,n;ei.point=function(i,s){i*=Dt;var o=Math.cos(s*=Dt);e=o*Math.cos(i),t=o*Math.sin(i),n=Math.sin(s),ei.point=r,ni(e,t,n)}}function ii(){ei.point=ti}function si(){function s(e,t){e*=Dt;var s=Math.cos(t*=Dt),o=s*Math.cos(e),u=s*Math.sin(e),a=Math.sin(t),f=r*a-i*u,l=i*o-n*a,c=n*u-r*o,h=Math.sqrt(f*f+l*l+c*c),p=n*o+r*u+i*a,d=h&&-jt(p)/h,v=Math.atan2(h,p);Gr+=d*f,Yr+=d*l,Zr+=d*c,Wr+=v,Jr+=v*(n+(n=o)),Kr+=v*(r+(r=u)),Qr+=v*(i+(i=a)),ni(n,r,i)}var e,t,n,r,i;ei.point=function(o,u){e=o,t=u,ei.point=s,o*=Dt;var a=Math.cos(u*=Dt);n=a*Math.cos(o),r=a*Math.sin(o),i=Math.sin(u),ni(n,r,i)},ei.lineEnd=function(){s(e,t),ei.lineEnd=ii,ei.point=ti}}function oi(e,t){function n(n,r){return n=e(n,r),t(n[0],n[1])}return e.invert&&t.invert&&(n.invert=function(n,r){return n=t.invert(n,r),n&&e.invert(n[0],n[1])}),n}function ui(){return!0}function ai(e,t,n,r,i){var s=[],o=[];e.forEach(function(e){if((t=e.length-1)<=0)return;var t,n=e[0],r=e[t];if(Ur(n,r)){i.lineStart();for(var u=0;u<t;++u)i.point((n=e[u])[0],n[1]);i.lineEnd();return}var a=new li(n,e,null,!0),f=new li(n,null,a,!1);a.o=f,s.push(a),o.push(f),a=new li(r,e,null,!1),f=new li(r,null,a,!0),a.o=f,s.push(a),o.push(f)}),o.sort(t),fi(s),fi(o);if(!s.length)return;for(var u=0,a=n,f=o.length;u<f;++u)o[u].e=a=!a;var l=s[0],c,h;for(;;){var p=l,d=!0;while(p.v)if((p=p.n)===l)return;c=p.z,i.lineStart();do{p.v=p.o.v=!0;if(p.e){if(d)for(var u=0,f=c.length;u<f;++u)i.point((h=c[u])[0],h[1]);else r(p.x,p.n.x,1,i);p=p.n}else{if(d){c=p.p.z;for(var u=c.length-1;u>=0;--u)i.point((h=c[u])[0],h[1])}else r(p.x,p.p.x,-1,i);p=p.p}p=p.o,c=p.z,d=!d}while(!p.v);i.lineEnd()}}function fi(e){if(!(t=e.length))return;var t,n=0,r=e[0],i;while(++n<t)r.n=i=e[n],i.p=r,r=i;r.n=i=e[0],i.p=r}function li(e,t,n,r){this.x=e,this.z=t,this.o=n,this.e=r,this.v=!1,this.n=this.p=null}function ci(t,n,r,i){return function(s,o){function l(e,n){var r=s(e,n);t(e=r[0],n=r[1])&&o.point(e,n)}function c(e,t){var n=s(e,t);u.point(n[0],n[1])}function h(){f.point=c,u.lineStart()}function p(){f.point=l,u.lineEnd()}function w(e,t){b.push([e,t]);var n=s(e,t);m.point(n[0],n[1])}function E(){m.lineStart(),b=[]}function S(){w(b[0][0],b[0][1]),m.lineEnd();var e=m.clean(),t=v.buffer(),n,r=t.length;b.pop(),y.push(b),b=null;if(!r)return;if(e&1){n=t[0];var r=n.length-1,i=-1,s;if(r>0){g||(o.polygonStart(),g=!0),o.lineStart();while(++i<r)o.point((s=n[i])[0],s[1]);o.lineEnd()}return}r>1&&e&2&&t.push(t.pop().concat(t.shift())),d.push(t.filter(hi))}var u=n(o),a=s.invert(i[0],i[1]),f={point:l,lineStart:h,lineEnd:p,polygonStart:function(){f.point=w,f.lineStart=E,f.lineEnd=S,d=[],y=[]},polygonEnd:function(){f.point=l,f.lineStart=h,f.lineEnd=p,d=e.merge(d);var t=bi(a,y);d.length?(g||(o.polygonStart(),g=!0),ai(d,di,t,r,o)):t&&(g||(o.polygonStart(),g=!0),o.lineStart(),r(null,null,1,o),o.lineEnd()),g&&(o.polygonEnd(),g=!1),d=y=null},sphere:function(){o.polygonStart(),o.lineStart(),r(null,null,1,o),o.lineEnd(),o.polygonEnd()}},d,v=pi(),m=n(v),g=!1,y,b;return f}}function hi(e){return e.length>1}function pi(){var e=[],t;return{lineStart:function(){e.push(t=[])},point:function(e,n){t.push([e,n])},lineEnd:j,buffer:function(){var n=e;return e=[],t=null,n},rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))}}}function di(e,t){return((e=e.x)[0]<0?e[1]-_t-kt:_t-e[1])-((t=t.x)[0]<0?t[1]-_t-kt:_t-t[1])}function mi(e){var t=NaN,n=NaN,r=NaN,i;return{lineStart:function(){e.lineStart(),i=1},point:function(s,o){var u=s>0?At:-At,a=b(s-t);b(a-At)<kt?(e.point(t,n=(n+o)/2>0?_t:-_t),e.point(r,n),e.lineEnd(),e.lineStart(),e.point(u,n),e.point(s,n),i=0):r!==u&&a>=At&&(b(t-r)<kt&&(t-=r*kt),b(s-u)<kt&&(s-=u*kt),n=gi(t,n,s,o),e.point(r,n),e.lineEnd(),e.lineStart(),e.point(u,n),i=0),e.point(t=s,n=o),r=u},lineEnd:function(){e.lineEnd(),t=n=NaN},clean:function(){return 2-i}}}function gi(e,t,n,r){var i,s,o=Math.sin(e-n);return b(o)>kt?Math.atan((Math.sin(t)*(s=Math.cos(r))*Math.sin(n)-Math.sin(r)*(i=Math.cos(t))*Math.sin(e))/(i*s*o)):(t+r)/2}function yi(e,t,n,r){var i;if(e==null)i=n*_t,r.point(-At,i),r.point(0,i),r.point(At,i),r.point(At,0),r.point(At,-i),r.point(0,-i),r.point(-At,-i),r.point(-At,0),r.point(-At,i);else if(b(e[0]-t[0])>kt){var s=e[0]<t[0]?At:-At;i=n*s/2,r.point(-s,i),r.point(0,i),r.point(s,i)}else r.point(t[0],t[1])}function bi(e,t){var n=e[0],r=e[1],i=[Math.sin(n),-Math.cos(n),0],s=0,o=0;_r.reset();for(var u=0,a=t.length;u<a;++u){var f=t[u],l=f.length;if(!l)continue;var c=f[0],h=c[0],p=c[1]/2+At/4,d=Math.sin(p),v=Math.cos(p),m=1;for(;;){m===l&&(m=0),e=f[m];var g=e[0],y=e[1]/2+At/4,b=Math.sin(y),w=Math.cos(y),E=g-h,S=E>=0?1:-1,x=S*E,T=x>At,N=d*b;_r.add(Math.atan2(N*S*Math.sin(x),v*w+N*Math.cos(x))),s+=T?E+S*Ot:E;if(T^h>=n^g>=n){var C=jr(Hr(c),Hr(e));qr(C);var k=jr(i,C);qr(k);var L=(T^E>=0?-1:1)*Ft(k[2]);if(r>L||r===L&&(C[0]||C[1]))o+=T^E>=0?1:-1}if(!(m++))break;h=g,d=b,v=w,c=e}}return(s<-kt||s<kt&&_r<-kt)^o&1}function wi(e){function s(e,n){return Math.cos(e)*Math.cos(n)>t}function o(e){var t,i,o,f,l;return{lineStart:function(){f=o=!1,l=1},point:function(c,h){var p=[c,h],d,v=s(c,h),m=n?v?0:a(c,h):v?a(c+(c<0?At:-At),h):0;!t&&(f=o=v)&&e.lineStart();if(v!==o){d=u(t,p);if(Ur(t,d)||Ur(p,d))p[0]+=kt,p[1]+=kt,v=s(p[0],p[1])}if(v!==o)l=0,v?(e.lineStart(),d=u(p,t),e.point(d[0],d[1])):(d=u(t,p),e.point(d[0],d[1]),e.lineEnd()),t=d;else if(r&&t&&n^v){var g;!(m&i)&&(g=u(p,t,!0))&&(l=0,n?(e.lineStart(),e.point(g[0][0],g[0][1]),e.point(g[1][0],g[1][1]),e.lineEnd()):(e.point(g[1][0],g[1][1]),e.lineEnd(),e.lineStart(),e.point(g[0][0],g[0][1])))}v&&(!t||!Ur(t,p))&&e.point(p[0],p[1]),t=p,o=v,i=m},lineEnd:function(){o&&e.lineEnd(),t=null},clean:function(){return l|(f&&o)<<1}}}function u(e,n,r){var i=Hr(e),s=Hr(n),o=[1,0,0],u=jr(i,s),a=Br(u,u),f=u[0],l=a-f*f;if(!l)return!r&&e;var c=t*a/l,h=-t*f/l,p=jr(o,u),d=Ir(o,c),v=Ir(u,h);Fr(d,v);var m=p,g=Br(d,m),y=Br(m,m),w=g*g-y*(Br(d,d)-1);if(w<0)return;var E=Math.sqrt(w),S=Ir(m,(-g-E)/y);Fr(S,d),S=Rr(S);if(!r)return S;var x=e[0],T=n[0],N=e[1],C=n[1],k;T<x&&(k=x,x=T,T=k);var L=T-x,A=b(L-At)<kt,O=A||L<kt;!A&&C<N&&(k=N,N=C,C=k);if(O?A?N+C>0^S[1]<(b(S[0]-x)<kt?N:C):N<=S[1]&&S[1]<=C:L>At^(x<=S[0]&&S[0]<=T)){var M=Ir(m,(-g+E)/y);return Fr(M,d),[S,Rr(M)]}}function a(t,r){var i=n?e:At-e,s=0;return t<-i?s|=1:t>i&&(s|=2),r<-i?s|=4:r>i&&(s|=8),s}var t=Math.cos(e),n=t>0,r=b(t)>kt,i=rs(e,6*Dt);return ci(s,o,i,n?[0,-e]:[-At,e-At])}function Ei(e,t,n,r){return function(i){var s=i.a,o=i.b,u=s.x,a=s.y,f=o.x,l=o.y,c=0,h=1,p=f-u,d=l-a,v;v=e-u;if(!p&&v>0)return;v/=p;if(p<0){if(v<c)return;v<h&&(h=v)}else if(p>0){if(v>h)return;v>c&&(c=v)}v=n-u;if(!p&&v<0)return;v/=p;if(p<0){if(v>h)return;v>c&&(c=v)}else if(p>0){if(v<c)return;v<h&&(h=v)}v=t-a;if(!d&&v>0)return;v/=d;if(d<0){if(v<c)return;v<h&&(h=v)}else if(d>0){if(v>h)return;v>c&&(c=v)}v=r-a;if(!d&&v<0)return;v/=d;if(d<0){if(v>h)return;v>c&&(c=v)}else if(d>0){if(v<c)return;v<h&&(h=v)}return c>0&&(i.a={x:u+c*p,y:a+c*d}),h<1&&(i.b={x:u+h*p,y:a+h*d}),i}}function xi(t,n,r,i){function s(e,i){return b(e[0]-t)<kt?i>0?0:3:b(e[0]-r)<kt?i>0?2:1:b(e[1]-n)<kt?i>0?1:0:i>0?3:2}function o(e,t){return u(e.x,t.x)}function u(e,t){var n=s(e,1),r=s(t,1);return n!==r?n-r:n===0?t[1]-e[1]:n===1?e[0]-t[0]:n===2?e[1]-t[1]:t[0]-e[0]}return function(a){function m(e){var t=0,n=p.length,r=e[1];for(var i=0;i<n;++i)for(var s=1,o=p[i],u=o.length,a=o[0],f;s<u;++s)f=o[s],a[1]<=r?f[1]>r&&Bt(a,f,e)>0&&++t:f[1]<=r&&Bt(a,f,e)<0&&--t,a=f;return t!==0}function g(e,o,a,f){var l=0,c=0;if(e==null||(l=s(e,a))!==(c=s(o,a))||u(e,o)<0^a>0){do f.point(l===0||l===3?t:r,l>1?i:n);while((l=(l+a+4)%4)!==c)}else f.point(o[0],o[1])}function y(e,s){return t<=e&&e<=r&&n<=s&&s<=i}function b(e,t){y(e,t)&&a.point(e,t)}function L(){v.point=O,p&&p.push(d=[]),C=!0,N=!1,x=T=NaN}function A(){h&&(O(w,E),S&&N&&l.rejoin(),h.push(l.buffer())),v.point=b,N&&a.lineEnd()}function O(e,t){e=Math.max(-Si,Math.min(Si,e)),t=Math.max(-Si,Math.min(Si,t));var n=y(e,t);p&&d.push([e,t]);if(C)w=e,E=t,S=n,C=!1,n&&(a.lineStart(),a.point(e,t));else if(n&&N)a.point(e,t);else{var r={a:{x:x,y:T},b:{x:e,y:t}};c(r)?(N||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),n||a.lineEnd(),k=!1):n&&(a.lineStart(),a.point(e,t),k=!1)}x=e,T=t,N=n}var f=a,l=pi(),c=Ei(t,n,r,i),h,p,d,v={point:b,lineStart:L,lineEnd:A,polygonStart:function(){a=l,h=[],p=[],k=!0},polygonEnd:function(){a=f,h=e.merge(h);var n=m([t,i]),r=k&&n,s=h.length;if(r||s)a.polygonStart(),r&&(a.lineStart(),g(null,null,1,a),a.lineEnd()),s&&ai(h,o,n,g,a),a.polygonEnd();h=p=d=null}},w,E,S,x,T,N,C,k;return v}}function Ti(e){var t=0,n=At/3,r=Ki(e),i=r(t,n);return i.parallels=function(e){return arguments.length?r(t=e[0]*At/180,n=e[1]*At/180):[t/At*180,n/At*180]},i}function Ni(e,t){function o(e,t){var n=Math.sqrt(i-2*r*Math.sin(t))/r;return[n*Math.sin(e*=r),s-n*Math.cos(e)]}var n=Math.sin(e),r=(n+Math.sin(t))/2,i=1+n*(2*r-n),s=Math.sqrt(i)/r;return o.invert=function(e,t){var n=s-t;return[Math.atan2(e,n)/r,Ft((i-(e*e+n*n)*r*r)/(2*r))]},o}function Ai(){function i(e,t){ki+=r*e-n*t,n=e,r=t}var e,t,n,r;Li.point=function(s,o){Li.point=i,e=n=s,t=r=o},Li.lineEnd=function(){i(e,t)}}function Hi(e,t){e<Oi&&(Oi=e),e>_i&&(_i=e),t<Mi&&(Mi=t),t>Di&&(Di=t)}function Bi(){function r(n,r){t.push("M",n,",",r,e)}function i(e,r){t.push("M",e,",",r),n.point=s}function s(e,n){t.push("L",e,",",n)}function o(){n.point=r}function u(){t.push("Z")}var e=ji(4.5),t=[],n={point:r,lineStart:function(){n.point=i},lineEnd:o,polygonStart:function(){n.lineEnd=u},polygonEnd:function(){n.lineEnd=o,n.point=r},pointRadius:function(t){return e=ji(t),n},result:function(){if(t.length){var e=t.join("");return t=[],e}}};return n}function ji(e){return"m0,"+e+"a"+e+","+e+" 0 1,1 0,"+ -2*e+"a"+e+","+e+" 0 1,1 0,"+2*e+"z"}function Ii(e,t){Xr+=e,Vr+=t,++$r}function qi(){function n(n,r){var i=n-e,s=r-t,o=Math.sqrt(i*i+s*s);Jr+=o*(e+n)/2,Kr+=o*(t+r)/2,Qr+=o,Ii(e=n,t=r)}var e,t;Fi.point=function(r,i){Fi.point=n,Ii(e=r,t=i)}}function Ri(){Fi.point=Ii}function Ui(){function i(e,t){var i=e-n,s=t-r,o=Math.sqrt(i*i+s*s);Jr+=o*(n+e)/2,Kr+=o*(r+t)/2,Qr+=o,o=r*e-n*t,Gr+=o*(n+e),Yr+=o*(r+t),Zr+=o*3,Ii(n=e,r=t)}var e,t,n,r;Fi.point=function(s,o){Fi.point=i,Ii(e=n=s,t=r=o)},Fi.lineEnd=function(){i(e,t)}}function zi(e){function r(n,r){e.moveTo(n+t,r),e.arc(n,r,t,0,Ot)}function i(t,r){e.moveTo(t,r),n.point=s}function s(t,n){e.lineTo(t,n)}function o(){n.point=r}function u(){e.closePath()}var t=4.5,n={point:r,lineStart:function(){n.point=i},lineEnd:o,polygonStart:function(){n.lineEnd=u},polygonEnd:function(){n.lineEnd=o,n.point=r},pointRadius:function(e){return t=e,n},result:j};return n}function Wi(e){function i(e){return(r?o:s)(e)}function s(t){return $i(t,function(n,r){n=e(n,r),t.point(n[0],n[1])})}function o(t){function y(n,r){n=e(n,r),t.point(n[0],n[1])}function b(){h=NaN,g.point=w,t.lineStart()}function w(n,i){var s=Hr([n,i]),o=e(n,i);u(h,p,c,d,v,m,h=o[0],p=o[1],c=n,d=s[0],v=s[1],m=s[2],r,t),t.point(h,p)}function E(){g.point=y,t.lineEnd()}function S(){b(),g.point=x,g.lineEnd=T}function x(e,t){w(n=e,i=t),s=h,o=p,a=d,f=v,l=m,g.point=w}function T(){u(h,p,c,d,v,m,s,o,n,a,f,l,r,t),g.lineEnd=E,E()}var n,i,s,o,a,f,l,c,h,p,d,v,m,g={point:y,lineStart:b,lineEnd:E,polygonStart:function(){t.polygonStart(),g.lineStart=S},polygonEnd:function(){t.polygonEnd(),g.lineStart=b}};return g}function u(r,i,s,o,a,f,l,c,h,p,d,v,m,g){var y=l-r,w=c-i,E=y*y+w*w;if(E>4*t&&m--){var S=o+p,x=a+d,T=f+v,N=Math.sqrt(S*S+x*x+T*T),C=Math.asin(T/=N),k=b(b(T)-1)<kt||b(s-h)<kt?(s+h)/2:Math.atan2(x,S),L=e(k,C),A=L[0],O=L[1],M=A-r,_=O-i,D=w*M-y*_;if(D*D/E>t||b((y*M+w*_)/E-.5)>.3||o*p+a*d+f*v<n)u(r,i,s,o,a,f,A,O,k,S/=N,x/=N,T,m,g),g.point(A,O),u(A,O,k,S,x,T,l,c,h,p,d,v,m,g)}}var t=.5,n=Math.cos(30*Dt),r=16;return i.precision=function(e){return arguments.length?(r=(t=e*e)>0&&16,i):Math.sqrt(t)},i}function Xi(e){var t=Wi(function(t,n){return e([t*Pt,n*Pt])});return function(e){return Qi(t(e))}}function Vi(e){this.stream=e}function $i(e,t){return{point:t,sphere:function(){e.sphere()},lineStart:function(){e.lineStart()},lineEnd:function(){e.lineEnd()},polygonStart:function(){e.polygonStart()},polygonEnd:function(){e.polygonEnd()}}}function Ji(e){return Ki(function(){return e})()}function Ki(t){function E(e){return e=i(e[0]*Dt,e[1]*Dt),[e[0]*o+d,v-e[1]*o]}function S(e){return e=i.invert((e[0]-d)/o,(v-e[1])/o),e&&[e[0]*Pt,e[1]*Pt]}function x(){i=oi(r=Zi(c,h,p),n);var e=n(f,l);return d=u-e[0]*o,v=a+e[1]*o,T()}function T(){return w&&(w.valid=!1,w=null),E}var n,r,i,s=Wi(function(e,t){return e=n(e,t),[e[0]*o+d,v-e[1]*o]}),o=150,u=480,a=250,f=0,l=0,c=0,h=0,p=0,d,v,m=vi,g=D,y=null,b=null,w;return E.stream=function(e){return w&&(w.valid=!1),w=Qi(m(r,s(g(e)))),w.valid=!0,w},E.clipAngle=function(e){return arguments.length?(m=e==null?(y=e,vi):wi((y=+e)*Dt),T()):y},E.clipExtent=function(e){return arguments.length?(b=e,g=e?xi(e[0][0],e[0][1],e[1][0],e[1][1]):D,T()):b},E.scale=function(e){return arguments.length?(o=+e,x()):o},E.translate=function(e){return arguments.length?(u=+e[0],a=+e[1],x()):[u,a]},E.center=function(e){return arguments.length?(f=e[0]%360*Dt,l=e[1]%360*Dt,x()):[f*Pt,l*Pt]},E.rotate=function(e){return arguments.length?(c=e[0]%360*Dt,h=e[1]%360*Dt,p=e.length>2?e[2]%360*Dt:0,x()):[c*Pt,h*Pt,p*Pt]},e.rebind(E,s,"precision"),function(){return n=t.apply(this,arguments),E.invert=n.invert&&S,x()}}function Qi(e){return $i(e,function(t,n){e.point(t*Dt,n*Dt)})}function Gi(e,t){return[e,t]}function Yi(e,t){return[e>At?e-Ot:e<-At?e+Ot:e,t]}function Zi(e,t,n){return e?t||n?oi(ts(e),ns(t,n)):ts(e):t||n?ns(t,n):Yi}function es(e){return function(t,n){return t+=e,[t>At?t-Ot:t<-At?t+Ot:t,n]}}function ts(e){var t=es(e);return t.invert=es(-e),t}function ns(e,t){function o(e,t){var o=Math.cos(t),u=Math.cos(e)*o,a=Math.sin(e)*o,f=Math.sin(t),l=f*n+u*r;return[Math.atan2(a*i-l*s,u*n-f*r),Ft(l*i+a*s)]}var n=Math.cos(e),r=Math.sin(e),i=Math.cos(t),s=Math.sin(t);return o.invert=function(e,t){var o=Math.cos(t),u=Math.cos(e)*o,a=Math.sin(e)*o,f=Math.sin(t),l=f*i-a*s;return[Math.atan2(a*i+f*s,u*n+l*r),Ft(l*n-u*r)]},o}function rs(e,t){var n=Math.cos(e),r=Math.sin(e);return function(i,s,o,u){var a=o*t;if(i!=null){i=is(n,i),s=is(n,s);if(o>0?i<s:i>s)i+=o*Ot}else i=e+o*Ot,s=e-.5*a;for(var f,l=i;o>0?l>s:l<s;l-=a)u.point((f=Rr([n,-r*Math.cos(l),-r*Math.sin(l)]))[0],f[1])}}function is(e,t){var n=Hr(t);n[0]-=e,qr(n);var r=jt(-n[1]);return((-n[2]<0?-r:r)+2*Math.PI-kt)%(2*Math.PI)}function ss(t,n,r){var i=e.range(t,n-kt,r).concat(n);return function(e){return i.map(function(t){return[e,t]})}}function os(t,n,r){var i=e.range(t,n-kt,r).concat(n);return function(e){return i.map(function(t){return[t,e]})}}function us(e){return e.source}function as(e){return e.target}function fs(e,t,n,r){var i=Math.cos(t),s=Math.sin(t),o=Math.cos(r),u=Math.sin(r),a=i*Math.cos(e),f=i*Math.sin(e),l=o*Math.cos(n),c=o*Math.sin(n),h=2*Math.asin(Math.sqrt(Ut(r-t)+i*o*Ut(n-e))),p=1/Math.sin(h),d=h?function(e){var t=Math.sin(e*=h)*p,n=Math.sin(h-e)*p,r=n*a+t*l,i=n*f+t*c,o=n*s+t*u;return[Math.atan2(i,r)*Pt,Math.atan2(o,Math.sqrt(r*r+i*i))*Pt]}:function(){return[e*Pt,t*Pt]};return d.distance=h,d}function hs(){function r(r,i){var s=Math.sin(i*=Dt),o=Math.cos(i),u=b((r*=Dt)-e),a=Math.cos(u);ls+=Math.atan2(Math.sqrt((u=o*Math.sin(u))*u+(u=n*s-t*o*a)*u),t*s+n*o*a),e=r,t=s,n=o}var e,t,n;cs.point=function(i,s){e=i*Dt,t=Math.sin(s*=Dt),n=Math.cos(s),cs.point=r},cs.lineEnd=function(){cs.point=cs.lineEnd=j}}function ps(e,t){function n(t,n){var r=Math.cos(t),i=Math.cos(n),s=e(r*i);return[s*i*Math.sin(t),s*Math.sin(n)]}return n.invert=function(e,n){var r=Math.sqrt(e*e+n*n),i=t(r),s=Math.sin(i),o=Math.cos(i);return[Math.atan2(e*s,r*o),Math.asin(r&&n*s/r)]},n}function ms(e,t){function o(e,t){s>0?t<-_t+kt&&(t=-_t+kt):t>_t-kt&&(t=_t-kt);var n=s/Math.pow(r(t),i);return[n*Math.sin(i*e),s-n*Math.cos(i*e)]}var n=Math.cos(e),r=function(e){return Math.tan(At/4+e/2)},i=e===t?Math.sin(e):Math.log(n/Math.cos(t))/Math.log(r(t)/r(e)),s=n*Math.pow(r(e),i)/i;return i?(o.invert=function(e,t){var n=s-t,r=Ht(i)*Math.sqrt(e*e+n*n);return[Math.atan2(e,n)/i,2*Math.atan(Math.pow(s/r,1/i))-_t]},o):bs}function gs(e,t){function s(e,t){var n=i-t;return[n*Math.sin(r*e),i-n*Math.cos(r*e)]}var n=Math.cos(e),r=e===t?Math.sin(e):(n-Math.cos(t))/(t-e),i=n/r+e;return b(r)<kt?Gi:(s.invert=function(e,t){var n=i-t;return[Math.atan2(e,n)/r,i-Ht(r)*Math.sqrt(e*e+n*n)]},s)}function bs(e,t){return[e,Math.log(Math.tan(At/4+t/2))]}function ws(e){var t=Ji(e),n=t.scale,r=t.translate,i=t.clipExtent,s;return t.scale=function(){var e=n.apply(t,arguments);return e===t?s?t.clipExtent(null):t:e},t.translate=function(){var e=r.apply(t,arguments);return e===t?s?t.clipExtent(null):t:e},t.clipExtent=function(e){var o=i.apply(t,arguments);if(o===t){if(s=e==null){var u=At*n(),a=r();i([[a[0]-u,a[1]-u],[a[0]+u,a[1]+u]])}}else s&&(o=null);return o},t.clipExtent(null)}function xs(e,t){return[Math.log(Math.tan(At/4+t/2)),-e]}function Ts(e){return e[0]}function Ns(e){return e[1]}function Cs(e){var t=e.length,n=[0,1],r=2;for(var i=2;i<t;i++){while(r>1&&Bt(e[n[r-2]],e[n[r-1]],e[i])<=0)--r;n[r++]=i}return n.slice(0,r)}function ks(e,t){return e[0]-t[0]||e[1]-t[1]}function As(e,t,n){return(n[0]-t[0])*(e[1]-t[1])<(n[1]-t[1])*(e[0]-t[0])}function Os(e,t,n,r){var i=e[0],s=n[0],o=t[0]-i,u=r[0]-s,a=e[1],f=n[1],l=t[1]-a,c=r[1]-f,h=(u*(a-f)-c*(i-s))/(c*o-u*l);return[i+h*o,a+h*l]}function Ms(e){var t=e[0],n=e[e.length-1];return!(t[0]-n[0]||t[1]-n[1])}function Is(){oo(this),this.edge=this.site=this.circle=null}function qs(e){var t=Hs.pop()||new Is;return t.site=e,t}function Rs(e){Gs(e),Ps.remove(e),Hs.push(e),oo(e)}function Us(e){var t=e.circle,n=t.x,r=t.cy,i={x:n,y:r},s=e.P,o=e.N,u=[e];Rs(e);var a=s;while(a.circle&&b(n-a.circle.x)<kt&&b(r-a.circle.cy)<kt)s=a.P,u.unshift(a),Rs(a),a=s;u.unshift(a),Gs(a);var f=o;while(f.circle&&b(n-f.circle.x)<kt&&b(r-f.circle.cy)<kt)o=f.N,u.push(f),Rs(f),f=o;u.push(f),Gs(f);var l=u.length,c;for(c=1;c<l;++c)f=u[c],a=u[c-1],ro(f.edge,a.site,f.site,i);a=u[0],f=u[l-1],f.edge=to(a.site,f.site,null,i),Qs(a),Qs(f)}function zs(e){var t=e.x,n=e.y,r,i,s,o,u=Ps._;while(u){s=Ws(u,n)-t;if(s>kt)u=u.L;else{o=t-Xs(u,n);if(!(o>kt)){s>-kt?(r=u.P,i=u):o>-kt?(r=u,i=u.N):r=i=u;break}if(!u.R){r=u;break}u=u.R}}var a=qs(e);Ps.insert(r,a);if(!r&&!i)return;if(r===i){Gs(r),i=qs(r.site),Ps.insert(a,i),a.edge=i.edge=to(r.site,a.site),Qs(r),Qs(i);return}if(!i){a.edge=to(r.site,a.site);return}Gs(r),Gs(i);var f=r.site,l=f.x,c=f.y,h=e.x-l,p=e.y-c,d=i.site,v=d.x-l,m=d.y-c,g=2*(h*m-p*v),y=h*h+p*p,b=v*v+m*m,w={x:(m*y-p*b)/g+l,y:(h*b-v*y)/g+c};ro(i.edge,f,d,w),a.edge=to(f,e,null,w),i.edge=to(e,d,null,w),Qs(r),Qs(i)}function Ws(e,t){var n=e.site,r=n.x,i=n.y,s=i-t;if(!s)return r;var o=e.P;if(!o)return-Infinity;n=o.site;var u=n.x,a=n.y,f=a-t;if(!f)return u;var l=u-r,c=1/s-1/f,h=l/f;return c?(-h+Math.sqrt(h*h-2*c*(l*l/(-2*f)-a+f/2+i-s/2)))/c+r:(r+u)/2}function Xs(e,t){var n=e.N;if(n)return Ws(n,t);var r=e.site;return r.y===t?r.x:Infinity}function Vs(e){this.site=e,this.edges=[]}function $s(e){var t=e[0][0],n=e[1][0],r=e[0][1],i=e[1][1],s,o,u,a,f=Ds,l=f.length,c,h,p,d,v,m;while(l--){c=f[l];if(!c||!c.prepare())continue;p=c.edges,d=p.length,h=0;while(h<d){m=p[h].end(),u=m.x,a=m.y,v=p[++h%d].start(),s=v.x,o=v.y;if(b(u-s)>kt||b(a-o)>kt)p.splice(h,0,new io(no(c.site,m,b(u-t)<kt&&i-a>kt?{x:t,y:b(s-t)<kt?o:i}:b(a-i)<kt&&n-u>kt?{x:b(o-i)<kt?s:n,y:i}:b(u-n)<kt&&a-r>kt?{x:n,y:b(s-n)<kt?o:r}:b(a-r)<kt&&u-t>kt?{x:b(o-r)<kt?s:t,y:r}:null),c.site,null)),++d}}}function Js(e,t){return t.angle-e.angle}function Ks(){oo(this),this.x=this.y=this.arc=this.site=this.cy=null}function Qs(e){var t=e.P,n=e.N;if(!t||!n)return;var r=t.site,i=e.site,s=n.site;if(r===s)return;var o=i.x,u=i.y,a=r.x-o,f=r.y-u,l=s.x-o,c=s.y-u,h=2*(a*c-f*l);if(h>=-Lt)return;var p=a*a+f*f,d=l*l+c*c,v=(c*p-f*d)/h,m=(a*d-l*p)/h,c=m+u,g=Fs.pop()||new Ks;g.arc=e,g.site=i,g.x=v+o,g.y=c+Math.sqrt(v*v+m*m),g.cy=c,e.circle=g;var y=null,b=js._;while(b)if(g.y<b.y||g.y===b.y&&g.x<=b.x){if(!b.L){y=b.P;break}b=b.L}else{if(!b.R){y=b;break}b=b.R}js.insert(y,g),y||(Bs=g)}function Gs(e){var t=e.circle;t&&(t.P||(Bs=t.N),js.remove(t),Fs.push(t),oo(t),e.circle=null)}function Ys(e){var t=_s,n=Ei(e[0][0],e[0][1],e[1][0],e[1][1]),r=t.length,i;while(r--){i=t[r];if(!Zs(i,e)||!n(i)||b(i.a.x-i.b.x)<kt&&b(i.a.y-i.b.y)<kt)i.a=i.b=null,t.splice(r,1)}}function Zs(e,t){var n=e.b;if(n)return!0;var r=e.a,i=t[0][0],s=t[1][0],o=t[0][1],u=t[1][1],a=e.l,f=e.r,l=a.x,c=a.y,h=f.x,p=f.y,d=(l+h)/2,v=(c+p)/2,m,g;if(p===c){if(d<i||d>=s)return;if(l>h){if(!r)r={x:d,y:o};else if(r.y>=u)return;n={x:d,y:u}}else{if(!r)r={x:d,y:u};else if(r.y<o)return;n={x:d,y:o}}}else{m=(l-h)/(p-c),g=v-m*d;if(m<-1||m>1)if(l>h){if(!r)r={x:(o-g)/m,y:o};else if(r.y>=u)return;n={x:(u-g)/m,y:u}}else{if(!r)r={x:(u-g)/m,y:u};else if(r.y<o)return;n={x:(o-g)/m,y:o}}else if(c<p){if(!r)r={x:i,y:m*i+g};else if(r.x>=s)return;n={x:s,y:m*s+g}}else{if(!r)r={x:s,y:m*s+g};else if(r.x<i)return;n={x:i,y:m*i+g}}}return e.a=r,e.b=n,!0}function eo(e,t){this.l=e,this.r=t,this.a=this.b=null}function to(e,t,n,r){var i=new eo(e,t);return _s.push(i),n&&ro(i,e,t,n),r&&ro(i,t,e,r),Ds[e.i].edges.push(new io(i,e,t)),Ds[t.i].edges.push(new io(i,t,e)),i}function no(e,t,n){var r=new eo(e,null);return r.a=t,r.b=n,_s.push(r),r}function ro(e,t,n,r){!e.a&&!e.b?(e.a=r,e.l=t,e.r=n):e.l===n?e.b=r:e.a=r}function io(e,t,n){var r=e.a,i=e.b;this.edge=e,this.site=t,this.angle=n?Math.atan2(n.y-t.y,n.x-t.x):e.l===t?Math.atan2(i.x-r.x,r.y-i.y):Math.atan2(r.x-i.x,i.y-r.y)}function so(){this._=null}function oo(e){e.U=e.C=e.L=e.R=e.P=e.N=null}function uo(e,t){var n=t,r=t.R,i=n.U;i?i.L===n?i.L=r:i.R=r:e._=r,r.U=i,n.U=r,n.R=r.L,n.R&&(n.R.U=n),r.L=n}function ao(e,t){var n=t,r=t.L,i=n.U;i?i.L===n?i.L=r:i.R=r:e._=r,r.U=i,n.U=r,n.L=r.R,n.L&&(n.L.U=n),r.R=n}function fo(e){while(e.L)e=e.L;return e}function lo(e,t){var n=e.sort(co).pop(),r,i,s;_s=[],Ds=new Array(e.length),Ps=new so,js=new so;for(;;){s=Bs;if(n&&(!s||n.y<s.y||n.y===s.y&&n.x<s.x)){if(n.x!==r||n.y!==i)Ds[n.i]=new Vs(n),zs(n),r=n.x,i=n.y;n=e.pop()}else{if(!s)break;Us(s.arc)}}t&&(Ys(t),$s(t));var o={cells:Ds,edges:_s};return Ps=js=_s=Ds=null,o}function co(e,t){return t.y-e.y||t.x-e.x}function po(e,t,n){return(e.x-n.x)*(t.y-e.y)-(e.x-t.x)*(n.y-e.y)}function vo(e){return e.x}function mo(e){return e.y}function go(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function yo(e,t,n,r,i,s){if(!e(t,n,r,i,s)){var o=(n+i)*.5,u=(r+s)*.5,a=t.nodes;a[0]&&yo(e,a[0],n,r,o,u),a[1]&&yo(e,a[1],o,r,i,u),a[2]&&yo(e,a[2],n,u,o,s),a[3]&&yo(e,a[3],o,u,i,s)}}function bo(e,t,n,r,i,s,o){var u=Infinity,a;return function f(e,l,c,h,p){if(l>s||c>o||h<r||p<i)return;if(d=e.point){var d,v=t-e.x,m=n-e.y,g=v*v+m*m;if(g<u){var y=Math.sqrt(u=g);r=t-y,i=n-y,s=t+y,o=n+y,a=d}}var b=e.nodes,w=(l+h)*.5,E=(c+p)*.5,S=t>=w,x=n>=E;for(var T=x<<1|S,N=T+4;T<N;++T)if(e=b[T&3])switch(T&3){case 0:f(e,l,c,w,E);break;case 1:f(e,w,c,h,E);break;case 2:f(e,l,E,w,p);break;case 3:f(e,w,E,h,p)}}(e,r,i,s,o),a}function wo(t,n){t=e.rgb(t),n=e.rgb(n);var r=t.r,i=t.g,s=t.b,o=n.r-r,u=n.g-i,a=n.b-s;return function(e){return"#"+yn(Math.round(r+o*e))+yn(Math.round(i+u*e))+yn(Math.round(s+a*e))}}function Eo(e,t){var n={},r={},i;for(i in e)i in t?n[i]=Co(e[i],t[i]):r[i]=e[i];for(i in t)i in e||(r[i]=t[i]);return function(e){for(i in n)r[i]=n[i](e);return r}}function So(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function xo(e,t){var n=To.lastIndex=No.lastIndex=0,r,i,s,o=-1,u=[],a=[];e+="",t+="";while((r=To.exec(e))&&(i=No.exec(t)))(s=i.index)>n&&(s=t.slice(n,s),u[o]?u[o]+=s:u[++o]=s),(r=r[0])===(i=i[0])?u[o]?u[o]+=i:u[++o]=i:(u[++o]=null,a.push({i:o,x:So(r,i)})),n=No.lastIndex;return n<t.length&&(s=t.slice(n),u[o]?u[o]+=s:u[++o]=s),u.length<2?a[0]?(t=a[0].x,function(e){return t(e)+""}):function(){return t}:(t=a.length,function(e){for(var n=0,r;n<t;++n)u[(r=a[n]).i]=r.x(e);return u.join("")})}function Co(t,n){var r=e.interpolators.length,i;while(--r>=0&&!(i=e.interpolators[r](t,n)));return i}function ko(e,t){var n=[],r=[],i=e.length,s=t.length,o=Math.min(e.length,t.length),u;for(u=0;u<o;++u)n.push(Co(e[u],t[u]));for(;u<i;++u)r[u]=e[u];for(;u<s;++u)r[u]=t[u];return function(e){for(u=0;u<o;++u)r[u]=n[u](e);return r}}function Mo(e){return function(t){return t<=0?0:t>=1?1:e(t)}}function _o(e){return function(t){return 1-e(1-t)}}function Do(e){return function(t){return.5*(t<.5?e(2*t):2-e(2-2*t))}}function Po(e){return e*e}function Ho(e){return e*e*e}function Bo(e){if(e<=0)return 0;if(e>=1)return 1;var t=e*e,n=t*e;return 4*(e<.5?n:3*(e-t)+n-.75)}function jo(e){return function(t){return Math.pow(t,e)}}function Fo(e){return 1-Math.cos(e*_t)}function Io(e){return Math.pow(2,10*(e-1))}function qo(e){return 1-Math.sqrt(1-e*e)}function Ro(e,t){var n;return arguments.length<2&&(t=.45),arguments.length?n=t/Ot*Math.asin(1/e):(e=1,n=t/4),function(r){return 1+e*Math.pow(2,-10*r)*Math.sin((r-n)*Ot/t)}}function Uo(e){return e||(e=1.70158),function(t){return t*t*((e+1)*t-e)}}function zo(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375}function Wo(t,n){t=e.hcl(t),n=e.hcl(n);var r=t.h,i=t.c,s=t.l,o=n.h-r,u=n.c-i,a=n.l-s;return isNaN(u)&&(u=0,i=isNaN(i)?n.c:i),isNaN(o)?(o=0,r=isNaN(r)?n.h:r):o>180?o-=360:o<-180&&(o+=360),function(e){return tn(r+o*e,i+u*e,s+a*e)+""}}function Xo(t,n){t=e.hsl(t),n=e.hsl(n);var r=t.h,i=t.s,s=t.l,o=n.h-r,u=n.s-i,a=n.l-s;return isNaN(u)&&(u=0,i=isNaN(i)?n.s:i),isNaN(o)?(o=0,r=isNaN(r)?n.h:r):o>180?o-=360:o<-180&&(o+=360),function(e){return Yt(r+o*e,i+u*e,s+a*e)+""}}function Vo(t,n){t=e.lab(t),n=e.lab(n);var r=t.l,i=t.a,s=t.b,o=n.l-r,u=n.a-i,a=n.b-s;return function(e){return fn(r+o*e,i+u*e,s+a*e)+""}}function $o(e,t){return t-=e,function(n){return Math.round(e+t*n)}}function Jo(e){var t=[e.a,e.b],n=[e.c,e.d],r=Qo(t),i=Ko(t,n),s=Qo(Go(n,t,-i))||0;t[0]*n[1]<n[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,i*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-n[0],n[1]))*Pt,this.translate=[e.e,e.f],this.scale=[r,s],this.skew=s?Math.atan2(i,s)*Pt:0}function Ko(e,t){return e[0]*t[0]+e[1]*t[1]}function Qo(e){var t=Math.sqrt(Ko(e,e));return t&&(e[0]/=t,e[1]/=t),t}function Go(e,t,n){return e[0]+=n*t[0],e[1]+=n*t[1],e}function Zo(e){return e.length?e.pop()+",":""}function eu(e,t,n,r){if(e[0]!==t[0]||e[1]!==t[1]){var i=n.push("translate(",null,",",null,")");r.push({i:i-4,x:So(e[0],t[0])},{i:i-2,x:So(e[1],t[1])})}else(t[0]||t[1])&&n.push("translate("+t+")")}function tu(e,t,n,r){e!==t?(e-t>180?t+=360:t-e>180&&(e+=360),r.push({i:n.push(Zo(n)+"rotate(",null,")")-2,x:So(e,t)})):t&&n.push(Zo(n)+"rotate("+t+")")}function nu(e,t,n,r){e!==t?r.push({i:n.push(Zo(n)+"skewX(",null,")")-2,x:So(e,t)}):t&&n.push(Zo(n)+"skewX("+t+")")}function ru(e,t,n,r){if(e[0]!==t[0]||e[1]!==t[1]){var i=n.push(Zo(n)+"scale(",null,",",null,")");r.push({i:i-4,x:So(e[0],t[0])},{i:i-2,x:So(e[1],t[1])})}else(t[0]!==1||t[1]!==1)&&n.push(Zo(n)+"scale("+t+")")}function iu(t,n){var r=[],i=[];return t=e.transform(t),n=e.transform(n),eu(t.translate,n.translate,r,i),tu(t.rotate,n.rotate,r,i),nu(t.skew,n.skew,r,i),ru(t.scale,n.scale,r,i),t=n=null,function(e){var t=-1,n=i.length,s;while(++t<n)r[(s=i[t]).i]=s.x(e);return r.join("")}}function su(e,t){return t=(t-=e=+e)||1/t,function(n){return(n-e)/t}}function ou(e,t){return t=(t-=e=+e)||1/t,function(n){return Math.max(0,Math.min(1,(n-e)/t))}}function uu(e){var t=e.source,n=e.target,r=fu(t,n),i=[t];while(t!==r)t=t.parent,i.push(t);var s=i.length;while(n!==r)i.splice(s,0,n),n=n.parent;return i}function au(e){var t=[],n=e.parent;while(n!=null)t.push(e),e=n,n=n.parent;return t.push(e),t}function fu(e,t){if(e===t)return e;var n=au(e),r=au(t),i=n.pop(),s=r.pop(),o=null;while(i===s)o=i,i=n.pop(),s=r.pop();return o}function lu(e){e.fixed|=2}function cu(e){e.fixed&=-7}function hu(e){e.fixed|=4,e.px=e.x,e.py=e.y}function pu(e){e.fixed&=-5}function du(e,t,n){var r=0,i=0;e.charge=0;if(!e.leaf){var s=e.nodes,o=s.length,u=-1,a;while(++u<o){a=s[u];if(a==null)continue;du(a,t,n),e.charge+=a.charge,r+=a.charge*a.cx,i+=a.charge*a.cy}}if(e.point){e.leaf||(e.point.x+=Math.random()-.5,e.point.y+=Math.random()-.5);var f=t*n[e.point.index];e.charge+=e.pointCharge=f,r+=f*e.point.x,i+=f*e.point.y}e.cx=r/e.charge,e.cy=i/e.charge}function yu(t,n){return e.rebind(t,n,"sort","children","value"),t.nodes=t,t.links=Tu,t}function bu(e,t){var n=[e];while((e=n.pop())!=null){t(e);if((i=e.children)&&(r=i.length)){var r,i;while(--r>=0)n.push(i[r])}}}function wu(e,t){var n=[e],r=[];while((e=n.pop())!=null){r.push(e);if((o=e.children)&&(s=o.length)){var i=-1,s,o;while(++i<s)n.push(o[i])}}while((e=r.pop())!=null)t(e)}function Eu(e){return e.children}function Su(e){return e.value}function xu(e,t){return t.value-e.value}function Tu(t){return e.merge(t.map(function(e){return(e.children||[]).map(function(t){return{source:e,target:t}})}))}function Cu(e){return e.x}function ku(e){return e.y}function Lu(e,t,n){e.y0=t,e.y=n}function Mu(t){return e.range(t.length)}function _u(e){var t=-1,n=e[0].length,r=[];while(++t<n)r[t]=0;return r}function Du(e){var t=1,n=0,r=e[0][1],i,s=e.length;for(;t<s;++t)(i=e[t][1])>r&&(n=t,r=i);return n}function Pu(e){return e.reduce(Hu,0)}function Hu(e,t){return e+t[1]}function Bu(e,t){return ju(e,Math.ceil(Math.log(t.length)/Math.LN2+1))}function ju(e,t){var n=-1,r=+e[0],i=(e[1]-r)/t,s=[];while(++n<=t)s[n]=i*n+r;return s}function Fu(t){return[e.min(t),e.max(t)]}function Iu(e,t){return e.value-t.value}function qu(e,t){var n=e._pack_next;e._pack_next=t,t._pack_prev=e,t._pack_next=n,n._pack_prev=t}function Ru(e,t){e._pack_next=t,t._pack_prev=e}function Uu(e,t){var n=t.x-e.x,r=t.y-e.y,i=e.r+t.r;return.999*i*i>n*n+r*r}function zu(e){function p(e){n=Math.min(e.x-e.r,n),r=Math.max(e.x+e.r,r),i=Math.min(e.y-e.r,i),s=Math.max(e.y+e.r,s)}if(!(t=e.children)||!(h=t.length))return;var t,n=Infinity,r=-Infinity,i=Infinity,s=-Infinity,o,u,a,f,l,c,h;t.forEach(Wu),o=t[0],o.x=-o.r,o.y=0,p(o);if(h>1){u=t[1],u.x=u.r,u.y=0,p(u);if(h>2){a=t[2],$u(o,u,a),p(a),qu(o,a),o._pack_prev=a,qu(a,u),u=o._pack_next;for(f=3;f<h;f++){$u(o,u,a=t[f]);var d=0,v=1,m=1;for(l=u._pack_next;l!==u;l=l._pack_next,v++)if(Uu(l,a)){d=1;break}if(d==1)for(c=o._pack_prev;c!==l._pack_prev;c=c._pack_prev,m++)if(Uu(c,a))break;d?(v<m||v==m&&u.r<o.r?Ru(o,u=l):Ru(o=c,u),f--):(qu(o,a),u=a,p(a))}}}var g=(n+r)/2,y=(i+s)/2,b=0;for(f=0;f<h;f++)a=t[f],a.x-=g,a.y-=y,b=Math.max(b,a.r+Math.sqrt(a.x*a.x+a.y*a.y));e.r=b,t.forEach(Xu)}function Wu(e){e._pack_next=e._pack_prev=e}function Xu(e){delete e._pack_next,delete e._pack_prev}function Vu(e,t,n,r){var i=e.children;e.x=t+=r*e.x,e.y=n+=r*e.y,e.r*=r;if(i){var s=-1,o=i.length;while(++s<o)Vu(i[s],t,n,r)}}function $u(e,t,n){var r=e.r+n.r,i=t.x-e.x,s=t.y-e.y;if(r&&(i||s)){var o=t.r+n.r,u=i*i+s*s;o*=o,r*=r;var a=.5+(r-o)/(2*u),f=Math.sqrt(Math.max(0,2*o*(r+u)-(r-=u)*r-o*o))/(2*u);n.x=e.x+a*i+f*s,n.y=e.y+a*s-f*i}else n.x=e.x+r,n.y=e.y}function Ju(e,t){return e.parent==t.parent?1:2}function Ku(e){var t=e.children;return t.length?t[0]:e.t}function Qu(e){var t=e.children,n;return(n=t.length)?t[n-1]:e.t}function Gu(e,t,n){var r=n/(t.i-e.i);t.c-=r,t.s+=n,e.c+=r,t.z+=n,t.m+=n}function Yu(e){var t=0,n=0,r=e.children,i=r.length,s;while(--i>=0)s=r[i],s.z+=t,s.m+=t,t+=s.s+(n+=s.c)}function Zu(e,t,n){return e.a.parent===t.parent?e.a:n}function ea(t){return 1+e.max(t,function(e){return e.y})}function ta(e){return e.reduce(function(e,t){return e+t.x},0)/e.length}function na(e){var t=e.children;return t&&t.length?na(t[0]):e}function ra(e){var t=e.children,n;return t&&(n=t.length)?ra(t[n-1]):e}function ia(e){return{x:e.x,y:e.y,dx:e.dx,dy:e.dy}}function sa(e,t){var n=e.x+t[3],r=e.y+t[0],i=e.dx-t[1]-t[3],s=e.dy-t[0]-t[2];return i<0&&(n+=i/2,i=0),s<0&&(r+=s/2,s=0),{x:n,y:r,dx:i,dy:s}}function oa(e){var t=e[0],n=e[e.length-1];return t<n?[t,n]:[n,t]}function ua(e){return e.rangeExtent?e.rangeExtent():oa(e.range())}function aa(e,t,n,r){var i=n(e[0],e[1]),s=r(t[0],t[1]);return function(e){return s(i(e))}}function fa(e,t){var n=0,r=e.length-1,i=e[n],s=e[r],o;return s<i&&(o=n,n=r,r=o,o=i,i=s,s=o),e[n]=t.floor(i),e[r]=t.ceil(s),e}function la(e){return e?{floor:function(t){return Math.floor(t/e)*e},ceil:function(t){return Math.ceil(t/e)*e}}:ca}function ha(t,n,r,i){var s=[],o=[],u=0,a=Math.min(t.length,n.length)-1;t[a]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());while(++u<=a)s.push(r(t[u-1],t[u])),o.push(i(n[u-1],n[u]));return function(n){var r=e.bisect(t,n,1,a)-1;return o[r](s[r](n))}}function pa(e,t,n,r){function o(){var o=Math.min(e.length,t.length)>2?ha:aa,a=r?ou:su;return i=o(e,t,a,n),s=o(t,e,a,Co),u}function u(e){return i(e)}var i,s;return u.invert=function(e){return s(e)},u.domain=function(t){return arguments.length?(e=t.map(Number),o()):e},u.range=function(e){return arguments.length?(t=e,o()):t},u.rangeRound=function(e){return u.range(e).interpolate($o)},u.clamp=function(e){return arguments.length?(r=e,o()):r},u.interpolate=function(e){return arguments.length?(n=e,o()):n},u.ticks=function(t){return ga(e,t)},u.tickFormat=function(t,n){return ya(e,t,n)},u.nice=function(t){return va(e,t),o()},u.copy=function(){return pa(e,t,n,r)},o()}function da(t,n){return e.rebind(t,n,"range","rangeRound","interpolate","clamp")}function va(e,t){return fa(e,la(ma(e,t)[2])),fa(e,la(ma(e,t)[2])),e}function ma(e,t){t==null&&(t=10);var n=oa(e),r=n[1]-n[0],i=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),s=t/r*i;return s<=.15?i*=10:s<=.35?i*=5:s<=.75&&(i*=2),n[0]=Math.ceil(n[0]/i)*i,n[1]=Math.floor(n[1]/i)*i+i*.5,n[2]=i,n}function ga(t,n){return e.range.apply(e,ma(t,n))}function ya(t,n,r){var i=ma(t,n);if(r){var s=zn.exec(r);s.shift();if(s[8]==="s"){var o=e.formatPrefix(Math.max(b(i[0]),b(i[1])));return s[7]||(s[7]="."+wa(o.scale(i[2]))),s[8]="f",r=e.format(s.join("")),function(e){return r(o.scale(e))+o.symbol}}s[7]||(s[7]="."+Ea(s[8],i)),r=s.join("")}else r=",."+wa(i[2])+"f";return e.format(r)}function wa(e){return-Math.floor(Math.log(e)/Math.LN10+.01)}function Ea(e,t){var n=wa(t[2]);return e in ba?Math.abs(n-wa(Math.max(b(t[0]),b(t[1]))))+ +(e!=="e"):n-(e==="%")*2}function Sa(t,n,r,i){function s(e){return(r?Math.log(e<0?0:e):-Math.log(e>0?0:-e))/Math.log(n)}function o(e){return r?Math.pow(n,e):-Math.pow(n,-e)}function u(e){return t(s(e))}return u.invert=function(e){return o(t.invert(e))},u.domain=function(e){return arguments.length?(r=e[0]>=0,t.domain((i=e.map(Number)).map(s)),u):i},u.base=function(e){return arguments.length?(n=+e,t.domain(i.map(s)),u):n},u.nice=function(){var e=fa(i.map(s),r?Math:Ta);return t.domain(e),i=e.map(o),u},u.ticks=function(){var e=oa(i),t=[],u=e[0],a=e[1],f=Math.floor(s(u)),l=Math.ceil(s(a)),c=n%1?2:n;if(isFinite(l-f)){if(r){for(;f<l;f++)for(var h=1;h<c;h++)t.push(o(f)*h);t.push(o(f))}else{t.push(o(f));for(;f++<l;)for(var h=c-1;h>0;h--)t.push(o(f)*h)}for(f=0;t[f]<u;f++);for(l=t.length;t[l-1]>a;l--);t=t.slice(f,l)}return t},u.tickFormat=function(t,r){if(!arguments.length)return xa;arguments.length<2?r=xa:typeof r!="function"&&(r=e.format(r));var i=Math.max(1,n*t/u.ticks().length);return function(e){var t=e/o(Math.round(s(e)));return t*n<n-.5&&(t*=n),t<=i?r(e):""}},u.copy=function(){return Sa(t.copy(),n,r,i)},da(u,t)}function Na(e,t,n){function s(t){return e(r(t))}var r=Ca(t),i=Ca(1/t);return s.invert=function(t){return i(e.invert(t))},s.domain=function(t){return arguments.length?(e.domain((n=t.map(Number)).map(r)),s):n},s.ticks=function(e){return ga(n,e)},s.tickFormat=function(e,t){return ya(n,e,t)},s.nice=function(e){return s.domain(va(n,e))},s.exponent=function(o){return arguments.length?(r=Ca(t=o),i=Ca(1/t),e.domain(n.map(r)),s):t},s.copy=function(){return Na(e.copy(),t,n)},da(s,e)}function Ca(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function ka(t,n){function o(e){return i[((r.get(e)||(n.t==="range"?r.set(e,t.push(e)):NaN))-1)%i.length]}function u(n,r){return e.range(t.length).map(function(e){return n+r*e})}var r,i,s;return o.domain=function(e){if(!arguments.length)return t;t=[],r=new S;var i=-1,s=e.length,u;while(++i<s)r.has(u=e[i])||r.set(u,t.push(u));return o[n.t].apply(o,n.a)},o.range=function(e){return arguments.length?(i=e,s=0,n={t:"range",a:arguments},o):i},o.rangePoints=function(e,r){arguments.length<2&&(r=0);var a=e[0],f=e[1],l=t.length<2?(a=(a+f)/2,0):(f-a)/(t.length-1+r);return i=u(a+l*r/2,l),s=0,n={t:"rangePoints",a:arguments},o},o.rangeRoundPoints=function(e,r){arguments.length<2&&(r=0);var a=e[0],f=e[1],l=t.length<2?(a=f=Math.round((a+f)/2),0):(f-a)/(t.length-1+r)|0;return i=u(a+Math.round(l*r/2+(f-a-(t.length-1+r)*l)/2),l),s=0,n={t:"rangeRoundPoints",a:arguments},o},o.rangeBands=function(e,r,a){arguments.length<2&&(r=0),arguments.length<3&&(a=r);var f=e[1]<e[0],l=e[f-0],c=e[1-f],h=(c-l)/(t.length-r+2*a);return i=u(l+h*a,h),f&&i.reverse(),s=h*(1-r),n={t:"rangeBands",a:arguments},o},o.rangeRoundBands=function(e,r,a){arguments.length<2&&(r=0),arguments.length<3&&(a=r);var f=e[1]<e[0],l=e[f-0],c=e[1-f],h=Math.floor((c-l)/(t.length-r+2*a));return i=u(l+Math.round((c-l-(t.length-r)*h)/2),h),f&&i.reverse(),s=Math.round(h*(1-r)),n={t:"rangeRoundBands",a:arguments},o},o.rangeBand=function(){return s},o.rangeExtent=function(){return oa(n.a[0])},o.copy=function(){return ka(t,n)},o.domain(t)}function _a(t,n){function i(){var i=0,o=n.length;r=[];while(++i<o)r[i-1]=e.quantile(t,i/o);return s}function s(t){if(!isNaN(t=+t))return n[e.bisect(r,t)]}var r;return s.domain=function(e){return arguments.length?(t=e.map(d).filter(v).sort(p),i()):t},s.range=function(e){return arguments.length?(n=e,i()):n},s.quantiles=function(){return r},s.invertExtent=function(e){return e=n.indexOf(e),e<0?[NaN,NaN]:[e>0?r[e-1]:t[0],e<r.length?r[e]:t[t.length-1]]},s.copy=function(){return _a(t,n)},i()}function Da(e,t,n){function s(t){return n[Math.max(0,Math.min(i,Math.floor(r*(t-e))))]}function o(){return r=n.length/(t-e),i=n.length-1,s}var r,i;return s.domain=function(n){return arguments.length?(e=+n[0],t=+n[n.length-1],o()):[e,t]},s.range=function(e){return arguments.length?(n=e,o()):n},s.invertExtent=function(t){return t=n.indexOf(t),t=t<0?NaN:t/r+e,[t,t+1/r]},s.copy=function(){return Da(e,t,n)},o()}function Pa(t,n){function r(r){if(r<=r)return n[e.bisect(t,r)]}return r.domain=function(e){return arguments.length?(t=e,r):t},r.range=function(e){return arguments.length?(n=e,r):n},r.invertExtent=function(e){return e=n.indexOf(e),[t[e-1],t[e]]},r.copy=function(){return Pa(t,n)},r}function Ha(e){function t(e){return+e}return t.invert=t,t.domain=t.range=function(n){return arguments.length?(e=n.map(t),t):e},t.ticks=function(t){return ga(e,t)},t.tickFormat=function(t,n){return ya(e,t,n)},t.copy=function(){return Ha(e)},t}function Ba(){return 0}function Fa(e){return e.innerRadius}function Ia(e){return e.outerRadius}function qa(e){return e.startAngle}function Ra(e){return e.endAngle}function Ua(e){return e&&e.padAngle}function za(e,t,n,r){return(e-n)*t-(t-r)*e>0?0:1}function Wa(e,t,n,r,i){var s=e[0]-t[0],o=e[1]-t[1],u=(i?r:-r)/Math.sqrt(s*s+o*o),a=u*o,f=-u*s,l=e[0]+a,c=e[1]+f,h=t[0]+a,p=t[1]+f,d=(l+h)/2,v=(c+p)/2,m=h-l,g=p-c,y=m*m+g*g,b=n-r,w=l*p-h*c,E=(g<0?-1:1)*Math.sqrt(Math.max(0,b*b*y-w*w)),S=(w*g-m*E)/y,x=(-w*m-g*E)/y,T=(w*g+m*E)/y,N=(-w*m+g*E)/y,C=S-d,k=x-v,L=T-d,A=N-v;return C*C+k*k>L*L+A*A&&(S=T,x=N),[[S-a,x-f],[S*n/b,x*n/b]]}function Xa(e){function u(s){function d(){u.push("M",i(e(a),o))}var u=[],a=[],f=-1,l=s.length,c,h=Nn(t),p=Nn(n);while(++f<l)r.call(this,c=s[f],f)?a.push([+h.call(this,c,f),+p.call(this,c,f)]):a.length&&(d(),a=[]);return a.length&&d(),u.length?u.join(""):null}var t=Ts,n=Ns,r=ui,i=$a,s=i.key,o=.7;return u.x=function(e){return arguments.length?(t=e,u):t},u.y=function(e){return arguments.length?(n=e,u):n},u.defined=function(e){return arguments.length?(r=e,u):r},u.interpolate=function(e){return arguments.length?(typeof e=="function"?s=i=e:s=(i=Va.get(e)||$a).key,u):s},u.tension=function(e){return arguments.length?(o=e,u):o},u}function $a(e){return e.length>1?e.join("L"):e+"Z"}function Ja(e){return e.join("L")+"Z"}function Ka(e){var t=0,n=e.length,r=e[0],i=[r[0],",",r[1]];while(++t<n)i.push("H",(r[0]+(r=e[t])[0])/2,"V",r[1]);return n>1&&i.push("H",r[0]),i.join("")}function Qa(e){var t=0,n=e.length,r=e[0],i=[r[0],",",r[1]];while(++t<n)i.push("V",(r=e[t])[1],"H",r[0]);return i.join("")}function Ga(e){var t=0,n=e.length,r=e[0],i=[r[0],",",r[1]];while(++t<n)i.push("H",(r=e[t])[0],"V",r[1]);return i.join("")}function Ya(e,t){return e.length<4?$a(e):e[1]+tf(e.slice(1,-1),nf(e,t))}function Za(e,t){return e.length<3?Ja(e):e[0]+tf((e.push(e[0]),e),nf([e[e.length-2]].concat(e,[e[1]]),t))}function ef(e,t){return e.length<3?$a(e):e[0]+tf(e,nf(e,t))}function tf(e,t){if(t.length<1||e.length!=t.length&&e.length!=t.length+2)return $a(e);var n=e.length!=t.length,r="",i=e[0],s=e[1],o=t[0],u=o,a=1;n&&(r+="Q"+(s[0]-o[0]*2/3)+","+(s[1]-o[1]*2/3)+","+s[0]+","+s[1],i=e[1],a=2);if(t.length>1){u=t[1],s=e[a],a++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(s[0]-u[0])+","+(s[1]-u[1])+","+s[0]+","+s[1];for(var f=2;f<t.length;f++,a++)s=e[a],u=t[f],r+="S"+(s[0]-u[0])+","+(s[1]-u[1])+","+s[0]+","+s[1]}if(n){var l=e[a];r+="Q"+(s[0]+u[0]*2/3)+","+(s[1]+u[1]*2/3)+","+l[0]+","+l[1]}return r}function nf(e,t){var n=[],r=(1-t)/2,i,s=e[0],o=e[1],u=1,a=e.length;while(++u<a)i=s,s=o,o=e[u],n.push([r*(o[0]-i[0]),r*(o[1]-i[1])]);return n}function rf(e){if(e.length<3)return $a(e);var t=1,n=e.length,r=e[0],i=r[0],s=r[1],o=[i,i,i,(r=e[1])[0]],u=[s,s,s,r[1]],a=[i,",",s,"L",af(cf,o),",",af(cf,u)];e.push(e[n-1]);while(++t<=n)r=e[t],o.shift(),o.push(r[0]),u.shift(),u.push(r[1]),hf(a,o,u);return e.pop(),a.push("L",r),a.join("")}function sf(e){if(e.length<4)return $a(e);var t=[],n=-1,r=e.length,i,s=[0],o=[0];while(++n<3)i=e[n],s.push(i[0]),o.push(i[1]);t.push(af(cf,s)+","+af(cf,o)),--n;while(++n<r)i=e[n],s.shift(),s.push(i[0]),o.shift(),o.push(i[1]),hf(t,s,o);return t.join("")}function of(e){var t,n=-1,r=e.length,i=r+4,s,o=[],u=[];while(++n<4)s=e[n%r],o.push(s[0]),u.push(s[1]);t=[af(cf,o),",",af(cf,u)],--n;while(++n<i)s=e[n%r],o.shift(),o.push(s[0]),u.shift(),u.push(s[1]),hf(t,o,u);return t.join("")}function uf(e,t){var n=e.length-1;if(n){var r=e[0][0],i=e[0][1],s=e[n][0]-r,o=e[n][1]-i,u=-1,a,f;while(++u<=n)a=e[u],f=u/n,a[0]=t*a[0]+(1-t)*(r+f*s),a[1]=t*a[1]+(1-t)*(i+f*o)}return rf(e)}function af(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]}function hf(e,t,n){e.push("C",af(ff,t),",",af(ff,n),",",af(lf,t),",",af(lf,n),",",af(cf,t),",",af(cf,n))}function pf(e,t){return(t[1]-e[1])/(t[0]-e[0])}function df(e){var t=0,n=e.length-1,r=[],i=e[0],s=e[1],o=r[0]=pf(i,s);while(++t<n)r[t]=(o+(o=pf(i=s,s=e[t+1])))/2;return r[t]=o,r}function vf(e){var t=[],n,r,i,s,o=df(e),u=-1,a=e.length-1;while(++u<a)n=pf(e[u],e[u+1]),b(n)<kt?o[u]=o[u+1]=0:(r=o[u]/n,i=o[u+1]/n,s=r*r+i*i,s>9&&(s=n*3/Math.sqrt(s),o[u]=s*r,o[u+1]=s*i));u=-1;while(++u<=a)s=(e[Math.min(a,u+1)][0]-e[Math.max(0,u-1)][0])/(6*(1+o[u]*o[u])),t.push([s||0,o[u]*s||0]);return t}function mf(e){return e.length<3?$a(e):e[0]+tf(e,vf(e))}function gf(e){var t,n=-1,r=e.length,i,s;while(++n<r)t=e[n],i=t[0],s=t[1]-_t,t[0]=i*Math.cos(s),t[1]=i*Math.sin(s);return e}function yf(e){function c(u){function x(){c.push("M",o(e(p),l),f,a(e(h.reverse()),l),"Z")}var c=[],h=[],p=[],d=-1,v=u.length,m,g=Nn(t),y=Nn(r),b=t===n?function(){return E}:Nn(n),w=r===i?function(){return S}:Nn(i),E,S;while(++d<v)s.call(this,m=u[d],d)?(h.push([E=+g.call(this,m,d),S=+y.call(this,m,d)]),p.push([+b.call(this,m,d),+w.call(this,m,d)])):h.length&&(x(),h=[],p=[]);return h.length&&x(),c.length?c.join(""):null}var t=Ts,n=Ts,r=0,i=Ns,s=ui,o=$a,u=o.key,a=o,f="L",l=.7;return c.x=function(e){return arguments.length?(t=n=e,c):n},c.x0=function(e){return arguments.length?(t=e,c):t},c.x1=function(e){return arguments.length?(n=e,c):n},c.y=function(e){return arguments.length?(r=i=e,c):i},c.y0=function(e){return arguments.length?(r=e,c):r},c.y1=function(e){return arguments.length?(i=e,c):i},c.defined=function(e){return arguments.length?(s=e,c):s},c.interpolate=function(e){return arguments.length?(typeof e=="function"?u=o=e:u=(o=Va.get(e)||$a).key,a=o.reverse||o,f=o.closed?"M":"L",c):u},c.tension=function(e){return arguments.length?(l=e,c):l},c}function bf(e){return e.radius}function wf(e){return[e.x,e.y]}function Ef(e){return function(){var t=e.apply(this,arguments),n=t[0],r=t[1]-_t;return[n*Math.cos(r),n*Math.sin(r)]}}function Sf(){return 64}function xf(){return"circle"}function Tf(e){var t=Math.sqrt(e/At);return"M0,"+t+"A"+t+","+t+" 0 1,1 0,"+ -t+"A"+t+","+t+" 0 1,1 0,"+t+"Z"}function Af(e){return function(){var t,n,r;(t=this[e])&&(r=t[n=t.active])&&(r.timer.c=null,r.timer.t=NaN,--t.count?delete t[n]:delete this[e],t.active+=.5,r.event&&r.event.interrupt.call(this,this.__data__,r.index))}}function Of(e,t,n){return W(e,Mf),e.namespace=t,e.id=n,e}function Hf(e,t,n,r){var i=e.id,s=e.namespace;return pt(e,typeof n=="function"?function(e,o,u){e[s][i].tween.set(t,r(n.call(e,e.__data__,o,u)))}:(n=r(n),function(e){e[s][i].tween.set(t,n)}))}function Bf(e){return e==null&&(e=""),function(){this.textContent=e}}function jf(e){return e==null?"__transition__":"__transition_"+e+"__"}function Ff(e,t,n,r,i){function h(e){var t=o.delay;a.t=t+u;if(t<=e)return p(e-t);a.c=p}function p(n){var i=s.active,h=s[i];h&&(h.timer.c=null,h.timer.t=NaN,--s.count,delete s[i],h.event&&h.event.interrupt.call(e,e.__data__,h.index));for(var p in s)if(+p<r){var v=s[p];v.timer.c=null,v.timer.t=NaN,--s.count,delete s[p]}a.c=d,Hn(function(){return a.c&&d(n||1)&&(a.c=null,a.t=NaN),1},0,u),s.active=r,o.event&&o.event.start.call(e,e.__data__,t),c=[],o.tween.forEach(function(n,r){(r=r.call(e,e.__data__,t))&&c.push(r)}),l=o.ease,f=o.duration}function d(i){var u=i/f,a=l(u),h=c.length;while(h>0)c[--h].call(e,a);if(u>=1)return o.event&&o.event.end.call(e,e.__data__,t),--s.count?delete s[r]:delete e[n],1}var s=e[n]||(e[n]={active:0,count:0}),o=s[r],u,a,f,l,c;o||(u=i.time,a=Hn(h,0,u),o=s[r]={tween:new S,time:u,timer:a,delay:i.delay,duration:i.duration,ease:i.ease,index:t},i=null,++s.count)}function Rf(e,t,n){e.attr("transform",function(e){var r=t(e);return"translate("+(isFinite(r)?r:n(e))+",0)"})}function Uf(e,t,n){e.attr("transform",function(e){var r=t(e);return"translate(0,"+(isFinite(r)?r:n(e))+")"})}function Jf(e){return e.toISOString()}function Kf(t,n,r){function i(e){return t(e)}function s(t,r){var i=t[1]-t[0],s=i/r,o=e.bisect(Gf,s);return o==Gf.length?[n.year,ma(t.map(function(e){return e/31536e6}),r)[2]]:o?n[s/Gf[o-1]<Gf[o]/s?o-1:o]:[el,ma(t,r)[2]]}return i.invert=function(e){return Qf(t.invert(e))},i.domain=function(e){return arguments.length?(t.domain(e),i):t.domain().map(Qf)},i.nice=function(e,t){function u(n){return!isNaN(n)&&!e.range(n,Qf(+n+1),t).length}var n=i.domain(),r=oa(n),o=e==null?s(r,10):typeof e=="number"&&s(r,e);return o&&(e=o[0],t=o[1]),i.domain(fa(n,t>1?{floor:function(t){while(u(t=e.floor(t)))t=Qf(t-1);return t},ceil:function(t){while(u(t=e.ceil(t)))t=Qf(+t+1);return t}}:e))},i.ticks=function(e,t){var n=oa(i.domain()),r=e==null?s(n,10):typeof e=="number"?s(n,e):!e.range&&[{range:e},t];return r&&(e=r[0],t=r[1]),e.range(n[0],Qf(+n[1]+1),t<1?1:t)},i.tickFormat=function(){return r},i.copy=function(){return Kf(t.copy(),n,r)},da(i,t)}function Qf(e){return new Date(e)}function rl(e){return JSON.parse(e.responseText)}function il(e){var t=r.createRange();return t.selectNode(r.body),t.createContextualFragment(e.responseText)}var e={version:"3.5.17"},t=[].slice,n=function(e){return t.call(e)},r=this.document;if(r)try{n(r.documentElement.childNodes)[0].nodeType}catch(o){n=function(e){var t=e.length,n=new Array(t);while(t--)n[t]=e[t];return n}}Date.now||(Date.now=function(){return+(new Date)});if(r)try{r.createElement("DIV").style.setProperty("opacity",0,"")}catch(u){var a=this.Element.prototype,f=a.setAttribute,l=a.setAttributeNS,c=this.CSSStyleDeclaration.prototype,h=c.setProperty;a.setAttribute=function(e,t){f.call(this,e,t+"")},a.setAttributeNS=function(e,t,n){l.call(this,e,t,n+"")},c.setProperty=function(e,t,n){h.call(this,e,t+"",n)}}e.ascending=p,e.descending=function(e,t){return t<e?-1:t>e?1:t>=e?0:NaN},e.min=function(e,t){var n=-1,r=e.length,i,s;if(arguments.length===1){while(++n<r)if((s=e[n])!=null&&s>=s){i=s;break}while(++n<r)(s=e[n])!=null&&i>s&&(i=s)}else{while(++n<r)if((s=t.call(e,e[n],n))!=null&&s>=s){i=s;break}while(++n<r)(s=t.call(e,e[n],n))!=null&&i>s&&(i=s)}return i},e.max=function(e,t){var n=-1,r=e.length,i,s;if(arguments.length===1){while(++n<r)if((s=e[n])!=null&&s>=s){i=s;break}while(++n<r)(s=e[n])!=null&&s>i&&(i=s)}else{while(++n<r)if((s=t.call(e,e[n],n))!=null&&s>=s){i=s;break}while(++n<r)(s=t.call(e,e[n],n))!=null&&s>i&&(i=s)}return i},e.extent=function(e,t){var n=-1,r=e.length,i,s,o;if(arguments.length===1){while(++n<r)if((s=e[n])!=null&&s>=s){i=o=s;break}while(++n<r)(s=e[n])!=null&&(i>s&&(i=s),o<s&&(o=s))}else{while(++n<r)if((s=t.call(e,e[n],n))!=null&&s>=s){i=o=s;break}while(++n<r)(s=t.call(e,e[n],n))!=null&&(i>s&&(i=s),o<s&&(o=s))}return[i,o]},e.sum=function(e,t){var n=0,r=e.length,i,s=-1;if(arguments.length===1)while(++s<r)v(i=+e[s])&&(n+=i);else while(++s<r)v(i=+t.call(e,e[s],s))&&(n+=i);return n},e.mean=function(e,t){var n=0,r=e.length,i,s=-1,o=r;if(arguments.length===1)while(++s<r)v(i=d(e[s]))?n+=i:--o;else while(++s<r)v(i=d(t.call(e,e[s],s)))?n+=i:--o;if(o)return n/o},e.quantile=function(e,t){var n=(e.length-1)*t+1,r=Math.floor(n),i=+e[r-1],s=n-r;return s?i+s*(e[r]-i):i},e.median=function(t,n){var r=[],i=t.length,s,o=-1;if(arguments.length===1)while(++o<i)v(s=d(t[o]))&&r.push(s);else while(++o<i)v(s=d(n.call(t,t[o],o)))&&r.push(s);if(r.length)return e.quantile(r.sort(p),.5)},e.variance=function(e,t){var n=e.length,r=0,i,s,o=0,u=-1,a=0;if(arguments.length===1)while(++u<n)v(i=d(e[u]))&&(s=i-r,r+=s/++a,o+=s*(i-r));else while(++u<n)v(i=d(t.call(e,e[u],u)))&&(s=i-r,r+=s/++a,o+=s*(i-r));if(a>1)return o/(a-1)},e.deviation=function(){var t=e.variance.apply(this,arguments);return t?Math.sqrt(t):t};var g=m(p);e.bisectLeft=g.left,e.bisect=e.bisectRight=g.right,e.bisector=function(e){return m(e.length===1?function(t,n){return p(e(t),n)}:e)},e.shuffle=function(e,t,n){(r=arguments.length)<3&&(n=e.length,r<2&&(t=0));var r=n-t,i,s;while(r)s=Math.random()*r--|0,i=e[r+t],e[r+t]=e[s+t],e[s+t]=i;return e},e.permute=function(e,t){var n=t.length,r=new Array(n);while(n--)r[n]=e[t[n]];return r},e.pairs=function(e){var t=0,n=e.length-1,r,i=e[0],s=new Array(n<0?0:n);while(t<n)s[t]=[r=i,i=e[++t]];return s},e.transpose=function(t){if(!(o=t.length))return[];for(var n=-1,r=e.min(t,y),i=new Array(r);++n<r;)for(var s=-1,o,u=i[n]=new Array(o);++s<o;)u[s]=t[s][n];return i},e.zip=function(){return e.transpose(arguments)},e.keys=function(e){var t=[];for(var n in e)t.push(n);return t},e.values=function(e){var t=[];for(var n in e)t.push(e[n]);return t},e.entries=function(e){var t=[];for(var n in e)t.push({key:n,value:e[n]});return t},e.merge=function(e){var t=e.length,n,r=-1,i=0,s,o;while(++r<t)i+=e[r].length;s=new Array(i);while(--t>=0){o=e[t],n=o.length;while(--n>=0)s[--i]=o[n]}return s};var b=Math.abs;e.range=function(e,t,n){arguments.length<3&&(n=1,arguments.length<2&&(t=e,e=0));if((t-e)/n===Infinity)throw new Error("infinite range");var r=[],i=w(b(n)),s=-1,o;e*=i,t*=i,n*=i;if(n<0)while((o=e+n*++s)>t)r.push(o/i);else while((o=e+n*++s)<t)r.push(o/i);return r},e.map=function(e,t){var n=new S;if(e instanceof S)e.forEach(function(e,t){n.set(e,t)});else if(Array.isArray(e)){var r=-1,i=e.length,s;if(arguments.length===1)while(++r<i)n.set(r,e[r]);else while(++r<i)n.set(t.call(e,s=e[r],r),s)}else for(var o in e)n.set(o,e[o]);return n};var x="__proto__",T="\0";E(S,{has:k,get:function(e){return this._[N(e)]},set:function(e,t){return this._[N(e)]=t},remove:L,keys:A,values:function(){var e=[];for(var t in this._)e.push(this._[t]);return e},entries:function(){var e=[];for(var t in this._)e.push({key:C(t),value:this._[t]});return e},size:O,empty:M,forEach:function(e){for(var t in this._)e.call(this,C(t),this._[t])}}),e.nest=function(){function o(e,r,u){if(u>=n.length)return s?s.call(t,r):i?r.sort(i):r;var a=-1,f=r.length,l=n[u++],c,h,p,d=new S,v;while(++a<f)(v=d.get(c=l(h=r[a])))?v.push(h):d.set(c,[h]);return e?(h=e(),p=function(t,n){h.set(t,o(e,n,u))}):(h={},p=function(t,n){h[t]=o(e,n,u)}),d.forEach(p),h}function u(e,t){if(t>=n.length)return e;var i=[],s=r[t++];return e.forEach(function(e,n){i.push({key:e,values:u(n,t)})}),s?i.sort(function(e,t){return s(e.key,t.key)}):i}var t={},n=[],r=[],i,s;return t.map=function(e,t){return o(t,e,0)},t.entries=function(t){return u(o(e.map,t,0),0)},t.key=function(e){return n.push(e),t},t.sortKeys=function(e){return r[n.length-1]=e,t},t.sortValues=function(e){return i=e,t},t.rollup=function(e){return s=e,t},t},e.set=function(e){var t=new _;if(e)for(var n=0,r=e.length;n<r;++n)t.add(e[n]);return t},E(_,{has:k,add:function(e){return this._[N(e+="")]=!0,e},remove:L,values:A,size:O,empty:M,forEach:function(e){for(var t in this._)e.call(this,C(t))}}),e.behavior={},e.rebind=function(e,t){var n=1,r=arguments.length,i;while(++n<r)e[i=arguments[n]]=P(e,t,t[i]);return e};var B=["webkit","ms","moz","Moz","o","O"];e.dispatch=function(){var e=new F,t=-1,n=arguments.length;while(++t<n)e[arguments[t]]=I(e);return e},F.prototype.on=function(e,t){var n=e.indexOf("."),r="";n>=0&&(r=e.slice(n+1),e=e.slice(0,n));if(e)return arguments.length<2?this[e].on(r):this[e].on(r,t);if(arguments.length===2){if(t==null)for(e in this)this.hasOwnProperty(e)&&this[e].on(r,null);return this}},e.event=null,e.requote=function(e){return e.replace(z,"\\$&")};var z=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,W={}.__proto__?function(e,t){e.__proto__=t}:function(e,t){for(var n in t)e[n]=t[n]},V=function(e,t){return t.querySelector(e)},$=function(e,t){return t.querySelectorAll(e)},J=function(e,t){var n=e.matches||e[H(e,"matchesSelector")];return J=function(e,t){return n.call(e,t)},J(e,t)};typeof Sizzle=="function"&&(V=function(e,t){return Sizzle(e,t)[0]||null},$=Sizzle,J=Sizzle.matchesSelector),e.selection=function(){return e.select(r.documentElement)};var K=e.selection.prototype=[];K.select=function(e){var t=[],n,r,i,s;e=Q(e);for(var o=-1,u=this.length;++o<u;){t.push(n=[]),n.parentNode=(i=this[o]).parentNode;for(var a=-1,f=i.length;++a<f;)(s=i[a])?(n.push(r=e.call(s,s.__data__,a,o)),r&&"__data__"in s&&(r.__data__=s.__data__)):n.push(null)}return X(t)},K.selectAll=function(e){var t=[],r,i;e=G(e);for(var s=-1,o=this.length;++s<o;)for(var u=this[s],a=-1,f=u.length;++a<f;)if(i=u[a])t.push(r=n(e.call(i,i.__data__,a,s))),r.parentNode=i;return X(t)};var Y="http://www.w3.org/1999/xhtml",Z={svg:"http://www.w3.org/2000/svg",xhtml:Y,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};e.ns={prefix:Z,qualify:function(e){var t=e.indexOf(":"),n=e;return t>=0&&(n=e.slice(0,t))!=="xmlns"&&(e=e.slice(t+1)),Z.hasOwnProperty(n)?{space:Z[n],local:e}:e}},K.attr=function(t,n){if(arguments.length<2){if(typeof t=="string"){var r=this.node();return t=e.ns.qualify(t),t.local?r.getAttributeNS(t.space,t.local):r.getAttribute(t)}for(n in t)this.each(et(n,t[n]));return this}return this.each(et(t,n))},K.classed=function(e,t){if(arguments.length<2){if(typeof e=="string"){var n=this.node(),r=(e=rt(e)).length,i=-1;if(t=n.classList){while(++i<r)if(!t.contains(e[i]))return!1}else{t=n.getAttribute("class");while(++i<r)if(!nt(e[i]).test(t))return!1}return!0}for(t in e)this.each(it(t,e[t]));return this}return this.each(it(e,t))},K.style=function(e,t,n){var r=arguments.length;if(r<3){if(typeof e!="string"){r<2&&(t="");for(n in e)this.each(ot(n,e[n],t));return this}if(r<2){var i=this.node();return s(i).getComputedStyle(i,null).getPropertyValue(e)}n=""}return this.each(ot(e,t,n))},K.property=function(e,t){if(arguments.length<2){if(typeof e=="string")return this.node()[e];for(t in e)this.each(ut(t,e[t]));return this}return this.each(ut(e,t))},K.text=function(e){return arguments.length?this.each(typeof e=="function"?function(){var t=e.apply(this,arguments);this.textContent=t==null?"":t}:e==null?function(){this.textContent=""}:function(){this.textContent=e}):this.node().textContent},K.html=function(e){return arguments.length?this.each(typeof e=="function"?function(){var t=e.apply(this,arguments);this.innerHTML=t==null?"":t}:e==null?function(){this.innerHTML=""}:function(){this.innerHTML=e}):this.node().innerHTML},K.append=function(e){return e=at(e),this.select(function(){return this.appendChild(e.apply(this,arguments))})},K.insert=function(e,t){return e=at(e),t=Q(t),this.select(function(){return this.insertBefore(e.apply(this,arguments),t.apply(this,arguments)||null)})},K.remove=function(){return this.each(ft)},K.data=function(e,t){function o(e,n){var r,i=e.length,s=n.length,o=Math.min(i,s),l=new Array(s),c=new Array(s),h=new Array(i),p,d;if(t){var v=new S,m=new Array(i),g;for(r=-1;++r<i;)if(p=e[r])v.has(g=t.call(p,p.__data__,r))?h[r]=p:v.set(g,p),m[r]=g;for(r=-1;++r<s;)(p=v.get(g=t.call(n,d=n[r],r)))?p!==!0&&(l[r]=p,p.__data__=d):c[r]=lt(d),v.set(g,!0);for(r=-1;++r<i;)r in m&&v.get(m[r])!==!0&&(h[r]=e[r])}else{for(r=-1;++r<o;)p=e[r],d=n[r],p?(p.__data__=d,l[r]=p):c[r]=lt(d);for(;r<s;++r)c[r]=lt(n[r]);for(;r<i;++r)h[r]=e[r]}c.update=l,c.parentNode=l.parentNode=h.parentNode=e.parentNode,u.push(c),a.push(l),f.push(h)}var n=-1,r=this.length,i,s;if(!arguments.length){e=new Array(r=(i=this[0]).length);while(++n<r)if(s=i[n])e[n]=s.__data__;return e}var u=dt([]),a=X([]),f=X([]);if(typeof e=="function")while(++n<r)o(i=this[n],e.call(i,i.parentNode.__data__,n));else while(++n<r)o(i=this[n],e);return a.enter=function(){return u},a.exit=function(){return f},a},K.datum=function(e){return arguments.length?this.property("__data__",e):this.property("__data__")},K.filter=function(e){var t=[],n,r,i;typeof e!="function"&&(e=ct(e));for(var s=0,o=this.length;s<o;s++){t.push(n=[]),n.parentNode=(r=this[s]).parentNode;for(var u=0,a=r.length;u<a;u++)(i=r[u])&&e.call(i,i.__data__,u,s)&&n.push(i)}return X(t)},K.order=function(){for(var e=-1,t=this.length;++e<t;)for(var n=this[e],r=n.length-1,i=n[r],s;--r>=0;)if(s=n[r])i&&i!==s.nextSibling&&i.parentNode.insertBefore(s,i),i=s;return this},K.sort=function(e){e=ht.apply(this,arguments);for(var t=-1,n=this.length;++t<n;)this[t].sort(e);return this.order()},K.each=function(e){return pt(this,function(t,n,r){e.call(t,t.__data__,n,r)})},K.call=function(e){var t=n(arguments);return e.apply(t[0]=this,t),this},K.empty=function(){return!this.node()},K.node=function(){for(var e=0,t=this.length;e<t;e++)for(var n=this[e],r=0,i=n.length;r<i;r++){var s=n[r];if(s)return s}return null},K.size=function(){var e=0;return pt(this,function(){++e}),e};var vt=[];e.selection.enter=dt,e.selection.enter.prototype=vt,vt.append=K.append,vt.empty=K.empty,vt.node=K.node,vt.call=K.call,vt.size=K.size,vt.select=function(e){var t=[],n,r,i,s,o;for(var u=-1,a=this.length;++u<a;){i=(s=this[u]).update,t.push(n=[]),n.parentNode=s.parentNode;for(var f=-1,l=s.length;++f<l;)(o=s[f])?(n.push(i[f]=r=e.call(s.parentNode,o.__data__,f,u)),r.__data__=o.__data__):n.push(null)}return X(t)},vt.insert=function(e,t){return arguments.length<2&&(t=mt(this)),K.insert.call(this,e,t)},e.select=function(e){var t;return typeof e=="string"?(t=[V(e,r)],t.parentNode=r.documentElement):(t=[e],t.parentNode=i(e)),X([t])},e.selectAll=function(e){var t;return typeof e=="string"?(t=n($(e,r)),t.parentNode=r.documentElement):(t=n(e),t.parentNode=null),X([t])},K.on=function(e,t,n){var r=arguments.length;if(r<3){if(typeof e!="string"){r<2&&(t=!1);for(n in e)this.each(gt(n,e[n],t));return this}if(r<2)return(r=this.node()["__on"+e])&&r._;n=!1}return this.each(gt(e,t,n))};var yt=e.map({mouseenter:"mouseover",mouseleave:"mouseout"});r&&yt.forEach(function(e){"on"+e in r&&yt.remove(e)});var Et,St=0;e.mouse=function(e){return Nt(e,R())};var Tt=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;e.touch=function(e,t,n){arguments.length<3&&(n=t,t=R().changedTouches);if(t)for(var r=0,i=t.length,s;r<i;++r)if((s=t[r]).identifier===n)return Nt(e,s)},e.behavior.drag=function(){function o(){this.on("mousedown.drag",r).on("touchstart.drag",i)}function u(r,i,s,o,u){return function(){function b(){var e=i(l,p),t,n;if(!e)return;t=e[0]-y[0],n=e[1]-y[1],h|=t|n,y=e,c({type:"drag",x:e[0]+v[0],y:e[1]+v[1],dx:t,dy:n})}function w(){if(!i(l,p))return;m.on(o+d,null).on(u+d,null),g(h),c({type:"dragend"})}var a=this,f=e.event.target.correspondingElement||e.event.target,l=a.parentNode,c=t.of(a,arguments),h=0,p=r(),d=".drag"+(p==null?"":"-"+p),v,m=e.select(s(f)).on(o+d,b).on(u+d,w),g=xt(f),y=i(l,p);n?(v=n.apply(a,arguments),v=[v.x-y[0],v.y-y[1]]):v=[0,0],c({type:"dragstart"})}}var t=U(o,"drag","dragstart","dragend"),n=null,r=u(j,e.mouse,s,"mousemove","mouseup"),i=u(Ct,e.touch,D,"touchmove","touchend");return o.origin=function(e){return arguments.length?(n=e,o):n},e.rebind(o,t,"on")},e.touches=function(e,t){return arguments.length<2&&(t=R().touches),t?n(t).map(function(t){var n=Nt(e,t);return n.identifier=t.identifier,n}):[]};var kt=1e-6,Lt=kt*kt,At=Math.PI,Ot=2*At,Mt=Ot-kt,_t=At/2,Dt=At/180,Pt=180/At,zt=Math.SQRT2,Wt=2,Xt=4;e.interpolateZoom=function(e,t){var n=e[0],r=e[1],i=e[2],s=t[0],o=t[1],u=t[2],a=s-n,f=o-r,l=a*a+f*f,c,h;if(l<Lt)h=Math.log(u/i)/zt,c=function(e){return[n+e*a,r+e*f,i*Math.exp(zt*e*h)]};else{var p=Math.sqrt(l),d=(u*u-i*i+Xt*l)/(2*i*Wt*p),v=(u*u-i*i-Xt*l)/(2*u*Wt*p),m=Math.log(Math.sqrt(d*d+1)-d),g=Math.log(Math.sqrt(v*v+1)-v);h=(g-m)/zt,c=function(e){var t=e*h,s=qt(m),o=i/(Wt*p)*(s*Rt(zt*t+m)-It(m));return[n+o*a,r+o*f,i*s/qt(zt*t+m)]}}return c.duration=h*1e3,c},e.behavior.zoom=function(){function S(e){e.on(c,_).on(Jt+".zoom",P).on("dblclick.zoom",H).on(v,D)}function x(e){return[(e[0]-t.x)/t.k,(e[1]-t.y)/t.k]}function T(e){return[e[0]*t.k+t.x,e[1]*t.k+t.y]}function N(e){t.k=Math.max(a[0],Math.min(a[1],e))}function C(e,n){n=T(n),t.x+=e[0]-n[0],t.y+=e[1]-n[1]}function k(n,r,s,o){n.__chart__={x:t.x,y:t.y,k:t.k},N(Math.pow(2,o)),C(i=r,s),n=e.select(n),f>0&&(n=n.transition().duration(f)),n.call(S.event)}function L(){b&&b.domain(y.range().map(function(e){return(e-t.x)/t.k}).map(y.invert)),E&&E.domain(w.range().map(function(e){return(e-t.y)/t.k}).map(w.invert))}function A(e){l++||e({type:"zoomstart"})}function O(e){L(),e({type:"zoom",scale:t.k,translate:[t.x,t.y]})}function M(e){--l||(e({type:"zoomend"}),i=null)}function _(){function a(){r=1,C(e.mouse(t),o),O(n)}function f(){i.on(h,null).on(p,null),u(r),M(n)}var t=this,n=g.of(t,arguments),r=0,i=e.select(s(t)).on(h,a).on(p,f),o=x(e.mouse(t)),u=xt(t);Lf.call(t),A(n)}function D(){function d(){var r=e.touches(n);return o=t.k,r.forEach(function(e){e.identifier in i&&(i[e.identifier]=x(e))}),r}function y(){var r=e.event.target;e.select(r).on(a,b).on(f,w),l.push(r);var o=e.event.changedTouches;for(var u=0,c=o.length;u<c;++u)i[o[u].identifier]=null;var h=d(),p=Date.now();if(h.length===1){if(p-m<500){var v=h[0];k(n,v,i[v.identifier],Math.floor(Math.log(t.k)/Math.LN2)+1),q()}m=p}else if(h.length>1){var v=h[0],g=h[1],y=v[0]-g[0],E=v[1]-g[1];s=y*y+E*E}}function b(){var t=e.touches(n),u,a,f,l;Lf.call(n);for(var c=0,h=t.length;c<h;++c,l=null){f=t[c];if(l=i[f.identifier]){if(a)break;u=f,a=l}}if(l){var p=(p=f[0]-u[0])*p+(p=f[1]-u[1])*p,d=s&&Math.sqrt(p/s);u=[(u[0]+f[0])/2,(u[1]+f[1])/2],a=[(a[0]+l[0])/2,(a[1]+l[1])/2],N(d*o)}m=null,C(u,a),O(r)}function w(){if(e.event.touches.length){var t=e.event.changedTouches;for(var n=0,s=t.length;n<s;++n)delete i[t[n].identifier];for(var o in i)return void d()}e.selectAll(l).on(u,null),h.on(c,_).on(v,D),p(),M(r)}var n=this,r=g.of(n,arguments),i={},s=0,o,u=".zoom-"+e.event.changedTouches[0].identifier,a="touchmove"+u,f="touchend"+u,l=[],h=e.select(n),p=xt(n);y(),A(r),h.on(c,null).on(v,y)}function P(){var r=g.of(this,arguments);d?clearTimeout(d):(Lf.call(this),n=x(i=o||e.mouse(this)),A(r)),d=setTimeout(function(){d=null,M(r)},50),q(),N(Math.pow(2,$t()*.002)*t.k),C(i,n),O(r)}function H(){var n=e.mouse(this),r=Math.log(t.k)/Math.LN2;k(this,n,x(n),e.event.shiftKey?Math.ceil(r)-1:Math.floor(r)+1)}var t={x:0,y:0,k:1},n,i,o,u=[960,500],a=Vt,f=250,l=0,c="mousedown.zoom",h="mousemove.zoom",p="mouseup.zoom",d,v="touchstart.zoom",m,g=U(S,"zoomstart","zoom","zoomend"),y,b,w,E;return Jt||(Jt="onwheel"in r?($t=function(){return-e.event.deltaY*(e.event.deltaMode?120:1)},"wheel"):"onmousewheel"in r?($t=function(){return e.event.wheelDelta},"mousewheel"):($t=function(){return-e.event.detail},"MozMousePixelScroll")),S.event=function(n){n.each(function(){var n=g.of(this,arguments),r=t;Df?e.select(this).transition().each("start.zoom",function(){t=this.__chart__||{x:0,y:0,k:1},A(n)}).tween("zoom:zoom",function(){var s=u[0],o=u[1],a=i?i[0]:s/2,f=i?i[1]:o/2,l=e.interpolateZoom([(a-t.x)/t.k,(f-t.y)/t.k,s/t.k],[(a-r.x)/r.k,(f-r.y)/r.k,s/r.k]);return function(e){var r=l(e),i=s/r[2];this.__chart__=t={x:a-r[0]*i,y:f-r[1]*i,k:i},O(n)}}).each("interrupt.zoom",function(){M(n)}).each("end.zoom",function(){M(n)}):(this.__chart__=t,A(n),O(n),M(n))})},S.translate=function(e){return arguments.length?(t={x:+e[0],y:+e[1],k:t.k},L(),S):[t.x,t.y]},S.scale=function(e){return arguments.length?(t={x:t.x,y:t.y,k:null},N(+e),L(),S):t.k},S.scaleExtent=function(e){return arguments.length?(a=e==null?Vt:[+e[0],+e[1]],S):a},S.center=function(e){return arguments.length?(o=e&&[+e[0],+e[1]],S):o},S.size=function(e){return arguments.length?(u=e&&[+e[0],+e[1]],S):u},S.duration=function(e){return arguments.length?(f=+e,S):f},S.x=function(e){return arguments.length?(b=e,y=e.copy(),t={x:0,y:0,k:1},S):b},S.y=function(e){return arguments.length?(E=e,w=e.copy(),t={x:0,y:0,k:1},S):E},e.rebind(S,g,"on")};var Vt=[0,Infinity],$t,Jt;e.color=Kt,Kt.prototype.toString=function(){return this.rgb()+""},e.hsl=Qt;var Gt=Qt.prototype=new Kt;Gt.brighter=function(e){return e=Math.pow(.7,arguments.length?e:1),new Qt(this.h,this.s,this.l/e)},Gt.darker=function(e){return e=Math.pow(.7,arguments.length?e:1),new Qt(this.h,this.s,e*this.l)},Gt.rgb=function(){return Yt(this.h,this.s,this.l)},e.hcl=Zt;var en=Zt.prototype=new Kt;en.brighter=function(e){return new Zt(this.h,this.c,Math.min(100,this.l+rn*(arguments.length?e:1)))},en.darker=function(e){return new Zt(this.h,this.c,Math.max(0,this.l-rn*(arguments.length?e:1)))},en.rgb=function(){return tn(this.h,this.c,this.l).rgb()},e.lab=nn;var rn=18,sn=.95047,on=1,un=1.08883,an=nn.prototype=new Kt;an.brighter=function(e){return new nn(Math.min(100,this.l+rn*(arguments.length?e:1)),this.a,this.b)},an.darker=function(e){return new nn(Math.max(0,this.l-rn*(arguments.length?e:1)),this.a,this.b)},an.rgb=function(){return fn(this.l,this.a,this.b)},e.rgb=dn;var gn=dn.prototype=new Kt;gn.brighter=function(e){e=Math.pow(.7,arguments.length?e:1);var t=this.r,n=this.g,r=this.b,i=30;return!t&&!n&&!r?new dn(i,i,i):(t&&t<i&&(t=i),n&&n<i&&(n=i),r&&r<i&&(r=i),new dn(Math.min(255,t/e),Math.min(255,n/e),Math.min(255,r/e)))},gn.darker=function(e){return e=Math.pow(.7,arguments.length?e:1),new dn(e*this.r,e*this.g,e*this.b)},gn.hsl=function(){return wn(this.r,this.g,this.b)},gn.toString=function(){return"#"+yn(this.r)+yn(this.g)+yn(this.b)};var Tn=e.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Tn.forEach(function(e,t){Tn.set(e,vn(t))}),e.functor=Nn,e.xhr=Cn(D),e.dsv=function(e,t){function i(e,n,r){arguments.length<3&&(r=n,n=null);var i=kn(e,t,n==null?s:o(n),r);return i.row=function(e){return arguments.length?i.response((n=e)==null?s:o(e)):n},i}function s(e){return i.parse(e.responseText)}function o(e){return function(t){return i.parse(t.responseText,e)}}function u(t){return t.map(a).join(e)}function a(e){return n.test(e)?'"'+e.replace(/\"/g,'""')+'"':e}var n=new RegExp('["'+e+"\n]"),r=e.charCodeAt(0);return i.parse=function(e,t){var n;return i.parseRows(e,function(e,r){if(n)return n(e,r-1);var i=new Function("d","return {"+e.map(function(e,t){return JSON.stringify(e)+": d["+t+"]"}).join(",")+"}");n=t?function(e,n){return t(i(e),n)}:i})},i.parseRows=function(e,t){function c(){if(u>=o)return i;if(l)return l=!1,n;var t=u;if(e.charCodeAt(t)===34){var s=t;while(s++<o)if(e.charCodeAt(s)===34){if(e.charCodeAt(s+1)!==34)break;++s}u=s+2;var a=e.charCodeAt(s+1);return a===13?(l=!0,e.charCodeAt(s+2)===10&&++u):a===10&&(l=!0),e.slice(t+1,s).replace(/""/g,'"')}while(u<o){var a=e.charCodeAt(u++),f=1;if(a===10)l=!0;else if(a===13)l=!0,e.charCodeAt(u)===10&&(++u,++f);else if(a!==r)continue;return e.slice(t,u-f)}return e.slice(t)}var n={},i={},s=[],o=e.length,u=0,a=0,f,l;while((f=c())!==i){var h=[];while(f!==n&&f!==i)h.push(f),f=c();if(t&&(h=t(h,a++))==null)continue;s.push(h)}return s},i.format=function(t){if(Array.isArray(t[0]))return i.formatRows(t);var n=new _,r=[];return t.forEach(function(e){for(var t in e)n.has(t)||r.push(n.add(t))}),[r.map(a).join(e)].concat(t.map(function(t){return r.map(function(e){return a(t[e])}).join(e)})).join("\n")},i.formatRows=function(e){return e.map(u).join("\n")},i},e.csv=e.dsv(",","text/csv"),e.tsv=e.dsv(" ","text/tab-separated-values");var On,Mn,_n,Dn,Pn=this[H(this,"requestAnimationFrame")]||function(e){setTimeout(e,17)};e.timer=function(){Hn.apply(this,arguments)},e.timer.flush=function(){jn(),Fn()},e.round=function(e,t){return t?Math.round(e*(t=Math.pow(10,t)))/t:Math.round(e)};var qn=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map(Rn);e.formatPrefix=function(t,n){var r=0;if(t=+t)t<0&&(t*=-1),n&&(t=e.round(t,In(t,n))),r=1+Math.floor(1e-12+Math.log(t)/Math.LN10),r=Math.max(-24,Math.min(24,Math.floor((r-1)/3)*3));return qn[8+r/3]};var zn=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,Wn=e.map({b:function(e){return e.toString(2)},c:function(e){return String.fromCharCode(e)},o:function(e){return e.toString(8)},x:function(e){return e.toString(16)},X:function(e){return e.toString(16).toUpperCase()},g:function(e,t){return e.toPrecision(t)},e:function(e,t){return e.toExponential(t)},f:function(e,t){return e.toFixed(t)},r:function(t,n){return(t=e.round(t,In(t,n))).toFixed(Math.max(0,Math.min(20,In(t*(1+1e-15),n))))}}),Vn=e.time={},$n=Date;Jn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){Kn.setUTCDate.apply(this._,arguments)},setDay:function(){Kn.setUTCDay.apply(this._,arguments)},setFullYear:function(){Kn.setUTCFullYear.apply(this._,arguments)},setHours:function(){Kn.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){Kn.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){Kn.setUTCMinutes.apply(this._,arguments)},setMonth:function(){Kn.setUTCMonth.apply(this._,arguments)},setSeconds:function(){Kn.setUTCSeconds.apply(this._,arguments)},setTime:function(){Kn.setTime.apply(this._,arguments)}};var Kn=Date.prototype;Vn.year=Qn(function(e){return e=Vn.day(e),e.setMonth(0,1),e},function(e,t){e.setFullYear(e.getFullYear()+t)},function(e){return e.getFullYear()}),Vn.years=Vn.year.range,Vn.years.utc=Vn.year.utc.range,Vn.day=Qn(function(e){var t=new $n(2e3,0);return t.setFullYear(e.getFullYear(),e.getMonth(),e.getDate()),t},function(e,t){e.setDate(e.getDate()+t)},function(e){return e.getDate()-1}),Vn.days=Vn.day.range,Vn.days.utc=Vn.day.utc.range,Vn.dayOfYear=function(e){var t=Vn.year(e);return Math.floor((e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(e,t){t=7-t;var n=Vn[e]=Qn(function(e){return(e=Vn.day(e)).setDate(e.getDate()-(e.getDay()+t)%7),e},function(e,t){e.setDate(e.getDate()+Math.floor(t)*7)},function(e){var n=Vn.year(e).getDay();return Math.floor((Vn.dayOfYear(e)+(n+t)%7)/7)-(n!==t)});Vn[e+"s"]=n.range,Vn[e+"s"].utc=n.utc.range,Vn[e+"OfYear"]=function(e){var n=Vn.year(e).getDay();return Math.floor((Vn.dayOfYear(e)+(n+t)%7)/7)}}),Vn.week=Vn.sunday,Vn.weeks=Vn.sunday.range,Vn.weeks.utc=Vn.sunday.utc.range,Vn.weekOfYear=Vn.sundayOfYear;var Zn={"-":"",_:" ",0:"0"},er=/^\s*\d+/,tr=/^%/;e.locale=function(e){return{numberFormat:Un(e),timeFormat:Yn(e)}};var Sr=e.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});e.format=Sr.numberFormat,e.geo={},xr.prototype={s:0,t:0,add:function(e){Nr(e,this.t,Tr),Nr(Tr.s,this.s,this),this.s?this.t+=Tr.t:this.s=Tr.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var Tr=new xr;e.geo.stream=function(e,t){e&&kr.hasOwnProperty(e.type)?kr[e.type](e,t):Cr(e,t)};var kr={Feature:function(e,t){Cr(e.geometry,t)},FeatureCollection:function(e,t){var n=e.features,r=-1,i=n.length;while(++r<i)Cr(n[r].geometry,t)}},Lr={Sphere:function(e,t){t.sphere()},Point:function(e,t){e=e.coordinates,t.point(e[0],e[1],e[2])},MultiPoint:function(e,t){var n=e.coordinates,r=-1,i=n.length;while(++r<i)e=n[r],t.point(e[0],e[1],e[2])},LineString:function(e,t){Ar(e.coordinates,t,0)},MultiLineString:function(e,t){var n=e.coordinates,r=-1,i=n.length;while(++r<i)Ar(n[r],t,0)},Polygon:function(e,t){Or(e.coordinates,t)},MultiPolygon:function(e,t){var n=e.coordinates,r=-1,i=n.length;while(++r<i)Or(n[r],t)},GeometryCollection:function(e,t){var n=e.geometries,r=-1,i=n.length;while(++r<i)Cr(n[r],t)}};e.geo.area=function(t){return Mr=0,e.geo.stream(t,Dr),Mr};var Mr,_r=new xr,Dr={sphere:function(){Mr+=4*At},point:j,lineStart:j,lineEnd:j,polygonStart:function(){_r.reset(),Dr.lineStart=Pr},polygonEnd:function(){var e=2*_r;Mr+=e<0?4*At+e:e,Dr.lineStart=Dr.lineEnd=Dr.point=j}};e.geo.bounds=function(){function p(e,s){l.push(c=[t=e,r=e]),s<n&&(n=s),s>i&&(i=s)}function d(e,o){var u=Hr([e*Dt,o*Dt]);if(a){var f=jr(a,u),l=[f[1],-f[0],0],c=jr(l,f);qr(c),c=Rr(c);var h=e-s,d=h>0?1:-1,v=c[0]*Pt*d,m=b(h)>180;if(m^(d*s<v&&v<d*e)){var g=c[1]*Pt;g>i&&(i=g)}else if(v=(v+360)%360-180,m^(d*s<v&&v<d*e)){var g=-c[1]*Pt;g<n&&(n=g)}else o<n&&(n=o),o>i&&(i=o);m?e<s?E(t,e)>E(t,r)&&(r=e):E(e,r)>E(t,r)&&(t=e):r>=t?(e<t&&(t=e),e>r&&(r=e)):e>s?E(t,e)>E(t,r)&&(r=e):E(e,r)>E(t,r)&&(t=e)}else p(e,o);a=u,s=e}function v(){h.point=d}function m(){c[0]=t,c[1]=r,h.point=p,a=null}function g(e,t){if(a){var n=e-s;f+=b(n)>180?n+(n>0?360:-360):n}else o=e,u=t;Dr.point(e,t),d(e,t)}function y(){Dr.lineStart()}function w(){g(o,u),Dr.lineEnd(),b(f)>kt&&(t=-(r=180)),c[0]=t,c[1]=r,a=null}function E(e,t){return(t-=e)<0?t+360:t}function S(e,t){return e[0]-t[0]}function x(e,t){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:e<t[0]||t[1]<e}var t,n,r,i,s,o,u,a,f,l,c,h={point:p,lineStart:v,lineEnd:m,polygonStart:function(){h.point=g,h.lineStart=y,h.lineEnd=w,f=0,Dr.polygonStart()},polygonEnd:function(){Dr.polygonEnd(),h.point=p,h.lineStart=v,h.lineEnd=m,_r<0?(t=-(r=180),n=-(i=90)):f>kt?i=90:f<-kt&&(n=-90),c[0]=t,c[1]=r}};return function(s){i=r=-(t=n=Infinity),l=[],e.geo.stream(s,h);var o=l.length;if(o){l.sort(S);for(var u=1,a=l[0],f,p=[a];u<o;++u)f=l[u],x(f[0],a)||x(f[1],a)?(E(a[0],f[1])>E(a[0],a[1])&&(a[1]=f[1]),E(f[0],a[1])>E(a[0],a[1])&&(a[0]=f[0])):p.push(a=f);var d=-Infinity,v;for(var o=p.length-1,u=0,a=p[o],f;u<=o;a=f,++u)f=p[u],(v=E(a[1],f[0]))>d&&(d=v,t=f[0],r=a[1])}return l=c=null,t===Infinity||n===Infinity?[[NaN,NaN],[NaN,NaN]]:[[t,n],[r,i]]}}(),e.geo.centroid=function(t){zr=Wr=Xr=Vr=$r=Jr=Kr=Qr=Gr=Yr=Zr=0,e.geo.stream(t,ei);var n=Gr,r=Yr,i=Zr,s=n*n+r*r+i*i;if(s<Lt){n=Jr,r=Kr,i=Qr,Wr<kt&&(n=Xr,r=Vr,i=$r),s=n*n+r*r+i*i;if(s<Lt)return[NaN,NaN]}return[Math.atan2(r,n)*Pt,Ft(i/Math.sqrt(s))*Pt]};var zr,Wr,Xr,Vr,$r,Jr,Kr,Qr,Gr,Yr,Zr,ei={sphere:j,point:ti,lineStart:ri,lineEnd:ii,polygonStart:function(){ei.lineStart=si},polygonEnd:function(){ei.lineStart=ri}},vi=ci(ui,mi,yi,[-At,-At/2]),Si=1e9;e.geo.clipExtent=function(){var e,t,n,r,i,s,o={stream:function(e){return i&&(i.valid=!1),i=s(e),i.valid=!0,i},extent:function(u){return arguments.length?(s=xi(e=+u[0][0],t=+u[0][1],n=+u[1][0],r=+u[1][1]),i&&(i.valid=!1,i=null),o):[[e,t],[n,r]]}};return o.extent([[0,0],[960,500]])},(e.geo.conicEqualArea=function(){return Ti(Ni)}).raw=Ni,e.geo.albers=function(){return e.geo.conicEqualArea().rotate([96,0]).center([-0.6,38.7]).parallels([29.5,45.5]).scale(1070)},e.geo.albersUsa=function(){function f(e){var t=e[0],n=e[1];return i=null,(o(t,n),i)||(u(t,n),i)||a(t,n),i}var t=e.geo.albers(),n=e.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),r=e.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),i,s={point:function(e,t){i=[e,t]}},o,u,a;return f.invert=function(e){var i=t.scale(),s=t.translate(),o=(e[0]-s[0])/i,u=(e[1]-s[1])/i;return(u>=.12&&u<.234&&o>=-0.425&&o<-0.214?n:u>=.166&&u<.234&&o>=-0.214&&o<-0.115?r:t).invert(e)},f.stream=function(e){var i=t.stream(e),s=n.stream(e),o=r.stream(e);return{point:function(e,t){i.point(e,t),s.point(e,t),o.point(e,t)},sphere:function(){i.sphere(),s.sphere(),o.sphere()},lineStart:function(){i.lineStart(),s.lineStart(),o.lineStart()},lineEnd:function(){i.lineEnd(),s.lineEnd(),o.lineEnd()},polygonStart:function(){i.polygonStart(),s.polygonStart(),o.polygonStart()},polygonEnd:function(){i.polygonEnd(),s.polygonEnd(),o.polygonEnd()}}},f.precision=function(e){return arguments.length?(t.precision(e),n.precision(e),r.precision(e),f):t.precision()},f.scale=function(e){return arguments.length?(t.scale(e),n.scale(e*.35),r.scale(e),f.translate(t.translate())):t.scale()},f.translate=function(e){if(!arguments.length)return t.translate();var i=t.scale(),l=+e[0],c=+e[1];return o=t.translate(e).clipExtent([[l-.455*i,c-.238*i],[l+.455*i,c+.238*i]]).stream(s).point,u=n.translate([l-.307*i,c+.201*i]).clipExtent([[l-.425*i+kt,c+.12*i+kt],[l-.214*i-kt,c+.234*i-kt]]).stream(s).point,a=r.translate([l-.205*i,c+.212*i]).clipExtent([[l-.214*i+kt,c+.166*i+kt],[l-.115*i-kt,c+.234*i-kt]]).stream(s).point,f},f.scale(1070)};var Ci,ki,Li={point:j,lineStart:j,lineEnd:j,polygonStart:function(){ki=0,Li.lineStart=Ai},polygonEnd:function(){Li.lineStart=Li.lineEnd=Li.point=j,Ci+=b(ki/2)}},Oi,Mi,_i,Di,Pi={point:Hi,lineStart:j,lineEnd:j,polygonStart:j,polygonEnd:j},Fi={point:Ii,lineStart:qi,lineEnd:Ri,polygonStart:function(){Fi.lineStart=Ui},polygonEnd:function(){Fi.point=Ii,Fi.lineStart=qi,Fi.lineEnd=Ri}};e.geo.path=function(){function u(n){if(n){typeof t=="function"&&s.pointRadius(+t.apply(this,arguments));if(!o||!o.valid)o=i(s);e.geo.stream(n,o)}return s.result()}function a(){return o=null,u}var t=4.5,n,r,i,s,o;return u.area=function(t){return Ci=0,e.geo.stream(t,i(Li)),Ci},u.centroid=function(t){return Xr=Vr=$r=Jr=Kr=Qr=Gr=Yr=Zr=0,e.geo.stream(t,i(Fi)),Zr?[Gr/Zr,Yr/Zr]:Qr?[Jr/Qr,Kr/Qr]:$r?[Xr/$r,Vr/$r]:[NaN,NaN]},u.bounds=function(t){return _i=Di=-(Oi=Mi=Infinity),e.geo.stream(t,i(Pi)),[[Oi,Mi],[_i,Di]]},u.projection=function(e){return arguments.length?(i=(n=e)?e.stream||Xi(e):D,a()):n},u.context=function(e){return arguments.length?(s=(r=e)==null?new Bi:new zi(e),typeof t!="function"&&s.pointRadius(t),a()):r},u.pointRadius=function(e){return arguments.length?(t=typeof e=="function"?e:(s.pointRadius(+e),+e),u):t},u.projection(e.geo.albersUsa()).context(null)},e.geo.transform=function(e){return{stream:function(t){var n=new Vi(t);for(var r in e)n[r]=e[r];return n}}},Vi.prototype={point:function(e,t){this.stream.point(e,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},e.geo.projection=Ji,e.geo.projectionMutator=Ki,(e.geo.equirectangular=function(){return Ji(Gi)}).raw=Gi.invert=Gi,e.geo.rotation=function(e){function t(t){return t=e(t[0]*Dt,t[1]*Dt),t[0]*=Pt,t[1]*=Pt,t}return e=Zi(e[0]%360*Dt,e[1]*Dt,e.length>2?e[2]*Dt:0),t.invert=function(t){return t=e.invert(t[0]*Dt,t[1]*Dt),t[0]*=Pt,t[1]*=Pt,t},t},Yi.invert=Gi,e.geo.circle=function(){function i(){var t=typeof e=="function"?e.apply(this,arguments):e,n=Zi(-t[0]*Dt,-t[1]*Dt,0).invert,i=[];return r(null,null,1,{point:function(e,t){i.push(e=n(e,t)),e[0]*=Pt,e[1]*=Pt}}),{type:"Polygon",coordinates:[i]}}var e=[0,0],t,n=6,r;return i.origin=function(t){return arguments.length?(e=t,i):e},i.angle=function(e){return arguments.length?(r=rs((t=+e)*Dt,n*Dt),i):t},i.precision=function(e){return arguments.length?(r=rs(t*Dt,(n=+e)*Dt),i):n},i.angle(90)},e.geo.distance=function(e,t){var n=(t[0]-e[0])*Dt,r=e[1]*Dt,i=t[1]*Dt,s=Math.sin(n),o=Math.cos(n),u=Math.sin(r),a=Math.cos(r),f=Math.sin(i),l=Math.cos(i),c;return Math.atan2(Math.sqrt((c=l*s)*c+(c=a*f-u*l*o)*c),u*f+a*l*o)},e.geo.graticule=function(){function y(){return{type:"MultiLineString",coordinates:w()}}function w(){return e.range(Math.ceil(i/c)*c,r,c).map(v).concat(e.range(Math.ceil(a/h)*h,u,h).map(m)).concat(e.range(Math.ceil(n/f)*f,t,f).filter(function(e){return b(e%c)>kt}).map(p)).concat(e.range(Math.ceil(o/l)*l,s,l).filter(function(e){return b(e%h)>kt}).map(d))}var t,n,r,i,s,o,u,a,f=10,l=f,c=90,h=360,p,d,v,m,g=2.5;return y.lines=function(){return w().map(function(e){return{type:"LineString",coordinates:e}})},y.outline=function(){return{type:"Polygon",coordinates:[v(i).concat(m(u).slice(1),v(r).reverse().slice(1),m(a).reverse().slice(1))]}},y.extent=function(e){return arguments.length?y.majorExtent(e).minorExtent(e):y.minorExtent()},y.majorExtent=function(e){return arguments.length?(i=+e[0][0],r=+e[1][0],a=+e[0][1],u=+e[1][1],i>r&&(e=i,i=r,r=e),a>u&&(e=a,a=u,u=e),y.precision(g)):[[i,a],[r,u]]},y.minorExtent=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],o=+e[0][1],s=+e[1][1],n>t&&(e=n,n=t,t=e),o>s&&(e=o,o=s,s=e),y.precision(g)):[[n,o],[t,s]]},y.step=function(e){return arguments.length?y.majorStep(e).minorStep(e):y.minorStep()},y.majorStep=function(e){return arguments.length?(c=+e[0],h=+e[1],y):[c,h]},y.minorStep=function(e){return arguments.length?(f=+e[0],l=+e[1],y):[f,l]},y.precision=function(e){return arguments.length?(g=+e,p=ss(o,s,90),d=os(n,t,g),v=ss(a,u,90),m=os(i,r,g),y):g},y.majorExtent([[-180,-90+kt],[180,90-kt]]).minorExtent([[-180,-80-kt],[180,80+kt]])},e.geo.greatArc=function(){function s(){return{type:"LineString",coordinates:[n||t.apply(this,arguments),i||r.apply(this,arguments)]}}var t=us,n,r=as,i;return s.distance=function(){return e.geo.distance(n||t.apply(this,arguments),i||r.apply(this,arguments))},s.source=function(e){return arguments.length?(t=e,n=typeof e=="function"?null:e,s):t},s.target=function(e){return arguments.length?(r=e,i=typeof e=="function"?null:e,s):r},s.precision=function(){return arguments.length?s:0},s},e.geo.interpolate=function(e,t){return fs(e[0]*Dt,e[1]*Dt,t[0]*Dt,t[1]*Dt)},e.geo.length=function(t){return ls=0,e.geo.stream(t,cs),ls};var ls,cs={sphere:j,point:j,lineStart:hs,lineEnd:j,polygonStart:j,polygonEnd:j},ds=ps(function(e){return Math.sqrt(2/(1+e))},function(e){return 2*Math.asin(e/2)});(e.geo.azimuthalEqualArea=function(){return Ji(ds)}).raw=ds;var vs=ps(function(e){var t=Math.acos(e);return t&&t/Math.sin(t)},D);(e.geo.azimuthalEquidistant=function(){return Ji(vs)}).raw=vs,(e.geo.conicConformal=function(){return Ti(ms)}).raw=ms,(e.geo.conicEquidistant=function(){return Ti(gs)}).raw=gs;var ys=ps(function(e){return 1/e},Math.atan);(e.geo.gnomonic=function(){return Ji(ys)}).raw=ys,bs.invert=function(e,t){return[e,2*Math.atan(Math.exp(t))-_t]},(e.geo.mercator=function(){return ws(bs)}).raw=bs;var Es=ps(function(){return 1},Math.asin);(e.geo.orthographic=function(){return Ji(Es)}).raw=Es;var Ss=ps(function(e){return 1/(1+e)},function(e){return 2*Math.atan(e)});(e.geo.stereographic=function(){return Ji(Ss)}).raw=Ss,xs.invert=function(e,t){return[-t,2*Math.atan(Math.exp(e))-_t]},(e.geo.transverseMercator=function(){var e=ws(xs),t=e.center,n=e.rotate;return e.center=function(e){return e?t([-e[1],e[0]]):(e=t(),[e[1],-e[0]])},e.rotate=function(e){return e?n([e[0],e[1],e.length>2?e[2]+90:90]):(e=n(),[e[0],e[1],e[2]-90])},n([0,0,90])}).raw=xs,e.geom={},e.geom.hull=function(e){function r(e){if(e.length<3)return[];var r=Nn(t),i=Nn(n),s,o=e.length,u=[],a=[];for(s=0;s<o;s++)u.push([+r.call(this,e[s],s),+i.call(this,e[s],s),s]);u.sort(ks);for(s=0;s<o;s++)a.push([u[s][0],-u[s][1]]);var f=Cs(u),l=Cs(a),c=l[0]===f[0],h=l[l.length-1]===f[f.length-1],p=[];for(s=f.length-1;s>=0;--s)p.push(e[u[f[s]][2]]);for(s=+c;s<l.length-h;++s)p.push(e[u[l[s]][2]]);return p}var t=Ts,n=Ns;return arguments.length?r(e):(r.x=function(e){return arguments.length?(t=e,r):t},r.y=function(e){return arguments.length?(n=e,r):n},r)},e.geom.polygon=function(e){return W(e,Ls),e};var Ls=e.geom.polygon.prototype=[];Ls.area=function(){var e=-1,t=this.length,n,r=this[t-1],i=0;while(++e<t)n=r,r=this[e],i+=n[1]*r[0]-n[0]*r[1];return i*.5},Ls.centroid=function(e){var t=-1,n=this.length,r=0,i=0,s,o=this[n-1],u;arguments.length||(e=-1/(6*this.area()));while(++t<n)s=o,o=this[t],u=s[0]*o[1]-o[0]*s[1],r+=(s[0]+o[0])*u,i+=(s[1]+o[1])*u;return[r*e,i*e]},Ls.clip=function(e){var t,n=Ms(e),r=-1,i=this.length-Ms(this),s,o,u=this[i-1],a,f,l;while(++r<i){t=e.slice(),e.length=0,a=this[r],f=t[(o=t.length-n)-1],s=-1;while(++s<o)l=t[s],As(l,u,a)?(As(f,u,a)||e.push(Os(f,l,u,a)),e.push(l)):As(f,u,a)&&e.push(Os(f,l,u,a)),f=l;n&&e.push(e[0]),u=a}return e};var _s,Ds,Ps,Hs=[],Bs,js,Fs=[];Vs.prototype.prepare=function(){var e=this.edges,t=e.length,n;while(t--)n=e[t].edge,(!n.b||!n.a)&&e.splice(t,1);return e.sort(Js),e.length},io.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},so.prototype={insert:function(e,t){var n,r,i;if(e){t.P=e,t.N=e.N,e.N&&(e.N.P=t),e.N=t;if(e.R){e=e.R;while(e.L)e=e.L;e.L=t}else e.R=t;n=e}else this._?(e=fo(this._),t.P=null,t.N=e,e.P=e.L=t,n=e):(t.P=t.N=null,this._=t,n=null);t.L=t.R=null,t.U=n,t.C=!0,e=t;while(n&&n.C)r=n.U,n===r.L?(i=r.R,i&&i.C?(n.C=i.C=!1,r.C=!0,e=r):(e===n.R&&(uo(this,n),e=n,n=e.U),n.C=!1,r.C=!0,ao(this,r))):(i=r.L,i&&i.C?(n.C=i.C=!1,r.C=!0,e=r):(e===n.L&&(ao(this,n),e=n,n=e.U),n.C=!1,r.C=!0,uo(this,r))),n=e.U;this._.C=!1},remove:function(e){e.N&&(e.N.P=e.P),e.P&&(e.P.N=e.N),e.N=e.P=null;var t=e.U,n,r=e.L,i=e.R,s,o;r?i?s=fo(i):s=r:s=i,t?t.L===e?t.L=s:t.R=s:this._=s,r&&i?(o=s.C,s.C=e.C,s.L=r,r.U=s,s!==i?(t=s.U,s.U=e.U,e=s.R,t.L=e,s.R=i,i.U=s):(s.U=t,t=s,e=s.R)):(o=e.C,e=s),e&&(e.U=t);if(o)return;if(e&&e.C){e.C=!1;return}do{if(e===this._)break;if(e===t.L){n=t.R,n.C&&(n.C=!1,t.C=!0,uo(this,t),n=t.R);if(n.L&&n.L.C||n.R&&n.R.C){if(!n.R||!n.R.C)n.L.C=!1,n.C=!0,ao(this,n),n=t.R;n.C=t.C,t.C=n.R.C=!1,uo(this,t),e=this._;break}}else{n=t.L,n.C&&(n.C=!1,t.C=!0,ao(this,t),n=t.L);if(n.L&&n.L.C||n.R&&n.R.C){if(!n.L||!n.L.C)n.R.C=!1,n.C=!0,uo(this,n),n=t.L;n.C=t.C,t.C=n.L.C=!1,ao(this,t),e=this._;break}}n.C=!0,e=t,t=t.U}while(!e.C);e&&(e.C=!1)}},e.geom.voronoi=function(e){function o(e){var t=new Array(e.length),n=s[0][0],r=s[0][1],i=s[1][0],o=s[1][1];return lo(u(e),s).cells.forEach(function(s,u){var a=s.edges,f=s.site,l=t[u]=a.length?a.map(function(e){var t=e.start();return[t.x,t.y]}):f.x>=n&&f.x<=i&&f.y>=r&&f.y<=o?[[n,o],[i,o],[i,r],[n,r]]:[];l.point=e[u]}),t}function u(e){return e.map(function(e,t){return{x:Math.round(r(e,t)/kt)*kt,y:Math.round(i(e,t)/kt)*kt,i:t}})}var t=Ts,n=Ns,r=t,i=n,s=ho;return e?o(e):(o.links=function(e){return lo(u(e)).edges.filter(function(e){return e.l&&e.r}).map(function(t){return{source:e[t.l.i],target:e[t.r.i]}})},o.triangles=function(e){var t=[];return lo(u(e)).cells.forEach(function(n,r){var i=n.site,s=n.edges.sort(Js),o=-1,u=s.length,a,f,l=s[u-1].edge,c=l.l===i?l.r:l.l;while(++o<u)a=l,f=c,l=s[o].edge,c=l.l===i?l.r:l.l,r<f.i&&r<c.i&&po(i,f,c)<0&&t.push([e[r],e[f.i],e[c.i]])}),t},o.x=function(e){return arguments.length?(r=Nn(t=e),o):t},o.y=function(e){return arguments.length?(i=Nn(n=e),o):n},o.clipExtent=function(e){return arguments.length?(s=e==null?ho:e,o):s===ho?null:s},o.size=function(e){return arguments.length?o.clipExtent(e&&[[0,0],e]):s===ho?null:s&&s[1]},o)};var ho=[[-1e6,-1e6],[1e6,1e6]];e.geom.delaunay=function(t){return e.geom.voronoi().triangles(t)},e.geom.quadtree=function(e,t,n,r,i){function a(e){function T(e,t,n,r,i,s,o,u){if(isNaN(n)||isNaN(r))return;if(e.leaf){var a=e.x,f=e.y;if(a!=null)if(b(a-n)+b(f-r)<.01)N(e,t,n,r,i,s,o,u);else{var l=e.point;e.x=e.y=e.point=null,N(e,l,a,f,i,s,o,u),N(e,t,n,r,i,s,o,u)}else e.x=n,e.y=r,e.point=t}else N(e,t,n,r,i,s,o,u)}function N(e,t,n,r,i,s,o,u){var a=(i+o)*.5,f=(s+u)*.5,l=n>=a,c=r>=f,h=c<<1|l;e.leaf=!1,e=e.nodes[h]||(e.nodes[h]=go()),l?i=a:o=a,c?s=f:u=f,T(e,t,n,r,i,s,o,u)}var a,f=Nn(s),l=Nn(o),c,h,p,d,v,m,g,y;if(t!=null)v=t,m=n,g=r,y=i;else{g=y=-(v=m=Infinity),c=[],h=[],d=e.length;if(u)for(p=0;p<d;++p)a=e[p],a.x<v&&(v=a.x),a.y<m&&(m=a.y),a.x>g&&(g=a.x),a.y>y&&(y=a.y),c.push(a.x),h.push(a.y);else for(p=0;p<d;++p){var w=+f(a=e[p],p),E=+l(a,p);w<v&&(v=w),E<m&&(m=E),w>g&&(g=w),E>y&&(y=E),c.push(w),h.push(E)}}var S=g-v,x=y-m;S>x?y=m+S:g=v+x;var C=go();C.add=function(e){T(C,e,+f(e,++p),+l(e,p),v,m,g,y)},C.visit=function(e){yo(e,C,v,m,g,y)},C.find=function(e){return bo(C,e[0],e[1],v,m,g,y)},p=-1;if(t==null){while(++p<d)T(C,e[p],c[p],h[p],v,m,g,y);--p}else e.forEach(C.add);return c=h=e=a=null,C}var s=Ts,o=Ns,u;return(u=arguments.length)?(s=vo,o=mo,u===3&&(i=n,r=t,n=t=0),a(e)):(a.x=function(e){return arguments.length?(s=e,a):s},a.y=function(e){return arguments.length?(o=e,a):o},a.extent=function(e){return arguments.length?(e==null?t=n=r=i=null:(t=+e[0][0],n=+e[0][1],r=+e[1][0],i=+e[1][1]),a):t==null?null:[[t,n],[r,i]]},a.size=function(e){return arguments.length?(e==null?t=n=r=i=null:(t=n=0,r=+e[0],i=+e[1]),a):t==null?null:[r-t,i-n]},a)},e.interpolateRgb=wo,e.interpolateObject=Eo,e.interpolateNumber=So,e.interpolateString=xo;var To=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,No=new RegExp(To.source,"g");e.interpolate=Co,e.interpolators=[function(e,t){var n=typeof t;return(n==="string"?Tn.has(t.toLowerCase())||/^(#|rgb\(|hsl\()/i.test(t)?wo:xo:t instanceof Kt?wo:Array.isArray(t)?ko:n==="object"&&isNaN(t)?Eo:So)(e,t)}],e.interpolateArray=ko;var Lo=function(){return D},Ao=e.map({linear:Lo,poly:jo,quad:function(){return Po},cubic:function(){return Ho},sin:function(){return Fo},exp:function(){return Io},circle:function(){return qo},elastic:Ro,back:Uo,bounce:function(){return zo}}),Oo=e.map({"in":D,out:_o,"in-out":Do,"out-in":function(e){return Do(_o(e))}});e.ease=function(e){var n=e.indexOf("-"),r=n>=0?e.slice(0,n):e,i=n>=0?e.slice(n+1):"in";return r=Ao.get(r)||Lo,i=Oo.get(i)||D,Mo(i(r.apply(null,t.call(arguments,1))))},e.interpolateHcl=Wo,e.interpolateHsl=Xo,e.interpolateLab=Vo,e.interpolateRound=$o,e.transform=function(t){var n=r.createElementNS(e.ns.prefix.svg,"g");return(e.transform=function(e){if(e!=null){n.setAttribute("transform",e);var t=n.transform.baseVal.consolidate()}return new Jo(t?t.matrix:Yo)})(t)},Jo.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var Yo={a:1,b:0,c:0,d:1,e:0,f:0};e.interpolateTransform=iu,e.layout={},e.layout.bundle=function(){return function(e){var t=[],n=-1,r=e.length;while(++n<r)t.push(uu(e[n]));return t}},e.layout.chord=function(){function l(){var t={},l=[],h=e.range(s),p=[],d,v,m,g,y;n=[],r=[],d=0,g=-1;while(++g<s){v=0,y=-1;while(++y<s)v+=i[g][y];l.push(v),p.push(e.range(s)),d+=v}u&&h.sort(function(e,t){return u(l[e],l[t])}),a&&p.forEach(function(e,t){e.sort(function(e,n){return a(i[t][e],i[t][n])})}),d=(Ot-o*s)/d,v=0,g=-1;while(++g<s){m=v,y=-1;while(++y<s){var b=h[g],w=p[b][y],E=i[b][w],S=v,x=v+=E*d;t[b+"-"+w]={index:b,subindex:w,startAngle:S,endAngle:x,value:E}}r[b]={index:b,startAngle:m,endAngle:v,value:l[b]},v+=o}g=-1;while(++g<s){y=g-1;while(++y<s){var T=t[g+"-"+y],N=t[y+"-"+g];(T.value||N.value)&&n.push(T.value<N.value?{source:N,target:T}:{source:T,target:N})}}f&&c()}function c(){n.sort(function(e,t){return f((e.source.value+e.target.value)/2,(t.source.value+t.target.value)/2)})}var t={},n,r,i,s,o=0,u,a,f;return t.matrix=function(e){return arguments.length?(s=(i=e)&&i.length,n=r=null,t):i},t.padding=function(e){return arguments.length?(o=e,n=r=null,t):o},t.sortGroups=function(e){return arguments.length?(u=e,n=r=null,t):u},t.sortSubgroups=function(e){return arguments.length?(a=e,n=null,t):a},t.sortChords=function(e){return arguments.length?(f=e,n&&c(),t):f},t.chords=function(){return n||l(),n},t.groups=function(){return r||l(),r},t},e.layout.force=function(){function b(e){return function(t,n,r,i){if(t.point!==e){var s=t.cx-e.x,o=t.cy-e.y,u=i-n,a=s*s+o*o;if(u*u/p<a){if(a<c){var f=t.charge/a;e.px-=s*f,e.py-=o*f}return!0}if(t.point&&a&&a<c){var f=t.pointCharge/a;e.px-=s*f,e.py-=o*f}}return!t.charge}}function w(n){n.px=e.event.x,n.py=e.event.y,t.resume()}var t={},n=e.dispatch("start","tick","end"),r,i=[1,1],s,o,u=.9,a=vu,f=mu,l=-30,c=gu,h=.1,p=.64,d=[],v=[],m,g,y;return t.tick=function(){if((o*=.99)<.005)return r=null,n.end({type:"end",alpha:o=0}),!0;var t=d.length,s=v.length,a,f,c,p,w,E,S,x,T;for(f=0;f<s;++f){c=v[f],p=c.source,w=c.target,x=w.x-p.x,T=w.y-p.y;if(E=x*x+T*T)E=o*g[f]*((E=Math.sqrt(E))-m[f])/E,x*=E,T*=E,w.x-=x*(S=p.weight+w.weight?p.weight/(p.weight+w.weight):.5),w.y-=T*S,p.x+=x*(S=1-S),p.y+=T*S}if(S=o*h){x=i[0]/2,T=i[1]/2,f=-1;if(S)while(++f<t)c=d[f],c.x+=(x-c.x)*S,c.y+=(T-c.y)*S}if(l){du(a=e.geom.quadtree(d),o,y),f=-1;while(++f<t)(c=d[f]).fixed||a.visit(b(c))}f=-1;while(++f<t)c=d[f],c.fixed?(c.x=c.px,c.y=c.py):(c.x-=(c.px-(c.px=c.x))*u,c.y-=(c.py-(c.py=c.y))*u);n.tick({type:"tick",alpha:o})},t.nodes=function(e){return arguments.length?(d=e,t):d},t.links=function(e){return arguments.length?(v=e,t):v},t.size=function(e){return arguments.length?(i=e,t):i},t.linkDistance=function(e){return arguments.length?(a=typeof e=="function"?e:+e,t):a},t.distance=t.linkDistance,t.linkStrength=function(e){return arguments.length?(f=typeof e=="function"?e:+e,t):f},t.friction=function(e){return arguments.length?(u=+e,t):u},t.charge=function(e){return arguments.length?(l=typeof e=="function"?e:+e,t):l},t.chargeDistance=function(e){return arguments.length?(c=e*e,t):Math.sqrt(c)},t.gravity=function(e){return arguments.length?(h=+e,t):h},t.theta=function(e){return arguments.length?(p=e*e,t):Math.sqrt(p)},t.alpha=function(e){return arguments.length?(e=+e,o?e>0?o=e:(r.c=null,r.t=NaN,r=null,n.end({type:"end",alpha:o=0})):e>0&&(n.start({type:"start",alpha:o=e}),r=Hn(t.tick)),t):o},t.start=function(){function h(t,i){if(!u){u=new Array(n);for(a=0;a<n;++a)u[a]=[];for(a=0;a<r;++a){var s=v[a];u[s.source.index].push(s.target),u[s.target.index].push(s.source)}}var o=u[e],a=-1,f=o.length,l;while(++a<f)if(!isNaN(l=o[a][t]))return l;return Math.random()*i}var e,n=d.length,r=v.length,s=i[0],o=i[1],u,c;for(e=0;e<n;++e)(c=d[e]).index=e,c.weight=0;for(e=0;e<r;++e)c=v[e],typeof c.source=="number"&&(c.source=d[c.source]),typeof c.target=="number"&&(c.target=d[c.target]),++c.source.weight,++c.target.weight;for(e=0;e<n;++e)c=d[e],isNaN(c.x)&&(c.x=h("x",s)),isNaN(c.y)&&(c.y=h("y",o)),isNaN(c.px)&&(c.px=c.x),isNaN(c.py)&&(c.py=c.y);m=[];if(typeof a=="function")for(e=0;e<r;++e)m[e]=+a.call(this,v[e],e);else for(e=0;e<r;++e)m[e]=a;g=[];if(typeof f=="function")for(e=0;e<r;++e)g[e]=+f.call(this,v[e],e);else for(e=0;e<r;++e)g[e]=f;y=[];if(typeof l=="function")for(e=0;e<n;++e)y[e]=+l.call(this,d[e],e);else for(e=0;e<n;++e)y[e]=l;return t.resume()},t.resume=function(){return t.alpha(.1)},t.stop=function(){return t.alpha(0)},t.drag=function(){s||(s=e.behavior.drag().origin(D).on("dragstart.force",lu).on("drag.force",w).on("dragend.force",cu));if(!arguments.length)return s;this.on("mouseover.force",hu).on("mouseout.force",pu).call(s)},e.rebind(t,n,"on")};var vu=20,mu=1,gu=Infinity;e.layout.hierarchy=function(){function r(i){var s=[i],o=[],u;i.depth=0;while((u=s.pop())!=null){o.push(u);if((f=t.call(r,u,u.depth))&&(a=f.length)){var a,f,l;while(--a>=0)s.push(l=f[a]),l.parent=u,l.depth=u.depth+1;n&&(u.value=0),u.children=f}else n&&(u.value=+n.call(r,u,u.depth)||0),delete u.children}return wu(i,function(t){var r,i;e&&(r=t.children)&&r.sort(e),n&&(i=t.parent)&&(i.value+=t.value)}),o}var e=xu,t=Eu,n=Su;return r.sort=function(t){return arguments.length?(e=t,r):e},r.children=function(e){return arguments.length?(t=e,r):t},r.value=function(e){return arguments.length?(n=e,r):n},r.revalue=function(e){return n&&(bu(e,function(e){e.children&&(e.value=0)}),wu(e,function(e){var t;e.children||(e.value=+n.call(r,e,e.depth)||0);if(t=e.parent)t.value+=e.value})),e},r},e.layout.partition=function(){function r(e,t,n,i){var s=e.children;e.x=t,e.y=e.depth*i,e.dx=n,e.dy=i;if(s&&(u=s.length)){var o=-1,u,a,f;n=e.value?n/e.value:0;while(++o<u)r(a=s[o],t,f=a.value*n,i),t+=f}}function i(e){var t=e.children,n=0;if(t&&(s=t.length)){var r=-1,s;while(++r<s)n=Math.max(n,i(t[r]))}return 1+n}function s(e,s){var o=t.call(this,e,s);return r(o[0],0,n[0],n[1]/i(o[0])),o}var t=e.layout.hierarchy(),n=[1,1];return s.size=function(e){return arguments.length?(n=e,s):n},yu(s,t)},e.layout.pie=function(){function o(u){var a=u.length,f=u.map(function(e,n){return+t.call(o,e,n)}),l=+(typeof r=="function"?r.apply(this,arguments):r),c=(typeof i=="function"?i.apply(this,arguments):i)-l,h=Math.min(Math.abs(c)/a,+(typeof s=="function"?s.apply(this,arguments):s)),p=h*(c<0?-1:1),d=e.sum(f),v=d?(c-a*p)/d:0,m=e.range(a),g=[],y;return n!=null&&m.sort(n===Nu?function(e,t){return f[t]-f[e]}:function(e,t){return n(u[e],u[t])}),m.forEach(function(e){g[e]={data:u[e],value:y=f[e],startAngle:l,endAngle:l+=y*v+p,padAngle:h}}),g}var t=Number,n=Nu,r=0,i=Ot,s=0;return o.value=function(e){return arguments.length?(t=e,o):t},o.sort=function(e){return arguments.length?(n=e,o):n},o.startAngle=function(e){return arguments.length?(r=e,o):r},o.endAngle=function(e){return arguments.length?(i=e,o):i},o.padAngle=function(e){return arguments.length?(s=e,o):s},o};var Nu={};e.layout.stack=function(){function u(a,f){if(!(v=a.length))return a;var l=a.map(function(e,n){return t.call(u,e,n)}),c=l.map(function(e){return e.map(function(e,t){return[s.call(u,e,t),o.call(u,e,t)]})}),h=n.call(u,c,f);l=e.permute(l,h),c=e.permute(c,h);var p=r.call(u,c,f),d=l[0].length,v,m,g,y;for(g=0;g<d;++g){i.call(u,l[0][g],y=p[g],c[0][g][1]);for(m=1;m<v;++m)i.call(u,l[m][g],y+=c[m-1][g][1],c[m][g][1])}return a}var t=D,n=Mu,r=_u,i=Lu,s=Cu,o=ku;return u.values=function(e){return arguments.length?(t=e,u):t},u.order=function(e){return arguments.length?(n=typeof e=="function"?e:Au.get(e)||Mu,u):n},u.offset=function(e){return arguments.length?(r=typeof e=="function"?e:Ou.get(e)||_u,u):r},u.x=function(e){return arguments.length?(s=e,u):s},u.y=function(e){return arguments.length?(o=e,u):o},u.out=function(e){return arguments.length?(i=e,u):i},u};var Au=e.map({"inside-out":function(t){var n=t.length,r,i,s=t.map(Du),o=t.map(Pu),u=e.range(n).sort(function(e,t){return s[e]-s[t]}),a=0,f=0,l=[],c=[];for(r=0;r<n;++r)i=u[r],a<f?(a+=o[i],l.push(i)):(f+=o[i],c.push(i));return c.reverse().concat(l)},reverse:function(t){return e.range(t.length).reverse()},"default":Mu}),Ou=e.map({silhouette:function(e){var t=e.length,n=e[0].length,r=[],i=0,s,o,u,a=[];for(o=0;o<n;++o){for(s=0,u=0;s<t;s++)u+=e[s][o][1];u>i&&(i=u),r.push(u)}for(o=0;o<n;++o)a[o]=(i-r[o])/2;return a},wiggle:function(e){var t=e.length,n=e[0],r=n.length,i,s,o,u,a,f,l,c,h,p=[];p[0]=c=h=0;for(s=1;s<r;++s){for(i=0,u=0;i<t;++i)u+=e[i][s][1];for(i=0,a=0,l=n[s][0]-n[s-1][0];i<t;++i){for(o=0,f=(e[i][s][1]-e[i][s-1][1])/(2*l);o<i;++o)f+=(e[o][s][1]-e[o][s-1][1])/l;a+=f*e[i][s][1]}p[s]=c-=u?a/u*l:0,c<h&&(h=c)}for(s=0;s<r;++s)p[s]-=h;return p},expand:function(e){var t=e.length,n=e[0].length,r=1/t,i,s,o,u=[];for(s=0;s<n;++s){for(i=0,o=0;i<t;i++)o+=e[i][s][1];if(o)for(i=0;i<t;i++)e[i][s][1]/=o;else for(i=0;i<t;i++)e[i][s][1]=r}for(s=0;s<n;++s)u[s]=0;return u},zero:_u});e.layout.histogram=function(){function s(s,o){var u=[],a=s.map(n,this),f=r.call(this,a,o),l=i.call(this,f,a,o),c,o=-1,h=a.length,p=l.length-1,d=t?1:1/h,v;while(++o<p)c=u[o]=[],c.dx=l[o+1]-(c.x=l[o]),c.y=0;if(p>0){o=-1;while(++o<h)v=a[o],v>=f[0]&&v<=f[1]&&(c=u[e.bisect(l,v,1,p)-1],c.y+=d,c.push(s[o]))}return u}var t=!0,n=Number,r=Fu,i=Bu;return s.value=function(e){return arguments.length?(n=e,s):n},s.range=function(e){return arguments.length?(r=Nn(e),s):r},s.bins=function(e){return arguments.length?(i=typeof e=="number"?function(t){return ju(t,e)}:Nn(e),s):i},s.frequency=function(e){return arguments.length?(t=!!e,s):t},s},e.layout.pack=function(){function s(e,s){var o=t.call(this,e,s),u=o[0],a=r[0],f=r[1],l=i==null?Math.sqrt:typeof i=="function"?i:function(){return i};u.x=u.y=0,wu(u,function(e){e.r=+l(e.value)}),wu(u,zu);if(n){var c=n*(i?1:Math.max(2*u.r/a,2*u.r/f))/2;wu(u,function(e){e.r+=c}),wu(u,zu),wu(u,function(e){e.r-=c})}return Vu(u,a/2,f/2,i?1:1/Math.max(2*u.r/a,2*u.r/f)),o}var t=e.layout.hierarchy().sort(Iu),n=0,r=[1,1],i;return s.size=function(e){return arguments.length?(r=e,s):r},s.radius=function(e){return arguments.length?(i=e==null||typeof e=="function"?e:+e,s):i},s.padding=function(e){return arguments.length?(n=+e,s):n},yu(s,t)},e.layout.tree=function(){function s(e,s){var f=t.call(this,e,s),c=f[0],h=o(c);wu(h,u),h.parent.m=-h.z,bu(h,a);if(i)bu(c,l);else{var p=c,d=c,v=c;bu(c,function(e){e.x<p.x&&(p=e),e.x>d.x&&(d=e),e.depth>v.depth&&(v=e)});var m=n(p,d)/2-p.x,g=r[0]/(d.x+n(d,p)/2+m),y=r[1]/(v.depth||1);bu(c,function(e){e.x=(e.x+m)*g,e.y=e.depth*y})}return f}function o(e){var t={A:null,children:[e]},n=[t],r;while((r=n.pop())!=null)for(var i=r.children,s,o=0,u=i.length;o<u;++o)n.push((i[o]=s={_:i[o],parent:r,children:(s=i[o].children)&&s.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=s);return t.children[0]}function u(e){var t=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;if(t.length){Yu(e);var s=(t[0].z+t[t.length-1].z)/2;i?(e.z=i.z+n(e._,i._),e.m=e.z-s):e.z=s}else i&&(e.z=i.z+n(e._,i._));e.parent.A=f(e,i,e.parent.A||r[0])}function a(e){e._.x=e.z+e.parent.m,e.m+=e.parent.m}function f(e,t,r){if(t){var i=e,s=e,o=t,u=i.parent.children[0],a=i.m,f=s.m,l=o.m,c=u.m,h;while(o=Qu(o),i=Ku(i),o&&i)u=Ku(u),s=Qu(s),s.a=e,h=o.z+l-i.z-a+n(o._,i._),h>0&&(Gu(Zu(o,e,r),e,h),a+=h,f+=h),l+=o.m,a+=i.m,c+=u.m,f+=s.m;o&&!Qu(s)&&(s.t=o,s.m+=l-f),i&&!Ku(u)&&(u.t=i,u.m+=a-c,r=e)}return r}function l(e){e.x*=r[0],e.y=e.depth*r[1]}var t=e.layout.hierarchy().sort(null).value(null),n=Ju,r=[1,1],i=null;return s.separation=function(e){return arguments.length?(n=e,s):n},s.size=function(e){return arguments.length?(i=(r=e)==null?l:null,s):i?null:r},s.nodeSize=function(e){return arguments.length?(i=(r=e)==null?null:l,s):i?r:null},yu(s,t)},e.layout.cluster=function(){function s(e,s){var o=t.call(this,e,s),u=o[0],a,f=0;wu(u,function(e){var t=e.children;t&&t.length?(e.x=ta(t),e.y=ea(t)):(e.x=a?f+=n(e,a):0,e.y=0,a=e)});var l=na(u),c=ra(u),h=l.x-n(l,c)/2,p=c.x+n(c,l)/2;return wu(u,i?function(e){e.x=(e.x-u.x)*r[0],e.y=(u.y-e.y)*r[1]}:function(e){e.x=(e.x-h)/(p-h)*r[0],e.y=(1-(u.y?e.y/u.y:1))*r[1]}),o}var t=e.layout.hierarchy().sort(null).value(null),n=Ju,r=[1,1],i=!1;return s.separation=function(e){return arguments.length?(n=e,s):n},s.size=function(e){return arguments.length?(i=(r=e)==null,s):i?null:r},s.nodeSize=function(e){return arguments.length?(i=(r=e)!=null,s):i?r:null},yu(s,t)},e.layout.treemap=function(){function l(e,t){var n=-1,r=e.length,i,s;while(++n<r)s=(i=e[n]).value*(t<0?0:t),i.area=isNaN(s)||s<=0?0:s}function c(e){var t=e.children;if(t&&t.length){var n=s(e),r=[],i=t.slice(),o,u=Infinity,f,h=a==="slice"?n.dx:a==="dice"?n.dy:a==="slice-dice"?e.depth&1?n.dy:n.dx:Math.min(n.dx,n.dy),v;l(i,n.dx*n.dy/e.value),r.area=0;while((v=i.length)>0)r.push(o=i[v-1]),r.area+=o.area,a!=="squarify"||(f=p(r,h))<=u?(i.pop(),u=f):(r.area-=r.pop().area,d(r,h,n,!1),h=Math.min(n.dx,n.dy),r.length=r.area=0,u=Infinity);r.length&&(d(r,h,n,!0),r.length=r.area=0),t.forEach(c)}}function h(e){var t=e.children;if(t&&t.length){var n=s(e),r=t.slice(),i,o=[];l(r,n.dx*n.dy/e.value),o.area=0;while(i=r.pop())o.push(i),o.area+=i.area,i.z!=null&&(d(o,i.z?n.dx:n.dy,n,!r.length),o.length=o.area=0);t.forEach(h)}}function p(e,t){var n=e.area,r,i=0,s=Infinity,o=-1,u=e.length;while(++o<u){if(!(r=e[o].area))continue;r<s&&(s=r),r>i&&(i=r)}return n*=n,t*=t,n?Math.max(t*i*f/n,n/(t*s*f)):Infinity}function d(e,t,r,i){var s=-1,o=e.length,u=r.x,a=r.y,f=t?n(e.area/t):0,l;if(t==r.dx){if(i||f>r.dy)f=r.dy;while(++s<o)l=e[s],l.x=u,l.y=a,l.dy=f,u+=l.dx=Math.min(r.x+r.dx-u,f?n(l.area/f):0);l.z=!0,l.dx+=r.x+r.dx-u,r.y+=f,r.dy-=f}else{if(i||f>r.dx)f=r.dx;while(++s<o)l=e[s],l.x=u,l.y=a,l.dx=f,a+=l.dy=Math.min(r.y+r.dy-a,f?n(l.area/f):0);l.z=!1,l.dy+=r.y+r.dy-a,r.x+=f,r.dx-=f}}function v(e){var n=u||t(e),i=n[0];return i.x=i.y=0,i.value?(i.dx=r[0],i.dy=r[1]):i.dx=i.dy=0,u&&t.revalue(i),l([i],i.dx*i.dy/i.value),(u?h:c)(i),o&&(u=n),n}var t=e.layout.hierarchy(),n=Math.round,r=[1,1],i=null,s=ia,o=!1,u,a="squarify",f=.5*(1+Math.sqrt(5));return v.size=function(e){return arguments.length?(r=e,v):r},v.padding=function(e){function t(t){var n=e.call(v,t,t.depth);return n==null?ia(t):sa(t,typeof n=="number"?[n,n,n,n]:n)}function n(t){return sa(t,e)}if(!arguments.length)return i;var r;return s=(i=e)==null?ia:(r=typeof e)==="function"?t:r==="number"?(e=[e,e,e,e],n):n,v},v.round=function(e){return arguments.length?(n=e?Math.round:Number,v):n!=Number},v.sticky=function(e){return arguments.length?(o=e,u=null,v):o},v.ratio=function(e){return arguments.length?(f=e,v):f},v.mode=function(e){return arguments.length?(a=e+"",v):a},yu(v,t)},e.random={normal:function(e,t){var n=arguments.length;return n<2&&(t=1),n<1&&(e=0),function(){var n,r,i;do n=Math.random()*2-1,r=Math.random()*2-1,i=n*n+r*r;while(!i||i>1);return e+t*n*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var t=e.random.normal.apply(e,arguments);return function(){return Math.exp(t())}},bates:function(t){var n=e.random.irwinHall(t);return function(){return n()/t}},irwinHall:function(e){return function(){for(var t=0,n=0;n<e;n++)t+=Math.random();return t}}},e.scale={};var ca={floor:D,ceil:D};e.scale.linear=function(){return pa([0,1],[0,1],Co,!1)};var ba={s:1,g:1,p:1,r:1,e:1};e.scale.log=function(){return Sa(e.scale.linear().domain([0,1]),10,!0,[1,10])};var xa=e.format(".0e"),Ta={floor:function(e){return-Math.ceil(-e)},ceil:function(e){return-Math.floor(-e)}};e.scale.pow=function(){return Na(e.scale.linear(),1,[0,1])},e.scale.sqrt=function(){return e.scale.pow().exponent(.5)},e.scale.ordinal=function(){return ka([],{t:"range",a:[[]]})},e.scale.category10=function(){return e.scale.ordinal().range(La)},e.scale.category20=function(){return e.scale.ordinal().range(Aa)},e.scale.category20b=function(){return e.scale.ordinal().range(Oa)},e.scale.category20c=function(){return e.scale.ordinal().range(Ma)};var La=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(mn),Aa=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(mn),Oa=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(mn),Ma=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(mn);e.scale.quantile=function(){return _a([],[])},e.scale.quantize=function(){return Da(0,1,[0,1])},e.scale.threshold=function(){return Pa([.5],[0,1])},e.scale.identity=function(){return Ha([0,1])},e.svg={},e.svg.arc=function(){function u(){var u=Math.max(0,+e.apply(this,arguments)),f=Math.max(0,+t.apply(this,arguments)),l=i.apply(this,arguments)-_t,c=s.apply(this,arguments)-_t,h=Math.abs(c-l),p=l>c?0:1;f<u&&(d=f,f=u,u=d);if(h>=Mt)return a(f,p)+(u?a(u,1-p):"")+"Z";var d,v,m,g,y=0,b=0,w,E,S,x,T,N,C,k,L=[];if(g=(+o.apply(this,arguments)||0)/2)m=r===ja?Math.sqrt(u*u+f*f):+r.apply(this,arguments),p||(b*=-1),f&&(b=Ft(m/f*Math.sin(g))),u&&(y=Ft(m/u*Math.sin(g)));if(f){w=f*Math.cos(l+b),E=f*Math.sin(l+b),S=f*Math.cos(c-b),x=f*Math.sin(c-b);var A=Math.abs(c-l-2*b)<=At?0:1;if(b&&za(w,E,S,x)===p^A){var O=(l+c)/2;w=f*Math.cos(O),E=f*Math.sin(O),S=x=null}}else w=E=0;if(u){T=u*Math.cos(c-y),N=u*Math.sin(c-y),C=u*Math.cos(l+y),k=u*Math.sin(l+y);var M=Math.abs(l-c+2*y)<=At?0:1;if(y&&za(T,N,C,k)===1-p^M){var _=(l+c)/2;T=u*Math.cos(_),N=u*Math.sin(_),C=k=null}}else T=N=0;if(h>kt&&(d=Math.min(Math.abs(f-u)/2,+n.apply(this,arguments)))>.001){v=u<f^p?0:1;var D=d,P=d;if(h<At){var H=C==null?[T,N]:S==null?[w,E]:Os([w,E],[C,k],[S,x],[T,N]),B=w-H[0],j=E-H[1],F=S-H[0],I=x-H[1],q=1/Math.sin(Math.acos((B*F+j*I)/(Math.sqrt(B*B+j*j)*Math.sqrt(F*F+I*I)))/2),R=Math.sqrt(H[0]*H[0]+H[1]*H[1]);P=Math.min(d,(u-R)/(q-1)),D=Math.min(d,(f-R)/(q+1))}if(S!=null){var U=Wa(C==null?[T,N]:[C,k],[w,E],f,D,p),z=Wa([S,x],[T,N],f,D,p);d===D?L.push("M",U[0],"A",D,",",D," 0 0,",v," ",U[1],"A",f,",",f," 0 ",1-p^za(U[1][0],U[1][1],z[1][0],z[1][1]),",",p," ",z[1],"A",D,",",D," 0 0,",v," ",z[0]):L.push("M",U[0],"A",D,",",D," 0 1,",v," ",z[0])}else L.push("M",w,",",E);if(C!=null){var W=Wa([w,E],[C,k],u,-P,p),X=Wa([T,N],S==null?[w,E]:[S,x],u,-P,p);d===P?L.push("L",X[0],"A",P,",",P," 0 0,",v," ",X[1],"A",u,",",u," 0 ",p^za(X[1][0],X[1][1],W[1][0],W[1][1]),",",1-p," ",W[1],"A",P,",",P," 0 0,",v," ",W[0]):L.push("L",X[0],"A",P,",",P," 0 0,",v," ",W[0])}else L.push("L",T,",",N)}else L.push("M",w,",",E),S!=null&&L.push("A",f,",",f," 0 ",A,",",p," ",S,",",x),L.push("L",T,",",N),C!=null&&L.push("A",u,",",u," 0 ",M,",",1-p," ",C,",",k);return L.push("Z"),L.join("")}function a(e,t){return"M0,"+e+"A"+e+","+e+" 0 1,"+t+" 0,"+ -e+"A"+e+","+e+" 0 1,"+t+" 0,"+e}var e=Fa,t=Ia,n=Ba,r=ja,i=qa,s=Ra,o=Ua;return u.innerRadius=function(t){return arguments.length?(e=Nn(t),u):e},u.outerRadius=function(e){return arguments.length?(t=Nn(e),u):t},u.cornerRadius=function(e){return arguments.length?(n=Nn(e),u):n},u.padRadius=function(e){return arguments.length?(r=e==ja?ja:Nn(e),u):r},u.startAngle=function(e){return arguments.length?(i=Nn(e),u):i},u.endAngle=function(e){return arguments.length?(s=Nn(e),u):s},u.padAngle=function(e){return arguments.length?(o=Nn(e),u):o},u.centroid=function(){var n=(+e.apply(this,arguments)+ +t.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +s.apply(this,arguments))/2-_t;return[Math.cos(r)*n,Math.sin(r)*n]},u};var ja="auto";e.svg.line=function(){return Xa(D)};var Va=e.map({linear:$a,"linear-closed":Ja,step:Ka,"step-before":Qa,"step-after":Ga,basis:rf,"basis-open":sf,"basis-closed":of,bundle:uf,cardinal:ef,"cardinal-open":Ya,"cardinal-closed":Za,monotone:mf});Va.forEach(function(e,t){t.key=e,t.closed=/-closed$/.test(e)});var ff=[0,2/3,1/3,0],lf=[0,1/3,2/3,0],cf=[0,1/6,2/3,1/6];e.svg.line.radial=function(){var e=Xa(gf);return e.radius=e.x,delete e.x,e.angle=e.y,delete e.y,e},Qa.reverse=Ga,Ga.reverse=Qa,e.svg.area=function(){return yf(D)},e.svg.area.radial=function(){var e=yf(gf);return e.radius=e.x,delete e.x,e.innerRadius=e.x0,delete e.x0,e.outerRadius=e.x1,delete e.x1,e.angle=e.y,delete e.y,e.startAngle=e.y0,delete e.y0,e.endAngle=e.y1,delete e.y1,e},e.svg.chord=function(){function s(n,r){var i=o(this,e,n,r),s=o(this,t,n,r);return"M"+i.p0+a(i.r,i.p1,i.a1-i.a0)+(u(i,s)?f(i.r,i.p1,i.r,i.p0):f(i.r,i.p1,s.r,s.p0)+a(s.r,s.p1,s.a1-s.a0)+f(s.r,s.p1,i.r,i.p0))+"Z"}function o(e,t,s,o){var u=t.call(e,s,o),a=n.call(e,u,o),f=r.call(e,u,o)-_t,l=i.call(e,u,o)-_t;return{r:a,a0:f,a1:l,p0:[a*Math.cos(f),a*Math.sin(f)],p1:[a*Math.cos(l),a*Math.sin(l)]}}function u(e,t){return e.a0==t.a0&&e.a1==t.a1}function a(e,t,n){return"A"+e+","+e+" 0 "+ +(n>At)+",1 "+t}function f(e,t,n,r){return"Q 0,0 "+r}var e=us,t=as,n=bf,r=qa,i=Ra;return s.radius=function(e){return arguments.length?(n=Nn(e),s):n},s.source=function(t){return arguments.length?(e=Nn(t),s):e},s.target=function(e){return arguments.length?(t=Nn(e),s):t},s.startAngle=function(e){return arguments.length?(r=Nn(e),s):r},s.endAngle=function(e){return arguments.length?(i=Nn(e),s):i},s},e.svg.diagonal=function(){function r(r,i){var s=e.call(this,r,i),o=t.call(this,r,i),u=(s.y+o.y)/2,a=[s,{x:s.x,y:u},{x:o.x,y:u},o];return a=a.map(n),"M"+a[0]+"C"+a[1]+" "+a[2]+" "+a[3]}var e=us,t=as,n=wf;return r.source=function(t){return arguments.length?(e=Nn(t),r):e},r.target=function(e){return arguments.length?(t=Nn(e),r):t},r.projection=function(e){return arguments.length?(n=e,r):n},r},e.svg.diagonal.radial=function(){var t=e.svg.diagonal(),n=wf,r=t.projection;return t.projection=function(e){return arguments.length?r(Ef(n=e)):n},t},e.svg.symbol=function(){function n(n,r){return(Nf.get(e.call(this,n,r))||Tf)(t.call(this,n,r))}var e=xf,t=Sf;return n.type=function(t){return arguments.length?(e=Nn(t),n):e},n.size=function(e){return arguments.length?(t=Nn(e),n):t},n};var Nf=e.map({circle:Tf,cross:function(e){var t=Math.sqrt(e/5)/2;return"M"+ -3*t+","+ -t+"H"+ -t+"V"+ -3*t+"H"+t+"V"+ -t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+ -t+"V"+t+"H"+ -3*t+"Z"},diamond:function(e){var t=Math.sqrt(e/(2*kf)),n=t*kf;return"M0,"+ -t+"L"+n+",0"+" 0,"+t+" "+ -n+",0"+"Z"},square:function(e){var t=Math.sqrt(e)/2;return"M"+ -t+","+ -t+"L"+t+","+ -t+" "+t+","+t+" "+ -t+","+t+"Z"},"triangle-down":function(e){var t=Math.sqrt(e/Cf),n=t*Cf/2;return"M0,"+n+"L"+t+","+ -n+" "+ -t+","+ -n+"Z"},"triangle-up":function(e){var t=Math.sqrt(e/Cf),n=t*Cf/2;return"M0,"+ -n+"L"+t+","+n+" "+ -t+","+n+"Z"}});e.svg.symbolTypes=Nf.keys();var Cf=Math.sqrt(3),kf=Math.tan(30*Dt);K.transition=function(e){var t=Df||++_f,n=jf(e),r=[],i,s,o=Pf||{time:Date.now(),ease:Bo,delay:0,duration:250};for(var u=-1,a=this.length;++u<a;){r.push(i=[]);for(var f=this[u],l=-1,c=f.length;++l<c;)(s=f[l])&&Ff(s,l,n,t,o),i.push(s)}return Of(r,n,t)},K.interrupt=function(e){return this.each(e==null?Lf:Af(jf(e)))};var Lf=Af(jf()),Mf=[],_f=0,Df,Pf;Mf.call=K.call,Mf.empty=K.empty,Mf.node=K.node,Mf.size=K.size,e.transition=function(t,n){return t&&t.transition?Df?t.transition(n):t:e.selection().transition(t)},e.transition.prototype=Mf,Mf.select=function(e){var t=this.id,n=this.namespace,r=[],i,s,o;e=Q(e);for(var u=-1,a=this.length;++u<a;){r.push(i=[]);for(var f=this[u],l=-1,c=f.length;++l<c;)(o=f[l])&&(s=e.call(o,o.__data__,l,u))?("__data__"in o&&(s.__data__=o.__data__),Ff(s,l,n,t,o[n][t]),i.push(s)):i.push(null)}return Of(r,n,t)},Mf.selectAll=function(e){var t=this.id,n=this.namespace,r=[],i,s,o,u,a;e=G(e);for(var f=-1,l=this.length;++f<l;)for(var c=this[f],h=-1,p=c.length;++h<p;)if(o=c[h]){a=o[n][t],s=e.call(o,o.__data__,h,f),r.push(i=[]);for(var d=-1,v=s.length;++d<v;)(u=s[d])&&Ff(u,d,n,t,a),i.push(u)}return Of(r,n,t)},Mf.filter=function(e){var t=[],n,r,i;typeof e!="function"&&(e=ct(e));for(var s=0,o=this.length;s<o;s++){t.push(n=[]);for(var r=this[s],u=0,a=r.length;u<a;u++)(i=r[u])&&e.call(i,i.__data__,u,s)&&n.push(i)}return Of(t,this.namespace,this.id)},Mf.tween=function(e,t){var n=this.id,r=this.namespace;return arguments.length<2?this.node()[r][n].tween.get(e):pt(this,t==null?function(t){t[r][n].tween.remove(e)}:function(i){i[r][n].tween.set(e,t)})},Mf.attr=function(t,n){function s(){this.removeAttribute(i)}function o(){this.removeAttributeNS(i.space,i.local)}function u(e){return e==null?s:(e+="",function(){var t=this.getAttribute(i),n;return t!==e&&(n=r(t,e),function(e){this.setAttribute(i,n(e))})})}function a(e){return e==null?o:(e+="",function(){var t=this.getAttributeNS(i.space,i.local),n;return t!==e&&(n=r(t,e),function(e){this.setAttributeNS(i.space,i.local,n(e))})})}if(arguments.length<2){for(n in t)this.attr(n,t[n]);return this}var r=t=="transform"?iu:Co,i=e.ns.qualify(t);return Hf(this,"attr."+t,n,i.local?a:u)},Mf.attrTween=function(t,n){function i(e,t){var i=n.call(this,e,t,this.getAttribute(r));return i&&function(e){this.setAttribute(r,i(e))}}function s(e,t){var i=n.call(this,e,t,this.getAttributeNS(r.space,r.local));return i&&function(e){this.setAttributeNS(r.space,r.local,i(e))}}var r=e.ns.qualify(t);return this.tween("attr."+t,r.local?s:i)},Mf.style=function(e,t,n){function i(){this.style.removeProperty(e)}function o(t){return t==null?i:(t+="",function(){var r=s(this).getComputedStyle(this,null).getPropertyValue(e),i;return r!==t&&(i=Co(r,t),function(t){this.style.setProperty(e,i(t),n)})})}var r=arguments.length;if(r<3){if(typeof e!="string"){r<2&&(t="");for(n in e)this.style(n,e[n],t);return this}n=""}return Hf(this,"style."+e,t,o)},Mf.styleTween=function(e,t,n){function r(r,i){var o=t.call(this,r,i,s(this).getComputedStyle(this,null).getPropertyValue(e));return o&&function(t){this.style.setProperty(e,o(t),n)}}return arguments.length<3&&(n=""),this.tween("style."+e,r)},Mf.text=function(e){return Hf(this,"text",e,Bf)},Mf.remove=function(){var e=this.namespace;return this.each("end.transition",function(){var t;this[e].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Mf.ease=function(t){var n=this.id,r=this.namespace;return arguments.length<1?this.node()[r][n].ease:(typeof t!="function"&&(t=e.ease.apply(e,arguments)),pt(this,function(e){e[r][n].ease=t}))},Mf.delay=function(e){var t=this.id,n=this.namespace;return arguments.length<1?this.node()[n][t].delay:pt(this,typeof e=="function"?function(r,i,s){r[n][t].delay=+e.call(r,r.__data__,i,s)}:(e=+e,function(r){r[n][t].delay=e}))},Mf.duration=function(e){var t=this.id,n=this.namespace;return arguments.length<1?this.node()[n][t].duration:pt(this,typeof e=="function"?function(r,i,s){r[n][t].duration=Math.max(1,e.call(r,r.__data__,i,s))}:(e=Math.max(1,e),function(r){r[n][t].duration=e}))},Mf.each=function(t,n){var r=this.id,i=this.namespace;if(arguments.length<2){var s=Pf,o=Df;try{Df=r,pt(this,function(e,n,s){Pf=e[i][r],t.call(e,e.__data__,n,s)})}finally{Pf=s,Df=o}}else pt(this,function(s){var o=s[i][r];(o.event||(o.event=e.dispatch("start","end","interrupt"))).on(t,n)});return this},Mf.transition=function(){var e=this.id,t=++_f,n=this.namespace,r=[],i,s,o,u;for(var a=0,f=this.length;a<f;a++){r.push(i=[]);for(var s=this[a],l=0,c=s.length;l<c;l++){if(o=s[l])u=o[n][e],Ff(o,l,n,t,{time:u.time,ease:u.ease,delay:u.delay+u.duration,duration:u.duration});i.push(o)}}return Of(r,n,t)},e.svg.axis=function(){function l(n){n.each(function(){var n=e.select(this),l=this.__chart__||t,c=this.__chart__=t.copy(),h=a==null?c.ticks?c.ticks.apply(c,u):c.domain():a,p=f==null?c.tickFormat?c.tickFormat.apply(c,u):D:f,d=n.selectAll(".tick").data(h,c),v=d.enter().insert("g",".domain").attr("class","tick").style("opacity",kt),m=e.transition(d.exit()).style("opacity",kt).remove(),g=e.transition(d.order()).style("opacity",1),y=Math.max(i,0)+o,b,w=ua(c),E=n.selectAll(".domain").data([0]),S=(E.enter().append("path").attr("class","domain"),e.transition(E));v.append("line"),v.append("text");var x=v.select("line"),T=g.select("line"),N=d.select("text").text(p),C=v.select("text"),k=g.select("text"),L=r==="top"||r==="left"?-1:1,A,O,M,_;r==="bottom"||r==="top"?(b=Rf,A="x",M="y",O="x2",_="y2",N.attr("dy",L<0?"0em":".71em").style("text-anchor","middle"),S.attr("d","M"+w[0]+","+L*s+"V0H"+w[1]+"V"+L*s)):(b=Uf,A="y",M="x",O="y2",_="x2",N.attr("dy",".32em").style("text-anchor",L<0?"end":"start"),S.attr("d","M"+L*s+","+w[0]+"H0V"+w[1]+"H"+L*s)),x.attr(_,L*i),C.attr(M,L*y),T.attr(O,0).attr(_,L*i),k.attr(A,0).attr(M,L*y);if(c.rangeBand){var P=c,H=P.rangeBand()/2;l=c=function(e){return P(e)+H}}else l.rangeBand?l=c:m.call(b,c,l);v.call(b,l,c),g.call(b,c,c)})}var t=e.scale.linear(),r=If,i=6,s=6,o=3,u=[10],a=null,f;return l.scale=function(e){return arguments.length?(t=e,l):t},l.orient=function(e){return arguments.length?(r=e in qf?e+"":If,l):r},l.ticks=function(){return arguments.length?(u=n(arguments),l):u},l.tickValues=function(e){return arguments.length?(a=e,l):a},l.tickFormat=function(e){return arguments.length?(f=e,l):f},l.tickSize=function(e){var t=arguments.length;return t?(i=+e,s=+arguments[t-1],l):i},l.innerTickSize=function(e){return arguments.length?(i=+e,l):i},l.outerTickSize=function(e){return arguments.length?(s=+e,l):s},l.tickPadding=function(e){return arguments.length?(o=+e,l):o},l.tickSubdivide=function(){return arguments.length&&l},l};var If="bottom",qf={top:1,right:1,bottom:1,left:1};e.svg.brush=function(){function h(t){t.each(function(){var t=e.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",m).on("touchstart.brush",m),i=t.selectAll(".background").data([0]);i.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var s=t.selectAll(".resize").data(c,D);s.exit().remove(),s.enter().append("g").attr("class",function(e){return"resize "+e}).style("cursor",function(e){return zf[e]}).append("rect").attr("x",function(e){return/[ew]$/.test(e)?-3:null}).attr("y",function(e){return/^[ns]/.test(e)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),s.style("display",h.empty()?"none":null);var o=e.transition(t),u=e.transition(i),a;n&&(a=ua(n),u.attr("x",a[0]).attr("width",a[1]-a[0]),d(o)),r&&(a=ua(r),u.attr("y",a[0]).attr("height",a[1]-a[0]),v(o)),p(o)})}function p(e){e.selectAll(".resize").attr("transform",function(e){return"translate("+i[+/e$/.test(e)]+","+o[+/^s/.test(e)]+")"})}function d(e){e.select(".extent").attr("x",i[0]),e.selectAll(".extent,.n>rect,.s>rect").attr("width",i[1]-i[0])}function v(e){e.select(".extent").attr("y",o[0]),e.selectAll(".extent,.e>rect,.w>rect").attr("height",o[1]-o[0])}function m(){function O(){e.event.keyCode==32&&(S||(T=null,N[0]-=i[1],N[1]-=o[1],S=2),q())}function M(){e.event.keyCode==32&&S==2&&(N[0]+=i[1],N[1]+=o[1],S=0,q())}function _(){var t=e.mouse(c),s=!1;C&&(t[0]+=C[0],t[1]+=C[1]),S||(e.event.altKey?(T||(T=[(i[0]+i[1])/2,(o[0]+o[1])/2]),N[0]=i[+(t[0]<T[0])],N[1]=o[+(t[1]<T[1])]):T=null),w&&D(t,n,0)&&(d(y),s=!0),E&&D(t,r,1)&&(v(y),s=!0),s&&(p(y),g({type:"brush",mode:S?"move":"resize"}))}function D(e,t,n){var r=ua(t),s=r[0],c=r[1],h=N[n],p=n?o:i,d=p[1]-p[0],v,m;S&&(s-=h,c-=d+h),v=(n?l:f)?Math.max(s,Math.min(c,e[n])):e[n],S?m=(v+=h)+d:(T&&(h=Math.max(s,Math.min(c,2*T[n]-v))),h<v?(m=v,v=h):m=h);if(p[0]!=v||p[1]!=m)return n?a=null:u=null,p[0]=v,p[1]=m,!0}function P(){_(),y.style("pointer-events","all").selectAll(".resize").style("display",h.empty()?"none":null),e.select("body").style("cursor",null),k.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),x(),g({type:"brushend"})}var c=this,m=e.select(e.event.target),g=t.of(c,arguments),y=e.select(c),b=m.datum(),w=!/^(n|s)$/.test(b)&&n,E=!/^(e|w)$/.test(b)&&r,S=m.classed("extent"),x=xt(c),T,N=e.mouse(c),C,k=e.select(s(c)).on("keydown.brush",O).on("keyup.brush",M);e.event.changedTouches?k.on("touchmove.brush",_).on("touchend.brush",P):k.on("mousemove.brush",_).on("mouseup.brush",P),y.interrupt().selectAll("*").interrupt();if(S)N[0]=i[0]-N[0],N[1]=o[0]-N[1];else if(b){var L=+/w$/.test(b),A=+/^n/.test(b);C=[i[1-L]-N[0],o[1-A]-N[1]],N[0]=i[L],N[1]=o[A]}else e.event.altKey&&(T=N.slice());y.style("pointer-events","none").selectAll(".resize").style("display",null),e.select("body").style("cursor",m.style("cursor")),g({type:"brushstart"}),_()}var t=U(h,"brushstart","brush","brushend"),n=null,r=null,i=[0,0],o=[0,0],u,a,f=!0,l=!0,c=Wf[0];return h.event=function(n){n.each(function(){var n=t.of(this,arguments),r={x:i,y:o,i:u,j:a},s=this.__chart__||r;this.__chart__=r,Df?e.select(this).transition().each("start.brush",function(){u=s.i,a=s.j,i=s.x,o=s.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=ko(i,r.x),t=ko(o,r.y);return u=a=null,function(s){i=r.x=e(s),o=r.y=t(s),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){u=r.i,a=r.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},h.x=function(e){return arguments.length?(n=e,c=Wf[!n<<1|!r],h):n},h.y=function(e){return arguments.length?(r=e,c=Wf[!n<<1|!r],h):r},h.clamp=function(e){return arguments.length?(n&&r?(f=!!e[0],l=!!e[1]):n?f=!!e:r&&(l=!!e),h):n&&r?[f,l]:n?f:r?l:null},h.extent=function(e){var t,s,f,l,c;if(!arguments.length)return n&&(u?(t=u[0],s=u[1]):(t=i[0],s=i[1],n.invert&&(t=n.invert(t),s=n.invert(s)),s<t&&(c=t,t=s,s=c))),r&&(a?(f=a[0],l=a[1]):(f=o[0],l=o[1],r.invert&&(f=r.invert(f),l=r.invert(l)),l<f&&(c=f,f=l,l=c))),n&&r?[[t,f],[s,l]]:n?[t,s]:r&&[f,l];if(n){t=e[0],s=e[1],r&&(t=t[0],s=s[0]),u=[t,s],n.invert&&(t=n(t),s=n(s)),s<t&&(c=t,t=s,s=c);if(t!=i[0]||s!=i[1])i=[t,s]}if(r){f=e[0],l=e[1],n&&(f=f[1],l=l[1]),a=[f,l],r.invert&&(f=r(f),l=r(l)),l<f&&(c=f,f=l,l=c);if(f!=o[0]||l!=o[1])o=[f,l]}return h},h.clear=function(){return h.empty()||(i=[0,0],o=[0,0],u=a=null),h},h.empty=function(){return!!n&&i[0]==i[1]||!!r&&o[0]==o[1]},e.rebind(h,t,"on")};var zf={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Wf=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Xf=Vn.format=Sr.timeFormat,Vf=Xf.utc,$f=Vf("%Y-%m-%dT%H:%M:%S.%LZ");Xf.iso=Date.prototype.toISOString&&+(new Date("2000-01-01T00:00:00.000Z"))?Jf:$f,Jf.parse=function(e){var t=new Date(e);return isNaN(t)?null:t},Jf.toString=$f.toString,Vn.second=Qn(function(e){return new $n(Math.floor(e/1e3)*1e3)},function(e,t){e.setTime(e.getTime()+Math.floor(t)*1e3)},function(e){return e.getSeconds()}),Vn.seconds=Vn.second.range,Vn.seconds.utc=Vn.second.utc.range,Vn.minute=Qn(function(e){return new $n(Math.floor(e/6e4)*6e4)},function(e,t){e.setTime(e.getTime()+Math.floor(t)*6e4)},function(e){return e.getMinutes()}),Vn.minutes=Vn.minute.range,Vn.minutes.utc=Vn.minute.utc.range,Vn.hour=Qn(function(e){var t=e.getTimezoneOffset()/60;return new $n((Math.floor(e/36e5-t)+t)*36e5)},function(e,t){e.setTime(e.getTime()+Math.floor(t)*36e5)},function(e){return e.getHours()}),Vn.hours=Vn.hour.range,Vn.hours.utc=Vn.hour.utc.range,Vn.month=Qn(function(e){return e=Vn.day(e),e.setDate(1),e},function(e,t){e.setMonth(e.getMonth()+t)},function(e){return e.getMonth()}),Vn.months=Vn.month.range,Vn.months.utc=Vn.month.utc.range;var Gf=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Yf=[[Vn.second,1],[Vn.second,5],[Vn.second,15],[Vn.second,30],[Vn.minute,1],[Vn.minute,5],[Vn.minute,15],[Vn.minute,30],[Vn.hour,1],[Vn.hour,3],[Vn.hour,6],[Vn.hour,12],[Vn.day,1],[Vn.day,2],[Vn.week,1],[Vn.month,1],[Vn.month,3],[Vn.year,1]],Zf=Xf.multi([[".%L",function(e){return e.getMilliseconds()}],[":%S",function(e){return e.getSeconds()}],["%I:%M",function(e){return e.getMinutes()}],["%I %p",function(e){return e.getHours()}],["%a %d",function(e){return e.getDay()&&e.getDate()!=1}],["%b %d",function(e){return e.getDate()!=1}],["%B",function(e){return e.getMonth()}],["%Y",ui]]),el={range:function(t,n,r){return e.range(Math.ceil(t/r)*r,+n,r).map(Qf)},floor:D,ceil:D};Yf.year=Vn.year,Vn.scale=function(){return Kf(e.scale.linear(),Yf,Zf)};var tl=Yf.map(function(e){return[e[0].utc,e[1]]}),nl=Vf.multi([[".%L",function(e){return e.getUTCMilliseconds()}],[":%S",function(e){return e.getUTCSeconds()}],["%I:%M",function(e){return e.getUTCMinutes()}],["%I %p",function(e){return e.getUTCHours()}],["%a %d",function(e){return e.getUTCDay()&&e.getUTCDate()!=1}],["%b %d",function(e){return e.getUTCDate()!=1}],["%B",function(e){return e.getUTCMonth()}],["%Y",ui]]);tl.year=Vn.year.utc,Vn.scale.utc=function(){return Kf(e.scale.linear(),tl,nl)},e.text=Cn(function(e){return e.responseText}),e.json=function(e,t){return kn(e,"application/json",rl,t)},e.html=function(e,t){return kn(e,"text/html",il,t)},e.xml=Cn(function(e){return e.responseXML}),typeof define=="function"&&define.amd?(this.d3=e,define("d3",e)):typeof module=="object"&&module.exports?module.exports=e:this.d3=e}(),function(e){"use strict";function s(e){this.owner=e}function o(e,t){if(Object.create)t.prototype=Object.create(e.prototype);else{var n=function(){};n.prototype=e.prototype,t.prototype=new n}return t.prototype.constructor=t,t}function u(e){var t=this.internal=new a(this);t.loadConfig(e),t.beforeInit(e),t.init(),t.afterInit(e),function r(e,t,n){Object.keys(e).forEach(function(i){t[i]=e[i].bind(n),Object.keys(e[i]).length>0&&r(e[i],t[i],n)})}(n,this,this)}function a(t){var n=this;n.d3=e.d3?e.d3:typeof require!="undefined"?require("d3"):undefined,n.api=t,n.config=n.getDefaultConfig(),n.data={},n.cache={},n.axes={}}function f(e){s.call(this,e)}function C(e,t){function p(e,t){e.attr("transform",function(e){return"translate("+Math.ceil(t(e)+l)+", 0)"})}function d(e,t){e.attr("transform",function(e){return"translate(0,"+Math.ceil(t(e))+")"})}function v(e){var t=e[0],n=e[e.length-1];return t<n?[t,n]:[n,t]}function m(e){var t,n,r=[];if(e.ticks)return e.ticks.apply(e,f);n=e.domain();for(t=Math.ceil(n[0]);t<n[1];t++)r.push(t);return r.length>0&&r[0]>0&&r.unshift(r[0]-(r[1]-r[0])),r}function g(){var e=n.copy(),r;return t.isCategory&&(r=n.domain(),e.domain([r[0],r[1]-1])),e}function y(e){var t=a?a(e):e;return typeof t!="undefined"?t:""}function b(e){if(N)return N;var t={h:11.5,w:5.5};return e.select("text").text(y).each(function(e){var n=this.getBoundingClientRect(),r=y(e),i=n.height,s=r?n.width/r.length:undefined;i&&s&&(t.h=i,t.w=s)}).text(""),N=t,t}function w(n){return t.withoutTransition?n:e.transition(n)}function E(a){a.each(function(){function z(e,n){function a(e,t){s=undefined;for(var r=1;r<t.length;r++){t.charAt(r)===" "&&(s=r),i=t.substr(0,r+1),o=I.w*i.length;if(n<o)return a(e.concat(t.substr(0,s?s:r)),t.slice(s?s+1:r))}return e.concat(t)}var r=y(e),i,s,o,u=[];if(Object.prototype.toString.call(r)==="[object Array]")return r;if(!n||n<=0)n=U?95:t.isCategory?Math.ceil(c(S[1])-c(S[0]))-12:110;return a(u,r+"")}function W(e,t){var n=I.h;return t===0&&(r==="left"||r==="right"?n=-((q[e.index]-1)*(I.h/2)-3):n=".71em"),n}function X(e){var t=n(e)+(h?0:l);return O[0]<t&&t<O[1]?i:0}function $(e){return e?e>0?"start":"end":"middle"}function J(e){return e?"rotate("+e+")":""}function K(e){return e?8*Math.sin(Math.PI*(e/180)):0}function Q(e){return e?11.5-2.5*(e/15)*(e>0?1:-1):R}var a=E.g=e.select(this),f=this.__chart__||n,c=this.__chart__=g(),S=u?u:m(c),x=a.selectAll(".tick").data(S,c),T=x.enter().insert("g",".domain").attr("class","tick").style("opacity",1e-6),N=x.exit().remove(),C=w(x).style("opacity",1),k,L,A,O=n.rangeExtent?n.rangeExtent():v(n.range()),M=a.selectAll(".domain").data([0]),_=(M.enter().append("path").attr("class","domain"),w(M));T.append("line"),T.append("text");var D=T.select("line"),P=C.select("line"),H=T.select("text"),B=C.select("text");t.isCategory?(l=Math.ceil((c(1)-c(0))/2),L=h?0:l,A=h?l:0):l=L=0;var j,F,I=b(a.select(".tick")),q=[],R=Math.max(i,0)+o,U=r==="left"||r==="right";j=x.select("text"),F=j.selectAll("tspan").data(function(e,n){var r=t.tickMultiline?z(e,t.tickWidth):[].concat(y(e));return q[n]=r.length,r.map(function(e){return{index:n,splitted:e}})}),F.enter().append("tspan"),F.exit().remove(),F.text(function(e){return e.splitted});var V=t.tickTextRotate;switch(r){case"bottom":k=p,D.attr("y2",i),H.attr("y",R),P.attr("x1",L).attr("x2",L).attr("y2",X),B.attr("x",0).attr("y",Q(V)).style("text-anchor",$(V)).attr("transform",J(V)),F.attr("x",0).attr("dy",W).attr("dx",K(V)),_.attr("d","M"+O[0]+","+s+"V0H"+O[1]+"V"+s);break;case"top":k=p,D.attr("y2",-i),H.attr("y",-R),P.attr("x2",0).attr("y2",-i),B.attr("x",0).attr("y",-R),j.style("text-anchor","middle"),F.attr("x",0).attr("dy","0em"),_.attr("d","M"+O[0]+","+ -s+"V0H"+O[1]+"V"+ -s);break;case"left":k=d,D.attr("x2",-i),H.attr("x",-R),P.attr("x2",-i).attr("y1",A).attr("y2",A),B.attr("x",-R).attr("y",l),j.style("text-anchor","end"),F.attr("x",-R).attr("dy",W),_.attr("d","M"+ -s+","+O[0]+"H0V"+O[1]+"H"+ -s);break;case"right":k=d,D.attr("x2",i),H.attr("x",R),P.attr("x2",i).attr("y2",0),B.attr("x",R).attr("y",0),j.style("text-anchor","start"),F.attr("x",R).attr("dy",W),_.attr("d","M"+s+","+O[0]+"H0V"+O[1]+"H"+s)}if(c.rangeBand){var G=c,Y=G.rangeBand()/2;f=c=function(e){return G(e)+Y}}else f.rangeBand?f=c:N.call(k,c);T.call(k,f),C.call(k,c)})}var n=e.scale.linear(),r="bottom",i=6,s,o=3,u=null,a,f,l=0,c=!0,h;return t=t||{},s=t.withOuterTick?6:0,E.scale=function(e){return arguments.length?(n=e,E):n},E.orient=function(e){return arguments.length?(r=e in{top:1,right:1,bottom:1,left:1}?e+"":"bottom",E):r},E.tickFormat=function(e){return arguments.length?(a=e,E):a},E.tickCentered=function(e){return arguments.length?(h=e,E):h},E.tickOffset=function(){return l},E.tickInterval=function(){var e,n;return t.isCategory?e=l*2:(n=E.g.select("path.domain").node().getTotalLength()-s*2,e=n/E.g.selectAll("line").size()),e===Infinity?0:e},E.ticks=function(){return arguments.length?(f=arguments,E):f},E.tickCulling=function(e){return arguments.length?(c=e,E):c},E.tickValues=function(e){if(typeof e=="function")u=function(){return e(n.domain())};else{if(!arguments.length)return u;u=e}return E},E}var t={version:"0.4.11"},n,r,i;t.generate=function(e){return new u(e)},t.chart={fn:u.prototype,internal:{fn:a.prototype,axis:{fn:f.prototype}}},n=t.chart.fn,r=t.chart.internal.fn,i=t.chart.internal.axis.fn,r.beforeInit=function(){},r.afterInit=function(){},r.init=function(){var e=this,t=e.config;e.initParams();if(t.data_url)e.convertUrlToData(t.data_url,t.data_mimeType,t.data_headers,t.data_keys,e.initWithData);else if(t.data_json)e.initWithData(e.convertJsonToData(t.data_json,t.data_keys));else if(t.data_rows)e.initWithData(e.convertRowsToData(t.data_rows));else{if(!t.data_columns)throw Error("url or json or rows or columns is required.");e.initWithData(e.convertColumnsToData(t.data_columns))}},r.initParams=function(){var e=this,t=e.d3,n=e.config;e.clipId="c3-"+ +(new Date)+"-clip",e.clipIdForXAxis=e.clipId+"-xaxis",e.clipIdForYAxis=e.clipId+"-yaxis",e.clipIdForGrid=e.clipId+"-grid",e.clipIdForSubchart=e.clipId+"-subchart",e.clipPath=e.getClipPath(e.clipId),e.clipPathForXAxis=e.getClipPath(e.clipIdForXAxis),e.clipPathForYAxis=e.getClipPath(e.clipIdForYAxis),e.clipPathForGrid=e.getClipPath(e.clipIdForGrid),e.clipPathForSubchart=e.getClipPath(e.clipIdForSubchart),e.dragStart=null,e.dragging=!1,e.flowing=!1,e.cancelClick=!1,e.mouseover=!1,e.transiting=!1,e.color=e.generateColor(),e.levelColor=e.generateLevelColor(),e.dataTimeFormat=n.data_xLocaltime?t.time.format:t.time.format.utc,e.axisTimeFormat=n.axis_x_localtime?t.time.format:t.time.format.utc,e.defaultAxisTimeFormat=e.axisTimeFormat.multi([[".%L",function(e){return e.getMilliseconds()}],[":%S",function(e){return e.getSeconds()}],["%I:%M",function(e){return e.getMinutes()}],["%I %p",function(e){return e.getHours()}],["%-m/%-d",function(e){return e.getDay()&&e.getDate()!==1}],["%-m/%-d",function(e){return e.getDate()!==1}],["%-m/%-d",function(e){return e.getMonth()}],["%Y/%-m/%-d",function(){return!0}]]),e.hiddenTargetIds=[],e.hiddenLegendIds=[],e.focusedTargetIds=[],e.defocusedTargetIds=[],e.xOrient=n.axis_rotated?"left":"bottom",e.yOrient=n.axis_rotated?n.axis_y_inner?"top":"bottom":n.axis_y_inner?"right":"left",e.y2Orient=n.axis_rotated?n.axis_y2_inner?"bottom":"top":n.axis_y2_inner?"left":"right",e.subXOrient=n.axis_rotated?"left":"bottom",e.isLegendRight=n.legend_position==="right",e.isLegendInset=n.legend_position==="inset",e.isLegendTop=n.legend_inset_anchor==="top-left"||n.legend_inset_anchor==="top-right",e.isLegendLeft=n.legend_inset_anchor==="top-left"||n.legend_inset_anchor==="bottom-left",e.legendStep=0,e.legendItemWidth=0,e.legendItemHeight=0,e.currentMaxTickWidths={x:0,y:0,y2:0},e.rotated_padding_left=30,e.rotated_padding_right=n.axis_rotated&&!n.axis_x_show?0:30,e.rotated_padding_top=5,e.withoutFadeIn={},e.intervalForObserveInserted=undefined,e.axes.subx=t.selectAll([])},r.initChartElements=function(){this.initBar&&this.initBar(),this.initLine&&this.initLine(),this.initArc&&this.initArc(),this.initGauge&&this.initGauge(),this.initText&&this.initText()},r.initWithData=function(e){var t=this,n=t.d3,r=t.config,i,s,o=!0;t.axis=new f(t),t.initPie&&t.initPie(),t.initBrush&&t.initBrush(),t.initZoom&&t.initZoom(),r.bindto?typeof r.bindto.node=="function"?t.selectChart=r.bindto:t.selectChart=n.select(r.bindto):t.selectChart=n.selectAll([]),t.selectChart.empty()&&(t.selectChart=n.select(document.createElement("div")).style("opacity",0),t.observeInserted(t.selectChart),o=!1),t.selectChart.html("").classed("c3",!0),t.data.xs={},t.data.targets=t.convertDataToTargets(e),r.data_filter&&(t.data.targets=t.data.targets.filter(r.data_filter)),r.data_hide&&t.addHiddenTargetIds(r.data_hide===!0?t.mapToIds(t.data.targets):r.data_hide),r.legend_hide&&t.addHiddenLegendIds(r.legend_hide===!0?t.mapToIds(t.data.targets):r.legend_hide),t.hasType("gauge")&&(r.legend_show=!1),t.updateSizes(),t.updateScales(),t.x.domain(n.extent(t.getXDomain(t.data.targets))),t.y.domain(t.getYDomain(t.data.targets,"y")),t.y2.domain(t.getYDomain(t.data.targets,"y2")),t.subX.domain(t.x.domain()),t.subY.domain(t.y.domain()),t.subY2.domain(t.y2.domain()),t.orgXDomain=t.x.domain(),t.brush&&t.brush.scale(t.subX),r.zoom_enabled&&t.zoom.scale(t.x),t.svg=t.selectChart.append("svg").style("overflow","hidden").on("mouseenter",function(){return r.onmouseover.call(t)}).on("mouseleave",function(){return r.onmouseout.call(t)}),t.config.svg_classname&&t.svg.attr("class",t.config.svg_classname),i=t.svg.append("defs"),t.clipChart=t.appendClip(i,t.clipId),t.clipXAxis=t.appendClip(i,t.clipIdForXAxis),t.clipYAxis=t.appendClip(i,t.clipIdForYAxis),t.clipGrid=t.appendClip(i,t.clipIdForGrid),t.clipSubchart=t.appendClip(i,t.clipIdForSubchart),t.updateSvgSize(),s=t.main=t.svg.append("g").attr("transform",t.getTranslate("main")),t.initSubchart&&t.initSubchart(),t.initTooltip&&t.initTooltip(),t.initLegend&&t.initLegend(),t.initTitle&&t.initTitle(),s.append("text").attr("class",l.text+" "+l.empty).attr("text-anchor","middle").attr("dominant-baseline","middle"),t.initRegion(),t.initGrid(),s.append("g").attr("clip-path",t.clipPath).attr("class",l.chart),r.grid_lines_front&&t.initGridLines(),t.initEventRect(),t.initChartElements(),s.insert("rect",r.zoom_privileged?null:"g."+l.regions).attr("class",l.zoomRect).attr("width",t.width).attr("height",t.height).style("opacity",0).on("dblclick.zoom",null),r.axis_x_extent&&t.brush.extent(t.getDefaultExtent()),t.axis.init(),t.updateTargets(t.data.targets),o&&(t.updateDimension(),t.config.oninit.call(t),t.redraw({withTransition:!1,withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransitionForAxis:!1})),t.bindResize(),t.api.element=t.selectChart.node()},r.smoothLines=function(e,t){var n=this;t==="grid"&&e.each(function(){var e=n.d3.select(this),t=e.attr("x1"),r=e.attr("x2"),i=e.attr("y1"),s=e.attr("y2");e.attr({x1:Math.ceil(t),x2:Math.ceil(r),y1:Math.ceil(i),y2:Math.ceil(s)})})},r.updateSizes=function(){var e=this,t=e.config,n=e.legend?e.getLegendHeight():0,r=e.legend?e.getLegendWidth():0,i=e.isLegendRight||e.isLegendInset?0:n,s=e.hasArcType(),o=t.axis_rotated||s?0:e.getHorizontalAxisHeight("x"),u=t.subchart_show&&!s?t.subchart_size_height+o:0;e.currentWidth=e.getCurrentWidth(),e.currentHeight=e.getCurrentHeight(),e.margin=t.axis_rotated?{top:e.getHorizontalAxisHeight("y2")+e.getCurrentPaddingTop(),right:s?0:e.getCurrentPaddingRight(),bottom:e.getHorizontalAxisHeight("y")+i+e.getCurrentPaddingBottom(),left:u+(s?0:e.getCurrentPaddingLeft())}:{top:4+e.getCurrentPaddingTop(),right:s?0:e.getCurrentPaddingRight(),bottom:o+u+i+e.getCurrentPaddingBottom(),left:s?0:e.getCurrentPaddingLeft()},e.margin2=t.axis_rotated?{top:e.margin.top,right:NaN,bottom:20+i,left:e.rotated_padding_left}:{top:e.currentHeight-u-i,right:NaN,bottom:o+i,left:e.margin.left},e.margin3={top:0,right:NaN,bottom:0,left:0},e.updateSizeForLegend&&e.updateSizeForLegend(n,r),e.width=e.currentWidth-e.margin.left-e.margin.right,e.height=e.currentHeight-e.margin.top-e.margin.bottom,e.width<0&&(e.width=0),e.height<0&&(e.height=0),e.width2=t.axis_rotated?e.margin.left-e.rotated_padding_left-e.rotated_padding_right:e.width,e.height2=t.axis_rotated?e.height:e.currentHeight-e.margin2.top-e.margin2.bottom,e.width2<0&&(e.width2=0),e.height2<0&&(e.height2=0),e.arcWidth=e.width-(e.isLegendRight?r+10:0),e.arcHeight=e.height-(e.isLegendRight?0:10),e.hasType("gauge")&&!t.gauge_fullCircle&&(e.arcHeight+=e.height-e.getGaugeLabelHeight()),e.updateRadius&&e.updateRadius(),e.isLegendRight&&s&&(e.margin3.left=e.arcWidth/2+e.radiusExpanded*1.1)},r.updateTargets=function(e){var t=this;t.updateTargetsForText(e),t.updateTargetsForBar(e),t.updateTargetsForLine(e),t.hasArcType()&&t.updateTargetsForArc&&t.updateTargetsForArc(e),t.updateTargetsForSubchart&&t.updateTargetsForSubchart(e),t.showTargets()},r.showTargets=function(){var e=this;e.svg.selectAll("."+l.target).filter(function(t){return e.isTargetToShow(t.id)}).transition().duration(e.config.transition_duration).style("opacity",1)},r.redraw=function(e,t){var n=this,r=n.main,i=n.d3,s=n.config,o=n.getShapeIndices(n.isAreaType),u=n.getShapeIndices(n.isBarType),a=n.getShapeIndices(n.isLineType),f,c,h,p,d,v,m,g,y,b,w,S,x,T=n.hasArcType(),N,C,k,L,A,O,M,_,D,P,H=n.filterTargetsToShow(n.data.targets),B,j,F,I,q=n.xv.bind(n),R,U;e=e||{},f=E(e,"withY",!0),c=E(e,"withSubchart",!0),h=E(e,"withTransition",!0),v=E(e,"withTransform",!1),m=E(e,"withUpdateXDomain",!1),g=E(e,"withUpdateOrgXDomain",!1),y=E(e,"withTrimXDomain",!0),x=E(e,"withUpdateXAxis",m),b=E(e,"withLegend",!1),w=E(e,"withEventRect",!0),S=E(e,"withDimension",!0),p=E(e,"withTransitionForExit",h),d=E(e,"withTransitionForAxis",h),O=h?s.transition_duration:0,M=p?O:0,_=d?O:0,t=t||n.axis.generateTransitions(_),b&&s.legend_show?n.updateLegend(n.mapToIds(n.data.targets),e,t):S&&n.updateDimension(!0),n.isCategorized()&&H.length===0&&n.x.domain([0,n.axes.x.selectAll(".tick").size()]),H.length?(n.updateXDomain(H,m,g,y),s.axis_x_tick_values||(B=n.axis.updateXAxisTickValues(H))):(n.xAxis.tickValues([]),n.subXAxis.tickValues([])),s.zoom_rescale&&!e.flow&&(I=n.x.orgDomain()),n.y.domain(n.getYDomain(H,"y",I)),n.y2.domain(n.getYDomain(H,"y2",I)),!s.axis_y_tick_values&&s.axis_y_tick_count&&n.yAxis.tickValues(n.axis.generateTickValues(n.y.domain(),s.axis_y_tick_count)),!s.axis_y2_tick_values&&s.axis_y2_tick_count&&n.y2Axis.tickValues(n.axis.generateTickValues(n.y2.domain(),s.axis_y2_tick_count)),n.axis.redraw(t,T),n.axis.updateLabels(h);if((m||x)&&H.length)if(s.axis_x_tick_culling&&B){for(j=1;j<B.length;j++)if(B.length/j<s.axis_x_tick_culling_max){F=j;break}n.svg.selectAll("."+l.axisX+" .tick text").each(function(e){var t=B.indexOf(e);t>=0&&i.select(this).style("display",t%F?"none":"block")})}else n.svg.selectAll("."+l.axisX+" .tick text").style("display","block");N=n.generateDrawArea?n.generateDrawArea(o,!1):undefined,C=n.generateDrawBar?n.generateDrawBar(u):undefined,k=n.generateDrawLine?n.generateDrawLine(a,!1):undefined,L=n.generateXYForText(o,u,a,!0),A=n.generateXYForText(o,u,a,!1),f&&(n.subY.domain(n.getYDomain(H,"y")),n.subY2.domain(n.getYDomain(H,"y2"))),n.updateXgridFocus(),r.select("text."+l.text+"."+l.empty).attr("x",n.width/2).attr("y",n.height/2).text(s.data_empty_label_text).transition().style("opacity",H.length?0:1),n.updateGrid(O),n.updateRegion(O),n.updateBar(M),n.updateLine(M),n.updateArea(M),n.updateCircle(),n.hasDataLabel()&&n.updateText(M),n.redrawTitle&&n.redrawTitle(),n.redrawArc&&n.redrawArc(O,M,v),n.redrawSubchart&&n.redrawSubchart(c,t,O,M,o,u,a),r.selectAll("."+l.selectedCircles).filter(n.isBarType.bind(n)).selectAll("circle").remove(),s.interaction_enabled&&!e.flow&&w&&(n.redrawEventRect(),n.updateZoom&&n.updateZoom()),n.updateCircleY(),R=(n.config.axis_rotated?n.circleY:n.circleX).bind(n),U=(n.config.axis_rotated?n.circleX:n.circleY).bind(n),e.flow&&(P=n.generateFlow({targets:H,flow:e.flow,duration:e.flow.duration,drawBar:C,drawLine:k,drawArea:N,cx:R,cy:U,xv:q,xForText:L,yForText:A})),(O||P)&&n.isTabVisible()?i.transition().duration(O).each(function(){var t=[];[n.redrawBar(C,!0),n.redrawLine(k,!0),n.redrawArea(N,!0),n.redrawCircle(R,U,!0),n.redrawText(L,A,e.flow,!0),n.redrawRegion(!0),n.redrawGrid(!0)].forEach(function(e){e.forEach(function(e){t.push(e)})}),D=n.generateWait(),t.forEach(function(e){D.add(e)})}).call(D,function(){P&&P(),s.onrendered&&s.onrendered.call(n)}):(n.redrawBar(C),n.redrawLine(k),n.redrawArea(N),n.redrawCircle(R,U),n.redrawText(L,A,e.flow),n.redrawRegion(),n.redrawGrid(),s.onrendered&&s.onrendered.call(n)),n.mapToIds(n.data.targets).forEach(function(e){n.withoutFadeIn[e]=!0})},r.updateAndRedraw=function(e){var t=this,n=t.config,r;e=e||{},e.withTransition=E(e,"withTransition",!0),e.withTransform=E(e,"withTransform",!1),e.withLegend=E(e,"withLegend",!1),e.withUpdateXDomain=!0,e.withUpdateOrgXDomain=!0,e.withTransitionForExit=!1,e.withTransitionForTransform=E(e,"withTransitionForTransform",e.withTransition),t.updateSizes();if(!e.withLegend||!n.legend_show)r=t.axis.generateTransitions(e.withTransitionForAxis?n.transition_duration:0),t.updateScales(),t.updateSvgSize(),t.transformAll(e.withTransitionForTransform,r);t.redraw(e,r)},r.redrawWithoutRescale=function(){this.redraw({withY:!1,withSubchart:!1,withEventRect:!1,withTransitionForAxis:!1})},r.isTimeSeries=function(){return this.config.axis_x_type==="timeseries"},r.isCategorized=function(){return this.config.axis_x_type.indexOf("categor")>=0},r.isCustomX=function(){var e=this,t=e.config;return!e.isTimeSeries()&&(t.data_x||w(t.data_xs))},r.isTimeSeriesY=function(){return this.config.axis_y_type==="timeseries"},r.getTranslate=function(e){var t=this,n=t.config,r,i;return e==="main"?(r=g(t.margin.left),i=g(t.margin.top)):e==="context"?(r=g(t.margin2.left),i=g(t.margin2.top)):e==="legend"?(r=t.margin3.left,i=t.margin3.top):e==="x"?(r=0,i=n.axis_rotated?0:t.height):e==="y"?(r=0,i=n.axis_rotated?t.height:0):e==="y2"?(r=n.axis_rotated?0:t.width,i=n.axis_rotated?1:0):e==="subx"?(r=0,i=n.axis_rotated?0:t.height2):e==="arc"&&(r=t.arcWidth/2,i=t.arcHeight/2),"translate("+r+","+i+")"},r.initialOpacity=function(e){return e.value!==null&&this.withoutFadeIn[e.id]?1:0},r.initialOpacityForCircle=function(e){return e.value!==null&&this.withoutFadeIn[e.id]?this.opacityForCircle(e):0},r.opacityForCircle=function(e){var t=this.config.point_show?1:0;return c(e.value)?this.isScatterType(e)?.5:t:0},r.opacityForText=function(){return this.hasDataLabel()?1:0},r.xx=function(e){return e?this.x(e.x):null},r.xv=function(e){var t=this,n=e.value;return t.isTimeSeries()?n=t.parseDate(e.value):t.isCategorized()&&typeof e.value=="string"&&(n=t.config.axis_x_categories.indexOf(e.value)),Math.ceil(t.x(n))},r.yv=function(e){var t=this,n=e.axis&&e.axis==="y2"?t.y2:t.y;return Math.ceil(n(e.value))},r.subxx=function(e){return e?this.subX(e.x):null},r.transformMain=function(e,t){var n=this,r,i,s;t&&t.axisX?r=t.axisX:(r=n.main.select("."+l.axisX),e&&(r=r.transition())),t&&t.axisY?i=t.axisY:(i=n.main.select("."+l.axisY),e&&(i=i.transition())),t&&t.axisY2?s=t.axisY2:(s=n.main.select("."+l.axisY2),e&&(s=s.transition())),(e?n.main.transition():n.main).attr("transform",n.getTranslate("main")),r.attr("transform",n.getTranslate("x")),i.attr("transform",n.getTranslate("y")),s.attr("transform",n.getTranslate("y2")),n.main.select("."+l.chartArcs).attr("transform",n.getTranslate("arc"))},r.transformAll=function(e,t){var n=this;n.transformMain(e,t),n.config.subchart_show&&n.transformContext(e,t),n.legend&&n.transformLegend(e)},r.updateSvgSize=function(){var e=this,t=e.svg.select(".c3-brush .background");e.svg.attr("width",e.currentWidth).attr("height",e.currentHeight),e.svg.selectAll(["#"+e.clipId,"#"+e.clipIdForGrid]).select("rect").attr("width",e.width).attr("height",e.height),e.svg.select("#"+e.clipIdForXAxis).select("rect").attr("x",e.getXAxisClipX.bind(e)).attr("y",e.getXAxisClipY.bind(e)).attr("width",e.getXAxisClipWidth.bind(e)).attr("height",e.getXAxisClipHeight.bind(e)),e.svg.select("#"+e.clipIdForYAxis).select("rect").attr("x",e.getYAxisClipX.bind(e)).attr("y",e.getYAxisClipY.bind(e)).attr("width",e.getYAxisClipWidth.bind(e)).attr("height",e.getYAxisClipHeight.bind(e)),e.svg.select("#"+e.clipIdForSubchart).select("rect").attr("width",e.width).attr("height",t.size()?t.attr("height"):0),e.svg.select("."+l.zoomRect).attr("width",e.width).attr("height",e.height),e.selectChart.style("max-height",e.currentHeight+"px")},r.updateDimension=function(e){var t=this;e||(t.config.axis_rotated?(t.axes.x.call(t.xAxis),t.axes.subx.call(t.subXAxis)):(t.axes.y.call(t.yAxis),t.axes.y2.call(t.y2Axis))),t.updateSizes(),t.updateScales(),t.updateSvgSize(),t.transformAll(!1)},r.observeInserted=function(t){var n=this,r;if(typeof MutationObserver=="undefined"){e.console.error("MutationObserver not defined.");return}r=new MutationObserver(function(i){i.forEach(function(i){i.type==="childList"&&i.previousSibling&&(r.disconnect(),n.intervalForObserveInserted=e.setInterval(function(){t.node().parentNode&&(e.clearInterval(n.intervalForObserveInserted),n.updateDimension(),n.brush&&n.brush.update(),n.config.oninit.call(n),n.redraw({withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),t.transition().style("opacity",1))},10))})}),r.observe(t.node(),{attributes:!0,childList:!0,characterData:!0})},r.bindResize=function(){var t=this,n=t.config;t.resizeFunction=t.generateResize(),t.resizeFunction.add(function(){n.onresize.call(t)}),n.resize_auto&&t.resizeFunction.add(function(){t.resizeTimeout!==undefined&&e.clearTimeout(t.resizeTimeout),t.resizeTimeout=e.setTimeout(function(){delete t.resizeTimeout,t.api.flush()},100)}),t.resizeFunction.add(function(){n.onresized.call(t)});if(e.attachEvent)e.attachEvent("onresize",t.resizeFunction);else if(e.addEventListener)e.addEventListener("resize",t.resizeFunction,!1);else{var r=e.onresize;if(!r)r=t.generateResize();else if(!r.add||!r.remove)r=t.generateResize(),r.add(e.onresize);r.add(t.resizeFunction),e.onresize=r}},r.generateResize=function(){function t(){e.forEach(function(e){e()})}var e=[];return t.add=function(t){e.push(t)},t.remove=function(t){for(var n=0;n<e.length;n++)if(e[n]===t){e.splice(n,1);break}},t},r.endall=function(e,t){var n=0;e.each(function(){++n}).each("end",function(){--n||t.apply(this,arguments)})},r.generateWait=function(){var e=[],t=function(t,n){var r=setInterval(function(){var t=0;e.forEach(function(e){if(e.empty()){t+=1;return}try{e.transition()}catch(n){t+=1}}),t===e.length&&(clearInterval(r),n&&n())},10)};return t.add=function(t){e.push(t)},t},r.parseDate=function(t){var n=this,r;return t instanceof Date?r=t:typeof t=="string"?r=n.dataTimeFormat(n.config.data_xFormat).parse(t):typeof t=="number"&&!isNaN(t)&&(r=new Date(+t)),(!r||isNaN(+r))&&e.console.error("Failed to parse x '"+t+"' to Date object"),r},r.isTabVisible=function(){var e;return typeof document.hidden!="undefined"?e="hidden":typeof document.mozHidden!="undefined"?e="mozHidden":typeof document.msHidden!="undefined"?e="msHidden":typeof document.webkitHidden!="undefined"&&(e="webkitHidden"),document[e]?!1:!0},r.getDefaultConfig=function(){var e={bindto:"#chart",svg_classname:undefined,size_width:undefined,size_height:undefined,padding_left:undefined,padding_right:undefined,padding_top:undefined,padding_bottom:undefined,resize_auto:!0,zoom_enabled:!1,zoom_extent:undefined,zoom_privileged:!1,zoom_rescale:!1,zoom_onzoom:function(){},zoom_onzoomstart:function(){},zoom_onzoomend:function(){},zoom_x_min:undefined,zoom_x_max:undefined,interaction_brighten:!0,interaction_enabled:!0,onmouseover:function(){},onmouseout:function(){},onresize:function(){},onresized:function(){},oninit:function(){},onrendered:function(){},transition_duration:350,data_x:undefined,data_xs:{},data_xFormat:"%Y-%m-%d",data_xLocaltime:!0,data_xSort:!0,data_idConverter:function(e){return e},data_names:{},data_classes:{},data_groups:[],data_axes:{},data_type:undefined,data_types:{},data_labels:{},data_order:"desc",data_regions:{},data_color:undefined,data_colors:{},data_hide:!1,data_filter:undefined,data_selection_enabled:!1,data_selection_grouped:!1,data_selection_isselectable:function(){return!0},data_selection_multiple:!0,data_selection_draggable:!1,data_onclick:function(){},data_onmouseover:function(){},data_onmouseout:function(){},data_onselected:function(){},data_onunselected:function(){},data_url:undefined,data_headers:undefined,data_json:undefined,data_rows:undefined,data_columns:undefined,data_mimeType:undefined,data_keys:undefined,data_empty_label_text:"",subchart_show:!1,subchart_size_height:60,subchart_axis_x_show:!0,subchart_onbrush:function(){},color_pattern:[],color_threshold:{},legend_show:!0,legend_hide:!1,legend_position:"bottom",legend_inset_anchor:"top-left",legend_inset_x:10,legend_inset_y:0,legend_inset_step:undefined,legend_item_onclick:undefined,legend_item_onmouseover:undefined,legend_item_onmouseout:undefined,legend_equally:!1,legend_padding:0,legend_item_tile_width:10,legend_item_tile_height:10,axis_rotated:!1,axis_x_show:!0,axis_x_type:"indexed",axis_x_localtime:!0,axis_x_categories:[],axis_x_tick_centered:!1,axis_x_tick_format:undefined,axis_x_tick_culling:{},axis_x_tick_culling_max:10,axis_x_tick_count:undefined,axis_x_tick_fit:!0,axis_x_tick_values:null,axis_x_tick_rotate:0,axis_x_tick_outer:!0,axis_x_tick_multiline:!0,axis_x_tick_width:null,axis_x_max:undefined,axis_x_min:undefined,axis_x_padding:{},axis_x_height:undefined,axis_x_extent:undefined,axis_x_label:{},axis_y_show:!0,axis_y_type:undefined,axis_y_max:undefined,axis_y_min:undefined,axis_y_inverted:!1,axis_y_center:undefined,axis_y_inner:undefined,axis_y_label:{},axis_y_tick_format:undefined,axis_y_tick_outer:!0,axis_y_tick_values:null,axis_y_tick_rotate:0,axis_y_tick_count:undefined,axis_y_tick_time_value:undefined,axis_y_tick_time_interval:undefined,axis_y_padding:{},axis_y_default:undefined,axis_y2_show:!1,axis_y2_max:undefined,axis_y2_min:undefined,axis_y2_inverted:!1,axis_y2_center:undefined,axis_y2_inner:undefined,axis_y2_label:{},axis_y2_tick_format:undefined,axis_y2_tick_outer:!0,axis_y2_tick_values:null,axis_y2_tick_count:undefined,axis_y2_padding:{},axis_y2_default:undefined,grid_x_show:!1,grid_x_type:"tick",grid_x_lines:[],grid_y_show:!1,grid_y_lines:[],grid_y_ticks:10,grid_focus_show:!0,grid_lines_front:!0,point_show:!0,point_r:2.5,point_sensitivity:10,point_focus_expand_enabled:!0,point_focus_expand_r:undefined,point_select_r:undefined,line_connectNull:!1,line_step_type:"step",bar_width:undefined,bar_width_ratio:.6,bar_width_max:undefined,bar_zerobased:!0,area_zerobased:!0,area_above:!1,pie_label_show:!0,pie_label_format:undefined,pie_label_threshold:.05,pie_label_ratio:undefined,pie_expand:{},pie_expand_duration:50,gauge_fullCircle:!1,gauge_label_show:!0,gauge_label_format:undefined,gauge_min:0,gauge_max:100,gauge_startingAngle:-1*Math.PI/2,gauge_units:undefined,gauge_width:undefined,gauge_expand:{},gauge_expand_duration:50,donut_label_show:!0,donut_label_format:undefined,donut_label_threshold:.05,donut_label_ratio:undefined,donut_width:undefined,donut_title:"",donut_expand:{},donut_expand_duration:50,spline_interpolation_type:"cardinal",regions:[],tooltip_show:!0,tooltip_grouped:!0,tooltip_format_title:undefined,tooltip_format_name:undefined,tooltip_format_value:undefined,tooltip_position:undefined,tooltip_contents:function(e,t,n,r){return this.getTooltipContent?this.getTooltipContent(e,t,n,r):""},tooltip_init_show:!1,tooltip_init_x:0,tooltip_init_position:{top:"0px",left:"50px"},tooltip_onshow:function(){},tooltip_onhide:function(){},title_text:undefined,title_padding:{top:0,right:0,bottom:0,left:0},title_position:"top-center"};return Object.keys(this.additionalConfig).forEach(function(t){e[t]=this.additionalConfig[t]},this),e},r.additionalConfig={},r.loadConfig=function(e){function s(){var e=r.shift();return e&&n&&typeof n=="object"&&e in n?(n=n[e],s()):e?undefined:n}var t=this.config,n,r,i;Object.keys(t).forEach(function(o){n=e,r=o.split("_"),i=s(),v(i)&&(t[o]=i)})},r.getScale=function(e,t,n){return(n?this.d3.time.scale():this.d3.scale.linear()).range([e,t])},r.getX=function(e,t,n,r){var i=this,s=i.getScale(e,t,i.isTimeSeries()),o=n?s.domain(n):s,u;i.isCategorized()?(r=r||function(){return 0},s=function(e,t){var n=o(e)+r(e);return t?n:Math.ceil(n)}):s=function(e,t){var n=o(e);return t?n:Math.ceil(n)};for(u in o)s[u]=o[u];return s.orgDomain=function(){return o.domain()},i.isCategorized()&&(s.domain=function(e){return arguments.length?(o.domain(e),s):(e=this.orgDomain(),[e[0],e[1]+1])}),s},r.getY=function(e,t,n){var r=this.getScale(e,t,this.isTimeSeriesY());return n&&r.domain(n),r},r.getYScale=function(e){return this.axis.getId(e)==="y2"?this.y2:this.y},r.getSubYScale=function(e){return this.axis.getId(e)==="y2"?this.subY2:this.subY},r.updateScales=function(){var e=this,t=e.config,n=!e.x;e.xMin=t.axis_rotated?1:0,e.xMax=t.axis_rotated?e.height:e.width,e.yMin=t.axis_rotated?0:e.height,e.yMax=t.axis_rotated?e.width:1,e.subXMin=e.xMin,e.subXMax=e.xMax,e.subYMin=t.axis_rotated?0:e.height2,e.subYMax=t.axis_rotated?e.width2:1,e.x=e.getX(e.xMin,e.xMax,n?undefined:e.x.orgDomain(),function(){return e.xAxis.tickOffset()}),e.y=e.getY(e.yMin,e.yMax,n?t.axis_y_default:e.y.domain()),e.y2=e.getY(e.yMin,e.yMax,n?t.axis_y2_default:e.y2.domain()),e.subX=e.getX(e.xMin,e.xMax,e.orgXDomain,function(t){return t%1?0:e.subXAxis.tickOffset()}),e.subY=e.getY(e.subYMin,e.subYMax,n?t.axis_y_default:e.subY.domain()),e.subY2=e.getY(e.subYMin,e.subYMax,n?t.axis_y2_default:e.subY2.domain()),e.xAxisTickFormat=e.axis.getXAxisTickFormat(),e.xAxisTickValues=e.axis.getXAxisTickValues(),e.yAxisTickValues=e.axis.getYAxisTickValues(),e.y2AxisTickValues=e.axis.getY2AxisTickValues(),e.xAxis=e.axis.getXAxis(e.x,e.xOrient,e.xAxisTickFormat,e.xAxisTickValues,t.axis_x_tick_outer),e.subXAxis=e.axis.getXAxis(e.subX,e.subXOrient,e.xAxisTickFormat,e.xAxisTickValues,t.axis_x_tick_outer),e.yAxis=e.axis.getYAxis(e.y,e.yOrient,t.axis_y_tick_format,e.yAxisTickValues,t.axis_y_tick_outer),e.y2Axis=e.axis.getYAxis(e.y2,e.y2Orient,t.axis_y2_tick_format,e.y2AxisTickValues,t.axis_y2_tick_outer),n||(e.brush&&e.brush.scale(e.subX),t.zoom_enabled&&e.zoom.scale(e.x)),e.updateArc&&e.updateArc()},r.getYDomainMin=function(e){var t=this,n=t.config,r=t.mapToIds(e),i=t.getValuesAsIdKeyed(e),s,o,u,a,f,l;if(n.data_groups.length>0){l=t.hasNegativeValueInTargets(e);for(s=0;s<n.data_groups.length;s++){a=n.data_groups[s].filter(function(e){return r.indexOf(e)>=0});if(a.length===0)continue;u=a[0],l&&i[u]&&i[u].forEach(function(e,t){i[u][t]=e<0?e:0});for(o=1;o<a.length;o++){f=a[o];if(!i[f])continue;i[f].forEach(function(e,n){t.axis.getId(f)===t.axis.getId(u)&&i[u]&&!(l&&+e>0)&&(i[u][n]+=+e)})}}}return t.d3.min(Object.keys(i).map(function(e){return t.d3.min(i[e])}))},r.getYDomainMax=function(e){var t=this,n=t.config,r=t.mapToIds(e),i=t.getValuesAsIdKeyed(e),s,o,u,a,f,l;if(n.data_groups.length>0){l=t.hasPositiveValueInTargets(e);for(s=0;s<n.data_groups.length;s++){a=n.data_groups[s].filter(function(e){return r.indexOf(e)>=0});if(a.length===0)continue;u=a[0],l&&i[u]&&i[u].forEach(function(e,t){i[u][t]=e>0?e:0});for(o=1;o<a.length;o++){f=a[o];if(!i[f])continue;i[f].forEach(function(e,n){t.axis.getId(f)===t.axis.getId(u)&&i[u]&&!(l&&+e<0)&&(i[u][n]+=+e)})}}}return t.d3.max(Object.keys(i).map(function(e){return t.d3.max(i[e])}))},r.getYDomain=function(e,t,n){var r=this,i=r.config,s=e.filter(function(e){return r.axis.getId(e.id)===t}),o=n?r.filterByXDomain(s,n):s,u=t==="y2"?i.axis_y2_min:i.axis_y_min,a=t==="y2"?i.axis_y2_max:i.axis_y_max,f=r.getYDomainMin(o),l=r.getYDomainMax(o),h,p,d,v,m,g=t==="y2"?i.axis_y2_center:i.axis_y_center,b,E,S,x,T,N,C=r.hasType("bar",o)&&i.bar_zerobased||r.hasType("area",o)&&i.area_zerobased,k=t==="y2"?i.axis_y2_inverted:i.axis_y_inverted,L=r.hasDataLabel()&&i.axis_rotated,A=r.hasDataLabel()&&!i.axis_rotated;f=c(u)?u:c(a)?f<a?f:a-10:f,l=c(a)?a:c(u)?u<l?l:u+10:l;if(o.length===0)return t==="y2"?r.y2.domain():r.y.domain();isNaN(f)&&(f=0),isNaN(l)&&(l=f),f===l&&(f<0?l=0:f=0),T=f>=0&&l>=0,N=f<=0&&l<=0;if(c(u)&&T||c(a)&&N)C=!1;return C&&(T&&(f=0),N&&(l=0)),p=Math.abs(l-f),d=v=m=p*.1,typeof g!="undefined"&&(b=Math.max(Math.abs(f),Math.abs(l)),l=g+b,f=g-b),L?(E=r.getDataLabelLength(f,l,"width"),S=y(r.y.range()),x=[E[0]/S,E[1]/S],v+=p*(x[1]/(1-x[0]-x[1])),m+=p*(x[0]/(1-x[0]-x[1]))):A&&(E=r.getDataLabelLength(f,l,"height"),v+=r.axis.convertPixelsToAxisPadding(E[1],p),m+=r.axis.convertPixelsToAxisPadding(E[0],p)),t==="y"&&w(i.axis_y_padding)&&(v=r.axis.getPadding(i.axis_y_padding,"top",v,p),m=r.axis.getPadding(i.axis_y_padding,"bottom",m,p)),t==="y2"&&w(i.axis_y2_padding)&&(v=r.axis.getPadding(i.axis_y2_padding,"top",v,p),m=r.axis.getPadding(i.axis_y2_padding,"bottom",m,p)),C&&(T&&(m=f),N&&(v=-l)),h=[f-m,l+v],k?h.reverse():h},r.getXDomainMin=function(e){var t=this,n=t.config;return v(n.axis_x_min)?t.isTimeSeries()?this.parseDate(n.axis_x_min):n.axis_x_min:t.d3.min(e,function(e){return t.d3.min(e.values,function(e){return e.x})})},r.getXDomainMax=function(e){var t=this,n=t.config;return v(n.axis_x_max)?t.isTimeSeries()?this.parseDate(n.axis_x_max):n.axis_x_max:t.d3.max(e,function(e){return t.d3.max(e.values,function(e){return e.x})})},r.getXDomainPadding=function(e){var t=this,n=t.config,r=e[1]-e[0],i,s,o,u;return t.isCategorized()?s=0:t.hasType("bar")?(i=t.getMaxDataCount(),s=i>1?r/(i-1)/2:.5):s=r*.01,typeof n.axis_x_padding=="object"&&w(n.axis_x_padding)?(o=c(n.axis_x_padding.left)?n.axis_x_padding.left:s,u=c(n.axis_x_padding.right)?n.axis_x_padding.right:s):typeof n.axis_x_padding=="number"?o=u=n.axis_x_padding:o=u=s,{left:o,right:u}},r.getXDomain=function(e){var t=this,n=[t.getXDomainMin(e),t.getXDomainMax(e)],r=n[0],i=n[1],s=t.getXDomainPadding(n),o=0,u=0;r-i===0&&!t.isCategorized()&&(t.isTimeSeries()?(r=new Date(r.getTime()*.5),i=new Date(i.getTime()*1.5)):(r=r===0?1:r*.5,i=i===0?-1:i*1.5));if(r||r===0)o=t.isTimeSeries()?new Date(r.getTime()-s.left):r-s.left;if(i||i===0)u=t.isTimeSeries()?new Date(i.getTime()+s.right):i+s.right;return[o,u]},r.updateXDomain=function(e,t,n,r,i){var s=this,o=s.config;return n&&(s.x.domain(i?i:s.d3.extent(s.getXDomain(e))),s.orgXDomain=s.x.domain(),o.zoom_enabled&&s.zoom.scale(s.x).updateScaleExtent(),s.subX.domain(s.x.domain()),s.brush&&s.brush.scale(s.subX)),t&&(s.x.domain(i?i:!s.brush||s.brush.empty()?s.orgXDomain:s.brush.extent()),o.zoom_enabled&&s.zoom.scale(s.x).updateScaleExtent()),r&&s.x.domain(s.trimXDomain(s.x.orgDomain())),s.x.domain()},r.trimXDomain=function(e){var t=this.getZoomDomain(),n=t[0],r=t[1];return e[0]<=n&&(e[1]=+e[1]+(n-e[0]),e[0]=n),r<=e[1]&&(e[0]=+e[0]-(e[1]-r),e[1]=r),e},r.isX=function(e){var t=this,n=t.config;return n.data_x&&e===n.data_x||w(n.data_xs)&&S(n.data_xs,e)},r.isNotX=function(e){return!this.isX(e)},r.getXKey=function(e){var t=this,n=t.config;return n.data_x?n.data_x:w(n.data_xs)?n.data_xs[e]:null},r.getXValuesOfXKey=function(e,t){var n=this,r,i=t&&w(t)?n.mapToIds(t):[];return i.forEach(function(t){n.getXKey(t)===e&&(r=n.data.xs[t])}),r},r.getIndexByX=function(e){var t=this,n=t.filterByX(t.data.targets,e);return n.length?n[0].index:null},r.getXValue=function(e,t){var n=this;return e in n.data.xs&&n.data.xs[e]&&c(n.data.xs[e][t])?n.data.xs[e][t]:t},r.getOtherTargetXs=function(){var e=this,t=Object.keys(e.data.xs);return t.length?e.data.xs[t[0]]:null},r.getOtherTargetX=function(e){var t=this.getOtherTargetXs();return t&&e<t.length?t[e]:null},r.addXs=function(e){var t=this;Object.keys(e).forEach(function(n){t.config.data_xs[n]=e[n]})},r.hasMultipleX=function(e){return this.d3.set(Object.keys(e).map(function(t){return e[t]})).size()>1},r.isMultipleX=function(){return w(this.config.data_xs)||!this.config.data_xSort||this.hasType("scatter")},r.addName=function(e){var t=this,n;return e&&(n=t.config.data_names[e.id],e.name=n!==undefined?n:e.id),e},r.getValueOnIndex=function(e,t){var n=e.filter(function(e){return e.index===t});return n.length?n[0]:null},r.updateTargetX=function(e,t){var n=this;e.forEach(function(e){e.values.forEach(function(r,i){r.x=n.generateTargetX(t[i],e.id,i)}),n.data.xs[e.id]=t})},r.updateTargetXs=function(e,t){var n=this;e.forEach(function(e){t[e.id]&&n.updateTargetX([e],t[e.id])})},r.generateTargetX=function(e,t,n){var r=this,i;return r.isTimeSeries()?i=e?r.parseDate(e):r.parseDate(r.getXValue(t,n)):r.isCustomX()&&!r.isCategorized()?i=c(e)?+e:r.getXValue(t,n):i=n,i},r.cloneTarget=function(e){return{id:e.id,id_org:e.id_org,values:e.values.map(function(e){return{x:e.x,value:e.value,id:e.id}})}},r.updateXs=function(){var e=this;e.data.targets.length&&(e.xs=[],e.data.targets[0].values.forEach(function(t){e.xs[t.index]=t.x}))},r.getPrevX=function(e){var t=this.xs[e-1];return typeof t!="undefined"?t:null},r.getNextX=function(e){var t=this.xs[e+1];return typeof t!="undefined"?t:null},r.getMaxDataCount=function(){var e=this;return e.d3.max(e.data.targets,function(e){return e.values.length})},r.getMaxDataCountTarget=function(e){var t=e.length,n=0,r;return t>1?e.forEach(function(e){e.values.length>n&&(r=e,n=e.values.length)}):r=t?e[0]:null,r},r.getEdgeX=function(e){var t=this;return e.length?[t.d3.min(e,function(e){return e.values[0].x}),t.d3.max(e,function(e){return e.values[e.values.length-1].x})]:[0,0]},r.mapToIds=function(e){return e.map(function(e){return e.id})},r.mapToTargetIds=function(e){var t=this;return e?[].concat(e):t.mapToIds(t.data.targets)},r.hasTarget=function(e,t){var n=this.mapToIds(e),r;for(r=0;r<n.length;r++)if(n[r]===t)return!0;return!1},r.isTargetToShow=function(e){return this.hiddenTargetIds.indexOf(e)<0},r.isLegendToShow=function(e){return this.hiddenLegendIds.indexOf(e)<0},r.filterTargetsToShow=function(e){var t=this;return e.filter(function(e){return t.isTargetToShow(e.id)})},r.mapTargetsToUniqueXs=function(e){var t=this,n=t.d3.set(t.d3.merge(e.map(function(e){return e.values.map(function(e){return+e.x})}))).values();return n=t.isTimeSeries()?n.map(function(e){return new Date(+e)}):n.map(function(e){return+e}),n.sort(function(e,t){return e<t?-1:e>t?1:e>=t?0:NaN})},r.addHiddenTargetIds=function(e){this.hiddenTargetIds=this.hiddenTargetIds.concat(e)},r.removeHiddenTargetIds=function(e){this.hiddenTargetIds=this.hiddenTargetIds.filter(function(t){return e.indexOf(t)<0})},r.addHiddenLegendIds=function(e){this.hiddenLegendIds=this.hiddenLegendIds.concat(e)},r.removeHiddenLegendIds=function(e){this.hiddenLegendIds=this.hiddenLegendIds.filter(function(t){return e.indexOf(t)<0})},r.getValuesAsIdKeyed=function(e){var t={};return e.forEach(function(e){t[e.id]=[],e.values.forEach(function(n){t[e.id].push(n.value)})}),t},r.checkValueInTargets=function(e,t){var n=Object.keys(e),r,i,s;for(r=0;r<n.length;r++){s=e[n[r]].values;for(i=0;i<s.length;i++)if(t(s[i].value))return!0}return!1},r.hasNegativeValueInTargets=function(e){return this.checkValueInTargets(e,function(e){return e<0})},r.hasPositiveValueInTargets=function(e){return this.checkValueInTargets(e,function(e){return e>0})},r.isOrderDesc=function(){var e=this.config;return typeof e.data_order=="string"&&e.data_order.toLowerCase()==="desc"},r.isOrderAsc=function(){var e=this.config;return typeof e.data_order=="string"&&e.data_order.toLowerCase()==="asc"},r.orderTargets=function(e){var t=this,n=t.config,r=t.isOrderAsc(),i=t.isOrderDesc();return r||i?e.sort(function(e,t){var n=function(e,t){return e+Math.abs(t.value)},i=e.values.reduce(n,0),s=t.values.reduce(n,0);return r?s-i:i-s}):h(n.data_order)&&e.sort(n.data_order),e},r.filterByX=function(e,t){return this.d3.merge(e.map(function(e){return e.values})).filter(function(e){return e.x-t===0})},r.filterRemoveNull=function(e){return e.filter(function(e){return c(e.value)})},r.filterByXDomain=function(e,t){return e.map(function(e){return{id:e.id,id_org:e.id_org,values:e.values.filter(function(e){return t[0]<=e.x&&e.x<=t[1]})}})},r.hasDataLabel=function(){var e=this.config;return typeof e.data_labels=="boolean"&&e.data_labels?!0:typeof e.data_labels=="object"&&w(e.data_labels)?!0:!1},r.getDataLabelLength=function(e,t,n){var r=this,i=[0,0],s=1.3;return r.selectChart.select("svg").selectAll(".dummy").data([e,t]).enter().append("text").text(function(e){return r.dataLabelFormat(e.id)(e)}).each(function(e,t){i[t]=this.getBoundingClientRect()[n]*s}).remove(),i},r.isNoneArc=function(e){return this.hasTarget(this.data.targets,e.id)},r.isArc=function(e){return"data"in e&&this.hasTarget(this.data.targets,e.data.id)},r.findSameXOfValues=function(e,t){var n,r=e[t].x,i=[];for(n=t-1;n>=0;n--){if(r!==e[n].x)break;i.push(e[n])}for(n=t;n<e.length;n++){if(r!==e[n].x)break;i.push(e[n])}return i},r.findClosestFromTargets=function(e,t){var n=this,r;return r=e.map(function(e){return n.findClosest(e.values,t)}),n.findClosest(r,t)},r.findClosest=function(e,t){var n=this,r=n.config.point_sensitivity,i;return e.filter(function(e){return e&&n.isBarType(e.id)}).forEach(function(e){var t=n.main.select("."+l.bars+n.getTargetSelectorSuffix(e.id)+" ."+l.bar+"-"+e.index).node();!i&&n.isWithinBar(t)&&(i=e)}),e.filter(function(e){return e&&!n.isBarType(e.id)}).forEach(function(e){var s=n.dist(e,t);s<r&&(r=s,i=e)}),i},r.dist=function(e,t){var n=this,r=n.config,i=r.axis_rotated?1:0,s=r.axis_rotated?0:1,o=n.circleY(e,e.index),u=n.x(e.x);return Math.sqrt(Math.pow(u-t[i],2)+Math.pow(o-t[s],2))},r.convertValuesToStep=function(e){var t=[].concat(e),n;if(!this.isCategorized())return e;for(n=e.length+1;0<n;n--)t[n]=t[n-1];return t[0]={x:t[0].x-1,value:t[0].value,id:t[0].id},t[e.length+1]={x:t[e.length].x+1,value:t[e.length].value,id:t[e.length].id},t},r.updateDataAttributes=function(e,t){var n=this,r=n.config,i=r["data_"+e];return typeof t=="undefined"?i:(Object.keys(t).forEach(function(e){i[e]=t[e]}),n.redraw({withLegend:!0}),i)},r.convertUrlToData=function(e,t,n,r,i){var s=this,o=t?t:"csv",u=s.d3.xhr(e);n&&Object.keys(n).forEach(function(e){u.header(e,n[e])}),u.get(function(e,t){var n;if(!t)throw new Error(e.responseURL+" "+e.status+" ("+e.statusText+")");o==="json"?n=s.convertJsonToData(JSON.parse(t.response),r):o==="tsv"?n=s.convertTsvToData(t.response):n=s.convertCsvToData(t.response),i.call(s,n)})},r.convertXsvToData=function(e,t){var n=t.parseRows(e),r;return n.length===1?(r=[{}],n[0].forEach(function(e){r[0][e]=null})):r=t.parse(e),r},r.convertCsvToData=function(e){return this.convertXsvToData(e,this.d3.csv)},r.convertTsvToData=function(e){return this.convertXsvToData(e,this.d3.tsv)},r.convertJsonToData=function(e,t){var n=this,r=[],i,s;return t?(t.x?(i=t.value.concat(t.x),n.config.data_x=t.x):i=t.value,r.push(i),e.forEach(function(e){var t=[];i.forEach(function(r){var i=n.findValueInJson(e,r);d(i)&&(i=null),t.push(i)}),r.push(t)}),s=n.convertRowsToData(r)):(Object.keys(e).forEach(function(t){r.push([t].concat(e[t]))}),s=n.convertColumnsToData(r)),s},r.findValueInJson=function(e,t){t=t.replace(/\[(\w+)\]/g,".$1"),t=t.replace(/^\./,"");var n=t.split(".");for(var r=0;r<n.length;++r){var i=n[r];if(!(i in e))return;e=e[i]}return e},r.convertRowsToData=function(e){var t=e[0],n={},r=[],i,s;for(i=1;i<e.length;i++){n={};for(s=0;s<e[i].length;s++){if(d(e[i][s]))throw new Error("Source data is missing a component at ("+i+","+s+")!");n[t[s]]=e[i][s]}r.push(n)}return r},r.convertColumnsToData=function(e){var t=[],n,r,i;for(n=0;n<e.length;n++){i=e[n][0];for(r=1;r<e[n].length;r++){d(t[r-1])&&(t[r-1]={});if(d(e[n][r]))throw new Error("Source data is missing a component at ("+n+","+r+")!");t[r-1][i]=e[n][r]}}return t},r.convertDataToTargets=function(e,t){var n=this,r=n.config,i=n.d3.keys(e[0]).filter(n.isNotX,n),s=n.d3.keys(e[0]).filter(n.isX,n),o;return i.forEach(function(i){var o=n.getXKey(i);n.isCustomX()||n.isTimeSeries()?s.indexOf(o)>=0?n.data.xs[i]=(t&&n.data.xs[i]?n.data.xs[i]:[]).concat(e.map(function(e){return e[o]}).filter(c).map(function(e,t){return n.generateTargetX(e,i,t)})):r.data_x?n.data.xs[i]=n.getOtherTargetXs():w(r.data_xs)&&(n.data.xs[i]=n.getXValuesOfXKey(o,n.data.targets)):n.data.xs[i]=e.map(function(e,t){return t})}),i.forEach(function(e){if(!n.data.xs[e])throw new Error('x is not defined for id = "'+e+'".')}),o=i.map(function(t,i){var s=r.data_idConverter(t);return{id:s,id_org:t,values:e.map(function(e,o){var u=n.getXKey(t),a=e[u],f=e[t]!==null&&!isNaN(e[t])?+e[t]:null,l;n.isCustomX()&&n.isCategorized()&&i===0&&!d(a)?(i===0&&o===0&&(r.axis_x_categories=[]),l=r.axis_x_categories.indexOf(a),l===-1&&(l=r.axis_x_categories.length,r.axis_x_categories.push(a))):l=n.generateTargetX(a,t,o);if(d(e[t])||n.data.xs[t].length<=o)l=undefined;return{x:l,value:f,id:s}}).filter(function(e){return v(e.x)})}}),o.forEach(function(e){var t;r.data_xSort&&(e.values=e.values.sort(function(e,t){var n=e.x||e.x===0?e.x:Infinity,r=t.x||t.x===0?t.x:Infinity;return n-r})),t=0,e.values.forEach(function(e){e.index=t++}),n.data.xs[e.id].sort(function(e,t){return e-t})}),n.hasNegativeValue=n.hasNegativeValueInTargets(o),n.hasPositiveValue=n.hasPositiveValueInTargets(o),r.data_type&&n.setTargetType(n.mapToIds(o).filter(function(e){return!(e in r.data_types)}),r.data_type),o.forEach(function(e){n.addCache(e.id_org,e)}),o},r.load=function(e,t){var n=this;e&&(t.filter&&(e=e.filter(t.filter)),(t.type||t.types)&&e.forEach(function(e){var r=t.types&&t.types[e.id]?t.types[e.id]:t.type;n.setTargetType(e.id,r)}),n.data.targets.forEach(function(t){for(var n=0;n<e.length;n++)if(t.id===e[n].id){t.values=e[n].values,e.splice(n,1);break}}),n.data.targets=n.data.targets.concat(e)),n.updateTargets(n.data.targets),n.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),t.done&&t.done()},r.loadFromArgs=function(e){var t=this;e.data?t.load(t.convertDataToTargets(e.data),e):e.url?t.convertUrlToData(e.url,e.mimeType,e.headers,e.keys,function(n){t.load(t.convertDataToTargets(n),e)}):e.json?t.load(t.convertDataToTargets(t.convertJsonToData(e.json,e.keys)),e):e.rows?t.load(t.convertDataToTargets(t.convertRowsToData(e.rows)),e):e.columns?t.load(t.convertDataToTargets(t.convertColumnsToData(e.columns)),e):t.load(null,e)},r.unload=function(e,t){var n=this;t||(t=function(){}),e=e.filter(function(e){return n.hasTarget(n.data.targets,e)});if(!e||e.length===0){t();return}n.svg.selectAll(e.map(function(e){return n.selectorTarget(e)})).transition().style("opacity",0).remove().call(n.endall,t),e.forEach(function(e){n.withoutFadeIn[e]=!1,n.legend&&n.legend.selectAll("."+l.legendItem+n.getTargetSelectorSuffix(e)).remove(),n.data.targets=n.data.targets.filter(function(t){return t.id!==e})})},r.categoryName=function(e){var t=this.config;return e<t.axis_x_categories.length?t.axis_x_categories[e]:e},r.initEventRect=function(){var e=this;e.main.select("."+l.chart).append("g").attr("class",l.eventRects).style("fill-opacity",0)},r.redrawEventRect=function(){var e=this,t=e.config,n,r,i=e.isMultipleX(),s=e.main.select("."+l.eventRects).style("cursor",t.zoom_enabled?t.axis_rotated?"ns-resize":"ew-resize":null).classed(l.eventRectsMultiple,i).classed(l.eventRectsSingle,!i);s.selectAll("."+l.eventRect).remove(),e.eventRect=s.selectAll("."+l.eventRect),i?(n=e.eventRect.data([0]),e.generateEventRectsForMultipleXs(n.enter()),e.updateEventRect(n)):(r=e.getMaxDataCountTarget(e.data.targets),s.datum(r?r.values:[]),e.eventRect=s.selectAll("."+l.eventRect),n=e.eventRect.data(function(e){return e}),e.generateEventRectsForSingleX(n.enter()),e.updateEventRect(n),n.exit().remove())},r.updateEventRect=function(e){var t=this,n=t.config,r,i,s,o,u,a;e=e||t.eventRect.data(function(e){return e}),t.isMultipleX()?(r=0,i=0,s=t.width,o=t.height):((t.isCustomX()||t.isTimeSeries())&&!t.isCategorized()?(t.updateXs(),u=function(e){var r=t.getPrevX(e.index),i=t.getNextX(e.index);return r===null&&i===null?n.axis_rotated?t.height:t.width:(r===null&&(r=t.x.domain()[0]),i===null&&(i=t.x.domain()[1]),Math.max(0,(t.x(i)-t.x(r))/2))},a=function(e){var n=t.getPrevX(e.index),r=t.getNextX(e.index),i=t.data.xs[e.id][e.index];return n===null&&r===null?0:(n===null&&(n=t.x.domain()[0]),(t.x(i)+t.x(n))/2)}):(u=t.getEventRectWidth(),a=function(e){return t.x(e.x)-u/2}),r=n.axis_rotated?0:a,i=n.axis_rotated?a:0,s=n.axis_rotated?t.width:u,o=n.axis_rotated?u:t.height),e.attr("class",t.classEvent.bind(t)).attr("x",r).attr("y",i).attr("width",s).attr("height",o)},r.generateEventRectsForSingleX=function(e){var t=this,n=t.d3,r=t.config;e.append("rect").attr("class",t.classEvent.bind(t)).style("cursor",r.data_selection_enabled&&r.data_selection_grouped?"pointer":null).on("mouseover",function(e){var n=e.index;if(t.dragging||t.flowing)return;if(t.hasArcType())return;r.point_focus_expand_enabled&&t.expandCircles(n,null,!0),t.expandBars(n,null,!0),t.main.selectAll("."+l.shape+"-"+n).each(function(e){r.data_onmouseover.call(t.api,e)})}).on("mouseout",function(e){var n=e.index;if(!t.config)return;if(t.hasArcType())return;t.hideXGridFocus(),t.hideTooltip(),t.unexpandCircles(),t.unexpandBars(),t.main.selectAll("."+l.shape+"-"+n).each(function(e){r.data_onmouseout.call(t.api,e)})}).on("mousemove",function(e){var i,s=e.index,o=t.svg.select("."+l.eventRect+"-"+s);if(t.dragging||t.flowing)return;if(t.hasArcType())return;t.isStepType(e)&&t.config.line_step_type==="step-after"&&n.mouse(this)[0]<t.x(t.getXValue(e.id,s))&&(s-=1),i=t.filterTargetsToShow(t.data.targets).map(function(e){return t.addName(t.getValueOnIndex(e.values,s))}),r.tooltip_grouped&&(t.showTooltip(i,this),t.showXGridFocus(i));if(r.tooltip_grouped&&(!r.data_selection_enabled||r.data_selection_grouped))return;t.main.selectAll("."+l.shape+"-"+s).each(function(){n.select(this).classed(l.EXPANDED,!0),r.data_selection_enabled&&o.style("cursor",r.data_selection_grouped?"pointer":null),r.tooltip_grouped||(t.hideXGridFocus(),t.hideTooltip(),r.data_selection_grouped||(t.unexpandCircles(s),t.unexpandBars(s)))}).filter(function(e){return t.isWithinShape(this,e)}).each(function(e){r.data_selection_enabled&&(r.data_selection_grouped||r.data_selection_isselectable(e))&&o.style("cursor","pointer"),r.tooltip_grouped||(t.showTooltip([e],this),t.showXGridFocus([e]),r.point_focus_expand_enabled&&t.expandCircles(s,e.id,!0),t.expandBars(s,e.id,!0))})}).on("click",function(e){var i=e.index;if(t.hasArcType()||!t.toggleShape)return;if(t.cancelClick){t.cancelClick=!1;return}t.isStepType(e)&&r.line_step_type==="step-after"&&n.mouse(this)[0]<t.x(t.getXValue(e.id,i))&&(i-=1),t.main.selectAll("."+l.shape+"-"+i).each(function(e){if(r.data_selection_grouped||t.isWithinShape(this,e))t.toggleShape(this,e,i),t.config.data_onclick.call(t.api,e,this)})}).call(r.data_selection_draggable&&t.drag?n.behavior.drag().origin(Object).on("drag",function(){t.drag(n.mouse(this))}).on("dragstart",function(){t.dragstart(n.mouse(this))}).on("dragend",function(){t.dragend()}):function(){})},r.generateEventRectsForMultipleXs=function(e){function i(){t.svg.select("."+l.eventRect).style("cursor",null),t.hideXGridFocus(),t.hideTooltip(),t.unexpandCircles(),t.unexpandBars()}var t=this,n=t.d3,r=t.config;e.append("rect").attr("x",0).attr("y",0).attr("width",t.width).attr("height",t.height).attr("class",l.eventRect).on("mouseout",function(){if(!t.config)return;if(t.hasArcType())return;i()}).on("mousemove",function(){var e=t.filterTargetsToShow(t.data.targets),s,o,u,a;if(t.dragging)return;if(t.hasArcType(e))return;s=n.mouse(this),o=t.findClosestFromTargets(e,s),t.mouseover&&(!o||o.id!==t.mouseover.id)&&(r.data_onmouseout.call(t.api,t.mouseover),t.mouseover=undefined);if(!o){i();return}t.isScatterType(o)||!r.tooltip_grouped?u=[o]:u=t.filterByX(e,o.x),a=u.map(function(e){return t.addName(e)}),t.showTooltip(a,this),r.point_focus_expand_enabled&&t.expandCircles(o.index,o.id,!0),t.expandBars(o.index,o.id,!0),t.showXGridFocus(a);if(t.isBarType(o.id)||t.dist(o,s)<r.point_sensitivity)t.svg.select("."+l.eventRect).style("cursor","pointer"),t.mouseover||(r.data_onmouseover.call(t.api,o),t.mouseover=o)}).on("click",function(){var e=t.filterTargetsToShow(t.data.targets),i,s;if(t.hasArcType(e))return;i=n.mouse(this),s=t.findClosestFromTargets(e,i);if(!s)return;(t.isBarType(s.id)||t.dist(s,i)<r.point_sensitivity)&&t.main.selectAll("."+l.shapes+t.getTargetSelectorSuffix(s.id)).selectAll("."+l.shape+"-"+s.index).each(function(){if(r.data_selection_grouped||t.isWithinShape(this,s))t.toggleShape(this,s,s.index),t.config.data_onclick.call(t.api,s,this)})}).call(r.data_selection_draggable&&t.drag?n.behavior.drag().origin(Object).on("drag",function(){t.drag(n.mouse(this))}).on("dragstart",function(){t.dragstart(n.mouse(this))}).on("dragend",function(){t.dragend()}):function(){})},r.dispatchEvent=function(t,n,r){var i=this,s="."+l.eventRect+(i.isMultipleX()?"":"-"+n),o=i.main.select(s).node(),u=o.getBoundingClientRect(),a=u.left+(r?r[0]:0),f=u.top+(r?r[1]:0),c=document.createEvent("MouseEvents");c.initMouseEvent(t,!0,!0,e,0,a,f,a,f,!1,!1,!1,!1,0,null),o.dispatchEvent(c)},r.getCurrentWidth=function(){var e=this,t=e.config;return t.size_width?t.size_width:e.getParentWidth()},r.getCurrentHeight=function(){var e=this,t=e.config,n=t.size_height?t.size_height:e.getParentHeight();return n>0?n:320/(e.hasType("gauge")&&!t.gauge_fullCircle?2:1)},r.getCurrentPaddingTop=function(){var e=this,t=e.config,n=c(t.padding_top)?t.padding_top:0;return e.title&&e.title.node()&&(n+=e.getTitlePadding()),n},r.getCurrentPaddingBottom=function(){var e=this.config;return c(e.padding_bottom)?e.padding_bottom:0},r.getCurrentPaddingLeft=function(e){var t=this,n=t.config;return c(n.padding_left)?n.padding_left:n.axis_rotated?n.axis_x_show?Math.max(m(t.getAxisWidthByAxisId("x",e)),40):1:!n.axis_y_show||n.axis_y_inner?t.axis.getYAxisLabelPosition().isOuter?30:1:m(t.getAxisWidthByAxisId("y",e))},r.getCurrentPaddingRight=function(){var e=this,t=e.config,n=10,r=e.isLegendRight?e.getLegendWidth()+20:0;return c(t.padding_right)?t.padding_right+1:t.axis_rotated?n+r:!t.axis_y2_show||t.axis_y2_inner?2+r+(e.axis.getY2AxisLabelPosition().isOuter?20:0):m(e.getAxisWidthByAxisId("y2"))+r},r.getParentRectValue=function(e){var t=this.selectChart.node(),n;while(t&&t.tagName!=="BODY"){try{n=t.getBoundingClientRect()[e]}catch(r){e==="width"&&(n=t.offsetWidth)}if(n)break;t=t.parentNode}return n},r.getParentWidth=function(){return this.getParentRectValue("width")},r.getParentHeight=function(){var e=this.selectChart.style("height");return e.indexOf("px")>0?+e.replace("px",""):0},r.getSvgLeft=function(e){var t=this,n=t.config,r=n.axis_rotated||!n.axis_rotated&&!n.axis_y_inner,i=n.axis_rotated?l.axisX:l.axisY,s=t.main.select("."+i).node(),o=s&&r?s.getBoundingClientRect():{right:0},u=t.selectChart.node().getBoundingClientRect(),a=t.hasArcType(),f=o.right-u.left-(a?0:t.getCurrentPaddingLeft(e));return f>0?f:0},r.getAxisWidthByAxisId=function(e,t){var n=this,r=n.axis.getLabelPositionById(e);return n.axis.getMaxTickWidth(e,t)+(r.isInner?20:40)},r.getHorizontalAxisHeight=function(e){var t=this,n=t.config,r=30;return e==="x"&&!n.axis_x_show?8:e==="x"&&n.axis_x_height?n.axis_x_height:e==="y"&&!n.axis_y_show?n.legend_show&&!t.isLegendRight&&!t.isLegendInset?10:1:e==="y2"&&!n.axis_y2_show?t.rotated_padding_top:(e==="x"&&!n.axis_rotated&&n.axis_x_tick_rotate&&(r=30+t.axis.getMaxTickWidth(e)*Math.cos(Math.PI*(90-n.axis_x_tick_rotate)/180)),e==="y"&&n.axis_rotated&&n.axis_y_tick_rotate&&(r=30+t.axis.getMaxTickWidth(e)*Math.cos(Math.PI*(90-n.axis_y_tick_rotate)/180)),r+(t.axis.getLabelPositionById(e).isInner?0:10)+(e==="y2"?-10:0))},r.getEventRectWidth=function(){return Math.max(0,this.xAxis.tickInterval())},r.getShapeIndices=function(e){var t=this,n=t.config,r={},i=0,s,o;return t.filterTargetsToShow(t.data.targets.filter(e,t)).forEach(function(e){for(s=0;s<n.data_groups.length;s++){if(n.data_groups[s].indexOf(e.id)<0)continue;for(o=0;o<n.data_groups[s].length;o++)if(n.data_groups[s][o]in r){r[e.id]=r[n.data_groups[s][o]];break}}d(r[e.id])&&(r[e.id]=i++)}),r.__max__=i-1,r},r.getShapeX=function(e,t,n,r){var i=this,s=r?i.subX:i.x;return function(r){var i=r.id in n?n[r.id]:0;return r.x||r.x===0?s(r.x)-e*(t/2-i):0}},r.getShapeY=function(e){var t=this;return function(n){var r=e?t.getSubYScale(n.id):t.getYScale(n.id);return r(n.value)}},r.getShapeOffset=function(e,t,n){var r=this,i=r.orderTargets(r.filterTargetsToShow(r.data.targets.filter(e,r))),s=i.map(function(e){return e.id});return function(e,o){var u=n?r.getSubYScale(e.id):r.getYScale(e.id),a=u(0),f=a;return i.forEach(function(n){var i=r.isStepType(e)?r.convertValuesToStep(n.values):n.values;if(n.id===e.id||t[n.id]!==t[e.id])return;if(s.indexOf(n.id)<s.indexOf(e.id)){if(typeof i[o]=="undefined"||+i[o].x!==+e.x)o=-1,i.forEach(function(t,n){t.x===e.x&&(o=n)});o in i&&i[o].value*e.value>=0&&(f+=u(i[o].value)-a)}}),f}},r.isWithinShape=function(e,t){var n=this,r=n.d3.select(e),i;return n.isTargetToShow(t.id)?e.nodeName==="circle"?i=n.isStepType(t)?n.isWithinStep(e,n.getYScale(t.id)(t.value)):n.isWithinCircle(e,n.pointSelectR(t)*1.5):e.nodeName==="path"&&(i=r.classed(l.bar)?n.isWithinBar(e):!0):i=!1,i},r.getInterpolate=function(e){var t=this,n=t.isInterpolationType(t.config.spline_interpolation_type)?t.config.spline_interpolation_type:"cardinal";return t.isSplineType(e)?n:t.isStepType(e)?t.config.line_step_type:"linear"},r.initLine=function(){var e=this;e.main.select("."+l.chart).append("g").attr("class",l.chartLines)},r.updateTargetsForLine=function(e){var t=this,n=t.config,r,i,s=t.classChartLine.bind(t),o=t.classLines.bind(t),u=t.classAreas.bind(t),a=t.classCircles.bind(t),f=t.classFocus.bind(t);r=t.main.select("."+l.chartLines).selectAll("."+l.chartLine).data(e).attr("class",function(e){return s(e)+f(e)}),i=r.enter().append("g").attr("class",s).style("opacity",0).style("pointer-events","none"),i.append("g").attr("class",o),i.append("g").attr("class",u),i.append("g").attr("class",function(e){return t.generateClass(l.selectedCircles,e.id)}),i.append("g").attr("class",a).style("cursor",function(e){return n.data_selection_isselectable(e)?"pointer":null}),e.forEach(function(e){t.main.selectAll("."+l.selectedCircles+t.getTargetSelectorSuffix(e.id)).selectAll("."+l.selectedCircle).each(function(t){t.value=e.values[t.index].value})})},r.updateLine=function(e){var t=this;t.mainLine=t.main.selectAll("."+l.lines).selectAll("."+l.line).data(t.lineData.bind(t)),t.mainLine.enter().append("path").attr("class",t.classLine.bind(t)).style("stroke",t.color),t.mainLine.style("opacity",t.initialOpacity.bind(t)).style("shape-rendering",function(e){return t.isStepType(e)?"crispEdges":""}).attr("transform",null),t.mainLine.exit().transition().duration(e).style("opacity",0).remove()},r.redrawLine=function(e,t){return[(t?this.mainLine.transition(Math.random().toString()):this.mainLine).attr("d",e).style("stroke",this.color).style("opacity",1)]},r.generateDrawLine=function(e,t){var n=this,r=n.config,i=n.d3.svg.line(),s=n.generateGetLinePoints(e,t),o=t?n.getSubYScale:n.getYScale,u=function(e){return(t?n.subxx:n.xx).call(n,e)},a=function(e,t){return r.data_groups.length>0?s(e,t)[0][1]:o.call(n,e.id)(e.value)};return i=r.axis_rotated?i.x(a).y(u):i.x(u).y(a),r.line_connectNull||(i=i.defined(function(e){return e.value!=null})),function(e){var s=r.line_connectNull?n.filterRemoveNull(e.values):e.values,u=t?n.x:n.subX,a=o.call(n,e.id),f=0,l=0,c;return n.isLineType(e)?r.data_regions[e.id]?c=n.lineWithRegions(s,u,a,r.data_regions[e.id]):(n.isStepType(e)&&(s=n.convertValuesToStep(s)),c=i.interpolate(n.getInterpolate(e))(s)):(s[0]&&(f=u(s[0].x),l=a(s[0].value)),c=r.axis_rotated?"M "+l+" "+f:"M "+f+" "+l),c?c:"M 0 0"}},r.generateGetLinePoints=function(e,t){var n=this,r=n.config,i=e.__max__+1,s=n.getShapeX(0,i,e,!!t),o=n.getShapeY(!!t),u=n.getShapeOffset(n.isLineType,e,!!t),a=t?n.getSubYScale:n.getYScale;return function(e,t){var i=a.call(n,e.id)(0),f=u(e,t)||i,l=s(e),c=o(e);return r.axis_rotated&&(0<e.value&&c<i||e.value<0&&i<c)&&(c=i),[[l,c-(i-f)],[l,c-(i-f)],[l,c-(i-f)],[l,c-(i-f)]]}},r.lineWithRegions=function(e,t,n,r){function T(e,t){var n;for(n=0;n<t.length;n++)if(t[n].start<e&&e<=t[n].end)return!0;return!1}function N(e){return"M"+e[0][0]+" "+e[0][1]+" "+e[1][0]+" "+e[1][1]}var i=this,s=i.config,o=-1,u,a,f="M",l,c,h,p,m,g,y,b,w=i.isCategorized()?.5:0,E,S,x=[];if(v(r))for(u=0;u<r.length;u++)x[u]={},d(r[u].start)?x[u].start=e[0].x:x[u].start=i.isTimeSeries()?i.parseDate(r[u].start):r[u].start,d(r[u].end)?x[u].end=e[e.length-1].x:x[u].end=i.isTimeSeries()?i.parseDate(r[u].end):r[u].end;E=s.axis_rotated?function(e){return n(e.value)}:function(e){return t(e.x)},S=s.axis_rotated?function(e){return t(e.x)}:function(e){return n(e.value)},i.isTimeSeries()?l=function(e,r,i,o){var u=e.x.getTime(),a=r.x-e.x,f=new Date(u+a*i),l=new Date(u+a*(i+o)),c;return s.axis_rotated?c=[[n(h(i)),t(f)],[n(h(i+o)),t(l)]]:c=[[t(f),n(h(i))],[t(l),n(h(i+o))]],N(c)}:l=function(e,r,i,o){var u;return s.axis_rotated?u=[[n(h(i),!0),t(c(i))],[n(h(i+o),!0),t(c(i+o))]]:u=[[t(c(i),!0),n(h(i))],[t(c(i+o),!0),n(h(i+o))]],N(u)};for(u=0;u<e.length;u++){if(d(x)||!T(e[u].x,x))f+=" "+E(e[u])+" "+S(e[u]);else{c=i.getScale(e[u-1].x+w,e[u].x+w,i.isTimeSeries()),h=i.getScale(e[u-1].value,e[u].value),p=t(e[u].x)-t(e[u-1].x),m=n(e[u].value)-n(e[u-1].value),g=Math.sqrt(Math.pow(p,2)+Math.pow(m,2)),y=2/g,b=y*2;for(a=y;a<=1;a+=b)f+=l(e[u-1],e[u],a,y)}o=e[u].x}return f},r.updateArea=function(e){var t=this,n=t.d3;t.mainArea=t.main.selectAll("."+l.areas).selectAll("."+l.area).data(t.lineData.bind(t)),t.mainArea.enter().append("path").attr("class",t.classArea.bind(t)).style("fill",t.color).style("opacity",function(){return t.orgAreaOpacity=+n.select(this).style("opacity"),0}),t.mainArea.style("opacity",t.orgAreaOpacity),t.mainArea.exit().transition().duration(e).style("opacity",0).remove()},r.redrawArea=function(e,t){return[(t?this.mainArea.transition(Math.random().toString()):this.mainArea).attr("d",e).style("fill",this.color).style("opacity",this.orgAreaOpacity)]},r.generateDrawArea=function(e,t){var n=this,r=n.config,i=n.d3.svg.area(),s=n.generateGetAreaPoints(e,t),o=t?n.getSubYScale:n.getYScale,u=function(e){return(t?n.subxx:n.xx).call(n,e)},a=function(e,t){return r.data_groups.length>0?s(e,t)[0][1]:o.call(n,e.id)(n.getAreaBaseValue(e.id))},f=function(e,t){return r.data_groups.length>0?s(e,t)[1][1]:o.call(n,e.id)(e.value)};return i=r.axis_rotated?i.x0(a).x1(f).y(u):i.x(u).y0(r.area_above?0:a).y1(f),r.line_connectNull||(i=i.defined(function(e){return e.value!==null})),function(e){var t=r.line_connectNull?n.filterRemoveNull(e.values):e.values,s=0,o=0,u;return n.isAreaType(e)?(n.isStepType(e)&&(t=n.convertValuesToStep(t)),u=i.interpolate(n.getInterpolate(e))(t)):(t[0]&&(s=n.x(t[0].x),o=n.getYScale(e.id)(t[0].value)),u=r.axis_rotated?"M "+o+" "+s:"M "+s+" "+o),u?u:"M 0 0"}},r.getAreaBaseValue=function(){return 0},r.generateGetAreaPoints=function(e,t){var n=this,r=n.config,i=e.__max__+1,s=n.getShapeX(0,i,e,!!t),o=n.getShapeY(!!t),u=n.getShapeOffset(n.isAreaType,e,!!t),a=t?n.getSubYScale:n.getYScale;return function(e,t){var i=a.call(n,e.id)(0),f=u(e,t)||i,l=s(e),c=o(e);return r.axis_rotated&&(0<e.value&&c<i||e.value<0&&i<c)&&(c=i),[[l,f],[l,c-(i-f)],[l,c-(i-f)],[l,f]]}},r.updateCircle=function(){var e=this;e.mainCircle=e.main.selectAll("."+l.circles).selectAll("."+l.circle).data(e.lineOrScatterData.bind(e)),e.mainCircle.enter().append("circle").attr("class",e.classCircle.bind(e)).attr("r",e.pointR.bind(e)).style("fill",e.color),e.mainCircle.style("opacity",e.initialOpacityForCircle.bind(e)),e.mainCircle.exit().remove()},r.redrawCircle=function(e,t,n){var r=this.main.selectAll("."+l.selectedCircle);return[(n?this.mainCircle.transition(Math.random().toString()):this.mainCircle).style("opacity",this.opacityForCircle.bind(this)).style("fill",this.color).attr("cx",e).attr("cy",t),(n?r.transition(Math.random().toString()):r).attr("cx",e).attr("cy",t)]},r.circleX=function(e){return e.x||e.x===0?this.x(e.x):null},r.updateCircleY=function(){var e=this,t,n;e.config.data_groups.length>0?(t=e.getShapeIndices(e.isLineType),n=e.generateGetLinePoints(t),e.circleY=function(e,t){return n(e,t)[0][1]}):e.circleY=function(t){return e.getYScale(t.id)(t.value)}},r.getCircles=function(e,t){var n=this;return(t?n.main.selectAll("."+l.circles+n.getTargetSelectorSuffix(t)):n.main).selectAll("."+l.circle+(c(e)?"-"+e:""))},r.expandCircles=function(e,t,n){var r=this,i=r.pointExpandedR.bind(r);n&&r.unexpandCircles(),r.getCircles(e,t).classed(l.EXPANDED,!0).attr("r",i)},r.unexpandCircles=function(e){var t=this,n=t.pointR.bind(t);t.getCircles(e).filter(function(){return t.d3.select(this).classed(l.EXPANDED)}).classed(l.EXPANDED,!1).attr("r",n)},r.pointR=function(e){var t=this,n=t.config;return t.isStepType(e)?0:h(n.point_r)?n.point_r(e):n.point_r},r.pointExpandedR=function(e){var t=this,n=t.config;return n.point_focus_expand_enabled?n.point_focus_expand_r?n.point_focus_expand_r:t.pointR(e)*1.75:t.pointR(e)},r.pointSelectR=function(e){var t=this,n=t.config;return h(n.point_select_r)?n.point_select_r(e):n.point_select_r?n.point_select_r:t.pointR(e)*4},r.isWithinCircle=function(e,t){var n=this.d3,r=n.mouse(e),i=n.select(e),s=+i.attr("cx"),o=+i.attr("cy");return Math.sqrt(Math.pow(s-r[0],2)+Math.pow(o-r[1],2))<t},r.isWithinStep=function(e,t){return Math.abs(t-this.d3.mouse(e)[1])<30},r.initBar=function(){var e=this;e.main.select("."+l.chart).append("g").attr("class",l.chartBars)},r.updateTargetsForBar=function(e){var t=this,n=t.config,r,i,s=t.classChartBar.bind(t),o=t.classBars.bind(t),u=t.classFocus.bind(t);r=t.main.select("."+l.chartBars).selectAll("."+l.chartBar).data(e).attr("class",function(e){return s(e)+u(e)}),i=r.enter().append("g").attr("class",s).style("opacity",0).style("pointer-events","none"),i.append("g").attr("class",o).style("cursor",function(e){return n.data_selection_isselectable(e)?"pointer":null})},r.updateBar=function(e){var t=this,n=t.barData.bind(t),r=t.classBar.bind(t),i=t.initialOpacity.bind(t),s=function(e){return t.color(e.id)};t.mainBar=t.main.selectAll("."+l.bars).selectAll("."+l.bar).data(n),t.mainBar.enter().append("path").attr("class",r).style("stroke",s).style("fill",s),t.mainBar.style("opacity",i),t.mainBar.exit().transition().duration(e).style("opacity",0).remove()},r.redrawBar=function(e,t){return[(t?this.mainBar.transition(Math.random().toString()):this.mainBar).attr("d",e).style("fill",this.color).style("opacity",1)]},r.getBarW=function(e,t){var n=this,r=n.config,i=typeof r.bar_width=="number"?r.bar_width:t?e.tickInterval()*r.bar_width_ratio/t:0;return r.bar_width_max&&i>r.bar_width_max?r.bar_width_max:i},r.getBars=function(e,t){var n=this;return(t?n.main.selectAll("."+l.bars+n.getTargetSelectorSuffix(t)):n.main).selectAll("."+l.bar+(c(e)?"-"+e:""))},r.expandBars=function(e,t,n){var r=this;n&&r.unexpandBars(),r.getBars(e,t).classed(l.EXPANDED,!0)},r.unexpandBars=function(e){var t=this;t.getBars(e).classed(l.EXPANDED,!1)},r.generateDrawBar=function(e,t){var n=this,r=n.config,i=n.generateGetBarPoints(e,t);return function(e,t){var n=i(e,t),s=r.axis_rotated?1:0,o=r.axis_rotated?0:1,u="M "+n[0][s]+","+n[0][o]+" "+"L"+n[1][s]+","+n[1][o]+" "+"L"+n[2][s]+","+n[2][o]+" "+"L"+n[3][s]+","+n[3][o]+" "+"z";return u}},r.generateGetBarPoints=function(e,t){var n=this,r=t?n.subXAxis:n.xAxis,i=e.__max__+1,s=n.getBarW(r,i),o=n.getShapeX(s,i,e,!!t),u=n.getShapeY(!!t),a=n.getShapeOffset(n.isBarType,e,!!t),f=t?n.getSubYScale:n.getYScale;return function(e,t){var r=f.call(n,e.id)(0),i=a(e,t)||r,l=o(e),c=u(e);return n.config.axis_rotated&&(0<e.value&&c<r||e.value<0&&r<c)&&(c=r),[[l,i],[l,c-(r-i)],[l+s,c-(r-i)],[l+s,i]]}},r.isWithinBar=function(e){var t=this.d3.mouse(e),n=e.getBoundingClientRect(),r=e.pathSegList.getItem(0),i=e.pathSegList.getItem(1),s=Math.min(r.x,i.x),o=Math.min(r.y,i.y),u=n.width,a=n.height,f=2,l=s-f,c=s+u+f,h=o+a+f,p=o-f;return l<t[0]&&t[0]<c&&p<t[1]&&t[1]<h},r.initText=function(){var e=this;e.main.select("."+l.chart).append("g").attr("class",l.chartTexts),e.mainText=e.d3.selectAll([])},r.updateTargetsForText=function(e){var t=this,n,r,i=t.classChartText.bind(t),s=t.classTexts.bind(t),o=t.classFocus.bind(t);n=t.main.select("."+l.chartTexts).selectAll("."+l.chartText).data(e).attr("class",function(e){return i(e)+o(e)}),r=n.enter().append("g").attr("class",i).style("opacity",0).style("pointer-events","none"),r.append("g").attr("class",s)},r.updateText=function(e){var t=this,n=t.config,r=t.barOrLineData.bind(t),i=t.classText.bind(t);t.mainText=t.main.selectAll("."+l.texts).selectAll("."+l.text).data(r),t.mainText.enter().append("text").attr("class",i).attr("text-anchor",function(e){return n.axis_rotated?e.value<0?"end":"start":"middle"}).style("stroke","none").style("fill",function(e){return t.color(e)}).style("fill-opacity",0),t.mainText.text(function(e,n,r){return t.dataLabelFormat(e.id)(e.value,e.id,n,r)}),t.mainText.exit().transition().duration(e).style("fill-opacity",0).remove()},r.redrawText=function(e,t,n,r){return[(r?this.mainText.transition():this.mainText).attr("x",e).attr("y",t).style("fill",this.color).style("fill-opacity",n?0:this.opacityForText.bind(this))]},r.getTextRect=function(e,t,n){var r=this.d3.select("body").append("div").classed("c3",!0),i=r.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),s=this.d3.select(n).style("font"),o;return i.selectAll(".dummy").data([e]).enter().append("text").classed(t?t:"",!0).style("font",s).text(e).each(function(){o=this.getBoundingClientRect()}),r.remove(),o},r.generateXYForText=function(e,t,n,r){var i=this,s=i.generateGetAreaPoints(e,!1),o=i.generateGetBarPoints(t,!1),u=i.generateGetLinePoints(n,!1),a=r?i.getXForText:i.getYForText;return function(e,t){var n=i.isAreaType(e)?s:i.isBarType(e)?o:u;return a.call(i,n(e,t),e,this)}},r.getXForText=function(e,t,n){var r=this,i=n.getBoundingClientRect(),s,o;return r.config.axis_rotated?(o=r.isBarType(t)?4:6,s=e[2][1]+o*(t.value<0?-1:1)):s=r.hasType("bar")?(e[2][0]+e[0][0])/2:e[0][0],t.value===null&&(s>r.width?s=r.width-i.width:s<0&&(s=4)),s},r.getYForText=function(e,t,n){var r=this,i=n.getBoundingClientRect(),s;return r.config.axis_rotated?s=(e[0][0]+e[2][0]+i.height*.6)/2:(s=e[2][1],t.value<0||t.value===0&&!r.hasPositiveValue?(s+=i.height,r.isBarType(t)&&r.isSafari()?s-=3:!r.isBarType(t)&&r.isChrome()&&(s+=3)):s+=r.isBarType(t)?-3:-6),t.value===null&&!r.config.axis_rotated&&(s<i.height?s=i.height:s>this.height&&(s=this.height-4)),s},r.setTargetType=function(e,t){var n=this,r=n.config;n.mapToTargetIds(e).forEach(function(e){n.withoutFadeIn[e]=t===r.data_types[e],r.data_types[e]=t}),e||(r.data_type=t)},r.hasType=function(e,t){var n=this,r=n.config.data_types,i=!1;return t=t||n.data.targets,t&&t.length?t.forEach(function(t){var n=r[t.id];if(n&&n.indexOf(e)>=0||!n&&e==="line")i=!0}):Object.keys(r).length?Object.keys(r).forEach(function(t){r[t]===e&&(i=!0)}):i=n.config.data_type===e,i},r.hasArcType=function(e){return this.hasType("pie",e)||this.hasType("donut",e)||this.hasType("gauge",e)},r.isLineType=function(e){var t=this.config,n=p(e)?e:e.id;return!t.data_types[n]||["line","spline","area","area-spline","step","area-step"].indexOf(t.data_types[n])>=0},r.isStepType=function(e){var t=p(e)?e:e.id;return["step","area-step"].indexOf(this.config.data_types[t])>=0},r.isSplineType=function(e){var t=p(e)?e:e.id;return["spline","area-spline"].indexOf(this.config.data_types[t])>=0},r.isAreaType=function(e){var t=p(e)?e:e.id;return["area","area-spline","area-step"].indexOf(this.config.data_types[t])>=0},r.isBarType=function(e){var t=p(e)?e:e.id;return this.config.data_types[t]==="bar"},r.isScatterType=function(e){var t=p(e)?e:e.id;return this.config.data_types[t]==="scatter"},r.isPieType=function(e){var t=p(e)?e:e.id;return this.config.data_types[t]==="pie"},r.isGaugeType=function(e){var t=p(e)?e:e.id;return this.config.data_types[t]==="gauge"},r.isDonutType=function(e){var t=p(e)?e:e.id;return this.config.data_types[t]==="donut"},r.isArcType=function(e){return this.isPieType(e)||this.isDonutType(e)||this.isGaugeType(e)},r.lineData=function(e){return this.isLineType(e)?[e]:[]},r.arcData=function(e){return this.isArcType(e.data)?[e]:[]},r.barData=function(e){return this.isBarType(e)?e.values:[]},r.lineOrScatterData=function(e){return this.isLineType(e)||this.isScatterType(e)?e.values:[]},r.barOrLineData=function(e){return this.isBarType(e)||this.isLineType(e)?e.values:[]},r.isInterpolationType=function(e){return["linear","linear-closed","basis","basis-open","basis-closed","bundle","cardinal","cardinal-open","cardinal-closed","monotone"].indexOf(e)>=0},r.initGrid=function(){var e=this,t=e.config,n=e.d3;e.grid=e.main.append("g").attr("clip-path",e.clipPathForGrid).attr("class",l.grid),t.grid_x_show&&e.grid.append("g").attr("class",l.xgrids),t.grid_y_show&&e.grid.append("g").attr("class",l.ygrids),t.grid_focus_show&&e.grid.append("g").attr("class",l.xgridFocus).append("line").attr("class",l.xgridFocus),e.xgrid=n.selectAll([]),t.grid_lines_front||e.initGridLines()},r.initGridLines=function(){var e=this,t=e.d3;e.gridLines=e.main.append("g").attr("clip-path",e.clipPathForGrid).attr("class",l.grid+" "+l.gridLines),e.gridLines.append("g").attr("class",l.xgridLines),e.gridLines.append("g").attr("class",l.ygridLines),e.xgridLines=t.selectAll([])},r.updateXGrid=function(e){var t=this,n=t.config,r=t.d3,i=t.generateGridData(n.grid_x_type,t.x),s=t.isCategorized()?t.xAxis.tickOffset():0;t.xgridAttr=n.axis_rotated?{x1:0,x2:t.width,y1:function(e){return t.x(e)-s},y2:function(e){return t.x(e)-s}}:{x1:function(e){return t.x(e)+s},x2:function(e){return t.x(e)+s},y1:0,y2:t.height},t.xgrid=t.main.select("."+l.xgrids).selectAll("."+l.xgrid).data(i),t.xgrid.enter().append("line").attr("class",l.xgrid),e||t.xgrid.attr(t.xgridAttr).style("opacity",function(){return+r.select(this).attr(n.axis_rotated?"y1":"x1")===(n.axis_rotated?t.height:0)?0:1}),t.xgrid.exit().remove()},r.updateYGrid=function(){var e=this,t=e.config,n=e.yAxis.tickValues()||e.y.ticks(t.grid_y_ticks);e.ygrid=e.main.select("."+l.ygrids).selectAll("."+l.ygrid).data(n),e.ygrid.enter().append("line").attr("class",l.ygrid),e.ygrid.attr("x1",t.axis_rotated?e.y:0).attr("x2",t.axis_rotated?e.y:e.width).attr("y1",t.axis_rotated?0:e.y).attr("y2",t.axis_rotated?e.height:e.y),e.ygrid.exit().remove(),e.smoothLines(e.ygrid,"grid")},r.gridTextAnchor=function(e){return e.position?e.position:"end"},r.gridTextDx=function(e){return e.position==="start"?4:e.position==="middle"?0:-4},r.xGridTextX=function(e){return e.position==="start"?-this.height:e.position==="middle"?-this.height/2:0},r.yGridTextX=function(e){return e.position==="start"?0:e.position==="middle"?this.width/2:this.width},r.updateGrid=function(e){var t=this,n=t.main,r=t.config,i,s,o;t.grid.style("visibility",t.hasArcType()?"hidden":"visible"),n.select("line."+l.xgridFocus).style("visibility","hidden"),r.grid_x_show&&t.updateXGrid(),t.xgridLines=n.select("."+l.xgridLines).selectAll("."+l.xgridLine).data(r.grid_x_lines),i=t.xgridLines.enter().append("g").attr("class",function(e){return l.xgridLine+(e["class"]?" "+e["class"]:"")}),i.append("line").style("opacity",0),i.append("text").attr("text-anchor",t.gridTextAnchor).attr("transform",r.axis_rotated?"":"rotate(-90)").attr("dx",t.gridTextDx).attr("dy",-5).style("opacity",0),t.xgridLines.exit().transition().duration(e).style("opacity",0).remove(),r.grid_y_show&&t.updateYGrid(),t.ygridLines=n.select("."+l.ygridLines).selectAll("."+l.ygridLine).data(r.grid_y_lines),s=t.ygridLines.enter().append("g").attr("class",function(e){return l.ygridLine+(e["class"]?" "+e["class"]:"")}),s.append("line").style("opacity",0),s.append("text").attr("text-anchor",t.gridTextAnchor).attr("transform",r.axis_rotated?"rotate(-90)":"").attr("dx",t.gridTextDx).attr("dy",-5).style("opacity",0),o=t.yv.bind(t),t.ygridLines.select("line").transition().duration(e).attr("x1",r.axis_rotated?o:0).attr("x2",r.axis_rotated?o:t.width).attr("y1",r.axis_rotated?0:o).attr("y2",r.axis_rotated?t.height:o).style("opacity",1),t.ygridLines.select("text").transition().duration(e).attr("x",r.axis_rotated?t.xGridTextX.bind(t):t.yGridTextX.bind(t)).attr("y",o).text(function(e){return e.text}).style("opacity",1),t.ygridLines.exit().transition().duration(e).style("opacity",0).remove()},r.redrawGrid=function(e){var t=this,n=t.config,r=t.xv.bind(t),i=t.xgridLines.select("line"),s=t.xgridLines.select("text");return[(e?i.transition():i).attr("x1",n.axis_rotated?0:r).attr("x2",n.axis_rotated?t.width:r).attr("y1",n.axis_rotated?r:0).attr("y2",n.axis_rotated?r:t.height).style("opacity",1),(e?s.transition():s).attr("x",n.axis_rotated?t.yGridTextX.bind(t):t.xGridTextX.bind(t)).attr("y",r).text(function(e){return e.text}).style("opacity",1)]},r.showXGridFocus=function(e){var t=this,n=t.config,r=e.filter(function(e){return e&&c(e.value)}),i=t.main.selectAll("line."+l.xgridFocus),s=t.xx.bind(t);if(!n.tooltip_show)return;if(t.hasType("scatter")||t.hasArcType())return;i.style("visibility","visible").data([r[0]]).attr(n.axis_rotated?"y1":"x1",s).attr(n.axis_rotated?"y2":"x2",s),t.smoothLines(i,"grid")},r.hideXGridFocus=function(){this.main.select("line."+l.xgridFocus).style("visibility","hidden")},r.updateXgridFocus=function(){var e=this,t=e.config;e.main.select("line."+l.xgridFocus).attr("x1",t.axis_rotated?0:-10).attr("x2",t.axis_rotated?e.width:-10).attr("y1",t.axis_rotated?-10:0).attr("y2",t.axis_rotated?-10:e.height)},r.generateGridData=function(e,t){var n=this,r=[],i,s,o,u,a=n.main.select("."+l.axisX).selectAll(".tick").size();if(e==="year"){i=n.getXDomain(),s=i[0].getFullYear(),o=i[1].getFullYear();for(u=s;u<=o;u++)r.push(new Date(u+"-01-01 00:00:00"))}else r=t.ticks(10),r.length>a&&(r=r.filter(function(e){return(""+e).indexOf(".")<0}));return r},r.getGridFilterToRemove=function(e){return e?function(t){var n=!1;return[].concat(e).forEach(function(e){if("value"in e&&t.value===e.value||"class"in e&&t["class"]===e["class"])n=!0}),n}:function(){return!0}},r.removeGridLines=function(e,t){var n=this,r=n.config,i=n.getGridFilterToRemove(e),s=function(e){return!i(e)},o=t?l.xgridLines:l.ygridLines,u=t?l.xgridLine:l.ygridLine;n.main.select("."+o).selectAll("."+u).filter(i).transition().duration(r.transition_duration).style("opacity",0).remove(),t?r.grid_x_lines=r.grid_x_lines.filter(s):r.grid_y_lines=r.grid_y_lines.filter(s)},r.initTooltip=function(){var e=this,t=e.config,n;e.tooltip=e.selectChart.style("position","relative").append("div").attr("class",l.tooltipContainer).style("position","absolute").style("pointer-events","none").style("display","none");if(t.tooltip_init_show){if(e.isTimeSeries()&&p(t.tooltip_init_x)){t.tooltip_init_x=e.parseDate(t.tooltip_init_x);for(n=0;n<e.data.targets[0].values.length;n++)if(e.data.targets[0].values[n].x-t.tooltip_init_x===0)break;t.tooltip_init_x=n}e.tooltip.html(t.tooltip_contents.call(e,e.data.targets.map(function(n){return e.addName(n.values[t.tooltip_init_x])}),e.axis.getXAxisTickFormat(),e.getYFormat(e.hasArcType()),e.color)),e.tooltip.style("top",t.tooltip_init_position.top).style("left",t.tooltip_init_position.left).style("display","block")}},r.getTooltipContent=function(e,t,n,r){var i=this,s=i.config,o=s.tooltip_format_title||t,u=s.tooltip_format_name||function(e){return e},a=s.tooltip_format_value||n,f,l,c,h,p,d,v=i.isOrderAsc();if(s.data_groups.length===0)e.sort(function(e,t){var n=e?e.value:null,r=t?t.value:null;return v?n-r:r-n});else{var m=i.orderTargets(i.data.targets).map(function(e){return e.id});e.sort(function(e,t){var n=e?e.value:null,r=t?t.value:null;return n>0&&r>0&&(n=e?m.indexOf(e.id):null,r=t?m.indexOf(t.id):null),v?n-r:r-n})}for(l=0;l<e.length;l++){if(!e[l]||!e[l].value&&e[l].value!==0)continue;f||(c=x(o?o(e[l].x):e[l].x),f="<table class='"+i.CLASS.tooltip+"'>"+(c||c===0?"<tr><th colspan='2'>"+c+"</th></tr>":"")),h=x(a(e[l].value,e[l].ratio,e[l].id,e[l].index,e));if(h!==undefined){if(e[l].name===null)continue;p=x(u(e[l].name,e[l].ratio,e[l].id,e[l].index)),d=i.levelColor?i.levelColor(e[l].value):r(e[l].id),f+="<tr class='"+i.CLASS.tooltipName+"-"+i.getTargetSelectorSuffix(e[l].id)+"'>",f+="<td class='name'><span style='background-color:"+d+"'></span>"+p+"</td>",f+="<td class='value'>"+h+"</td>",f+="</tr>"}}return f+"</table>"},r.tooltipPosition=function(e,t,n,r){var i=this,s=i.config,o=i.d3,u,a,f,l,c,h=i.hasArcType(),p=o.mouse(r);return h?(a=(i.width-(i.isLegendRight?i.getLegendWidth():0))/2+p[0],l=i.height/2+p[1]+20):(u=i.getSvgLeft(!0),s.axis_rotated?(a=u+p[0]+100,f=a+t,c=i.currentWidth-i.getCurrentPaddingRight(),l=i.x(e[0].x)+20):(a=u+i.getCurrentPaddingLeft(!0)+i.x(e[0].x)+20,f=a+t,c=u+i.currentWidth-i.getCurrentPaddingRight(),l=p[1]+15),f>c&&(a-=f-c+20),l+n>i.currentHeight&&(l-=n+30)),l<0&&(l=0),{top:l,left:a}},r.showTooltip=function(e,t){var n=this,i=n.config,s,o,u,a=n.hasArcType(),f=e.filter(function(e){return e&&c(e.value)}),l=i.tooltip_position||r.tooltipPosition;if(f.length===0||!i.tooltip_show)return;n.tooltip.html(i.tooltip_contents.call(n,e,n.axis.getXAxisTickFormat(),n.getYFormat(a),n.color)).style("display","block"),s=n.tooltip.property("offsetWidth"),o=n.tooltip.property("offsetHeight"),u=l.call(this,f,s,o,t),n.tooltip.style("top",u.top+"px").style("left",u.left+"px")},r.hideTooltip=function(){this.tooltip.style("display","none")},r.initLegend=function(){var e=this;e.legendItemTextBox={},e.legendHasRendered=!1,e.legend=e.svg.append("g").attr("transform",e.getTranslate("legend"));if(!e.config.legend_show){e.legend.style("visibility","hidden"),e.hiddenLegendIds=e.mapToIds(e.data.targets);return}e.updateLegendWithDefaults()},r.updateLegendWithDefaults=function(){var e=this;e.updateLegend(e.mapToIds(e.data.targets),{withTransform:!1,withTransitionForTransform:!1,withTransition:!1})},r.updateSizeForLegend=function(e,t){var n=this,r=n.config,i={top:n.isLegendTop?n.getCurrentPaddingTop()+r.legend_inset_y+5.5:n.currentHeight-e-n.getCurrentPaddingBottom()-r.legend_inset_y,left:n.isLegendLeft?n.getCurrentPaddingLeft()+r.legend_inset_x+.5:n.currentWidth-t-n.getCurrentPaddingRight()-r.legend_inset_x+.5};n.margin3={top:n.isLegendRight?0:n.isLegendInset?i.top:n.currentHeight-e,right:NaN,bottom:0,left:n.isLegendRight?n.currentWidth-t:n.isLegendInset?i.left:0}},r.transformLegend=function(e){var t=this;(e?t.legend.transition():t.legend).attr("transform",t.getTranslate("legend"))},r.updateLegendStep=function(e){this.legendStep=e},r.updateLegendItemWidth=function(e){this.legendItemWidth=e},r.updateLegendItemHeight=function(e){this.legendItemHeight=e},r.getLegendWidth=function(){var e=this;return e.config.legend_show?e.isLegendRight||e.isLegendInset?e.legendItemWidth*(e.legendStep+1):e.currentWidth:0},r.getLegendHeight=function(){var e=this,t=0;return e.config.legend_show&&(e.isLegendRight?t=e.currentHeight:t=Math.max(20,e.legendItemHeight)*(e.legendStep+1)),t},r.opacityForLegend=function(e){return e.classed(l.legendItemHidden)?null:1},r.opacityForUnfocusedLegend=function(e){return e.classed(l.legendItemHidden)?null:.3},r.toggleFocusLegend=function(e,t){var n=this;e=n.mapToTargetIds(e),n.legend.selectAll("."+l.legendItem).filter(function(t){return e.indexOf(t)>=0}).classed(l.legendItemFocused,t).transition().duration(100).style("opacity",function(){var e=t?n.opacityForLegend:n.opacityForUnfocusedLegend;return e.call(n,n.d3.select(this))})},r.revertLegend=function(){var e=this,t=e.d3;e.legend.selectAll("."+l.legendItem).classed(l.legendItemFocused,!1).transition().duration(100).style("opacity",function(){return e.opacityForLegend(t.select(this))})},r.showLegend=function(e){var t=this,n=t.config;n.legend_show||(n.legend_show=!0,t.legend.style("visibility","visible"),t.legendHasRendered||t.updateLegendWithDefaults()),t.removeHiddenLegendIds(e),t.legend.selectAll(t.selectorLegends(e)).style("visibility","visible").transition().style("opacity",function(){return t.opacityForLegend(t.d3.select(this))})},r.hideLegend=function(e){var t=this,n=t.config;n.legend_show&&b(e)&&(n.legend_show=!1,t.legend.style("visibility","hidden")),t.addHiddenLegendIds(e),t.legend.selectAll(t.selectorLegends(e)).style("opacity",0).style("visibility","hidden")},r.clearLegendItemTextBoxCache=function(){this.legendItemTextBox={}},r.updateLegend=function(e,t,n){function j(e,t){return r.legendItemTextBox[t]||(r.legendItemTextBox[t]=r.getTextRect(e.textContent,l.legendItem,e)),r.legendItemTextBox[t]}function F(t,n,s){function v(e,t){t||(p=(h-T-c)/2,p<w&&(p=(h-c)/2,T=0,O++)),A[e]=O,L[O]=r.isLegendInset?10:p,N[e]=T,T+=c}var o=s===0,u=s===e.length-1,a=j(t,n),f=a.width+S+(u&&!r.isLegendRight&&!r.isLegendInset?0:g)+i.legend_padding,l=a.height+m,c=r.isLegendRight||r.isLegendInset?l:f,h=r.isLegendRight||r.isLegendInset?r.getLegendHeight():r.getLegendWidth(),p,d;o&&(T=0,O=0,y=0,b=0);if(i.legend_show&&!r.isLegendToShow(n)){C[n]=k[n]=A[n]=N[n]=0;return}C[n]=f,k[n]=l;if(!y||f>=y)y=f;if(!b||l>=b)b=l;d=r.isLegendRight||r.isLegendInset?b:y,i.legend_equally?(Object.keys(C).forEach(function(e){C[e]=y}),Object.keys(k).forEach(function(e){k[e]=b}),p=(h-d*e.length)/2,p<w?(T=0,O=0,e.forEach(function(e){v(e)})):v(n,!0)):v(n)}var r=this,i=r.config,s,o,u,a,f,c,h,p,d,m=4,g=10,y=0,b=0,w=10,S=i.legend_item_tile_width+5,x,T=0,N={},C={},k={},L=[0],A={},O=0,M,_,D,P,H,B;e=e.filter(function(e){return!v(i.data_names[e])||i.data_names[e]!==null}),t=t||{},M=E(t,"withTransition",!0),_=E(t,"withTransitionForTransform",!0),r.isLegendInset&&(O=i.legend_inset_step?i.legend_inset_step:e.length,r.updateLegendStep(O)),r.isLegendRight?(s=function(e){return y*A[e]},a=function(e){return L[A[e]]+N[e]}):r.isLegendInset?(s=function(e){return y*A[e]+10},a=function(e){return L[A[e]]+N[e]}):(s=function(e){return L[A[e]]+N[e]},a=function(e){return b*A[e]}),o=function(e,t){return s(e,t)+4+i.legend_item_tile_width},f=function(e,t){return a(e,t)+9},u=function(e,t){return s(e,t)},c=function(e,t){return a(e,t)-5},h=function(e,t){return s(e,t)-2},p=function(e,t){return s(e,t)-2+i.legend_item_tile_width},d=function(e,t){return a(e,t)+4},x=r.legend.selectAll("."+l.legendItem).data(e).enter().append("g").attr("class",function(e){return r.generateClass(l.legendItem,e)}).style("visibility",function(e){return r.isLegendToShow(e)?"visible":"hidden"}).style("cursor","pointer").on("click",function(e){i.legend_item_onclick?i.legend_item_onclick.call(r,e):r.d3.event.altKey?(r.api.hide(),r.api.show(e)):(r.api.toggle(e),r.isTargetToShow(e)?r.api.focus(e):r.api.revert())}).on("mouseover",function(e){i.legend_item_onmouseover?i.legend_item_onmouseover.call(r,e):(r.d3.select(this).classed(l.legendItemFocused,!0),!r.transiting&&r.isTargetToShow(e)&&r.api.focus(e))}).on("mouseout",function(e){i.legend_item_onmouseout?i.legend_item_onmouseout.call(r,e):(r.d3.select(this).classed(l.legendItemFocused,!1),r.api.revert())}),x.append("text").text(function(e){return v(i.data_names[e])?i.data_names[e]:e}).each(function(e,t){F(this,e,t)}).style("pointer-events","none").attr("x",r.isLegendRight||r.isLegendInset?o:-200).attr("y",r.isLegendRight||r.isLegendInset?-200:f),x.append("rect").attr("class",l.legendItemEvent).style("fill-opacity",0).attr("x",r.isLegendRight||r.isLegendInset?u:-200).attr("y",r.isLegendRight||r.isLegendInset?-200:c),x.append("line").attr("class",l.legendItemTile).style("stroke",r.color).style("pointer-events","none").attr("x1",r.isLegendRight||r.isLegendInset?h:-200).attr("y1",r.isLegendRight||r.isLegendInset?-200:d).attr("x2",r.isLegendRight||r.isLegendInset?p:-200).attr("y2",r.isLegendRight||r.isLegendInset?-200:d).attr("stroke-width",i.legend_item_tile_height),B=r.legend.select("."+l.legendBackground+" rect"),r.isLegendInset&&y>0&&B.size()===0&&(B=r.legend.insert("g","."+l.legendItem).attr("class",l.legendBackground).append("rect")),D=r.legend.selectAll("text").data(e).text(function(e){return v(i.data_names[e])?i.data_names[e]:e}).each(function(e,t){F(this,e,t)}),(M?D.transition():D).attr("x",o).attr("y",f),P=r.legend.selectAll("rect."+l.legendItemEvent).data(e),(M?P.transition():P).attr("width",function(e){return C[e]}).attr("height",function(e){return k[e]}).attr("x",u).attr("y",c),H=r.legend.selectAll("line."+l.legendItemTile).data(e),(M?H.transition():H).style("stroke",r.color).attr("x1",h).attr("y1",d).attr("x2",p).attr("y2",d),B&&(M?B.transition():B).attr("height",r.getLegendHeight()-12).attr("width",y*(O+1)+10),r.legend.selectAll("."+l.legendItem).classed(l.legendItemHidden,function(e){return!r.isTargetToShow(e)}),r.updateLegendItemWidth(y),r.updateLegendItemHeight(b),r.updateLegendStep(O),r.updateSizes(),r.updateScales(),r.updateSvgSize(),r.transformAll(_,n),r.legendHasRendered=!0},r.initTitle=function(){var e=this;e.title=e.svg.append("text").text(e.config.title_text).attr("class",e.CLASS.title)},r.redrawTitle=function(){var e=this;e.title.attr("x",e.xForTitle.bind(e)).attr("y",e.yForTitle.bind(e))},r.xForTitle=function(){var e=this,t=e.config,n=t.title_position||"left",r;return n.indexOf("right")>=0?r=e.currentWidth-e.getTextRect(e.title.node().textContent,e.CLASS.title,e.title.node()).width-t.title_padding.right:n.indexOf("center")>=0?r=(e.currentWidth-e.getTextRect(e.title.node().textContent,e.CLASS.title,e.title.node()).width)/2:r=t.title_padding.left,r},r.yForTitle=function(){var e=this;return e.config.title_padding.top+e.getTextRect(e.title.node().textContent,e.CLASS.title,e.title.node()).height},r.getTitlePadding=function(){var e=this;return e.yForTitle()+e.config.title_padding.bottom},o(s,f),f.prototype.init=function(){var t=this.owner,n=t.config,r=t.main;t.axes.x=r.append("g").attr("class",l.axis+" "+l.axisX).attr("clip-path",t.clipPathForXAxis).attr("transform",t.getTranslate("x")).style("visibility",n.axis_x_show?"visible":"hidden"),t.axes.x.append("text").attr("class",l.axisXLabel).attr("transform",n.axis_rotated?"rotate(-90)":"").style("text-anchor",this.textAnchorForXAxisLabel.bind(this)),t.axes.y=r.append("g").attr("class",l.axis+" "+l.axisY).attr("clip-path",n.axis_y_inner?"":t.clipPathForYAxis).attr("transform",t.getTranslate("y")).style("visibility",n.axis_y_show?"visible":"hidden"),t.axes.y.append("text").attr("class",l.axisYLabel).attr("transform",n.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForYAxisLabel.bind(this)),t.axes.y2=r.append("g").attr("class",l.axis+" "+l.axisY2).attr("transform",t.getTranslate("y2")).style("visibility",n.axis_y2_show?"visible":"hidden"),t.axes.y2.append("text").attr("class",l.axisY2Label).attr("transform",n.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForY2AxisLabel.bind(this))},f.prototype.getXAxis=function(t,n,r,i,s,o,u){var a=this.owner,f=a.config,l={isCategory:a.isCategorized(),withOuterTick:s,tickMultiline:f.axis_x_tick_multiline,tickWidth:f.axis_x_tick_width,tickTextRotate:u?0:f.axis_x_tick_rotate,withoutTransition:o},c=C(a.d3,l).scale(t).orient(n);return a.isTimeSeries()&&i&&typeof i!="function"&&(i=i.map(function(e){return a.parseDate(e)})),c.tickFormat(r).tickValues(i),a.isCategorized()&&(c.tickCentered(f.axis_x_tick_centered),b(f.axis_x_tick_culling)&&(f.axis_x_tick_culling=!1)),c},f.prototype.updateXAxisTickValues=function(t,n){var r=this.owner,i=r.config,s;if(i.axis_x_tick_fit||i.axis_x_tick_count)s=this.generateTickValues(r.mapTargetsToUniqueXs(t),i.axis_x_tick_count,r.isTimeSeries());return n?n.tickValues(s):(r.xAxis.tickValues(s),r.subXAxis.tickValues(s)),s},f.prototype.getYAxis=function(t,n,r,i,s,o,u){var a=this.owner,f=a.config,l={withOuterTick:s,withoutTransition:o,tickTextRotate:u?0:f.axis_y_tick_rotate},c=C(a.d3,l).scale(t).orient(n).tickFormat(r);return a.isTimeSeriesY()?c.ticks(a.d3.time[f.axis_y_tick_time_value],f.axis_y_tick_time_interval):c.tickValues(i),c},f.prototype.getId=function(t){var n=this.owner.config;return t in n.data_axes?n.data_axes[t]:"y"},f.prototype.getXAxisTickFormat=function(){var t=this.owner,n=t.config,r=t.isTimeSeries()?t.defaultAxisTimeFormat:t.isCategorized()?t.categoryName:function(e){return e<0?e.toFixed(0):e};return n.axis_x_tick_format&&(h(n.axis_x_tick_format)?r=n.axis_x_tick_format:t.isTimeSeries()&&(r=function(e){return e?t.axisTimeFormat(n.axis_x_tick_format)(e):""})),h(r)?function(e){return r.call(t,e)}:r},f.prototype.getTickValues=function(t,n){return t?t:n?n.tickValues():undefined},f.prototype.getXAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_x_tick_values,this.owner.xAxis)},f.prototype.getYAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y_tick_values,this.owner.yAxis)},f.prototype.getY2AxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y2_tick_values,this.owner.y2Axis)},f.prototype.getLabelOptionByAxisId=function(t){var n=this.owner,r=n.config,i;return t==="y"?i=r.axis_y_label:t==="y2"?i=r.axis_y2_label:t==="x"&&(i=r.axis_x_label),i},f.prototype.getLabelText=function(t){var n=this.getLabelOptionByAxisId(t);return p(n)?n:n?n.text:null},f.prototype.setLabelText=function(t,n){var r=this.owner,i=r.config,s=this.getLabelOptionByAxisId(t);p(s)?t==="y"?i.axis_y_label=n:t==="y2"?i.axis_y2_label=n:t==="x"&&(i.axis_x_label=n):s&&(s.text=n)},f.prototype.getLabelPosition=function(t,n){var r=this.getLabelOptionByAxisId(t),i=r&&typeof r=="object"&&r.position?r.position:n;return{isInner:i.indexOf("inner")>=0,isOuter:i.indexOf("outer")>=0,isLeft:i.indexOf("left")>=0,isCenter:i.indexOf("center")>=0,isRight:i.indexOf("right")>=0,isTop:i.indexOf("top")>=0,isMiddle:i.indexOf("middle")>=0,isBottom:i.indexOf("bottom")>=0}},f.prototype.getXAxisLabelPosition=function(){return this.getLabelPosition("x",this.owner.config.axis_rotated?"inner-top":"inner-right")},f.prototype.getYAxisLabelPosition=function(){return this.getLabelPosition("y",this.owner.config.axis_rotated?"inner-right":"inner-top")},f.prototype.getY2AxisLabelPosition=function(){return this.getLabelPosition("y2",this.owner.config.axis_rotated?"inner-right":"inner-top")},f.prototype.getLabelPositionById=function(t){return t==="y2"?this.getY2AxisLabelPosition():t==="y"?this.getYAxisLabelPosition():this.getXAxisLabelPosition()},f.prototype.textForXAxisLabel=function(){return this.getLabelText("x")},f.prototype.textForYAxisLabel=function(){return this.getLabelText("y")},f.prototype.textForY2AxisLabel=function(){return this.getLabelText("y2")},f.prototype.xForAxisLabel=function(t,n){var r=this.owner;return t?n.isLeft?0:n.isCenter?r.width/2:r.width:n.isBottom?-r.height:n.isMiddle?-r.height/2:0},f.prototype.dxForAxisLabel=function(t,n){return t?n.isLeft?"0.5em":n.isRight?"-0.5em":"0":n.isTop?"-0.5em":n.isBottom?"0.5em":"0"},f.prototype.textAnchorForAxisLabel=function(t,n){return t?n.isLeft?"start":n.isCenter?"middle":"end":n.isBottom?"start":n.isMiddle?"middle":"end"},f.prototype.xForXAxisLabel=function(){return this.xForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.xForYAxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.xForY2AxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.dxForXAxisLabel=function(){return this.dxForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.dxForYAxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.dxForY2AxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.dyForXAxisLabel=function(){var t=this.owner,n=t.config,r=this.getXAxisLabelPosition();return n.axis_rotated?r.isInner?"1.2em":-25-this.getMaxTickWidth("x"):r.isInner?"-0.5em":n.axis_x_height?n.axis_x_height-10:"3em"},f.prototype.dyForYAxisLabel=function(){var t=this.owner,n=this.getYAxisLabelPosition();return t.config.axis_rotated?n.isInner?"-0.5em":"3em":n.isInner?"1.2em":-10-(t.config.axis_y_inner?0:this.getMaxTickWidth("y")+10)},f.prototype.dyForY2AxisLabel=function(){var t=this.owner,n=this.getY2AxisLabelPosition();return t.config.axis_rotated?n.isInner?"1.2em":"-2.2em":n.isInner?"-0.5em":15+(t.config.axis_y2_inner?0:this.getMaxTickWidth("y2")+15)},f.prototype.textAnchorForXAxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(!t.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.textAnchorForYAxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(t.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.textAnchorForY2AxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(t.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.getMaxTickWidth=function(t,n){var r=this.owner,i=r.config,s=0,o,u,a,f,l;return n&&r.currentMaxTickWidths[t]?r.currentMaxTickWidths[t]:(r.svg&&(o=r.filterTargetsToShow(r.data.targets),t==="y"?(u=r.y.copy().domain(r.getYDomain(o,"y")),a=this.getYAxis(u,r.yOrient,i.axis_y_tick_format,r.yAxisTickValues,!1,!0,!0)):t==="y2"?(u=r.y2.copy().domain(r.getYDomain(o,"y2")),a=this.getYAxis(u,r.y2Orient,i.axis_y2_tick_format,r.y2AxisTickValues,!1,!0,!0)):(u=r.x.copy().domain(r.getXDomain(o)),a=this.getXAxis(u,r.xOrient,r.xAxisTickFormat,r.xAxisTickValues,!1,!0,!0),this.updateXAxisTickValues(o,a)),f=r.d3.select("body").append("div").classed("c3",!0),l=f.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),l.append("g").call(a).each(function(){r.d3.select(this).selectAll("text").each(function(){var e=this.getBoundingClientRect();s<e.width&&(s=e.width)}),f.remove()})),r.currentMaxTickWidths[t]=s<=0?r.currentMaxTickWidths[t]:s,r.currentMaxTickWidths[t])},f.prototype.updateLabels=function(t){var n=this.owner,r=n.main.select("."+l.axisX+" ."+l.axisXLabel),i=n.main.select("."+l.axisY+" ."+l.axisYLabel),s=n.main.select("."+l.axisY2+" ."+l.axisY2Label);(t?r.transition():r).attr("x",this.xForXAxisLabel.bind(this)).attr("dx",this.dxForXAxisLabel.bind(this)).attr("dy",this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this)),(t?i.transition():i).attr("x",this.xForYAxisLabel.bind(this)).attr("dx",this.dxForYAxisLabel.bind(this)).attr("dy",this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this)),(t?s.transition():s).attr("x",this.xForY2AxisLabel.bind(this)).attr("dx",this.dxForY2AxisLabel.bind(this)).attr("dy",this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this))},f.prototype.getPadding=function(t,n,r,i){var s=typeof t=="number"?t:t[n];return c(s)?t.unit==="ratio"?t[n]*i:this.convertPixelsToAxisPadding(s,i):r},f.prototype.convertPixelsToAxisPadding=function(t,n){var r=this.owner,i=r.config.axis_rotated?r.width:r.height;return n*(t/i)},f.prototype.generateTickValues=function(t,n,r){var i=t,s,o,u,a,f,l,c;if(n){s=h(n)?n():n;if(s===1)i=[t[0]];else if(s===2)i=[t[0],t[t.length-1]];else if(s>2){a=s-2,o=t[0],u=t[t.length-1],f=(u-o)/(a+1),i=[o];for(l=0;l<a;l++)c=+o+f*(l+1),i.push(r?new Date(c):c);i.push(u)}}return r||(i=i.sort(function(e,t){return e-t})),i},f.prototype.generateTransitions=function(t){var n=this.owner,r=n.axes;return{axisX:t?r.x.transition().duration(t):r.x,axisY:t?r.y.transition().duration(t):r.y,axisY2:t?r.y2.transition().duration(t):r.y2,axisSubX:t?r.subx.transition().duration(t):r.subx}},f.prototype.redraw=function(t,n){var r=this.owner;r.axes.x.style("opacity",n?0:1),r.axes.y.style("opacity",n?0:1),r.axes.y2.style("opacity",n?0:1),r.axes.subx.style("opacity",n?0:1),t.axisX.call(r.xAxis),t.axisY.call(r.yAxis),t.axisY2.call(r.y2Axis),t.axisSubX.call(r.subXAxis)},r.getClipPath=function(t){var n=e.navigator.appVersion.toLowerCase().indexOf("msie 9.")>=0;return"url("+(n?"":document.URL.split("#")[0])+"#"+t+")"},r.appendClip=function(e,t){return e.append("clipPath").attr("id",t).append("rect")},r.getAxisClipX=function(e){var t=Math.max(30,this.margin.left);return e?-(1+t):-(t-1)},r.getAxisClipY=function(e){return e?-20:-this.margin.top},r.getXAxisClipX=function(){var e=this;return e.getAxisClipX(!e.config.axis_rotated)},r.getXAxisClipY=function(){var e=this;return e.getAxisClipY(!e.config.axis_rotated)},r.getYAxisClipX=function(){var e=this;return e.config.axis_y_inner?-1:e.getAxisClipX(e.config.axis_rotated)},r.getYAxisClipY=function(){var e=this;return e.getAxisClipY(e.config.axis_rotated)},r.getAxisClipWidth=function(e){var t=this,n=Math.max(30,t.margin.left),r=Math.max(30,t.margin.right);return e?t.width+2+n+r:t.margin.left+20},r.getAxisClipHeight=function(e){return(e?this.margin.bottom:this.margin.top+this.height)+20},r.getXAxisClipWidth=function(){var e=this;return e.getAxisClipWidth(!e.config.axis_rotated)},r.getXAxisClipHeight=function(){var e=this;return e.getAxisClipHeight(!e.config.axis_rotated)},r.getYAxisClipWidth=function(){var e=this;return e.getAxisClipWidth(e.config.axis_rotated)+(e.config.axis_y_inner?20:0)},r.getYAxisClipHeight=function(){var e=this;return e.getAxisClipHeight(e.config.axis_rotated)},r.initPie=function(){var e=this,t=e.d3,n=e.config;e.pie=t.layout.pie().value(function(e){return e.values.reduce(function(e,t){return e+t.value},0)}),n.data_order||e.pie.sort(null)},r.updateRadius=function(){var e=this,t=e.config,n=t.gauge_width||t.donut_width;e.radiusExpanded=Math.min(e.arcWidth,e.arcHeight)/2,e.radius=e.radiusExpanded*.95,e.innerRadiusRatio=n?(e.radius-n)/e.radius:.6,e.innerRadius=e.hasType("donut")||e.hasType("gauge")?e.radius*e.innerRadiusRatio:0},r.updateArc=function(){var e=this;e.svgArc=e.getSvgArc(),e.svgArcExpanded=e.getSvgArcExpanded(),e.svgArcExpandedSub=e.getSvgArcExpanded(.98)},r.updateAngle=function(e){var t=this,n=t.config,r=!1,i=0,s,o,u,a;return n?(t.pie(t.filterTargetsToShow(t.data.targets)).forEach(function(t){!r&&t.data.id===e.data.id&&(r=!0,e=t,e.index=i),i++}),isNaN(e.startAngle)&&(e.startAngle=0),isNaN(e.endAngle)&&(e.endAngle=e.startAngle),t.isGaugeType(e.data)&&(s=n.gauge_min,o=n.gauge_max,u=Math.PI*(n.gauge_fullCircle?2:1)/(o-s),a=e.value<s?0:e.value<o?e.value-s:o-s,e.startAngle=n.gauge_startingAngle,e.endAngle=e.startAngle+u*a),r?e:null):null},r.getSvgArc=function(){var e=this,t=e.d3.svg.arc().outerRadius(e.radius).innerRadius(e.innerRadius),n=function(n,r){var i;return r?t(n):(i=e.updateAngle(n),i?t(i):"M 0 0")};return n.centroid=t.centroid,n},r.getSvgArcExpanded=function(e){var t=this,n=t.d3.svg.arc().outerRadius(t.radiusExpanded*(e?e:1)).innerRadius(t.innerRadius);return function(e){var r=t.updateAngle(e);return r?n(r):"M 0 0"}},r.getArc=function(e,t,n){return n||this.isArcType(e.data)?this.svgArc(e,t):"M 0 0"},r.transformForArcLabel=function(e){var t=this,n=t.config,r=t.updateAngle(e),i,s,o,u,a,f="";return r&&!t.hasType("gauge")&&(i=this.svgArc.centroid(r),s=isNaN(i[0])?0:i[0],o=isNaN(i[1])?0:i[1],u=Math.sqrt(s*s+o*o),t.hasType("donut")&&n.donut_label_ratio?a=h(n.donut_label_ratio)?n.donut_label_ratio(e,t.radius,u):n.donut_label_ratio:t.hasType("pie")&&n.pie_label_ratio?a=h(n.pie_label_ratio)?n.pie_label_ratio(e,t.radius,u):n.pie_label_ratio:a=t.radius&&u?(36/t.radius>.375?1.175-36/t.radius:.8)*t.radius/u:0,f="translate("+s*a+","+o*a+")"),f},r.getArcRatio=function(e){var t=this,n=t.config,r=Math.PI*(t.hasType("gauge")&&!n.gauge_fullCircle?1:2);return e?(e.endAngle-e.startAngle)/r:null},r.convertToArcData=function(e){return this.addName({id:e.data.id,value:e.value,ratio:this.getArcRatio(e),index:e.index})},r.textForArcLabel=function(e){var t=this,n,r,i,s,o;return t.shouldShowArcLabel()?(n=t.updateAngle(e),r=n?n.value:null,i=t.getArcRatio(n),s=e.data.id,!t.hasType("gauge")&&!t.meetsArcLabelThreshold(i)?"":(o=t.getArcLabelFormat(),o?o(r,i,s):t.defaultArcValueFormat(r,i))):""},r.expandArc=function(t){var n=this,r;if(n.transiting){r=e.setInterval(function(){n.transiting||(e.clearInterval(r),n.legend.selectAll(".c3-legend-item-focused").size()>0&&n.expandArc(t))},10);return}t=n.mapToTargetIds(t),n.svg.selectAll(n.selectorTargets(t,"."+l.chartArc)).each(function(e){if(!n.shouldExpand(e.data.id))return;n.d3.select(this).selectAll("path").transition().duration(n.expandDuration(e.data.id)).attr("d",n.svgArcExpanded).transition().duration(n.expandDuration(e.data.id)*2).attr("d",n.svgArcExpandedSub).each(function(e){n.isDonutType(e.data)})})},r.unexpandArc=function(e){var t=this;if(t.transiting)return;e=t.mapToTargetIds(e),t.svg.selectAll(t.selectorTargets(e,"."+l.chartArc)).selectAll("path").transition().duration(function(e){return t.expandDuration(e.data.id)}).attr("d",t.svgArc),t.svg.selectAll("."+l.arc).style("opacity",1)},r.expandDuration=function(e){var t=this,n=t.config;return t.isDonutType(e)?n.donut_expand_duration:t.isGaugeType(e)?n.gauge_expand_duration:t.isPieType(e)?n.pie_expand_duration:50},r.shouldExpand=function(e){var t=this,n=t.config;return t.isDonutType(e)&&n.donut_expand||t.isGaugeType(e)&&n.gauge_expand||t.isPieType(e)&&n.pie_expand},r.shouldShowArcLabel=function(){var e=this,t=e.config,n=!0;return e.hasType("donut")?n=t.donut_label_show:e.hasType("pie")&&(n=t.pie_label_show),n},r.meetsArcLabelThreshold=function(e){var t=this,n=t.config,r=t.hasType("donut")?n.donut_label_threshold:n.pie_label_threshold;return e>=r},r.getArcLabelFormat=function(){var e=this,t=e.config,n=t.pie_label_format;return e.hasType("gauge")?n=t.gauge_label_format:e.hasType("donut")&&(n=t.donut_label_format),n},r.getArcTitle=function(){var e=this;return e.hasType("donut")?e.config.donut_title:""},r.updateTargetsForArc=function(e){var t=this,n=t.main,r,i,s=t.classChartArc.bind(t),o=t.classArcs.bind(t),u=t.classFocus.bind(t);r=n.select("."+l.chartArcs).selectAll("."+l.chartArc).data(t.pie(e)).attr("class",function(e){return s(e)+u(e.data)}),i=r.enter().append("g").attr("class",s),i.append("g").attr("class",o),i.append("text").attr("dy",t.hasType("gauge")?"-.1em":".35em").style("opacity",0).style("text-anchor","middle").style("pointer-events","none")},r.initArc=function(){var e=this;e.arcs=e.main.select("."+l.chart).append("g").attr("class",l.chartArcs).attr("transform",e.getTranslate("arc")),e.arcs.append("text").attr("class",l.chartArcsTitle).style("text-anchor","middle").text(e.getArcTitle())},r.redrawArc=function(e,t,n){var r=this,i=r.d3,s=r.config,o=r.main,u;u=o.selectAll("."+l.arcs).selectAll("."+l.arc).data(r.arcData.bind(r)),u.enter().append("path").attr("class",r.classArc.bind(r)).style("fill",function(e){return r.color(e.data)}).style("cursor",function(e){return s.interaction_enabled&&s.data_selection_isselectable(e)?"pointer":null}).style("opacity",0).each(function(e){r.isGaugeType(e.data)&&(e.startAngle=e.endAngle=s.gauge_startingAngle),this._current=e}),u.attr("transform",function(e){return!r.isGaugeType(e.data)&&n?"scale(0)":""}).style("opacity",function(e){return e===this._current?0:1}).on("mouseover",s.interaction_enabled?function(e){var t,n;if(r.transiting)return;t=r.updateAngle(e),t&&(n=r.convertToArcData(t),r.expandArc(t.data.id),r.api.focus(t.data.id),r.toggleFocusLegend(t.data.id,!0),r.config.data_onmouseover(n,this))}:null).on("mousemove",s.interaction_enabled?function(e){var t=r.updateAngle(e),n,i;t&&(n=r.convertToArcData(t),i=[n],r.showTooltip(i,this))}:null).on("mouseout",s.interaction_enabled?function(e){var t,n;if(r.transiting)return;t=r.updateAngle(e),t&&(n=r.convertToArcData(t),r.unexpandArc(t.data.id),r.api.revert(),r.revertLegend(),r.hideTooltip(),r.config.data_onmouseout(n,this))}:null).on("click",s.interaction_enabled?function(e,t){var n=r.updateAngle(e),i;n&&(i=r.convertToArcData(n),r.toggleShape&&r.toggleShape(this,i,t),r.config.data_onclick.call(r.api,i,this))}:null).each(function(){r.transiting=!0}).transition().duration(e).attrTween("d",function(e){var t=r.updateAngle(e),n;return t?(isNaN(this._current.startAngle)&&(this._current.startAngle=0),isNaN(this._current.endAngle)&&(this._current.endAngle=this._current.startAngle),n=i.interpolate(this._current,t),this._current=n(0),function(t){var i=n(t);return i.data=e.data,r.getArc(i,!0)}):function(){return"M 0 0"}}).attr("transform",n?"scale(1)":"").style("fill",function(e){return r.levelColor?r.levelColor(e.data.values[0].value):r.color(e.data.id)}).style("opacity",1).call(r.endall,function(){r.transiting=!1}),u.exit().transition().duration(t).style("opacity",0).remove(),o.selectAll("."+l.chartArc).select("text").style("opacity",0).attr("class",function(e){return r.isGaugeType(e.data)?l.gaugeValue:""}).text(r.textForArcLabel.bind(r)).attr("transform",r.transformForArcLabel.bind(r)).style("font-size",function(e){return r.isGaugeType(e.data)?Math.round(r.radius/5)+"px":""}).transition().duration(e).style("opacity",function(e){return r.isTargetToShow(e.data.id)&&r.isArcType(e.data)?1:0}),o.select("."+l.chartArcsTitle).style("opacity",r.hasType("donut")||r.hasType("gauge")?1:0),r.hasType("gauge")&&(r.arcs.select("."+l.chartArcsBackground).attr("d",function(){var e={data:[{value:s.gauge_max}],startAngle:s.gauge_startingAngle,endAngle:-1*s.gauge_startingAngle};return r.getArc(e,!0,!0)}),r.arcs.select("."+l.chartArcsGaugeUnit).attr("dy",".75em").text(s.gauge_label_show?s.gauge_units:""),r.arcs.select("."+l.chartArcsGaugeMin).attr("dx",-1*(r.innerRadius+(r.radius-r.innerRadius)/(s.gauge_fullCircle?1:2))+"px").attr("dy","1.2em").text(s.gauge_label_show?s.gauge_min:""),r.arcs.select("."+l.chartArcsGaugeMax).attr("dx",r.innerRadius+(r.radius-r.innerRadius)/(s.gauge_fullCircle?1:2)+"px").attr("dy","1.2em").text(s.gauge_label_show?s.gauge_max:""))},r.initGauge=function(){var e=this.arcs;this.hasType("gauge")&&(e.append("path").attr("class",l.chartArcsBackground),e.append("text").attr("class",l.chartArcsGaugeUnit).style("text-anchor","middle").style("pointer-events","none"),e.append("text").attr("class",l.chartArcsGaugeMin).style("text-anchor","middle").style("pointer-events","none"),e.append("text").attr("class",l.chartArcsGaugeMax).style("text-anchor","middle").style("pointer-events","none"))},r.getGaugeLabelHeight=function(){return this.config.gauge_label_show?20:0},r.initRegion=function(){var e=this;e.region=e.main.append("g").attr("clip-path",e.clipPath).attr("class",l.regions)},r.updateRegion=function(e){var t=this,n=t.config;t.region.style("visibility",t.hasArcType()?"hidden":"visible"),t.mainRegion=t.main.select("."+l.regions).selectAll("."+l.region).data(n.regions),t.mainRegion.enter().append("g").append("rect").style("fill-opacity",0),t.mainRegion.attr("class",t.classRegion.bind(t)),t.mainRegion.exit().transition().duration(e).style("opacity",0).remove()},r.redrawRegion=function(e){var t=this,n=t.mainRegion.selectAll("rect").each(function(){var e=t.d3.select(this.parentNode).datum();t.d3.select(this).datum(e)}),r=t.regionX.bind(t),i=t.regionY.bind(t),s=t.regionWidth.bind(t),o=t.regionHeight.bind(t);return[(e?n.transition():n).attr("x",r).attr("y",i).attr("width",s).attr("height",o).style("fill-opacity",function(e){return c(e.opacity)?e.opacity:.1})]},r.regionX=function(e){var t=this,n=t.config,r,i=e.axis==="y"?t.y:t.y2;return e.axis==="y"||e.axis==="y2"?r=n.axis_rotated?"start"in e?i(e.start):0:0:r=n.axis_rotated?0:"start"in e?t.x(t.isTimeSeries()?t.parseDate(e.start):e.start):0,r},r.regionY=function(e){var t=this,n=t.config,r,i=e.axis==="y"?t.y:t.y2;return e.axis==="y"||e.axis==="y2"?r=n.axis_rotated?0:"end"in e?i(e.end):0:r=n.axis_rotated?"start"in e?t.x(t.isTimeSeries()?t.parseDate(e.start):e.start):0:0,r},r.regionWidth=function(e){var t=this,n=t.config,r=t.regionX(e),i,s=e.axis==="y"?t.y:t.y2;return e.axis==="y"||e.axis==="y2"?i=n.axis_rotated?"end"in e?s(e.end):t.width:t.width:i=n.axis_rotated?t.width:"end"in e?t.x(t.isTimeSeries()?t.parseDate(e.end):e.end):t.width,i<r?0:i-r},r.regionHeight=function(e){var t=this,n=t.config,r=this.regionY(e),i,s=e.axis==="y"?t.y:t.y2;return e.axis==="y"||e.axis==="y2"?i=n.axis_rotated?t.height:"start"in e?s(e.start):t.height:i=n.axis_rotated?"end"in e?t.x(t.isTimeSeries()?t.parseDate(e.end):e.end):t.height:t.height,i<r?0:i-r},r.isRegionOnX=function(e){return!e.axis||e.axis==="x"},r.drag=function(e){var t=this,n=t.config,r=t.main,i=t.d3,s,o,u,a,f,c,h,p;if(t.hasArcType())return;if(!n.data_selection_enabled)return;if(n.zoom_enabled&&!t.zoom.altDomain)return;if(!n.data_selection_multiple)return;s=t.dragStart[0],o=t.dragStart[1],u=e[0],a=e[1],f=Math.min(s,u),c=Math.max(s,u),h=n.data_selection_grouped?t.margin.top:Math.min(o,a),p=n.data_selection_grouped?t.height:Math.max(o,a),r.select("."+l.dragarea).attr("x",f).attr("y",h).attr("width",c-f).attr("height",p-h),r.selectAll("."+l.shapes).selectAll("."+l.shape).filter(function(e){return n.data_selection_isselectable(e)}).each(function(e,n){var r=i.select(this),s=r.classed(l.SELECTED),o=r.classed(l.INCLUDED),u,a,d,v,m,g=!1,y;if(r.classed(l.circle))u=r.attr("cx")*1,a=r.attr("cy")*1,m=t.togglePoint,g=f<u&&u<c&&h<a&&a<p;else{if(!r.classed(l.bar))return;y=T(this),u=y.x,a=y.y,d=y.width,v=y.height,m=t.togglePath,g=!(c<u||u+d<f)&&!(p<a||a+v<h)}g^o&&(r.classed(l.INCLUDED,!o),r.classed(l.SELECTED,!s),m.call(t,!s,r,e,n))})},r.dragstart=function(e){var t=this,n=t.config;if(t.hasArcType())return;if(!n.data_selection_enabled)return;t.dragStart=e,t.main.select("."+l.chart).append("rect").attr("class",l.dragarea).style("opacity",.1),t.dragging=!0},r.dragend=function(){var e=this,t=e.config;if(e.hasArcType())return;if(!t.data_selection_enabled)return;e.main.select("."+l.dragarea).transition().duration(100).style("opacity",0).remove(),e.main.selectAll("."+l.shape).classed(l.INCLUDED,!1),e.dragging=!1},r.selectPoint=function(e,t,n){var r=this,i=r.config,s=(i.axis_rotated?r.circleY:r.circleX).bind(r),o=(i.axis_rotated?r.circleX:r.circleY).bind(r),u=r.pointSelectR.bind(r);i.data_onselected.call(r.api,t,e.node()),r.main.select("."+l.selectedCircles+r.getTargetSelectorSuffix(t.id)).selectAll("."+l.selectedCircle+"-"+n).data([t]).enter().append("circle").attr("class",function(){return r.generateClass(l.selectedCircle,n)}).attr("cx",s).attr("cy",o).attr("stroke",function(){return r.color(t)}).attr("r",function(e){return r.pointSelectR(e)*1.4}).transition().duration(100).attr("r",u)},r.unselectPoint=function(e,t,n){var r=this;r.config.data_onunselected.call(r.api,t,e.node()),r.main.select("."+l.selectedCircles+r.getTargetSelectorSuffix(t.id)).selectAll("."+l.selectedCircle+"-"+n).transition().duration(100).attr("r",0).remove()},r.togglePoint=function(e,t,n,r){e?this.selectPoint(t,n,r):this.unselectPoint(t,n,r)},r.selectPath=function(e,t){var n=this;n.config.data_onselected.call(n,t,e.node()),n.config.interaction_brighten&&e.transition().duration(100).style("fill",function(){return n.d3.rgb(n.color(t)).brighter(.75)})},r.unselectPath=function(e,t){var n=this;n.config.data_onunselected.call(n,t,e.node()),n.config.interaction_brighten&&e.transition().duration(100).style("fill",function(){return n.color(t)})},r.togglePath=function(e,t,n,r){e?this.selectPath(t,n,r):this.unselectPath(t,n,r)},r.getToggle=function(e,t){var n=this,r;return e.nodeName==="circle"?n.isStepType(t)?r=function(){}:r=n.togglePoint:e.nodeName==="path"&&(r=n.togglePath),r},r.toggleShape=function(e,t,n){var r=this,i=r.d3,s=r.config,o=i.select(e),u=o.classed(l.SELECTED),a=r.getToggle(e,t).bind(r);s.data_selection_enabled&&s.data_selection_isselectable(t)&&(s.data_selection_multiple||r.main.selectAll("."+l.shapes+(s.data_selection_grouped?r.getTargetSelectorSuffix(t.id):"")).selectAll("."+l.shape).each(function(e,t){var n=i.select(this);n.classed(l.SELECTED)&&a(!1,n.classed(l.SELECTED,!1),e,t)}),o.classed(l.SELECTED,!u),a(!u,o,t,n))},r.initBrush=function(){var e=this,t=e.d3;e.brush=t.svg.brush().on("brush",function(){e.redrawForBrush()}),e.brush.update=function(){return e.context&&e.context.select("."+l.brush).call(this),this},e.brush.scale=function(t){return e.config.axis_rotated?this.y(t):this.x(t)}},r.initSubchart=function(){var e=this,t=e.config,n=e.context=e.svg.append("g").attr("transform",e.getTranslate("context")),r=t.subchart_show?"visible":"hidden";n.style("visibility",r),n.append("g").attr("clip-path",e.clipPathForSubchart).attr("class",l.chart),n.select("."+l.chart).append("g").attr("class",l.chartBars),n.select("."+l.chart).append("g").attr("class",l.chartLines),n.append("g").attr("clip-path",e.clipPath).attr("class",l.brush).call(e.brush),e.axes.subx=n.append("g").attr("class",l.axisX).attr("transform",e.getTranslate("subx")).attr("clip-path",t.axis_rotated?"":e.clipPathForXAxis).style("visibility",t.subchart_axis_x_show?r:"hidden")},r.updateTargetsForSubchart=function(e){var t=this,n=t.context,r=t.config,i,s,o,u,a=t.classChartBar.bind(t),f=t.classBars.bind(t),c=t.classChartLine.bind(t),h=t.classLines.bind(t),p=t.classAreas.bind(t);r.subchart_show&&(u=n.select("."+l.chartBars).selectAll("."+l.chartBar).data(e).attr("class",a),o=u.enter().append("g").style("opacity",0).attr("class",a),o.append("g").attr("class",f),s=n.select("."+l.chartLines).selectAll("."+l.chartLine).data(e).attr("class",c),i=s.enter().append("g").style("opacity",0).attr("class",c),i.append("g").attr("class",h),i.append("g").attr("class",p),n.selectAll("."+l.brush+" rect").attr(r.axis_rotated?"width":"height",r.axis_rotated?t.width2:t.height2))},r.updateBarForSubchart=function(e){var t=this;t.contextBar=t.context.selectAll("."+l.bars).selectAll("."+l.bar).data(t.barData.bind(t)),t.contextBar.enter().append("path").attr("class",t.classBar.bind(t)).style("stroke","none").style("fill",t.color),t.contextBar.style("opacity",t.initialOpacity.bind(t)),t.contextBar.exit().transition().duration(e).style("opacity",0).remove()},r.redrawBarForSubchart=function(e,t,n){(t?this.contextBar.transition(Math.random().toString()).duration(n):this.contextBar).attr("d",e).style("opacity",1)},r.updateLineForSubchart=function(e){var t=this;t.contextLine=t.context.selectAll("."+l.lines).selectAll("."+l.line).data(t.lineData.bind(t)),t.contextLine.enter().append("path").attr("class",t.classLine.bind(t)).style("stroke",t.color),t.contextLine.style("opacity",t.initialOpacity.bind(t)),t.contextLine.exit().transition().duration(e).style("opacity",0).remove()},r.redrawLineForSubchart=function(e,t,n){(t?this.contextLine.transition(Math.random().toString()).duration(n):this.contextLine).attr("d",e).style("opacity",1)},r.updateAreaForSubchart=function(e){var t=this,n=t.d3;t.contextArea=t.context.selectAll("."+l.areas).selectAll("."+l.area).data(t.lineData.bind(t)),t.contextArea.enter().append("path").attr("class",t.classArea.bind(t)).style("fill",t.color).style("opacity",function(){return t.orgAreaOpacity=+n.select(this).style("opacity"),0}),t.contextArea.style("opacity",0),t.contextArea.exit().transition().duration(e).style("opacity",0).remove()},r.redrawAreaForSubchart=function(e,t,n){(t?this.contextArea.transition(Math.random().toString()).duration(n):this.contextArea).attr("d",e).style("fill",this.color).style("opacity",this.orgAreaOpacity)},r.redrawSubchart=function(e,t,n,r,i,s,o){var u=this,a=u.d3,f=u.config,l,c,h;u.context.style("visibility",f.subchart_show?"visible":"hidden"),f.subchart_show&&(a.event&&a.event.type==="zoom"&&u.brush.extent(u.x.orgDomain()).update(),e&&(u.brush.empty()||u.brush.extent(u.x.orgDomain()).update(),l=u.generateDrawArea(i,!0),c=u.generateDrawBar(s,!0),h=u.generateDrawLine(o,!0),u.updateBarForSubchart(n),u.updateLineForSubchart(n),u.updateAreaForSubchart(n),u.redrawBarForSubchart(c,n,n),u.redrawLineForSubchart(h,n,n),u.redrawAreaForSubchart(l,n,n)))},r.redrawForBrush=function(){var e=this,t=e.x;e.redraw({withTransition:!1,withY:e.config.zoom_rescale,withSubchart:!1,withUpdateXDomain:!0,withDimension:!1}),e.config.subchart_onbrush.call(e.api,t.orgDomain())},r.transformContext=function(e,t){var n=this,r;t&&t.axisSubX?r=t.axisSubX:(r=n.context.select("."+l.axisX),e&&(r=r.transition())),n.context.attr("transform",n.getTranslate("context")),r.attr("transform",n.getTranslate("subx"))},r.getDefaultExtent=function(){var e=this,t=e.config,n=h(t.axis_x_extent)?t.axis_x_extent(e.getXDomain(e.data.targets)):t.axis_x_extent;return e.isTimeSeries()&&(n=[e.parseDate(n[0]),e.parseDate(n[1])]),n},r.initZoom=function(){var e=this,t=e.d3,n=e.config,r;e.zoom=t.behavior.zoom().on("zoomstart",function(){r=t.event.sourceEvent,e.zoom.altDomain=t.event.sourceEvent.altKey?e.x.orgDomain():null,n.zoom_onzoomstart.call(e.api,t.event.sourceEvent)}).on("zoom",function(){e.redrawForZoom.call(e)}).on("zoomend",function(){var i=t.event.sourceEvent;if(i&&r.clientX===i.clientX&&r.clientY===i.clientY)return;e.redrawEventRect(),e.updateZoom(),n.zoom_onzoomend.call(e.api,e.x.orgDomain())}),e.zoom.scale=function(e){return n.axis_rotated?this.y(e):this.x(e)},e.zoom.orgScaleExtent=function(){var t=n.zoom_extent?n.zoom_extent:[1,10];return[t[0],Math.max(e.getMaxDataCount()/t[1],t[1])]},e.zoom.updateScaleExtent=function(){var t=y(e.x.orgDomain())/y(e.getZoomDomain()),n=this.orgScaleExtent();return this.scaleExtent([n[0]*t,n[1]*t]),this}},r.getZoomDomain=function(){var e=this,t=e.config,n=e.d3,r=n.min([e.orgXDomain[0],t.zoom_x_min]),i=n.max([e.orgXDomain[1],t.zoom_x_max]);return[r,i]},r.updateZoom=function(){var e=this,t=e.config.zoom_enabled?e.zoom:function(){};e.main.select("."+l.zoomRect).call(t).on("dblclick.zoom",null),e.main.selectAll("."+l.eventRect).call(t).on("dblclick.zoom",null)},r.redrawForZoom=function(){var e=this,t=e.d3,n=e.config,r=e.zoom,i=e.x;if(!n.zoom_enabled)return;if(e.filterTargetsToShow(e.data.targets).length===0)return;if(t.event.sourceEvent.type==="mousemove"&&r.altDomain){i.domain(r.altDomain),r.scale(i).updateScaleExtent();return}e.isCategorized()&&i.orgDomain()[0]===e.orgXDomain[0]&&i.domain([e.orgXDomain[0]-1e-10,i.orgDomain()[1]]),e.redraw({withTransition:!1,withY:n.zoom_rescale,withSubchart:!1,withEventRect:!1,withDimension:!1}),t.event.sourceEvent.type==="mousemove"&&(e.cancelClick=!0),n.zoom_onzoom.call(e.api,i.orgDomain())},r.generateColor=function(){var e=this,t=e.config,n=e.d3,r=t.data_colors,i=w(t.color_pattern)?t.color_pattern:n.scale.category10().range(),s=t.data_color,o=[];return function(e){var t=e.id||e.data&&e.data.id||e,n;return r[t]instanceof Function?n=r[t](e):r[t]?n=r[t]:(o.indexOf(t)<0&&o.push(t),n=i[o.indexOf(t)%i.length],r[t]=n),s instanceof Function?s(n,e):n}},r.generateLevelColor=function(){var e=this,t=e.config,n=t.color_pattern,r=t.color_threshold,i=r.unit==="value",s=r.values&&r.values.length?r.values:[],o=r.max||100;return w(t.color_threshold)?function(e){var t,r,u=n[n.length-1];for(t=0;t<s.length;t++){r=i?e:e*100/o;if(r<s[t]){u=n[t];break}}return u}:null},r.getYFormat=function(e){var t=this,n=e&&!t.hasType("gauge")?t.defaultArcValueFormat:t.yFormat,r=e&&!t.hasType("gauge")?t.defaultArcValueFormat:t.y2Format;return function(e,i,s){var o=t.axis.getId(s)==="y2"?r:n;return o.call(t,e,i)}},r.yFormat=function(e){var t=this,n=t.config,r=n.axis_y_tick_format?n.axis_y_tick_format:t.defaultValueFormat;return r(e)},r.y2Format=function(e){var t=this,n=t.config,r=n.axis_y2_tick_format?n.axis_y2_tick_format:t.defaultValueFormat;return r(e)},r.defaultValueFormat=function(e){return c(e)?+e:""},r.defaultArcValueFormat=function(e,t){return(t*100).toFixed(1)+"%"},r.dataLabelFormat=function(e){var t=this,n=t.config.data_labels,r,i=function(e){return c(e)?+e:""};return typeof n.format=="function"?r=n.format:typeof n.format=="object"?n.format[e]?r=n.format[e]===!0?i:n.format[e]:r=function(){return""}:r=i,r},r.hasCaches=function(e){for(var t=0;t<e.length;t++)if(!(e[t]in this.cache))return!1;return!0},r.addCache=function(e,t){this.cache[e]=this.cloneTarget(t)},r.getCaches=function(e){var t=[],n;for(n=0;n<e.length;n++)e[n]in this.cache&&t.push(this.cloneTarget(this.cache[e[n]]));return t};var l=r.CLASS={target:"c3-target",chart:"c3-chart",chartLine:"c3-chart-line",chartLines:"c3-chart-lines",chartBar:"c3-chart-bar",chartBars:"c3-chart-bars",chartText:"c3-chart-text",chartTexts:"c3-chart-texts",chartArc:"c3-chart-arc",chartArcs:"c3-chart-arcs",chartArcsTitle:"c3-chart-arcs-title",chartArcsBackground:"c3-chart-arcs-background",chartArcsGaugeUnit:"c3-chart-arcs-gauge-unit",chartArcsGaugeMax:"c3-chart-arcs-gauge-max",chartArcsGaugeMin:"c3-chart-arcs-gauge-min",selectedCircle:"c3-selected-circle",selectedCircles:"c3-selected-circles",eventRect:"c3-event-rect",eventRects:"c3-event-rects",eventRectsSingle:"c3-event-rects-single",eventRectsMultiple:"c3-event-rects-multiple",zoomRect:"c3-zoom-rect",brush:"c3-brush",focused:"c3-focused",defocused:"c3-defocused",region:"c3-region",regions:"c3-regions",title:"c3-title",tooltipContainer:"c3-tooltip-container",tooltip:"c3-tooltip",tooltipName:"c3-tooltip-name",shape:"c3-shape",shapes:"c3-shapes",line:"c3-line",lines:"c3-lines",bar:"c3-bar",bars:"c3-bars",circle:"c3-circle",circles:"c3-circles",arc:"c3-arc",arcs:"c3-arcs",area:"c3-area",areas:"c3-areas",empty:"c3-empty",text:"c3-text",texts:"c3-texts",gaugeValue:"c3-gauge-value",grid:"c3-grid",gridLines:"c3-grid-lines",xgrid:"c3-xgrid",xgrids:"c3-xgrids",xgridLine:"c3-xgrid-line",xgridLines:"c3-xgrid-lines",xgridFocus:"c3-xgrid-focus",ygrid:"c3-ygrid",ygrids:"c3-ygrids",ygridLine:"c3-ygrid-line",ygridLines:"c3-ygrid-lines",axis:"c3-axis",axisX:"c3-axis-x",axisXLabel:"c3-axis-x-label",axisY:"c3-axis-y",axisYLabel:"c3-axis-y-label",axisY2:"c3-axis-y2",axisY2Label:"c3-axis-y2-label",legendBackground:"c3-legend-background",legendItem:"c3-legend-item",legendItemEvent:"c3-legend-item-event",legendItemTile:"c3-legend-item-tile",legendItemHidden:"c3-legend-item-hidden",legendItemFocused:"c3-legend-item-focused",dragarea:"c3-dragarea",EXPANDED:"_expanded_",SELECTED:"_selected_",INCLUDED:"_included_"};r.generateClass=function(e,t){return" "+e+" "+e+this.getTargetSelectorSuffix(t)},r.classText=function(e){return this.generateClass(l.text,e.index)},r.classTexts=function(e){return this.generateClass(l.texts,e.id)},r.classShape=function(e){return this.generateClass(l.shape,e.index)},r.classShapes=function(e){return this.generateClass(l.shapes,e.id)},r.classLine=function(e){return this.classShape(e)+this.generateClass(l.line,e.id)},r.classLines=function(e){return this.classShapes(e)+this.generateClass(l.lines,e.id)},r.classCircle=function(e){return this.classShape(e)+this.generateClass(l.circle,e.index)},r.classCircles=function(e){return this.classShapes(e)+this.generateClass(l.circles,e.id)},r.classBar=function(e){return this.classShape(e)+this.generateClass(l.bar,e.index)},r.classBars=function(e){return this.classShapes(e)+this.generateClass(l.bars,e.id)},r.classArc=function(e){return this.classShape(e.data)+this.generateClass(l.arc,e.data.id)},r.classArcs=function(e){return this.classShapes(e.data)+this.generateClass(l.arcs,e.data.id)},r.classArea=function(e){return this.classShape(e)+this.generateClass(l.area,e.id)},r.classAreas=function(e){return this.classShapes(e)+this.generateClass(l.areas,e.id)},r.classRegion=function(e,t){return this.generateClass(l.region,t)+" "+("class"in e?e["class"]:"")},r.classEvent=function(e){return this.generateClass(l.eventRect,e.index)},r.classTarget=function(e){var t=this,n=t.config.data_classes[e],r="";return n&&(r=" "+l.target+"-"+n),t.generateClass(l.target,e)+r},r.classFocus=function(e){return this.classFocused(e)+this.classDefocused(e)},r.classFocused=function(e){return" "+(this.focusedTargetIds.indexOf(e.id)>=0?l.focused:"")},r.classDefocused=function(e){return" "+(this.defocusedTargetIds.indexOf(e.id)>=0?l.defocused:"")},r.classChartText=function(e){return l.chartText+this.classTarget(e.id)},r.classChartLine=function(e){return l.chartLine+this.classTarget(e.id)},r.classChartBar=function(e){return l.chartBar+this.classTarget(e.id)},r.classChartArc=function(e){return l.chartArc+this.classTarget(e.data.id)},r.getTargetSelectorSuffix=function(e){return e||e===0?("-"+e).replace(/[\s?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\]/g,"-"):""},r.selectorTarget=function(e,t){return(t||"")+"."+l.target+this.getTargetSelectorSuffix(e)},r.selectorTargets=function(e,t){var n=this;return e=e||[],e.length?e.map(function(e){return n.selectorTarget(e,t)}):null},r.selectorLegend=function(e){return"."+l.legendItem+this.getTargetSelectorSuffix(e)},r.selectorLegends=function(e){var t=this;return e&&e.length?e.map(function(e){return t.selectorLegend(e)}):null};var c=r.isValue=function(e){return e||e===0},h=r.isFunction=function(e){return typeof e=="function"},p=r.isString=function(e){return typeof e=="string"},d=r.isUndefined=function(e){return typeof e=="undefined"},v=r.isDefined=function(e){return typeof e!="undefined"},m=r.ceil10=function(e){return Math.ceil(e/10)*10},g=r.asHalfPixel=function(e){return Math.ceil(e)+.5},y=r.diffDomain=function(e){return e[1]-e[0]},b=r.isEmpty=function(e){return typeof e=="undefined"||e===null||p(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0},w=r.notEmpty=function(e){return!r.isEmpty(e)},E=r.getOption=function(e,t,n){return v(e[t])?e[t]:n},S=r.hasValue=function(e,t){var n=!1;return Object.keys(e).forEach(function(r){e[r]===t&&(n=!0)}),n},x=r.sanitise=function(e){return typeof e=="string"?e.replace(/</g,"<").replace(/>/g,">"):e},T=r.getPathBox=function(e){var t=e.getBoundingClientRect(),n=[e.pathSegList.getItem(0),e.pathSegList.getItem(1)],r=n[0].x,i=Math.min(n[0].y,n[1].y);return{x:r,y:i,width:t.width,height:t.height}};n.focus=function(e){var t=this.internal,n;e=t.mapToTargetIds(e),n=t.svg.selectAll(t.selectorTargets(e.filter(t.isTargetToShow,t))),this.revert(),this.defocus(),n.classed(l.focused,!0).classed(l.defocused,!1),t.hasArcType()&&t.expandArc(e),t.toggleFocusLegend(e,!0),t.focusedTargetIds=e,t.defocusedTargetIds=t.defocusedTargetIds.filter(function(t){return e.indexOf(t)<0})},n.defocus=function(e){var t=this.internal,n;e=t.mapToTargetIds(e),n=t.svg.selectAll(t.selectorTargets(e.filter(t.isTargetToShow,t))),n.classed(l.focused,!1).classed(l.defocused,!0),t.hasArcType()&&t.unexpandArc(e),t.toggleFocusLegend(e,!1),t.focusedTargetIds=t.focusedTargetIds.filter(function(t){return e.indexOf(t)<0}),t.defocusedTargetIds=e},n.revert=function(e){var t=this.internal,n;e=t.mapToTargetIds(e),n=t.svg.selectAll(t.selectorTargets(e)),n.classed(l.focused,!1).classed(l.defocused,!1),t.hasArcType()&&t.unexpandArc(e),t.config.legend_show&&(t.showLegend(e.filter(t.isLegendToShow.bind(t))),t.legend.selectAll(t.selectorLegends(e)).filter(function(){return t.d3.select(this).classed(l.legendItemFocused)}).classed(l.legendItemFocused,!1)),t.focusedTargetIds=[],t.defocusedTargetIds=[]},n.show=function(e,t){var n=this.internal,r;e=n.mapToTargetIds(e),t=t||{},n.removeHiddenTargetIds(e),r=n.svg.selectAll(n.selectorTargets(e)),r.transition().style("opacity",1,"important").call(n.endall,function(){r.style("opacity",null).style("opacity",1)}),t.withLegend&&n.showLegend(e),n.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},n.hide=function(e,t){var n=this.internal,r;e=n.mapToTargetIds(e),t=t||{},n.addHiddenTargetIds(e),r=n.svg.selectAll(n.selectorTargets(e)),r.transition().style("opacity",0,"important").call(n.endall,function(){r.style("opacity",null).style("opacity",0)}),t.withLegend&&n.hideLegend(e),n.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},n.toggle=function(e,t){var n=this,r=this.internal;r.mapToTargetIds(e).forEach(function(e){r.isTargetToShow(e)?n.hide(e,t):n.show(e,t)})},n.zoom=function(e){var t=this.internal;return e&&(t.isTimeSeries()&&(e=e.map(function(e){return t.parseDate(e)})),t.brush.extent(e),t.redraw({withUpdateXDomain:!0,withY:t.config.zoom_rescale}),t.config.zoom_onzoom.call(this,t.x.orgDomain())),t.brush.extent()},n.zoom.enable=function(e){var t=this.internal;t.config.zoom_enabled=e,t.updateAndRedraw()},n.unzoom=function(){var e=this.internal;e.brush.clear().update(),e.redraw({withUpdateXDomain:!0})},n.zoom.max=function(e){var t=this.internal,n=t.config,r=t.d3;if(e!==0&&!e)return n.zoom_x_max;n.zoom_x_max=r.max([t.orgXDomain[1],e])},n.zoom.min=function(e){var t=this.internal,n=t.config,r=t.d3;if(e!==0&&!e)return n.zoom_x_min;n.zoom_x_min=r.min([t.orgXDomain[0],e])},n.zoom.range=function(e){if(!arguments.length)return{max:this.domain.max(),min:this.domain.min()};v(e.max)&&this.domain.max(e.max),v(e.min)&&this.domain.min(e.min)},n.load=function(e){var t=this.internal,r=t.config;e.xs&&t.addXs(e.xs),"names"in e&&n.data.names.bind(this)(e.names),"classes"in e&&Object.keys(e.classes).forEach(function(t){r.data_classes[t]=e.classes[t]}),"categories"in e&&t.isCategorized()&&(r.axis_x_categories=e.categories),"axes"in e&&Object.keys(e.axes).forEach(function(t){r.data_axes[t]=e.axes[t]}),"colors"in e&&Object.keys(e.colors).forEach(function(t){r.data_colors[t]=e.colors[t]});if("cacheIds"in e&&t.hasCaches(e.cacheIds)){t.load(t.getCaches(e.cacheIds),e.done);return}"unload"in e?t.unload(t.mapToTargetIds(typeof e.unload=="boolean"&&e.unload?null:e.unload),function(){t.loadFromArgs(e)}):t.loadFromArgs(e)},n.unload=function(e){var t=this.internal;e=e||{},e instanceof Array?e={ids:e}:typeof e=="string"&&(e={ids:[e]}),t.unload(t.mapToTargetIds(e.ids),function(){t.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),e.done&&e.done()})},n.flow=function(e){var t=this.internal,n,r,i=[],s=t.getMaxDataCount(),o,u,a,f,l=0,h=0,p,d;if(e.json)r=t.convertJsonToData(e.json,e.keys);else if(e.rows)r=t.convertRowsToData(e.rows);else{if(!e.columns)return;r=t.convertColumnsToData(e.columns)}n=t.convertDataToTargets(r,!0),t.data.targets.forEach(function(e){var r=!1,s,o;for(s=0;s<n.length;s++)if(e.id===n[s].id){r=!0,e.values[e.values.length-1]&&(h=e.values[e.values.length-1].index+1),l=n[s].values.length;for(o=0;o<l;o++)n[s].values[o].index=h+o,t.isTimeSeries()||(n[s].values[o].x=h+o);e.values=e.values.concat(n[s].values),n.splice(s,1);break}r||i.push(e.id)}),t.data.targets.forEach(function(e){var n,r;for(n=0;n<i.length;n++)if(e.id===i[n]){h=e.values[e.values.length-1].index+1;for(r=0;r<l;r++)e.values.push({id:e.id,index:h+r,x:t.isTimeSeries()?t.getOtherTargetX(h+r):h+r,value:null})}}),t.data.targets.length&&n.forEach(function(e){var n,r=[];for(n=t.data.targets[0].values[0].index;n<h;n++)r.push({id:e.id,index:n,x:t.isTimeSeries()?t.getOtherTargetX(n):n,value:null});e.values.forEach(function(e){e.index+=h,t.isTimeSeries()||(e.x+=h)}),e.values=r.concat(e.values)}),t.data.targets=t.data.targets.concat(n),o=t.getMaxDataCount(),a=t.data.targets[0],f=a.values[0],v(e.to)?(l=0,d=t.isTimeSeries()?t.parseDate(e.to):e.to,a.values.forEach(function(e){e.x<d&&l++})):v(e.length)&&(l=e.length),s?s===1&&t.isTimeSeries()&&(p=(a.values[a.values.length-1].x-f.x)/2,u=[new Date(+f.x-p),new Date(+f.x+p)],t.updateXDomain(null,!0,!0,!1,u)):(t.isTimeSeries()?a.values.length>1?p=a.values[a.values.length-1].x-f.x:p=f.x-t.getXDomain(t.data.targets)[0]:p=1,u=[f.x-p,f.x],t.updateXDomain(null,!0,!0,!1,u)),t.updateTargets(t.data.targets),t.redraw({flow:{index:f.index,length:l,duration:c(e.duration)?e.duration:t.config.transition_duration,done:e.done,orgDataCount:s},withLegend:!0,withTransition:s>1,withTrimXDomain:!1,withUpdateXAxis:!0})},r.generateFlow=function(e){var t=this,n=t.config,r=t.d3;return function(){var i=e.targets,s=e.flow,o=e.drawBar,u=e.drawLine,a=e.drawArea,f=e.cx,c=e.cy,h=e.xv,p=e.xForText,d=e.yForText,v=e.duration,m,g=1,b,w=s.index,E=s.length,S=t.getValueOnIndex(t.data.targets[0].values,w),x=t.getValueOnIndex(t.data.targets[0].values,w+E),T=t.x.domain(),N,C=s.duration||v,k=s.done||function(){},L=t.generateWait(),A=t.xgrid||r.selectAll([]),O=t.xgridLines||r.selectAll([]),M=t.mainRegion||r.selectAll([]),_=t.mainText||r.selectAll([]),D=t.mainBar||r.selectAll([]),P=t.mainLine||r.selectAll([]),H=t.mainArea||r.selectAll([]),B=t.mainCircle||r.selectAll([]);t.flowing=!0,t.data.targets.forEach(function(e){e.values.splice(0,E)}),N=t.updateXDomain(i,!0,!0),t.updateXGrid&&t.updateXGrid(!0),s.orgDataCount?s.orgDataCount===1||(S&&S.x)===(x&&x.x)?m=t.x(T[0])-t.x(N[0]):t.isTimeSeries()?m=t.x(T[0])-t.x(N[0]):m=t.x(S.x)-t.x(x.x):t.data.targets[0].values.length!==1?m=t.x(T[0])-t.x(N[0]):t.isTimeSeries()?(S=t.getValueOnIndex(t.data.targets[0].values,0),x=t.getValueOnIndex(t.data.targets[0].values,t.data.targets[0].values.length-1),m=t.x(S.x)-t.x(x.x)):m=y(N)/2,g=y(T)/y(N),b="translate("+m+",0) scale("+g+",1)",t.hideXGridFocus(),r.transition().ease("linear").duration(C).each(function(){L.add(t.axes.x.transition().call(t.xAxis)),L.add(D.transition().attr("transform",b)),L.add(P.transition().attr("transform",b)),L.add(H.transition().attr("transform",b)),L.add(B.transition().attr("transform",b)),L.add(_.transition().attr("transform",b)),L.add(M.filter(t.isRegionOnX).transition().attr("transform",b)),L.add(A.transition().attr("transform",b)),L.add(O.transition().attr("transform",b))}).call(L,function(){var e,r=[],i=[],s=[];if(E){for(e=0;e<E;e++)r.push("."+l.shape+"-"+(w+e)),i.push("."+l.text+"-"+(w+e)),s.push("."+l.eventRect+"-"+(w+e));t.svg.selectAll("."+l.shapes).selectAll(r).remove(),t.svg.selectAll("."+l.texts).selectAll(i).remove(),t.svg.selectAll("."+l.eventRects).selectAll(s).remove(),t.svg.select("."+l.xgrid).remove()}A.attr("transform",null).attr(t.xgridAttr),O.attr("transform",null),O.select("line").attr("x1",n.axis_rotated?0:h).attr("x2",n.axis_rotated?t.width:h),O.select("text").attr("x",n.axis_rotated?t.width:0).attr("y",h),D.attr("transform",null).attr("d",o),P.attr("transform",null).attr("d",u),H.attr("transform",null).attr("d",a),B.attr("transform",null).attr("cx",f).attr("cy",c),_.attr("transform",null).attr("x",p).attr("y",d).style("fill-opacity",t.opacityForText.bind(t)),M.attr("transform",null),M.select("rect").filter(t.isRegionOnX).attr("x",t.regionX.bind(t)).attr("width",t.regionWidth.bind(t)),n.interaction_enabled&&t.redrawEventRect(),k(),t.flowing=!1})}},n.selected=function(e){var t=this.internal,n=t.d3;return n.merge(t.main.selectAll("."+l.shapes+t.getTargetSelectorSuffix(e)).selectAll("."+l.shape).filter(function(){return n.select(this).classed(l.SELECTED)}).map(function(e){return e.map(function(e){var t=e.__data__;return t.data?t.data:t})}))},n.select=function(e,t,n){var r=this.internal,i=r.d3,s=r.config;if(!s.data_selection_enabled)return;r.main.selectAll("."+l.shapes).selectAll("."+l.shape).each(function(o,u){var a=i.select(this),f=o.data?o.data.id:o.id,c=r.getToggle(this,o).bind(r),h=s.data_selection_grouped||!e||e.indexOf(f)>=0,p=!t||t.indexOf(u)>=0,d=a.classed(l.SELECTED);if(a.classed(l.line)||a.classed(l.area))return;h&&p?s.data_selection_isselectable(o)&&!d&&c(!0,a.classed(l.SELECTED,!0),o,u):v(n)&&n&&d&&c(!1,a.classed(l.SELECTED,!1),o,u)})},n.unselect=function(e,t){var n=this.internal,r=n.d3,i=n.config;if(!i.data_selection_enabled)return;n.main.selectAll("."+l.shapes).selectAll("."+l.shape).each(function(s,o){var u=r.select(this),a=s.data?s.data.id:s.id,f=n.getToggle(this,s).bind(n),c=i.data_selection_grouped||!e||e.indexOf(a)>=0,h=!t||t.indexOf(o)>=0,p=u.classed(l.SELECTED);if(u.classed(l.line)||u.classed(l.area))return;c&&h&&i.data_selection_isselectable(s)&&p&&f(!1,u.classed(l.SELECTED,!1),s,o)})},n.transform=function(e,t){var n=this.internal,r=["pie","donut"].indexOf(e)>=0?{withTransform:!0}:null;n.transformTo(t,e,r)},r.transformTo=function(e,t,n){var r=this,i=!r.hasArcType(),s=n||{withTransitionForAxis:i};s.withTransitionForTransform=!1,r.transiting=!1,r.setTargetType(e,t),r.updateTargets(r.data.targets),r.updateAndRedraw(s)},n.groups=function(e){var t=this.internal,n=t.config;return d(e)?n.data_groups:(n.data_groups=e,t.redraw(),n.data_groups)},n.xgrids=function(e){var t=this.internal,n=t.config;return e?(n.grid_x_lines=e,t.redrawWithoutRescale(),n.grid_x_lines):n.grid_x_lines},n.xgrids.add=function(e){var t=this.internal;return this.xgrids(t.config.grid_x_lines.concat(e?e:[]))},n.xgrids.remove=function(e){var t=this.internal;t.removeGridLines(e,!0)},n.ygrids=function(e){var t=this.internal,n=t.config;return e?(n.grid_y_lines=e,t.redrawWithoutRescale(),n.grid_y_lines):n.grid_y_lines},n.ygrids.add=function(e){var t=this.internal;return this.ygrids(t.config.grid_y_lines.concat(e?e:[]))},n.ygrids.remove=function(e){var t=this.internal;t.removeGridLines(e,!1)},n.regions=function(e){var t=this.internal,n=t.config;return e?(n.regions=e,t.redrawWithoutRescale(),n.regions):n.regions},n.regions.add=function(e){var t=this.internal,n=t.config;return e?(n.regions=n.regions.concat(e),t.redrawWithoutRescale(),n.regions):n.regions},n.regions.remove=function(e){var t=this.internal,n=t.config,r,i,s;return e=e||{},r=t.getOption(e,"duration",n.transition_duration),i=t.getOption(e,"classes",[l.region]),s=t.main.select("."+l.regions).selectAll(i.map(function(e){return"."+e})),(r?s.transition().duration(r):s).style("opacity",0).remove(),n.regions=n.regions.filter(function(e){var t=!1;return e["class"]?(e["class"].split(" ").forEach(function(e){i.indexOf(e)>=0&&(t=!0)}),!t):!0}),n.regions},n.data=function(e){var t=this.internal.data.targets;return typeof e=="undefined"?t:t.filter(function(t){return[].concat(e).indexOf(t.id)>=0})},n.data.shown=function(e){return this.internal.filterTargetsToShow(this.data(e))},n.data.values=function(e){var t,n=null;return e&&(t=this.data(e),n=t[0]?t[0].values.map(function(e){return e.value}):null),n},n.data.names=function(e){return this.internal.clearLegendItemTextBoxCache(),this.internal.updateDataAttributes("names",e)},n.data.colors=function(e){return this.internal.updateDataAttributes("colors",e)},n.data.axes=function(e){return this.internal.updateDataAttributes("axes",e)},n.category=function(e,t){var n=this.internal,r=n.config;return arguments.length>1&&(r.axis_x_categories[e]=t,n.redraw()),r.axis_x_categories[e]},n.categories=function(e){var t=this.internal,n=t.config;return arguments.length?(n.axis_x_categories=e,t.redraw(),n.axis_x_categories):n.axis_x_categories},n.color=function(e){var t=this.internal;return t.color(e)},n.x=function(e){var t=this.internal;return arguments.length&&(t.updateTargetX(t.data.targets,e),t.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),t.data.xs},n.xs=function(e){var t=this.internal;return arguments.length&&(t.updateTargetXs(t.data.targets,e),t.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),t.data.xs},n.axis=function(){},n.axis.labels=function(e){var t=this.internal;arguments.length&&(Object.keys(e).forEach(function(n){t.axis.setLabelText(n,e[n])}),t.axis.updateLabels())},n.axis.max=function(e){var t=this.internal,n=t.config;if(!arguments.length)return{x:n.axis_x_max,y:n.axis_y_max,y2:n.axis_y2_max};typeof e=="object"?(c(e.x)&&(n.axis_x_max=e.x),c(e.y)&&(n.axis_y_max=e.y),c(e.y2)&&(n.axis_y2_max=e.y2)):n.axis_y_max=n.axis_y2_max=e,t.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})},n.axis.min=function(e){var t=this.internal,n=t.config;if(!arguments.length)return{x:n.axis_x_min,y:n.axis_y_min,y2:n.axis_y2_min};typeof e=="object"?(c(e.x)&&(n.axis_x_min=e.x),c(e.y)&&(n.axis_y_min=e.y),c(e.y2)&&(n.axis_y2_min=e.y2)):n.axis_y_min=n.axis_y2_min=e,t.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})},n.axis.range=function(e){if(!arguments.length)return{max:this.axis.max(),min:this.axis.min()};v(e.max)&&this.axis.max(e.max),v(e.min)&&this.axis.min(e.min)},n.legend=function(){},n.legend.show=function(e){var t=this.internal;t.showLegend(t.mapToTargetIds(e)),t.updateAndRedraw({withLegend:!0})},n.legend.hide=function(e){var t=this.internal;t.hideLegend(t.mapToTargetIds(e)),t.updateAndRedraw({withLegend:!0})},n.resize=function(e){var t=this.internal,n=t.config;n.size_width=e?e.width:null,n.size_height=e?e.height:null,this.flush()},n.flush=function(){var e=this.internal;e.updateAndRedraw({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},n.destroy=function(){var t=this.internal;e.clearInterval(t.intervalForObserveInserted),t.resizeTimeout!==undefined&&e.clearTimeout(t.resizeTimeout);if(e.detachEvent)e.detachEvent("onresize",t.resizeFunction);else if(e.removeEventListener)e.removeEventListener("resize",t.resizeFunction);else{var n=e.onresize;n&&n.add&&n.remove&&n.remove(t.resizeFunction)}return t.selectChart.classed("c3",!1).html(""),Object.keys(t).forEach(function(e){t[e]=null}),null},n.tooltip=function(){},n.tooltip.show=function(e){var t=this.internal,n,r;e.mouse&&(r=e.mouse),e.data?t.isMultipleX()?(r=[t.x(e.data.x),t.getYScale(e.data.id)(e.data.value)],n=null):n=c(e.data.index)?e.data.index:t.getIndexByX(e.data.x):typeof e.x!="undefined"?n=t.getIndexByX(e.x):typeof e.index!="undefined"&&(n=e.index),t.dispatchEvent("mouseover",n,r),t.dispatchEvent("mousemove",n,r),t.config.tooltip_onshow.call(t,e.data)},n.tooltip.hide=function(){this.internal.dispatchEvent("mouseout",0),this.internal.config.tooltip_onhide.call(this)};var N;r.isSafari=function(){var t=e.navigator.userAgent;return t.indexOf("Safari")>=0&&t.indexOf("Chrome")<0},r.isChrome=function(){var t=e.navigator.userAgent;return t.indexOf("Chrome")>=0},Function.prototype.bind||(Function.prototype.bind=function(e){if(typeof this!="function")throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),n=this,r=function(){},i=function(){return n.apply(this instanceof r?this:e,t.concat(Array.prototype.slice.call(arguments)))};return r.prototype=this.prototype,i.prototype=new r,i}),function(){"SVGPathSeg"in e||(e.SVGPathSeg=function(e,t,n){this.pathSegType=e,this.pathSegTypeAsLetter=t,this._owningPathSegList=n},SVGPathSeg.PATHSEG_UNKNOWN=0,SVGPathSeg.PATHSEG_CLOSEPATH=1,SVGPathSeg.PATHSEG_MOVETO_ABS=2,SVGPathSeg.PATHSEG_MOVETO_REL=3,SVGPathSeg.PATHSEG_LINETO_ABS=4,SVGPathSeg.PATHSEG_LINETO_REL=5,SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS=6,SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL=7,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS=8,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL=9,SVGPathSeg.PATHSEG_ARC_ABS=10,SVGPathSeg.PATHSEG_ARC_REL=11,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS=12,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL=13,SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS=14,SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL=15,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS=16,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL=17,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS=18,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL=19,SVGPathSeg.prototype._segmentChanged=function(){this._owningPathSegList&&this._owningPathSegList.segmentChanged(this)},e.SVGPathSegClosePath=function(e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CLOSEPATH,"z",e)},SVGPathSegClosePath.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegClosePath.prototype.toString=function(){return"[object SVGPathSegClosePath]"},SVGPathSegClosePath.prototype._asPathString=function(){return this.pathSegTypeAsLetter},SVGPathSegClosePath.prototype.clone=function(){return new SVGPathSegClosePath(undefined)},e.SVGPathSegMovetoAbs=function(e,t,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_MOVETO_ABS,"M",e),this._x=t,this._y=n},SVGPathSegMovetoAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegMovetoAbs.prototype.toString=function(){return"[object SVGPathSegMovetoAbs]"},SVGPathSegMovetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegMovetoAbs.prototype.clone=function(){return new SVGPathSegMovetoAbs(undefined,this._x,this._y)},Object.defineProperty(SVGPathSegMovetoAbs.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegMovetoAbs.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegMovetoRel=function(e,t,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_MOVETO_REL,"m",e),this._x=t,this._y=n},SVGPathSegMovetoRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegMovetoRel.prototype.toString=function(){return"[object SVGPathSegMovetoRel]"},SVGPathSegMovetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegMovetoRel.prototype.clone=function(){return new SVGPathSegMovetoRel(undefined,this._x,this._y)},Object.defineProperty(SVGPathSegMovetoRel.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegMovetoRel.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegLinetoAbs=function(e,t,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_ABS,"L",e),this._x=t,this._y=n},SVGPathSegLinetoAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoAbs.prototype.toString=function(){return"[object SVGPathSegLinetoAbs]"},SVGPathSegLinetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegLinetoAbs.prototype.clone=function(){return new SVGPathSegLinetoAbs(undefined,this._x,this._y)},Object.defineProperty(SVGPathSegLinetoAbs.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegLinetoAbs.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegLinetoRel=function(e,t,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_REL,"l",e),this._x=t,this._y=n},SVGPathSegLinetoRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoRel.prototype.toString=function(){return"[object SVGPathSegLinetoRel]"},SVGPathSegLinetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegLinetoRel.prototype.clone=function(){return new SVGPathSegLinetoRel(undefined,this._x,this._y)},Object.defineProperty(SVGPathSegLinetoRel.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegLinetoRel.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegCurvetoCubicAbs=function(e,t,n,r,i,s,o){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS,"C",e),this._x=t,this._y=n,this._x1=r,this._y1=i,this._x2=s,this._y2=o},SVGPathSegCurvetoCubicAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicAbs]"},SVGPathSegCurvetoCubicAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicAbs.prototype.clone=function(){return new SVGPathSegCurvetoCubicAbs(undefined,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x1",{get:function(){return this._x1},set:function(e){this._x1=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y1",{get:function(){return this._y1},set:function(e){this._y1=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x2",{get:function(){return this._x2},set:function(e){this._x2=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y2",{get:function(){return this._y2},set:function(e){this._y2=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegCurvetoCubicRel=function(e,t,n,r,i,s,o){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL,"c",e),this._x=t,this._y=n,this._x1=r,this._y1=i,this._x2=s,this._y2=o},SVGPathSegCurvetoCubicRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicRel]"},SVGPathSegCurvetoCubicRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicRel.prototype.clone=function(){return new SVGPathSegCurvetoCubicRel(undefined,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x1",{get:function(){return this._x1},set:function(e){this._x1=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y1",{get:function(){return this._y1},set:function(e){this._y1=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x2",{get:function(){return this._x2},set:function(e){this._x2=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y2",{get:function(){return this._y2},set:function(e){this._y2=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegCurvetoQuadraticAbs=function(e,t,n,r,i){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS,"Q",e),this._x=t,this._y=n,this._x1=r,this._y1=i},SVGPathSegCurvetoQuadraticAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticAbs]"},SVGPathSegCurvetoQuadraticAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticAbs.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticAbs(undefined,this._x,this._y,this._x1,this._y1)},Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"x1",{get:function(){return this._x1},set:function(e){this._x1=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"y1",{get:function(){return this._y1},set:function(e){this._y1=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegCurvetoQuadraticRel=function(e,t,n,r,i){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL,"q",e),this._x=t,this._y=n,this._x1=r,this._y1=i},SVGPathSegCurvetoQuadraticRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticRel]"},SVGPathSegCurvetoQuadraticRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticRel.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticRel(undefined,this._x,this._y,this._x1,this._y1)},Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"x1",{get:function(){return this._x1},set:function(e){this._x1=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"y1",{get:function(){return this._y1},set:function(e){this._y1=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegArcAbs=function(e,t,n,r,i,s,o,u){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_ARC_ABS,"A",e),this._x=t,this._y=n,this._r1=r,this._r2=i,this._angle=s,this._largeArcFlag=o,this._sweepFlag=u},SVGPathSegArcAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegArcAbs.prototype.toString=function(){return"[object SVGPathSegArcAbs]"},SVGPathSegArcAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},SVGPathSegArcAbs.prototype.clone=function(){return new SVGPathSegArcAbs(undefined,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(SVGPathSegArcAbs.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"r1",{get:function(){return this._r1},set:function(e){this._r1=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"r2",{get:function(){return this._r2},set:function(e){this._r2=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"angle",{get:function(){return this._angle},set:function(e){this._angle=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(e){this._largeArcFlag=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(e){this._sweepFlag=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegArcRel=function(e,t,n,r,i,s,o,u){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_ARC_REL,"a",e),this._x=t,this._y=n,this._r1=r,this._r2=i,this._angle=s,this._largeArcFlag=o,this._sweepFlag=u},SVGPathSegArcRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegArcRel.prototype.toString=function(){return"[object SVGPathSegArcRel]"},SVGPathSegArcRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},SVGPathSegArcRel.prototype.clone=function(){return new SVGPathSegArcRel(undefined,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(SVGPathSegArcRel.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"r1",{get:function(){return this._r1},set:function(e){this._r1=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"r2",{get:function(){return this._r2},set:function(e){this._r2=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"angle",{get:function(){return this._angle},set:function(e){this._angle=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(e){this._largeArcFlag=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(e){this._sweepFlag=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegLinetoHorizontalAbs=function(e,t){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS,"H",e),this._x=t},SVGPathSegLinetoHorizontalAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoHorizontalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalAbs]"},SVGPathSegLinetoHorizontalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},SVGPathSegLinetoHorizontalAbs.prototype.clone=function(){return new SVGPathSegLinetoHorizontalAbs(undefined,this._x)},Object.defineProperty(SVGPathSegLinetoHorizontalAbs.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegLinetoHorizontalRel=function(e,t){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL,"h",e),this._x=t},SVGPathSegLinetoHorizontalRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoHorizontalRel.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalRel]"},SVGPathSegLinetoHorizontalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},SVGPathSegLinetoHorizontalRel.prototype.clone=function(){return new SVGPathSegLinetoHorizontalRel(undefined,this._x)},Object.defineProperty(SVGPathSegLinetoHorizontalRel.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegLinetoVerticalAbs=function(e,t){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS,"V",e),this._y=t},SVGPathSegLinetoVerticalAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoVerticalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalAbs]"},SVGPathSegLinetoVerticalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},SVGPathSegLinetoVerticalAbs.prototype.clone=function(){return new SVGPathSegLinetoVerticalAbs(undefined,this._y)},Object.defineProperty(SVGPathSegLinetoVerticalAbs.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegLinetoVerticalRel=function(e,t){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL,"v",e),this._y=t},SVGPathSegLinetoVerticalRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoVerticalRel.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalRel]"},SVGPathSegLinetoVerticalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},SVGPathSegLinetoVerticalRel.prototype.clone=function(){return new SVGPathSegLinetoVerticalRel(undefined,this._y)},Object.defineProperty(SVGPathSegLinetoVerticalRel.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegCurvetoCubicSmoothAbs=function(e,t,n,r,i){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS,"S",e),this._x=t,this._y=n,this._x2=r,this._y2=i},SVGPathSegCurvetoCubicSmoothAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothAbs]"},SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicSmoothAbs.prototype.clone=function(){return new SVGPathSegCurvetoCubicSmoothAbs(undefined,this._x,this._y,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"x2",{get:function(){return this._x2},set:function(e){this._x2=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"y2",{get:function(){return this._y2},set:function(e){this._y2=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegCurvetoCubicSmoothRel=function(e,t,n,r,i){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL,"s",e),this._x=t,this._y=n,this._x2=r,this._y2=i},SVGPathSegCurvetoCubicSmoothRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothRel]"},SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicSmoothRel.prototype.clone=function(){return new SVGPathSegCurvetoCubicSmoothRel(undefined,this._x,this._y,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"x2",{get:function(){return this._x2},set:function(e){this._x2=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"y2",{get:function(){return this._y2},set:function(e){this._y2=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegCurvetoQuadraticSmoothAbs=function(e,t,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS,"T",e),this._x=t,this._y=n},SVGPathSegCurvetoQuadraticSmoothAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothAbs]"},SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticSmoothAbs(undefined,this._x,this._y)},Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),e.SVGPathSegCurvetoQuadraticSmoothRel=function(e,t,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL,"t",e),this._x=t,this._y=n},SVGPathSegCurvetoQuadraticSmoothRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothRel]"},SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticSmoothRel(undefined,this._x,this._y)},Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype,"x",{get:function(){return this._x},set:function(e){this._x=e,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype,"y",{get:function(){return this._y},set:function(e){this._y=e,this._segmentChanged()},enumerable:!0}),SVGPathElement.prototype.createSVGPathSegClosePath=function(){return new SVGPathSegClosePath(undefined)},SVGPathElement.prototype.createSVGPathSegMovetoAbs=function(e,t){return new SVGPathSegMovetoAbs(undefined,e,t)},SVGPathElement.prototype.createSVGPathSegMovetoRel=function(e,t){return new SVGPathSegMovetoRel(undefined,e,t)},SVGPathElement.prototype.createSVGPathSegLinetoAbs=function(e,t){return new SVGPathSegLinetoAbs(undefined,e,t)},SVGPathElement.prototype.createSVGPathSegLinetoRel=function(e,t){return new SVGPathSegLinetoRel(undefined,e,t)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs=function(e,t,n,r,i,s){return new SVGPathSegCurvetoCubicAbs(undefined,e,t,n,r,i,s)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel=function(e,t,n,r,i,s){return new SVGPathSegCurvetoCubicRel(undefined,e,t,n,r,i,s)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs=function(e,t,n,r){return new SVGPathSegCurvetoQuadraticAbs(undefined,e,t,n,r)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel=function(e,t,n,r){return new SVGPathSegCurvetoQuadraticRel(undefined,e,t,n,r)},SVGPathElement.prototype.createSVGPathSegArcAbs=function(e,t,n,r,i,s,o){return new SVGPathSegArcAbs(undefined,e,t,n,r,i,s,o)},SVGPathElement.prototype.createSVGPathSegArcRel=function(e,t,n,r,i,s,o){return new SVGPathSegArcRel(undefined,e,t,n,r,i,s,o)},SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs=function(e){return new SVGPathSegLinetoHorizontalAbs(undefined,e)},SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel=function(e){return new SVGPathSegLinetoHorizontalRel(undefined,e)},SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs=function(e){return new SVGPathSegLinetoVerticalAbs(undefined,e)},SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel=function(e){return new SVGPathSegLinetoVerticalRel(undefined,e)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs=function(e,t,n,r){return new SVGPathSegCurvetoCubicSmoothAbs(undefined,e,t,n,r)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel=function(e,t,n,r){return new SVGPathSegCurvetoCubicSmoothRel(undefined,e,t,n,r)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs=function(e,t){return new SVGPathSegCurvetoQuadraticSmoothAbs(undefined,e,t)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel=function(e,t){return new SVGPathSegCurvetoQuadraticSmoothRel(undefined,e,t)}),"SVGPathSegList"in e||(e.SVGPathSegList=function(e){this._pathElement=e,this._list=this._parsePath(this._pathElement.getAttribute("d")),this._mutationObserverConfig={attributes:!0,attributeFilter:["d"]},this._pathElementMutationObserver=new MutationObserver(this._updateListFromPathMutations.bind(this)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},Object.defineProperty(SVGPathSegList.prototype,"numberOfItems",{get:function(){return this._checkPathSynchronizedToList(),this._list.length},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"pathSegList",{get:function(){return this._pathSegList||(this._pathSegList=new SVGPathSegList(this)),this._pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"normalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"animatedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"animatedNormalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),SVGPathSegList.prototype._checkPathSynchronizedToList=function(){this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords())},SVGPathSegList.prototype._updateListFromPathMutations=function(e){if(!this._pathElement)return;var t=!1;e.forEach(function(e){e.attributeName=="d"&&(t=!0)}),t&&(this._list=this._parsePath(this._pathElement.getAttribute("d")))},SVGPathSegList.prototype._writeListToPath=function(){this._pathElementMutationObserver.disconnect(),this._pathElement.setAttribute("d",SVGPathSegList._pathSegArrayAsString(this._list)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},SVGPathSegList.prototype.segmentChanged=function(e){this._writeListToPath()},SVGPathSegList.prototype.clear=function(){this._checkPathSynchronizedToList(),this._list.forEach(function(e){e._owningPathSegList=null}),this._list=[],this._writeListToPath()},SVGPathSegList.prototype.initialize=function(e){return this._checkPathSynchronizedToList(),this._list=[e],e._owningPathSegList=this,this._writeListToPath(),e},SVGPathSegList.prototype._checkValidIndex=function(e){if(isNaN(e)||e<0||e>=this.numberOfItems)throw"INDEX_SIZE_ERR"},SVGPathSegList.prototype.getItem=function(e){return this._checkPathSynchronizedToList(),this._checkValidIndex(e),this._list[e]},SVGPathSegList.prototype.insertItemBefore=function(e,t){return this._checkPathSynchronizedToList(),t>this.numberOfItems&&(t=this.numberOfItems),e._owningPathSegList&&(e=e.clone()),this._list.splice(t,0,e),e._owningPathSegList=this,this._writeListToPath(),e},SVGPathSegList.prototype.replaceItem=function(e,t){return this._checkPathSynchronizedToList(),e._owningPathSegList&&(e=e.clone()),this._checkValidIndex(t),this._list[t]=e,e._owningPathSegList=this,this._writeListToPath(),e},SVGPathSegList.prototype.removeItem=function(e){this._checkPathSynchronizedToList(),this._checkValidIndex(e);var t=this._list[e];return this._list.splice(e,1),this._writeListToPath(),t},SVGPathSegList.prototype.appendItem=function(e){return this._checkPathSynchronizedToList(),e._owningPathSegList&&(e=e.clone()),this._list.push(e),e._owningPathSegList=this,this._writeListToPath(),e},SVGPathSegList._pathSegArrayAsString=function(e){var t="",n=!0;return e.forEach(function(e){n?(n=!1,t+=e._asPathString()):t+=" "+e._asPathString()}),t},SVGPathSegList.prototype._parsePath=function(e){if(!e||e.length==0)return[];var t=this,n=function(){this.pathSegList=[]};n.prototype.appendSegment=function(e){this.pathSegList.push(e)};var r=function(e){this._string=e,this._currentIndex=0,this._endIndex=this._string.length,this._previousCommand=SVGPathSeg.PATHSEG_UNKNOWN,this._skipOptionalSpaces()};r.prototype._isCurrentSpace=function(){var e=this._string[this._currentIndex];return e<=" "&&(e==" "||e=="\n"||e==" "||e=="\r"||e=="\f")},r.prototype._skipOptionalSpaces=function(){while(this._currentIndex<this._endIndex&&this._isCurrentSpace())this._currentIndex++;return this._currentIndex<this._endIndex},r.prototype._skipOptionalSpacesOrDelimiter=function(){return this._currentIndex<this._endIndex&&!this._isCurrentSpace()&&this._string.charAt(this._currentIndex)!=","?!1:(this._skipOptionalSpaces()&&this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)==","&&(this._currentIndex++,this._skipOptionalSpaces()),this._currentIndex<this._endIndex)},r.prototype.hasMoreData=function(){return this._currentIndex<this._endIndex},r.prototype.peekSegmentType=function(){var e=this._string[this._currentIndex];return this._pathSegTypeFromChar(e)},r.prototype._pathSegTypeFromChar=function(e){switch(e){case"Z":case"z":return SVGPathSeg.PATHSEG_CLOSEPATH;case"M":return SVGPathSeg.PATHSEG_MOVETO_ABS;case"m":return SVGPathSeg.PATHSEG_MOVETO_REL;case"L":return SVGPathSeg.PATHSEG_LINETO_ABS;case"l":return SVGPathSeg.PATHSEG_LINETO_REL;case"C":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;case"c":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;case"Q":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;case"q":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;case"A":return SVGPathSeg.PATHSEG_ARC_ABS;case"a":return SVGPathSeg.PATHSEG_ARC_REL;case"H":return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;case"h":return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;case"V":return SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;case"v":return SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;case"S":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;case"s":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;case"T":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;case"t":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;default:return SVGPathSeg.PATHSEG_UNKNOWN}},r.prototype._nextCommandHelper=function(e,t){return(e=="+"||e=="-"||e=="."||e>="0"&&e<="9")&&t!=SVGPathSeg.PATHSEG_CLOSEPATH?t==SVGPathSeg.PATHSEG_MOVETO_ABS?SVGPathSeg.PATHSEG_LINETO_ABS:t==SVGPathSeg.PATHSEG_MOVETO_REL?SVGPathSeg.PATHSEG_LINETO_REL:t:SVGPathSeg.PATHSEG_UNKNOWN},r.prototype.initialCommandIsMoveTo=function(){if(!this.hasMoreData())return!0;var e=this.peekSegmentType();return e==SVGPathSeg.PATHSEG_MOVETO_ABS||e==SVGPathSeg.PATHSEG_MOVETO_REL},r.prototype._parseNumber=function(){var e=0,t=0,n=1,r=0,i=1,s=1,o=this._currentIndex;this._skipOptionalSpaces(),this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)=="+"?this._currentIndex++:this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)=="-"&&(this._currentIndex++,i=-1);if(this._currentIndex==this._endIndex||(this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")&&this._string.charAt(this._currentIndex)!=".")return undefined;var u=this._currentIndex;while(this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9")this._currentIndex++;if(this._currentIndex!=u){var a=this._currentIndex-1,f=1;while(a>=u)t+=f*(this._string.charAt(a--)-"0"),f*=10}if(this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)=="."){this._currentIndex++;if(this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return undefined;while(this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9")r+=(this._string.charAt(this._currentIndex++)-"0")*(n*=.1)}if(this._currentIndex!=o&&this._currentIndex+1<this._endIndex&&(this._string.charAt(this._currentIndex)=="e"||this._string.charAt(this._currentIndex)=="E")&&this._string.charAt(this._currentIndex+1)!="x"&&this._string.charAt(this._currentIndex+1)!="m"){this._currentIndex++,this._string.charAt(this._currentIndex)=="+"?this._currentIndex++:this._string.charAt(this._currentIndex)=="-"&&(this._currentIndex++,s=-1);if(this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return undefined;while(this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9")e*=10,e+=this._string.charAt(this._currentIndex)-"0",this._currentIndex++}var l=t+r;return l*=i,e&&(l*=Math.pow(10,s*e)),o==this._currentIndex?undefined:(this._skipOptionalSpacesOrDelimiter(),l)},r.prototype._parseArcFlag=function(){if(this._currentIndex>=this._endIndex)return undefined;var e=!1,t=this._string.charAt(this._currentIndex++);if(t=="0")e=!1;else{if(t!="1")return undefined;e=!0}return this._skipOptionalSpacesOrDelimiter(),e},r.prototype.parseSegment=function(){var e=this._string[this._currentIndex],n=this._pathSegTypeFromChar(e);if(n==SVGPathSeg.PATHSEG_UNKNOWN){if(this._previousCommand==SVGPathSeg.PATHSEG_UNKNOWN)return null;n=this._nextCommandHelper(e,this._previousCommand);if(n==SVGPathSeg.PATHSEG_UNKNOWN)return null}else this._currentIndex++;this._previousCommand=n;switch(n){case SVGPathSeg.PATHSEG_MOVETO_REL:return new SVGPathSegMovetoRel(t,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_MOVETO_ABS:return new SVGPathSegMovetoAbs(t,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_REL:return new SVGPathSegLinetoRel(t,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_ABS:return new SVGPathSegLinetoAbs(t,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:return new SVGPathSegLinetoHorizontalRel(t,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:return new SVGPathSegLinetoHorizontalAbs(t,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:return new SVGPathSegLinetoVerticalRel(t,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:return new SVGPathSegLinetoVerticalAbs(t,this._parseNumber());case SVGPathSeg.PATHSEG_CLOSEPATH:return this._skipOptionalSpaces(),new SVGPathSegClosePath(t);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:var r={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicRel(t,r.x,r.y,r.x1,r.y1,r.x2,r.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:var r={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicAbs(t,r.x,r.y,r.x1,r.y1,r.x2,r.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:var r={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicSmoothRel(t,r.x,r.y,r.x2,r.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:var r={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicSmoothAbs(t,r.x,r.y,r.x2,r.y2);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:var r={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoQuadraticRel(t,r.x,r.y,r.x1,r.y1);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:var r={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoQuadraticAbs(t,r.x,r.y,r.x1,r.y1);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:return new SVGPathSegCurvetoQuadraticSmoothRel(t,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:return new SVGPathSegCurvetoQuadraticSmoothAbs(t,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_ARC_REL:var r={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegArcRel(t,r.x,r.y,r.x1,r.y1,r.arcAngle,r.arcLarge,r.arcSweep);case SVGPathSeg.PATHSEG_ARC_ABS:var r={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegArcAbs(t,r.x,r.y,r.x1,r.y1,r.arcAngle,r.arcLarge,r.arcSweep);default:throw"Unknown path seg type."}};var i=new n,s=new r(e);if(!s.initialCommandIsMoveTo())return[];while(s.hasMoreData()){var o=s.parseSegment();if(!o)return[];i.appendSegment(o)}return i.pathSegList})}(),typeof define=="function"&&define.amd?define("c3",["d3"],function(){return t}):"undefined"!=typeof exports&&"undefined"!=typeof module?module.exports=t:e.c3=t}(window),!function t(e,n,r){function i(o,u){if(!n[o]){if(!e[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(s)return s(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};e[o][0].call(l.exports,function(t){var n=e[o][1][t];return i(n?n:t)},l,l.exports,t,e,n,r)}return n[o].exports}for(var s="function"==typeof require&&require,o=0;o<r.length;o++)i(r[o]);return i}({1:[function(e,t,n){var r=e("./svg-pan-zoom.js");!function(e,n){"function"==typeof define&&define.amd?define("svg-pan-zoom",[],function(){return r}):"undefined"!=typeof t&&t.exports&&(t.exports=r,e.svgPanZoom=r)}(window,document)},{"./svg-pan-zoom.js":4}],2:[function(e,t,n){var r=e("./svg-utilities");t.exports={enable:function(e){var t=e.svg.querySelector("defs");t||(t=document.createElementNS(r.svgNS,"defs"),e.svg.appendChild(t));var n=document.createElementNS(r.svgNS,"style");n.setAttribute("type","text/css"),n.textContent=".svg-pan-zoom-control { cursor: pointer; fill: black; fill-opacity: 0.333; } .svg-pan-zoom-control:hover { fill-opacity: 0.8; } .svg-pan-zoom-control-background { fill: white; fill-opacity: 0.5; } .svg-pan-zoom-control-background { fill-opacity: 0.8; }",t.appendChild(n);var i=document.createElementNS(r.svgNS,"g");i.setAttribute("id","svg-pan-zoom-controls"),i.setAttribute("transform","translate("+(e.width-70)+" "+(e.height-76)+") scale(0.75)"),i.setAttribute("class","svg-pan-zoom-control"),i.appendChild(this._createZoomIn(e)),i.appendChild(this._createZoomReset(e)),i.appendChild(this._createZoomOut(e)),e.svg.appendChild(i),e.controlIcons=i},_createZoomIn:function(e){var t=document.createElementNS(r.svgNS,"g");t.setAttribute("id","svg-pan-zoom-zoom-in"),t.setAttribute("transform","translate(30.5 5) scale(0.015)"),t.setAttribute("class","svg-pan-zoom-control"),t.addEventListener("click",function(){e.getPublicInstance().zoomIn()},!1),t.addEventListener("touchstart",function(){e.getPublicInstance().zoomIn()},!1);var n=document.createElementNS(r.svgNS,"rect");n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width","1500"),n.setAttribute("height","1400"),n.setAttribute("class","svg-pan-zoom-control-background"),t.appendChild(n);var i=document.createElementNS(r.svgNS,"path");return i.setAttribute("d","M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z"),i.setAttribute("class","svg-pan-zoom-control-element"),t.appendChild(i),t},_createZoomReset:function(e){var t=document.createElementNS(r.svgNS,"g");t.setAttribute("id","svg-pan-zoom-reset-pan-zoom"),t.setAttribute("transform","translate(5 35) scale(0.4)"),t.setAttribute("class","svg-pan-zoom-control"),t.addEventListener("click",function(){e.getPublicInstance().reset()},!1),t.addEventListener("touchstart",function(){e.getPublicInstance().reset()},!1);var n=document.createElementNS(r.svgNS,"rect");n.setAttribute("x","2"),n.setAttribute("y","2"),n.setAttribute("width","182"),n.setAttribute("height","58"),n.setAttribute("class","svg-pan-zoom-control-background"),t.appendChild(n);var i=document.createElementNS(r.svgNS,"path");i.setAttribute("d","M33.051,20.632c-0.742-0.406-1.854-0.609-3.338-0.609h-7.969v9.281h7.769c1.543,0,2.701-0.188,3.473-0.562c1.365-0.656,2.048-1.953,2.048-3.891C35.032,22.757,34.372,21.351,33.051,20.632z"),i.setAttribute("class","svg-pan-zoom-control-element"),t.appendChild(i);var s=document.createElementNS(r.svgNS,"path");return s.setAttribute("d","M170.231,0.5H15.847C7.102,0.5,0.5,5.708,0.5,11.84v38.861C0.5,56.833,7.102,61.5,15.847,61.5h154.384c8.745,0,15.269-4.667,15.269-10.798V11.84C185.5,5.708,178.976,0.5,170.231,0.5z M42.837,48.569h-7.969c-0.219-0.766-0.375-1.383-0.469-1.852c-0.188-0.969-0.289-1.961-0.305-2.977l-0.047-3.211c-0.03-2.203-0.41-3.672-1.142-4.406c-0.732-0.734-2.103-1.102-4.113-1.102h-7.05v13.547h-7.055V14.022h16.524c2.361,0.047,4.178,0.344,5.45,0.891c1.272,0.547,2.351,1.352,3.234,2.414c0.731,0.875,1.31,1.844,1.737,2.906s0.64,2.273,0.64,3.633c0,1.641-0.414,3.254-1.242,4.84s-2.195,2.707-4.102,3.363c1.594,0.641,2.723,1.551,3.387,2.73s0.996,2.98,0.996,5.402v2.32c0,1.578,0.063,2.648,0.19,3.211c0.19,0.891,0.635,1.547,1.333,1.969V48.569z M75.579,48.569h-26.18V14.022h25.336v6.117H56.454v7.336h16.781v6H56.454v8.883h19.125V48.569z M104.497,46.331c-2.44,2.086-5.887,3.129-10.34,3.129c-4.548,0-8.125-1.027-10.731-3.082s-3.909-4.879-3.909-8.473h6.891c0.224,1.578,0.662,2.758,1.316,3.539c1.196,1.422,3.246,2.133,6.15,2.133c1.739,0,3.151-0.188,4.236-0.562c2.058-0.719,3.087-2.055,3.087-4.008c0-1.141-0.504-2.023-1.512-2.648c-1.008-0.609-2.607-1.148-4.796-1.617l-3.74-0.82c-3.676-0.812-6.201-1.695-7.576-2.648c-2.328-1.594-3.492-4.086-3.492-7.477c0-3.094,1.139-5.664,3.417-7.711s5.623-3.07,10.036-3.07c3.685,0,6.829,0.965,9.431,2.895c2.602,1.93,3.966,4.73,4.093,8.402h-6.938c-0.128-2.078-1.057-3.555-2.787-4.43c-1.154-0.578-2.587-0.867-4.301-0.867c-1.907,0-3.428,0.375-4.565,1.125c-1.138,0.75-1.706,1.797-1.706,3.141c0,1.234,0.561,2.156,1.682,2.766c0.721,0.406,2.25,0.883,4.589,1.43l6.063,1.43c2.657,0.625,4.648,1.461,5.975,2.508c2.059,1.625,3.089,3.977,3.089,7.055C108.157,41.624,106.937,44.245,104.497,46.331z M139.61,48.569h-26.18V14.022h25.336v6.117h-18.281v7.336h16.781v6h-16.781v8.883h19.125V48.569z M170.337,20.14h-10.336v28.43h-7.266V20.14h-10.383v-6.117h27.984V20.14z"),s.setAttribute("class","svg-pan-zoom-control-element"),t.appendChild(s),t},_createZoomOut:function(e){var t=document.createElementNS(r.svgNS,"g");t.setAttribute("id","svg-pan-zoom-zoom-out"),t.setAttribute("transform","translate(30.5 70) scale(0.015)"),t.setAttribute("class","svg-pan-zoom-control"),t.addEventListener("click",function(){e.getPublicInstance().zoomOut()},!1),t.addEventListener("touchstart",function(){e.getPublicInstance().zoomOut()},!1);var n=document.createElementNS(r.svgNS,"rect");n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width","1500"),n.setAttribute("height","1400"),n.setAttribute("class","svg-pan-zoom-control-background"),t.appendChild(n);var i=document.createElementNS(r.svgNS,"path");return i.setAttribute("d","M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z"),i.setAttribute("class","svg-pan-zoom-control-element"),t.appendChild(i),t},disable:function(e){e.controlIcons&&(e.controlIcons.parentNode.removeChild(e.controlIcons),e.controlIcons=null)}}},{"./svg-utilities":5}],3:[function(e,t,n){var r=e("./svg-utilities"),i=e("./utilities"),s=function(e,t){this.init(e,t)};s.prototype.init=function(e,t){this.viewport=e,this.options=t,this.originalState={zoom:1,x:0,y:0},this.activeState={zoom:1,x:0,y:0},this.updateCTMCached=i.proxy(this.updateCTM,this),this.requestAnimationFrame=i.createRequestAnimationFrame(this.options.refreshRate),this.viewBox={x:0,y:0,width:0,height:0},this.cacheViewBox(),this.processCTM(),this.updateCTM()},s.prototype.cacheViewBox=function(){var e=this.options.svg.getAttribute("viewBox");if(e){var t=e.split(/[\s\,]/).filter(function(e){return e}).map(parseFloat);this.viewBox.x=t[0],this.viewBox.y=t[1],this.viewBox.width=t[2],this.viewBox.height=t[3];var n=Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height);this.activeState.zoom=n,this.activeState.x=(this.options.width-this.viewBox.width*n)/2,this.activeState.y=(this.options.height-this.viewBox.height*n)/2,this.updateCTMOnNextFrame(),this.options.svg.removeAttribute("viewBox")}else{var r=this.viewport.getBBox();this.viewBox.x=r.x,this.viewBox.y=r.y,this.viewBox.width=r.width,this.viewBox.height=r.height}},s.prototype.recacheViewBox=function(){var e=this.viewport.getBoundingClientRect(),t=e.width/this.getZoom(),n=e.height/this.getZoom();this.viewBox.x=0,this.viewBox.y=0,this.viewBox.width=t,this.viewBox.height=n},s.prototype.getViewBox=function(){return i.extend({},this.viewBox)},s.prototype.processCTM=function(){var e=this.getCTM();if(this.options.fit||this.options.contain){var t;t=this.options.fit?Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height):Math.max(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height),e.a=t,e.d=t,e.e=-this.viewBox.x*t,e.f=-this.viewBox.y*t}if(this.options.center){var n=.5*(this.options.width-(this.viewBox.width+2*this.viewBox.x)*e.a),r=.5*(this.options.height-(this.viewBox.height+2*this.viewBox.y)*e.a);e.e=n,e.f=r}this.originalState.zoom=e.a,this.originalState.x=e.e,this.originalState.y=e.f,this.setCTM(e)},s.prototype.getOriginalState=function(){return i.extend({},this.originalState)},s.prototype.getState=function(){return i.extend({},this.activeState)},s.prototype.getZoom=function(){return this.activeState.zoom},s.prototype.getRelativeZoom=function(){return this.activeState.zoom/this.originalState.zoom},s.prototype.computeRelativeZoom=function(e){return e/this.originalState.zoom},s.prototype.getPan=function(){return{x:this.activeState.x,y:this.activeState.y}},s.prototype.getCTM=function(){var e=this.options.svg.createSVGMatrix();return e.a=this.activeState.zoom,e.b=0,e.c=0,e.d=this.activeState.zoom,e.e=this.activeState.x,e.f=this.activeState.y,e},s.prototype.setCTM=function(e){var t=this.isZoomDifferent(e),n=this.isPanDifferent(e);if(t||n){if(t&&this.options.beforeZoom(this.getRelativeZoom(),this.computeRelativeZoom(e.a))===!1&&(e.a=e.d=this.activeState.zoom,t=!1),n){var r=this.options.beforePan(this.getPan(),{x:e.e,y:e.f}),s=!1,o=!1;r===!1?(e.e=this.getPan().x,e.f=this.getPan().y,s=o=!0):i.isObject(r)&&(r.x===!1?(e.e=this.getPan().x,s=!0):i.isNumber(r.x)&&(e.e=r.x),r.y===!1?(e.f=this.getPan().y,o=!0):i.isNumber(r.y)&&(e.f=r.y)),s&&o&&(n=!1)}(t||n)&&(this.updateCache(e),this.updateCTMOnNextFrame(),t&&this.options.onZoom(this.getRelativeZoom()),n&&this.options.onPan(this.getPan()))}},s.prototype.isZoomDifferent=function(e){return this.activeState.zoom!==e.a},s.prototype.isPanDifferent=function(e){return this.activeState.x!==e.e||this.activeState.y!==e.f},s.prototype.updateCache=function(e){this.activeState.zoom=e.a,this.activeState.x=e.e,this.activeState.y=e.f},s.prototype.pendingUpdate=!1,s.prototype.updateCTMOnNextFrame=function(){this.pendingUpdate||(this.pendingUpdate=!0,this.requestAnimationFrame.call(window,this.updateCTMCached))},s.prototype.updateCTM=function(){r.setCTM(this.viewport,this.getCTM(),this.defs),this.pendingUpdate=!1},t.exports=function(e,t){return new s(e,t)}},{"./svg-utilities":5,"./utilities":7}],4:[function(e,t,n){var r=e("./uniwheel"),i=e("./control-icons"),s=e("./utilities"),o=e("./svg-utilities"),u=e("./shadow-viewport"),a=function(e,t){this.init(e,t)},f={viewportSelector:".svg-pan-zoom_viewport",panEnabled:!0,controlIconsEnabled:!1,zoomEnabled:!0,dblClickZoomEnabled:!0,mouseWheelZoomEnabled:!0,preventMouseEventsDefault:!0,zoomScaleSensitivity:.1,minZoom:.5,maxZoom:10,fit:!0,contain:!1,center:!0,refreshRate:"auto",beforeZoom:null,onZoom:null,beforePan:null,onPan:null,customEventsHandler:null,eventsListenerElement:null};a.prototype.init=function(e,t){var n=this;this.svg=e,this.defs=e.querySelector("defs"),o.setupSvgAttributes(this.svg),this.options=s.extend(s.extend({},f),t),this.state="none";var r=o.getBoundingClientRectNormalized(e);this.width=r.width,this.height=r.height,this.viewport=u(o.getOrCreateViewport(this.svg,this.options.viewportSelector),{svg:this.svg,width:this.width,height:this.height,fit:this.options.fit,contain:this.options.contain,center:this.options.center,refreshRate:this.options.refreshRate,beforeZoom:function(e,t){return n.viewport&&n.options.beforeZoom?n.options.beforeZoom(e,t):void 0},onZoom:function(e){return n.viewport&&n.options.onZoom?n.options.onZoom(e):void 0},beforePan:function(e,t){return n.viewport&&n.options.beforePan?n.options.beforePan(e,t):void 0},onPan:function(e){return n.viewport&&n.options.onPan?n.options.onPan(e):void 0}});var a=this.getPublicInstance();a.setBeforeZoom(this.options.beforeZoom),a.setOnZoom(this.options.onZoom),a.setBeforePan(this.options.beforePan),a.setOnPan(this.options.onPan),this.options.controlIconsEnabled&&i.enable(this),this.lastMouseWheelEventTime=Date.now(),this.setupHandlers()},a.prototype.setupHandlers=function(){var e=this,t=null;if(this.eventListeners={mousedown:function(t){return e.handleMouseDown(t,null)},touchstart:function(n){var r=e.handleMouseDown(n,t);return t=n,r},mouseup:function(t){return e.handleMouseUp(t)},touchend:function(t){return e.handleMouseUp(t)},mousemove:function(t){return e.handleMouseMove(t)},touchmove:function(t){return e.handleMouseMove(t)},mouseleave:function(t){return e.handleMouseUp(t)},touchleave:function(t){return e.handleMouseUp(t)},touchcancel:function(t){return e.handleMouseUp(t)}},null!=this.options.customEventsHandler){this.options.customEventsHandler.init({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});var n=this.options.customEventsHandler.haltEventListeners;if(n&&n.length)for(var r=n.length-1;r>=0;r--)this.eventListeners.hasOwnProperty(n[r])&&delete this.eventListeners[n[r]]}for(var i in this.eventListeners)(this.options.eventsListenerElement||this.svg).addEventListener(i,this.eventListeners[i],!1);this.options.mouseWheelZoomEnabled&&(this.options.mouseWheelZoomEnabled=!1,this.enableMouseWheelZoom())},a.prototype.enableMouseWheelZoom=function(){if(!this.options.mouseWheelZoomEnabled){var e=this;this.wheelListener=function(t){return e.handleMouseWheel(t)},r.on(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!0}},a.prototype.disableMouseWheelZoom=function(){this.options.mouseWheelZoomEnabled&&(r.off(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!1)},a.prototype.handleMouseWheel=function(e){if(this.options.zoomEnabled&&"none"===this.state){this.options.preventMouseEventsDefault&&(e.preventDefault?e.preventDefault():e.returnValue=!1);var t=e.deltaY||1,n=Date.now()-this.lastMouseWheelEventTime,r=3+Math.max(0,30-n);this.lastMouseWheelEventTime=Date.now(),"deltaMode"in e&&0===e.deltaMode&&e.wheelDelta&&(t=0===e.deltaY?0:Math.abs(e.wheelDelta)/e.deltaY),t=t>-0.3&&.3>t?t:(t>0?1:-1)*Math.log(Math.abs(t)+10)/r;var i=this.svg.getScreenCTM().inverse(),s=o.getEventPoint(e,this.svg).matrixTransform(i),u=Math.pow(1+this.options.zoomScaleSensitivity,-1*t);this.zoomAtPoint(u,s)}},a.prototype.zoomAtPoint=function(e,t,n){var r=this.viewport.getOriginalState();n?(e=Math.max(this.options.minZoom*r.zoom,Math.min(this.options.maxZoom*r.zoom,e)),e/=this.getZoom()):this.getZoom()*e<this.options.minZoom*r.zoom?e=this.options.minZoom*r.zoom/this.getZoom():this.getZoom()*e>this.options.maxZoom*r.zoom&&(e=this.options.maxZoom*r.zoom/this.getZoom());var i=this.viewport.getCTM(),s=t.matrixTransform(i.inverse()),o=this.svg.createSVGMatrix().translate(s.x,s.y).scale(e).translate(-s.x,-s.y),u=i.multiply(o);u.a!==i.a&&this.viewport.setCTM(u)},a.prototype.zoom=function(e,t){this.zoomAtPoint(e,o.getSvgCenterPoint(this.svg,this.width,this.height),t)},a.prototype.publicZoom=function(e,t){t&&(e=this.computeFromRelativeZoom(e)),this.zoom(e,t)},a.prototype.publicZoomAtPoint=function(e,t,n){if(n&&(e=this.computeFromRelativeZoom(e)),"SVGPoint"!==s.getType(t)){if(!("x"in t&&"y"in t))throw new Error("Given point is invalid");t=o.createSVGPoint(this.svg,t.x,t.y)}this.zoomAtPoint(e,t,n)},a.prototype.getZoom=function(){return this.viewport.getZoom()},a.prototype.getRelativeZoom=function(){return this.viewport.getRelativeZoom()},a.prototype.computeFromRelativeZoom=function(e){return e*this.viewport.getOriginalState().zoom},a.prototype.resetZoom=function(){var e=this.viewport.getOriginalState();this.zoom(e.zoom,!0)},a.prototype.resetPan=function(){this.pan(this.viewport.getOriginalState())},a.prototype.reset=function(){this.resetZoom(),this.resetPan()},a.prototype.handleDblClick=function(e){if(this.options.preventMouseEventsDefault&&(e.preventDefault?e.preventDefault():e.returnValue=!1),this.options.controlIconsEnabled){var t=e.target.getAttribute("class")||"";if(t.indexOf("svg-pan-zoom-control")>-1)return!1}var n;n=e.shiftKey?1/(2*(1+this.options.zoomScaleSensitivity)):2*(1+this.options.zoomScaleSensitivity);var r=o.getEventPoint(e,this.svg).matrixTransform(this.svg.getScreenCTM().inverse());this.zoomAtPoint(n,r)},a.prototype.handleMouseDown=function(e,t){this.options.preventMouseEventsDefault&&(e.preventDefault?e.preventDefault():e.returnValue=!1),s.mouseAndTouchNormalize(e,this.svg),this.options.dblClickZoomEnabled&&s.isDblClick(e,t)?this.handleDblClick(e):(this.state="pan",this.firstEventCTM=this.viewport.getCTM(),this.stateOrigin=o.getEventPoint(e,this.svg).matrixTransform(this.firstEventCTM.inverse()))},a.prototype.handleMouseMove=function(e){if(this.options.preventMouseEventsDefault&&(e.preventDefault?e.preventDefault():e.returnValue=!1),"pan"===this.state&&this.options.panEnabled){var t=o.getEventPoint(e,this.svg).matrixTransform(this.firstEventCTM.inverse()),n=this.firstEventCTM.translate(t.x-this.stateOrigin.x,t.y-this.stateOrigin.y);this.viewport.setCTM(n)}},a.prototype.handleMouseUp=function(e){this.options.preventMouseEventsDefault&&(e.preventDefault?e.preventDefault():e.returnValue=!1),"pan"===this.state&&(this.state="none")},a.prototype.fit=function(){var e=this.viewport.getViewBox(),t=Math.min(this.width/e.width,this.height/e.height);this.zoom(t,!0)},a.prototype.contain=function(){var e=this.viewport.getViewBox(),t=Math.max(this.width/e.width,this.height/e.height);this.zoom(t,!0)},a.prototype.center=function(){var e=this.viewport.getViewBox(),t=.5*(this.width-(e.width+2*e.x)*this.getZoom()),n=.5*(this.height-(e.height+2*e.y)*this.getZoom());this.getPublicInstance().pan({x:t,y:n})},a.prototype.updateBBox=function(){this.viewport.recacheViewBox()},a.prototype.pan=function(e){var t=this.viewport.getCTM();t.e=e.x,t.f=e.y,this.viewport.setCTM(t)},a.prototype.panBy=function(e){var t=this.viewport.getCTM();t.e+=e.x,t.f+=e.y,this.viewport.setCTM(t)},a.prototype.getPan=function(){var e=this.viewport.getState();return{x:e.x,y:e.y}},a.prototype.resize=function(){var e=o.getBoundingClientRectNormalized(this.svg);this.width=e.width,this.height=e.height,this.options.controlIconsEnabled&&(this.getPublicInstance().disableControlIcons(),this.getPublicInstance().enableControlIcons())},a.prototype.destroy=function(){var e=this;this.beforeZoom=null,this.onZoom=null,this.beforePan=null,this.onPan=null,null!=this.options.customEventsHandler&&this.options.customEventsHandler.destroy({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});for(var t in this.eventListeners)(this.options.eventsListenerElement||this.svg).removeEventListener(t,this.eventListeners[t],!1);this.disableMouseWheelZoom(),this.getPublicInstance().disableControlIcons(),this.reset(),l=l.filter(function(t){return t.svg!==e.svg}),delete this.options,delete this.publicInstance,delete this.pi,this.getPublicInstance=function(){return null}},a.prototype.getPublicInstance=function(){var e=this;return this.publicInstance||(this.publicInstance=this.pi={enablePan:function(){return e.options.panEnabled=!0,e.pi},disablePan:function(){return e.options.panEnabled=!1,e.pi},isPanEnabled:function(){return!!e.options.panEnabled},pan:function(t){return e.pan(t),e.pi},panBy:function(t){return e.panBy(t),e.pi},getPan:function(){return e.getPan()},setBeforePan:function(t){return e.options.beforePan=null===t?null:s.proxy(t,e.publicInstance),e.pi},setOnPan:function(t){return e.options.onPan=null===t?null:s.proxy(t,e.publicInstance),e.pi},enableZoom:function(){return e.options.zoomEnabled=!0,e.pi},disableZoom:function(){return e.options.zoomEnabled=!1,e.pi},isZoomEnabled:function(){return!!e.options.zoomEnabled},enableControlIcons:function(){return e.options.controlIconsEnabled||(e.options.controlIconsEnabled=!0,i.enable(e)),e.pi},disableControlIcons:function(){return e.options.controlIconsEnabled&&(e.options.controlIconsEnabled=!1,i.disable(e)),e.pi},isControlIconsEnabled:function(){return!!e.options.controlIconsEnabled},enableDblClickZoom:function(){return e.options.dblClickZoomEnabled=!0,e.pi},disableDblClickZoom:function(){return e.options.dblClickZoomEnabled=!1,e.pi},isDblClickZoomEnabled:function(){return!!e.options.dblClickZoomEnabled},enableMouseWheelZoom:function(){return e.enableMouseWheelZoom(),e.pi},disableMouseWheelZoom:function(){return e.disableMouseWheelZoom(),e.pi},isMouseWheelZoomEnabled:function(){return!!e.options.mouseWheelZoomEnabled},setZoomScaleSensitivity:function(t){return e.options.zoomScaleSensitivity=t,e.pi},setMinZoom:function(t){return e.options.minZoom=t,e.pi},setMaxZoom:function(t){return e.options.maxZoom=t,e.pi},setBeforeZoom:function(t){return e.options.beforeZoom=null===t?null:s.proxy(t,e.publicInstance),e.pi},setOnZoom:function(t){return e.options.onZoom=null===t?null:s.proxy(t,e.publicInstance),e.pi},zoom:function(t){return e.publicZoom(t,!0),e.pi},zoomBy:function(t){return e.publicZoom(t,!1),e.pi},zoomAtPoint:function(t,n){return e.publicZoomAtPoint(t,n,!0),e.pi},zoomAtPointBy:function(t,n){return e.publicZoomAtPoint(t,n,!1),e.pi},zoomIn:function(){return this.zoomBy(1+e.options.zoomScaleSensitivity),e.pi},zoomOut:function(){return this.zoomBy(1/(1+e.options.zoomScaleSensitivity)),e.pi},getZoom:function(){return e.getRelativeZoom()},resetZoom:function(){return e.resetZoom(),e.pi},resetPan:function(){return e.resetPan(),e.pi},reset:function(){return e.reset(),e.pi},fit:function(){return e.fit(),e.pi},contain:function(){return e.contain(),e.pi},center:function(){return e.center(),e.pi},updateBBox:function(){return e.updateBBox(),e.pi},resize:function(){return e.resize(),e.pi},getSizes:function(){return{width:e.width,height:e.height,realZoom:e.getZoom(),viewBox:e.viewport.getViewBox()}},destroy:function(){return e.destroy(),e.pi}}),this.publicInstance};var l=[],c=function(e,t){var n=s.getSvg(e);if(null===n)return null;for(var r=l.length-1;r>=0;r--)if(l[r].svg===n)return l[r].instance.getPublicInstance();return l.push({svg:n,instance:new a(n,t)}),l[l.length-1].instance.getPublicInstance()};t.exports=c},{"./control-icons":2,"./shadow-viewport":3,"./svg-utilities":5,"./uniwheel":6,"./utilities":7}],5:[function(e,t,n){var r=e("./utilities"),i="unknown";document.documentMode&&(i="ie"),t.exports={svgNS:"http://www.w3.org/2000/svg",xmlNS:"http://www.w3.org/XML/1998/namespace",xmlnsNS:"http://www.w3.org/2000/xmlns/",xlinkNS:"http://www.w3.org/1999/xlink",evNS:"http://www.w3.org/2001/xml-events",getBoundingClientRectNormalized:function(e){if(e.clientWidth&&e.clientHeight)return{width:e.clientWidth,height:e.clientHeight};if(e.getBoundingClientRect())return e.getBoundingClientRect();throw new Error("Cannot get BoundingClientRect for SVG.")},getOrCreateViewport:function(e,t){var n=null;if(n=r.isElement(t)?t:e.querySelector(t),!n){var i=Array.prototype.slice.call(e.childNodes||e.children).filter(function(e){return"defs"!==e.nodeName&&"#text"!==e.nodeName});1===i.length&&"g"===i[0].nodeName&&null===i[0].getAttribute("transform")&&(n=i[0])}if(!n){var s="viewport-"+(new Date).toISOString().replace(/\D/g,"");n=document.createElementNS(this.svgNS,"g"),n.setAttribute("id",s);var u=e.childNodes||e.children;if(u&&u.length>0)for(var a=u.length;a>0;a--)"defs"!==u[u.length-a].nodeName&&n.appendChild(u[u.length-a]);e.appendChild(n)}var f=[];return n.getAttribute("class")&&(f=n.getAttribute("class").split(" ")),~f.indexOf("svg-pan-zoom_viewport")||(f.push("svg-pan-zoom_viewport"),n.setAttribute("class",f.join(" "))),n},setupSvgAttributes:function(e){if(e.setAttribute("xmlns",this.svgNS),e.setAttributeNS(this.xmlnsNS,"xmlns:xlink",this.xlinkNS),e.setAttributeNS(this.xmlnsNS,"xmlns:ev",this.evNS),null!==e.parentNode){var t=e.getAttribute("style")||"";-1===t.toLowerCase().indexOf("overflow")&&e.setAttribute("style","overflow: hidden; "+t)}},internetExplorerRedisplayInterval:300,refreshDefsGlobal:r.throttle(function(){for(var e=document.querySelectorAll("defs"),t=e.length,n=0;t>n;n++){var r=e[n];r.parentNode.insertBefore(r,r)}},this.internetExplorerRedisplayInterval),setCTM:function(e,t,n){var r=this,s="matrix("+t.a+","+t.b+","+t.c+","+t.d+","+t.e+","+t.f+")";e.setAttributeNS(null,"transform",s),"transform"in e.style?e.style.transform=s:"-ms-transform"in e.style?e.style["-ms-transform"]=s:"-webkit-transform"in e.style&&(e.style["-webkit-transform"]=s),"ie"===i&&n&&(n.parentNode.insertBefore(n,n),window.setTimeout(function(){r.refreshDefsGlobal()},r.internetExplorerRedisplayInterval))},getEventPoint:function(e,t){var n=t.createSVGPoint();return r.mouseAndTouchNormalize(e,t),n.x=e.clientX,n.y=e.clientY,n},getSvgCenterPoint:function(e,t,n){return this.createSVGPoint(e,t/2,n/2)},createSVGPoint:function(e,t,n){var r=e.createSVGPoint();return r.x=t,r.y=n,r}}},{"./utilities":7}],6:[function(e,t,n){t.exports=function(){function e(e,t,n){var r=function(e){!e&&(e=window.event);var n={originalEvent:e,target:e.target||e.srcElement,type:"wheel",deltaMode:"MozMousePixelScroll"==e.type?0:1,deltaX:0,delatZ:0,preventDefault:function(){e.preventDefault?e.preventDefault():e.returnValue=!1}};return"mousewheel"==f?(n.deltaY=-1/40*e.wheelDelta,e.wheelDeltaX&&(n.deltaX=-1/40*e.wheelDeltaX)):n.deltaY=e.detail,t(n)};return c.push({element:e,fn:r,capture:n}),r}function t(e,t){for(var n=0;n<c.length;n++)if(c[n].element===e&&c[n].capture===t)return c[n].fn;return function(){}}function n(e,t){for(var n=0;n<c.length;n++)if(c[n].element===e&&c[n].capture===t)return c.splice(n,1)}function r(t,n,r,i){var s;s="wheel"===f?r:e(t,r,i),t[u](l+n,s,i||!1)}function i(e,r,i,s){"wheel"===f?cb=i:cb=t(e,s),e[a](l+r,cb,s||!1),n(e,s)}function s(e,t,n){r(e,f,t,n),"DOMMouseScroll"==f&&r(e,"MozMousePixelScroll",t,n)}function o(e,t,n){i(e,f,t,n),"DOMMouseScroll"==f&&i(e,"MozMousePixelScroll",t,n)}var u,a,f,l="",c=[];return window.addEventListener?(u="addEventListener",a="removeEventListener"):(u="attachEvent",a="detachEvent",l="on"),f="onwheel"in document.createElement("div")?"wheel":void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll",{on:s,off:o}}()},{}],7:[function(e,t,n){function r(e){return function(t){window.setTimeout(t,e)}}t.exports={extend:function(e,t){e=e||{};for(var n in t)this.isObject(t[n])?e[n]=this.extend(e[n],t[n]):e[n]=t[n];return e},isElement:function(e){return e instanceof HTMLElement||e instanceof SVGElement||e instanceof SVGSVGElement||e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName},isObject:function(e){return"[object Object]"===Object.prototype.toString.call(e)},isNumber:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},getSvg:function(e){var t,n;if(this.isElement(e))t=e;else{if(!("string"==typeof e||e instanceof String))throw new Error("Provided selector is not an HTML object nor String");if(t=document.querySelector(e),!t)throw new Error("Provided selector did not find any elements. Selector: "+e)}if("svg"===t.tagName.toLowerCase())n=t;else if("object"===t.tagName.toLowerCase())n=t.contentDocument.documentElement;else{if("embed"!==t.tagName.toLowerCase())throw"img"===t.tagName.toLowerCase()?new Error('Cannot script an SVG in an "img" element. Please use an "object" element or an in-line SVG.'):new Error("Cannot get SVG.");n=t.getSVGDocument().documentElement}return n},proxy:function(e,t){return function(){return e.apply(t,arguments)}},getType:function(e){return Object.prototype.toString.apply(e).replace(/^\[object\s/,"").replace(/\]$/,"")},mouseAndTouchNormalize:function(e,t){if(void 0===e.clientX||null===e.clientX)if(e.clientX=0,e.clientY=0,void 0!==e.changedTouches&&e.changedTouches.length){if(void 0!==e.changedTouches[0].clientX)e.clientX=e.changedTouches[0].clientX,e.clientY=e.changedTouches[0].clientY;else if(void 0!==e.changedTouches[0].pageX){var n=t.getBoundingClientRect();e.clientX=e.changedTouches[0].pageX-n.left,e.clientY=e.changedTouches[0].pageY-n.top}}else void 0!==e.originalEvent&&void 0!==e.originalEvent.clientX&&(e.clientX=e.originalEvent.clientX,e.clientY=e.originalEvent.clientY)},isDblClick:function(e,t){if(2===e.detail)return!0;if(void 0!==t&&null!==t){var n=e.timeStamp-t.timeStamp,r=Math.sqrt(Math.pow(e.clientX-t.clientX,2)+Math.pow(e.clientY-t.clientY,2));return 250>n&&10>r}return!1},now:Date.now||function(){return(new Date).getTime()},throttle:function(e,t,n){var r,i,s,o=this,u=null,a=0;n||(n={});var f=function(){a=n.leading===!1?0:o.now(),u=null,s=e.apply(r,i),u||(r=i=null)};return function(){var c=o.now();a||n.leading!==!1||(a=c);var h=t-(c-a);return r=this,i=arguments,0>=h||h>t?(clearTimeout(u),u=null,a=c,s=e.apply(r,i),u||(r=i=null)):u||n.trailing===!1||(u=setTimeout(f,h)),s}},createRequestAnimationFrame:function(e){var t=null;return"auto"!==e&&60>e&&e>1&&(t=Math.floor(1e3/e)),null===t?window.requestAnimationFrame||r(33):r(t)}}},{}]},{},[1]),define("jswish",["jquery","config","preferences","history","modal","jquery-ui","splitter","bootstrap","pane","tabbed","notebook","navbar","search","editor","query","runner","term","laconic","d3","c3","svg-pan-zoom"],function(e,t,n,r,i){n.setDefault("semantic-highlighting",!1),n.setDefault("emacs-keybinding",!1),function(e){function u(t,n){e(".swish-event-receiver").trigger(t,n)}function a(){e(".swish-logo").append(e.el.b(e.el.span({style:"color:darkblue"},"TRILL "),e.el.span({style:"color:maroon"},"on "),e.el.span({style:"color:darkblue"},"SWI"),e.el.span({style:"color:maroon"},"SH"))).css("margin-left","30px").css("font-size","24px").addClass("navbar-brand")}function f(){e("#modal").length==0&&(e("body").append(e.el.div({id:"modal"})),e("#modal").swishModal())}function l(){e(".tile").tile(),e(window).resize(function(){e(".tile").tile("resize")}),e("body").on("click","button.close-pane",function(){closePane(e(this).parent())}),e(".tabbed").tabbed()}function c(){e(window).resize(function(){e(".reactive-size").trigger("reactive-resize")})}var n="swish",s={menu:{File:{"Save ...":function(){u("save","as")},"Info & history ...":function(){u("fileInfo")},"Open recent":{type:"submenu",action:function(t){r.openRecent(t,e(this).data("document"))},update:r.updateRecentUL},Share:"--",Download:function(){u("download")},"Collaborate ...":function(){e("body").swish("collaborate")},"Print group":"--","Print ...":function(){u("print")}},Edit:{"Clear messages":function(){u("clearMessages")},Changes:"--","View changes":function(){u("diff")},Options:"--","Emacs Keybinding":{preference:"emacs-keybinding",type:"checkbox",value:"false"}},Examples:function(t,n){e("body").swish("populateExamples",t,n)},Help:{"About ...":function(){u("help",{file:"about.html"})},Topics:"--","Help ...":function(){u("help",{file:"help.html"})},"Runner ...":function(){u("help",{file:"runner.html"})},"Notebook ...":function(){u("help",{file:"notebook.html"})},Background:"--","Limitations ...":function(){u("help",{file:"beware.html"})},"Caveats ...":function(){u("help",{file:"caveats.html"})},"Background ...":function(){u("help",{file:"background.html"})}}}},o={_init:function(t){return a(),f(),l(),c(),e("#search").search(),t=t||{},this.addClass("swish"),this.each(function(){var r=e(this),i={};e("#navbar").navbar(s.menu);var o=e(".prolog-editor").prologEditor({save:!0});i.runner=e(".prolog-runners").prologRunners(),i.query=e(".prolog-query").queryEditor({source:function(){return r.swish("prologSource")},sourceID:function(){return o.prologEditor("getSourceID")},examples:r.swish("examples"),runner:i.runner,editor:o[0]}),e(".notebook").notebook(),t.show_beware&&u("help",{file:"beware.html",notagain:"beware"}),r.data(n,i)})},trigger:function(e,t){return u(e,t),this},playFile:function(n){var r=this;typeof n=="string"&&(n={file:n});var s=this.find(".storage").storage("match",n);if(s&&s.storage("expose","Already open"))return this;var o=t.http.locations.web_storage+n.file;return e.ajax({url:o,type:"GET",data:{format:"json"},success:function(e){function t(t){for(var r=0;r<t.length;r++){var i=t[r];n[i]&&(e[i]=n[i])}}e.url=o,e.st_type="gitty",t(["line","regex","showAllMatches","newTab","noHistory","prompt"]),r.swish("setSource",e)},error:function(e){i.ajaxError(e)}}),this},playURL:function(t){var n=this,r=this.find(".storage").storage("match",t);if(r&&r.storage("expose","Already open"))return this;e.ajax({url:t.url,type:"GET",data:{format:"json"},success:function(e){function i(e){for(var n=0;n<e.length;n++){var i=e[n];t[i]&&(r[i]=t[i])}}var r;if(typeof e=="string")r={data:e},r.st_type="external";else{if(typeof e!="object"||typeof e.data!="string"){alert("Invalid data");return}r=e,r.st_type="filesys"}r.url=t.url,i(["line","regex","showAllMatches","newTab","noHistory","prompt"]),n.swish("setSource",r)},error:function(e){i.ajaxError(e)}})},setSource:function(e){u("source",e),this.find(".storage").storage("match",e)||this.swish("exitFullscreen")&&u("source",e)},openExampleFunction:function(e){var t=this;return e.type=="divider"?"--":e.type=="store"?function(){o.playFile.call(t,e.file)}:function(){o.playURL.call(t,{url:e.href})}},populateExamples:function(n,r){var i=this;return i.off("examples-changed").on("examples-changed",function(){e("#navbar").navbar("clearDropdown",r),i.swish("populateExamples",n,r)}),e.ajax(t.http.locations.swish_examples,{dataType:"json",success:function(t){for(var n=0;n<t.length;n++){var s=t[n],o,u;if(s=="--"||s.type=="divider")o="--",u="--";else{var a=s.file||s.href;o=s.title,u=i.swish("openExampleFunction",s),a&&(u.typeIcon=a.split(".").pop())}e("#navbar").navbar("extendDropdown",r,o,u)}}}),this},prologSource:function(){var t=[],n;return(n=e(".prolog-editor").prologEditor("getSource","source"))&&t.push(n),(n=e(".background.prolog.source").text())&&t.push(n),t.join("\n\n")},breakpoints:function(e){return this.find(".prolog-editor").prologEditor("getBreakpoints",e)||[]},tabData:function(e){return e=e||{},e.active?this.find(".tab-pane.active .storage").storage("getData",e):this.find(".storage").storage("getData",e)},examples:function(t){var n=e(".examples.prolog").text();if(n)return e().prologEditor("getExamples",n,!1);if(t!=1)return function(){return e(".prolog-editor").prologEditor("getExamples")}},fullscreen:function(t){if(!t.hasClass("fullscreen")){var n=this.find(".container.swish");t.addClass("fullscreen hamburger"),t.data("fullscreen_origin",t.parent()[0]),e(n.children()[0]).hide(),n.append(t)}return this},exitFullscreen:function(){var t=this.find(".container.swish"),n=e(t.children()[1]);return n&&n.hasClass("fullscreen")?(n.removeClass("fullscreen hamburger"),e(n.data("fullscreen_origin")).append(n),e.removeData(n,"fullscreen_origin"),e(t.children()[0]).show(),!0):!1},collaborate:function(){var t=this;return e(this).attr("data-end-togetherjs-html","End collaboration"),require(["https://togetherjs.com/togetherjs-min.js"],function(){TogetherJS(t)}),this}};e.fn.swish=function(t){if(o[t])return o[t].apply(this,Array.prototype.slice.call(arguments,1));if(typeof t=="object"||!t)return o._init.apply(this,arguments);e.error("Method "+t+" does not exist on jQuery."+n)}}(jQuery)}),require.config({urlArgs:"ts="+(new Date).getTime(),waitSeconds:60,paths:{jquery:"../bower_components/jquery/dist/jquery.min","jquery-ui":"../bower_components/jquery-ui/jquery-ui.min",laconic:"../bower_components/laconic/laconic",bootstrap:"../bower_components/bootstrap/dist/js/bootstrap.min",typeahead:"../bower_components/typeahead.js/dist/typeahead.bundle.min",splitter:"../bower_components/jquery.splitter/js/jquery.splitter-0.15.0",tagmanager:"../bower_components/tagmanager/tagmanager",sha1:"../bower_components/js-sha1/src/sha1",c3:"../bower_components/c3/c3",d3:"../bower_components/d3/d3","svg-pan-zoom":"../bower_components/svg-pan-zoom/dist/svg-pan-zoom.min",sparkline:"../bower_components/sparkline/dist/jquery.sparkline","cm/mode/prolog":"codemirror/mode/prolog","cm/addon/hover/prolog-hover":"codemirror/addon/hover/prolog-hover","cm/addon/hover/text-hover":"codemirror/addon/hover/text-hover","cm/addon/hint/templates-hint":"codemirror/addon/hint/templates-hint","cm/addon/hint/show-context-info":"codemirror/addon/hint/show-context-info",cm:"../bower_components/codemirror"},shim:{bootstrap:{deps:["jquery"]},typeahead:{deps:["jquery"]},splitter:{deps:["jquery"]},laconic:{deps:["jquery"]},tagmanager:{deps:["jquery"]}}}),require(["jquery","config","jswish"],function(e,t,n){require([t.http.locations.pengines+"/pengines.js"],function(){e(function(){e("body").swish(t.swish||{})})})}),define("swish",function(){}); \ No newline at end of file diff --git a/web/js/swish-min.js.gz b/web/js/swish-min.js.gz new file mode 100644 index 0000000..1f4317b Binary files /dev/null and b/web/js/swish-min.js.gz differ